<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>134945</bug_id>
          
          <creation_ts>2014-07-15 15:03:50 -0700</creation_ts>
          <short_desc>Need ability to fuzz exception throwing</short_desc>
          <delta_ts>2015-07-10 03:35:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>134988</dependson>
    
    <dependson>146831</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>rhodovan.u-szeged</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1022574</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-15 15:03:50 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022575</commentid>
    <comment_count>1</comment_count>
      <attachid>234957</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-15 15:05:17 -0700</bug_when>
    <thetext>Created attachment 234957
almost done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022617</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-15 18:32:35 -0700</bug_when>
    <thetext>This causes a rare crash in v8-earley-boyer.  I will try to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022619</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-15 18:38:04 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; This causes a rare crash in v8-earley-boyer.  I will try to fix it.

Here&apos;s the repro:

[pizlo@dethklok OpenSource] DYLD_FRAMEWORK_PATH=WebKitBuild/Release/ lldb -- WebKitBuild/Release/jsc Source/JavaScriptCore/tests/exceptionFuzz/earley-boyer.js --enableConcurrentJIT=false --enableExceptionFuzz=true  --fireExceptionFuzzAt=13582
Current executable set to &apos;WebKitBuild/Release/jsc&apos; (x86_64).
(lldb) r
Process 47764 launched: &apos;/Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc&apos; (x86_64)
JSC EXCEPTION FUZZ: Throwing fuzz exception.
Process 47764 stopped
* thread #1: tid = 0x3d48178, 0x000000010022b8bd JavaScriptCore`JSC::UnwindFunctor::operator()(JSC::StackVisitor&amp;) [inlined] JSC::WriteBarrierBase&lt;JSC::SymbolTable&gt;::get() const at WriteBarrier.h:92, queue = &apos;com.apple.main-thread, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    frame #0: 0x000000010022b8bd JavaScriptCore`JSC::UnwindFunctor::operator()(JSC::StackVisitor&amp;) [inlined] JSC::WriteBarrierBase&lt;JSC::SymbolTable&gt;::get() const at WriteBarrier.h:92
   89  	    T* get() const
   90  	    {
   91  	        // Copy m_cell to a local to avoid multiple-read issues. (See &lt;http://webkit.org/b/110854&gt;)
-&gt; 92  	        JSCell* cell = m_cell;
   93  	        if (cell)
   94  	            validateCell(cell);
   95  	        return reinterpret_cast&lt;T*&gt;(static_cast&lt;void*&gt;(cell));
(lldb) bt
[0x0000000000000000 - 0x0000000000000198)
[0x0000000000000198 - 0x0000000000000336)
[0x0000000000000336 - 0x000000000000035c)
[0x000000000000035c - 0x000000000000632b)
* thread #1: tid = 0x3d48178, 0x000000010022b8bd JavaScriptCore`JSC::UnwindFunctor::operator()(JSC::StackVisitor&amp;) [inlined] JSC::WriteBarrierBase&lt;JSC::SymbolTable&gt;::get() const at WriteBarrier.h:92, queue = &apos;com.apple.main-thread, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    frame #0: 0x000000010022b8bd JavaScriptCore`JSC::UnwindFunctor::operator()(JSC::StackVisitor&amp;) [inlined] JSC::WriteBarrierBase&lt;JSC::SymbolTable&gt;::get() const at WriteBarrier.h:92
    frame #1: 0x000000010022b8bd JavaScriptCore`JSC::UnwindFunctor::operator()(JSC::StackVisitor&amp;) [inlined] JSC::JSSymbolTableObject::symbolTable() const at JSSymbolTableObject.h:43
    frame #2: 0x000000010022b8bd JavaScriptCore`JSC::UnwindFunctor::operator()(JSC::StackVisitor&amp;) [inlined] JSC::JSActivation::tearOff(this=0xffff000000000002) at JSActivation.h:151
    frame #3: 0x000000010022b8bd JavaScriptCore`JSC::UnwindFunctor::operator()(JSC::StackVisitor&amp;) [inlined] JSC::unwindCallFrame(JSC::StackVisitor&amp;) + 312 at Interpreter.cpp:461
    frame #4: 0x000000010022b785 JavaScriptCore`JSC::UnwindFunctor::operator(this=0x00007fff5fbfc8c8, visitor=0x00007fff5fbfc910)(JSC::StackVisitor&amp;) + 117 at Interpreter.cpp:661
    frame #5: 0x000000010022876b JavaScriptCore`JSC::Interpreter::unwind(JSC::ExecState*&amp;, JSC::JSValue&amp;) [inlined] void JSC::StackVisitor::visit&lt;JSC::UnwindFunctor&gt;(functor=0x00007fff5fbfc9a0, startFrame=&lt;unavailable&gt;) + 42 at StackVisitor.h:123
    frame #6: 0x0000000100228741 JavaScriptCore`JSC::Interpreter::unwind(JSC::ExecState*&amp;, JSC::JSValue&amp;) [inlined] void JSC::ExecState::iterate&lt;JSC::UnwindFunctor&gt;(functor=0x00007fff5fbfc9a0, this=&lt;unavailable&gt;) at CallFrame.h:308
    frame #7: 0x0000000100228741 JavaScriptCore`JSC::Interpreter::unwind(this=&lt;unavailable&gt;, callFrame=0x00007fff5fbfc9a0, exceptionValue=0x00007fff5fbfc998) + 513 at Interpreter.cpp:734
    frame #8: 0x0000000100245db8 JavaScriptCore`JSC::genericUnwind(vm=0x000000010086e000, callFrame=0x00007fff5fbfcab0, exceptionValue=JSValue at 0x00007fff5fbfc998) + 72 at JITExceptions.cpp:51
    frame #9: 0x0000538cb201172f
    frame #10: 0x0000538cb20462be
    frame #11: 0x0000538cb201da1e
    frame #12: 0x0000538cb201db3e
    frame #13: 0x0000538cb204625e
    frame #14: 0x0000538cb201a4de
    frame #15: 0x0000538cb20461fe
    frame #16: 0x0000538cb204625e
    frame #17: 0x0000538cb20187fe
    frame #18: 0x0000538cb204625e
    frame #19: 0x0000538cb201a4de
    frame #20: 0x0000538cb20461fe
    frame #21: 0x0000538cb204625e
    frame #22: 0x0000538cb201a4de
    frame #23: 0x0000538cb20461fe
    frame #24: 0x0000538cb20462be
    frame #25: 0x0000538cb201da1e
    frame #26: 0x0000538cb201da1e
    frame #27: 0x0000538cb201db3e
    frame #28: 0x0000538cb20462be
    frame #29: 0x0000538cb201da1e
    frame #30: 0x0000538cb201db3e
    frame #31: 0x0000538cb2018224
    frame #32: 0x0000538cb201a4de
    frame #33: 0x0000538cb2011353
    frame #34: 0x0000538cb2018224
    frame #35: 0x0000538cb201a4de
    frame #36: 0x0000538cb201131c
    frame #37: 0x0000538cb2018224
    frame #38: 0x0000538cb201a4de
    frame #39: 0x0000000100336f20 JavaScriptCore`llint_entry + 22744
    frame #40: 0x0000000100336f20 JavaScriptCore`llint_entry + 22744
    frame #41: 0x0000000100336eb5 JavaScriptCore`llint_entry + 22637
    frame #42: 0x0000000100336eb5 JavaScriptCore`llint_entry + 22637
    frame #43: 0x0000000100336f20 JavaScriptCore`llint_entry + 22744
    frame #44: 0x0000000100336eb5 JavaScriptCore`llint_entry + 22637
    frame #45: 0x0000000100336eb5 JavaScriptCore`llint_entry + 22637
    frame #46: 0x0000000100331423 JavaScriptCore`callToJavaScript + 311</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022626</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-15 19:13:50 -0700</bug_when>
    <thetext>Looks like this particular failure was caused by exception fuzzing incorrectly causing an exception to be thrown from operationOptimize.  In an ideal world, we would fix this by removing the exception check from operationOptimize.  But there&apos;s the possibility that this exception check was picking up a stale exception that we hadn&apos;t ever checked - this is a really dumb bug we have sometimes.  Then, we&apos;d crash instead of throwing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022632</commentid>
    <comment_count>5</comment_count>
      <attachid>234974</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-15 19:31:10 -0700</bug_when>
    <thetext>Created attachment 234974
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022638</commentid>
    <comment_count>6</comment_count>
      <attachid>234974</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-07-15 19:44:52 -0700</bug_when>
    <thetext>Comment on attachment 234974
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=234974&amp;action=review

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1812
&gt; +    ExecState* exec = static_cast&lt;ExecState*&gt;(__builtin_frame_address(1));

It&apos;s probably worth noting why you are doing these shenanigans for future sanity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022768</commentid>
    <comment_count>7</comment_count>
      <attachid>234974</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-07-16 10:52:05 -0700</bug_when>
    <thetext>Comment on attachment 234974
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=234974&amp;action=review

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:461
&gt; +        if (activation &amp;&amp; activation.isCell())
&gt;              jsCast&lt;JSActivation*&gt;(activation)-&gt;tearOff(*scope-&gt;vm());

When is the activation present but not a cell?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022823</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-16 14:14:38 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 234974 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=234974&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:461
&gt; &gt; +        if (activation &amp;&amp; activation.isCell())
&gt; &gt;              jsCast&lt;JSActivation*&gt;(activation)-&gt;tearOff(*scope-&gt;vm());
&gt; 
&gt; When is the activation present but not a cell?

If we throw an exception between op_enter and op_init_lazy_reg, then both the activation and the arguments registers will be undefined.

This can definitely happen due to my fuzzer.

It&apos;s also possible if we have a pending exception at the time that we execute a function&apos;s prologue.  It&apos;s kind of funny, but it could probably happen if we have other bugs elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023200</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-07-17 21:27:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/17722027&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023201</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-17 21:34:58 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/171213</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023208</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-07-17 22:56:40 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Landed in http://trac.webkit.org/changeset/171213

it made 3 jsc tests fail everywhere</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023215</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-18 00:00:54 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Landed in http://trac.webkit.org/changeset/171213
&gt; 
&gt; it made 3 jsc tests fail everywhere

Investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023216</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-18 00:06:56 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; Landed in http://trac.webkit.org/changeset/171213
&gt; &gt; 
&gt; &gt; it made 3 jsc tests fail everywhere
&gt; 
&gt; Investigating.

Will land a fix shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023217</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-18 00:12:05 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; &gt; Landed in http://trac.webkit.org/changeset/171213
&gt; &gt; &gt; 
&gt; &gt; &gt; it made 3 jsc tests fail everywhere
&gt; &gt; 
&gt; &gt; Investigating.
&gt; 
&gt; Will land a fix shortly.

Should be fixed in http://trac.webkit.org/changeset/171216.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023218</commentid>
    <comment_count>15</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-18 00:14:09 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; &gt; &gt; Landed in http://trac.webkit.org/changeset/171213
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; it made 3 jsc tests fail everywhere
&gt; &gt; &gt; 
&gt; &gt; &gt; Investigating.
&gt; &gt; 
&gt; &gt; Will land a fix shortly.
&gt; 
&gt; Should be fixed in http://trac.webkit.org/changeset/171216.

Make that http://trac.webkit.org/changeset/171217.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023282</commentid>
    <comment_count>16</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-07-18 10:05:54 -0700</bug_when>
    <thetext>And it broke the CLOOP build:
Undefined symbols for architecture x86_64:
  &quot;__ZN3JSC27numberOfExceptionFuzzChecksEv&quot;, referenced from:
      __Z7jscmainiPPc in jsc.o</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023302</commentid>
    <comment_count>17</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-18 11:41:48 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; And it broke the CLOOP build:
&gt; Undefined symbols for architecture x86_64:
&gt;   &quot;__ZN3JSC27numberOfExceptionFuzzChecksEv&quot;, referenced from:
&gt;       __Z7jscmainiPPc in jsc.o

Fixed in http://trac.webkit.org/changeset/171228</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234957</attachid>
            <date>2014-07-15 15:05:17 -0700</date>
            <delta_ts>2014-07-15 19:31:10 -0700</delta_ts>
            <desc>almost done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>238771</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxNzExMDYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3Myw2ICsxMjczLDkgQEAg
aW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAgICAgaWYgKCF2bS0+
bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5zYXZlKG9wdGlvbnMubV9wcm9maWxlck91dHB1dC51dGY4
KCkuZGF0YSgpKSkKICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNvdWxkIG5vdCBz
YXZlIHByb2ZpbGVyIG91dHB1dC5cbiIpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBp
ZiAoT3B0aW9uczo6ZW5hYmxlRXhjZXB0aW9uRnV6eigpKQorICAgICAgICAgICAgcHJpbnRmKCJK
U0MgRVhDRVBUSU9OIEZVWlo6IGVuY291bnRlcmVkICV1IGNoZWNrcy5cbiIsIG51bWJlck9mRXhj
ZXB0aW9uRnV6ekNoZWNrcygpKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDE3MTEwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMjI5
LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3Mu
bV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgICAgICBqdW1wKEFkZHJlc3Moc2NyYXRjaFJl
Z2lzdGVyKSk7CiAgICAgfQotCisgICAgCiAgICAgQ2FsbCB0YWlsUmVjdXJzaXZlQ2FsbCgpCiAg
ICAgewogICAgICAgICBEYXRhTGFiZWxQdHIgbGFiZWwgPSBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJ
bW1QdHIoMCksIHNjcmF0Y2hSZWdpc3Rlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxNzExMDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw2ICsx
ODYsNyBAQCBwdWJsaWM6CiAgICAgLy8gQWRkIGEgY2FsbCBvdXQgZnJvbSBKSVQgY29kZSwgd2l0
aCBhIGZhc3QgZXhjZXB0aW9uIGNoZWNrIHRoYXQgdGVzdHMgaWYgdGhlIHJldHVybiB2YWx1ZSBp
cyB6ZXJvLgogICAgIHZvaWQgZmFzdEV4Y2VwdGlvbkNoZWNrKCkKICAgICB7CisgICAgICAgIGNh
bGxFeGNlcHRpb25GdXp6KCk7CiAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChicmFu
Y2hUZXN0UHRyKFplcm8sIEdQUkluZm86OnJldHVyblZhbHVlR1BSKSk7CiAgICAgfQogICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBv
c2l0b3J5LmgJKHJldmlzaW9uIDE3MTEwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhTX0pJVE9wZXJhdGlv
bl9FSiwgZnVuY3Rpb25UeXBlKGludFB0ciwgaW50UHRyLCBpbnQ2NCkpIFwKICAgICBtYWNybyhT
X0pJVE9wZXJhdGlvbl9FSkosIGZ1bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50NjQsIGlu
dDY0KSkgXAogICAgIG1hY3JvKFNfSklUT3BlcmF0aW9uX0osIGZ1bmN0aW9uVHlwZShpbnRQdHIs
IGludDY0KSkgXAorICAgIG1hY3JvKFZfSklUT3BlcmF0aW9uLCBmdW5jdGlvblR5cGUodm9pZFR5
cGUpKSBcCiAgICAgbWFjcm8oVl9KSVRPcGVyYXRpb25fRUpKSiwgZnVuY3Rpb25UeXBlKHZvaWRU
eXBlLCBpbnRQdHIsIGludDY0LCBpbnQ2NCwgaW50NjQpKSBcCiAgICAgbWFjcm8oVl9KSVRPcGVy
YXRpb25fRU9aRCwgZnVuY3Rpb25UeXBlKHZvaWRUeXBlLCBpbnRQdHIsIGludFB0ciwgaW50MzIs
IGRvdWJsZVR5cGUpKSBcCiAgICAgbWFjcm8oVl9KSVRPcGVyYXRpb25fRU9aSiwgZnVuY3Rpb25U
eXBlKHZvaWRUeXBlLCBpbnRQdHIsIGludFB0ciwgaW50MzIsIGludDY0KSkgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlz
aW9uIDE3MTEwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzYwLDYgKzU3NjAsOSBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAobW9kZSA9PSBOb0V4Y2VwdGlvbnMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIAorICAgICAgICBpZiAoT3B0aW9uczo6ZW5hYmxlRXhjZXB0aW9uRnV6eigpKQorICAgICAg
ICAgICAgbV9vdXQuY2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eikp
OworICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19C
TE9DSyhtX291dCwgKCJFeGNlcHRpb24gY2hlY2sgY29udGludWF0aW9uIikpOwogICAgICAgICAK
ICAgICAgICAgbV9vdXQuYnJhbmNoKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMTcxMTA2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xOTUsNiAr
MTk2LDMzIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRBcmd1bWVudEMKIH0KICNl
bmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWxsRXhj
ZXB0aW9uRnV6eigpCit7CisgICAgaWYgKCFPcHRpb25zOjplbmFibGVFeGNlcHRpb25GdXp6KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChzdGFja0FsaWdubWVudEJ5dGVzKCkgPj0g
c2l6ZW9mKHZvaWQqKSAqIDIpOworICAgIHN1YlB0cihUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1l
bnRCeXRlcygpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIHBva2UoR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIsIDApOworICAgIHBva2UoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCAxKTsK
KyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25FeGNl
cHRpb25GdXp6KSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CisgICAgY2Fs
bChHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOworICAgIHBlZWsoR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIsIDApOworICAgIHBlZWsoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCAx
KTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIHN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKK30KKworQXNzZW1ibHlIZWxwZXJzOjpKdW1wIEFzc2VtYmx5SGVs
cGVyczo6ZW1pdEV4Y2VwdGlvbkNoZWNrKEV4Y2VwdGlvbkNoZWNrS2luZCBraW5kKQoreworICAg
IGNhbGxFeGNlcHRpb25GdXp6KCk7CisgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1
cm4gYnJhbmNoVGVzdDY0KGtpbmQgPT0gTm9ybWFsRXhjZXB0aW9uQ2hlY2sgPyBOb25aZXJvIDog
WmVybywgQWJzb2x1dGVBZGRyZXNzKHZtKCktPmFkZHJlc3NPZkV4Y2VwdGlvbigpKSk7CisjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIHJldHVybiBicmFuY2gzMihraW5kID09IE5vcm1hbEV4
Y2VwdGlvbkNoZWNrID8gTm90RXF1YWwgOiBFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KHZtKCktPmFkZHJlc3NPZkV4Y2VwdGlvbigpKSArIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5
VmFsdWVUYWcpKTsKKyNlbmRpZgorfQorCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFN0b3Jl
U3RydWN0dXJlV2l0aFR5cGVJbmZvKEFzc2VtYmx5SGVscGVycyYgaml0LCBUcnVzdGVkSW1tUHRy
IHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0KQogewogICAgIGNvbnN0IFN0cnVjdHVyZSogc3Ry
dWN0dXJlUHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFs
dWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CShyZXZpc2lvbiAxNzExMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODEsMTUgKzQ4MSwxMCBAQCBwdWJsaWM6CiAg
ICAgfQogI2VuZGlmCiAgICAgCisgICAgdm9pZCBjYWxsRXhjZXB0aW9uRnV6eigpOworICAgIAog
ICAgIGVudW0gRXhjZXB0aW9uQ2hlY2tLaW5kIHsgTm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEludmVy
dGVkRXhjZXB0aW9uQ2hlY2sgfTsKLSAgICBKdW1wIGVtaXRFeGNlcHRpb25DaGVjayhFeGNlcHRp
b25DaGVja0tpbmQga2luZCA9IE5vcm1hbEV4Y2VwdGlvbkNoZWNrKQotICAgIHsKLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KGtpbmQgPT0gTm9ybWFsRXhj
ZXB0aW9uQ2hlY2sgPyBOb25aZXJvIDogWmVybywgQWJzb2x1dGVBZGRyZXNzKHZtKCktPmFkZHJl
c3NPZkV4Y2VwdGlvbigpKSk7Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICByZXR1
cm4gYnJhbmNoMzIoa2luZCA9PSBOb3JtYWxFeGNlcHRpb25DaGVjayA/IE5vdEVxdWFsIDogRXF1
YWwsIEFic29sdXRlQWRkcmVzcyhyZWludGVycHJldF9jYXN0PGNoYXIqPih2bSgpLT5hZGRyZXNz
T2ZFeGNlcHRpb24oKSkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7Ci0jZW5kaWYKLSAgICB9Cisg
ICAgSnVtcCBlbWl0RXhjZXB0aW9uQ2hlY2soRXhjZXB0aW9uQ2hlY2tLaW5kIGtpbmQgPSBOb3Jt
YWxFeGNlcHRpb25DaGVjayk7CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfQ09VTlRFUlMpCiAgICAg
c3RhdGljIHZvaWQgZW1pdENvdW50KE1hY3JvQXNzZW1ibGVyJiBqaXQsIEFic3RyYWN0U2FtcGxp
bmdDb3VudGVyJiBjb3VudGVyLCBpbnQzMl90IGluY3JlbWVudCA9IDEpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE3MTEwNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDEwICs1MSwxNCBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJSZXBhdGNoLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgorI2luY2x1ZGUgIlRl
c3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKK3N0YXRpYyB1bnNpZ25lZCBzX251bWJlck9mRXhjZXB0aW9uRnV6ekNoZWNrczsK
K3Vuc2lnbmVkIG51bWJlck9mRXhjZXB0aW9uRnV6ekNoZWNrcygpIHsgcmV0dXJuIHNfbnVtYmVy
T2ZFeGNlcHRpb25GdXp6Q2hlY2tzOyB9CisKIGV4dGVybiAiQyIgewogCiAjaWYgQ09NUElMRVIo
TVNWQykKQEAgLTE3OTksNiArMTgwMywyNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Vk1IYW5kbGVFeGNlCiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgZXhlYywgdm0tPmV4Y2VwdGlvbigp
KTsKIH0KIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enooKQorewor
ICAgIEFTU0VSVChPcHRpb25zOjplbmFibGVFeGNlcHRpb25GdXp6KCkpOworCisgICAgLy8gVGhp
cyBwcm9iYWJseSAianVzdCB3b3JrcyIgZm9yIEdDQyBhbHNvLCBidXQgSSBoYXZlbid0IHRyaWVk
LgorI2lmIENPTVBJTEVSKENMQU5HKQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHN0YXRpY19jYXN0
PEV4ZWNTdGF0ZSo+KF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzKDEpKTsKKyAgICBEZWZlckdDRm9y
QVdoaWxlIGRlZmVyR0MoZXhlYy0+dm0oKS5oZWFwKTsKKyAgICAKKyAgICBzX251bWJlck9mRXhj
ZXB0aW9uRnV6ekNoZWNrcysrOworICAgIAorICAgIHVuc2lnbmVkIGZpcmVUYXJnZXQgPSBPcHRp
b25zOjpmaXJlRXhjZXB0aW9uRnV6ekF0KCk7CisgICAgaWYgKGZpcmVUYXJnZXQgPT0gc19udW1i
ZXJPZkV4Y2VwdGlvbkZ1enpDaGVja3MpIHsKKyAgICAgICAgcHJpbnRmKCJKU0MgRVhDRVBUSU9O
IEZVWlo6IFRocm93aW5nIGZ1enogZXhjZXB0aW9uLlxuIik7CisgICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oCisgICAgICAgICAgICBleGVjLCBjcmVhdGVFcnJvcihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiRXhjZXB0aW9uIEZ1enoiKSkpOworICAg
IH0KKyNlbmRpZiAvLyBDT01QSUxFUihDTEFORykKK30KKwogfSAvLyBleHRlcm4gIkMiCiAKIC8v
IE5vdGU6IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKCkgbmVlZHMgdG8gYmUg
cGxhY2VkIGJlZm9yZSB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCShyZXZpc2lvbiAxNzExMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0Myw3IEBAIHR5cGVk
ZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXIKIHR5cGVkZWYgc2l6ZV90IEpJVF9P
UEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FT0pzcykoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBK
U1N0cmluZyopOwogdHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9u
X0opKEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVS
QVRJT04gKCpTcHJ0X0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7Cit0eXBl
ZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uKSgpOwogdHlwZWRlZiB2b2lk
IEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKIHR5cGVkZWYg
dm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUMpKEV4ZWNTdGF0ZSosIEpTQ2Vs
bCopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FQ2IpKEV4
ZWNTdGF0ZSosIENvZGVCbG9jayopOwpAQCAtMzAwLDYgKzMwMSw4IEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25PU1JXcml0ZUJhcnIKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkluaXRHbG9iYWxDb25zdChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwogCit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eigpOworCiB9IC8vIGV4dGVybiAiQyIKIAog
aW5saW5lIFBfSklUT3BlcmF0aW9uX0VDbGkgb3BlcmF0aW9uTGlua0ZvcigKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDE3MTEwNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjY5LDcgKzI2OSwxMCBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2
KGJvb2wsIGRpc2FibGVHQywgZmFsc2UpIFwKICAgICB2KHVuc2lnbmVkLCBnY01heEhlYXBTaXpl
LCAwKSBcCiAgICAgdihib29sLCByZWNvcmRHQ1BhdXNlVGltZXMsIGZhbHNlKSBcCi0gICAgdihi
b29sLCBsb2dIZWFwU3RhdGlzdGljc0F0RXhpdCwgZmFsc2UpCisgICAgdihib29sLCBsb2dIZWFw
U3RhdGlzdGljc0F0RXhpdCwgZmFsc2UpIFwKKyAgICBcCisgICAgdihib29sLCBlbmFibGVFeGNl
cHRpb25GdXp6LCBmYWxzZSkgXAorICAgIHYodW5zaWduZWQsIGZpcmVFeGNlcHRpb25GdXp6QXQs
IDApCiAKIGNsYXNzIE9wdGlvbnMgewogcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmgJKHJldmlzaW9uIDE3MTEwNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlc3RSdW5uZXJVdGlscy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw2ICs0NCw4IEBAIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgbnVtYmVy
T2ZERkdDb20KIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgc2V0TmV2ZXJJbmxpbmUoRXhlY1N0
YXRlKik7CiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIG9wdGltaXplTmV4dEludm9jYXRpb24o
RXhlY1N0YXRlKik7CiAKK0pTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIG51bWJlck9mRXhjZXB0
aW9uRnV6ekNoZWNrcygpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFRlc3RS
dW5uZXJVdGlsc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXhjZXB0aW9u
LWZ1enoueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXhj
ZXB0aW9uLWZ1enoueWFtbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9leGNlcHRpb24tZnV6ei55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAor
LSBwYXRoOiBleGNlcHRpb25GdXp6CisgIGNtZDogcnVuRXhjZXB0aW9uRnV6egpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2V4Y2VwdGlvbkZ1enovM2QtY3ViZS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXhjZXB0aW9uRnV6ei8zZC1jdWJl
LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2V4Y2VwdGlv
bkZ1enovM2QtY3ViZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2MCBAQAordHJ5IHsK
KworLy8gM0QgQ3ViZSBSb3RhdGlvbgorLy8gaHR0cDovL3d3dy5zcGVpY2gubmV0L2NvbXB1dGVy
L21venRlc3RpbmcvM2QuaHRtCisvLyBDcmVhdGVkIGJ5IFNpbW9uIFNwZWljaAorCit2YXIgUSA9
IG5ldyBBcnJheSgpOwordmFyIE1UcmFucyA9IG5ldyBBcnJheSgpOyAgLy8gdHJhbnNmb3JtYXRp
b24gbWF0cml4Cit2YXIgTVF1YmUgPSBuZXcgQXJyYXkoKTsgIC8vIHBvc2l0aW9uIGluZm9ybWF0
aW9uIG9mIHF1YmUKK3ZhciBJID0gbmV3IEFycmF5KCk7ICAgICAgLy8gZW50aXR5IG1hdHJpeAor
dmFyIE9yaWdpbiA9IG5ldyBPYmplY3QoKTsKK3ZhciBUZXN0aW5nID0gbmV3IE9iamVjdCgpOwor
dmFyIExvb3BUaW1lcjsKKwordmFyIHZhbGlkYXRpb24gPSB7CisgMjA6IDI4ODkuMDAwMDAwMDAw
MDA0NSwKKyA0MDogMjg4OS4wMDAwMDAwMDAwMDU1LAorIDgwOiAyODg5LjAwMDAwMDAwMDAwNSwK
KyAxNjA6IDI4ODkuMDAwMDAwMDAwMDA1NQorfTsKKwordmFyIERpc3BsQXJlYSA9IG5ldyBPYmpl
Y3QoKTsKK0Rpc3BsQXJlYS5XaWR0aCA9IDMwMDsKK0Rpc3BsQXJlYS5IZWlnaHQgPSAzMDA7CisK
K2Z1bmN0aW9uIERyYXdMaW5lKEZyb20sIFRvKSB7CisgIHZhciB4MSA9IEZyb20uVlswXTsKKyAg
dmFyIHgyID0gVG8uVlswXTsKKyAgdmFyIHkxID0gRnJvbS5WWzFdOworICB2YXIgeTIgPSBUby5W
WzFdOworICB2YXIgZHggPSBNYXRoLmFicyh4MiAtIHgxKTsKKyAgdmFyIGR5ID0gTWF0aC5hYnMo
eTIgLSB5MSk7CisgIHZhciB4ID0geDE7CisgIHZhciB5ID0geTE7CisgIHZhciBJbmNYMSwgSW5j
WTE7CisgIHZhciBJbmNYMiwgSW5jWTI7ICAKKyAgdmFyIERlbjsKKyAgdmFyIE51bTsKKyAgdmFy
IE51bUFkZDsKKyAgdmFyIE51bVBpeDsKKworICBpZiAoeDIgPj0geDEpIHsgIEluY1gxID0gMTsg
SW5jWDIgPSAxOyAgfQorICBlbHNlIHsgSW5jWDEgPSAtMTsgSW5jWDIgPSAtMTsgfQorICBpZiAo
eTIgPj0geTEpICB7ICBJbmNZMSA9IDE7IEluY1kyID0gMTsgfQorICBlbHNlIHsgSW5jWTEgPSAt
MTsgSW5jWTIgPSAtMTsgfQorICBpZiAoZHggPj0gZHkpIHsKKyAgICBJbmNYMSA9IDA7CisgICAg
SW5jWTIgPSAwOworICAgIERlbiA9IGR4OworICAgIE51bSA9IGR4IC8gMjsKKyAgICBOdW1BZGQg
PSBkeTsKKyAgICBOdW1QaXggPSBkeDsKKyAgfQorICBlbHNlIHsKKyAgICBJbmNYMiA9IDA7Cisg
ICAgSW5jWTEgPSAwOworICAgIERlbiA9IGR5OworICAgIE51bSA9IGR5IC8gMjsKKyAgICBOdW1B
ZGQgPSBkeDsKKyAgICBOdW1QaXggPSBkeTsKKyAgfQorCisgIE51bVBpeCA9IE1hdGgucm91bmQo
US5MYXN0UHggKyBOdW1QaXgpOworCisgIHZhciBpID0gUS5MYXN0UHg7CisgIGZvciAoOyBpIDwg
TnVtUGl4OyBpKyspIHsKKyAgICBOdW0gKz0gTnVtQWRkOworICAgIGlmIChOdW0gPj0gRGVuKSB7
CisgICAgICBOdW0gLT0gRGVuOworICAgICAgeCArPSBJbmNYMTsKKyAgICAgIHkgKz0gSW5jWTE7
CisgICAgfQorICAgIHggKz0gSW5jWDI7CisgICAgeSArPSBJbmNZMjsKKyAgfQorICBRLkxhc3RQ
eCA9IE51bVBpeDsKK30KKworZnVuY3Rpb24gQ2FsY0Nyb3NzKFYwLCBWMSkgeworICB2YXIgQ3Jv
c3MgPSBuZXcgQXJyYXkoKTsKKyAgQ3Jvc3NbMF0gPSBWMFsxXSpWMVsyXSAtIFYwWzJdKlYxWzFd
OworICBDcm9zc1sxXSA9IFYwWzJdKlYxWzBdIC0gVjBbMF0qVjFbMl07CisgIENyb3NzWzJdID0g
VjBbMF0qVjFbMV0gLSBWMFsxXSpWMVswXTsKKyAgcmV0dXJuIENyb3NzOworfQorCitmdW5jdGlv
biBDYWxjTm9ybWFsKFYwLCBWMSwgVjIpIHsKKyAgdmFyIEEgPSBuZXcgQXJyYXkoKTsgICB2YXIg
QiA9IG5ldyBBcnJheSgpOyAKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICBB
W2ldID0gVjBbaV0gLSBWMVtpXTsKKyAgICBCW2ldID0gVjJbaV0gLSBWMVtpXTsKKyAgfQorICBB
ID0gQ2FsY0Nyb3NzKEEsIEIpOworICB2YXIgTGVuZ3RoID0gTWF0aC5zcXJ0KEFbMF0qQVswXSAr
IEFbMV0qQVsxXSArIEFbMl0qQVsyXSk7IAorICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykg
QVtpXSA9IEFbaV0gLyBMZW5ndGg7CisgIEFbM10gPSAxOworICByZXR1cm4gQTsKK30KKworZnVu
Y3Rpb24gQ3JlYXRlUChYLFksWikgeworICB0aGlzLlYgPSBbWCxZLFosMV07Cit9CisKKy8vIG11
bHRpcGxpZXMgdHdvIG1hdHJpY2VzCitmdW5jdGlvbiBNTXVsdGkoTTEsIE0yKSB7CisgIHZhciBN
ID0gW1tdLFtdLFtdLFtdXTsKKyAgdmFyIGkgPSAwOworICB2YXIgaiA9IDA7CisgIGZvciAoOyBp
IDwgNDsgaSsrKSB7CisgICAgaiA9IDA7CisgICAgZm9yICg7IGogPCA0OyBqKyspIE1baV1bal0g
PSBNMVtpXVswXSAqIE0yWzBdW2pdICsgTTFbaV1bMV0gKiBNMlsxXVtqXSArIE0xW2ldWzJdICog
TTJbMl1bal0gKyBNMVtpXVszXSAqIE0yWzNdW2pdOworICB9CisgIHJldHVybiBNOworfQorCisv
L211bHRpcGxpZXMgbWF0cml4IHdpdGggdmVjdG9yCitmdW5jdGlvbiBWTXVsdGkoTSwgVikgewor
ICB2YXIgVmVjdCA9IG5ldyBBcnJheSgpOworICB2YXIgaSA9IDA7CisgIGZvciAoO2kgPCA0OyBp
KyspIFZlY3RbaV0gPSBNW2ldWzBdICogVlswXSArIE1baV1bMV0gKiBWWzFdICsgTVtpXVsyXSAq
IFZbMl0gKyBNW2ldWzNdICogVlszXTsKKyAgcmV0dXJuIFZlY3Q7Cit9CisKK2Z1bmN0aW9uIFZN
dWx0aTIoTSwgVikgeworICB2YXIgVmVjdCA9IG5ldyBBcnJheSgpOworICB2YXIgaSA9IDA7Cisg
IGZvciAoO2kgPCAzOyBpKyspIFZlY3RbaV0gPSBNW2ldWzBdICogVlswXSArIE1baV1bMV0gKiBW
WzFdICsgTVtpXVsyXSAqIFZbMl07CisgIHJldHVybiBWZWN0OworfQorCisvLyBhZGQgdG8gbWF0
cmljZXMKK2Z1bmN0aW9uIE1BZGQoTTEsIE0yKSB7CisgIHZhciBNID0gW1tdLFtdLFtdLFtdXTsK
KyAgdmFyIGkgPSAwOworICB2YXIgaiA9IDA7CisgIGZvciAoOyBpIDwgNDsgaSsrKSB7CisgICAg
aiA9IDA7CisgICAgZm9yICg7IGogPCA0OyBqKyspIE1baV1bal0gPSBNMVtpXVtqXSArIE0yW2ld
W2pdOworICB9CisgIHJldHVybiBNOworfQorCitmdW5jdGlvbiBUcmFuc2xhdGUoTSwgRHgsIER5
LCBEeikgeworICB2YXIgVCA9IFsKKyAgWzEsMCwwLER4XSwKKyAgWzAsMSwwLER5XSwKKyAgWzAs
MCwxLER6XSwKKyAgWzAsMCwwLDFdCisgIF07CisgIHJldHVybiBNTXVsdGkoVCwgTSk7Cit9CisK
K2Z1bmN0aW9uIFJvdGF0ZVgoTSwgUGhpKSB7CisgIHZhciBhID0gUGhpOworICBhICo9IE1hdGgu
UEkgLyAxODA7CisgIHZhciBDb3MgPSBNYXRoLmNvcyhhKTsKKyAgdmFyIFNpbiA9IE1hdGguc2lu
KGEpOworICB2YXIgUiA9IFsKKyAgWzEsMCwwLDBdLAorICBbMCxDb3MsLVNpbiwwXSwKKyAgWzAs
U2luLENvcywwXSwKKyAgWzAsMCwwLDFdCisgIF07CisgIHJldHVybiBNTXVsdGkoUiwgTSk7Cit9
CisKK2Z1bmN0aW9uIFJvdGF0ZVkoTSwgUGhpKSB7CisgIHZhciBhID0gUGhpOworICBhICo9IE1h
dGguUEkgLyAxODA7CisgIHZhciBDb3MgPSBNYXRoLmNvcyhhKTsKKyAgdmFyIFNpbiA9IE1hdGgu
c2luKGEpOworICB2YXIgUiA9IFsKKyAgW0NvcywwLFNpbiwwXSwKKyAgWzAsMSwwLDBdLAorICBb
LVNpbiwwLENvcywwXSwKKyAgWzAsMCwwLDFdCisgIF07CisgIHJldHVybiBNTXVsdGkoUiwgTSk7
Cit9CisKK2Z1bmN0aW9uIFJvdGF0ZVooTSwgUGhpKSB7CisgIHZhciBhID0gUGhpOworICBhICo9
IE1hdGguUEkgLyAxODA7CisgIHZhciBDb3MgPSBNYXRoLmNvcyhhKTsKKyAgdmFyIFNpbiA9IE1h
dGguc2luKGEpOworICB2YXIgUiA9IFsKKyAgW0NvcywtU2luLDAsMF0sCisgIFtTaW4sQ29zLDAs
MF0sCisgIFswLDAsMSwwXSwgICAKKyAgWzAsMCwwLDFdCisgIF07CisgIHJldHVybiBNTXVsdGko
UiwgTSk7Cit9CisKK2Z1bmN0aW9uIERyYXdRdWJlKCkgeworICAvLyBjYWxjIGN1cnJlbnQgbm9y
bWFscworICB2YXIgQ3VyTiA9IG5ldyBBcnJheSgpOworICB2YXIgaSA9IDU7CisgIFEuTGFzdFB4
ID0gMDsKKyAgZm9yICg7IGkgPiAtMTsgaS0tKSBDdXJOW2ldID0gVk11bHRpMihNUXViZSwgUS5O
b3JtYWxbaV0pOworICBpZiAoQ3VyTlswXVsyXSA8IDApIHsKKyAgICBpZiAoIVEuTGluZVswXSkg
eyBEcmF3TGluZShRWzBdLCBRWzFdKTsgUS5MaW5lWzBdID0gdHJ1ZTsgfTsKKyAgICBpZiAoIVEu
TGluZVsxXSkgeyBEcmF3TGluZShRWzFdLCBRWzJdKTsgUS5MaW5lWzFdID0gdHJ1ZTsgfTsKKyAg
ICBpZiAoIVEuTGluZVsyXSkgeyBEcmF3TGluZShRWzJdLCBRWzNdKTsgUS5MaW5lWzJdID0gdHJ1
ZTsgfTsKKyAgICBpZiAoIVEuTGluZVszXSkgeyBEcmF3TGluZShRWzNdLCBRWzBdKTsgUS5MaW5l
WzNdID0gdHJ1ZTsgfTsKKyAgfQorICBpZiAoQ3VyTlsxXVsyXSA8IDApIHsKKyAgICBpZiAoIVEu
TGluZVsyXSkgeyBEcmF3TGluZShRWzNdLCBRWzJdKTsgUS5MaW5lWzJdID0gdHJ1ZTsgfTsKKyAg
ICBpZiAoIVEuTGluZVs5XSkgeyBEcmF3TGluZShRWzJdLCBRWzZdKTsgUS5MaW5lWzldID0gdHJ1
ZTsgfTsKKyAgICBpZiAoIVEuTGluZVs2XSkgeyBEcmF3TGluZShRWzZdLCBRWzddKTsgUS5MaW5l
WzZdID0gdHJ1ZTsgfTsKKyAgICBpZiAoIVEuTGluZVsxMF0pIHsgRHJhd0xpbmUoUVs3XSwgUVsz
XSk7IFEuTGluZVsxMF0gPSB0cnVlOyB9OworICB9CisgIGlmIChDdXJOWzJdWzJdIDwgMCkgewor
ICAgIGlmICghUS5MaW5lWzRdKSB7IERyYXdMaW5lKFFbNF0sIFFbNV0pOyBRLkxpbmVbNF0gPSB0
cnVlOyB9OworICAgIGlmICghUS5MaW5lWzVdKSB7IERyYXdMaW5lKFFbNV0sIFFbNl0pOyBRLkxp
bmVbNV0gPSB0cnVlOyB9OworICAgIGlmICghUS5MaW5lWzZdKSB7IERyYXdMaW5lKFFbNl0sIFFb
N10pOyBRLkxpbmVbNl0gPSB0cnVlOyB9OworICAgIGlmICghUS5MaW5lWzddKSB7IERyYXdMaW5l
KFFbN10sIFFbNF0pOyBRLkxpbmVbN10gPSB0cnVlOyB9OworICB9CisgIGlmIChDdXJOWzNdWzJd
IDwgMCkgeworICAgIGlmICghUS5MaW5lWzRdKSB7IERyYXdMaW5lKFFbNF0sIFFbNV0pOyBRLkxp
bmVbNF0gPSB0cnVlOyB9OworICAgIGlmICghUS5MaW5lWzhdKSB7IERyYXdMaW5lKFFbNV0sIFFb
MV0pOyBRLkxpbmVbOF0gPSB0cnVlOyB9OworICAgIGlmICghUS5MaW5lWzBdKSB7IERyYXdMaW5l
KFFbMV0sIFFbMF0pOyBRLkxpbmVbMF0gPSB0cnVlOyB9OworICAgIGlmICghUS5MaW5lWzExXSkg
eyBEcmF3TGluZShRWzBdLCBRWzRdKTsgUS5MaW5lWzExXSA9IHRydWU7IH07CisgIH0KKyAgaWYg
KEN1ck5bNF1bMl0gPCAwKSB7CisgICAgaWYgKCFRLkxpbmVbMTFdKSB7IERyYXdMaW5lKFFbNF0s
IFFbMF0pOyBRLkxpbmVbMTFdID0gdHJ1ZTsgfTsKKyAgICBpZiAoIVEuTGluZVszXSkgeyBEcmF3
TGluZShRWzBdLCBRWzNdKTsgUS5MaW5lWzNdID0gdHJ1ZTsgfTsKKyAgICBpZiAoIVEuTGluZVsx
MF0pIHsgRHJhd0xpbmUoUVszXSwgUVs3XSk7IFEuTGluZVsxMF0gPSB0cnVlOyB9OworICAgIGlm
ICghUS5MaW5lWzddKSB7IERyYXdMaW5lKFFbN10sIFFbNF0pOyBRLkxpbmVbN10gPSB0cnVlOyB9
OworICB9CisgIGlmIChDdXJOWzVdWzJdIDwgMCkgeworICAgIGlmICghUS5MaW5lWzhdKSB7IERy
YXdMaW5lKFFbMV0sIFFbNV0pOyBRLkxpbmVbOF0gPSB0cnVlOyB9OworICAgIGlmICghUS5MaW5l
WzVdKSB7IERyYXdMaW5lKFFbNV0sIFFbNl0pOyBRLkxpbmVbNV0gPSB0cnVlOyB9OworICAgIGlm
ICghUS5MaW5lWzldKSB7IERyYXdMaW5lKFFbNl0sIFFbMl0pOyBRLkxpbmVbOV0gPSB0cnVlOyB9
OworICAgIGlmICghUS5MaW5lWzFdKSB7IERyYXdMaW5lKFFbMl0sIFFbMV0pOyBRLkxpbmVbMV0g
PSB0cnVlOyB9OworICB9CisgIFEuTGluZSA9IFtmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxz
ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZV07CisgIFEuTGFzdFB4
ID0gMDsKK30KKworZnVuY3Rpb24gTG9vcCgpIHsKKyAgaWYgKFRlc3RpbmcuTG9vcENvdW50ID4g
VGVzdGluZy5Mb29wTWF4KSByZXR1cm47CisgIHZhciBUZXN0aW5nU3RyID0gU3RyaW5nKFRlc3Rp
bmcuTG9vcENvdW50KTsKKyAgd2hpbGUgKFRlc3RpbmdTdHIubGVuZ3RoIDwgMykgVGVzdGluZ1N0
ciA9ICIwIiArIFRlc3RpbmdTdHI7CisgIE1UcmFucyA9IFRyYW5zbGF0ZShJLCAtUVs4XS5WWzBd
LCAtUVs4XS5WWzFdLCAtUVs4XS5WWzJdKTsKKyAgTVRyYW5zID0gUm90YXRlWChNVHJhbnMsIDEp
OworICBNVHJhbnMgPSBSb3RhdGVZKE1UcmFucywgMyk7CisgIE1UcmFucyA9IFJvdGF0ZVooTVRy
YW5zLCA1KTsKKyAgTVRyYW5zID0gVHJhbnNsYXRlKE1UcmFucywgUVs4XS5WWzBdLCBRWzhdLlZb
MV0sIFFbOF0uVlsyXSk7CisgIE1RdWJlID0gTU11bHRpKE1UcmFucywgTVF1YmUpOworICB2YXIg
aSA9IDg7CisgIGZvciAoOyBpID4gLTE7IGktLSkgeworICAgIFFbaV0uViA9IFZNdWx0aShNVHJh
bnMsIFFbaV0uVik7CisgIH0KKyAgRHJhd1F1YmUoKTsKKyAgVGVzdGluZy5Mb29wQ291bnQrKzsK
KyAgTG9vcCgpOworfQorCitmdW5jdGlvbiBJbml0KEN1YmVTaXplKSB7CisgIC8vIGluaXQvcmVz
ZXQgdmFycworICBPcmlnaW4uViA9IFsxNTAsMTUwLDIwLDFdOworICBUZXN0aW5nLkxvb3BDb3Vu
dCA9IDA7CisgIFRlc3RpbmcuTG9vcE1heCA9IDUwOworICBUZXN0aW5nLlRpbWVNYXggPSAwOwor
ICBUZXN0aW5nLlRpbWVBdmcgPSAwOworICBUZXN0aW5nLlRpbWVNaW4gPSAwOworICBUZXN0aW5n
LlRpbWVUZW1wID0gMDsKKyAgVGVzdGluZy5UaW1lVG90YWwgPSAwOworICBUZXN0aW5nLkluaXQg
PSBmYWxzZTsKKworICAvLyB0cmFuc2Zvcm1hdGlvbiBtYXRyaXgKKyAgTVRyYW5zID0gWworICBb
MSwwLDAsMF0sCisgIFswLDEsMCwwXSwKKyAgWzAsMCwxLDBdLAorICBbMCwwLDAsMV0KKyAgXTsK
KyAgCisgIC8vIHBvc2l0aW9uIGluZm9ybWF0aW9uIG9mIHF1YmUKKyAgTVF1YmUgPSBbCisgIFsx
LDAsMCwwXSwKKyAgWzAsMSwwLDBdLAorICBbMCwwLDEsMF0sCisgIFswLDAsMCwxXQorICBdOwor
ICAKKyAgLy8gZW50aXR5IG1hdHJpeAorICBJID0gWworICBbMSwwLDAsMF0sCisgIFswLDEsMCww
XSwKKyAgWzAsMCwxLDBdLAorICBbMCwwLDAsMV0KKyAgXTsKKyAgCisgIC8vIGNyZWF0ZSBxdWJl
CisgIFFbMF0gPSBuZXcgQ3JlYXRlUCgtQ3ViZVNpemUsLUN1YmVTaXplLCBDdWJlU2l6ZSk7Cisg
IFFbMV0gPSBuZXcgQ3JlYXRlUCgtQ3ViZVNpemUsIEN1YmVTaXplLCBDdWJlU2l6ZSk7CisgIFFb
Ml0gPSBuZXcgQ3JlYXRlUCggQ3ViZVNpemUsIEN1YmVTaXplLCBDdWJlU2l6ZSk7CisgIFFbM10g
PSBuZXcgQ3JlYXRlUCggQ3ViZVNpemUsLUN1YmVTaXplLCBDdWJlU2l6ZSk7CisgIFFbNF0gPSBu
ZXcgQ3JlYXRlUCgtQ3ViZVNpemUsLUN1YmVTaXplLC1DdWJlU2l6ZSk7CisgIFFbNV0gPSBuZXcg
Q3JlYXRlUCgtQ3ViZVNpemUsIEN1YmVTaXplLC1DdWJlU2l6ZSk7CisgIFFbNl0gPSBuZXcgQ3Jl
YXRlUCggQ3ViZVNpemUsIEN1YmVTaXplLC1DdWJlU2l6ZSk7CisgIFFbN10gPSBuZXcgQ3JlYXRl
UCggQ3ViZVNpemUsLUN1YmVTaXplLC1DdWJlU2l6ZSk7CisgIAorICAvLyBjZW50ZXIgb2YgZ3Jh
dml0eQorICBRWzhdID0gbmV3IENyZWF0ZVAoMCwgMCwgMCk7CisgIAorICAvLyBhbnRpLWNsb2Nr
d2lzZSBlZGdlIGNoZWNrCisgIFEuRWRnZSA9IFtbMCwxLDJdLFszLDIsNl0sWzcsNiw1XSxbNCw1
LDFdLFs0LDAsM10sWzEsNSw2XV07CisgIAorICAvLyBjYWxjdWxhdGUgc3F1YWQgbm9ybWFscwor
ICBRLk5vcm1hbCA9IG5ldyBBcnJheSgpOworICBmb3IgKHZhciBpID0gMDsgaSA8IFEuRWRnZS5s
ZW5ndGg7IGkrKykgUS5Ob3JtYWxbaV0gPSBDYWxjTm9ybWFsKFFbUS5FZGdlW2ldWzBdXS5WLCBR
W1EuRWRnZVtpXVsxXV0uViwgUVtRLkVkZ2VbaV1bMl1dLlYpOworICAKKyAgLy8gbGluZSBkcmF3
biA/CisgIFEuTGluZSA9IFtmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxz
ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZV07CisgIAorICAvLyBjcmVhdGUgbGluZSBw
aXhlbHMKKyAgUS5OdW1QeCA9IDkgKiAyICogQ3ViZVNpemU7CisgIGZvciAodmFyIGkgPSAwOyBp
IDwgUS5OdW1QeDsgaSsrKSBDcmVhdGVQKDAsMCwwKTsKKyAgCisgIE1UcmFucyA9IFRyYW5zbGF0
ZShNVHJhbnMsIE9yaWdpbi5WWzBdLCBPcmlnaW4uVlsxXSwgT3JpZ2luLlZbMl0pOworICBNUXVi
ZSA9IE1NdWx0aShNVHJhbnMsIE1RdWJlKTsKKworICB2YXIgaSA9IDA7CisgIGZvciAoOyBpIDwg
OTsgaSsrKSB7CisgICAgUVtpXS5WID0gVk11bHRpKE1UcmFucywgUVtpXS5WKTsKKyAgfQorICBE
cmF3UXViZSgpOworICBUZXN0aW5nLkluaXQgPSB0cnVlOworICBMb29wKCk7CisgIAorICAvLyBQ
ZXJmb3JtIGEgc2ltcGxlIHN1bS1iYXNlZCB2ZXJpZmljYXRpb24uCisgIHZhciBzdW0gPSAwOwor
ICBmb3IgKHZhciBpID0gMDsgaSA8IFEubGVuZ3RoOyArK2kpIHsKKyAgICB2YXIgdmVjdG9yID0g
UVtpXS5WOworICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmVjdG9yLmxlbmd0aDsgKytqKQorICAg
ICAgc3VtICs9IHZlY3RvcltqXTsKKyAgfQorICBpZiAoc3VtICE9IHZhbGlkYXRpb25bQ3ViZVNp
emVdKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZlY3RvciBzdW0gZm9yIEN1YmVTaXplID0gIiAr
IEN1YmVTaXplICsgIjsgZXhwZWN0ZWQgIiArIHZhbGlkYXRpb25bQ3ViZVNpemVdICsgIiBidXQg
Z290ICIgKyBzdW07Cit9CisKK2ZvciAoIHZhciBpID0gMjA7IGkgPD0gMTYwOyBpICo9IDIgKSB7
CisgIEluaXQoaSk7Cit9CisKK1EgPSBudWxsOworTVRyYW5zID0gbnVsbDsKK01RdWJlID0gbnVs
bDsKK0kgPSBudWxsOworT3JpZ2luID0gbnVsbDsKK1Rlc3RpbmcgPSBudWxsOworTG9vcFRpbWUg
PSBudWxsOworRGlzcGxBcmVhID0gbnVsbDsKKworfSBjYXRjaCAoZSkgeworICAgIHByaW50KCJK
U0MgIEVYQ0VQVElPTiBGVVpaOiBDYXVnaHQgZXhjZXB0aW9uOiAiICsgZSk7Cit9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXhjZXB0aW9uRnV6ei9kYXRlLWZvcm1hdC14cGFy
Yi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXhjZXB0aW9u
RnV6ei9kYXRlLWZvcm1hdC14cGFyYi5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9leGNlcHRpb25GdXp6L2RhdGUtZm9ybWF0LXhwYXJiLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDI2IEBACit0cnkgeworCisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA0IEJhcm9uIFNjaHdhcnR6IDxiYXJvbiBhdCBzZXF1ZW50IGRvdCBvcmc+CisgKgorICogVGhp
cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgdmVyc2lvbiAyLjEuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUKKyAqIGRldGFpbHMuCisg
Ki8KKworRGF0ZS5wYXJzZUZ1bmN0aW9ucyA9IHtjb3VudDowfTsKK0RhdGUucGFyc2VSZWdleGVz
ID0gW107CitEYXRlLmZvcm1hdEZ1bmN0aW9ucyA9IHtjb3VudDowfTsKKworRGF0ZS5wcm90b3R5
cGUuZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uKGZvcm1hdCkgeworICAgIGlmIChEYXRlLmZvcm1hdEZ1
bmN0aW9uc1tmb3JtYXRdID09IG51bGwpIHsKKyAgICAgICAgRGF0ZS5jcmVhdGVOZXdGb3JtYXQo
Zm9ybWF0KTsKKyAgICB9CisgICAgdmFyIGZ1bmMgPSBEYXRlLmZvcm1hdEZ1bmN0aW9uc1tmb3Jt
YXRdOworICAgIHJldHVybiB0aGlzW2Z1bmNdKCk7Cit9CisKK0RhdGUuY3JlYXRlTmV3Rm9ybWF0
ID0gZnVuY3Rpb24oZm9ybWF0KSB7CisgICAgdmFyIGZ1bmNOYW1lID0gImZvcm1hdCIgKyBEYXRl
LmZvcm1hdEZ1bmN0aW9ucy5jb3VudCsrOworICAgIERhdGUuZm9ybWF0RnVuY3Rpb25zW2Zvcm1h
dF0gPSBmdW5jTmFtZTsKKyAgICB2YXIgY29kZSA9ICJEYXRlLnByb3RvdHlwZS4iICsgZnVuY05h
bWUgKyAiID0gZnVuY3Rpb24oKXtyZXR1cm4gIjsKKyAgICB2YXIgc3BlY2lhbCA9IGZhbHNlOwor
ICAgIHZhciBjaCA9ICcnOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm9ybWF0Lmxlbmd0aDsg
KytpKSB7CisgICAgICAgIGNoID0gZm9ybWF0LmNoYXJBdChpKTsKKyAgICAgICAgaWYgKCFzcGVj
aWFsICYmIGNoID09ICJcXCIpIHsKKyAgICAgICAgICAgIHNwZWNpYWwgPSB0cnVlOworICAgICAg
ICB9CisgICAgICAgIGVsc2UgaWYgKHNwZWNpYWwpIHsKKyAgICAgICAgICAgIHNwZWNpYWwgPSBm
YWxzZTsKKyAgICAgICAgICAgIGNvZGUgKz0gIiciICsgU3RyaW5nLmVzY2FwZShjaCkgKyAiJyAr
ICI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb2RlICs9IERhdGUu
Z2V0Rm9ybWF0Q29kZShjaCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZXZhbChjb2RlLnN1YnN0
cmluZygwLCBjb2RlLmxlbmd0aCAtIDMpICsgIjt9Iik7Cit9CisKK0RhdGUuZ2V0Rm9ybWF0Q29k
ZSA9IGZ1bmN0aW9uKGNoYXJhY3RlcikgeworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CisgICAg
Y2FzZSAiZCI6CisgICAgICAgIHJldHVybiAiU3RyaW5nLmxlZnRQYWQodGhpcy5nZXREYXRlKCks
IDIsICcwJykgKyAiOworICAgIGNhc2UgIkQiOgorICAgICAgICByZXR1cm4gIkRhdGUuZGF5TmFt
ZXNbdGhpcy5nZXREYXkoKV0uc3Vic3RyaW5nKDAsIDMpICsgIjsKKyAgICBjYXNlICJqIjoKKyAg
ICAgICAgcmV0dXJuICJ0aGlzLmdldERhdGUoKSArICI7CisgICAgY2FzZSAibCI6CisgICAgICAg
IHJldHVybiAiRGF0ZS5kYXlOYW1lc1t0aGlzLmdldERheSgpXSArICI7CisgICAgY2FzZSAiUyI6
CisgICAgICAgIHJldHVybiAidGhpcy5nZXRTdWZmaXgoKSArICI7CisgICAgY2FzZSAidyI6Cisg
ICAgICAgIHJldHVybiAidGhpcy5nZXREYXkoKSArICI7CisgICAgY2FzZSAieiI6CisgICAgICAg
IHJldHVybiAidGhpcy5nZXREYXlPZlllYXIoKSArICI7CisgICAgY2FzZSAiVyI6CisgICAgICAg
IHJldHVybiAidGhpcy5nZXRXZWVrT2ZZZWFyKCkgKyAiOworICAgIGNhc2UgIkYiOgorICAgICAg
ICByZXR1cm4gIkRhdGUubW9udGhOYW1lc1t0aGlzLmdldE1vbnRoKCldICsgIjsKKyAgICBjYXNl
ICJtIjoKKyAgICAgICAgcmV0dXJuICJTdHJpbmcubGVmdFBhZCh0aGlzLmdldE1vbnRoKCkgKyAx
LCAyLCAnMCcpICsgIjsKKyAgICBjYXNlICJNIjoKKyAgICAgICAgcmV0dXJuICJEYXRlLm1vbnRo
TmFtZXNbdGhpcy5nZXRNb250aCgpXS5zdWJzdHJpbmcoMCwgMykgKyAiOworICAgIGNhc2UgIm4i
OgorICAgICAgICByZXR1cm4gIih0aGlzLmdldE1vbnRoKCkgKyAxKSArICI7CisgICAgY2FzZSAi
dCI6CisgICAgICAgIHJldHVybiAidGhpcy5nZXREYXlzSW5Nb250aCgpICsgIjsKKyAgICBjYXNl
ICJMIjoKKyAgICAgICAgcmV0dXJuICIodGhpcy5pc0xlYXBZZWFyKCkgPyAxIDogMCkgKyAiOwor
ICAgIGNhc2UgIlkiOgorICAgICAgICByZXR1cm4gInRoaXMuZ2V0RnVsbFllYXIoKSArICI7Cisg
ICAgY2FzZSAieSI6CisgICAgICAgIHJldHVybiAiKCcnICsgdGhpcy5nZXRGdWxsWWVhcigpKS5z
dWJzdHJpbmcoMiwgNCkgKyAiOworICAgIGNhc2UgImEiOgorICAgICAgICByZXR1cm4gIih0aGlz
LmdldEhvdXJzKCkgPCAxMiA/ICdhbScgOiAncG0nKSArICI7CisgICAgY2FzZSAiQSI6CisgICAg
ICAgIHJldHVybiAiKHRoaXMuZ2V0SG91cnMoKSA8IDEyID8gJ0FNJyA6ICdQTScpICsgIjsKKyAg
ICBjYXNlICJnIjoKKyAgICAgICAgcmV0dXJuICIoKHRoaXMuZ2V0SG91cnMoKSAlMTIpID8gdGhp
cy5nZXRIb3VycygpICUgMTIgOiAxMikgKyAiOworICAgIGNhc2UgIkciOgorICAgICAgICByZXR1
cm4gInRoaXMuZ2V0SG91cnMoKSArICI7CisgICAgY2FzZSAiaCI6CisgICAgICAgIHJldHVybiAi
U3RyaW5nLmxlZnRQYWQoKHRoaXMuZ2V0SG91cnMoKSAlMTIpID8gdGhpcy5nZXRIb3VycygpICUg
MTIgOiAxMiwgMiwgJzAnKSArICI7CisgICAgY2FzZSAiSCI6CisgICAgICAgIHJldHVybiAiU3Ry
aW5nLmxlZnRQYWQodGhpcy5nZXRIb3VycygpLCAyLCAnMCcpICsgIjsKKyAgICBjYXNlICJpIjoK
KyAgICAgICAgcmV0dXJuICJTdHJpbmcubGVmdFBhZCh0aGlzLmdldE1pbnV0ZXMoKSwgMiwgJzAn
KSArICI7CisgICAgY2FzZSAicyI6CisgICAgICAgIHJldHVybiAiU3RyaW5nLmxlZnRQYWQodGhp
cy5nZXRTZWNvbmRzKCksIDIsICcwJykgKyAiOworICAgIGNhc2UgIk8iOgorICAgICAgICByZXR1
cm4gInRoaXMuZ2V0R01UT2Zmc2V0KCkgKyAiOworICAgIGNhc2UgIlQiOgorICAgICAgICByZXR1
cm4gInRoaXMuZ2V0VGltZXpvbmUoKSArICI7CisgICAgY2FzZSAiWiI6CisgICAgICAgIHJldHVy
biAiKHRoaXMuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIC02MCkgKyAiOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiAiJyIgKyBTdHJpbmcuZXNjYXBlKGNoYXJhY3RlcikgKyAiJyArICI7Cisg
ICAgfQorfQorCitEYXRlLnBhcnNlRGF0ZSA9IGZ1bmN0aW9uKGlucHV0LCBmb3JtYXQpIHsKKyAg
ICBpZiAoRGF0ZS5wYXJzZUZ1bmN0aW9uc1tmb3JtYXRdID09IG51bGwpIHsKKyAgICAgICAgRGF0
ZS5jcmVhdGVQYXJzZXIoZm9ybWF0KTsKKyAgICB9CisgICAgdmFyIGZ1bmMgPSBEYXRlLnBhcnNl
RnVuY3Rpb25zW2Zvcm1hdF07CisgICAgcmV0dXJuIERhdGVbZnVuY10oaW5wdXQpOworfQorCitE
YXRlLmNyZWF0ZVBhcnNlciA9IGZ1bmN0aW9uKGZvcm1hdCkgeworICAgIHZhciBmdW5jTmFtZSA9
ICJwYXJzZSIgKyBEYXRlLnBhcnNlRnVuY3Rpb25zLmNvdW50Kys7CisgICAgdmFyIHJlZ2V4TnVt
ID0gRGF0ZS5wYXJzZVJlZ2V4ZXMubGVuZ3RoOworICAgIHZhciBjdXJyZW50R3JvdXAgPSAxOwor
ICAgIERhdGUucGFyc2VGdW5jdGlvbnNbZm9ybWF0XSA9IGZ1bmNOYW1lOworCisgICAgdmFyIGNv
ZGUgPSAiRGF0ZS4iICsgZnVuY05hbWUgKyAiID0gZnVuY3Rpb24oaW5wdXQpe1xuIgorICAgICAg
ICArICJ2YXIgeSA9IC0xLCBtID0gLTEsIGQgPSAtMSwgaCA9IC0xLCBpID0gLTEsIHMgPSAtMTtc
biIKKyAgICAgICAgKyAidmFyIGQgPSBuZXcgRGF0ZSgpO1xuIgorICAgICAgICArICJ5ID0gZC5n
ZXRGdWxsWWVhcigpO1xuIgorICAgICAgICArICJtID0gZC5nZXRNb250aCgpO1xuIgorICAgICAg
ICArICJkID0gZC5nZXREYXRlKCk7XG4iCisgICAgICAgICsgInZhciByZXN1bHRzID0gaW5wdXQu
bWF0Y2goRGF0ZS5wYXJzZVJlZ2V4ZXNbIiArIHJlZ2V4TnVtICsgIl0pO1xuIgorICAgICAgICAr
ICJpZiAocmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aCA+IDApIHsiCisgICAgdmFyIHJlZ2V4ID0g
IiI7CisKKyAgICB2YXIgc3BlY2lhbCA9IGZhbHNlOworICAgIHZhciBjaCA9ICcnOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZm9ybWF0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGNoID0gZm9y
bWF0LmNoYXJBdChpKTsKKyAgICAgICAgaWYgKCFzcGVjaWFsICYmIGNoID09ICJcXCIpIHsKKyAg
ICAgICAgICAgIHNwZWNpYWwgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNw
ZWNpYWwpIHsKKyAgICAgICAgICAgIHNwZWNpYWwgPSBmYWxzZTsKKyAgICAgICAgICAgIHJlZ2V4
ICs9IFN0cmluZy5lc2NhcGUoY2gpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgb2JqID0gRGF0ZS5mb3JtYXRDb2RlVG9SZWdleChjaCwgY3VycmVudEdyb3VwKTsKKyAg
ICAgICAgICAgIGN1cnJlbnRHcm91cCArPSBvYmouZzsKKyAgICAgICAgICAgIHJlZ2V4ICs9IG9i
ai5zOworICAgICAgICAgICAgaWYgKG9iai5nICYmIG9iai5jKSB7CisgICAgICAgICAgICAgICAg
Y29kZSArPSBvYmouYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGNv
ZGUgKz0gImlmICh5ID4gMCAmJiBtID49IDAgJiYgZCA+IDAgJiYgaCA+PSAwICYmIGkgPj0gMCAm
JiBzID49IDApXG4iCisgICAgICAgICsgIntyZXR1cm4gbmV3IERhdGUoeSwgbSwgZCwgaCwgaSwg
cyk7fVxuIgorICAgICAgICArICJlbHNlIGlmICh5ID4gMCAmJiBtID49IDAgJiYgZCA+IDAgJiYg
aCA+PSAwICYmIGkgPj0gMClcbiIKKyAgICAgICAgKyAie3JldHVybiBuZXcgRGF0ZSh5LCBtLCBk
LCBoLCBpKTt9XG4iCisgICAgICAgICsgImVsc2UgaWYgKHkgPiAwICYmIG0gPj0gMCAmJiBkID4g
MCAmJiBoID49IDApXG4iCisgICAgICAgICsgIntyZXR1cm4gbmV3IERhdGUoeSwgbSwgZCwgaCk7
fVxuIgorICAgICAgICArICJlbHNlIGlmICh5ID4gMCAmJiBtID49IDAgJiYgZCA+IDApXG4iCisg
ICAgICAgICsgIntyZXR1cm4gbmV3IERhdGUoeSwgbSwgZCk7fVxuIgorICAgICAgICArICJlbHNl
IGlmICh5ID4gMCAmJiBtID49IDApXG4iCisgICAgICAgICsgIntyZXR1cm4gbmV3IERhdGUoeSwg
bSk7fVxuIgorICAgICAgICArICJlbHNlIGlmICh5ID4gMClcbiIKKyAgICAgICAgKyAie3JldHVy
biBuZXcgRGF0ZSh5KTt9XG4iCisgICAgICAgICsgIn1yZXR1cm4gbnVsbDt9IjsKKworICAgIERh
dGUucGFyc2VSZWdleGVzW3JlZ2V4TnVtXSA9IG5ldyBSZWdFeHAoIl4iICsgcmVnZXggKyAiJCIp
OworICAgIGV2YWwoY29kZSk7Cit9CisKK0RhdGUuZm9ybWF0Q29kZVRvUmVnZXggPSBmdW5jdGlv
bihjaGFyYWN0ZXIsIGN1cnJlbnRHcm91cCkgeworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7Cisg
ICAgY2FzZSAiRCI6CisgICAgICAgIHJldHVybiB7ZzowLAorICAgICAgICBjOm51bGwsCisgICAg
ICAgIHM6Iig/OlN1bnxNb258VHVlfFdlZHxUaHV8RnJpfFNhdCkifTsKKyAgICBjYXNlICJqIjoK
KyAgICBjYXNlICJkIjoKKyAgICAgICAgcmV0dXJuIHtnOjEsCisgICAgICAgICAgICBjOiJkID0g
cGFyc2VJbnQocmVzdWx0c1siICsgY3VycmVudEdyb3VwICsgIl0sIDEwKTtcbiIsCisgICAgICAg
ICAgICBzOiIoXFxkezEsMn0pIn07CisgICAgY2FzZSAibCI6CisgICAgICAgIHJldHVybiB7Zzow
LAorICAgICAgICAgICAgYzpudWxsLAorICAgICAgICAgICAgczoiKD86IiArIERhdGUuZGF5TmFt
ZXMuam9pbigifCIpICsgIikifTsKKyAgICBjYXNlICJTIjoKKyAgICAgICAgcmV0dXJuIHtnOjAs
CisgICAgICAgICAgICBjOm51bGwsCisgICAgICAgICAgICBzOiIoPzpzdHxuZHxyZHx0aCkifTsK
KyAgICBjYXNlICJ3IjoKKyAgICAgICAgcmV0dXJuIHtnOjAsCisgICAgICAgICAgICBjOm51bGws
CisgICAgICAgICAgICBzOiJcXGQifTsKKyAgICBjYXNlICJ6IjoKKyAgICAgICAgcmV0dXJuIHtn
OjAsCisgICAgICAgICAgICBjOm51bGwsCisgICAgICAgICAgICBzOiIoPzpcXGR7MSwzfSkifTsK
KyAgICBjYXNlICJXIjoKKyAgICAgICAgcmV0dXJuIHtnOjAsCisgICAgICAgICAgICBjOm51bGws
CisgICAgICAgICAgICBzOiIoPzpcXGR7Mn0pIn07CisgICAgY2FzZSAiRiI6CisgICAgICAgIHJl
dHVybiB7ZzoxLAorICAgICAgICAgICAgYzoibSA9IHBhcnNlSW50KERhdGUubW9udGhOdW1iZXJz
W3Jlc3VsdHNbIiArIGN1cnJlbnRHcm91cCArICJdLnN1YnN0cmluZygwLCAzKV0sIDEwKTtcbiIs
CisgICAgICAgICAgICBzOiIoIiArIERhdGUubW9udGhOYW1lcy5qb2luKCJ8IikgKyAiKSJ9Owor
ICAgIGNhc2UgIk0iOgorICAgICAgICByZXR1cm4ge2c6MSwKKyAgICAgICAgICAgIGM6Im0gPSBw
YXJzZUludChEYXRlLm1vbnRoTnVtYmVyc1tyZXN1bHRzWyIgKyBjdXJyZW50R3JvdXAgKyAiXV0s
IDEwKTtcbiIsCisgICAgICAgICAgICBzOiIoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1
Z3xTZXB8T2N0fE5vdnxEZWMpIn07CisgICAgY2FzZSAibiI6CisgICAgY2FzZSAibSI6CisgICAg
ICAgIHJldHVybiB7ZzoxLAorICAgICAgICAgICAgYzoibSA9IHBhcnNlSW50KHJlc3VsdHNbIiAr
IGN1cnJlbnRHcm91cCArICJdLCAxMCkgLSAxO1xuIiwKKyAgICAgICAgICAgIHM6IihcXGR7MSwy
fSkifTsKKyAgICBjYXNlICJ0IjoKKyAgICAgICAgcmV0dXJuIHtnOjAsCisgICAgICAgICAgICBj
Om51bGwsCisgICAgICAgICAgICBzOiJcXGR7MSwyfSJ9OworICAgIGNhc2UgIkwiOgorICAgICAg
ICByZXR1cm4ge2c6MCwKKyAgICAgICAgICAgIGM6bnVsbCwKKyAgICAgICAgICAgIHM6Iig/OjF8
MCkifTsKKyAgICBjYXNlICJZIjoKKyAgICAgICAgcmV0dXJuIHtnOjEsCisgICAgICAgICAgICBj
OiJ5ID0gcGFyc2VJbnQocmVzdWx0c1siICsgY3VycmVudEdyb3VwICsgIl0sIDEwKTtcbiIsCisg
ICAgICAgICAgICBzOiIoXFxkezR9KSJ9OworICAgIGNhc2UgInkiOgorICAgICAgICByZXR1cm4g
e2c6MSwKKyAgICAgICAgICAgIGM6InZhciB0eSA9IHBhcnNlSW50KHJlc3VsdHNbIiArIGN1cnJl
bnRHcm91cCArICJdLCAxMCk7XG4iCisgICAgICAgICAgICAgICAgKyAieSA9IHR5ID4gRGF0ZS55
MmtZZWFyID8gMTkwMCArIHR5IDogMjAwMCArIHR5O1xuIiwKKyAgICAgICAgICAgIHM6IihcXGR7
MSwyfSkifTsKKyAgICBjYXNlICJhIjoKKyAgICAgICAgcmV0dXJuIHtnOjEsCisgICAgICAgICAg
ICBjOiJpZiAocmVzdWx0c1siICsgY3VycmVudEdyb3VwICsgIl0gPT0gJ2FtJykge1xuIgorICAg
ICAgICAgICAgICAgICsgImlmIChoID09IDEyKSB7IGggPSAwOyB9XG4iCisgICAgICAgICAgICAg
ICAgKyAifSBlbHNlIHsgaWYgKGggPCAxMikgeyBoICs9IDEyOyB9fSIsCisgICAgICAgICAgICBz
OiIoYW18cG0pIn07CisgICAgY2FzZSAiQSI6CisgICAgICAgIHJldHVybiB7ZzoxLAorICAgICAg
ICAgICAgYzoiaWYgKHJlc3VsdHNbIiArIGN1cnJlbnRHcm91cCArICJdID09ICdBTScpIHtcbiIK
KyAgICAgICAgICAgICAgICArICJpZiAoaCA9PSAxMikgeyBoID0gMDsgfVxuIgorICAgICAgICAg
ICAgICAgICsgIn0gZWxzZSB7IGlmIChoIDwgMTIpIHsgaCArPSAxMjsgfX0iLAorICAgICAgICAg
ICAgczoiKEFNfFBNKSJ9OworICAgIGNhc2UgImciOgorICAgIGNhc2UgIkciOgorICAgIGNhc2Ug
ImgiOgorICAgIGNhc2UgIkgiOgorICAgICAgICByZXR1cm4ge2c6MSwKKyAgICAgICAgICAgIGM6
ImggPSBwYXJzZUludChyZXN1bHRzWyIgKyBjdXJyZW50R3JvdXAgKyAiXSwgMTApO1xuIiwKKyAg
ICAgICAgICAgIHM6IihcXGR7MSwyfSkifTsKKyAgICBjYXNlICJpIjoKKyAgICAgICAgcmV0dXJu
IHtnOjEsCisgICAgICAgICAgICBjOiJpID0gcGFyc2VJbnQocmVzdWx0c1siICsgY3VycmVudEdy
b3VwICsgIl0sIDEwKTtcbiIsCisgICAgICAgICAgICBzOiIoXFxkezJ9KSJ9OworICAgIGNhc2Ug
InMiOgorICAgICAgICByZXR1cm4ge2c6MSwKKyAgICAgICAgICAgIGM6InMgPSBwYXJzZUludChy
ZXN1bHRzWyIgKyBjdXJyZW50R3JvdXAgKyAiXSwgMTApO1xuIiwKKyAgICAgICAgICAgIHM6Iihc
XGR7Mn0pIn07CisgICAgY2FzZSAiTyI6CisgICAgICAgIHJldHVybiB7ZzowLAorICAgICAgICAg
ICAgYzpudWxsLAorICAgICAgICAgICAgczoiWystXVxcZHs0fSJ9OworICAgIGNhc2UgIlQiOgor
ICAgICAgICByZXR1cm4ge2c6MCwKKyAgICAgICAgICAgIGM6bnVsbCwKKyAgICAgICAgICAgIHM6
IltBLVpdezN9In07CisgICAgY2FzZSAiWiI6CisgICAgICAgIHJldHVybiB7ZzowLAorICAgICAg
ICAgICAgYzpudWxsLAorICAgICAgICAgICAgczoiWystXVxcZHsxLDV9In07CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIHtnOjAsCisgICAgICAgICAgICBjOm51bGwsCisgICAgICAgICAg
ICBzOlN0cmluZy5lc2NhcGUoY2hhcmFjdGVyKX07CisgICAgfQorfQorCitEYXRlLnByb3RvdHlw
ZS5nZXRUaW1lem9uZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCku
cmVwbGFjZSgKKyAgICAgICAgL14uKj8gKFtBLVpdezN9KSBbMC05XXs0fS4qJC8sICIkMSIpLnJl
cGxhY2UoCisgICAgICAgIC9eLio/XCgoW0EtWl0pW2Etel0rIChbQS1aXSlbYS16XSsgKFtBLVpd
KVthLXpdK1wpJC8sICIkMSQyJDMiKTsKK30KKworRGF0ZS5wcm90b3R5cGUuZ2V0R01UT2Zmc2V0
ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuICh0aGlzLmdldFRpbWV6b25lT2Zmc2V0KCkgPiAw
ID8gIi0iIDogIisiKQorICAgICAgICArIFN0cmluZy5sZWZ0UGFkKE1hdGguZmxvb3IodGhpcy5n
ZXRUaW1lem9uZU9mZnNldCgpIC8gNjApLCAyLCAiMCIpCisgICAgICAgICsgU3RyaW5nLmxlZnRQ
YWQodGhpcy5nZXRUaW1lem9uZU9mZnNldCgpICUgNjAsIDIsICIwIik7Cit9CisKK0RhdGUucHJv
dG90eXBlLmdldERheU9mWWVhciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBudW0gPSAwOworICAg
IERhdGUuZGF5c0luTW9udGhbMV0gPSB0aGlzLmlzTGVhcFllYXIoKSA/IDI5IDogMjg7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmdldE1vbnRoKCk7ICsraSkgeworICAgICAgICBudW0g
Kz0gRGF0ZS5kYXlzSW5Nb250aFtpXTsKKyAgICB9CisgICAgcmV0dXJuIG51bSArIHRoaXMuZ2V0
RGF0ZSgpIC0gMTsKK30KKworRGF0ZS5wcm90b3R5cGUuZ2V0V2Vla09mWWVhciA9IGZ1bmN0aW9u
KCkgeworICAgIC8vIFNraXAgdG8gVGh1cnNkYXkgb2YgdGhpcyB3ZWVrCisgICAgdmFyIG5vdyA9
IHRoaXMuZ2V0RGF5T2ZZZWFyKCkgKyAoNCAtIHRoaXMuZ2V0RGF5KCkpOworICAgIC8vIEZpbmQg
dGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyCisgICAgdmFyIGphbjEgPSBuZXcgRGF0ZSh0
aGlzLmdldEZ1bGxZZWFyKCksIDAsIDEpOworICAgIHZhciB0aGVuID0gKDcgLSBqYW4xLmdldERh
eSgpICsgNCk7CisgICAgZG9jdW1lbnQud3JpdGUodGhlbik7CisgICAgcmV0dXJuIFN0cmluZy5s
ZWZ0UGFkKCgobm93IC0gdGhlbikgLyA3KSArIDEsIDIsICIwIik7Cit9CisKK0RhdGUucHJvdG90
eXBlLmlzTGVhcFllYXIgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgeWVhciA9IHRoaXMuZ2V0RnVs
bFllYXIoKTsKKyAgICByZXR1cm4gKCh5ZWFyICYgMykgPT0gMCAmJiAoeWVhciAlIDEwMCB8fCAo
eWVhciAlIDQwMCA9PSAwICYmIHllYXIpKSk7Cit9CisKK0RhdGUucHJvdG90eXBlLmdldEZpcnN0
RGF5T2ZNb250aCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBkYXkgPSAodGhpcy5nZXREYXkoKSAt
ICh0aGlzLmdldERhdGUoKSAtIDEpKSAlIDc7CisgICAgcmV0dXJuIChkYXkgPCAwKSA/IChkYXkg
KyA3KSA6IGRheTsKK30KKworRGF0ZS5wcm90b3R5cGUuZ2V0TGFzdERheU9mTW9udGggPSBmdW5j
dGlvbigpIHsKKyAgICB2YXIgZGF5ID0gKHRoaXMuZ2V0RGF5KCkgKyAoRGF0ZS5kYXlzSW5Nb250
aFt0aGlzLmdldE1vbnRoKCldIC0gdGhpcy5nZXREYXRlKCkpKSAlIDc7CisgICAgcmV0dXJuIChk
YXkgPCAwKSA/IChkYXkgKyA3KSA6IGRheTsKK30KKworRGF0ZS5wcm90b3R5cGUuZ2V0RGF5c0lu
TW9udGggPSBmdW5jdGlvbigpIHsKKyAgICBEYXRlLmRheXNJbk1vbnRoWzFdID0gdGhpcy5pc0xl
YXBZZWFyKCkgPyAyOSA6IDI4OworICAgIHJldHVybiBEYXRlLmRheXNJbk1vbnRoW3RoaXMuZ2V0
TW9udGgoKV07Cit9CisKK0RhdGUucHJvdG90eXBlLmdldFN1ZmZpeCA9IGZ1bmN0aW9uKCkgewor
ICAgIHN3aXRjaCAodGhpcy5nZXREYXRlKCkpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICBj
YXNlIDIxOgorICAgICAgICBjYXNlIDMxOgorICAgICAgICAgICAgcmV0dXJuICJzdCI7CisgICAg
ICAgIGNhc2UgMjoKKyAgICAgICAgY2FzZSAyMjoKKyAgICAgICAgICAgIHJldHVybiAibmQiOwor
ICAgICAgICBjYXNlIDM6CisgICAgICAgIGNhc2UgMjM6CisgICAgICAgICAgICByZXR1cm4gInJk
IjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAidGgiOworICAgIH0KK30K
KworU3RyaW5nLmVzY2FwZSA9IGZ1bmN0aW9uKHN0cmluZykgeworICAgIHJldHVybiBzdHJpbmcu
cmVwbGFjZSgvKCd8XFwpL2csICJcXCQxIik7Cit9CisKK1N0cmluZy5sZWZ0UGFkID0gZnVuY3Rp
b24gKHZhbCwgc2l6ZSwgY2gpIHsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZyh2YWwpOwor
ICAgIGlmIChjaCA9PSBudWxsKSB7CisgICAgICAgIGNoID0gIiAiOworICAgIH0KKyAgICB3aGls
ZSAocmVzdWx0Lmxlbmd0aCA8IHNpemUpIHsKKyAgICAgICAgcmVzdWx0ID0gY2ggKyByZXN1bHQ7
CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0RhdGUuZGF5c0luTW9udGggPSBbMzEs
MjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdOworRGF0ZS5tb250aE5hbWVzID0KKyAg
IFsiSmFudWFyeSIsCisgICAgIkZlYnJ1YXJ5IiwKKyAgICAiTWFyY2giLAorICAgICJBcHJpbCIs
CisgICAgIk1heSIsCisgICAgIkp1bmUiLAorICAgICJKdWx5IiwKKyAgICAiQXVndXN0IiwKKyAg
ICAiU2VwdGVtYmVyIiwKKyAgICAiT2N0b2JlciIsCisgICAgIk5vdmVtYmVyIiwKKyAgICAiRGVj
ZW1iZXIiXTsKK0RhdGUuZGF5TmFtZXMgPQorICAgWyJTdW5kYXkiLAorICAgICJNb25kYXkiLAor
ICAgICJUdWVzZGF5IiwKKyAgICAiV2VkbmVzZGF5IiwKKyAgICAiVGh1cnNkYXkiLAorICAgICJG
cmlkYXkiLAorICAgICJTYXR1cmRheSJdOworRGF0ZS55MmtZZWFyID0gNTA7CitEYXRlLm1vbnRo
TnVtYmVycyA9IHsKKyAgICBKYW46MCwKKyAgICBGZWI6MSwKKyAgICBNYXI6MiwKKyAgICBBcHI6
MywKKyAgICBNYXk6NCwKKyAgICBKdW46NSwKKyAgICBKdWw6NiwKKyAgICBBdWc6NywKKyAgICBT
ZXA6OCwKKyAgICBPY3Q6OSwKKyAgICBOb3Y6MTAsCisgICAgRGVjOjExfTsKK0RhdGUucGF0dGVy
bnMgPSB7CisgICAgSVNPODYwMUxvbmdQYXR0ZXJuOiJZLW0tZCBIOmk6cyIsCisgICAgSVNPODYw
MVNob3J0UGF0dGVybjoiWS1tLWQiLAorICAgIFNob3J0RGF0ZVBhdHRlcm46ICJuL2ovWSIsCisg
ICAgTG9uZ0RhdGVQYXR0ZXJuOiAibCwgRiBkLCBZIiwKKyAgICBGdWxsRGF0ZVRpbWVQYXR0ZXJu
OiAibCwgRiBkLCBZIGc6aTpzIEEiLAorICAgIE1vbnRoRGF5UGF0dGVybjogIkYgZCIsCisgICAg
U2hvcnRUaW1lUGF0dGVybjogImc6aSBBIiwKKyAgICBMb25nVGltZVBhdHRlcm46ICJnOmk6cyBB
IiwKKyAgICBTb3J0YWJsZURhdGVUaW1lUGF0dGVybjogIlktbS1kXFxUSDppOnMiLAorICAgIFVu
aXZlcnNhbFNvcnRhYmxlRGF0ZVRpbWVQYXR0ZXJuOiAiWS1tLWQgSDppOnNPIiwKKyAgICBZZWFy
TW9udGhQYXR0ZXJuOiAiRiwgWSJ9OworCit2YXIgZGF0ZSA9IG5ldyBEYXRlKCIxLzEvMjAwNyAx
OjExOjExIik7CisKK2ZvciAoaSA9IDA7IGkgPCA0MDAwOyArK2kpIHsKKyAgICB2YXIgc2hvcnRG
b3JtYXQgPSBkYXRlLmRhdGVGb3JtYXQoIlktbS1kIik7CisgICAgdmFyIGxvbmdGb3JtYXQgPSBk
YXRlLmRhdGVGb3JtYXQoImwsIEYgZCwgWSBnOmk6cyBBIik7CisgICAgZGF0ZS5zZXRUaW1lKGRh
dGUuZ2V0VGltZSgpICsgODQyNjY5NTYpOworfQorCisvLyBGSVhNRTogRmluZCBhIHdheSB0byB2
YWxpZGF0ZSB0aGlzIHRlc3QuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE0ODQ5CisKK30gY2F0Y2ggKGUpIHsKKyAgICBwcmludCgiSlNDIEVYQ0VQVElPTiBG
VVpaOiBDYXVnaHQgZXhjZXB0aW9uOiAiICsgZSk7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXhjZXB0aW9uRnV6ei9lYXJsZXktYm95ZXIuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2V4Y2VwdGlvbkZ1enovZWFybGV5LWJveWVyLmpz
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2V4Y2VwdGlvbkZ1
enovZWFybGV5LWJveWVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDY4OSBAQAordHJ5
IHsKKy8vIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBzY2hlbWUyanMs
IGV4Y2VwdCBmb3IgdGhlCisvLyBiZW5jaG1hcmsgaGFybmVzcyBjb2RlIGF0IHRoZSBiZWdpbm5p
bmcgYW5kIGVuZCBvZiB0aGUgZmlsZS4KKworLyoqKioqKioqKioqKiogR0VORVJBVEVEIEZJTEUg
LSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiogR0VORVJBVEVEIEZJ
TEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiogR0VORVJBVEVE
IEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiogR0VORVJB
VEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiogR0VO
RVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiog
R0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioq
KiogR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioq
KioqKiogR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoKKyAq
IFRvIHVzZSB3cml0ZS9wcmludHMvLi4uIHRoZSBkZWZhdWx0LW91dHB1dCBwb3J0IGhhcyB0byBi
ZSBzZXQgZmlyc3QuCisgKiBTaW1wbHkgc2V0dGluZyBTQ19ERUZBVUxUX09VVCBhbmQgU0NfRVJS
T1JfT1VUIHRvIHRoZSBkZXNpcmVkIHZhbHVlcworICogc2hvdWxkIGRvIHRoZSB0cmljay4KKyAq
IEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSB0aGUgc3RkLW91dCBhbmQgZXJyb3ItcG9ydCBhcmUg
cmVkaXJlY3RlZCB0bworICogYSBESVYuCitmdW5jdGlvbiBpbml0UnVudGltZSgpIHsKKyAgICBm
dW5jdGlvbiBlc2NhcGVIVE1MKHMpIHsKKwl2YXIgdG1wID0gczsKKwl0bXAgPSB0bXAucmVwbGFj
ZSgvJi9nLCAiJmFtcDsiKTsKKwl0bXAgPSB0bXAucmVwbGFjZSgvPC9nLCAiJmx0OyIpOworCXRt
cCA9IHRtcC5yZXBsYWNlKC8+L2csICImZ3Q7Iik7CisJdG1wID0gdG1wLnJlcGxhY2UoLyAvZywg
IiZuYnNwOyIpOworCXRtcCA9IHRtcC5yZXBsYWNlKC9cbi9nLCAiPGJyIC8+Iik7CisJdG1wID0g
dG1wLnJlcGxhY2UoL1x0L2csICImbmJzcDsmbmJzcDsmbmJzcDsmbmJzcCIpOworCXJldHVybiB0
bXA7CisJCisgICAgfQorCisgICAgZG9jdW1lbnQud3JpdGUoIjxkaXYgaWQ9J3N0ZG91dCc+PC9k
aXY+Iik7CisgICAgU0NfREVGQVVMVF9PVVQgPSBuZXcgc2NfR2VuZXJpY091dHB1dFBvcnQoCisJ
ZnVuY3Rpb24ocykgeworCSAgICB2YXIgc3Rkb3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3N0ZG91dCcpOworCSAgICBzdGRvdXQuaW5uZXJIVE1MID0gc3Rkb3V0LmlubmVySFRNTCArIGVz
Y2FwZUhUTUwocyk7CisJfSk7CisgICAgU0NfRVJST1JfT1VUID0gU0NfREVGQVVMVF9PVVQ7Cit9
CisqLworCisKK2Z1bmN0aW9uIHNjX3ByaW50X2RlYnVnKCkgeworICAgIHNjX3ByaW50LmFwcGx5
KG51bGwsIGFyZ3VtZW50cyk7Cit9CisvKioqIE1FVEEgKChleHBvcnQgKmpzKikpICovCit2YXIg
c2NfSlNfR0xPQkFMUyA9IHRoaXM7CisKK3ZhciBfX3NjX0xJTkU9LTE7Cit2YXIgX19zY19GSUxF
PSIiOworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYWxlcnQoKSB7
CisgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDsKKyAgIHZhciBzID0gIiI7CisgICB2YXIg
aTsKKworICAgZm9yKCBpID0gMDsgaSA8IGxlbjsgaSsrICkgeworICAgICAgIHMgKz0gc2NfdG9E
aXNwbGF5U3RyaW5nKGFyZ3VtZW50c1sgaSBdKTsKKyAgIH0KKworICAgcmV0dXJuIGFsZXJ0KCBz
ICk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY190eXBlb2Yo
IHggKSB7CisgICByZXR1cm4gdHlwZW9mIHg7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkp
ICovCitmdW5jdGlvbiBzY19lcnJvcigpIHsKKyAgICB2YXIgYSA9IFtzY19qc3N0cmluZzJzeW1i
b2woIiplcnJvcioiKV07CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3Ro
OyBpKyspIHsKKwlhW2krMV0gPSBhcmd1bWVudHNbaV07CisgICAgfQorICAgIHRocm93IGE7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwcmVmaXgg
InRocm93ICIpKSkKKyovCitmdW5jdGlvbiBzY19yYWlzZShvYmopIHsKKyAgICB0aHJvdyBvYmo7
Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCB3aXRoLWhhbmRsZXItbGFtYmRhKSkgKi8KK2Z1bmN0
aW9uIHNjX3dpdGhIYW5kbGVyTGFtYmRhKGhhbmRsZXIsIGJvZHkpIHsKKyAgICB0cnkgeworCXJl
dHVybiBib2R5KCk7CisgICAgfSBjYXRjaChlKSB7CisJaWYgKCFlLl9pbnRlcm5hbEV4Y2VwdGlv
bikKKwkgICAgcmV0dXJuIGhhbmRsZXIoZSk7CisJZWxzZQorCSAgICB0aHJvdyBlOworICAgIH0K
K30KKwordmFyIHNjX3Byb3BlcnRpZXMgPSBuZXcgT2JqZWN0KCk7CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19wdXRwcm9wQmFuZyhzeW0sIGtleSwgdmFsKSB7Cisg
ICAgdmFyIGh0ID0gc2NfcHJvcGVydGllc1tzeW1dOworICAgIGlmICghaHQpIHsKKwlodCA9IG5l
dyBPYmplY3QoKTsKKwlzY19wcm9wZXJ0aWVzW3N5bV0gPSBodDsKKyAgICB9CisgICAgaHRba2V5
XSA9IHZhbDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2dl
dHByb3Aoc3ltLCBrZXkpIHsKKyAgICB2YXIgaHQgPSBzY19wcm9wZXJ0aWVzW3N5bV07CisgICAg
aWYgKGh0KSB7CisJaWYgKGtleSBpbiBodCkKKwkgICAgcmV0dXJuIGh0W2tleV07CisJZWxzZQor
CSAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlCisJcmV0dXJuIGZhbHNlOworfQorCisvKioq
IE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcmVtcHJvcEJhbmcoc3ltLCBrZXkp
IHsKKyAgICB2YXIgaHQgPSBzY19wcm9wZXJ0aWVzW3N5bV07CisgICAgaWYgKGh0KQorCWRlbGV0
ZSBodFtrZXldOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nf
YW55MlN0cmluZyhvKSB7CisgICAgcmV0dXJuIGpzc3RyaW5nMnN0cmluZyhzY190b0Rpc3BsYXlT
dHJpbmcobykpOworfSAgICAKKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAo
cGVlcGhvbGUgKGluZml4IDIgMiAiPT09IikpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8K
K2Z1bmN0aW9uIHNjX2lzRXF2KG8xLCBvMikgeworICAgIHJldHVybiAobzEgPT09IG8yKTsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDIg
MiAiPT09IikpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzRXEo
bzEsIG8yKSB7CisgICAgcmV0dXJuIChvMSA9PT0gbzIpOworfQorCisvKioqIE1FVEEgKChleHBv
cnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzTnVtYmVy
KG4pIHsKKyAgICByZXR1cm4gKHR5cGVvZiBuID09PSAibnVtYmVyIik7Cit9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2Nf
aXNDb21wbGV4KG4pIHsKKyAgICByZXR1cm4gc2NfaXNOdW1iZXIobik7Cit9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2Nf
aXNSZWFsKG4pIHsKKyAgICByZXR1cm4gc2NfaXNOdW1iZXIobik7Cit9CisKKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNS
YXRpb25hbChuKSB7CisgICAgcmV0dXJuIHNjX2lzUmVhbChuKTsKK30KKworLyoqKiBNRVRBICgo
ZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKSkKKyovCitmdW5jdGlvbiBzY19pc0lu
dGVnZXIobikgeworICAgIHJldHVybiAocGFyc2VJbnQobikgPT09IG4pOworfQorCisvKioqIE1F
VEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVw
aG9sZSAocG9zdGZpeCAiLCBmYWxzZSIpKSkKKyovCisvLyB3ZSBkb24ndCBoYXZlIGV4YWN0IG51
bWJlcnMuLi4KK2Z1bmN0aW9uIHNjX2lzRXhhY3QobikgeworICAgIHJldHVybiBmYWxzZTsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXgg
IiwgdHJ1ZSIpKQorCSAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzSW5leGFjdChu
KSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCA9ID1meCA9Zmwp
CisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaW5maXggMiAy
ICI9PT0iKSkpCisqLworZnVuY3Rpb24gc2NfZXF1YWwoeCkgeworICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorCWlmICh4ICE9PSBhcmd1bWVudHNbaV0pCisJ
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyoqKiBNRVRBICgoZXhw
b3J0IDwgPGZ4IDxmbCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChpbmZpeCAyIDIgIjwiKSkpCisqLworZnVuY3Rpb24gc2NfbGVzcyh4KSB7CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKwlpZiAoeCA+PSBhcmd1
bWVudHNbaV0pCisJICAgIHJldHVybiBmYWxzZTsKKwl4ID0gYXJndW1lbnRzW2ldOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ID4gPmZ4ID5mbCkKKyAg
ICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIj4i
KSkpCisqLworZnVuY3Rpb24gc2NfZ3JlYXRlcih4LCB5KSB7CisgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKwlpZiAoeCA8PSBhcmd1bWVudHNbaV0pCisJ
ICAgIHJldHVybiBmYWxzZTsKKwl4ID0gYXJndW1lbnRzW2ldOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IDw9IDw9ZnggPD1mbCkKKyAgICAgICAgICAg
KHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIjw9IikpKQorKi8K
K2Z1bmN0aW9uIHNjX2xlc3NFcXVhbCh4LCB5KSB7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBh
cmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKwlpZiAoeCA+IGFyZ3VtZW50c1tpXSkKKwkgICAgcmV0
dXJuIGZhbHNlOworCXggPSBhcmd1bWVudHNbaV07CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCisvKioqIE1FVEEgKChleHBvcnQgPj0gPj1mbCA+PWZ4KQorICAgICAgICAgICAodHlwZSBi
b29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDIgMiAiPj0iKSkpCisqLworZnVuY3Rp
b24gc2NfZ3JlYXRlckVxdWFsKHgsIHkpIHsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3Vt
ZW50cy5sZW5ndGg7IGkrKykgeworCWlmICh4IDwgYXJndW1lbnRzW2ldKQorCSAgICByZXR1cm4g
ZmFsc2U7CisJeCA9IGFyZ3VtZW50c1tpXTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChwb3N0Zml4ICI9PT0gMCIpKSkKKyovCitmdW5jdGlvbiBzY19pc1plcm8o
eCkgeworICAgIHJldHVybiAoeCA9PT0gMCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkK
KyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICI+
IDAiKSkpCisqLworZnVuY3Rpb24gc2NfaXNQb3NpdGl2ZSh4KSB7CisgICAgcmV0dXJuICh4ID4g
MCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkK
KyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICI8IDAiKSkpCisqLworZnVuY3Rpb24gc2Nf
aXNOZWdhdGl2ZSh4KSB7CisgICAgcmV0dXJuICh4IDwgMCk7Cit9CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChw
b3N0Zml4ICIlMj09PTEiKSkpCisqLworZnVuY3Rpb24gc2NfaXNPZGQoeCkgeworICAgIHJldHVy
biAoeCAlIDIgPT09IDEpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAg
ICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiJTI9PT0wIikpKQor
Ki8KK2Z1bmN0aW9uIHNjX2lzRXZlbih4KSB7CisgICAgcmV0dXJuICh4ICUgMiA9PT0gMCk7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfbWF4ID0gTWF0aC5tYXg7Cisv
KioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX21pbiA9IE1hdGgubWluOworCisvKioq
IE1FVEEgKChleHBvcnQgKyArZnggK2ZsKQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDAg
I2YgIisiICIwIikpKQorKi8KK2Z1bmN0aW9uIHNjX3BsdXMoKSB7CisgICAgdmFyIHN1bSA9IDA7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJc3VtICs9
IGFyZ3VtZW50c1tpXTsKKyAgICByZXR1cm4gc3VtOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
KiAqZnggKmZsKQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDAgI2YgIioiICIxIikpKQor
Ki8KK2Z1bmN0aW9uIHNjX211bHRpKCkgeworICAgIHZhciBwcm9kdWN0ID0gMTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKwlwcm9kdWN0ICo9IGFyZ3Vt
ZW50c1tpXTsKKyAgICByZXR1cm4gcHJvZHVjdDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IC0g
LWZ4IC1mbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChtaW51cykpKQorKi8KK2Z1bmN0aW9uIHNj
X21pbnVzKHgpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkKKwlyZXR1cm4gLXg7
CisgICAgZWxzZSB7CisJdmFyIHJlcyA9IHg7CisJZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVu
dHMubGVuZ3RoOyBpKyspCisJICAgIHJlcyAtPSBhcmd1bWVudHNbaV07CisJcmV0dXJuIHJlczsK
KyAgICB9Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAvIC9mbCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChkaXYpKSkKKyovCitmdW5jdGlvbiBzY19kaXYoeCkgeworICAgIGlmIChhcmd1bWVudHMu
bGVuZ3RoID09PSAxKQorCXJldHVybiAxL3g7CisgICAgZWxzZSB7CisJdmFyIHJlcyA9IHg7CisJ
Zm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJICAgIHJlcyAvPSBh
cmd1bWVudHNbaV07CisJcmV0dXJuIHJlczsKKyAgICB9Cit9CisKKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkpICovCit2YXIgc2NfYWJzID0gTWF0aC5hYnM7CisKKy8qKiogTUVUQSAoKGV4cG9ydCBx
dW90aWVudCAvZngpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyICJwYXJzZUludCgiIHgg
Ii8iIHkgIikiKSkpCisqLworZnVuY3Rpb24gc2NfcXVvdGllbnQoeCwgeSkgeworICAgIHJldHVy
biBwYXJzZUludCh4IC8geSk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIiUiKSkpCisqLworZnVuY3Rpb24gc2NfcmVtYWluZGVy
KHgsIHkpIHsKKyAgICByZXR1cm4geCAlIHk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkK
KyAgICAgICAgICAgKHBlZXBob2xlIChtb2R1bG8pKSkKKyovCitmdW5jdGlvbiBzY19tb2R1bG8o
eCwgeSkgeworICAgIHZhciByZW1haW5kZXIgPSB4ICUgeTsKKyAgICAvLyBpZiB0aGV5IGRvbid0
IGhhdmUgdGhlIHNhbWUgc2lnbgorICAgIGlmICgocmVtYWluZGVyICogeSkgPCAwKQorCXJldHVy
biByZW1haW5kZXIgKyB5OworICAgIGVsc2UKKwlyZXR1cm4gcmVtYWluZGVyOworfQorCitmdW5j
dGlvbiBzY19ldWNsaWRfZ2NkKGEsIGIpIHsKKyAgICB2YXIgdGVtcDsKKyAgICBpZiAoYSA9PT0g
MCkgcmV0dXJuIGI7CisgICAgaWYgKGIgPT09IDApIHJldHVybiBhOworICAgIGlmIChhIDwgMCkg
e2EgPSAtYTt9OworICAgIGlmIChiIDwgMCkge2IgPSAtYjt9OworICAgIGlmIChiID4gYSkge3Rl
bXAgPSBhOyBhID0gYjsgYiA9IHRlbXA7fTsKKyAgICB3aGlsZSAodHJ1ZSkgeworCWEgJT0gYjsK
KwlpZihhID09PSAwKSB7cmV0dXJuIGI7fTsKKwliICU9IGE7CisJaWYoYiA9PT0gMCkge3JldHVy
biBhO307CisgICAgfTsKKyAgICByZXR1cm4gYjsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0
KSkgKi8KK2Z1bmN0aW9uIHNjX2djZCgpIHsKKyAgICB2YXIgZ2NkID0gMDsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKwlnY2QgPSBzY19ldWNsaWRfZ2Nk
KGdjZCwgYXJndW1lbnRzW2ldKTsKKyAgICByZXR1cm4gZ2NkOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbGNtKCkgeworICAgIHZhciBsY20gPSAxOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisJdmFyIGYgPSBN
YXRoLnJvdW5kKGFyZ3VtZW50c1tpXSAvIHNjX2V1Y2xpZF9nY2QoYXJndW1lbnRzW2ldLCBsY20p
KTsKKwlsY20gKj0gTWF0aC5hYnMoZik7CisgICAgfQorICAgIHJldHVybiBsY207Cit9CisKKy8v
IExJTUlUQVRJT046IG51bWVyYXRvciBhbmQgZGVub21pbmF0b3IgZG9uJ3QgbWFrZSBzZW5zZSBp
biBmbG9hdGluZyBwb2ludCB3b3JsZC4KKy8vdmFyIFNDX01BWF9ERUNJTUFMUyA9IDEwMDAwMDAK
Ky8vCisvLyBmdW5jdGlvbiBzY19udW1lcmF0b3IoeCkgeworLy8gICAgIHZhciByb3VuZGVkID0g
TWF0aC5yb3VuZCh4ICogU0NfTUFYX0RFQ0lNQUxTKTsKKy8vICAgICByZXR1cm4gTWF0aC5yb3Vu
ZChyb3VuZGVkIC8gc2NfZXVjbGlkX2djZChyb3VuZGVkLCBTQ19NQVhfREVDSU1BTFMpKTsKKy8v
IH0KKworLy8gZnVuY3Rpb24gc2NfZGVub21pbmF0b3IoeCkgeworLy8gICAgIHZhciByb3VuZGVk
ID0gTWF0aC5yb3VuZCh4ICogU0NfTUFYX0RFQ0lNQUxTKTsKKy8vICAgICByZXR1cm4gTWF0aC5y
b3VuZChTQ19NQVhfREVDSU1BTFMgLyBzY19ldWNsaWRfZ2NkKHJvdW5kZWQsIFNDX01BWF9ERUNJ
TUFMUykpOworLy8gfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2Zsb29y
ID0gTWF0aC5mbG9vcjsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfY2VpbGlu
ZyA9IE1hdGguY2VpbDsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfdHJ1bmNh
dGUgPSBwYXJzZUludDsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2Nfcm91bmQg
PSBNYXRoLnJvdW5kOworCisvLyBMSU1JVEFUSU9OOiBzY19yYXRpb25hbGl6ZSBkb2Vzbid0IG1h
a2Ugc2Vuc2UgaW4gYSBmbG9hdGluZyBwb2ludCB3b3JsZC4KKworLyoqKiBNRVRBICgoZXhwb3J0
ICN0KSkgKi8KK3ZhciBzY19leHAgPSBNYXRoLmV4cDsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkp
ICovCit2YXIgc2NfbG9nID0gTWF0aC5sb2c7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwor
dmFyIHNjX3NpbiA9IE1hdGguc2luOworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBz
Y19jb3MgPSBNYXRoLmNvczsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfdGFu
ID0gTWF0aC50YW47CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2FzaW4gPSBN
YXRoLmFzaW47CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2Fjb3MgPSBNYXRo
LmFjb3M7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2F0YW4gPSBNYXRoLmF0
YW47CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2Nfc3FydCA9IE1hdGguc3Fy
dDsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfZXhwdCA9IE1hdGgucG93Owor
CisvLyBMSU1JVEFUSU9OOiB3ZSBkb24ndCBoYXZlIGNvbXBsZXggbnVtYmVycy4KKy8vIExJTUlU
QVRJT046IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBoZW5jZSBub3QgaW1wbGVtZW50ZWQu
CisvLyBMSU1JVEFUSU9OOiBtYWtlLXJlY3Rhbmd1bGFyLCBtYWtlLXBvbGFyLCByZWFsLXBhcnQs
IGltYWctcGFydCwgbWFnbml0dWRlLCBhbmdsZQorLy8gTElNSVRBVElPTjogMiBhcmd1bWVudCBh
dGFuCisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpZCkp
KQorKi8KK2Z1bmN0aW9uIHNjX2V4YWN0MmluZXhhY3QoeCkgeworICAgIHJldHVybiB4OworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaWQpKSkKKyov
CitmdW5jdGlvbiBzY19pbmV4YWN0MmV4YWN0KHgpIHsKKyAgICByZXR1cm4geDsKK30KKworZnVu
Y3Rpb24gc2NfbnVtYmVyMmpzc3RyaW5nKHgsIHJhZGl4KSB7CisgICAgaWYgKHJhZGl4KQorCXJl
dHVybiB4LnRvU3RyaW5nKHJhZGl4KTsKKyAgICBlbHNlCisJcmV0dXJuIHgudG9TdHJpbmcoKTsK
K30KKworZnVuY3Rpb24gc2NfanNzdHJpbmcybnVtYmVyKHMsIHJhZGl4KSB7CisgICAgaWYgKHMg
PT09ICIiKSByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAocmFkaXgpIHsKKwl2YXIgdCA9IHBhcnNl
SW50KHMsIHJhZGl4KTsKKwlpZiAoIXQgJiYgdCAhPT0gMCkgcmV0dXJuIGZhbHNlOworCS8vIHZl
cmlmeSB0aGF0IGVhY2ggY2hhciBpcyBpbiByYW5nZS4gKHBhcnNlSW50IGlnbm9yZXMgbGVhZGlu
ZworCS8vIHdoaXRlIGFuZCB0cmFpbGluZyBjaGFycykKKwl2YXIgYWxsb3dlZENoYXJzID0gIjAx
MjM0NTY3ODkwYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLnN1YnN0cmluZygwLCByYWRpeCsx
KTsKKwlpZiAoKG5ldyBSZWdFeHAoIl5bIithbGxvd2VkQ2hhcnMrIl0qJCIsICJpIikpLnRlc3Qo
cykpCisJICAgIHJldHVybiB0OworCWVsc2UgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisJ
dmFyIHQgPSArczsgLy8gZG9lcyBub3QgaWdub3JlIHRyYWlsaW5nIGNoYXJzLgorCWlmICghdCAm
JiB0ICE9PSAwKSByZXR1cm4gZmFsc2U7CisJLy8gc2ltcGx5IHZlcmlmeSB0aGF0IGZpcnN0IGNo
YXIgaXMgbm90IHdoaXRlc3BhY2UuCisJdmFyIGMgPSBzLmNoYXJBdCgwKTsKKwkvLyBpZiArYyBp
cyAwLCBidXQgdGhlIGNoYXIgaXMgbm90ICIwIiwgdGhlbiB3ZSBoYXZlIGEgd2hpdGVzcGFjZS4K
KwlpZiAoK2MgPT09IDAgJiYgYyAhPT0gIjAiKSByZXR1cm4gZmFsc2U7CisJcmV0dXJuIHQ7Cisg
ICAgfQorfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wp
CisgICAgICAgICAgIChwZWVwaG9sZSAobm90KSkpCisqLworZnVuY3Rpb24gc2Nfbm90KGIpIHsK
KyAgICByZXR1cm4gYiA9PT0gZmFsc2U7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAg
ICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNCb29sZWFuKGIpIHsKKyAg
ICByZXR1cm4gKGIgPT09IHRydWUpIHx8IChiID09PSBmYWxzZSk7Cit9CisKK2Z1bmN0aW9uIHNj
X1BhaXIoY2FyLCBjZHIpIHsKKyAgICB0aGlzLmNhciA9IGNhcjsKKyAgICB0aGlzLmNkciA9IGNk
cjsKK30KKworc2NfUGFpci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICBy
ZXR1cm4gc2NfdG9EaXNwbGF5U3RyaW5nKHRoaXMpOworfTsKK3NjX1BhaXIucHJvdG90eXBlLnNj
X3RvV3JpdGVPckRpc3BsYXlTdHJpbmcgPSBmdW5jdGlvbih3cml0ZU9yRGlzcGxheSkgeworICAg
IHZhciBjdXJyZW50ID0gdGhpczsKKworICAgIHZhciByZXMgPSAiKCI7CisKKyAgICB3aGlsZSh0
cnVlKSB7CisJcmVzICs9IHdyaXRlT3JEaXNwbGF5KGN1cnJlbnQuY2FyKTsKKwlpZiAoc2NfaXNQ
YWlyKGN1cnJlbnQuY2RyKSkgeworCSAgICByZXMgKz0gIiAiOworCSAgICBjdXJyZW50ID0gY3Vy
cmVudC5jZHI7CisJfSBlbHNlIGlmIChjdXJyZW50LmNkciAhPT0gbnVsbCkgeworCSAgICByZXMg
Kz0gIiAuICIgKyB3cml0ZU9yRGlzcGxheShjdXJyZW50LmNkcik7CisJICAgIGJyZWFrOworCX0g
ZWxzZSAvLyBjdXJyZW50LmNkciA9PSBudWxsCisJICAgIGJyZWFrOworICAgIH0KKwkKKyAgICBy
ZXMgKz0gIikiOworCisgICAgcmV0dXJuIHJlczsKK307CitzY19QYWlyLnByb3RvdHlwZS5zY190
b0Rpc3BsYXlTdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5zY190b1dyaXRl
T3JEaXNwbGF5U3RyaW5nKHNjX3RvRGlzcGxheVN0cmluZyk7Cit9Oworc2NfUGFpci5wcm90b3R5
cGUuc2NfdG9Xcml0ZVN0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLnNjX3Rv
V3JpdGVPckRpc3BsYXlTdHJpbmcoc2NfdG9Xcml0ZVN0cmluZyk7Cit9OworLy8gc2NfUGFpci5w
cm90b3R5cGUuc2NfdG9Xcml0ZUNpcmNsZVN0cmluZyBpbiBJTy5qcworCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAo
cG9zdGZpeCAiIGluc3RhbmNlb2Ygc2NfUGFpciIpKSkKKyovCitmdW5jdGlvbiBzY19pc1BhaXIo
cCkgeworICAgIHJldHVybiAocCBpbnN0YW5jZW9mIHNjX1BhaXIpOworfQorCitmdW5jdGlvbiBz
Y19pc1BhaXJFcXVhbChwMSwgcDIsIGNvbXApIHsKKyAgICByZXR1cm4gKGNvbXAocDEuY2FyLCBw
Mi5jYXIpICYmIGNvbXAocDEuY2RyLCBwMi5jZHIpKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0
ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiAibmV3IHNjX1BhaXIoIiBjYXIgIiwg
IiBjZHIgIikiKSkpCisqLworZnVuY3Rpb24gc2NfY29ucyhjYXIsIGNkcikgeworICAgIHJldHVy
biBuZXcgc2NfUGFpcihjYXIsIGNkcik7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBjb25zKikp
ICovCitmdW5jdGlvbiBzY19jb25zU3RhcigpIHsKKyAgICB2YXIgcmVzID0gYXJndW1lbnRzW2Fy
Z3VtZW50cy5sZW5ndGggLSAxXTsKKyAgICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aC0y
OyBpID49IDA7IGktLSkKKwlyZXMgPSBuZXcgc2NfUGFpcihhcmd1bWVudHNbaV0sIHJlcyk7Cisg
ICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAo
cGVlcGhvbGUgKHBvc3RmaXggIi5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FyKHApIHsKKyAg
ICByZXR1cm4gcC5jYXI7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAg
KHBlZXBob2xlIChwb3N0Zml4ICIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkcihwKSB7Cisg
ICAgcmV0dXJuIHAuY2RyOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAg
IChwZWVwaG9sZSAoaG9sZSAyIHAgIi5jYXIgPSAiIHZhbCkpKQorKi8KK2Z1bmN0aW9uIHNjX3Nl
dENhckJhbmcocCwgdmFsKSB7CisgICAgcC5jYXIgPSB2YWw7Cit9CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgcCAiLmNkciA9ICIgdmFsKSkp
CisqLworZnVuY3Rpb24gc2Nfc2V0Q2RyQmFuZyhwLCB2YWwpIHsKKyAgICBwLmNkciA9IHZhbDsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3Rm
aXggIi5jYXIuY2FyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhYXIocCkgeyByZXR1cm4gcC5jYXIu
Y2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9z
dGZpeCAiLmNkci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FkcihwKSB7IHJldHVybiBwLmNk
ci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChw
b3N0Zml4ICIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGFyKHApIHsgcmV0dXJuIHAu
Y2FyLmNkcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUg
KHBvc3RmaXggIi5jZHIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkZHIocCkgeyByZXR1cm4g
cC5jZHIuY2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9s
ZSAocG9zdGZpeCAiLmNhci5jYXIuY2FyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhYWFyKHApIHsg
cmV0dXJuIHAuY2FyLmNhci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNkci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2Nf
Y2FkYXIocCkgeyByZXR1cm4gcC5jYXIuY2RyLmNhcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0
KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jZHIuY2FyLmNhciIpKSkKKyovCitm
dW5jdGlvbiBzY19jYWFkcihwKSB7IHJldHVybiBwLmNkci5jYXIuY2FyOyB9CisvKioqIE1FVEEg
KChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNkci5jZHIuY2Fy
IikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhZGRyKHApIHsgcmV0dXJuIHAuY2RyLmNkci5jYXI7IH0K
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIu
Y2FyLmNhci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RhYXIocCkgeyByZXR1cm4gcC5jYXIu
Y2FyLmNkcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUg
KHBvc3RmaXggIi5jZHIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGFkcihwKSB7IHJl
dHVybiBwLmNkci5jYXIuY2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAg
IChwZWVwaG9sZSAocG9zdGZpeCAiLmNhci5jZHIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2Nk
ZGFyKHApIHsgcmV0dXJuIHAuY2FyLmNkci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkK
KyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNkci5jZHIiKSkpCisqLworZnVu
Y3Rpb24gc2NfY2RkZHIocCkgeyByZXR1cm4gcC5jZHIuY2RyLmNkcjsgfQorLyoqKiBNRVRBICgo
ZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIuY2FyLmNhci5j
YXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FhYWFyKHApIHsgcmV0dXJuIHAuY2FyLmNhci5jYXIu
Y2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9z
dGZpeCAiLmNhci5jZHIuY2FyLmNhciIpKSkKKyovCitmdW5jdGlvbiBzY19jYWFkYXIocCkgeyBy
ZXR1cm4gcC5jYXIuY2RyLmNhci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAg
ICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNhci5jYXIuY2FyIikpKQorKi8KK2Z1bmN0
aW9uIHNjX2NhYWFkcihwKSB7IHJldHVybiBwLmNkci5jYXIuY2FyLmNhcjsgfQorLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jZHIuY2RyLmNh
ci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FhZGRyKHApIHsgcmV0dXJuIHAuY2RyLmNkci5j
YXIuY2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAo
cG9zdGZpeCAiLmNhci5jYXIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGFhYXIocCkg
eyByZXR1cm4gcC5jYXIuY2FyLmNhci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAg
ICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNkci5jYXIuY2RyIikpKQorKi8KK2Z1
bmN0aW9uIHNjX2NkYWRhcihwKSB7IHJldHVybiBwLmNhci5jZHIuY2FyLmNkcjsgfQorLyoqKiBN
RVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jZHIuY2Fy
LmNhci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RhYWRyKHApIHsgcmV0dXJuIHAuY2RyLmNh
ci5jYXIuY2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9s
ZSAocG9zdGZpeCAiLmNkci5jZHIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGFkZHIo
cCkgeyByZXR1cm4gcC5jZHIuY2RyLmNhci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkK
KyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNhci5jZHIuY2FyIikpKQorKi8K
K2Z1bmN0aW9uIHNjX2NhZGFhcihwKSB7IHJldHVybiBwLmNhci5jYXIuY2RyLmNhcjsgfQorLyoq
KiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIu
Y2RyLmNkci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FkZGFyKHApIHsgcmV0dXJuIHAuY2Fy
LmNkci5jZHIuY2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVw
aG9sZSAocG9zdGZpeCAiLmNkci5jYXIuY2RyLmNhciIpKSkKKyovCitmdW5jdGlvbiBzY19jYWRh
ZHIocCkgeyByZXR1cm4gcC5jZHIuY2FyLmNkci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNkci5jZHIuY2FyIikpKQor
Ki8KK2Z1bmN0aW9uIHNjX2NhZGRkcihwKSB7IHJldHVybiBwLmNkci5jZHIuY2RyLmNhcjsgfQor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5j
YXIuY2FyLmNkci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RkYWFyKHApIHsgcmV0dXJuIHAu
Y2FyLmNhci5jZHIuY2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChw
ZWVwaG9sZSAocG9zdGZpeCAiLmNhci5jZHIuY2RyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19j
ZGRkYXIocCkgeyByZXR1cm4gcC5jYXIuY2RyLmNkci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNhci5jZHIuY2RyIikp
KQorKi8KK2Z1bmN0aW9uIHNjX2NkZGFkcihwKSB7IHJldHVybiBwLmNkci5jYXIuY2RyLmNkcjsg
fQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXgg
Ii5jZHIuY2RyLmNkci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RkZGRyKHApIHsgcmV0dXJu
IHAuY2RyLmNkci5jZHIuY2RyOyB9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5j
dGlvbiBzY19sYXN0UGFpcihsKSB7CisgICAgaWYgKCFzY19pc1BhaXIobCkpIHNjX2Vycm9yKCJz
Y19sYXN0UGFpcjogcGFpciBleHBlY3RlZCIpOworICAgIHZhciByZXMgPSBsOworICAgIHZhciBj
ZHIgPSBsLmNkcjsKKyAgICB3aGlsZSAoc2NfaXNQYWlyKGNkcikpIHsKKwlyZXMgPSBjZHI7CisJ
Y2RyID0gcmVzLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBNRVRBICgo
ZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUg
KHBvc3RmaXggIiA9PT0gbnVsbCIpKSkKKyovCitmdW5jdGlvbiBzY19pc051bGwobykgeworICAg
IHJldHVybiAobyA9PT0gbnVsbCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAg
ICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNMaXN0KG8pIHsKKyAgICB2YXIg
cmFiYml0OworICAgIHZhciB0dXJ0bGU7CisKKyAgICB2YXIgcmFiYml0ID0gbzsKKyAgICB2YXIg
dHVydGxlID0gbzsKKyAgICB3aGlsZSAodHJ1ZSkgeworCWlmIChyYWJiaXQgPT09IG51bGwgfHwK
KwkgICAgKHJhYmJpdCBpbnN0YW5jZW9mIHNjX1BhaXIgJiYgcmFiYml0LmNkciA9PT0gbnVsbCkp
CisJICAgIHJldHVybiB0cnVlOyAgLy8gZW5kIG9mIGxpc3QKKwllbHNlIGlmICgocmFiYml0IGlu
c3RhbmNlb2Ygc2NfUGFpcikgJiYKKwkJIChyYWJiaXQuY2RyIGluc3RhbmNlb2Ygc2NfUGFpcikp
IHsKKwkgICAgcmFiYml0ID0gcmFiYml0LmNkci5jZHI7CisJICAgIHR1cnRsZSA9IHR1cnRsZS5j
ZHI7CisJICAgIGlmIChyYWJiaXQgPT09IHR1cnRsZSkgcmV0dXJuIGZhbHNlOyAvLyBjeWNsZQor
CX0gZWxzZQorCSAgICByZXR1cm4gZmFsc2U7IC8vIG5vdCBwYWlyCisgICAgfQorfQorCisvKioq
IE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbGlzdCgpIHsKKyAgICB2YXIgcmVz
ID0gbnVsbDsKKyAgICB2YXIgYSA9IGFyZ3VtZW50czsKKyAgICBmb3IgKHZhciBpID0gYS5sZW5n
dGgtMTsgaSA+PSAwOyBpLS0pCisJcmVzID0gbmV3IHNjX1BhaXIoYVtpXSwgcmVzKTsKKyAgICBy
ZXR1cm4gcmVzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nf
aW90YShudW0sIGluaXQpIHsKKyAgIHZhciByZXMgPSBudWxsOworICAgaWYgKCFpbml0KSBpbml0
ID0gMDsKKyAgIGZvciAodmFyIGkgPSBudW0gLSAxOyBpID49IDA7IGktLSkKKyAgICAgIHJlcyA9
IG5ldyBzY19QYWlyKGkgKyBpbml0LCByZXMpOworICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBN
RVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX21ha2VMaXN0KG5iRWxzLCBmaWxsKSB7
CisgICAgdmFyIHJlcyA9IG51bGw7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYkVsczsgaSsr
KQorCXJlcyA9IG5ldyBzY19QYWlyKGZpbGwsIHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2xlbmd0aChsKSB7CisgICAg
dmFyIHJlcyA9IDA7CisgICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKwlyZXMrKzsKKwlsID0gbC5j
ZHI7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkp
ICovCitmdW5jdGlvbiBzY19yZW1xKG8sIGwpIHsKKyAgICB2YXIgZHVtbXkgPSB7IGNkciA6IG51
bGwgfTsKKyAgICB2YXIgdGFpbCA9IGR1bW15OworICAgIHdoaWxlIChsICE9PSBudWxsKSB7CisJ
aWYgKGwuY2FyICE9PSBvKSB7CisJICAgIHRhaWwuY2RyID0gc2NfY29ucyhsLmNhciwgbnVsbCk7
CisJICAgIHRhaWwgPSB0YWlsLmNkcjsKKwl9CisJbCA9IGwuY2RyOworICAgIH0KKyAgICByZXR1
cm4gZHVtbXkuY2RyOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24g
c2NfcmVtcUJhbmcobywgbCkgeworICAgIHZhciBkdW1teSA9IHsgY2RyIDogbnVsbCB9OworICAg
IHZhciB0YWlsID0gZHVtbXk7CisgICAgdmFyIG5lZWRzQXNzaWcgPSB0cnVlOworICAgIHdoaWxl
IChsICE9PSBudWxsKSB7CisJaWYgKGwuY2FyID09PSBvKSB7CisJICAgIG5lZWRzQXNzaWcgPSB0
cnVlOworCX0gZWxzZSB7CisJICAgIGlmIChuZWVkc0Fzc2lnKSB7CisJCXRhaWwuY2RyID0gbDsK
KwkJbmVlZHNBc3NpZyA9IGZhbHNlOworCSAgICB9CisJICAgIHRhaWwgPSBsOworCX0KKwlsID0g
bC5jZHI7CisgICAgfQorICAgIHRhaWwuY2RyID0gbnVsbDsKKyAgICByZXR1cm4gZHVtbXkuY2Ry
OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZGVsZXRlKG8s
IGwpIHsKKyAgICB2YXIgZHVtbXkgPSB7IGNkciA6IG51bGwgfTsKKyAgICB2YXIgdGFpbCA9IGR1
bW15OworICAgIHdoaWxlIChsICE9PSBudWxsKSB7CisJaWYgKCFzY19pc0VxdWFsKGwuY2FyLCBv
KSkgeworCSAgICB0YWlsLmNkciA9IHNjX2NvbnMobC5jYXIsIG51bGwpOworCSAgICB0YWlsID0g
dGFpbC5jZHI7CisJfQorCWwgPSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGR1bW15LmNkcjsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2RlbGV0ZUJhbmco
bywgbCkgeworICAgIHZhciBkdW1teSA9IHsgY2RyIDogbnVsbCB9OworICAgIHZhciB0YWlsID0g
ZHVtbXk7CisgICAgdmFyIG5lZWRzQXNzaWcgPSB0cnVlOworICAgIHdoaWxlIChsICE9PSBudWxs
KSB7CisJaWYgKHNjX2lzRXF1YWwobC5jYXIsIG8pKSB7CisJICAgIG5lZWRzQXNzaWcgPSB0cnVl
OworCX0gZWxzZSB7CisJICAgIGlmIChuZWVkc0Fzc2lnKSB7CisJCXRhaWwuY2RyID0gbDsKKwkJ
bmVlZHNBc3NpZyA9IGZhbHNlOworCSAgICB9CisJICAgIHRhaWwgPSBsOworCX0KKwlsID0gbC5j
ZHI7CisgICAgfQorICAgIHRhaWwuY2RyID0gbnVsbDsKKyAgICByZXR1cm4gZHVtbXkuY2RyOwor
fQorCitmdW5jdGlvbiBzY19yZXZlcnNlQXBwZW5kQmFuZyhsMSwgbDIpIHsKKyAgICB2YXIgcmVz
ID0gbDI7CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7CisJdmFyIHRtcCA9IHJlczsKKwlyZXMg
PSBsMTsKKwlsMSA9IGwxLmNkcjsKKwlyZXMuY2RyID0gdG1wOworICAgIH0KKyAgICByZXR1cm4g
cmVzOworfQorCQorZnVuY3Rpb24gc2NfZHVhbEFwcGVuZChsMSwgbDIpIHsKKyAgICBpZiAobDEg
PT09IG51bGwpIHJldHVybiBsMjsKKyAgICBpZiAobDIgPT09IG51bGwpIHJldHVybiBsMTsKKyAg
ICB2YXIgcmV2ID0gc2NfcmV2ZXJzZShsMSk7CisgICAgcmV0dXJuIHNjX3JldmVyc2VBcHBlbmRC
YW5nKHJldiwgbDIpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24g
c2NfYXBwZW5kKCkgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKQorCXJldHVybiBu
dWxsOworICAgIHZhciByZXMgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdOworICAg
IGZvciAodmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSA+PSAwOyBpLS0pCisJcmVzID0g
c2NfZHVhbEFwcGVuZChhcmd1bWVudHNbaV0sIHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKwor
ZnVuY3Rpb24gc2NfZHVhbEFwcGVuZEJhbmcobDEsIGwyKSB7CisgICAgaWYgKGwxID09PSBudWxs
KSByZXR1cm4gbDI7CisgICAgaWYgKGwyID09PSBudWxsKSByZXR1cm4gbDE7CisgICAgdmFyIHRt
cCA9IGwxOworICAgIHdoaWxlICh0bXAuY2RyICE9PSBudWxsKSB0bXA9dG1wLmNkcjsKKyAgICB0
bXAuY2RyID0gbDI7CisgICAgcmV0dXJuIGwxOworfQorICAgIAorLyoqKiBNRVRBICgoZXhwb3J0
ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2FwcGVuZEJhbmcoKSB7CisgICAgdmFyIHJlcyA9IG51bGw7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJcmVzID0g
c2NfZHVhbEFwcGVuZEJhbmcocmVzLCBhcmd1bWVudHNbaV0pOworICAgIHJldHVybiByZXM7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19yZXZlcnNlKGwxKSB7
CisgICAgdmFyIHJlcyA9IG51bGw7CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7CisJcmVzID0g
c2NfY29ucyhsMS5jYXIsIHJlcyk7CisJbDEgPSBsMS5jZHI7CisgICAgfQorICAgIHJldHVybiBy
ZXM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19yZXZlcnNl
QmFuZyhsKSB7CisgICAgcmV0dXJuIHNjX3JldmVyc2VBcHBlbmRCYW5nKGwsIG51bGwpOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbGlzdFRhaWwobCwgaykg
eworICAgIHZhciByZXMgPSBsOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKSB7CisJ
cmVzID0gcmVzLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBNRVRBICgo
ZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2xpc3RSZWYobCwgaykgeworICAgIHJldHVybiBz
Y19saXN0VGFpbChsLCBrKS5jYXI7Cit9CisKKy8qIC8vIHVub3B0aW1pemVkIGdlbmVyaWMgdmVy
c2lvbnMKK2Z1bmN0aW9uIHNjX21lbVgobywgbCwgY29tcCkgeworICAgIHdoaWxlIChsICE9IG51
bGwpIHsKKwlpZiAoY29tcChsLmNhciwgbykpCisJICAgIHJldHVybiBsOworCWwgPSBsLmNkcjsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorZnVuY3Rpb24gc2NfbWVtcShvLCBsKSB7IHJl
dHVybiBzY19tZW1YKG8sIGwsIHNjX2lzRXEpOyB9CitmdW5jdGlvbiBzY19tZW12KG8sIGwpIHsg
cmV0dXJuIHNjX21lbVgobywgbCwgc2NfaXNFcXYpOyB9CitmdW5jdGlvbiBzY19tZW1iZXIobywg
bCkgeyByZXR1cm4gc2NfbWVtWChvLCBsLCBzY19pc0VxdWFsKTsgfQorKi8KKworLyogb3B0aW1p
emVkIHZlcnNpb25zICovCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nf
bWVtcShvLCBsKSB7CisgICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKwlpZiAobC5jYXIgPT09IG8p
CisJICAgIHJldHVybiBsOworCWwgPSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX21lbXYobywgbCkgewor
ICAgIHdoaWxlIChsICE9PSBudWxsKSB7CisJaWYgKGwuY2FyID09PSBvKQorCSAgICByZXR1cm4g
bDsKKwlsID0gbC5jZHI7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19tZW1iZXIobywgbCkgeworICAgIHdoaWxlIChs
ICE9PSBudWxsKSB7CisJaWYgKHNjX2lzRXF1YWwobC5jYXIsbykpCisJICAgIHJldHVybiBsOwor
CWwgPSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKiAvLyBnZW5lcmlj
IHVub3B0aW1pemVkIHZlcnNpb25zCitmdW5jdGlvbiBzY19hc3NYKG8sIGFsLCBjb21wKSB7Cisg
ICAgd2hpbGUgKGFsICE9IG51bGwpIHsKKwlpZiAoY29tcChhbC5jYXIuY2FyLCBvKSkKKwkgICAg
cmV0dXJuIGFsLmNhcjsKKwlhbCA9IGFsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorZnVuY3Rpb24gc2NfYXNzcShvLCBhbCkgeyByZXR1cm4gc2NfYXNzWChvLCBhbCwgc2NfaXNF
cSk7IH0KK2Z1bmN0aW9uIHNjX2Fzc3YobywgYWwpIHsgcmV0dXJuIHNjX2Fzc1gobywgYWwsIHNj
X2lzRXF2KTsgfQorZnVuY3Rpb24gc2NfYXNzb2MobywgYWwpIHsgcmV0dXJuIHNjX2Fzc1gobywg
YWwsIHNjX2lzRXF1YWwpOyB9CisqLworLy8gb3B0aW1pemVkIHZlcnNpb25zCisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYXNzcShvLCBhbCkgeworICAgIHdoaWxlIChh
bCAhPT0gbnVsbCkgeworCWlmIChhbC5jYXIuY2FyID09PSBvKQorCSAgICByZXR1cm4gYWwuY2Fy
OworCWFsID0gYWwuY2RyOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYXNzdihvLCBhbCkgeworICAgIHdoaWxlIChh
bCAhPT0gbnVsbCkgeworCWlmIChhbC5jYXIuY2FyID09PSBvKQorCSAgICByZXR1cm4gYWwuY2Fy
OworCWFsID0gYWwuY2RyOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYXNzb2MobywgYWwpIHsKKyAgICB3aGlsZSAo
YWwgIT09IG51bGwpIHsKKwlpZiAoc2NfaXNFcXVhbChhbC5jYXIuY2FyLCBvKSkKKwkgICAgcmV0
dXJuIGFsLmNhcjsKKwlhbCA9IGFsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
CisvKiBjYW4gYmUgdXNlZCBmb3IgbXV0YWJsZSBzdHJpbmdzIGFuZCBjaGFyYWN0ZXJzICovCitm
dW5jdGlvbiBzY19pc0NoYXJTdHJpbmdFcXVhbChjczEsIGNzMikgeyByZXR1cm4gY3MxLnZhbCA9
PT0gY3MyLnZhbDsgfQorZnVuY3Rpb24gc2NfaXNDaGFyU3RyaW5nTGVzcyhjczEsIGNzMikgeyBy
ZXR1cm4gY3MxLnZhbCA8IGNzMi52YWw7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0dyZWF0
ZXIoY3MxLCBjczIpIHsgcmV0dXJuIGNzMS52YWwgPiBjczIudmFsOyB9CitmdW5jdGlvbiBzY19p
c0NoYXJTdHJpbmdMZXNzRXF1YWwoY3MxLCBjczIpIHsgcmV0dXJuIGNzMS52YWwgPD0gY3MyLnZh
bDsgfQorZnVuY3Rpb24gc2NfaXNDaGFyU3RyaW5nR3JlYXRlckVxdWFsKGNzMSwgY3MyKSB7IHJl
dHVybiBjczEudmFsID49IGNzMi52YWw7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJRXF1
YWwoY3MxLCBjczIpCisgICAgeyByZXR1cm4gY3MxLnZhbC50b0xvd2VyQ2FzZSgpID09PSBjczIu
dmFsLnRvTG93ZXJDYXNlKCk7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJTGVzcyhjczEs
IGNzMikKKyAgICB7IHJldHVybiBjczEudmFsLnRvTG93ZXJDYXNlKCkgPCBjczIudmFsLnRvTG93
ZXJDYXNlKCk7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJR3JlYXRlcihjczEsIGNzMikK
KyAgICB7IHJldHVybiBjczEudmFsLnRvTG93ZXJDYXNlKCkgPiBjczIudmFsLnRvTG93ZXJDYXNl
KCk7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJTGVzc0VxdWFsKGNzMSwgY3MyKQorICAg
IHsgcmV0dXJuIGNzMS52YWwudG9Mb3dlckNhc2UoKSA8PSBjczIudmFsLnRvTG93ZXJDYXNlKCk7
IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJR3JlYXRlckVxdWFsKGNzMSwgY3MyKQorICAg
IHsgcmV0dXJuIGNzMS52YWwudG9Mb3dlckNhc2UoKSA+PSBjczIudmFsLnRvTG93ZXJDYXNlKCk7
IH0KKworCisKKworZnVuY3Rpb24gc2NfQ2hhcihjKSB7CisgICAgdmFyIGNhY2hlZCA9IHNjX0No
YXIubGF6eVtjXTsKKyAgICBpZiAoY2FjaGVkKQorCXJldHVybiBjYWNoZWQ7CisgICAgdGhpcy52
YWwgPSBjOworICAgIHNjX0NoYXIubGF6eVtjXSA9IHRoaXM7CisgICAgLy8gYWRkIHJldHVybiwg
c28gRkYgZG9lcyBub3QgY29tcGxhaW4uCisgICAgcmV0dXJuIHVuZGVmaW5lZDsKK30KK3NjX0No
YXIubGF6eSA9IG5ldyBPYmplY3QoKTsKKy8vIHRoYW5rcyB0byBFcmljCitzY19DaGFyLmNoYXIy
cmVhZGFibGUgPSB7CisgICAgIlwwMDAiOiAiI1xcbnVsbCIsCisgICAgIlwwMDciOiAiI1xcYmVs
bCIsCisgICAgIlwwMTAiOiAiI1xcYmFja3NwYWNlIiwKKyAgICAiXDAxMSI6ICIjXFx0YWIiLAor
ICAgICJcMDEyIjogIiNcXG5ld2xpbmUiLAorICAgICJcMDE0IjogIiNcXHBhZ2UiLAorICAgICJc
MDE1IjogIiNcXHJldHVybiIsCisgICAgIlwwMzMiOiAiI1xcZXNjYXBlIiwKKyAgICAiXDA0MCI6
ICIjXFxzcGFjZSIsCisgICAgIlwxNzciOiAiI1xcZGVsZXRlIiwKKworICAvKiBwb2V0aWNsZXNz
IG5hbWVzICovCisgICAgIlwwMDEiOiAiI1xcc29oIiwKKyAgICAiXDAwMiI6ICIjXFxzdHgiLAor
ICAgICJcMDAzIjogIiNcXGV0eCIsCisgICAgIlwwMDQiOiAiI1xcZW90IiwKKyAgICAiXDAwNSI6
ICIjXFxlbnEiLAorICAgICJcMDA2IjogIiNcXGFjayIsCisKKyAgICAiXDAxMyI6ICIjXFx2dCIs
CisgICAgIlwwMTYiOiAiI1xcc28iLAorICAgICJcMDE3IjogIiNcXHNpIiwKKworICAgICJcMDIw
IjogIiNcXGRsZSIsCisgICAgIlwwMjEiOiAiI1xcZGMxIiwKKyAgICAiXDAyMiI6ICIjXFxkYzIi
LAorICAgICJcMDIzIjogIiNcXGRjMyIsCisgICAgIlwwMjQiOiAiI1xcZGM0IiwKKyAgICAiXDAy
NSI6ICIjXFxuYWsiLAorICAgICJcMDI2IjogIiNcXHN5biIsCisgICAgIlwwMjciOiAiI1xcZXRi
IiwKKworICAgICJcMDMwIjogIiNcXGNhbiIsCisgICAgIlwwMzEiOiAiI1xcZW0iLAorICAgICJc
MDMyIjogIiNcXHN1YiIsCisgICAgIlwwMzMiOiAiI1xcZXNjIiwKKyAgICAiXDAzNCI6ICIjXFxm
cyIsCisgICAgIlwwMzUiOiAiI1xcZ3MiLAorICAgICJcMDM2IjogIiNcXHJzIiwKKyAgICAiXDAz
NyI6ICIjXFx1cyJ9OworCitzY19DaGFyLnJlYWRhYmxlMmNoYXIgPSB7CisgICAgIm51bGwiOiAi
XDAwMCIsCisgICAgImJlbGwiOiAiXDAwNyIsCisgICAgImJhY2tzcGFjZSI6ICJcMDEwIiwKKyAg
ICAidGFiIjogIlwwMTEiLAorICAgICJuZXdsaW5lIjogIlwwMTIiLAorICAgICJwYWdlIjogIlww
MTQiLAorICAgICJyZXR1cm4iOiAiXDAxNSIsCisgICAgImVzY2FwZSI6ICJcMDMzIiwKKyAgICAi
c3BhY2UiOiAiXDA0MCIsCisgICAgImRlbGV0ZSI6ICJcMDAwIiwKKyAgICAic29oIjogIlwwMDEi
LAorICAgICJzdHgiOiAiXDAwMiIsCisgICAgImV0eCI6ICJcMDAzIiwKKyAgICAiZW90IjogIlww
MDQiLAorICAgICJlbnEiOiAiXDAwNSIsCisgICAgImFjayI6ICJcMDA2IiwKKyAgICAiYmVsIjog
IlwwMDciLAorICAgICJicyI6ICJcMDEwIiwKKyAgICAiaHQiOiAiXDAxMSIsCisgICAgIm5sIjog
IlwwMTIiLAorICAgICJ2dCI6ICJcMDEzIiwKKyAgICAibnAiOiAiXDAxNCIsCisgICAgImNyIjog
IlwwMTUiLAorICAgICJzbyI6ICJcMDE2IiwKKyAgICAic2kiOiAiXDAxNyIsCisgICAgImRsZSI6
ICJcMDIwIiwKKyAgICAiZGMxIjogIlwwMjEiLAorICAgICJkYzIiOiAiXDAyMiIsCisgICAgImRj
MyI6ICJcMDIzIiwKKyAgICAiZGM0IjogIlwwMjQiLAorICAgICJuYWsiOiAiXDAyNSIsCisgICAg
InN5biI6ICJcMDI2IiwKKyAgICAiZXRiIjogIlwwMjciLAorICAgICJjYW4iOiAiXDAzMCIsCisg
ICAgImVtIjogIlwwMzEiLAorICAgICJzdWIiOiAiXDAzMiIsCisgICAgImVzYyI6ICJcMDMzIiwK
KyAgICAiZnMiOiAiXDAzNCIsCisgICAgImdzIjogIlwwMzUiLAorICAgICJycyI6ICJcMDM2IiwK
KyAgICAidXMiOiAiXDAzNyIsCisgICAgInNwIjogIlwwNDAiLAorICAgICJkZWwiOiAiXDE3NyJ9
OworICAgIAorc2NfQ2hhci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICBy
ZXR1cm4gdGhpcy52YWw7Cit9OworLy8gc2NfdG9EaXNwbGF5U3RyaW5nID09IHRvU3RyaW5nCitz
Y19DaGFyLnByb3RvdHlwZS5zY190b1dyaXRlU3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgdmFy
IGVudHJ5ID0gc2NfQ2hhci5jaGFyMnJlYWRhYmxlW3RoaXMudmFsXTsKKyAgICBpZiAoZW50cnkp
CisJcmV0dXJuIGVudHJ5OworICAgIGVsc2UKKwlyZXR1cm4gIiNcXCIgKyB0aGlzLnZhbDsKK307
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAg
ICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICJpbnN0YW5jZW9mIHNjX0NoYXIiKSkpCisqLworZnVu
Y3Rpb24gc2NfaXNDaGFyKGMpIHsKKyAgICByZXR1cm4gKGMgaW5zdGFuY2VvZiBzY19DaGFyKTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0IGNoYXI9PykKKyAgICAgICAgICAgKHR5cGUgYm9vbCkK
KyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwgPT09ICIgYzIgIi52YWwiKSkp
CisqLwordmFyIHNjX2lzQ2hhckVxdWFsID0gc2NfaXNDaGFyU3RyaW5nRXF1YWw7CisvKioqIE1F
VEEgKChleHBvcnQgY2hhcjw/KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAo
cGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZhbCA8ICIgYzIgIi52YWwiKSkpCisqLwordmFyIHNjX2lz
Q2hhckxlc3MgPSBzY19pc0NoYXJTdHJpbmdMZXNzOworLyoqKiBNRVRBICgoZXhwb3J0IGNoYXI+
PykKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIg
YzEgIi52YWwgPiAiIGMyICIudmFsIikpKQorKi8KK3ZhciBzY19pc0NoYXJHcmVhdGVyID0gc2Nf
aXNDaGFyU3RyaW5nR3JlYXRlcjsKKy8qKiogTUVUQSAoKGV4cG9ydCBjaGFyPD0/KQorICAgICAg
ICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZhbCA8
PSAiIGMyICIudmFsIikpKQorKi8KK3ZhciBzY19pc0NoYXJMZXNzRXF1YWwgPSBzY19pc0NoYXJT
dHJpbmdMZXNzRXF1YWw7CisvKioqIE1FVEEgKChleHBvcnQgY2hhcj49PykKKyAgICAgICAgICAg
KHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwgPj0gIiBj
MiAiLnZhbCIpKSkKKyovCit2YXIgc2NfaXNDaGFyR3JlYXRlckVxdWFsID0gc2NfaXNDaGFyU3Ry
aW5nR3JlYXRlckVxdWFsOworLyoqKiBNRVRBICgoZXhwb3J0IGNoYXItY2k9PykKKyAgICAgICAg
ICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwudG9M
b3dlckNhc2UoKSA9PT0gIiBjMiAiLnZhbC50b0xvd2VyQ2FzZSgpIikpKQorKi8KK3ZhciBzY19p
c0NoYXJDSUVxdWFsID0gc2NfaXNDaGFyU3RyaW5nQ0lFcXVhbDsKKy8qKiogTUVUQSAoKGV4cG9y
dCBjaGFyLWNpPD8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9s
ZSAoaG9sZSAyIGMxICIudmFsLnRvTG93ZXJDYXNlKCkgPCAiIGMyICIudmFsLnRvTG93ZXJDYXNl
KCkiKSkpCisqLwordmFyIHNjX2lzQ2hhckNJTGVzcyA9IHNjX2lzQ2hhclN0cmluZ0NJTGVzczsK
Ky8qKiogTUVUQSAoKGV4cG9ydCBjaGFyLWNpPj8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisg
ICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIGMxICIudmFsLnRvTG93ZXJDYXNlKCkgPiAiIGMy
ICIudmFsLnRvTG93ZXJDYXNlKCkiKSkpCisqLwordmFyIHNjX2lzQ2hhckNJR3JlYXRlciA9IHNj
X2lzQ2hhclN0cmluZ0NJR3JlYXRlcjsKKy8qKiogTUVUQSAoKGV4cG9ydCBjaGFyLWNpPD0/KQor
ICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBjMSAi
LnZhbC50b0xvd2VyQ2FzZSgpIDw9ICIgYzIgIi52YWwudG9Mb3dlckNhc2UoKSIpKSkKKyovCit2
YXIgc2NfaXNDaGFyQ0lMZXNzRXF1YWwgPSBzY19pc0NoYXJTdHJpbmdDSUxlc3NFcXVhbDsKKy8q
KiogTUVUQSAoKGV4cG9ydCBjaGFyLWNpPj0/KQorICAgICAgICAgICAodHlwZSBib29sKQorICAg
ICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZhbC50b0xvd2VyQ2FzZSgpID49ICIgYzIg
Ii52YWwudG9Mb3dlckNhc2UoKSIpKSkKKyovCit2YXIgc2NfaXNDaGFyQ0lHcmVhdGVyRXF1YWwg
PSBzY19pc0NoYXJTdHJpbmdDSUdyZWF0ZXJFcXVhbDsKKwordmFyIFNDX05VTUJFUl9DTEFTUyA9
ICIwMTIzNDU2Nzg5IjsKK3ZhciBTQ19XSElURVNQQUNFX0NMQVNTID0gJyBcclxuXHRcZic7Cit2
YXIgU0NfTE9XRVJfQ0xBU1MgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonOwordmFyIFND
X1VQUEVSX0NMQVNTID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJzsKKworZnVuY3Rpb24g
c2NfaXNDaGFyT2ZDbGFzcyhjLCBjbCkgeyByZXR1cm4gKGNsLmluZGV4T2YoYykgIT0gLTEpOyB9
CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1
bmN0aW9uIHNjX2lzQ2hhckFscGhhYmV0aWMoYykKKyAgICB7IHJldHVybiBzY19pc0NoYXJPZkNs
YXNzKGMudmFsLCBTQ19MT1dFUl9DTEFTUykgfHwKKwkgIHNjX2lzQ2hhck9mQ2xhc3MoYy52YWws
IFNDX1VQUEVSX0NMQVNTKTsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAo
dHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMSAiU0NfTlVNQkVSX0NMQVNT
LmluZGV4T2YoIiBjICIudmFsKSAhPSAtMSIpKSkKKyovCitmdW5jdGlvbiBzY19pc0NoYXJOdW1l
cmljKGMpCisgICAgeyByZXR1cm4gc2NfaXNDaGFyT2ZDbGFzcyhjLnZhbCwgU0NfTlVNQkVSX0NM
QVNTKTsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKSkK
KyovCitmdW5jdGlvbiBzY19pc0NoYXJXaGl0ZXNwYWNlKGMpIHsKKyAgICB2YXIgdG1wID0gYy52
YWw7CisgICAgcmV0dXJuIHRtcCA9PT0gIiAiIHx8IHRtcCA9PT0gIlxyIiB8fCB0bXAgPT09ICJc
biIgfHwgdG1wID09PSAiXHQiIHx8IHRtcCA9PT0gIlxmIjsKK30KKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xl
IDEgIlNDX1VQUEVSX0NMQVNTLmluZGV4T2YoIiBjICIudmFsKSAhPSAtMSIpKSkKKyovCitmdW5j
dGlvbiBzY19pc0NoYXJVcHBlckNhc2UoYykKKyAgICB7IHJldHVybiBzY19pc0NoYXJPZkNsYXNz
KGMudmFsLCBTQ19VUFBFUl9DTEFTUyk7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAg
ICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDEgIlNDX0xPV0VS
X0NMQVNTLmluZGV4T2YoIiBjICIudmFsKSAhPSAtMSIpKSkKKyovCitmdW5jdGlvbiBzY19pc0No
YXJMb3dlckNhc2UoYykKKyAgICB7IHJldHVybiBzY19pc0NoYXJPZkNsYXNzKGMudmFsLCBTQ19M
T1dFUl9DTEFTUyk7IH0KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVl
cGhvbGUgKHBvc3RmaXggIi52YWwuY2hhckNvZGVBdCgwKSIpKSkKKyovCitmdW5jdGlvbiBzY19j
aGFyMmludGVnZXIoYykKKyAgICB7IHJldHVybiBjLnZhbC5jaGFyQ29kZUF0KDApOyB9CisvKioq
IE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAxICJuZXcgc2Nf
Q2hhcihTdHJpbmcuZnJvbUNoYXJDb2RlKCIgbiAiKSkiKSkpCisqLworZnVuY3Rpb24gc2NfaW50
ZWdlcjJjaGFyKG4pCisgICAgeyByZXR1cm4gbmV3IHNjX0NoYXIoU3RyaW5nLmZyb21DaGFyQ29k
ZShuKSk7IH0KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUg
KGhvbGUgMSAibmV3IHNjX0NoYXIoIiBjICIudmFsLnRvVXBwZXJDYXNlKCkpIikpKQorKi8KK2Z1
bmN0aW9uIHNjX2NoYXJVcGNhc2UoYykKKyAgICB7IHJldHVybiBuZXcgc2NfQ2hhcihjLnZhbC50
b1VwcGVyQ2FzZSgpKTsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVl
cGhvbGUgKGhvbGUgMSAibmV3IHNjX0NoYXIoIiBjICIudmFsLnRvTG93ZXJDYXNlKCkpIikpKQor
Ki8KK2Z1bmN0aW9uIHNjX2NoYXJEb3duY2FzZShjKQorICAgIHsgcmV0dXJuIG5ldyBzY19DaGFy
KGMudmFsLnRvTG93ZXJDYXNlKCkpOyB9CisKK2Z1bmN0aW9uIHNjX21ha2VKU1N0cmluZ09mTGVu
Z3RoKGssIGMpIHsKKyAgICB2YXIgZmlsbDsKKyAgICBpZiAoYyA9PT0gdW5kZWZpbmVkKQorCWZp
bGwgPSAiICI7CisgICAgZWxzZQorCWZpbGwgPSBjOworICAgIHZhciByZXMgPSAiIjsKKyAgICB2
YXIgbGVuID0gMTsKKyAgICAvLyBldmVyeSByb3VuZCBkb3VibGVzIHRoZSBzaXplIG9mIGZpbGwu
CisgICAgd2hpbGUgKGsgPj0gbGVuKSB7CisJaWYgKGsgJiBsZW4pCisJICAgIHJlcyA9IHJlcy5j
b25jYXQoZmlsbCk7CisJZmlsbCA9IGZpbGwuY29uY2F0KGZpbGwpOworCWxlbiAqPSAyOworICAg
IH0KKyAgICByZXR1cm4gcmVzOworfQorCitmdW5jdGlvbiBzY19tYWtlanNTdHJpbmcoaywgYykg
eworICAgIHZhciBmaWxsOworICAgIGlmIChjKQorCWZpbGwgPSBjLnZhbDsKKyAgICBlbHNlCisJ
ZmlsbCA9ICIgIjsKKyAgICByZXR1cm4gc2NfbWFrZUpTU3RyaW5nT2ZMZW5ndGgoaywgZmlsbCk7
Cit9CisKK2Z1bmN0aW9uIHNjX2pzc3RyaW5nMmxpc3QocykgeworICAgIHZhciByZXMgPSBudWxs
OworICAgIGZvciAodmFyIGkgPSBzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQorCXJlcyA9IHNj
X2NvbnMobmV3IHNjX0NoYXIocy5jaGFyQXQoaSkpLCByZXMpOworICAgIHJldHVybiByZXM7Cit9
CisKK2Z1bmN0aW9uIHNjX2xpc3QyanNzdHJpbmcobCkgeworICAgIHZhciBhID0gbmV3IEFycmF5
KCk7CisgICAgd2hpbGUobCAhPT0gbnVsbCkgeworCWEucHVzaChsLmNhci52YWwpOworCWwgPSBs
LmNkcjsKKyAgICB9CisgICAgcmV0dXJuICIiLmNvbmNhdC5hcHBseSgiIiwgYSk7Cit9CisKK3Zh
ciBzY19WZWN0b3IgPSBBcnJheTsKKworc2NfVmVjdG9yLnByb3RvdHlwZS5zY190b1dyaXRlT3JE
aXNwbGF5U3RyaW5nID0gZnVuY3Rpb24od3JpdGVPckRpc3BsYXkpIHsKKyAgICBpZiAodGhpcy5s
ZW5ndGggPT09IDApIHJldHVybiAiIygpIjsKKworICAgIHZhciByZXMgPSAiIygiICsgd3JpdGVP
ckRpc3BsYXkodGhpc1swXSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0aGlzLmxlbmd0aDsg
aSsrKQorCXJlcyArPSAiICIgKyB3cml0ZU9yRGlzcGxheSh0aGlzW2ldKTsKKyAgICByZXMgKz0g
IikiOworICAgIHJldHVybiByZXM7Cit9Oworc2NfVmVjdG9yLnByb3RvdHlwZS5zY190b0Rpc3Bs
YXlTdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5zY190b1dyaXRlT3JEaXNw
bGF5U3RyaW5nKHNjX3RvRGlzcGxheVN0cmluZyk7Cit9Oworc2NfVmVjdG9yLnByb3RvdHlwZS5z
Y190b1dyaXRlU3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMuc2NfdG9Xcml0
ZU9yRGlzcGxheVN0cmluZyhzY190b1dyaXRlU3RyaW5nKTsKK307CisKKy8qKiogTUVUQSAoKGV4
cG9ydCB2ZWN0b3I/IGFycmF5PykKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAg
KHBlZXBob2xlIChwb3N0Zml4ICIgaW5zdGFuY2VvZiBzY19WZWN0b3IiKSkpCisqLworZnVuY3Rp
b24gc2NfaXNWZWN0b3IodikgeworICAgIHJldHVybiAodiBpbnN0YW5jZW9mIHNjX1ZlY3Rvcik7
Cit9CisKKy8vIG9ubHkgYXBwbGllcyB0byB2ZWN0b3JzCitmdW5jdGlvbiBzY19pc1ZlY3RvckVx
dWFsKHYxLCB2MiwgY29tcCkgeworICAgIGlmICh2MS5sZW5ndGggIT09IHYyLmxlbmd0aCkgcmV0
dXJuIGZhbHNlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspCisJaWYg
KCFjb21wKHYxW2ldLCB2MltpXSkpIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0IG1ha2UtdmVjdG9yIG1ha2UtYXJyYXkpKSAqLworZnVuY3Rp
b24gc2NfbWFrZVZlY3RvcihzaXplLCBmaWxsKSB7CisgICAgdmFyIGEgPSBuZXcgc2NfVmVjdG9y
KHNpemUpOworICAgIGlmIChmaWxsICE9PSB1bmRlZmluZWQpCisJc2NfdmVjdG9yRmlsbEJhbmco
YSwgZmlsbCk7CisgICAgcmV0dXJuIGE7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCB2ZWN0b3Ig
YXJyYXkpCisgICAgICAgICAgIChwZWVwaG9sZSAodmVjdG9yKSkpCisqLworZnVuY3Rpb24gc2Nf
dmVjdG9yKCkgeworICAgIHZhciBhID0gbmV3IHNjX1ZlY3RvcigpOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorCWEucHVzaChhcmd1bWVudHNbaV0pOwor
ICAgIHJldHVybiBhOworfQorCisvKioqIE1FVEEgKChleHBvcnQgdmVjdG9yLWxlbmd0aCBhcnJh
eS1sZW5ndGgpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmxlbmd0aCIpKSkKKyov
CitmdW5jdGlvbiBzY192ZWN0b3JMZW5ndGgodikgeworICAgIHJldHVybiB2Lmxlbmd0aDsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0IHZlY3Rvci1yZWYgYXJyYXktcmVmKQorICAgICAgICAgICAo
cGVlcGhvbGUgKGhvbGUgMiB2ICJbIiBwb3MgIl0iKSkpCisqLworZnVuY3Rpb24gc2NfdmVjdG9y
UmVmKHYsIHBvcykgeworICAgIHJldHVybiB2W3Bvc107Cit9CisKKy8qKiogTUVUQSAoKGV4cG9y
dCB2ZWN0b3Itc2V0ISBhcnJheS1zZXQhKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMyB2
ICJbIiBwb3MgIl0gPSAiIHZhbCkpKQorKi8KK2Z1bmN0aW9uIHNjX3ZlY3RvclNldEJhbmcodiwg
cG9zLCB2YWwpIHsKKyAgICB2W3Bvc10gPSB2YWw7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCB2
ZWN0b3ItPmxpc3QgYXJyYXktPmxpc3QpKSAqLworZnVuY3Rpb24gc2NfdmVjdG9yMmxpc3QoYSkg
eworICAgIHZhciByZXMgPSBudWxsOworICAgIGZvciAodmFyIGkgPSBhLmxlbmd0aC0xOyBpID49
IDA7IGktLSkKKwlyZXMgPSBzY19jb25zKGFbaV0sIHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0IGxpc3QtPnZlY3RvciBsaXN0LT5hcnJheSkpICovCitmdW5j
dGlvbiBzY19saXN0MnZlY3RvcihsKSB7CisgICAgdmFyIGEgPSBuZXcgc2NfVmVjdG9yKCk7Cisg
ICAgd2hpbGUobCAhPT0gbnVsbCkgeworCWEucHVzaChsLmNhcik7CisJbCA9IGwuY2RyOworICAg
IH0KKyAgICByZXR1cm4gYTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IHZlY3Rvci1maWxsISBh
cnJheS1maWxsISkpICovCitmdW5jdGlvbiBzY192ZWN0b3JGaWxsQmFuZyhhLCBmaWxsKSB7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorCWFbaV0gPSBmaWxsOworfQor
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19jb3B5VmVjdG9yKGEs
IGxlbikgeworICAgIGlmIChsZW4gPD0gYS5sZW5ndGgpCisJcmV0dXJuIGEuc2xpY2UoMCwgbGVu
KTsKKyAgICBlbHNlIHsKKwl2YXIgdG1wID0gYS5jb25jYXQoKTsKKwl0bXAubGVuZ3RoID0gbGVu
OworCXJldHVybiB0bXA7CisgICAgfQorfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAg
ICAgICAgIChwZWVwaG9sZSAoaG9sZSAzIGEgIi5zbGljZSgiIHN0YXJ0ICIsIiBlbmQgIikiKSkp
CisqLworZnVuY3Rpb24gc2NfdmVjdG9yQ29weShhLCBzdGFydCwgZW5kKSB7CisgICAgcmV0dXJu
IGEuc2xpY2Uoc3RhcnQsIGVuZCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitm
dW5jdGlvbiBzY192ZWN0b3JDb3B5QmFuZyh0YXJnZXQsIHRzdGFydCwgc291cmNlLCBzc3RhcnQs
IHNlbmQpIHsKKyAgICBpZiAoIXNzdGFydCkgc3N0YXJ0ID0gMDsKKyAgICBpZiAoIXNlbmQpIHNl
bmQgPSBzb3VyY2UubGVuZ3RoOworCisgICAgLy8gaWYgdGFyZ2V0ID09IHNvdXJjZSB3ZSBkb24n
dCB3YW50IHRvIG92ZXJ3cml0ZSBub3QgeWV0IGNvcGllZCBlbGVtZW50cy4KKyAgICBpZiAodHN0
YXJ0IDw9IHNzdGFydCkgeworCWZvciAodmFyIGkgPSB0c3RhcnQsIGogPSBzc3RhcnQ7IGogPCBz
ZW5kOyBpKyssIGorKykgeworCSAgICB0YXJnZXRbaV0gPSBzb3VyY2Vbal07CisJfQorICAgIH0g
ZWxzZSB7CisJdmFyIGRpZmYgPSBzZW5kIC0gc3N0YXJ0OworCWZvciAodmFyIGkgPSB0c3RhcnQg
KyBkaWZmIC0gMSwgaiA9IHNlbmQgLSAxOworCSAgICAgaiA+PSBzc3RhcnQ7CisJICAgICBpLS0s
IGotLSkgeworCSAgICB0YXJnZXRbaV0gPSBzb3VyY2Vbal07CisJfQorICAgIH0KKyAgICByZXR1
cm4gdGFyZ2V0OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBl
IGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAxICJ0eXBlb2YgIiBvICIgPT09ICdm
dW5jdGlvbiciKSkpCisqLworZnVuY3Rpb24gc2NfaXNQcm9jZWR1cmUobykgeworICAgIHJldHVy
biAodHlwZW9mIG8gPT09ICJmdW5jdGlvbiIpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
KSAqLworZnVuY3Rpb24gc2NfYXBwbHkocHJvYykgeworICAgIHZhciBhcmdzID0gbmV3IEFycmF5
KCk7CisgICAgLy8gZmlyc3QgcGFydCBvZiBhcmd1bWVudHMgYXJlIG5vdCBpbiBsaXN0LWZvcm0u
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKQorCWFy
Z3MucHVzaChhcmd1bWVudHNbaV0pOworICAgIHZhciBsID0gYXJndW1lbnRzW2FyZ3VtZW50cy5s
ZW5ndGggLSAxXTsKKyAgICB3aGlsZSAobCAhPT0gbnVsbCkgeworCWFyZ3MucHVzaChsLmNhcik7
CisJbCA9IGwuY2RyOworICAgIH0KKyAgICByZXR1cm4gcHJvYy5hcHBseShudWxsLCBhcmdzKTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX21hcChwcm9jLCBs
MSkgeworICAgIGlmIChsMSA9PT0gdW5kZWZpbmVkKQorCXJldHVybiBudWxsOworICAgIC8vIGVs
c2UKKyAgICB2YXIgbmJBcHBseUFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsKKyAgICB2YXIg
YXBwbHlBcmdzID0gbmV3IEFycmF5KG5iQXBwbHlBcmdzKTsKKyAgICB2YXIgcmV2cmVzID0gbnVs
bDsKKyAgICB3aGlsZSAobDEgIT09IG51bGwpIHsKKwlmb3IgKHZhciBpID0gMDsgaSA8IG5iQXBw
bHlBcmdzOyBpKyspIHsKKwkgICAgYXBwbHlBcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXS5jYXI7
CisJICAgIGFyZ3VtZW50c1tpICsgMV0gPSBhcmd1bWVudHNbaSArIDFdLmNkcjsKKwl9CisJcmV2
cmVzID0gc2NfY29ucyhwcm9jLmFwcGx5KG51bGwsIGFwcGx5QXJncyksIHJldnJlcyk7CisgICAg
fQorICAgIHJldHVybiBzY19yZXZlcnNlQXBwZW5kQmFuZyhyZXZyZXMsIG51bGwpOworfQorCisv
KioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbWFwQmFuZyhwcm9jLCBsMSkg
eworICAgIGlmIChsMSA9PT0gdW5kZWZpbmVkKQorCXJldHVybiBudWxsOworICAgIC8vIGVsc2UK
KyAgICB2YXIgbDFfb3JpZyA9IGwxOworICAgIHZhciBuYkFwcGx5QXJncyA9IGFyZ3VtZW50cy5s
ZW5ndGggLSAxOworICAgIHZhciBhcHBseUFyZ3MgPSBuZXcgQXJyYXkobmJBcHBseUFyZ3MpOwor
ICAgIHdoaWxlIChsMSAhPT0gbnVsbCkgeworCXZhciB0bXAgPSBsMTsKKwlmb3IgKHZhciBpID0g
MDsgaSA8IG5iQXBwbHlBcmdzOyBpKyspIHsKKwkgICAgYXBwbHlBcmdzW2ldID0gYXJndW1lbnRz
W2kgKyAxXS5jYXI7CisJICAgIGFyZ3VtZW50c1tpICsgMV0gPSBhcmd1bWVudHNbaSArIDFdLmNk
cjsKKwl9CisJdG1wLmNhciA9IHByb2MuYXBwbHkobnVsbCwgYXBwbHlBcmdzKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGwxX29yaWc7Cit9CisgICAgIAorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8K
K2Z1bmN0aW9uIHNjX2ZvckVhY2gocHJvYywgbDEpIHsKKyAgICBpZiAobDEgPT09IHVuZGVmaW5l
ZCkKKwlyZXR1cm4gdW5kZWZpbmVkOworICAgIC8vIGVsc2UKKyAgICB2YXIgbmJBcHBseUFyZ3Mg
PSBhcmd1bWVudHMubGVuZ3RoIC0gMTsKKyAgICB2YXIgYXBwbHlBcmdzID0gbmV3IEFycmF5KG5i
QXBwbHlBcmdzKTsKKyAgICB3aGlsZSAobDEgIT09IG51bGwpIHsKKwlmb3IgKHZhciBpID0gMDsg
aSA8IG5iQXBwbHlBcmdzOyBpKyspIHsKKwkgICAgYXBwbHlBcmdzW2ldID0gYXJndW1lbnRzW2kg
KyAxXS5jYXI7CisJICAgIGFyZ3VtZW50c1tpICsgMV0gPSBhcmd1bWVudHNbaSArIDFdLmNkcjsK
Kwl9CisJcHJvYy5hcHBseShudWxsLCBhcHBseUFyZ3MpOworICAgIH0KKyAgICAvLyBhZGQgcmV0
dXJuIHNvIEZGIGRvZXMgbm90IGNvbXBsYWluLgorICAgIHJldHVybiB1bmRlZmluZWQ7Cit9CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19maWx0ZXIocHJvYywgbDEp
IHsKKyAgICB2YXIgZHVtbXkgPSB7IGNkciA6IG51bGwgfTsKKyAgICB2YXIgdGFpbCA9IGR1bW15
OworICAgIHdoaWxlIChsMSAhPT0gbnVsbCkgeworCWlmIChwcm9jKGwxLmNhcikgIT09IGZhbHNl
KSB7CisJICAgIHRhaWwuY2RyID0gc2NfY29ucyhsMS5jYXIsIG51bGwpOworCSAgICB0YWlsID0g
dGFpbC5jZHI7CisJfQorCWwxID0gbDEuY2RyOworICAgIH0KKyAgICByZXR1cm4gZHVtbXkuY2Ry
OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZmlsdGVyQmFu
Zyhwcm9jLCBsMSkgeworICAgIHZhciBoZWFkID0gc2NfY29ucygiZHVtbXkiLCBsMSk7CisgICAg
dmFyIGl0ID0gaGVhZDsKKyAgICB2YXIgbmV4dCA9IGwxOworICAgIHdoaWxlIChuZXh0ICE9PSBu
dWxsKSB7CisgICAgICAgIGlmIChwcm9jKG5leHQuY2FyKSAhPT0gZmFsc2UpIHsKKwkgICAgaXQu
Y2RyID0gbmV4dAorCSAgICBpdCA9IG5leHQ7CisJfQorCW5leHQgPSBuZXh0LmNkcjsKKyAgICB9
CisgICAgaXQuY2RyID0gbnVsbDsKKyAgICByZXR1cm4gaGVhZC5jZHI7Cit9CisKK2Z1bmN0aW9u
IHNjX2ZpbHRlck1hcDEocHJvYywgbDEpIHsKKyAgICB2YXIgcmV2cmVzID0gbnVsbDsKKyAgICB3
aGlsZSAobDEgIT09IG51bGwpIHsKKyAgICAgICAgdmFyIHRtcCA9IHByb2MobDEuY2FyKQorICAg
ICAgICBpZiAodG1wICE9PSBmYWxzZSkgcmV2cmVzID0gc2NfY29ucyh0bXAsIHJldnJlcyk7Cisg
ICAgICAgIGwxID0gbDEuY2RyOworICAgIH0KKyAgICByZXR1cm4gc2NfcmV2ZXJzZUFwcGVuZEJh
bmcocmV2cmVzLCBudWxsKTsKK30KK2Z1bmN0aW9uIHNjX2ZpbHRlck1hcDIocHJvYywgbDEsIGwy
KSB7CisgICAgdmFyIHJldnJlcyA9IG51bGw7CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7Cisg
ICAgICAgIHZhciB0bXAgPSBwcm9jKGwxLmNhciwgbDIuY2FyKTsKKyAgICAgICAgaWYodG1wICE9
PSBmYWxzZSkgcmV2cmVzID0gc2NfY29ucyh0bXAsIHJldnJlcyk7CisJbDEgPSBsMS5jZHI7CisJ
bDIgPSBsMi5jZHIKKyAgICB9CisgICAgcmV0dXJuIHNjX3JldmVyc2VBcHBlbmRCYW5nKHJldnJl
cywgbnVsbCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19m
aWx0ZXJNYXAocHJvYywgbDEsIGwyLCBsMykgeworICAgIGlmIChsMiA9PT0gdW5kZWZpbmVkKQor
CXJldHVybiBzY19maWx0ZXJNYXAxKHByb2MsIGwxKTsKKyAgICBlbHNlIGlmIChsMyA9PT0gdW5k
ZWZpbmVkKQorCXJldHVybiBzY19maWx0ZXJNYXAyKHByb2MsIGwxLCBsMik7CisgICAgLy8gZWxz
ZQorICAgIHZhciBuYkFwcGx5QXJncyA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOworICAgIHZhciBh
cHBseUFyZ3MgPSBuZXcgQXJyYXkobmJBcHBseUFyZ3MpOworICAgIHZhciByZXZyZXMgPSBudWxs
OworICAgIHdoaWxlIChsMSAhPT0gbnVsbCkgeworCWZvciAodmFyIGkgPSAwOyBpIDwgbmJBcHBs
eUFyZ3M7IGkrKykgeworCSAgICBhcHBseUFyZ3NbaV0gPSBhcmd1bWVudHNbaSArIDFdLmNhcjsK
KwkgICAgYXJndW1lbnRzW2kgKyAxXSA9IGFyZ3VtZW50c1tpICsgMV0uY2RyOworCX0KKwl2YXIg
dG1wID0gcHJvYy5hcHBseShudWxsLCBhcHBseUFyZ3MpOworCWlmKHRtcCAhPT0gZmFsc2UpIHJl
dnJlcyA9IHNjX2NvbnModG1wLCByZXZyZXMpOworICAgIH0KKyAgICByZXR1cm4gc2NfcmV2ZXJz
ZUFwcGVuZEJhbmcocmV2cmVzLCBudWxsKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkg
Ki8KK2Z1bmN0aW9uIHNjX2FueShwcm9jLCBsKSB7CisgICAgdmFyIHJldnJlcyA9IG51bGw7Cisg
ICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKyAgICAgICAgdmFyIHRtcCA9IHByb2MobC5jYXIpOwor
ICAgICAgICBpZih0bXAgIT09IGZhbHNlKSByZXR1cm4gdG1wOworCWwgPSBsLmNkcjsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKioqIE1FVEEgKChleHBvcnQgYW55PykKKyAgICAg
ICAgICAgKHBlZXBob2xlIChob2xlIDIgInNjX2FueSgiIHByb2MgIiwiIGwgIikgIT09IGZhbHNl
IikpKQorKi8KK2Z1bmN0aW9uIHNjX2FueVByZWQocHJvYywgbCkgeworICAgIHJldHVybiBzY19h
bnkocHJvYywgbCkhPT0gZmFsc2U7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitm
dW5jdGlvbiBzY19ldmVyeShwcm9jLCBsKSB7CisgICAgdmFyIHJldnJlcyA9IG51bGw7CisgICAg
dmFyIHRtcCA9IHRydWU7CisgICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKyAgICAgICAgdG1wID0g
cHJvYyhsLmNhcik7CisgICAgICAgIGlmICh0bXAgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7CisJ
bCA9IGwuY2RyOworICAgIH0KKyAgICByZXR1cm4gdG1wOworfQorCisvKioqIE1FVEEgKChleHBv
cnQgZXZlcnk/KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiAic2NfZXZlcnkoIiBwcm9j
ICIsIiBsICIpICE9PSBmYWxzZSIpKSkKKyovCitmdW5jdGlvbiBzY19ldmVyeVByZWQocHJvYywg
bCkgeworICAgIHZhciB0bXAgPSBzY19ldmVyeShwcm9jLCBsKTsKKyAgICBpZiAodG1wICE9PSBm
YWxzZSkgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiKCkiKSkpCisqLworZnVu
Y3Rpb24gc2NfZm9yY2UobykgeworICAgIHJldHVybiBvKCk7Cit9CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19tYWtlUHJvbWlzZShwcm9jKSB7CisgICAgdmFyIGlz
UmVzdWx0UmVhZHkgPSBmYWxzZTsKKyAgICB2YXIgcmVzdWx0ID0gdW5kZWZpbmVkOworICAgIHJl
dHVybiBmdW5jdGlvbigpIHsKKwlpZiAoIWlzUmVzdWx0UmVhZHkpIHsKKwkgICAgdmFyIHRtcCA9
IHByb2MoKTsKKwkgICAgaWYgKCFpc1Jlc3VsdFJlYWR5KSB7CisJCWlzUmVzdWx0UmVhZHkgPSB0
cnVlOworCQlyZXN1bHQgPSB0bXA7CisJICAgIH0KKwl9CisJcmV0dXJuIHJlc3VsdDsKKyAgICB9
OworfQorCitmdW5jdGlvbiBzY19WYWx1ZXModmFsdWVzKSB7CisgICAgdGhpcy52YWx1ZXMgPSB2
YWx1ZXM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xl
ICh2YWx1ZXMpKSkKKyovCitmdW5jdGlvbiBzY192YWx1ZXMoKSB7CisgICAgaWYgKGFyZ3VtZW50
cy5sZW5ndGggPT09IDEpCisJcmV0dXJuIGFyZ3VtZW50c1swXTsKKyAgICBlbHNlCisJcmV0dXJu
IG5ldyBzY19WYWx1ZXMoYXJndW1lbnRzKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkg
Ki8KK2Z1bmN0aW9uIHNjX2NhbGxXaXRoVmFsdWVzKHByb2R1Y2VyLCBjb25zdW1lcikgeworICAg
IHZhciBwcm9kdWNlZCA9IHByb2R1Y2VyKCk7CisgICAgaWYgKHByb2R1Y2VkIGluc3RhbmNlb2Yg
c2NfVmFsdWVzKQorCXJldHVybiBjb25zdW1lci5hcHBseShudWxsLCBwcm9kdWNlZC52YWx1ZXMp
OworICAgIGVsc2UKKwlyZXR1cm4gY29uc3VtZXIocHJvZHVjZWQpOworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZHluYW1pY1dpbmQoYmVmb3JlLCB0aHVuaywg
YWZ0ZXIpIHsKKyAgICBiZWZvcmUoKTsKKyAgICB0cnkgeworCXZhciByZXMgPSB0aHVuaygpOwor
CXJldHVybiByZXM7CisgICAgfSBmaW5hbGx5IHsKKwlhZnRlcigpOworICAgIH0KK30KKworCisv
LyBUT0RPOiBldmFsL3NjaGVtZS1yZXBvcnQtZW52aXJvbm1lbnQvbnVsbC1lbnZpcm9ubWVudC9p
bnRlcmFjdGlvbi1lbnZpcm9ubWVudAorCisvLyBMSU1JVEFUSU9OOiAnbG9hZCcgZG9lc24ndCBl
eGlzdCB3aXRob3V0IGZpbGVzLgorLy8gTElNSVRBVElPTjogdHJhbnNjcmlwdC1vbi90cmFuc2Ny
aXB0LW9mZiBkb2Vzbid0IGV4aXN0IHdpdGhvdXQgZmlsZXMuCisKKworZnVuY3Rpb24gc2NfU3Ry
dWN0KG5hbWUpIHsKKyAgICB0aGlzLm5hbWUgPSBuYW1lOworfQorc2NfU3RydWN0LnByb3RvdHlw
ZS5zY190b0Rpc3BsYXlTdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gIiM8c3RydWN0
IiArIHNjX2hhc2godGhpcykgKyAiPiI7Cit9Oworc2NfU3RydWN0LnByb3RvdHlwZS5zY190b1dy
aXRlU3RyaW5nID0gc2NfU3RydWN0LnByb3RvdHlwZS5zY190b0Rpc3BsYXlTdHJpbmc7CisKKy8q
KiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDEgIm5ldyBz
Y19TdHJ1Y3QoIiBuYW1lICIpIikpKQorKi8KK2Z1bmN0aW9uIHNjX21ha2VTdHJ1Y3QobmFtZSkg
eworICAgIHJldHVybiBuZXcgc2NfU3RydWN0KG5hbWUpOworfQorCisvKioqIE1FVEEgKChleHBv
cnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9z
dGZpeCAiIGluc3RhbmNlb2Ygc2NfU3RydWN0IikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzU3RydWN0
KG8pIHsKKyAgICByZXR1cm4gKG8gaW5zdGFuY2VvZiBzY19TdHJ1Y3QpOworfQorCisvKioqIE1F
VEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVw
aG9sZSAoaG9sZSAyICIoIiAxICIgaW5zdGFuY2VvZiBzY19TdHJ1Y3QpICYmICggIiAxICIubmFt
ZSA9PT0gIiAwICIpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzU3RydWN0TmFtZWQobmFtZSwgcykg
eworICAgIHJldHVybiAoKHMgaW5zdGFuY2VvZiBzY19TdHJ1Y3QpICYmIChzLm5hbWUgPT09IG5h
bWUpKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IHN0cnVjdC1maWVsZCkKKyAgICAgICAgICAg
KHBlZXBob2xlIChob2xlIDMgMCAiWyIgMiAiXSIpKSkKKyovCitmdW5jdGlvbiBzY19nZXRTdHJ1
Y3RGaWVsZChzLCBuYW1lLCBmaWVsZCkgeworICAgIHJldHVybiBzW2ZpZWxkXTsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0IHN0cnVjdC1maWVsZC1zZXQhKQorICAgICAgICAgICAocGVlcGhvbGUg
KGhvbGUgNCAwICJbIiAyICJdID0gIiAzKSkpCisqLworZnVuY3Rpb24gc2Nfc2V0U3RydWN0Rmll
bGRCYW5nKHMsIG5hbWUsIGZpZWxkLCB2YWwpIHsKKyAgICBzW2ZpZWxkXSA9IHZhbDsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHByZWZpeCAifiIp
KSkKKyovCitmdW5jdGlvbiBzY19iaXROb3QoeCkgeworICAgIHJldHVybiB+eDsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDIgMiAiJiIp
KSkKKyovCitmdW5jdGlvbiBzY19iaXRBbmQoeCwgeSkgeworICAgIHJldHVybiB4ICYgeTsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDIg
MiAifCIpKSkKKyovCitmdW5jdGlvbiBzY19iaXRPcih4LCB5KSB7CisgICAgcmV0dXJuIHggfCB5
OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaW5m
aXggMiAyICJeIikpKQorKi8KK2Z1bmN0aW9uIHNjX2JpdFhvcih4LCB5KSB7CisgICAgcmV0dXJu
IHggXiB5OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9s
ZSAoaW5maXggMiAyICI8PCIpKSkKKyovCitmdW5jdGlvbiBzY19iaXRMc2goeCwgeSkgeworICAg
IHJldHVybiB4IDw8IHk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAg
KHBlZXBob2xlIChpbmZpeCAyIDIgIj4+IikpKQorKi8KK2Z1bmN0aW9uIHNjX2JpdFJzaCh4LCB5
KSB7CisgICAgcmV0dXJuIHggPj4geTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAg
ICAgICAgICAocGVlcGhvbGUgKGluZml4IDIgMiAiPj4+IikpKQorKi8KK2Z1bmN0aW9uIHNjX2Jp
dFVyc2goeCwgeSkgeworICAgIHJldHVybiB4ID4+PiB5OworfQorCisvKioqIE1FVEEgKChleHBv
cnQganMtZmllbGQganMtcHJvcGVydHkpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIG8g
IlsiIGZpZWxkICJdIikpKQorKi8KK2Z1bmN0aW9uIHNjX2pzRmllbGQobywgZmllbGQpIHsKKyAg
ICByZXR1cm4gb1tmaWVsZF07Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBqcy1maWVsZC1zZXQh
IGpzLXByb3BlcnR5LXNldCEpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAzIG8gIlsiIGZp
ZWxkICJdID0gIiB2YWwpKSkKKyovCitmdW5jdGlvbiBzY19zZXRKc0ZpZWxkQmFuZyhvLCBmaWVs
ZCwgdmFsKSB7CisgICAgcmV0dXJuIG9bZmllbGRdID0gdmFsOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQganMtZmllbGQtZGVsZXRlISBqcy1wcm9wZXJ0eS1kZWxldGUhKQorICAgICAgICAgICAo
cGVlcGhvbGUgKGhvbGUgMiAiZGVsZXRlIiBvICJbIiBmaWVsZCAiXSIpKSkKKyovCitmdW5jdGlv
biBzY19kZWxldGVKc0ZpZWxkQmFuZyhvLCBmaWVsZCkgeworICAgIGRlbGV0ZSBvW2ZpZWxkXTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGpzQ2Fs
bCkpKQorKi8KK2Z1bmN0aW9uIHNjX2pzQ2FsbChvLCBmdW4pIHsKKyAgICB2YXIgYXJncyA9IG5l
dyBBcnJheSgpOworICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsr
KQorCWFyZ3NbaS0yXSA9IGFyZ3VtZW50c1tpXTsKKyAgICByZXR1cm4gZnVuLmFwcGx5KG8sIGFy
Z3MpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAo
anNNZXRob2RDYWxsKSkpCisqLworZnVuY3Rpb24gc2NfanNNZXRob2RDYWxsKG8sIGZpZWxkKSB7
CisgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoKTsKKyAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFy
Z3VtZW50cy5sZW5ndGg7IGkrKykKKwlhcmdzW2ktMl0gPSBhcmd1bWVudHNbaV07CisgICAgcmV0
dXJuIG9bZmllbGRdLmFwcGx5KG8sIGFyZ3MpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgbmV3
IGpzLW5ldykKKyAgICAgICAgICAgKHBlZXBob2xlIChqc05ldykpKQorKi8KK2Z1bmN0aW9uIHNj
X2pzTmV3KGMpIHsKKyAgICB2YXIgZXZhbFN0ciA9ICJuZXcgYygiOworICAgIGV2YWxTdHIgKz1h
cmd1bWVudHMubGVuZ3RoID4gMT8gImFyZ3VtZW50c1sxXSI6ICIiOworICAgIGZvciAodmFyIGkg
PSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorCWV2YWxTdHIgKz0gIiwgYXJndW1lbnRz
WyIgKyBpICsgIl0iOworICAgIGV2YWxTdHIgKz0iKSI7CisgICAgcmV0dXJuIGV2YWwoZXZhbFN0
cik7Cit9ICAgIAorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT0gUmVnRXhwID09PT09PT09
PT09PT09PT09PT09CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJl
Z2V4cChyZSkgeworICAgIHJldHVybiBuZXcgUmVnRXhwKHNjX3N0cmluZzJqc3N0cmluZyhyZSkp
OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJlZ2V4cE1h
dGNoKHJlLCBzKSB7CisgICAgdmFyIHJlZyA9IChyZSBpbnN0YW5jZW9mIFJlZ0V4cCkgPyByZSA6
IHNjX3ByZWdleHAocmUpOworICAgIHZhciB0bXAgPSByZWcuZXhlYyhzY19zdHJpbmcyanNzdHJp
bmcocykpOworICAgIAorICAgIGlmICh0bXAgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIHZhciByZXMgPSBudWxsOworICAgIGZvciAodmFyIGkgPSB0bXAubGVuZ3RoLTE7IGkgPj0g
MDsgaS0tKSB7CisJaWYgKHRtcFtpXSAhPT0gbnVsbCkgeworCSAgICByZXMgPSBzY19jb25zKHNj
X2pzc3RyaW5nMnN0cmluZyh0bXBbaV0pLCByZXMpOworCX0gZWxzZSB7CisJICAgIHJlcyA9IHNj
X2NvbnMoZmFsc2UsIHJlcyk7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorICAgCisv
KioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJlZ2V4cFJlcGxhY2UocmUs
IHMxLCBzMikgeworICAgdmFyIHJlZzsKKyAgIHZhciBqc3MxID0gc2Nfc3RyaW5nMmpzc3RyaW5n
KHMxKTsKKyAgIHZhciBqc3MyID0gc2Nfc3RyaW5nMmpzc3RyaW5nKHMyKTsKKworICAgaWYgKHJl
IGluc3RhbmNlb2YgUmVnRXhwKSB7CisgICAgICAgaWYgKHJlLmdsb2JhbCkKKwkgICByZWcgPSBy
ZTsKKyAgICAgICBlbHNlCisJICAgcmVnID0gbmV3IFJlZ0V4cChyZS5zb3VyY2UpOworICAgfSBl
bHNlIHsKKyAgICAgICByZWcgPSBuZXcgUmVnRXhwKHNjX3N0cmluZzJqc3N0cmluZyhyZSkpOwor
ICAgfQorCisgICByZXR1cm4ganNzMS5yZXBsYWNlKHJlZywganNzMik7Cit9CisgICAKKy8qKiog
TUVUQSAoKGV4cG9ydCBwcmVnZXhwLXJlcGxhY2UqKSkgKi8KK2Z1bmN0aW9uIHNjX3ByZWdleHBS
ZXBsYWNlQWxsKHJlLCBzMSwgczIpIHsKKyAgIHZhciByZWc7CisgICB2YXIganNzMSA9IHNjX3N0
cmluZzJqc3N0cmluZyhzMSk7CisgICB2YXIganNzMiA9IHNjX3N0cmluZzJqc3N0cmluZyhzMik7
CisKKyAgIGlmIChyZSBpbnN0YW5jZW9mIFJlZ0V4cCkgeworICAgICAgaWYgKHJlLmdsb2JhbCkK
KwkgIHJlZyA9IHJlOworICAgICAgZWxzZQorCSAgcmVnID0gbmV3IFJlZ0V4cChyZS5zb3VyY2Us
ICJnIik7CisgICB9IGVsc2UgeworICAgICAgIHJlZyA9IG5ldyBSZWdFeHAoc2Nfc3RyaW5nMmpz
c3RyaW5nKHJlKSwgImciKTsKKyAgIH0KKworICAgcmV0dXJuIGpzczEucmVwbGFjZShyZWcsIGpz
czIpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJlZ2V4
cFNwbGl0KHJlLCBzKSB7CisgICB2YXIgcmVnID0gKChyZSBpbnN0YW5jZW9mIFJlZ0V4cCkgPwor
CSAgICAgIHJlIDoKKwkgICAgICBuZXcgUmVnRXhwKHNjX3N0cmluZzJqc3N0cmluZyhyZSkpKTsK
KyAgIHZhciBqc3MgPSBzY19zdHJpbmcyanNzdHJpbmcocyk7CisgICB2YXIgdG1wID0ganNzLnNw
bGl0KHJlZyk7CisKKyAgIGlmICh0bXAgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworCisgICByZXR1
cm4gc2NfdmVjdG9yMmxpc3QodG1wKTsKK30KKyAgIAorCisvKiA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g
Ki8KKy8qIE90aGVyIGxpYnJhcnkgc3R1ZmYgKi8KKy8qID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAxICJN
YXRoLmZsb29yKE1hdGgucmFuZG9tKCkqIiAnbiAiKSIpKSkKKyovCitmdW5jdGlvbiBzY19yYW5k
b20obikgeworICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbik7Cit9CisKKy8q
KiogTUVUQSAoKGV4cG9ydCBjdXJyZW50LWRhdGUpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9s
ZSAwICJuZXcgRGF0ZSgpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2N1cnJlbnREYXRlKCkgeworICAg
cmV0dXJuIG5ldyBEYXRlKCk7Cit9CisKK2Z1bmN0aW9uIHNjX0hhc2h0YWJsZSgpIHsKK30KK3Nj
X0hhc2h0YWJsZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4g
IiN7JWhhc2h0YWJsZX0iOworfTsKKy8vIHNjX3RvV3JpdGVTdHJpbmcgPT0gc2NfdG9EaXNwbGF5
U3RyaW5nID09IHRvU3RyaW5nCisKK2Z1bmN0aW9uIHNjX0hhc2h0YWJsZUVsZW1lbnQoa2V5LCB2
YWwpIHsKKyAgICB0aGlzLmtleSA9IGtleTsKKyAgICB0aGlzLnZhbCA9IHZhbDsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMCAibmV3IHNj
X0hhc2h0YWJsZSgpIikpKQorKi8KK2Z1bmN0aW9uIHNjX21ha2VIYXNodGFibGUoKSB7CisgICAg
cmV0dXJuIG5ldyBzY19IYXNodGFibGUoKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkg
Ki8KK2Z1bmN0aW9uIHNjX2hhc2h0YWJsZVB1dEJhbmcoaHQsIGtleSwgdmFsKSB7CisgICAgdmFy
IGhhc2ggPSBzY19oYXNoKGtleSk7CisgICAgaHRbaGFzaF0gPSBuZXcgc2NfSGFzaHRhYmxlRWxl
bWVudChrZXksIHZhbCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlv
biBzY19oYXNodGFibGVHZXQoaHQsIGtleSkgeworICAgIHZhciBoYXNoID0gc2NfaGFzaChrZXkp
OworICAgIGlmIChoYXNoIGluIGh0KQorCXJldHVybiBodFtoYXNoXS52YWw7CisgICAgZWxzZQor
CXJldHVybiBmYWxzZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9u
IHNjX2hhc2h0YWJsZUZvckVhY2goaHQsIGYpIHsKKyAgICBmb3IgKHZhciB2IGluIGh0KSB7CisJ
aWYgKGh0W3ZdIGluc3RhbmNlb2Ygc2NfSGFzaHRhYmxlRWxlbWVudCkKKwkgICAgZihodFt2XS5r
ZXksIGh0W3ZdLnZhbCk7CisgICAgfQorfQorCisvKioqIE1FVEEgKChleHBvcnQgaGFzaHRhYmxl
LWNvbnRhaW5zPykKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgInNjX2hhc2goIiAxICIp
IGluICIgMCkpKQorKi8KK2Z1bmN0aW9uIHNjX2hhc2h0YWJsZUNvbnRhaW5zKGh0LCBrZXkpIHsK
KyAgICB2YXIgaGFzaCA9IHNjX2hhc2goa2V5KTsKKyAgICBpZiAoaGFzaCBpbiBodCkKKwlyZXR1
cm4gdHJ1ZTsKKyAgICBlbHNlCisJcmV0dXJuIGZhbHNlOworfQorCit2YXIgU0NfSEFTSF9DT1VO
VEVSID0gMDsKKworZnVuY3Rpb24gc2NfaGFzaChvKSB7CisgICAgaWYgKG8gPT09IG51bGwpCisJ
cmV0dXJuICJudWxsIjsKKyAgICBlbHNlIGlmIChvID09PSB1bmRlZmluZWQpCisJcmV0dXJuICJ1
bmRlZmluZWQiOworICAgIGVsc2UgaWYgKG8gPT09IHRydWUpCisJcmV0dXJuICJ0cnVlIjsKKyAg
ICBlbHNlIGlmIChvID09PSBmYWxzZSkKKwlyZXR1cm4gImZhbHNlIjsKKyAgICBlbHNlIGlmICh0
eXBlb2YgbyA9PT0gIm51bWJlciIpCisJcmV0dXJuICJudW0tIiArIG87CisgICAgZWxzZSBpZiAo
dHlwZW9mIG8gPT09ICJzdHJpbmciKQorCXJldHVybiAianNzdHItIiArIG87CisgICAgZWxzZSBp
ZiAoby5zY19nZXRIYXNoKQorCXJldHVybiBvLnNjX2dldEhhc2goKTsKKyAgICBlbHNlCisJcmV0
dXJuIHNjX2NvdW50ZXJIYXNoLmNhbGwobyk7Cit9CitmdW5jdGlvbiBzY19jb3VudGVySGFzaCgp
IHsKKyAgICBpZiAoIXRoaXMuc2NfaGFzaCkgeworCXRoaXMuc2NfaGFzaCA9ICJoYXNoLSIgKyBT
Q19IQVNIX0NPVU5URVI7CisJU0NfSEFTSF9DT1VOVEVSKys7CisgICAgfQorICAgIHJldHVybiB0
aGlzLnNjX2hhc2g7Cit9CisKK2Z1bmN0aW9uIHNjX1RyYW1wb2xpbmUoYXJncywgbWF4VGFpbENh
bGxzKSB7CisgICAgdGhpc1snX190cmFtcG9saW5lIHJldHVybl9fJ10gPSB0cnVlOworICAgIHRo
aXMuYXJncyA9IGFyZ3M7CisgICAgdGhpcy5NQVhfVEFJTF9DQUxMcyA9IG1heFRhaWxDYWxsczsK
K30KKy8vIFRPRE86IGNhbGwvY2Mgc3R1ZmYKK3NjX1RyYW1wb2xpbmUucHJvdG90eXBlLnJlc3Rh
cnQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgbyA9IHRoaXM7CisgICAgd2hpbGUgKHRydWUpIHsK
KwkvLyBzZXQgYm90aCBnbG9iYWxzLgorCVNDX1RBSUxfT0JKRUNULmNhbGxzID0gby5NQVhfVEFJ
TF9DQUxMcy0xOworCXZhciBmdW4gPSBvLmFyZ3MuY2FsbGVlOworCXZhciByZXMgPSBmdW4uYXBw
bHkoU0NfVEFJTF9PQkpFQ1QsIG8uYXJncyk7CisJaWYgKHJlcyBpbnN0YW5jZW9mIHNjX1RyYW1w
b2xpbmUpCisJICAgIG8gPSByZXM7CisJZWxzZQorCSAgICByZXR1cm4gcmVzOworICAgIH0KK30K
KworLyoqKiBNRVRBICgoZXhwb3J0IGJpbmQtZXhpdC1sYW1iZGEpKSAqLworZnVuY3Rpb24gc2Nf
YmluZEV4aXRMYW1iZGEocHJvYykgeworICAgIHZhciBlc2NhcGVfb2JqID0gbmV3IHNjX0JpbmRF
eGl0RXhjZXB0aW9uKCk7CisgICAgdmFyIGVzY2FwZSA9IGZ1bmN0aW9uKHJlcykgeworCWVzY2Fw
ZV9vYmoucmVzID0gcmVzOworCXRocm93IGVzY2FwZV9vYmo7CisgICAgfTsKKyAgICB0cnkgewor
CXJldHVybiBwcm9jKGVzY2FwZSk7CisgICAgfSBjYXRjaChlKSB7CisJaWYgKGUgPT09IGVzY2Fw
ZV9vYmopIHsKKwkgICAgcmV0dXJuIGUucmVzOworCX0KKwl0aHJvdyBlOworICAgIH0KK30KK2Z1
bmN0aW9uIHNjX0JpbmRFeGl0RXhjZXB0aW9uKCkgeworICAgIHRoaXMuX2ludGVybmFsRXhjZXB0
aW9uID0gdHJ1ZTsKK30KKwordmFyIFNDX1NDTTJKU19HTE9CQUxTID0gbmV3IE9iamVjdCgpOwor
CisvLyBkZWZhdWx0IHRhaWwtY2FsbCBkZXB0aC4KKy8vIG5vcm1hbGx5IHRoZSBwcm9ncmFtIHNo
b3VsZCBzZXQgaXQgYWdhaW4uIGJ1dCBqdXN0IGluIGNhc2UuLi4KK3ZhciBTQ19UQUlMX09CSkVD
VCA9IG5ldyBPYmplY3QoKTsKK1NDX1NDTTJKU19HTE9CQUxTLlRBSUxfT0JKRUNUID0gU0NfVEFJ
TF9PQkpFQ1Q7CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT0gSS9PID09PT09PT09PT09PT09
PT09PT09PT09CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworZnVuY3Rpb24gc2NfRU9GKCkgeworfQordmFy
IFNDX0VPRl9PQkpFQ1QgPSBuZXcgc2NfRU9GKCk7CisKK2Z1bmN0aW9uIHNjX1BvcnQoKSB7Cit9
CisKKy8qIC0tLS0tLS0tLS0tLS0tLSBJbnB1dCBwb3J0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8KKworZnVuY3Rpb24gc2NfSW5wdXRQb3J0KCkgeworfQorc2NfSW5w
dXRQb3J0LnByb3RvdHlwZSA9IG5ldyBzY19Qb3J0KCk7CisKK3NjX0lucHV0UG9ydC5wcm90b3R5
cGUucGVla0NoYXIgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoISgicGVla2VkIiBpbiB0aGlzKSkK
Kwl0aGlzLnBlZWtlZCA9IHRoaXMuZ2V0TmV4dENoYXIoKTsKKyAgICByZXR1cm4gdGhpcy5wZWVr
ZWQ7Cit9CitzY19JbnB1dFBvcnQucHJvdG90eXBlLnJlYWRDaGFyID0gZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHRtcCA9IHRoaXMucGVla0NoYXIoKTsKKyAgICBkZWxldGUgdGhpcy5wZWVrZWQ7Cisg
ICAgcmV0dXJuIHRtcDsKK30KK3NjX0lucHV0UG9ydC5wcm90b3R5cGUuaXNDaGFyUmVhZHkgPSBm
dW5jdGlvbigpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK3NjX0lucHV0UG9ydC5wcm90b3R5cGUu
Y2xvc2UgPSBmdW5jdGlvbigpIHsKKyAgICAvLyBkbyBub3RoaW5nCit9CisKKy8qIC4uLi4uLi4u
Li4uLi4uIFN0cmluZyBwb3J0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uKi8KK2Z1bmN0aW9u
IHNjX0Vycm9ySW5wdXRQb3J0KCkgeworfTsKK3NjX0Vycm9ySW5wdXRQb3J0LnByb3RvdHlwZSA9
IG5ldyBzY19JbnB1dFBvcnQoKTsKK3NjX0Vycm9ySW5wdXRQb3J0LnByb3RvdHlwZS5nZXROZXh0
Q2hhciA9IGZ1bmN0aW9uKCkgeworICAgIHRocm93ICJjYW4ndCByZWFkIGZyb20gZXJyb3ItcG9y
dC4iOworfTsKK3NjX0Vycm9ySW5wdXRQb3J0LnByb3RvdHlwZS5pc0NoYXJSZWFkeSA9IGZ1bmN0
aW9uKCkgeworICAgIHJldHVybiBmYWxzZTsKK307CisgICAgCisKKy8qIC4uLi4uLi4uLi4uLi4u
IFN0cmluZyBwb3J0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uKi8KKworZnVuY3Rpb24gc2Nf
U3RyaW5nSW5wdXRQb3J0KGpzU3RyKSB7CisgICAgLy8gd2UgYXJlIGdvaW5nIHRvIGRvIHNvbWUg
Y2hhckF0cyBvbiB0aGUgc3RyLgorICAgIC8vIGluc3RlYWQgb2YgcmVjcmVhdGluZyBhbGwgdGhl
IHRpbWUgYSBTdHJpbmctb2JqZWN0LCB3ZQorICAgIC8vIGNyZWF0ZSBvbmUgaW4gdGhlIGJlZ2lu
bmluZy4gKG5vdCBzdXJlLCBpZiB0aGlzIGlzIHJlYWxseSBhbiBvcHRpbSkKKyAgICB0aGlzLnN0
ciA9IG5ldyBTdHJpbmcoanNTdHIpOworICAgIHRoaXMucG9zID0gMDsKK30KK3NjX1N0cmluZ0lu
cHV0UG9ydC5wcm90b3R5cGUgPSBuZXcgc2NfSW5wdXRQb3J0KCk7CitzY19TdHJpbmdJbnB1dFBv
cnQucHJvdG90eXBlLmdldE5leHRDaGFyID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHRoaXMucG9z
ID49IHRoaXMuc3RyLmxlbmd0aCkKKwlyZXR1cm4gU0NfRU9GX09CSkVDVDsKKyAgICByZXR1cm4g
dGhpcy5zdHIuY2hhckF0KHRoaXMucG9zKyspOworfTsKKworLyogLS0tLS0tLS0tLS0tLSBSZWFk
IGFuZCBvdGhlciBsaWItZnVucyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCitm
dW5jdGlvbiBzY19Ub2tlbih0eXBlLCB2YWwsIHBvcykgeworICAgIHRoaXMudHlwZSA9IHR5cGU7
CisgICAgdGhpcy52YWwgPSB2YWw7CisgICAgdGhpcy5wb3MgPSBwb3M7Cit9CitzY19Ub2tlbi5F
T0YgPSAwLypFT0YqLzsKK3NjX1Rva2VuLk9QRU5fUEFSID0gMS8qT1BFTl9QQVIqLzsKK3NjX1Rv
a2VuLkNMT1NFX1BBUiA9IDIvKkNMT1NFX1BBUiovOworc2NfVG9rZW4uT1BFTl9CUkFDRSA9IDMv
Kk9QRU5fQlJBQ0UqLzsKK3NjX1Rva2VuLkNMT1NFX0JSQUNFID0gNC8qQ0xPU0VfQlJBQ0UqLzsK
K3NjX1Rva2VuLk9QRU5fQlJBQ0tFVCA9IDUvKk9QRU5fQlJBQ0tFVCovOworc2NfVG9rZW4uQ0xP
U0VfQlJBQ0tFVCA9IDYvKkNMT1NFX0JSQUNLRVQqLzsKK3NjX1Rva2VuLldISVRFU1BBQ0UgPSA3
LypXSElURVNQQUNFKi87CitzY19Ub2tlbi5RVU9URSA9IDgvKlFVT1RFKi87CitzY19Ub2tlbi5J
RCA9IDkvKklEKi87CitzY19Ub2tlbi5ET1QgPSAxMC8qRE9UKi87CitzY19Ub2tlbi5TVFJJTkcg
PSAxMS8qU1RSSU5HKi87CitzY19Ub2tlbi5OVU1CRVIgPSAxMi8qTlVNQkVSKi87CitzY19Ub2tl
bi5FUlJPUiA9IDEzLypFUlJPUiovOworc2NfVG9rZW4uVkVDVE9SX0JFR0lOID0gMTQvKlZFQ1RP
Ul9CRUdJTiovOworc2NfVG9rZW4uVFJVRSA9IDE1LypUUlVFKi87CitzY19Ub2tlbi5GQUxTRSA9
IDE2LypGQUxTRSovOworc2NfVG9rZW4uVU5TUEVDSUZJRUQgPSAxNy8qVU5TUEVDSUZJRUQqLzsK
K3NjX1Rva2VuLlJFRkVSRU5DRSA9IDE4LypSRUZFUkVOQ0UqLzsKK3NjX1Rva2VuLlNUT1JFID0g
MTkvKlNUT1JFKi87CitzY19Ub2tlbi5DSEFSID0gMjAvKkNIQVIqLzsKKwordmFyIFNDX0lEX0NM
QVNTID0gU0NfTE9XRVJfQ0xBU1MgKyBTQ19VUFBFUl9DTEFTUyArICIhJCUqKy0uLzo8PT4/QF5f
fiI7CitmdW5jdGlvbiBzY19Ub2tlbml6ZXIocG9ydCkgeworICAgIHRoaXMucG9ydCA9IHBvcnQ7
Cit9CitzY19Ub2tlbml6ZXIucHJvdG90eXBlLnBlZWtUb2tlbiA9IGZ1bmN0aW9uKCkgeworICAg
IGlmICh0aGlzLnBlZWtlZCkKKwlyZXR1cm4gdGhpcy5wZWVrZWQ7CisgICAgdmFyIG5ld1Rva2Vu
ID0gdGhpcy5uZXh0VG9rZW4oKTsKKyAgICB0aGlzLnBlZWtlZCA9IG5ld1Rva2VuOworICAgIHJl
dHVybiBuZXdUb2tlbjsKK307CitzY19Ub2tlbml6ZXIucHJvdG90eXBlLnJlYWRUb2tlbiA9IGZ1
bmN0aW9uKCkgeworICAgIHZhciB0bXAgPSB0aGlzLnBlZWtUb2tlbigpOworICAgIGRlbGV0ZSB0
aGlzLnBlZWtlZDsKKyAgICByZXR1cm4gdG1wOworfTsKK3NjX1Rva2VuaXplci5wcm90b3R5cGUu
bmV4dFRva2VuID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHBvcnQgPSB0aGlzLnBvcnQ7CisgICAg
CisgICAgZnVuY3Rpb24gaXNOdW1iZXJDaGFyKGMpIHsKKwlyZXR1cm4gKGMgPj0gIjAiICYmIGMg
PD0gIjkiKTsKKyAgICB9OworICAgIGZ1bmN0aW9uIGlzSWRPck51bWJlckNoYXIoYykgeworCXJl
dHVybiBTQ19JRF9DTEFTUy5pbmRleE9mKGMpICE9IC0xIHx8IC8vIElELWNoYXIKKwkgICAgKGMg
Pj0gIjAiICYmIGMgPD0gIjkiKTsKKyAgICB9CisgICAgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGMp
IHsKKwlyZXR1cm4gYyA9PT0gIiAiIHx8IGMgPT09ICJcciIgfHwgYyA9PT0gIlxuIiB8fCBjID09
PSAiXHQiIHx8IGMgPT09ICJcZiI7CisgICAgfTsKKyAgICBmdW5jdGlvbiBpc1doaXRlc3BhY2VP
ckVPRihjKSB7CisJcmV0dXJuIGlzV2hpdGVzcGFjZShjKSB8fCBjID09PSBTQ19FT0ZfT0JKRUNU
OworICAgIH07CisKKyAgICBmdW5jdGlvbiByZWFkU3RyaW5nKCkgeworCXJlcyA9ICIiOworCXdo
aWxlICh0cnVlKSB7CisJICAgIHZhciBjID0gcG9ydC5yZWFkQ2hhcigpOworCSAgICBzd2l0Y2gg
KGMpIHsKKwkgICAgY2FzZSAnIic6CisJCXJldHVybiBuZXcgc2NfVG9rZW4oMTEvKlNUUklORyov
LCByZXMpOworCSAgICBjYXNlICJcXCI6CisJCXZhciB0bXAgPSBwb3J0LnJlYWRDaGFyKCk7CisJ
CXN3aXRjaCAodG1wKSB7CisJCWNhc2UgJzAnOiByZXMgKz0gIlwwIjsgYnJlYWs7CisJCWNhc2Ug
J2EnOiByZXMgKz0gIlxhIjsgYnJlYWs7CisJCWNhc2UgJ2InOiByZXMgKz0gIlxiIjsgYnJlYWs7
CisJCWNhc2UgJ2YnOiByZXMgKz0gIlxmIjsgYnJlYWs7CisJCWNhc2UgJ24nOiByZXMgKz0gIlxu
IjsgYnJlYWs7CisJCWNhc2UgJ3InOiByZXMgKz0gIlxyIjsgYnJlYWs7CisJCWNhc2UgJ3QnOiBy
ZXMgKz0gIlx0IjsgYnJlYWs7CisJCWNhc2UgJ3YnOiByZXMgKz0gIlx2IjsgYnJlYWs7CisJCWNh
c2UgJyInOiByZXMgKz0gJyInOyBicmVhazsKKwkJY2FzZSAnXFwnOiByZXMgKz0gJ1xcJzsgYnJl
YWs7CisJCWNhc2UgJ3gnOgorCQkgICAgLyogaGV4YS1udW1iZXIgKi8KKwkJICAgIHZhciBuYiA9
IDA7CisJCSAgICB3aGlsZSAodHJ1ZSkgeworCQkJdmFyIGhleEMgPSBwb3J0LnBlZWtDaGFyKCk7
CisJCQlpZiAoaGV4QyA+PSAnMCcgJiYgaGV4QyA8PSAnOScpIHsKKwkJCSAgICBwb3J0LnJlYWRD
aGFyKCk7CisJCQkgICAgbmIgPSBuYiAqIDE2ICsgaGV4Qy5jaGFyQ29kZUF0KDApIC0gJzAnLmNo
YXJDb2RlQXQoMCk7CisJCQl9IGVsc2UgaWYgKGhleEMgPj0gJ2EnICYmIGhleEMgPD0gJ2YnKSB7
CisJCQkgICAgcG9ydC5yZWFkQ2hhcigpOworCQkJICAgIG5iID0gbmIgKiAxNiArIGhleEMuY2hh
ckNvZGVBdCgwKSAtICdhJy5jaGFyQ29kZUF0KDApOworCQkJfSBlbHNlIGlmIChoZXhDID49ICdB
JyAmJiBoZXhDIDw9ICdGJykgeworCQkJICAgIHBvcnQucmVhZENoYXIoKTsKKwkJCSAgICBuYiA9
IG5iICogMTYgKyBoZXhDLmNoYXJDb2RlQXQoMCkgLSAnQScuY2hhckNvZGVBdCgwKTsKKwkJCX0g
ZWxzZSB7CisJCQkgICAgLy8gbmV4dCBjaGFyIGlzbid0IHBhcnQgb2YgaGV4LgorCQkJICAgIHJl
cyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG5iKTsKKwkJCSAgICBicmVhazsKKwkJCX0KKwkJICAg
IH0KKwkJICAgIGJyZWFrOworCQlkZWZhdWx0OgorCQkgICAgaWYgKHRtcCA9PT0gU0NfRU9GX09C
SkVDVCkgeworCQkJcmV0dXJuIG5ldyBzY19Ub2tlbigxMy8qRVJST1IqLywgInVuY2xvc2VkIHN0
cmluZy1saXRlcmFsIiArIHJlcyk7CisJCSAgICB9CisJCSAgICByZXMgKz0gdG1wOworCQl9CisJ
CWJyZWFrOworCSAgICBkZWZhdWx0OgorCQlpZiAoYyA9PT0gU0NfRU9GX09CSkVDVCkgeworCQkg
ICAgcmV0dXJuIG5ldyBzY19Ub2tlbigxMy8qRVJST1IqLywgInVuY2xvc2VkIHN0cmluZy1saXRl
cmFsIiArIHJlcyk7CisJCX0KKwkJcmVzICs9IGM7CisJICAgIH0KKwl9CisgICAgfTsKKyAgICBm
dW5jdGlvbiByZWFkSWRPck51bWJlcihmaXJzdENoYXIpIHsKKwl2YXIgcmVzID0gZmlyc3RDaGFy
OworCXdoaWxlIChpc0lkT3JOdW1iZXJDaGFyKHBvcnQucGVla0NoYXIoKSkpCisJICAgIHJlcyAr
PSBwb3J0LnJlYWRDaGFyKCk7CisJaWYgKGlzTmFOKHJlcykpCisJICAgIHJldHVybiBuZXcgc2Nf
VG9rZW4oOS8qSUQqLywgcmVzKTsKKwllbHNlCisJICAgIHJldHVybiBuZXcgc2NfVG9rZW4oMTIv
Kk5VTUJFUiovLCByZXMgLSAwKTsKKyAgICB9OworICAgIAorICAgIGZ1bmN0aW9uIHNraXBXaGl0
ZXNwYWNlQW5kQ29tbWVudHMoKSB7CisJdmFyIGRvbmUgPSBmYWxzZTsKKwl3aGlsZSAoIWRvbmUp
IHsKKwkgICAgZG9uZSA9IHRydWU7CisJICAgIHdoaWxlIChpc1doaXRlc3BhY2UocG9ydC5wZWVr
Q2hhcigpKSkKKwkJcG9ydC5yZWFkQ2hhcigpOworCSAgICBpZiAocG9ydC5wZWVrQ2hhcigpID09
PSAnOycpIHsKKwkJcG9ydC5yZWFkQ2hhcigpOworCQlkb25lID0gZmFsc2U7CisJCXdoaWxlICh0
cnVlKSB7CisJCSAgICBjdXJDaGFyID0gcG9ydC5yZWFkQ2hhcigpOworCQkgICAgaWYgKGN1ckNo
YXIgPT09IFNDX0VPRl9PQkpFQ1QgfHwKKwkJCWN1ckNoYXIgPT09ICdcbicpCisJCQlicmVhazsK
KwkJfQorCSAgICB9CisJfQorICAgIH07CisgICAgCisgICAgZnVuY3Rpb24gcmVhZERvdCgpIHsK
KwlpZiAoaXNXaGl0ZXNwYWNlKHBvcnQucGVla0NoYXIoKSkpCisJICAgIHJldHVybiBuZXcgc2Nf
VG9rZW4oMTAvKkRPVCovKTsKKwllbHNlCisJICAgIHJldHVybiByZWFkSWRPck51bWJlcigiLiIp
OworICAgIH07CisKKyAgICBmdW5jdGlvbiByZWFkU2hhcnAoKSB7CisJdmFyIGMgPSBwb3J0LnJl
YWRDaGFyKCk7CisJaWYgKGlzV2hpdGVzcGFjZShjKSkKKwkgICAgcmV0dXJuIG5ldyBzY19Ub2tl
bigxMy8qRVJST1IqLywgImJhZCAjLXBhdHRlcm4wLiIpOworCisJLy8gcmVmZXJlbmNlCisJaWYg
KGlzTnVtYmVyQ2hhcihjKSkgeworCSAgICB2YXIgbmIgPSBjIC0gMDsKKwkgICAgd2hpbGUgKGlz
TnVtYmVyQ2hhcihwb3J0LnBlZWtDaGFyKCkpKQorCQluYiA9IG5iKjEwICsgKHBvcnQucmVhZENo
YXIoKSAtIDApOworCSAgICBzd2l0Y2ggKHBvcnQucmVhZENoYXIoKSkgeworCSAgICBjYXNlICcj
JzoKKwkJcmV0dXJuIG5ldyBzY19Ub2tlbigxOC8qUkVGRVJFTkNFKi8sIG5iKTsKKwkgICAgY2Fz
ZSAnPSc6CisJCXJldHVybiBuZXcgc2NfVG9rZW4oMTkvKlNUT1JFKi8sIG5iKTsKKwkgICAgZGVm
YXVsdDoKKwkJcmV0dXJuIG5ldyBzY19Ub2tlbigxMy8qRVJST1IqLywgImJhZCAjLXBhdHRlcm4x
LiIgKyBuYik7CisJICAgIH0KKwl9CisKKwlpZiAoYyA9PT0gIigiKQorCSAgICByZXR1cm4gbmV3
IHNjX1Rva2VuKDE0LypWRUNUT1JfQkVHSU4qLyk7CisJCisJaWYgKGMgPT09ICJcXCIpIHsgLy8g
Y2hhcmFjdGVyCisJICAgIHZhciB0bXAgPSAiIgorCSAgICB3aGlsZSAoIWlzV2hpdGVzcGFjZU9y
RU9GKHBvcnQucGVla0NoYXIoKSkpCisJCXRtcCArPSBwb3J0LnJlYWRDaGFyKCk7CisJICAgIHN3
aXRjaCAodG1wLmxlbmd0aCkgeworCSAgICBjYXNlIDA6IC8vIGl0J3MgZXNjYXBpbmcgYSB3aGl0
ZXNwYWNlIGNoYXI6CisJCWlmIChzY19pc0VPRk9iamVjdChwb3J0LnBlZWtDaGFyKSkKKwkJICAg
IHJldHVybiBuZXcgc2NfVG9rZW4oMTMvKkVSUk9SKi8sICJiYWQgIy1wYXR0ZXJuMi4iKTsKKwkJ
ZWxzZQorCQkgICAgcmV0dXJuIG5ldyBzY19Ub2tlbigyMC8qQ0hBUiovLCBwb3J0LnJlYWRDaGFy
KCkpOworCSAgICBjYXNlIDE6CisJCXJldHVybiBuZXcgc2NfVG9rZW4oMjAvKkNIQVIqLywgdG1w
KTsKKwkgICAgZGVmYXVsdDoKKwkJdmFyIGVudHJ5ID0gc2NfQ2hhci5yZWFkYWJsZTJjaGFyW3Rt
cC50b0xvd2VyQ2FzZSgpXTsKKwkJaWYgKGVudHJ5KQorCQkgICAgcmV0dXJuIG5ldyBzY19Ub2tl
bigyMC8qQ0hBUiovLCBlbnRyeSk7CisJCWVsc2UKKwkJICAgIHJldHVybiBuZXcgc2NfVG9rZW4o
MTMvKkVSUk9SKi8sICJ1bmtub3duIGNoYXJhY3RlciBkZXNjcmlwdGlvbjogI1xcIiArIHRtcCk7
CisJICAgIH0KKwl9CisKKwkvLyBzb21lIGNvbnN0YW50cyAoI3QsICNmLCAjdW5zcGVjaWZpZWQp
CisJdmFyIHJlczsKKwl2YXIgbmVlZGluZzsKKwlzd2l0Y2ggKGMpIHsKKwljYXNlICd0JzogcmVz
ID0gbmV3IHNjX1Rva2VuKDE1LypUUlVFKi8sIHRydWUpOyBuZWVkaW5nID0gIiI7IGJyZWFrOwor
CWNhc2UgJ2YnOiByZXMgPSBuZXcgc2NfVG9rZW4oMTYvKkZBTFNFKi8sIGZhbHNlKTsgbmVlZGlu
ZyA9ICIiOyBicmVhazsKKwljYXNlICd1JzogcmVzID0gbmV3IHNjX1Rva2VuKDE3LypVTlNQRUNJ
RklFRCovLCB1bmRlZmluZWQpOyBuZWVkaW5nID0gIm5zcGVjaWZpZWQiOyBicmVhazsKKwlkZWZh
dWx0OgorCSAgICByZXR1cm4gbmV3IHNjX1Rva2VuKDEzLypFUlJPUiovLCAiYmFkICMtcGF0dGVy
bjM6ICIgKyBjKTsKKwl9CisJd2hpbGUodHJ1ZSkgeworCSAgICBjID0gcG9ydC5wZWVrQ2hhcigp
OworCSAgICBpZiAoKGlzV2hpdGVzcGFjZU9yRU9GKGMpIHx8IGMgPT09ICcpJykgJiYKKwkJbmVl
ZGluZyA9PSAiIikKKwkJcmV0dXJuIHJlczsKKwkgICAgZWxzZSBpZiAoaXNXaGl0ZXNwYWNlKGMp
IHx8IG5lZWRpbmcgPT0gIiIpCisJCXJldHVybiBuZXcgc2NfVG9rZW4oMTMvKkVSUk9SKi8sICJi
YWQgIy1wYXR0ZXJuNCAiICsgYyArICIgIiArIG5lZWRpbmcpOworCSAgICBlbHNlIGlmIChuZWVk
aW5nLmNoYXJBdCgwKSA9PSBjKSB7CisJCXBvcnQucmVhZENoYXIoKTsgLy8gY29uc3VtZQorCQlu
ZWVkaW5nID0gbmVlZGluZy5zbGljZSgxKTsKKwkgICAgfSBlbHNlCisJCXJldHVybiBuZXcgc2Nf
VG9rZW4oMTMvKkVSUk9SKi8sICJiYWQgIy1wYXR0ZXJuNSIpOworCX0KKwkKKyAgICB9OworCisg
ICAgc2tpcFdoaXRlc3BhY2VBbmRDb21tZW50cygpOworICAgIHZhciBjdXJDaGFyID0gcG9ydC5y
ZWFkQ2hhcigpOworICAgIGlmIChjdXJDaGFyID09PSBTQ19FT0ZfT0JKRUNUKQorCXJldHVybiBu
ZXcgc2NfVG9rZW4oMC8qRU9GKi8sIGN1ckNoYXIpOworICAgIHN3aXRjaCAoY3VyQ2hhcikKKyAg
ICB7CisgICAgY2FzZSAiICI6CisgICAgY2FzZSAiXG4iOgorICAgIGNhc2UgIlx0IjoKKwlyZXR1
cm4gcmVhZFdoaXRlc3BhY2UoKTsKKyAgICBjYXNlICIoIjoKKwlyZXR1cm4gbmV3IHNjX1Rva2Vu
KDEvKk9QRU5fUEFSKi8pOworICAgIGNhc2UgIikiOgorCXJldHVybiBuZXcgc2NfVG9rZW4oMi8q
Q0xPU0VfUEFSKi8pOworICAgIGNhc2UgInsiOgorCXJldHVybiBuZXcgc2NfVG9rZW4oMy8qT1BF
Tl9CUkFDRSovKTsKKyAgICBjYXNlICJ9IjoKKwlyZXR1cm4gbmV3IHNjX1Rva2VuKDQvKkNMT1NF
X0JSQUNFKi8pOworICAgIGNhc2UgIlsiOgorCXJldHVybiBuZXcgc2NfVG9rZW4oNS8qT1BFTl9C
UkFDS0VUKi8pOworICAgIGNhc2UgIl0iOgorCXJldHVybiBuZXcgc2NfVG9rZW4oNi8qQ0xPU0Vf
QlJBQ0tFVCovKTsKKyAgICBjYXNlICInIjoKKwlyZXR1cm4gbmV3IHNjX1Rva2VuKDgvKlFVT1RF
Ki8pOworICAgIGNhc2UgIiMiOgorCXJldHVybiByZWFkU2hhcnAoKTsKKyAgICBjYXNlICIuIjoK
KwlyZXR1cm4gcmVhZERvdCgpOworICAgIGNhc2UgJyInOgorCXJldHVybiByZWFkU3RyaW5nKCk7
CisgICAgZGVmYXVsdDoKKwlpZiAoaXNJZE9yTnVtYmVyQ2hhcihjdXJDaGFyKSkKKwkgICAgcmV0
dXJuIHJlYWRJZE9yTnVtYmVyKGN1ckNoYXIpOworCXRocm93ICJ1bmV4cGVjdGVkIGNoYXJhY3Rl
cjogIiArIGN1ckNoYXI7CisgICAgfQorfTsKKworZnVuY3Rpb24gc2NfUmVhZGVyKHRva2VuaXpl
cikgeworICAgIHRoaXMudG9rZW5pemVyID0gdG9rZW5pemVyOworICAgIHRoaXMuYmFja3JlZiA9
IG5ldyBBcnJheSgpOworfQorc2NfUmVhZGVyLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24oKSB7
CisgICAgZnVuY3Rpb24gcmVhZExpc3QobGlzdEJlZ2luVHlwZSkgeworCWZ1bmN0aW9uIG1hdGNo
ZXNQZWVyKG9wZW4sIGNsb3NlKSB7CisJICAgIHJldHVybiBvcGVuID09PSAxLypPUEVOX1BBUiov
ICYmIGNsb3NlID09PSAyLypDTE9TRV9QQVIqLworCSAgICAJfHwgb3BlbiA9PT0gMy8qT1BFTl9C
UkFDRSovICYmIGNsb3NlID09PSA0LypDTE9TRV9CUkFDRSovCisJCXx8IG9wZW4gPT09IDUvKk9Q
RU5fQlJBQ0tFVCovICYmIGNsb3NlID09PSA2LypDTE9TRV9CUkFDS0VUKi87CisJfTsKKwl2YXIg
cmVzID0gbnVsbDsKKworCXdoaWxlICh0cnVlKSB7CisJICAgIHZhciB0b2tlbiA9IHRva2VuaXpl
ci5wZWVrVG9rZW4oKTsKKwkgICAgCisJICAgIHN3aXRjaCAodG9rZW4udHlwZSkgeworCSAgICBj
YXNlIDIvKkNMT1NFX1BBUiovOgorCSAgICBjYXNlIDQvKkNMT1NFX0JSQUNFKi86CisJICAgIGNh
c2UgNi8qQ0xPU0VfQlJBQ0tFVCovOgorCQlpZiAobWF0Y2hlc1BlZXIobGlzdEJlZ2luVHlwZSwg
dG9rZW4udHlwZSkpIHsKKwkJICAgIHRva2VuaXplci5yZWFkVG9rZW4oKTsgLy8gY29uc3VtZSB0
b2tlbgorCQkgICAgcmV0dXJuIHNjX3JldmVyc2VCYW5nKHJlcyk7CisJCX0gZWxzZQorCQkgICAg
dGhyb3cgImNsb3NpbmcgcGFyIGRvZXNuJ3QgbWF0Y2g6ICIgKyBsaXN0QmVnaW5UeXBlCisJCQkr
ICIgIiArIGxpc3RFbmRUeXBlOworCisJICAgIGNhc2UgMC8qRU9GKi86CisJCXRocm93ICJ1bmV4
cGVjdGVkIGVuZCBvZiBmaWxlIjsKKworCSAgICBjYXNlIDEwLypET1QqLzoKKwkJdG9rZW5pemVy
LnJlYWRUb2tlbigpOyAvLyBjb25zdW1lIHRva2VuCisJCXZhciBjZHIgPSB0aGlzLnJlYWQoKTsK
KwkJdmFyIHBhciA9IHRva2VuaXplci5yZWFkVG9rZW4oKTsKKwkJaWYgKCFtYXRjaGVzUGVlcihs
aXN0QmVnaW5UeXBlLCBwYXIudHlwZSkpCisJCSAgICB0aHJvdyAiY2xvc2luZyBwYXIgZG9lc24n
dCBtYXRjaDogIiArIGxpc3RCZWdpblR5cGUKKwkJCSsgIiAiICsgcGFyLnR5cGU7CisJCWVsc2UK
KwkJICAgIHJldHVybiBzY19yZXZlcnNlQXBwZW5kQmFuZyhyZXMsIGNkcik7CisJCQorCisJICAg
IGRlZmF1bHQ6CisJCXJlcyA9IHNjX2NvbnModGhpcy5yZWFkKCksIHJlcyk7CisJICAgIH0KKwl9
CisgICAgfTsKKyAgICBmdW5jdGlvbiByZWFkUXVvdGUoKSB7CisJcmV0dXJuIHNjX2NvbnMoInF1
b3RlIiwgc2NfY29ucyh0aGlzLnJlYWQoKSwgbnVsbCkpOworICAgIH07CisgICAgZnVuY3Rpb24g
cmVhZFZlY3RvcigpIHsKKwkvLyBvcGVuaW5nLXBhcmVudGhlc2lzIGlzIGFscmVhZHkgY29uc3Vt
ZWQKKwl2YXIgYSA9IG5ldyBBcnJheSgpOworCXdoaWxlICh0cnVlKSB7CisJICAgIHZhciB0b2tl
biA9IHRva2VuaXplci5wZWVrVG9rZW4oKTsKKwkgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7CisJ
ICAgIGNhc2UgMi8qQ0xPU0VfUEFSKi86CisJCXRva2VuaXplci5yZWFkVG9rZW4oKTsKKwkJcmV0
dXJuIGE7CisJCQorCSAgICBkZWZhdWx0OgorCQlhLnB1c2godGhpcy5yZWFkKCkpOworCSAgICB9
CisJfQorICAgIH07CisKKyAgICBmdW5jdGlvbiBzdG9yZVJlZmVuY2UobmIpIHsKKwl2YXIgdG1w
ID0gdGhpcy5yZWFkKCk7CisJdGhpcy5iYWNrcmVmW25iXSA9IHRtcDsKKwlyZXR1cm4gdG1wOwor
ICAgIH07CisJCisgICAgZnVuY3Rpb24gcmVhZFJlZmVyZW5jZShuYikgeworCWlmIChuYiBpbiB0
aGlzLmJhY2tyZWYpCisJICAgIHJldHVybiB0aGlzLmJhY2tyZWZbbmJdOworCWVsc2UKKwkgICAg
dGhyb3cgImJhZCByZWZlcmVuY2U6ICIgKyBuYjsKKyAgICB9OworICAgIAorICAgIHZhciB0b2tl
bml6ZXIgPSB0aGlzLnRva2VuaXplcjsKKworICAgIHZhciB0b2tlbiA9IHRva2VuaXplci5yZWFk
VG9rZW4oKTsKKworICAgIC8vIGhhbmRsZSBlcnJvcgorICAgIGlmICh0b2tlbi50eXBlID09PSAx
My8qRVJST1IqLykKKwl0aHJvdyB0b2tlbi52YWw7CisgICAgCisgICAgc3dpdGNoICh0b2tlbi50
eXBlKSB7CisgICAgY2FzZSAxLypPUEVOX1BBUiovOgorICAgIGNhc2UgMy8qT1BFTl9CUkFDRSov
OgorICAgIGNhc2UgNS8qT1BFTl9CUkFDS0VUKi86CisJcmV0dXJuIHJlYWRMaXN0LmNhbGwodGhp
cywgdG9rZW4udHlwZSk7CisgICAgY2FzZSA4LypRVU9URSovOgorCXJldHVybiByZWFkUXVvdGUu
Y2FsbCh0aGlzKTsKKyAgICBjYXNlIDExLypTVFJJTkcqLzoKKwlyZXR1cm4gc2NfanNzdHJpbmcy
c3RyaW5nKHRva2VuLnZhbCk7CisgICAgY2FzZSAyMC8qQ0hBUiovOgorCXJldHVybiBuZXcgc2Nf
Q2hhcih0b2tlbi52YWwpOworICAgIGNhc2UgMTQvKlZFQ1RPUl9CRUdJTiovOgorCXJldHVybiBy
ZWFkVmVjdG9yLmNhbGwodGhpcyk7CisgICAgY2FzZSAxOC8qUkVGRVJFTkNFKi86CisJcmV0dXJu
IHJlYWRSZWZlcmVuY2UuY2FsbCh0aGlzLCB0b2tlbi52YWwpOworICAgIGNhc2UgMTkvKlNUT1JF
Ki86CisJcmV0dXJuIHN0b3JlUmVmZW5jZS5jYWxsKHRoaXMsIHRva2VuLnZhbCk7CisgICAgY2Fz
ZSA5LypJRCovOgorCXJldHVybiBzY19qc3N0cmluZzJzeW1ib2wodG9rZW4udmFsKTsKKyAgICBj
YXNlIDAvKkVPRiovOgorICAgIGNhc2UgMTIvKk5VTUJFUiovOgorICAgIGNhc2UgMTUvKlRSVUUq
LzoKKyAgICBjYXNlIDE2LypGQUxTRSovOgorICAgIGNhc2UgMTcvKlVOU1BFQ0lGSUVEKi86CisJ
cmV0dXJuIHRva2VuLnZhbDsKKyAgICBkZWZhdWx0OgorCXRocm93ICJ1bmV4cGVjdGVkIHRva2Vu
ICIgKyB0b2tlbi50eXBlICsgIiAiICsgdG9rZW4udmFsOworICAgIH0KK307CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19yZWFkKHBvcnQpIHsKKyAgICBpZiAocG9y
dCA9PT0gdW5kZWZpbmVkKSAvLyB3ZSBhc3N1bWUgdGhlIHBvcnQgaGFzbid0IGJlZW4gZ2l2ZW4u
CisJcG9ydCA9IFNDX0RFRkFVTFRfSU47IC8vIFRIUkVBRDogc2hhcmVkIHZhci4uLgorICAgIHZh
ciByZWFkZXIgPSBuZXcgc2NfUmVhZGVyKG5ldyBzY19Ub2tlbml6ZXIocG9ydCkpOworICAgIHJl
dHVybiByZWFkZXIucmVhZCgpOworfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0
aW9uIHNjX3JlYWRDaGFyKHBvcnQpIHsKKyAgICBpZiAocG9ydCA9PT0gdW5kZWZpbmVkKSAvLyB3
ZSBhc3N1bWUgdGhlIHBvcnQgaGFzbid0IGJlZW4gZ2l2ZW4uCisJcG9ydCA9IFNDX0RFRkFVTFRf
SU47IC8vIFRIUkVBRDogc2hhcmVkIHZhci4uLgorICAgIHZhciB0ID0gcG9ydC5yZWFkQ2hhcigp
OworICAgIHJldHVybiB0ID09PSBTQ19FT0ZfT0JKRUNUPyB0OiBuZXcgc2NfQ2hhcih0KTsKK30K
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19wZWVrQ2hhcihwb3J0KSB7
CisgICAgaWYgKHBvcnQgPT09IHVuZGVmaW5lZCkgLy8gd2UgYXNzdW1lIHRoZSBwb3J0IGhhc24n
dCBiZWVuIGdpdmVuLgorCXBvcnQgPSBTQ19ERUZBVUxUX0lOOyAvLyBUSFJFQUQ6IHNoYXJlZCB2
YXIuLi4KKyAgICB2YXIgdCA9IHBvcnQucGVla0NoYXIoKTsKKyAgICByZXR1cm4gdCA9PT0gU0Nf
RU9GX09CSkVDVD8gdDogbmV3IHNjX0NoYXIodCk7Cit9ICAgIAorLyoqKiBNRVRBICgoZXhwb3J0
ICN0KQorICAgICAgICAgICAodHlwZSBib29sKSkKKyovCitmdW5jdGlvbiBzY19pc0NoYXJSZWFk
eShwb3J0KSB7CisgICAgaWYgKHBvcnQgPT09IHVuZGVmaW5lZCkgLy8gd2UgYXNzdW1lIHRoZSBw
b3J0IGhhc24ndCBiZWVuIGdpdmVuLgorCXBvcnQgPSBTQ19ERUZBVUxUX0lOOyAvLyBUSFJFQUQ6
IHNoYXJlZCB2YXIuLi4KKyAgICByZXR1cm4gcG9ydC5pc0NoYXJSZWFkeSgpOworfQorLyoqKiBN
RVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jbG9zZSgp
IikpKQorKi8KK2Z1bmN0aW9uIHNjX2Nsb3NlSW5wdXRQb3J0KHApIHsKKyAgICByZXR1cm4gcC5j
bG9zZSgpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJv
b2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiIGluc3RhbmNlb2Ygc2NfSW5wdXRQ
b3J0IikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzSW5wdXRQb3J0KG8pIHsKKyAgICByZXR1cm4gKG8g
aW5zdGFuY2VvZiBzY19JbnB1dFBvcnQpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgZW9mLW9i
amVjdD8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9z
dGZpeCAiID09PSBTQ19FT0ZfT0JKRUNUIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzRU9GT2JqZWN0
KG8pIHsKKyAgICByZXR1cm4gbyA9PT0gU0NfRU9GX09CSkVDVDsKK30KKworLyoqKiBNRVRBICgo
ZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMCAiU0NfREVGQVVMVF9JTiIp
KSkKKyovCitmdW5jdGlvbiBzY19jdXJyZW50SW5wdXRQb3J0KCkgeworICAgIHJldHVybiBTQ19E
RUZBVUxUX0lOOworfQorCisvKiAtLS0tLS0tLS0tLS0gZmlsZSBvcGVyYXRpb25zIGFyZSBub3Qg
c3VwcG9ydGVkIC0tLS0tLS0tLS0tKi8KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5j
dGlvbiBzY19jYWxsV2l0aElucHV0RmlsZShzLCBwcm9jKSB7CisgICAgdGhyb3cgImNhbid0IG9w
ZW4gIiArIHM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19j
YWxsV2l0aE91dHB1dEZpbGUocywgcHJvYykgeworICAgIHRocm93ICJjYW4ndCBvcGVuICIgKyBz
OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd2l0aElucHV0
RnJvbUZpbGUocywgdGh1bmspIHsKKyAgICB0aHJvdyAiY2FuJ3Qgb3BlbiAiICsgczsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3dpdGhPdXRwdXRUb0ZpbGUo
cywgdGh1bmspIHsKKyAgICB0aHJvdyAiY2FuJ3Qgb3BlbiAiICsgczsKK30KKworLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX29wZW5JbnB1dEZpbGUocykgeworICAgIHRo
cm93ICJjYW4ndCBvcGVuICIgKyBzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwor
ZnVuY3Rpb24gc2Nfb3Blbk91dHB1dEZpbGUocykgeworICAgIHRocm93ICJjYW4ndCBvcGVuICIg
KyBzOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkpICovCitmdW5jdGlvbiBzY19iYXNlbmFtZShwKSB7CisgICB2YXIgaSA9IHAubGFzdEluZGV4
T2YoJy8nKTsKKworICAgaWYoaSA+PSAwKQorICAgICAgcmV0dXJuIHAuc3Vic3RyaW5nKGkgKyAx
LCBwLmxlbmd0aCk7CisgICBlbHNlCisgICAgICByZXR1cm4gJyc7Cit9CisKKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19kaXJuYW1lKHApIHsKKyAgIHZhciBpID0gcC5s
YXN0SW5kZXhPZignLycpOworCisgICBpZihpID49IDApCisgICAgICByZXR1cm4gcC5zdWJzdHJp
bmcoMCwgaSk7CisgICBlbHNlCisgICAgICByZXR1cm4gJyc7Cit9CisKKy8qIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd2l0
aElucHV0RnJvbVBvcnQocCwgdGh1bmspIHsKKyAgICB0cnkgeworCXZhciB0bXAgPSBTQ19ERUZB
VUxUX0lOOyAvLyBUSFJFQUQ6IHNoYXJlZCB2YXIuCisJU0NfREVGQVVMVF9JTiA9IHA7CisJcmV0
dXJuIHRodW5rKCk7CisgICAgfSBmaW5hbGx5IHsKKwlTQ19ERUZBVUxUX0lOID0gdG1wOworICAg
IH0KK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3dpdGhJbnB1
dEZyb21TdHJpbmcocywgdGh1bmspIHsKKyAgICByZXR1cm4gc2Nfd2l0aElucHV0RnJvbVBvcnQo
bmV3IHNjX1N0cmluZ0lucHV0UG9ydChzY19zdHJpbmcyanNzdHJpbmcocykpLCB0aHVuayk7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY193aXRoT3V0cHV0VG9Q
b3J0KHAsIHRodW5rKSB7CisgICAgdHJ5IHsKKwl2YXIgdG1wID0gU0NfREVGQVVMVF9PVVQ7IC8v
IFRIUkVBRDogc2hhcmVkIHZhci4KKwlTQ19ERUZBVUxUX09VVCA9IHA7CisJcmV0dXJuIHRodW5r
KCk7CisgICAgfSBmaW5hbGx5IHsKKwlTQ19ERUZBVUxUX09VVCA9IHRtcDsKKyAgICB9Cit9CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY193aXRoT3V0cHV0VG9TdHJp
bmcodGh1bmspIHsKKyAgICB2YXIgcCA9IG5ldyBzY19TdHJpbmdPdXRwdXRQb3J0KCk7CisgICAg
c2Nfd2l0aE91dHB1dFRvUG9ydChwLCB0aHVuayk7CisgICAgcmV0dXJuIHAuY2xvc2UoKTsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3dpdGhPdXRwdXRUb1By
b2NlZHVyZShwcm9jLCB0aHVuaykgeworICAgIHZhciB0ID0gZnVuY3Rpb24ocykgeyBwcm9jKHNj
X2pzc3RyaW5nMnN0cmluZyhzKSk7IH07CisgICAgcmV0dXJuIHNjX3dpdGhPdXRwdXRUb1BvcnQo
bmV3IHNjX0dlbmVyaWNPdXRwdXRQb3J0KHQpLCB0aHVuayk7Cit9CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDAgIm5ldyBzY19TdHJpbmdPdXRw
dXRQb3J0KCkiKSkpCisqLworZnVuY3Rpb24gc2Nfb3Blbk91dHB1dFN0cmluZygpIHsKKyAgICBy
ZXR1cm4gbmV3IHNjX1N0cmluZ091dHB1dFBvcnQoKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0
ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX29wZW5JbnB1dFN0cmluZyhzdHIpIHsKKyAgICByZXR1cm4g
bmV3IHNjX1N0cmluZ0lucHV0UG9ydChzY19zdHJpbmcyanNzdHJpbmcoc3RyKSk7Cit9CisKKy8q
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitmdW5jdGlvbiBzY19PdXRwdXRQb3J0KCkgeworfQor
c2NfT3V0cHV0UG9ydC5wcm90b3R5cGUgPSBuZXcgc2NfUG9ydCgpOworc2NfT3V0cHV0UG9ydC5w
cm90b3R5cGUuYXBwZW5kSlNTdHJpbmcgPSBmdW5jdGlvbihvYmopIHsKKyAgICAvKiBkbyBub3Ro
aW5nICovCit9CitzY19PdXRwdXRQb3J0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCkgewor
ICAgIC8qIGRvIG5vdGhpbmcgKi8KK30KKworZnVuY3Rpb24gc2NfU3RyaW5nT3V0cHV0UG9ydCgp
IHsKKyAgICB0aGlzLnJlcyA9ICIiOworfQorc2NfU3RyaW5nT3V0cHV0UG9ydC5wcm90b3R5cGUg
PSBuZXcgc2NfT3V0cHV0UG9ydCgpOworc2NfU3RyaW5nT3V0cHV0UG9ydC5wcm90b3R5cGUuYXBw
ZW5kSlNTdHJpbmcgPSBmdW5jdGlvbihzKSB7CisgICAgdGhpcy5yZXMgKz0gczsKK30KK3NjX1N0
cmluZ091dHB1dFBvcnQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJu
IHNjX2pzc3RyaW5nMnN0cmluZyh0aGlzLnJlcyk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkpICovCitmdW5jdGlvbiBzY19nZXRPdXRwdXRTdHJpbmcoc3ApIHsKKyAgICByZXR1cm4gc2Nf
anNzdHJpbmcyc3RyaW5nKHNwLnJlcyk7Cit9CisgICAgCisKK2Z1bmN0aW9uIHNjX0Vycm9yT3V0
cHV0UG9ydCgpIHsKK30KK3NjX0Vycm9yT3V0cHV0UG9ydC5wcm90b3R5cGUgPSBuZXcgc2NfT3V0
cHV0UG9ydCgpOworc2NfRXJyb3JPdXRwdXRQb3J0LnByb3RvdHlwZS5hcHBlbmRKU1N0cmluZyA9
IGZ1bmN0aW9uKHMpIHsKKyAgICB0aHJvdyAiZG9uJ3Qgd3JpdGUgb24gRXJyb3JQb3J0ISI7Cit9
CitzY19FcnJvck91dHB1dFBvcnQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7CisgICAg
LyogZG8gbm90aGluZyAqLworfQorCitmdW5jdGlvbiBzY19HZW5lcmljT3V0cHV0UG9ydChhcHBl
bmRKU1N0cmluZywgY2xvc2UpIHsKKyAgICB0aGlzLmFwcGVuZEpTU3RyaW5nID0gYXBwZW5kSlNT
dHJpbmc7CisgICAgaWYgKGNsb3NlKQorCXRoaXMuY2xvc2UgPSBjbG9zZTsKK30KK3NjX0dlbmVy
aWNPdXRwdXRQb3J0LnByb3RvdHlwZSA9IG5ldyBzY19PdXRwdXRQb3J0KCk7CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChwb3N0Zml4ICIgaW5zdGFuY2VvZiBzY19PdXRwdXRQb3J0IikpKQorKi8KK2Z1bmN0aW9u
IHNjX2lzT3V0cHV0UG9ydChvKSB7CisgICAgcmV0dXJuIChvIGluc3RhbmNlb2Ygc2NfT3V0cHV0
UG9ydCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xl
IChwb3N0Zml4ICIuY2xvc2UoKSIpKSkKKyovCitmdW5jdGlvbiBzY19jbG9zZU91dHB1dFBvcnQo
cCkgeworICAgIHJldHVybiBwLmNsb3NlKCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLSB3
cml0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q
LworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd3JpdGUobywgcCkg
eworICAgIGlmIChwID09PSB1bmRlZmluZWQpIC8vIHdlIGFzc3VtZSBub3QgZ2l2ZW4KKwlwID0g
U0NfREVGQVVMVF9PVVQ7CisgICAgcC5hcHBlbmRKU1N0cmluZyhzY190b1dyaXRlU3RyaW5nKG8p
KTsKK30KKworZnVuY3Rpb24gc2NfdG9Xcml0ZVN0cmluZyhvKSB7CisgICAgaWYgKG8gPT09IG51
bGwpCisJcmV0dXJuICIoKSI7CisgICAgZWxzZSBpZiAobyA9PT0gdHJ1ZSkKKwlyZXR1cm4gIiN0
IjsKKyAgICBlbHNlIGlmIChvID09PSBmYWxzZSkKKwlyZXR1cm4gIiNmIjsKKyAgICBlbHNlIGlm
IChvID09PSB1bmRlZmluZWQpCisJcmV0dXJuICIjdW5zcGVjaWZpZWQiOworICAgIGVsc2UgaWYg
KHR5cGVvZiBvID09PSAnZnVuY3Rpb24nKQorCXJldHVybiAiIzxwcm9jZWR1cmUgIiArIHNjX2hh
c2gobykgKyAiPiI7CisgICAgZWxzZSBpZiAoby5zY190b1dyaXRlU3RyaW5nKQorCXJldHVybiBv
LnNjX3RvV3JpdGVTdHJpbmcoKTsKKyAgICBlbHNlCisJcmV0dXJuIG8udG9TdHJpbmcoKTsKK30K
KworZnVuY3Rpb24gc2NfZXNjYXBlV3JpdGVTdHJpbmcocykgeworICAgIHZhciByZXMgPSAiIjsK
KyAgICB2YXIgaiA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKwlz
d2l0Y2ggKHMuY2hhckF0KGkpKSB7CisJY2FzZSAiXDAiOiByZXMgKz0gcy5zdWJzdHJpbmcoaiwg
aSkgKyAiXFwwIjsgaiA9IGkgKyAxOyBicmVhazsKKwljYXNlICJcYiI6IHJlcyArPSBzLnN1YnN0
cmluZyhqLCBpKSArICJcXGIiOyBqID0gaSArIDE7IGJyZWFrOworCWNhc2UgIlxmIjogcmVzICs9
IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcZiI7IGogPSBpICsgMTsgYnJlYWs7CisJY2FzZSAiXG4i
OiByZXMgKz0gcy5zdWJzdHJpbmcoaiwgaSkgKyAiXFxuIjsgaiA9IGkgKyAxOyBicmVhazsKKwlj
YXNlICJcciI6IHJlcyArPSBzLnN1YnN0cmluZyhqLCBpKSArICJcXHIiOyBqID0gaSArIDE7IGJy
ZWFrOworCWNhc2UgIlx0IjogcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcdCI7IGogPSBp
ICsgMTsgYnJlYWs7CisJY2FzZSAiXHYiOiByZXMgKz0gcy5zdWJzdHJpbmcoaiwgaSkgKyAiXFx2
IjsgaiA9IGkgKyAxOyBicmVhazsKKwljYXNlICciJzogcmVzICs9IHMuc3Vic3RyaW5nKGosIGkp
ICsgJ1xcIic7IGogPSBpICsgMTsgYnJlYWs7CisJY2FzZSAiXFwiOiByZXMgKz0gcy5zdWJzdHJp
bmcoaiwgaSkgKyAiXFxcXCI7IGogPSBpICsgMTsgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgdmFy
IGMgPSBzLmNoYXJBdChpKTsKKwkgICAgaWYgKCJcYSIgIT09ICJhIiAmJiBjID09ICJcYSIpIHsK
KwkJcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcYSI7IGogPSBpICsgMTsgY29udGludWU7
CisJICAgIH0KKwkgICAgaWYgKCJcdiIgIT09ICJ2IiAmJiBjID09ICJcdiIpIHsKKwkJcmVzICs9
IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcdiI7IGogPSBpICsgMTsgY29udGludWU7CisJICAgIH0K
KwkgICAgLy9pZiAocy5jaGFyQXQoaSkgPCAnICcgfHwgcy5jaGFyQ29kZUF0KGkpID4gMTI3KSB7
CisJICAgIC8vIENBUkU6IE1hbnVlbCBpcyB0aGlzIE9LIHdpdGggSE9QPworCSAgICBpZiAocy5j
aGFyQXQoaSkgPCAnICcpIHsKKwkJLyogbm9uIHByaW50YWJsZSBjaGFyYWN0ZXIgYW5kIHNwZWNp
YWwgY2hhcnMgKi8KKwkJcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxceCIgKyBzLmNoYXJD
b2RlQXQoaSkudG9TdHJpbmcoMTYpOworCQlqID0gaSArIDE7CisJICAgIH0KKwkgICAgLy8gZWxz
ZSBqdXN0IGxldCBpIGluY3JlYXNlLi4uCisJfQorICAgIH0KKyAgICByZXMgKz0gcy5zdWJzdHJp
bmcoaiwgaSk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tIGRp
c3BsYXkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2Rpc3BsYXkobywg
cCkgeworICAgIGlmIChwID09PSB1bmRlZmluZWQpIC8vIHdlIGFzc3VtZSBub3QgZ2l2ZW4KKwlw
ID0gU0NfREVGQVVMVF9PVVQ7CisgICAgcC5hcHBlbmRKU1N0cmluZyhzY190b0Rpc3BsYXlTdHJp
bmcobykpOworfQorCitmdW5jdGlvbiBzY190b0Rpc3BsYXlTdHJpbmcobykgeworICAgIGlmIChv
ID09PSBudWxsKQorCXJldHVybiAiKCkiOworICAgIGVsc2UgaWYgKG8gPT09IHRydWUpCisJcmV0
dXJuICIjdCI7CisgICAgZWxzZSBpZiAobyA9PT0gZmFsc2UpCisJcmV0dXJuICIjZiI7CisgICAg
ZWxzZSBpZiAobyA9PT0gdW5kZWZpbmVkKQorCXJldHVybiAiI3Vuc3BlY2lmaWVkIjsKKyAgICBl
bHNlIGlmICh0eXBlb2YgbyA9PT0gJ2Z1bmN0aW9uJykKKwlyZXR1cm4gIiM8cHJvY2VkdXJlICIg
KyBzY19oYXNoKG8pICsgIj4iOworICAgIGVsc2UgaWYgKG8uc2NfdG9EaXNwbGF5U3RyaW5nKQor
CXJldHVybiBvLnNjX3RvRGlzcGxheVN0cmluZygpOworICAgIGVsc2UKKwlyZXR1cm4gby50b1N0
cmluZygpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0gbmV3bGluZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbmV3bGluZShwKSB7CisgICAgaWYgKHAgPT09IHVu
ZGVmaW5lZCkgLy8gd2UgYXNzdW1lIG5vdCBnaXZlbgorCXAgPSBTQ19ERUZBVUxUX09VVDsKKyAg
ICBwLmFwcGVuZEpTU3RyaW5nKCJcbiIpOworfQorICAgIAorLyogLS0tLS0tLS0tLS0tLS0tLS0t
IHdyaXRlLWNoYXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKi8KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3dyaXRl
Q2hhcihjLCBwKSB7CisgICAgaWYgKHAgPT09IHVuZGVmaW5lZCkgLy8gd2UgYXNzdW1lIG5vdCBn
aXZlbgorCXAgPSBTQ19ERUZBVUxUX09VVDsKKyAgICBwLmFwcGVuZEpTU3RyaW5nKGMudmFsKTsK
K30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tIHdyaXRlLWNpcmNsZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKioqIE1FVEEgKChleHBv
cnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd3JpdGVDaXJjbGUobywgcCkgeworICAgIGlmIChwID09
PSB1bmRlZmluZWQpIC8vIHdlIGFzc3VtZSBub3QgZ2l2ZW4KKwlwID0gU0NfREVGQVVMVF9PVVQ7
CisgICAgcC5hcHBlbmRKU1N0cmluZyhzY190b1dyaXRlQ2lyY2xlU3RyaW5nKG8pKTsKK30KKwor
ZnVuY3Rpb24gc2NfdG9Xcml0ZUNpcmNsZVN0cmluZyhvKSB7CisgICAgdmFyIHN5bWIgPSBzY19n
ZW5zeW0oIndyaXRlQ2lyY2xlIik7CisgICAgdmFyIG5iUG9pbnRlciA9IG5ldyBPYmplY3QoKTsK
KyAgICBuYlBvaW50ZXIubmIgPSAwOworICAgIHNjX3ByZXBXcml0ZUNpcmNsZShvLCBzeW1iLCBu
YlBvaW50ZXIpOworICAgIHJldHVybiBzY19nZW5Ub1dyaXRlQ2lyY2xlU3RyaW5nKG8sIHN5bWIp
OworfQorCitmdW5jdGlvbiBzY19wcmVwV3JpdGVDaXJjbGUobywgc3ltYiwgbmJQb2ludGVyKSB7
CisgICAgLy8gVE9ETyBzY19TdHJ1Y3QKKyAgICBpZiAobyBpbnN0YW5jZW9mIHNjX1BhaXIgfHwK
KwlvIGluc3RhbmNlb2Ygc2NfVmVjdG9yKSB7CisJaWYgKG9bc3ltYl0gIT09IHVuZGVmaW5lZCkg
eworCSAgICAvLyBub3QgdGhlIGZpcnN0IHZpc2l0LgorCSAgICBvW3N5bWJdKys7CisJICAgIC8v
IHVubGVzcyB0aGVyZSBpcyBhbHJlYWR5IGEgbnVtYmVyLCBhc3NpZ24gb25lLgorCSAgICBpZiAo
IW9bc3ltYiArICJuYiJdKSBvW3N5bWIgKyAibmIiXSA9IG5iUG9pbnRlci5uYisrOworCSAgICBy
ZXR1cm47CisJfQorCW9bc3ltYl0gPSAwOworCWlmIChvIGluc3RhbmNlb2Ygc2NfUGFpcikgewor
CSAgICBzY19wcmVwV3JpdGVDaXJjbGUoby5jYXIsIHN5bWIsIG5iUG9pbnRlcik7CisJICAgIHNj
X3ByZXBXcml0ZUNpcmNsZShvLmNkciwgc3ltYiwgbmJQb2ludGVyKTsKKwl9IGVsc2UgeworCSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG8ubGVuZ3RoOyBpKyspCisJCXNjX3ByZXBXcml0ZUNpcmNs
ZShvW2ldLCBzeW1iLCBuYlBvaW50ZXIpOworCX0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNjX2dl
blRvV3JpdGVDaXJjbGVTdHJpbmcobywgc3ltYikgeworICAgIGlmICghKG8gaW5zdGFuY2VvZiBz
Y19QYWlyIHx8CisJICBvIGluc3RhbmNlb2Ygc2NfVmVjdG9yKSkKKwlyZXR1cm4gc2NfdG9Xcml0
ZVN0cmluZyhvKTsKKyAgICByZXR1cm4gby5zY190b1dyaXRlQ2lyY2xlU3RyaW5nKHN5bWIpOwor
fQorc2NfUGFpci5wcm90b3R5cGUuc2NfdG9Xcml0ZUNpcmNsZVN0cmluZyA9IGZ1bmN0aW9uKHN5
bWIsIGluTGlzdCkgeworICAgIGlmICh0aGlzW3N5bWIgKyAidXNlIl0pIHsgLy8gdXNlLWZsYWcg
aXMgc2V0LiBKdXN0IHVzZSBpdC4KKwl2YXIgbmIgPSB0aGlzW3N5bWIgKyAibmIiXTsKKwlpZiAo
dGhpc1tzeW1iXS0tID09PSAwKSB7IC8vIGlmIHdlIGFyZSB0aGUgbGFzdCB1c2UuIHJlbW92ZSBh
bGwgZmllbGRzLgorCSAgICBkZWxldGUgdGhpc1tzeW1iXTsKKwkgICAgZGVsZXRlIHRoaXNbc3lt
YiArICJuYiJdOworCSAgICBkZWxldGUgdGhpc1tzeW1iICsgInVzZSJdOworCX0KKwlpZiAoaW5M
aXN0KQorCSAgICByZXR1cm4gJy4gIycgKyBuYiArICcjJzsKKwllbHNlCisJICAgIHJldHVybiAn
IycgKyBuYiArICcjJzsKKyAgICB9CisgICAgaWYgKHRoaXNbc3ltYl0tLSA9PT0gMCkgeyAvLyBp
ZiB3ZSBhcmUgdGhlIGxhc3QgdXNlLiByZW1vdmUgYWxsIGZpZWxkcy4KKwlkZWxldGUgdGhpc1tz
eW1iXTsKKwlkZWxldGUgdGhpc1tzeW1iICsgIm5iIl07CisJZGVsZXRlIHRoaXNbc3ltYiArICJ1
c2UiXTsKKyAgICB9CisKKyAgICB2YXIgcmVzID0gIiI7CisgICAgCisgICAgaWYgKHRoaXNbc3lt
Yl0gIT09IHVuZGVmaW5lZCkgeyAvLyBpbXBsaWVzID4gMAorCXRoaXNbc3ltYiArICJ1c2UiXSA9
IHRydWU7CisJaWYgKGluTGlzdCkKKwkgICAgcmVzICs9ICcuICMnICsgdGhpc1tzeW1iICsgIm5i
Il0gKyAnPSc7CisJZWxzZQorCSAgICByZXMgKz0gJyMnICsgdGhpc1tzeW1iICsgIm5iIl0gKyAn
PSc7CisJaW5MaXN0ID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFpbkxpc3QpCisJcmVzICs9
ICIoIjsKKyAgICAKKyAgICAvLyBwcmludCBjYXIKKyAgICByZXMgKz0gc2NfZ2VuVG9Xcml0ZUNp
cmNsZVN0cmluZyh0aGlzLmNhciwgc3ltYik7CisgICAgCisgICAgaWYgKHNjX2lzUGFpcih0aGlz
LmNkcikpIHsKKwlyZXMgKz0gIiAiICsgdGhpcy5jZHIuc2NfdG9Xcml0ZUNpcmNsZVN0cmluZyhz
eW1iLCB0cnVlKTsKKyAgICB9IGVsc2UgaWYgKHRoaXMuY2RyICE9PSBudWxsKSB7CisJcmVzICs9
ICIgLiAiICsgc2NfZ2VuVG9Xcml0ZUNpcmNsZVN0cmluZyh0aGlzLmNkciwgc3ltYik7CisgICAg
fQorICAgIGlmICghaW5MaXN0KQorCXJlcyArPSAiKSI7CisgICAgcmV0dXJuIHJlczsKK307Citz
Y19WZWN0b3IucHJvdG90eXBlLnNjX3RvV3JpdGVDaXJjbGVTdHJpbmcgPSBmdW5jdGlvbihzeW1i
KSB7CisgICAgaWYgKHRoaXNbc3ltYiArICJ1c2UiXSkgeyAvLyB1c2UtZmxhZyBpcyBzZXQuIEp1
c3QgdXNlIGl0LgorCXZhciBuYiA9IHRoaXNbc3ltYiArICJuYiJdOworCWlmICh0aGlzW3N5bWJd
LS0gPT09IDApIHsgLy8gaWYgd2UgYXJlIHRoZSBsYXN0IHVzZS4gcmVtb3ZlIGFsbCBmaWVsZHMu
CisJICAgIGRlbGV0ZSB0aGlzW3N5bWJdOworCSAgICBkZWxldGUgdGhpc1tzeW1iICsgIm5iIl07
CisJICAgIGRlbGV0ZSB0aGlzW3N5bWIgKyAidXNlIl07CisJfQorCXJldHVybiAnIycgKyBuYiAr
ICcjJzsKKyAgICB9CisgICAgaWYgKHRoaXNbc3ltYl0tLSA9PT0gMCkgeyAvLyBpZiB3ZSBhcmUg
dGhlIGxhc3QgdXNlLiByZW1vdmUgYWxsIGZpZWxkcy4KKwlkZWxldGUgdGhpc1tzeW1iXTsKKwlk
ZWxldGUgdGhpc1tzeW1iICsgIm5iIl07CisJZGVsZXRlIHRoaXNbc3ltYiArICJ1c2UiXTsKKyAg
ICB9CisKKyAgICB2YXIgcmVzID0gIiI7CisgICAgaWYgKHRoaXNbc3ltYl0gIT09IHVuZGVmaW5l
ZCkgeyAvLyBpbXBsaWVzID4gMAorCXRoaXNbc3ltYiArICJ1c2UiXSA9IHRydWU7CisJcmVzICs9
ICcjJyArIHRoaXNbc3ltYiArICJuYiJdICsgJz0nOworICAgIH0KKyAgICByZXMgKz0gIiMoIjsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHsKKwlyZXMgKz0gc2Nf
Z2VuVG9Xcml0ZUNpcmNsZVN0cmluZyh0aGlzW2ldLCBzeW1iKTsKKwlpZiAoaSA8IHRoaXMubGVu
Z3RoIC0gMSkgcmVzICs9ICIgIjsKKyAgICB9CisgICAgcmVzICs9ICIpIjsKKyAgICByZXR1cm4g
cmVzOworfTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0gcHJpbnQgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoqKiBNRVRBICgoZXhw
b3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3ByaW50KHMpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxl
bmd0aCA9PT0gMSkgeworCXNjX2Rpc3BsYXkocyk7CisJc2NfbmV3bGluZSgpOworICAgIH0KKyAg
ICBlbHNlIHsKKwlmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKwkg
ICAgc2NfZGlzcGxheShhcmd1bWVudHNbaV0pOworCXNjX25ld2xpbmUoKTsKKyAgICB9Cit9CisK
Ky8qIC0tLS0tLS0tLS0tLS0tLS0tLSBmb3JtYXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitm
dW5jdGlvbiBzY19mb3JtYXQocywgYXJncykgeworICAgdmFyIGxlbiA9IHMubGVuZ3RoOworICAg
dmFyIHAgPSBuZXcgc2NfU3RyaW5nT3V0cHV0UG9ydCgpOworICAgdmFyIGkgPSAwLCBqID0gMTsK
KworICAgd2hpbGUoIGkgPCBsZW4gKSB7CisgICAgICB2YXIgaTIgPSBzLmluZGV4T2YoIn4iLCBp
KTsKKworICAgICAgaWYgKGkyID09IC0xKSB7CisJICBwLmFwcGVuZEpTU3RyaW5nKCBzLnN1YnN0
cmluZyggaSwgbGVuICkgKTsKKwkgIHJldHVybiBwLmNsb3NlKCk7CisgICAgICB9IGVsc2Ugewor
CSBpZiAoaTIgPiBpKSB7CisJICAgIGlmIChpMiA9PSAobGVuIC0gMSkpIHsKKwkJcC5hcHBlbmRK
U1N0cmluZyhzLnN1YnN0cmluZyhpLCBsZW4pKTsKKwkJcmV0dXJuIHAuY2xvc2UoKTsKKwkgICAg
fSBlbHNlIHsKKwkgICAgICAgcC5hcHBlbmRKU1N0cmluZyhzLnN1YnN0cmluZyhpLCBpMikpOwor
CSAgICAgICBpID0gaTI7CisJICAgIH0KKwkgfQorCisJIHN3aXRjaChzLmNoYXJDb2RlQXQoaTIg
KyAxKSkgeworCSAgICBjYXNlIDY1OgorCSAgICBjYXNlIDk3OgorCSAgICAgICAvLyBhCisJICAg
ICAgIHNjX2Rpc3BsYXkoYXJndW1lbnRzW2pdLCBwKTsKKwkgICAgICAgaSArPSAyOyBqKys7CisJ
ICAgICAgIGJyZWFrOworCisJICAgIGNhc2UgODM6CisJICAgIGNhc2UgMTE1OgorCSAgICAgICAv
LyBzCisJICAgICAgIHNjX3dyaXRlKGFyZ3VtZW50c1tqXSwgcCk7CisJICAgICAgIGkgKz0gMjsg
aisrOworCSAgICAgICBicmVhazsKKworCSAgICBjYXNlIDg2OgorCSAgICBjYXNlIDExODoKKwkg
ICAgICAgLy8gdgorCSAgICAgICBzY19kaXNwbGF5KGFyZ3VtZW50c1tqXSwgcCk7CisJICAgICAg
IHAuYXBwZW5kSlNTdHJpbmcoIlxuIik7CisJICAgICAgIGkgKz0gMjsgaisrOworCSAgICAgICBi
cmVhazsKKworCSAgICBjYXNlIDY3OgorCSAgICBjYXNlIDk5OgorCSAgICAgICAvLyBjCisJICAg
ICAgIHAuYXBwZW5kSlNTdHJpbmcoU3RyaW5nLmZyb21DaGFyQ29kZShhcmd1bWVudHNbal0pKTsK
KwkgICAgICAgaSArPSAyOyBqKys7CisJICAgICAgIGJyZWFrOworCisJICAgIGNhc2UgODg6CisJ
ICAgIGNhc2UgMTIwOgorCSAgICAgICAvLyB4CisJICAgICAgIHAuYXBwZW5kSlNTdHJpbmcoYXJn
dW1lbnRzW2pdLnRvU3RyaW5nKDYpKTsKKwkgICAgICAgaSArPSAyOyBqKys7CisJICAgICAgIGJy
ZWFrOworCisJICAgIGNhc2UgNzk6CisJICAgIGNhc2UgMTExOgorCSAgICAgICAvLyBvCisJICAg
ICAgIHAuYXBwZW5kSlNTdHJpbmcoYXJndW1lbnRzW2pdLnRvU3RyaW5nKDgpKTsKKwkgICAgICAg
aSArPSAyOyBqKys7CisJICAgICAgIGJyZWFrOworCisJICAgIGNhc2UgNjY6CisJICAgIGNhc2Ug
OTg6CisJICAgICAgIC8vIGIKKwkgICAgICAgcC5hcHBlbmRKU1N0cmluZyhhcmd1bWVudHNbal0u
dG9TdHJpbmcoMikpOworCSAgICAgICBpICs9IDI7IGorKzsKKwkgICAgICAgYnJlYWs7CisJICAg
ICAgIAorCSAgICBjYXNlIDM3OgorCSAgICBjYXNlIDExMDoKKwkgICAgICAgLy8gJSwgbgorCSAg
ICAgICBwLmFwcGVuZEpTU3RyaW5nKCJcbiIpOworCSAgICAgICBpICs9IDI7IGJyZWFrOworCisJ
ICAgIGNhc2UgMTE0OgorCSAgICAgICAvLyByCisJICAgICAgIHAuYXBwZW5kSlNTdHJpbmcoIlxy
Iik7CisJICAgICAgIGkgKz0gMjsgYnJlYWs7CisKKwkgICAgY2FzZSAxMjY6CisJICAgICAgIC8v
IH4KKwkgICAgICAgcC5hcHBlbmRKU1N0cmluZygifiIpOworCSAgICAgICBpICs9IDI7IGJyZWFr
OworCisJICAgIGRlZmF1bHQ6CisJICAgICAgIHNjX2Vycm9yKCAiZm9ybWF0OiBpbGxlZ2FsIH4i
CisJCQkgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKHMuY2hhckNvZGVBdChpMiArIDEpKQorCQkJICsg
IiBzZXF1ZW5jZSIgKTsKKwkgICAgICAgcmV0dXJuICIiOworCSB9CisgICAgICB9CisgICB9CisK
KyAgIHJldHVybiBwLmNsb3NlKCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLSBnbG9iYWwg
cG9ydHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KKwordmFyIFNDX0RFRkFVTFRfSU4gPSBuZXcgc2NfRXJyb3JJbnB1dFBvcnQoKTsKK3ZhciBT
Q19ERUZBVUxUX09VVCA9IG5ldyBzY19FcnJvck91dHB1dFBvcnQoKTsKK3ZhciBTQ19FUlJPUl9P
VVQgPSBuZXcgc2NfRXJyb3JPdXRwdXRQb3J0KCk7CisKK3ZhciBzY19TWU1CT0xfUFJFRklYID0g
Ilx1MUU5QyI7Cit2YXIgc2NfS0VZV09SRF9QUkVGSVggPSAiXHUxRTlEIjsKKworLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGlkKSkpICovCitmdW5jdGlvbiBz
Y19qc3N0cmluZzJzdHJpbmcocykgeworICAgIHJldHVybiBzOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocHJlZml4ICInXFx1MUU5QycgKyIpKSkK
KyovCitmdW5jdGlvbiBzY19qc3N0cmluZzJzeW1ib2wocykgeworICAgIHJldHVybiBzY19TWU1C
T0xfUFJFRklYICsgczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAo
cGVlcGhvbGUgKGlkKSkpCisqLworZnVuY3Rpb24gc2Nfc3RyaW5nMmpzc3RyaW5nKHMpIHsKKyAg
ICByZXR1cm4gczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVl
cGhvbGUgKHN5bWJvbDJqc3N0cmluZ19pbW11dGFibGUpKSkKKyovCitmdW5jdGlvbiBzY19zeW1i
b2wyanNzdHJpbmcocykgeworICAgIHJldHVybiBzLnNsaWNlKDEpOworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLnNsaWNlKDEpIikp
KQorKi8KK2Z1bmN0aW9uIHNjX2tleXdvcmQyanNzdHJpbmcoaykgeworICAgIHJldHVybiBrLnNs
aWNlKDEpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9s
ZSAocHJlZml4ICInXFx1MUU5RCcgKyIpKSkKKyovCitmdW5jdGlvbiBzY19qc3N0cmluZzJrZXl3
b3JkKHMpIHsKKyAgICByZXR1cm4gc2NfS0VZV09SRF9QUkVGSVggKyBzOworfQorCisvKioqIE1F
VEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNj
X2lzS2V5d29yZChzKSB7CisgICAgcmV0dXJuICh0eXBlb2YgcyA9PT0gInN0cmluZyIpICYmCisJ
KHMuY2hhckF0KDApID09PSBzY19LRVlXT1JEX1BSRUZJWCk7Cit9CisKKworLyoqKiBNRVRBICgo
ZXhwb3J0ICN0KSkgKi8KK3ZhciBzY19nZW5zeW0gPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgY291
bnRlciA9IDEwMDA7CisgICAgcmV0dXJuIGZ1bmN0aW9uKHN5bSkgeworCWNvdW50ZXIrKzsKKwlp
ZiAoIXN5bSkgc3ltID0gc2NfU1lNQk9MX1BSRUZJWDsKKwlyZXR1cm4gc3ltICsgInMiICsgY291
bnRlciArICJ+IiArICJec0MtR2VOc1ltICI7CisgICAgfTsKK30oKTsKKworCisvKioqIE1FVEEg
KChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lz
RXF1YWwobzEsIG8yKSB7CisgICAgcmV0dXJuICgobzEgPT09IG8yKSB8fAorCSAgICAoc2NfaXNQ
YWlyKG8xKSAmJiBzY19pc1BhaXIobzIpCisJICAgICAmJiBzY19pc1BhaXJFcXVhbChvMSwgbzIs
IHNjX2lzRXF1YWwpKSB8fAorCSAgICAoc2NfaXNWZWN0b3IobzEpICYmIHNjX2lzVmVjdG9yKG8y
KQorCSAgICAgJiYgc2NfaXNWZWN0b3JFcXVhbChvMSwgbzIsIHNjX2lzRXF1YWwpKSk7Cit9CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCBudW1iZXItPnN5bWJvbCBpbnRlZ2VyLT5zeW1ib2wpKSAqLwor
ZnVuY3Rpb24gc2NfbnVtYmVyMnN5bWJvbCh4LCByYWRpeCkgeworICAgIHJldHVybiBzY19TWU1C
T0xfUFJFRklYICsgc2NfbnVtYmVyMmpzc3RyaW5nKHgsIHJhZGl4KTsKK30KKyAgICAKKy8qKiog
TUVUQSAoKGV4cG9ydCBudW1iZXItPnN0cmluZyBpbnRlZ2VyLT5zdHJpbmcpKSAqLwordmFyIHNj
X251bWJlcjJzdHJpbmcgPSBzY19udW1iZXIyanNzdHJpbmc7CisKKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkpICovCitmdW5jdGlvbiBzY19zeW1ib2wybnVtYmVyKHMsIHJhZGl4KSB7CisgICAgcmV0
dXJuIHNjX2pzc3RyaW5nMm51bWJlcihzLnNsaWNlKDEpLCByYWRpeCk7Cit9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2Nfc3RyaW5nMm51bWJlciA9IHNjX2pzc3RyaW5nMm51
bWJlcjsKKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBy
ZWZpeCAiKyIgcykpKQorICAgICAgICAgICA7OyBwZWVwaG9sZSB3aWxsIG9ubHkgYXBwbHkgaWYg
bm8gcmFkaXggaXMgZ2l2ZW4uCisqLworZnVuY3Rpb24gc2Nfc3RyaW5nMmludGVnZXIocywgcmFk
aXgpIHsKKyAgICBpZiAoIXJhZGl4KSByZXR1cm4gK3M7CisgICAgcmV0dXJuIHBhcnNlSW50KHMs
IHJhZGl4KTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhv
bGUgKHByZWZpeCAiKyIpKSkKKyovCitmdW5jdGlvbiBzY19zdHJpbmcycmVhbChzKSB7CisgICAg
cmV0dXJuICtzOworfQorCisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5
cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNTeW1ib2wocykgeworICAgIHJldHVybiAodHlw
ZW9mIHMgPT09ICJzdHJpbmciKSAmJgorCShzLmNoYXJBdCgwKSA9PT0gc2NfU1lNQk9MX1BSRUZJ
WCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChz
eW1ib2wyc3RyaW5nX2ltbXV0YWJsZSkpKQorKi8KK2Z1bmN0aW9uIHNjX3N5bWJvbDJzdHJpbmco
cykgeworICAgIHJldHVybiBzLnNsaWNlKDEpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
CisgICAgICAgICAgIChwZWVwaG9sZSAocHJlZml4ICInXFx1MUU5QycgKyIpKSkKKyovCitmdW5j
dGlvbiBzY19zdHJpbmcyc3ltYm9sKHMpIHsKKyAgICByZXR1cm4gc2NfU1lNQk9MX1BSRUZJWCAr
IHM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBzeW1ib2wtYXBwZW5kKQorICAgICAgICAgICAo
cGVlcGhvbGUgKHN5bWJvbEFwcGVuZF9pbW11dGFibGUpKSkKKyovCitmdW5jdGlvbiBzY19zeW1i
b2xBcHBlbmQoKSB7CisgICAgdmFyIHJlcyA9IHNjX1NZTUJPTF9QUkVGSVg7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJcmVzICs9IGFyZ3VtZW50c1tp
XS5zbGljZSgxKTsKKyAgICByZXR1cm4gcmVzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
CisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLnZhbCIpKSkKKyovCitmdW5jdGlvbiBz
Y19jaGFyMnN0cmluZyhjKSB7IHJldHVybiBjLnZhbDsgfQorCisvKioqIE1FVEEgKChleHBvcnQg
I3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAxICInXFx1MUU5QycgKyAiIGMgIi52YWwi
KSkpCisqLworZnVuY3Rpb24gc2NfY2hhcjJzeW1ib2woYykgeyByZXR1cm4gc2NfU1lNQk9MX1BS
RUZJWCArIGMudmFsOyB9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5
cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmcocykgeworICAgIHJldHVybiAodHlw
ZW9mIHMgPT09ICJzdHJpbmciKSAmJgorCShzLmNoYXJBdCgwKSAhPT0gc2NfU1lNQk9MX1BSRUZJ
WCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfbWFrZVN0cmluZyA9
IHNjX21ha2Vqc1N0cmluZzsKKworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rp
b24gc2Nfc3RyaW5nKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0
aDsgaSsrKQorCWFyZ3VtZW50c1tpXSA9IGFyZ3VtZW50c1tpXS52YWw7CisgICAgcmV0dXJuICIi
LmNvbmNhdC5hcHBseSgiIiwgYXJndW1lbnRzKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0
KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5sZW5ndGgiKSkpCisqLworZnVuY3Rp
b24gc2Nfc3RyaW5nTGVuZ3RoKHMpIHsgcmV0dXJuIHMubGVuZ3RoOyB9CisKKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19zdHJpbmdSZWYocywgaykgeworICAgIHJldHVy
biBuZXcgc2NfQ2hhcihzLmNoYXJBdChrKSk7Cit9CisKKy8qIHRoZXJlJ3Mgbm8gc3RyaW5nU2V0
IGluIHRoZSBpbW11dGFibGUgdmVyc2lvbgorZnVuY3Rpb24gc2Nfc3RyaW5nU2V0KHMsIGssIGMp
CisqLworCisKKy8qKiogTUVUQSAoKGV4cG9ydCBzdHJpbmc9PykKKwkgICAodHlwZSBib29sKQor
ICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBzdHIxICIgPT09ICIgc3RyMikpKQorKi8KK2Z1
bmN0aW9uIHNjX2lzU3RyaW5nRXF1YWwoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxID09PSBzMjsK
K30KKy8qKiogTUVUQSAoKGV4cG9ydCBzdHJpbmc8PykKKwkgICAodHlwZSBib29sKQorICAgICAg
ICAgICAocGVlcGhvbGUgKGhvbGUgMiBzdHIxICIgPCAiIHN0cjIpKSkKKyovCitmdW5jdGlvbiBz
Y19pc1N0cmluZ0xlc3MoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxIDwgczI7Cit9CisvKioqIE1F
VEEgKChleHBvcnQgc3RyaW5nPj8pCisJICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChob2xlIDIgc3RyMSAiID4gIiBzdHIyKSkpCisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmdH
cmVhdGVyKHMxLCBzMikgeworICAgIHJldHVybiBzMSA+IHMyOworfQorLyoqKiBNRVRBICgoZXhw
b3J0IHN0cmluZzw9PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhv
bGUgMiBzdHIxICIgPD0gIiBzdHIyKSkpCisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmdMZXNzRXF1
YWwoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxIDw9IHMyOworfQorLyoqKiBNRVRBICgoZXhwb3J0
IHN0cmluZz49PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUg
MiBzdHIxICIgPj0gIiBzdHIyKSkpCisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmdHcmVhdGVyRXF1
YWwoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxID49IHMyOworfQorLyoqKiBNRVRBICgoZXhwb3J0
IHN0cmluZy1jaT0/KQorCSAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9s
ZSAyIHN0cjEgIi50b0xvd2VyQ2FzZSgpID09PSAiIHN0cjIgIi50b0xvd2VyQ2FzZSgpIikpKQor
Ki8KK2Z1bmN0aW9uIHNjX2lzU3RyaW5nQ0lFcXVhbChzMSwgczIpIHsKKyAgICByZXR1cm4gczEu
dG9Mb3dlckNhc2UoKSA9PT0gczIudG9Mb3dlckNhc2UoKTsKK30KKy8qKiogTUVUQSAoKGV4cG9y
dCBzdHJpbmctY2k8PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhv
bGUgMiBzdHIxICIudG9Mb3dlckNhc2UoKSA8ICIgc3RyMiAiLnRvTG93ZXJDYXNlKCkiKSkpCisq
LworZnVuY3Rpb24gc2NfaXNTdHJpbmdDSUxlc3MoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxLnRv
TG93ZXJDYXNlKCkgPCBzMi50b0xvd2VyQ2FzZSgpOworfQorLyoqKiBNRVRBICgoZXhwb3J0IHN0
cmluZy1jaT4/KQorCSAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAy
IHN0cjEgIi50b0xvd2VyQ2FzZSgpID4gIiBzdHIyICIudG9Mb3dlckNhc2UoKSIpKSkKKyovCitm
dW5jdGlvbiBzY19pc1N0cmluZ0NJR3JlYXRlcihzMSwgczIpIHsKKyAgICByZXR1cm4gczEudG9M
b3dlckNhc2UoKSA+IHMyLnRvTG93ZXJDYXNlKCk7Cit9CisvKioqIE1FVEEgKChleHBvcnQgc3Ry
aW5nLWNpPD0/KQorCSAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAy
IHN0cjEgIi50b0xvd2VyQ2FzZSgpIDw9ICIgc3RyMiAiLnRvTG93ZXJDYXNlKCkiKSkpCisqLwor
ZnVuY3Rpb24gc2NfaXNTdHJpbmdDSUxlc3NFcXVhbChzMSwgczIpIHsKKyAgICByZXR1cm4gczEu
dG9Mb3dlckNhc2UoKSA8PSBzMi50b0xvd2VyQ2FzZSgpOworfQorLyoqKiBNRVRBICgoZXhwb3J0
IHN0cmluZy1jaT49PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhv
bGUgMiBzdHIxICIudG9Mb3dlckNhc2UoKSA+PSAiIHN0cjIgIi50b0xvd2VyQ2FzZSgpIikpKQor
Ki8KK2Z1bmN0aW9uIHNjX2lzU3RyaW5nQ0lHcmVhdGVyRXF1YWwoczEsIHMyKSB7CisgICAgcmV0
dXJuIHMxLnRvTG93ZXJDYXNlKCkgPj0gczIudG9Mb3dlckNhc2UoKTsKK30KKworLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMyBzICIuc3Vic3RyaW5n
KCIgc3RhcnQgIiwgIiBlbmQgIikiKSkpCisqLworZnVuY3Rpb24gc2Nfc3Vic3RyaW5nKHMsIHN0
YXJ0LCBlbmQpIHsKKyAgICByZXR1cm4gcy5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7Cit9CisKKy8q
KiogTUVUQSAoKGV4cG9ydCAjdCkpCisqLworZnVuY3Rpb24gc2NfaXNTdWJzdHJpbmdfYXQoczEs
IHMyLCBpKSB7CisgICAgcmV0dXJuIHMyID09IHMxLnN1YnN0cmluZyhpLCBpKyBzMi5sZW5ndGgp
OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaW5m
aXggMCAjZiAiKyIgIicnIikpKQorKi8KK2Z1bmN0aW9uIHNjX3N0cmluZ0FwcGVuZCgpIHsKKyAg
ICByZXR1cm4gIiIuY29uY2F0LmFwcGx5KCIiLCBhcmd1bWVudHMpOworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLwordmFyIHNjX3N0cmluZzJsaXN0ID0gc2NfanNzdHJpbmcybGlzdDsK
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBzY19saXN0MnN0cmluZyA9IHNjX2xp
c3QyanNzdHJpbmc7CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChpZCkpKQorKi8KK2Z1bmN0aW9uIHNjX3N0cmluZ0NvcHkocykgeworICAgIHJldHVybiBz
OworfQorCisvKiB0aGVyZSdzIG5vIHN0cmluZy1maWxsIGluIHRoZSBpbW11dGFibGUgdmVyc2lv
bgorZnVuY3Rpb24gc2Nfc3RyaW5nRmlsbChzLCBjKQorKi8KKworLyoqKiBNRVRBICgoZXhwb3J0
ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5zbGljZSgxKSIpKSkKKyovCitm
dW5jdGlvbiBzY19rZXl3b3JkMnN0cmluZyhvKSB7CisgICAgcmV0dXJuIG8uc2xpY2UoMSk7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwcmVmaXgg
IidcXHUxRTlEJyArIikpKQorKi8KK2Z1bmN0aW9uIHNjX3N0cmluZzJrZXl3b3JkKG8pIHsKKyAg
ICByZXR1cm4gc2NfS0VZV09SRF9QUkVGSVggKyBvOworfQorCitTdHJpbmcucHJvdG90eXBlLnNj
X3RvRGlzcGxheVN0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0aGlzLmNoYXJBdCgwKSA9
PT0gc2NfU1lNQk9MX1BSRUZJWCkKKwkvLyBUT0RPOiBjYXJlIGZvciBzeW1ib2xzIHdpdGggc3Bh
Y2VzIChlc2NhcGUtY2hhcnMgc3ltYm9scykuCisJcmV0dXJuIHRoaXMuc2xpY2UoMSk7CisgICAg
ZWxzZSBpZiAodGhpcy5jaGFyQXQoMCkgPT09IHNjX0tFWVdPUkRfUFJFRklYKQorCXJldHVybiAi
OiIgKyB0aGlzLnNsaWNlKDEpOworICAgIGVsc2UKKwlyZXR1cm4gdGhpcy50b1N0cmluZygpOwor
fTsKKworU3RyaW5nLnByb3RvdHlwZS5zY190b1dyaXRlU3RyaW5nID0gZnVuY3Rpb24oKSB7Cisg
ICAgaWYgKHRoaXMuY2hhckF0KDApID09PSBzY19TWU1CT0xfUFJFRklYKQorCS8vIFRPRE86IGNh
cmUgZm9yIHN5bWJvbHMgd2l0aCBzcGFjZXMgKGVzY2FwZS1jaGFycyBzeW1ib2xzKS4KKwlyZXR1
cm4gdGhpcy5zbGljZSgxKTsKKyAgICBlbHNlIGlmICh0aGlzLmNoYXJBdCgwKSA9PT0gc2NfS0VZ
V09SRF9QUkVGSVgpCisJcmV0dXJuICI6IiArIHRoaXMuc2xpY2UoMSk7CisgICAgZWxzZQorCXJl
dHVybiAnIicgKyBzY19lc2NhcGVXcml0ZVN0cmluZyh0aGlzKSArICciJzsKK307CisvKiBFeHBv
cnRlZCBWYXJpYWJsZXMgKi8KK3ZhciBCZ0xfdGVzdHpkMmJveWVyemQyOwordmFyIEJnTF9uYm95
ZXJ6ZDJiZW5jaG1hcmt6ZDI7Cit2YXIgQmdMX3NldHVwemQyYm95ZXJ6ZDI7CisvKiBFbmQgRXhw
b3J0cyAqLworCit2YXIgdHJhbnNsYXRlX3Rlcm1fbmJveWVyOwordmFyIHRyYW5zbGF0ZV9hcmdz
X25ib3llcjsKK3ZhciB1bnRyYW5zbGF0ZV90ZXJtX25ib3llcjsKK3ZhciBCZ0xfc2Nfc3ltYm9s
emQyemUzc3ltYm9semQycmVjb3JkXzF6ZTNfbmJveWVyOwordmFyIEJnTF9zY196YTJzeW1ib2x6
ZDJyZWNvcmRzemQyYWxpc3R6YTJfMnowMF9uYm95ZXI7Cit2YXIgdHJhbnNsYXRlX2FsaXN0X25i
b3llcjsKK3ZhciBhcHBseV9zdWJzdF9uYm95ZXI7Cit2YXIgYXBwbHlfc3Vic3RfbHN0X25ib3ll
cjsKK3ZhciB0YXV0b2xvZ3lwX25ib3llcjsKK3ZhciBpZl9jb25zdHJ1Y3Rvcl9uYm95ZXI7Cit2
YXIgcmV3cml0ZV9jb3VudF9uYm95ZXI7Cit2YXIgcmV3cml0ZV9uYm95ZXI7Cit2YXIgcmV3cml0
ZV9hcmdzX25ib3llcjsKK3ZhciB1bmlmeV9zdWJzdF9uYm95ZXI7Cit2YXIgb25lX3dheV91bmlm
eTFfbmJveWVyOwordmFyIGZhbHNlX3Rlcm1fbmJveWVyOwordmFyIHRydWVfdGVybV9uYm95ZXI7
Cit2YXIgdHJhbnNfb2ZfaW1wbGllczFfbmJveWVyOwordmFyIGlzX3Rlcm1fZXF1YWxfbmJveWVy
OwordmFyIGlzX3Rlcm1fbWVtYmVyX25ib3llcjsKK3ZhciBjb25zdF9uYm95ZXI7Cit2YXIgc2Nf
Y29uc3RfM19uYm95ZXI7Cit2YXIgc2NfY29uc3RfNF9uYm95ZXI7Cit7CisgICAgKHNjX2NvbnN0
XzRfbmJveWVyID0gKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNhbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lt
cGxpZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxs
KSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDaW1wbGllcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3oiLChuZXcgc2NfUGFpcigiXHUxRTlDdSIsbnVsbCkpKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3UiLChuZXcgc2NfUGFpcigiXHUxRTlDdyIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkp
KSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDdyIsbnVsbCkpKSkpKSxu
dWxsKSkpKSkpKTsKKyAgICAoc2NfY29uc3RfM19uYm95ZXIgPSBzY19saXN0KChuZXcgc2NfUGFp
cigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NvbXBpbGUi
LChuZXcgc2NfUGFpcigiXHUxRTlDZm9ybSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29k
ZWdlbiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDb3B0aW1pemUiLChuZXcgc2Nf
UGFpcigiXHUxRTlDZm9ybSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDbmlsIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXAiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51
bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ3JlYXRlcnAiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzZXFwIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlD
eCIsbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNncmVhdGVyZXFwIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlD
eSIsbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNib29sZWFuIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q29y
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0IixudWxsKSksbnVsbCkp
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmIixudWxsKSksbnVs
bCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmZiIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBs
aWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkp
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSxudWxsKSkpKSkp
LG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2V2ZW4xIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0IixudWxsKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDb2RkIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzdWIxIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpLG51bGwpKSkpKSkpKSxudWxs
KSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNjb3VudHBzLSIsKG5ldyBzY19QYWlyKCJcdTFFOUNsIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3ByZWQiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
Y291bnRwcy1sb29wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2wiLChuZXcgc2NfUGFpcigiXHUxRTlD
cHJlZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwp
KSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmYWN0LSIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxs
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmYWN0LWxvb3AiLChuZXcgc2Nf
UGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCgxKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChu
ZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3JldmVyc2UtIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UtbG9vcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNuaWwiLG51bGwpKSxudWxsKSkpKSkpLG51
bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2RpdmlkZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWly
KCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3pl
cm9wIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZW1haW5kZXIiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLG51bGwpKSkp
LG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2Fzc3VtZS10cnVlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhciIsKG5l
dyBzY19QYWlyKCJcdTFFOUNhbGlzdCIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3ZhciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
dCIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNhbGlzdCIsbnVsbCkpKSkp
KSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNhc3N1bWUtZmFsc2UiLChuZXcgc2NfUGFpcigiXHUxRTlDdmFyIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2FsaXN0IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2NvbnMiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NvbnMi
LChuZXcgc2NfUGFpcigiXHUxRTlDdmFyIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNmIixudWxsKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2FsaXN0IixudWxsKSkp
KSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3RhdXRvbG9neS1jaGVja2VyIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RhdXRvbG9neXAi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vcm1hbGl6ZSIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNuaWwi
LG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZhbHNpZnkiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmFsc2lm
eTEiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vcm1hbGl6ZSIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNu
aWwiLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3ByaW1lIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxs
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FkZDEiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3ByaW1lMSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzdWIxIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIs
KG5ldyBzY19QYWlyKCJcdTFFOUNwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3EiLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlD
cCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUx
RTlDcSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSxudWxsKSkpKSkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkp
LCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNvciIsKG5ldyBzY19QYWlyKCJcdTFFOUNwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3EiLG51
bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFp
cigiXHUxRTlDcCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3Ei
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3QiLG51bGwpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNmIixudWxsKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSkpKSxu
dWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigiXHUxRTlDcCIsbnVsbCkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDcCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3QiLG51bGwpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBz
Y19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaW1w
bGllcyIsKG5ldyBzY19QYWlyKCJcdTFFOUNwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3EiLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigi
XHUxRTlDcCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFp
cigiXHUxRTlDcSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSxudWxsKSkpKSkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLG51bGwpKSkpKSkpKSxudWxs
KSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q251bWJlcnAiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSks
bnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Ii
LChuZXcgc2NfUGFpcigiXHUxRTlDYyIsbnVsbCkpKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlD
ZCIsKG5ldyBzY19QYWlyKCJcdTFFOUNlIixudWxsKSkpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWly
KCJcdTFFOUNkIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2UiLG51bGwpKSkpKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2QiLChuZXcgc2NfUGFpcigiXHUxRTlDZSIsbnVsbCkpKSkpKSkpLG51bGwp
KSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxs
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNvciIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNudW1iZXJwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpLG51
bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ki
LG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAo
bmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkp
KSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFpcigiXHUx
RTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q2MiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q2IiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Zp
eCIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSks
IChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJl
bmNlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkp
KSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNvciIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigiXHUx
RTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lYW5p
bmciLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMtdHJlZSIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1
MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVhbmluZyIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcGx1cy10cmVlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwp
KSkpLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNtZWFuaW5nIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNw
bHVzLXRyZWUiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKCJc
dTFFOUNhIixudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVhbmluZyIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cy10cmVlIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNwbHVzLWZyaW5nZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxs
KSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNtZWFuaW5nIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlD
YSIsbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxs
KSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51
bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUx
RTlDYiIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNhcHBlbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcg
c2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSxudWxsKSkpKSkpLG51
bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwp
KSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFp
cigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFp
cigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDb3IiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9w
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkp
KSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDZXhlYyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
YXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q3BkcyIsKG5ldyBzY19QYWlyKCJcdTFFOUNlbnZy
biIsbnVsbCkpKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2V4ZWMiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXhl
YyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3BkcyIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNlbnZybiIsbnVsbCkpKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDZW52
cm4iLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtYy1mbGF0dGVuIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q2ZsYXR0ZW4iLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWly
KCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcg
c2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDb3IiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDbWVtYmVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDYiIs
bnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZXZlcnNlIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDbWVtYmVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFp
cigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZW5ndGgiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVs
bCkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVuZ3RoIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigi
XHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5l
dyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbnRl
cnNlY3QiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxs
KSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUx
RTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q2MiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudGgiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVy
byIsbnVsbCkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2V4cCIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oi
LChuZXcgc2NfUGFpcigiXHUxRTlDayIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNleHAiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNqIixu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2V4cCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNpIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2siLG51bGwpKSkpKSksbnVsbCkpKSkp
KSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNleHAiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNrIixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDZXhwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNleHAi
LChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNqIixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigiXHUxRTlDayIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZXZlcnNl
LWxvb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxs
KSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iixu
dWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
cmV2ZXJzZS1sb29wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q25pbCIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxs
KSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNjb3VudC1saXN0IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3NvcnQtbHAiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5l
dyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
Y291bnQtbGlzdCIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gi
LG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY291bnQtbGlzdCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSks
bnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUx
RTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQi
LChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkpKSkp
LG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkpKSkpLG51bGwp
KSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JlbWFpbmRl
ciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigi
XHUxRTlDeSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcXVvdGllbnQiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwp
KSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmaXgiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcG93ZXItZXZhbCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYmlnLXBsdXMxIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2wiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNl
IixudWxsKSkpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3Bvd2VyLWV2YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDbCIsKG5ldyBzY19QYWly
KCJcdTFFOUNiYXNlIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsbnVsbCkpKSkp
KSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNwb3dlci1ldmFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNiaWctcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxs
KSkpKSkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNwb3dlci1ldmFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFp
cigiXHUxRTlDYmFzZSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNwb3dlci1ldmFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlD
YmFzZSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBz
Y19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmVt
YWluZGVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkp
KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkp
KSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JlbWFpbmRlciIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBz
Y19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmVt
YWluZGVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVs
bCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3F1b3Rp
ZW50IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIsbnVsbCkp
KSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3Qi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2kiLG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q29yIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWly
KCJcdTFFOUNqIixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3Qi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2oiLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLG51
bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3JlbWFpbmRlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5l
dyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9w
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
bGVzc3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxs
KSkpKSkpLG51bGwpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwb3dlci1ldmFsIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwb3dlci1yZXAiLChuZXcgc2NfUGFpcigi
XHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkpLChuZXcgc2NfUGFp
cigiXHUxRTlDYmFzZSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBz
Y19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcG93
ZXItZXZhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYmlnLXBsdXMiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Bvd2VyLXJlcCIsKG5ldyBzY19QYWlyKCJcdTFF
OUNpIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcG93ZXItcmVwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oiLChuZXcg
c2NfUGFpcigiXHUxRTlDYmFzZSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUN6ZXJvIixudWxsKSksKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkp
KSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q2oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ2NkIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNnY2QiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q250aCIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcg
c2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudGgiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNpIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q250aCIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNkaWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0aCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkp
KSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJl
bmNlIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFp
cigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVu
Y2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigi
XHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmaXgi
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5j
ZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFp
cigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2MiLChuZXcgc2NfUGFpcigiXHUxRTlDdyIsbnVsbCkpKSkpKSxu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q2MiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN3IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZW1haW5kZXIi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1
MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIs
bnVsbCkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2MiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51
bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNiIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2MiLG51bGwpKSkpKSksbnVsbCkpKSkp
KSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYWRkMSIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFF
OUN5IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19Q
YWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2FkZDEiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBz
Y19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVz
c3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJc
dTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
dGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxs
KSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpLG51bGwp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51
bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3
IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNn
Y2QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNnY2QiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdmFsdWUi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vcm1hbGl6ZSIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdmFsdWUiLChuZXcgc2NfUGFpcigiXHUxRTlD
eCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFs
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmbGF0dGVuIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NvbnMi
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
bmlsIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbmxpc3RwIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlD
eSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xpc3RwIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNnb3BoZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVs
bCkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGlzdHAiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc2FtZWZyaW5nZSIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2ZsYXR0ZW4iLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmxhdHRlbiIsKG5ldyBzY19QYWlyKCJc
dTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUx
RTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNncmVhdGVzdC1mYWN0b3IiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
b3IiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3kiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFs
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxudWxs
KSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwp
KSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2dyZWF0ZXN0LWZhY3RvciIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCgxKSxu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAo
bmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNudW1iZXJwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNncmVhdGVzdC1mYWN0
b3IiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkp
KSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNvciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcg
c2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCgxKSxudWxsKSkp
KSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudW1iZXJwIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
dGltZXMtbGlzdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxs
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMtbGlzdCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iixu
dWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcy1saXN0IiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBz
Y19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcHJp
bWUtbGlzdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkp
KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhbmQiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3ByaW1lLWxpc3QiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcHJpbWUtbGlzdCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFp
cigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3oiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Rp
bWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ciLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkp
KSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN6IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNvciIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUx
RTlDdyIsKG5ldyBzY19QYWlyKCgxKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxu
dWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNncmVhdGVyZXFwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2Nf
UGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSxu
dWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNvciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
emVybyIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
YW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudW1iZXJwIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxu
dWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVh
bCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmVtYWluZGVyIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxs
KSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxs
KSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMi
LChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoc2NfbGlzdCgiXHUxRTlD
YW5kIiwgKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpLCAobmV3IHNjX1Bh
aXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChu
ZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVy
byIsbnVsbCkpLG51bGwpKSkpKSksbnVsbCkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVy
cCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNu
dW1iZXJwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpLCAobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzdWIxIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzdWIxIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Ii
LG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxu
dWxsKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDbGVuZ3RoIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkZWxldGUi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUNsIixudWxsKSkpKSkp
LG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0aCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNsIixudWxsKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2wiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVh
bCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc29ydDIiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2RlbGV0ZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2wiLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDZGVsZXRlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3NvcnQyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2wiLG51bGwpKSkp
LG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZHNvcnQiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
bnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc29ydDIiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVuZ3RoIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gxIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gy
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3gzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3g0IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3g1IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25z
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3g2IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3g3IixudWxsKSkp
KSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkp
KSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNj
X1BhaXIoKDYpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0aCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4NyIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZm
ZXJlbmNlIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhZGQxIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhZGQxIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwp
KSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigoMiksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVs
bCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDcXVvdGllbnQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Bs
dXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51
bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKDIpLG51bGwpKSkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNxdW90aWVudCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN5IiwobmV3IHNjX1BhaXIoKDIpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAo
bmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNzaWdtYSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLChu
ZXcgc2NfUGFpcigiXHUxRTlDaSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNxdW90aWVudCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMi
LChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
YWRkMSIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxsKSkpKSxudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigoMiksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFs
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FkZDEiLChuZXcgc2NfUGFp
cigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5l
dyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNhZGQxIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkp
KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhZGQxIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVzc3Ai
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWly
KCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZpeCIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmaXgi
LChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpKSks
bnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lYW5pbmciLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3BsdXMtdHJlZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
ZGVsZXRlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVs
bCkpKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5j
ZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVhbmluZyIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cy10cmVlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51
bGwpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNtZWFuaW5nIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2Nf
UGFpcigiXHUxRTlDYSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q21lYW5pbmciLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Bs
dXMtdHJlZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1
MUU5Q2EiLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigi
XHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FkZDEi
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
bnVtYmVycCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcg
c2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2ZpeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxs
KSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnRoIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNuaWwiLG51bGwpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q25pbCIsbnVsbCkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGFzdCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDbGlzdHAiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDbGFzdCIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkp
KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDbGlzdHAiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29ucyIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDY2FyIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsYXN0Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigiXHUx
RTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSkpKSxudWxs
KSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlD
eSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIs
bnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLChuZXcgc2NfUGFpcigiXHUxRTlD
eiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpLChuZXcgc2NfUGFpcigiXHUx
RTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXNzaWdubWVudCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNh
cHBlbmQiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxs
KSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Fzc2lnbmVkcCIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDYXNzaWdubWVudCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDYXNzaWdubWVudCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2IiLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigi
XHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NhciIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ29waGVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gi
LG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsaXN0cCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjYXIiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZsYXR0ZW4iLChuZXcgc2NfUGFpcigiXHUxRTlD
eCIsbnVsbCkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVy
byIsbnVsbCkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmbGF0dGVuIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjZHIiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q2dvcGhlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSxudWxs
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDbGlzdHAiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY2RyIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNmbGF0dGVuIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51
bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NvbnMiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNuaWwiLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkp
LCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNxdW90aWVudCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcg
c2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDemVybyIsbnVsbCkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZpeCIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
Z2V0IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3NldCIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhbCIs
KG5ldyBzY19QYWlyKCJcdTFFOUNtZW0iLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXAiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIixu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDdmFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNnZXQiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIsKG5ldyBzY19QYWlyKCJcdTFF
OUNtZW0iLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSkpKTsKKyAgICAoY29uc3Rf
bmJveWVyID0gKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWly
KCJcdTFFOUNmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChu
ZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2MiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkp
KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q2YiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2QiLG51
bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3oiLChuZXcgc2NfUGFpcigiXHUxRTlDZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5k
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2NfUGFpcigi
XHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q25pbCIsbnVsbCkpLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkp
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN1IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdyIsKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmVtYWluZGVyIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVuZ3RoIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Ii
LG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSkpKSkpKTsKKyAgICBC
Z0xfbmJveWVyemQyYmVuY2htYXJremQyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBhcmdz
ID0gbnVsbDsKKyAgICAgICAgZm9yICh2YXIgc2NfdG1wID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7
IHNjX3RtcCA+PSAwOyBzY190bXAtLSkgeworICAgICAgICAgICAgYXJncyA9IHNjX2NvbnMoYXJn
dW1lbnRzW3NjX3RtcF0sIGFyZ3MpOworICAgICAgICB9CisgICAgICAgIHZhciBuOworICAgICAg
ICByZXR1cm4gKChuID0gKChhcmdzID09PSBudWxsKT8oMCk6KGFyZ3MuY2FyKSkpLCAoQmdMX3Nl
dHVwemQyYm95ZXJ6ZDIoKSksIChCZ0xfcnVuemQyYmVuY2htYXJremQyKCgibmJveWVyIisoc2Nf
bnVtYmVyMnN0cmluZyhuKSkpLCAoMSksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJu
IChCZ0xfdGVzdHpkMmJveWVyemQyKG4pKTsKKyAgICAgICAgfSwgZnVuY3Rpb24ocmV3cml0ZXMp
IHsKKyAgICAgICAgICAgIGlmICgoc2NfaXNOdW1iZXIocmV3cml0ZXMpKSkKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKG4pIHsKKyAgICAgICAgICAgICAgICBjYXNlICgwKToKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIChyZXdyaXRlcz09PSg5NTAyNCkpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICgxKToKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIChyZXdyaXRlcz09PSg1OTE3NzcpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSAoMik6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAo
cmV3cml0ZXM9PT0oMTgxMzk3NSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlICgzKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXdyaXRl
cz09PSg1Mzc1Njc4KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgKDQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJld3JpdGVzPT09KDE2
NDQ1NDA2KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgKDUpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJld3JpdGVzPT09KDUxNTA3NzM5
KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9KSkpOworICAgIH07CisgICAgQmdMX3NldHVwemQy
Ym95ZXJ6ZDIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKyAg
ICBCZ0xfdGVzdHpkMmJveWVyemQyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH07CisgICAgdHJhbnNsYXRlX3Rlcm1fbmJveWVyID0gZnVuY3Rpb24odGVybSkgewor
ICAgICAgICB2YXIgbHN0OworICAgICAgICByZXR1cm4gKCEodGVybSBpbnN0YW5jZW9mIHNjX1Bh
aXIpP3Rlcm06KG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3Jk
XzF6ZTNfbmJveWVyKCh0ZXJtLmNhcikpKSwgKChsc3QgPSAodGVybS5jZHIpKSwgKChsc3QgPT09
IG51bGwpP251bGw6KG5ldyBzY19QYWlyKCh0cmFuc2xhdGVfdGVybV9uYm95ZXIoKGxzdC5jYXIp
KSksICh0cmFuc2xhdGVfYXJnc19uYm95ZXIoKGxzdC5jZHIpKSkpKSkpKSkpOworICAgIH07Cisg
ICAgdHJhbnNsYXRlX2FyZ3NfbmJveWVyID0gZnVuY3Rpb24obHN0KSB7CisgICAgICAgIHZhciBz
Y19sc3RfNTsKKyAgICAgICAgdmFyIHRlcm07CisgICAgICAgIHJldHVybiAoKGxzdCA9PT0gbnVs
bCk/bnVsbDoobmV3IHNjX1BhaXIoKCh0ZXJtID0gKGxzdC5jYXIpKSwgKCEodGVybSBpbnN0YW5j
ZW9mIHNjX1BhaXIpP3Rlcm06KG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9s
emQycmVjb3JkXzF6ZTNfbmJveWVyKCh0ZXJtLmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdzX25ib3ll
cigodGVybS5jZHIpKSkpKSkpLCAoKHNjX2xzdF81ID0gKGxzdC5jZHIpKSwgKChzY19sc3RfNSA9
PT0gbnVsbCk/bnVsbDoobmV3IHNjX1BhaXIoKHRyYW5zbGF0ZV90ZXJtX25ib3llcigoc2NfbHN0
XzUuY2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKChzY19sc3RfNS5jZHIpKSkpKSkpKSkp
OworICAgIH07CisgICAgdW50cmFuc2xhdGVfdGVybV9uYm95ZXIgPSBmdW5jdGlvbih0ZXJtKSB7
CisgICAgICAgIHZhciBvcHRyT3BuZDsKKyAgICAgICAgdmFyIHRhaWwxMTMxOworICAgICAgICB2
YXIgTDExMjc7CisgICAgICAgIHZhciBmYWxzZUhlYWQxMTMwOworICAgICAgICB2YXIgc3ltYm9s
X3JlY29yZDsKKyAgICAgICAgaWYgKCEodGVybSBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAg
ICAgICAgcmV0dXJuIHRlcm07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAoZmFsc2VIZWFkMTEzMCA9IChuZXcgc2NfUGFpcihudWxsLCBudWxsKSkpOworICAg
ICAgICAgICAgICAgIChMMTEyNyA9ICh0ZXJtLmNkcikpOworICAgICAgICAgICAgICAgICh0YWls
MTEzMSA9IGZhbHNlSGVhZDExMzApOworICAgICAgICAgICAgICAgIHdoaWxlICghKEwxMTI3ID09
PSBudWxsKSkgeworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAodGFpbDExMzEuY2RyID0gKG5ldyBzY19QYWlyKCh1bnRyYW5zbGF0ZV90ZXJtX25ib3llcigo
TDExMjcuY2FyKSkpLCBudWxsKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgKHRhaWwxMTMx
ID0gKHRhaWwxMTMxLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgKEwxMTI3ID0gKEwx
MTI3LmNkcikpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIChvcHRyT3BuZCA9IChmYWxzZUhlYWQxMTMwLmNkcikpOworICAgICAgICAg
ICAgICAgIHJldHVybiAobmV3IHNjX1BhaXIoKChzeW1ib2xfcmVjb3JkID0gKHRlcm0uY2FyKSks
IChzeW1ib2xfcmVjb3JkWygwKV0pKSwgb3B0ck9wbmQpKTsKKyAgICAgICAgICAgIH0KKyAgICB9
OworICAgIEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIgPSBm
dW5jdGlvbihzeW0pIHsKKyAgICAgICAgdmFyIHI7CisgICAgICAgIHZhciB4OworICAgICAgICBy
ZXR1cm4gKCh4ID0gKHNjX2Fzc3Eoc3ltLCBCZ0xfc2NfemEyc3ltYm9semQycmVjb3Jkc3pkMmFs
aXN0emEyXzJ6MDBfbmJveWVyKSkpLCAoKHghPT0gZmFsc2UpPyh4LmNkcik6KChyID0gW3N5bSwg
bnVsbF0pLCAoQmdMX3NjX3phMnN5bWJvbHpkMnJlY29yZHN6ZDJhbGlzdHphMl8yejAwX25ib3ll
ciA9IChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoc3ltLCByKSksIEJnTF9zY196YTJzeW1ib2x6
ZDJyZWNvcmRzemQyYWxpc3R6YTJfMnowMF9uYm95ZXIpKSksIHIpKSk7CisgICAgfTsKKyAgICAo
QmdMX3NjX3phMnN5bWJvbHpkMnJlY29yZHN6ZDJhbGlzdHphMl8yejAwX25ib3llciA9IG51bGwp
OworICAgIHRyYW5zbGF0ZV9hbGlzdF9uYm95ZXIgPSBmdW5jdGlvbihhbGlzdCkgeworICAgICAg
ICB2YXIgc2NfYWxpc3RfNjsKKyAgICAgICAgdmFyIHRlcm07CisgICAgICAgIHJldHVybiAoKGFs
aXN0ID09PSBudWxsKT9udWxsOihuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoKGFsaXN0LmNhci5j
YXIpLCAoKHRlcm0gPSAoYWxpc3QuY2FyLmNkcikpLCAoISh0ZXJtIGluc3RhbmNlb2Ygc2NfUGFp
cik/dGVybToobmV3IHNjX1BhaXIoKEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRf
MXplM19uYm95ZXIoKHRlcm0uY2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKCh0ZXJtLmNk
cikpKSkpKSkpKSwgKChzY19hbGlzdF82ID0gKGFsaXN0LmNkcikpLCAoKHNjX2FsaXN0XzYgPT09
IG51bGwpP251bGw6KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigoc2NfYWxpc3RfNi5jYXIuY2Fy
KSwgKHRyYW5zbGF0ZV90ZXJtX25ib3llcigoc2NfYWxpc3RfNi5jYXIuY2RyKSkpKSksICh0cmFu
c2xhdGVfYWxpc3RfbmJveWVyKChzY19hbGlzdF82LmNkcikpKSkpKSkpKSk7CisgICAgfTsKKyAg
ICBhcHBseV9zdWJzdF9uYm95ZXIgPSBmdW5jdGlvbihhbGlzdCwgdGVybSkgeworICAgICAgICB2
YXIgbHN0OworICAgICAgICB2YXIgdGVtcF90ZW1wOworICAgICAgICByZXR1cm4gKCEodGVybSBp
bnN0YW5jZW9mIHNjX1BhaXIpPygodGVtcF90ZW1wID0gKHNjX2Fzc3EodGVybSwgYWxpc3QpKSks
ICgodGVtcF90ZW1wIT09IGZhbHNlKT8odGVtcF90ZW1wLmNkcik6dGVybSkpOihuZXcgc2NfUGFp
cigodGVybS5jYXIpLCAoKGxzdCA9ICh0ZXJtLmNkcikpLCAoKGxzdCA9PT0gbnVsbCk/bnVsbDoo
bmV3IHNjX1BhaXIoKGFwcGx5X3N1YnN0X25ib3llcihhbGlzdCwgKGxzdC5jYXIpKSksIChhcHBs
eV9zdWJzdF9sc3RfbmJveWVyKGFsaXN0LCAobHN0LmNkcikpKSkpKSkpKSk7CisgICAgfTsKKyAg
ICBhcHBseV9zdWJzdF9sc3RfbmJveWVyID0gZnVuY3Rpb24oYWxpc3QsIGxzdCkgeworICAgICAg
ICB2YXIgc2NfbHN0Xzc7CisgICAgICAgIHJldHVybiAoKGxzdCA9PT0gbnVsbCk/bnVsbDoobmV3
IHNjX1BhaXIoKGFwcGx5X3N1YnN0X25ib3llcihhbGlzdCwgKGxzdC5jYXIpKSksICgoc2NfbHN0
XzcgPSAobHN0LmNkcikpLCAoKHNjX2xzdF83ID09PSBudWxsKT9udWxsOihuZXcgc2NfUGFpcigo
YXBwbHlfc3Vic3RfbmJveWVyKGFsaXN0LCAoc2NfbHN0XzcuY2FyKSkpLCAoYXBwbHlfc3Vic3Rf
bHN0X25ib3llcihhbGlzdCwgKHNjX2xzdF83LmNkcikpKSkpKSkpKSk7CisgICAgfTsKKyAgICB0
YXV0b2xvZ3lwX25ib3llciA9IGZ1bmN0aW9uKHNjX3hfMTEsIHRydWVfbHN0LCBmYWxzZV9sc3Qp
IHsKKyAgICAgICAgdmFyIHRtcDExMjU7CisgICAgICAgIHZhciB4OworICAgICAgICB2YXIgdG1w
MTEyNjsKKyAgICAgICAgdmFyIHNjX3hfODsKKyAgICAgICAgdmFyIHNjX3RtcDExMjVfOTsKKyAg
ICAgICAgdmFyIHNjX3RtcDExMjZfMTA7CisgICAgICAgIHZhciBzY194XzExOworICAgICAgICB2
YXIgdHJ1ZV9sc3Q7CisgICAgICAgIHZhciBmYWxzZV9sc3Q7CisgICAgICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgICAgICBpZiAoKCgoc2NfdG1wMTEyNl8xMCA9IChpc190ZXJtX2VxdWFsX25i
b3llcihzY194XzExLCB0cnVlX3Rlcm1fbmJveWVyKSkpLCAoKHNjX3RtcDExMjZfMTAhPT0gZmFs
c2UpP3NjX3RtcDExMjZfMTA6KGlzX3Rlcm1fbWVtYmVyX25ib3llcihzY194XzExLCB0cnVlX2xz
dCkpKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGlmICgoKChzY190bXAxMTI1XzkgPSAoaXNfdGVybV9l
cXVhbF9uYm95ZXIoc2NfeF8xMSwgZmFsc2VfdGVybV9uYm95ZXIpKSksICgoc2NfdG1wMTEyNV85
IT09IGZhbHNlKT9zY190bXAxMTI1Xzk6KGlzX3Rlcm1fbWVtYmVyX25ib3llcihzY194XzExLCBm
YWxzZV9sc3QpKSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoc2NfeF8x
MSBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoKChzY194XzExLmNhcik9PT1pZl9jb25zdHJ1Y3Rvcl9uYm95ZXIpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgoKChzY194XzggPSAoc2NfeF8xMS5jZHIuY2FyKSksICh0bXAx
MTI2ID0gKGlzX3Rlcm1fZXF1YWxfbmJveWVyKHNjX3hfOCwgdHJ1ZV90ZXJtX25ib3llcikpKSwg
KCh0bXAxMTI2IT09IGZhbHNlKT90bXAxMTI2Oihpc190ZXJtX21lbWJlcl9uYm95ZXIoc2NfeF84
LCB0cnVlX2xzdCkpKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc2NfeF8xMSA9IChzY194XzExLmNkci5jZHIuY2FyKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgoeCA9
IChzY194XzExLmNkci5jYXIpKSwgKHRtcDExMjUgPSAoaXNfdGVybV9lcXVhbF9uYm95ZXIoeCwg
ZmFsc2VfdGVybV9uYm95ZXIpKSksICgodG1wMTEyNSE9PSBmYWxzZSk/dG1wMTEyNTooaXNfdGVy
bV9tZW1iZXJfbmJveWVyKHgsIGZhbHNlX2xzdCkpKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHNjX3hfMTEgPSAoc2NfeF8xMS5jZHIuY2RyLmNkci5j
YXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgodGF1dG9sb2d5cF9uYm95ZXIoKHNjX3hfMTEu
Y2RyLmNkci5jYXIpLCAobmV3IHNjX1BhaXIoKHNjX3hfMTEuY2RyLmNhciksIHRydWVfbHN0KSks
IGZhbHNlX2xzdCkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChm
YWxzZV9sc3QgPSAobmV3IHNjX1BhaXIoKHNjX3hfMTEuY2RyLmNhciksIGZhbHNlX2xzdCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX3hfMTEgPSAo
c2NfeF8xMS5jZHIuY2RyLmNkci5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH07CisgICAgKGlmX2NvbnN0cnVjdG9yX25ib3ll
ciA9ICJcdTFFOUMqIik7CisgICAgKHJld3JpdGVfY291bnRfbmJveWVyID0gKDApKTsKKyAgICBy
ZXdyaXRlX25ib3llciA9IGZ1bmN0aW9uKHRlcm0pIHsKKyAgICAgICAgdmFyIHRlcm0yOworICAg
ICAgICB2YXIgc2NfdGVybV8xMjsKKyAgICAgICAgdmFyIGxzdDsKKyAgICAgICAgdmFyIHN5bWJv
bF9yZWNvcmQ7CisgICAgICAgIHZhciBzY19sc3RfMTM7CisgICAgICAgIHsKKyAgICAgICAgICAg
ICgrK3Jld3JpdGVfY291bnRfbmJveWVyKTsKKyAgICAgICAgICAgIGlmICghKHRlcm0gaW5zdGFu
Y2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGVybTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIChzY190ZXJtXzEy
ID0gKG5ldyBzY19QYWlyKCh0ZXJtLmNhciksICgoc2NfbHN0XzEzID0gKHRlcm0uY2RyKSksICgo
c2NfbHN0XzEzID09PSBudWxsKT9udWxsOihuZXcgc2NfUGFpcigocmV3cml0ZV9uYm95ZXIoKHNj
X2xzdF8xMy5jYXIpKSksIChyZXdyaXRlX2FyZ3NfbmJveWVyKChzY19sc3RfMTMuY2RyKSkpKSkp
KSkpKTsKKyAgICAgICAgICAgICAgICAgICAgKGxzdCA9ICgoc3ltYm9sX3JlY29yZCA9ICh0ZXJt
LmNhcikpLCAoc3ltYm9sX3JlY29yZFsoMSldKSkpOworICAgICAgICAgICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsc3QgPT09IG51bGwpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzY190ZXJtXzEyOworICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKCh0
ZXJtMiA9ICgobHN0LmNhcikuY2RyLmNhcikpLCAodW5pZnlfc3Vic3RfbmJveWVyID0gbnVsbCks
IChvbmVfd2F5X3VuaWZ5MV9uYm95ZXIoc2NfdGVybV8xMiwgdGVybTIpKSkhPT0gZmFsc2UpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJld3JpdGVfbmJveWVyKChh
cHBseV9zdWJzdF9uYm95ZXIodW5pZnlfc3Vic3RfbmJveWVyLCAoKGxzdC5jYXIpLmNkci5jZHIu
Y2FyKSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAobHN0ID0gKGxzdC5jZHIpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisgICAgcmV3cml0ZV9h
cmdzX25ib3llciA9IGZ1bmN0aW9uKGxzdCkgeworICAgICAgICB2YXIgc2NfbHN0XzE0OworICAg
ICAgICByZXR1cm4gKChsc3QgPT09IG51bGwpP251bGw6KG5ldyBzY19QYWlyKChyZXdyaXRlX25i
b3llcigobHN0LmNhcikpKSwgKChzY19sc3RfMTQgPSAobHN0LmNkcikpLCAoKHNjX2xzdF8xNCA9
PT0gbnVsbCk/bnVsbDoobmV3IHNjX1BhaXIoKHJld3JpdGVfbmJveWVyKChzY19sc3RfMTQuY2Fy
KSkpLCAocmV3cml0ZV9hcmdzX25ib3llcigoc2NfbHN0XzE0LmNkcikpKSkpKSkpKSk7CisgICAg
fTsKKyAgICAodW5pZnlfc3Vic3RfbmJveWVyID0gIlx1MUU5QyoiKTsKKyAgICBvbmVfd2F5X3Vu
aWZ5MV9uYm95ZXIgPSBmdW5jdGlvbih0ZXJtMSwgdGVybTIpIHsKKyAgICAgICAgdmFyIGxzdDE7
CisgICAgICAgIHZhciBsc3QyOworICAgICAgICB2YXIgdGVtcF90ZW1wOworICAgICAgICBpZiAo
ISh0ZXJtMiBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICh0ZW1wX3RlbXAgPSAoc2NfYXNzcSh0ZXJtMiwgdW5pZnlfc3Vic3RfbmJveWVyKSkpOwor
ICAgICAgICAgICAgICAgIGlmICgodGVtcF90ZW1wIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIChpc190ZXJtX2VxdWFsX25ib3llcih0ZXJtMSwgKHRlbXBfdGVtcC5jZHIp
KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpZiAoKHNjX2lz
TnVtYmVyKHRlcm0yKSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHNjX2lzRXF1
YWwodGVybTEsIHRlcm0yKSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5pZnlfc3Vic3Rf
bmJveWVyID0gKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcih0ZXJtMiwgdGVybTEpKSwgdW5pZnlf
c3Vic3RfbmJveWVyKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgICAgICBpZiAoISh0ZXJtMSBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBp
ZiAoKCh0ZXJtMS5jYXIpPT09KHRlcm0yLmNhcikpKQorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAobHN0MSA9ICh0ZXJtMS5jZHIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIChsc3QyID0gKHRlcm0yLmNkcikpOworICAgICAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxzdDEg
PT09IG51bGwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxzdDIg
PT09IG51bGwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKChsc3QyID09PSBudWxsKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCgob25lX3dheV91bmlmeTFfbmJveWVyKChsc3QxLmNhciksIChsc3QyLmNhcikpKSE9PSBmYWxz
ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobHN0MSA9IChsc3QxLmNkcikpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobHN0MiA9IChsc3Qy
LmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworICAgIChmYWxzZV90ZXJtX25ib3ll
ciA9ICJcdTFFOUMqIik7CisgICAgKHRydWVfdGVybV9uYm95ZXIgPSAiXHUxRTlDKiIpOworICAg
IHRyYW5zX29mX2ltcGxpZXMxX25ib3llciA9IGZ1bmN0aW9uKG4pIHsKKyAgICAgICAgdmFyIHNj
X25fMTU7CisgICAgICAgIHJldHVybiAoKHNjX2lzRXF1YWwobiwgKDEpKSk/KHNjX2xpc3QoIlx1
MUU5Q2ltcGxpZXMiLCAoMCksICgxKSkpOihzY19saXN0KCJcdTFFOUNhbmQiLCAoc2NfbGlzdCgi
XHUxRTlDaW1wbGllcyIsIChuLSgxKSksIG4pKSwgKChzY19uXzE1ID0gKG4tKDEpKSksICgoc2Nf
aXNFcXVhbChzY19uXzE1LCAoMSkpKT8oc2NfbGlzdCgiXHUxRTlDaW1wbGllcyIsICgwKSwgKDEp
KSk6KHNjX2xpc3QoIlx1MUU5Q2FuZCIsIChzY19saXN0KCJcdTFFOUNpbXBsaWVzIiwgKHNjX25f
MTUtKDEpKSwgc2Nfbl8xNSkpLCAodHJhbnNfb2ZfaW1wbGllczFfbmJveWVyKChzY19uXzE1LSgx
KSkpKSkpKSkpKSk7CisgICAgfTsKKyAgICBpc190ZXJtX2VxdWFsX25ib3llciA9IGZ1bmN0aW9u
KHgsIHkpIHsKKyAgICAgICAgdmFyIGxzdDE7CisgICAgICAgIHZhciBsc3QyOworICAgICAgICB2
YXIgcjI7CisgICAgICAgIHZhciByMTsKKyAgICAgICAgaWYgKCh4IGluc3RhbmNlb2Ygc2NfUGFp
cikpCisgICAgICAgICAgICBpZiAoKHkgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAg
ICAgICBpZiAoKCgocjEgPSAoeC5jYXIpKSwgKHIyID0gKHkuY2FyKSksIChyMT09PXIyKSkhPT0g
ZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAo
bHN0MSA9ICh4LmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgKGxzdDIgPSAoeS5jZHIp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKChsc3QxID09PSBudWxsKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIChsc3QyID09PSBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobHN0MiA9
PT0gbnVsbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgoKGlzX3Rlcm1fZXF1YWxfbmJveWVyKChsc3QxLmNh
ciksIChsc3QyLmNhcikpKSE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobHN0MSA9IChsc3QxLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAobHN0MiA9IChsc3QyLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHJldHVybiAoc2NfaXNFcXVhbCh4LCB5KSk7CisgICAgfTsKKyAgICBpc190
ZXJtX21lbWJlcl9uYm95ZXIgPSBmdW5jdGlvbih4LCBsc3QpIHsKKyAgICAgICAgdmFyIHg7Cisg
ICAgICAgIHZhciBsc3Q7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpZiAo
KGxzdCA9PT0gbnVsbCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGlmICgoKGlzX3Rlcm1fZXF1YWxfbmJveWVyKHgsIChs
c3QuY2FyKSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAobHN0ID0gKGxzdC5jZHIp
KTsKKyAgICAgICAgfQorICAgIH07CisgICAgQmdMX3NldHVwemQyYm95ZXJ6ZDIgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgdmFyIHN5bWJvbF9yZWNvcmQ7CisgICAgICAgIHZhciB2YWx1ZTsKKyAg
ICAgICAgdmFyIEJnTF9zY19zeW1ib2x6ZDJyZWNvcmRfMTZ6ZDI7CisgICAgICAgIHZhciBzeW07
CisgICAgICAgIHZhciBzY19zeW1fMTc7CisgICAgICAgIHZhciB0ZXJtOworICAgICAgICB2YXIg
bHN0OworICAgICAgICB2YXIgc2NfdGVybV8xODsKKyAgICAgICAgdmFyIHNjX3Rlcm1fMTk7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIChCZ0xfc2NfemEyc3ltYm9semQycmVjb3Jkc3pkMmFsaXN0
emEyXzJ6MDBfbmJveWVyID0gbnVsbCk7CisgICAgICAgICAgICAoaWZfY29uc3RydWN0b3JfbmJv
eWVyID0gKEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIoIlx1
MUU5Q2lmIikpKTsKKyAgICAgICAgICAgIChmYWxzZV90ZXJtX25ib3llciA9ICgoc2NfdGVybV8x
OSA9IChuZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpKSwgKCEoc2NfdGVybV8xOSBpbnN0YW5j
ZW9mIHNjX1BhaXIpP3NjX3Rlcm1fMTk6KG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUz
c3ltYm9semQycmVjb3JkXzF6ZTNfbmJveWVyKChzY190ZXJtXzE5LmNhcikpKSwgKHRyYW5zbGF0
ZV9hcmdzX25ib3llcigoc2NfdGVybV8xOS5jZHIpKSkpKSkpKTsKKyAgICAgICAgICAgICh0cnVl
X3Rlcm1fbmJveWVyID0gKChzY190ZXJtXzE4ID0gKG5ldyBzY19QYWlyKCJcdTFFOUN0IixudWxs
KSkpLCAoIShzY190ZXJtXzE4IGluc3RhbmNlb2Ygc2NfUGFpcik/c2NfdGVybV8xODoobmV3IHNj
X1BhaXIoKEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIoKHNj
X3Rlcm1fMTguY2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKChzY190ZXJtXzE4LmNkcikp
KSkpKSkpOworICAgICAgICAgICAgKGxzdCA9IHNjX2NvbnN0XzNfbmJveWVyKTsKKyAgICAgICAg
ICAgIHdoaWxlICghKGxzdCA9PT0gbnVsbCkpIHsKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICh0ZXJtID0gKGxzdC5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCgodGVybSBpbnN0YW5jZW9mIHNjX1BhaXIpJiYoKCh0ZXJtLmNhcik9PT0iXHUxRTlDZXF1YWwi
KSYmKCh0ZXJtLmNkci5jYXIpIGluc3RhbmNlb2Ygc2NfUGFpcikpKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nfc3ltXzE3ID0gKCh0
ZXJtLmNkci5jYXIpLmNhcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA9
IChuZXcgc2NfUGFpcigoISh0ZXJtIGluc3RhbmNlb2Ygc2NfUGFpcik/dGVybToobmV3IHNjX1Bh
aXIoKEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIoKHRlcm0u
Y2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKCh0ZXJtLmNkcikpKSkpKSwgKChzeW0gPSAo
KHRlcm0uY2RyLmNhcikuY2FyKSksIChCZ0xfc2Nfc3ltYm9semQycmVjb3JkXzE2emQyID0gKEJn
TF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIoc3ltKSkpLCAoQmdM
X3NjX3N5bWJvbHpkMnJlY29yZF8xNnpkMlsoMSldKSkpKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHN5bWJvbF9yZWNvcmQgPSAoQmdMX3NjX3N5bWJvbHpkMnplM3N5bWJvbHpkMnJl
Y29yZF8xemUzX25ib3llcihzY19zeW1fMTcpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHN5bWJvbF9yZWNvcmRbKDEpXSA9IHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgKHNj
X2Vycm9yKCJBREQtTEVNTUEgZGlkIG5vdCBsaWtlIHRlcm06ICAiLCB0ZXJtKSk7CisgICAgICAg
ICAgICAgICAgICAgIChsc3QgPSAobHN0LmNkcikpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfTsKKyAg
ICBCZ0xfdGVzdHpkMmJveWVyemQyID0gZnVuY3Rpb24obikgeworICAgICAgICB2YXIgb3B0ck9w
bmQ7CisgICAgICAgIHZhciB0ZXJtOworICAgICAgICB2YXIgc2Nfbl8yMDsKKyAgICAgICAgdmFy
IGFuc3dlcjsKKyAgICAgICAgdmFyIHNjX3Rlcm1fMjE7CisgICAgICAgIHZhciBzY190ZXJtXzIy
OworICAgICAgICB7CisgICAgICAgICAgICAocmV3cml0ZV9jb3VudF9uYm95ZXIgPSAoMCkpOwor
ICAgICAgICAgICAgKHRlcm0gPSBzY19jb25zdF80X25ib3llcik7CisgICAgICAgICAgICAoc2Nf
bl8yMCA9IG4pOworICAgICAgICAgICAgd2hpbGUgKCEoc2Nfbl8yMD09PSAwKSkgeworICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKHRlcm0gPSAoc2NfbGlzdCgiXHUxRTlD
b3IiLCB0ZXJtLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgKC0tc2Nfbl8yMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgKHNjX3Rlcm1fMjIgPSB0ZXJtKTsKKyAgICAgICAgICAgIGlmICghKHNjX3Rl
cm1fMjIgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAob3B0ck9wbmQgPSBz
Y190ZXJtXzIyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAob3B0ck9wbmQg
PSAobmV3IHNjX1BhaXIoKEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19u
Ym95ZXIoKHNjX3Rlcm1fMjIuY2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKChzY190ZXJt
XzIyLmNkcikpKSkpKTsKKyAgICAgICAgICAgIChzY190ZXJtXzIxID0gKGFwcGx5X3N1YnN0X25i
b3llcigoKGNvbnN0X25ib3llciA9PT0gbnVsbCk/bnVsbDoobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKChjb25zdF9uYm95ZXIuY2FyLmNhciksICh0cmFuc2xhdGVfdGVybV9uYm95ZXIoKGNvbnN0
X25ib3llci5jYXIuY2RyKSkpKSksICh0cmFuc2xhdGVfYWxpc3RfbmJveWVyKChjb25zdF9uYm95
ZXIuY2RyKSkpKSkpLCBvcHRyT3BuZCkpKTsKKyAgICAgICAgICAgIChhbnN3ZXIgPSAodGF1dG9s
b2d5cF9uYm95ZXIoKHJld3JpdGVfbmJveWVyKHNjX3Rlcm1fMjEpKSwgbnVsbCwgbnVsbCkpKTsK
KyAgICAgICAgICAgIChzY193cml0ZShyZXdyaXRlX2NvdW50X25ib3llcikpOworICAgICAgICAg
ICAgKHNjX2Rpc3BsYXkoIiByZXdyaXRlcyIpKTsKKyAgICAgICAgICAgIChzY19uZXdsaW5lKCkp
OworICAgICAgICAgICAgaWYgKChhbnN3ZXIhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgIHJl
dHVybiByZXdyaXRlX2NvdW50X25ib3llcjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9OworfQorLyogRXhwb3J0ZWQgVmFy
aWFibGVzICovCit2YXIgQmdMX3BhcnNlemQyemUzbmJ6ZDJ0cmVlc3plMzsKK3ZhciBCZ0xfZWFy
bGV5emQyYmVuY2htYXJremQyOwordmFyIEJnTF9wYXJzZXpkMnplM3BhcnNlZHpmM3pjMjsKK3Zh
ciB0ZXN0OwordmFyIEJnTF9wYXJzZXpkMnplM3RyZWVzejMxOwordmFyIEJnTF9tYWtlemQycGFy
c2VyemQyOworLyogRW5kIEV4cG9ydHMgKi8KKwordmFyIGNvbnN0X2VhcmxleTsKK3sKKyAgICAo
Y29uc3RfZWFybGV5ID0gKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcyIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3MiLChuZXcgc2NfUGFpcigiXHUxRTlDcyIsbnVsbCkpKSksbnVsbCkpKSkp
KSxudWxsKSkpOworICAgIEJnTF9tYWtlemQycGFyc2VyemQyID0gZnVuY3Rpb24oZ3JhbW1hciwg
bGV4ZXIpIHsKKyAgICAgICAgdmFyIGk7CisgICAgICAgIHZhciBwYXJzZXJfZGVzY3I7CisgICAg
ICAgIHZhciBkZWZfbG9vcDsKKyAgICAgICAgdmFyIG5iX250czsKKyAgICAgICAgdmFyIG5hbWVz
OworICAgICAgICB2YXIgc3RlcHM7CisgICAgICAgIHZhciBwcmVkaWN0b3JzOworICAgICAgICB2
YXIgZW5kZXJzOworICAgICAgICB2YXIgc3RhcnRlcnM7CisgICAgICAgIHZhciBudHM7CisgICAg
ICAgIHZhciBzY19uYW1lc18xOworICAgICAgICB2YXIgc2Nfc3RlcHNfMjsKKyAgICAgICAgdmFy
IHNjX3ByZWRpY3RvcnNfMzsKKyAgICAgICAgdmFyIHNjX2VuZGVyc180OworICAgICAgICB2YXIg
c2Nfc3RhcnRlcnNfNTsKKyAgICAgICAgdmFyIG5iX2NvbmZzOworICAgICAgICB2YXIgQmdMX3Nj
X2RlZnpkMmxvb3BfNnpkMjsKKyAgICAgICAgdmFyIEJnTF9zY19uYnpkMm50c183emQyOworICAg
ICAgICB2YXIgc2NfbnRzXzg7CisgICAgICAgIHZhciBCZ0xfc2NfZGVmemQybG9vcF85emQyOwor
ICAgICAgICB2YXIgaW5kOworICAgICAgICB7CisgICAgICAgICAgICBpbmQgPSBmdW5jdGlvbihu
dCwgc2NfbnRzXzEwKSB7CisgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAoaSA9ICgoc2NfbnRzXzEwLmxlbmd0aCktKDEpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoKGk+PSgwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzY19pc0Vx
dWFsKChzY19udHNfMTBbaV0pLCBudCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgtLWkpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAoc2NfbnRzXzggPSAoKEJnTF9zY19kZWZ6ZDJsb29wXzl6ZDIgPSBmdW5jdGlvbihkZWZzLCBz
Y19udHNfMTEpIHsKKyAgICAgICAgICAgICAgICB2YXIgcnVsZV9sb29wOworICAgICAgICAgICAg
ICAgIHZhciBoZWFkOworICAgICAgICAgICAgICAgIHZhciBkZWY7CisgICAgICAgICAgICAgICAg
cmV0dXJuICgoZGVmcyBpbnN0YW5jZW9mIHNjX1BhaXIpPygoZGVmID0gKGRlZnMuY2FyKSksICho
ZWFkID0gKGRlZi5jYXIpKSwgKHJ1bGVfbG9vcCA9IGZ1bmN0aW9uKHJ1bGVzLCBzY19udHNfMTIp
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG50OworICAgICAgICAgICAgICAgICAgICB2YXIg
bDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNjX250c18xMzsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIHJ1bGU7CisgICAgICAgICAgICAgICAgICAgIGlmICgocnVsZXMgaW5zdGFuY2VvZiBz
Y19QYWlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocnVsZSA9IChydWxlcy5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobCA9IHJ1bGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19udHNfMTMgPSBz
Y19udHNfMTIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobCBpbnN0YW5j
ZW9mIHNjX1BhaXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudCA9IChsLmNhcikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSAobC5jZHIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzY19udHNfMTMgPSAoKChzY19tZW1iZXIobnQsIHNjX250
c18xMykpIT09IGZhbHNlKT9zY19udHNfMTM6KG5ldyBzY19QYWlyKG50LCBzY19udHNfMTMpKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocnVsZV9sb29w
KChydWxlcy5jZHIpLCBzY19udHNfMTMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChC
Z0xfc2NfZGVmemQybG9vcF85emQyKChkZWZzLmNkciksIHNjX250c18xMikpOworICAgICAgICAg
ICAgICAgIH0pLCAocnVsZV9sb29wKChkZWYuY2RyKSwgKCgoc2NfbWVtYmVyKGhlYWQsIHNjX250
c18xMSkpIT09IGZhbHNlKT9zY19udHNfMTE6KG5ldyBzY19QYWlyKGhlYWQsIHNjX250c18xMSkp
KSkpKTooc2NfbGlzdDJ2ZWN0b3IoKHNjX3JldmVyc2Uoc2NfbnRzXzExKSkpKSk7CisgICAgICAg
ICAgICB9KSwgKEJnTF9zY19kZWZ6ZDJsb29wXzl6ZDIoZ3JhbW1hciwgbnVsbCkpKSk7CisgICAg
ICAgICAgICAoQmdMX3NjX25iemQybnRzXzd6ZDIgPSAoc2NfbnRzXzgubGVuZ3RoKSk7CisgICAg
ICAgICAgICAobmJfY29uZnMgPSAoKChCZ0xfc2NfZGVmemQybG9vcF82emQyID0gZnVuY3Rpb24o
ZGVmcywgQmdMX3NjX25iemQyY29uZnNfMTR6ZDIpIHsKKyAgICAgICAgICAgICAgICB2YXIgcnVs
ZV9sb29wOworICAgICAgICAgICAgICAgIHZhciBkZWY7CisgICAgICAgICAgICAgICAgcmV0dXJu
ICgoZGVmcyBpbnN0YW5jZW9mIHNjX1BhaXIpPygoZGVmID0gKGRlZnMuY2FyKSksIChydWxlX2xv
b3AgPSBmdW5jdGlvbihydWxlcywgQmdMX3NjX25iemQyY29uZnNfMTV6ZDIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJj
b25mc18xNnpkMjsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJ1bGU7CisgICAgICAgICAgICAg
ICAgICAgIGlmICgocnVsZXMgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVsZSA9IChydWxlcy5jYXIp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IHJ1bGUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJjb25mc18xNnpkMiA9IEJnTF9zY19uYnpkMmNv
bmZzXzE1emQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGwgaW5zdGFu
Y2VvZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsrQmdMX3NjX25iemQyY29uZnNfMTZ6ZDIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocnVsZV9sb29wKChy
dWxlcy5jZHIpLCAoQmdMX3NjX25iemQyY29uZnNfMTZ6ZDIrKDEpKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gKEJnTF9zY19kZWZ6ZDJsb29wXzZ6ZDIoKGRlZnMuY2RyKSwgQmdMX3Nj
X25iemQyY29uZnNfMTV6ZDIpKTsKKyAgICAgICAgICAgICAgICB9KSwgKHJ1bGVfbG9vcCgoZGVm
LmNkciksIEJnTF9zY19uYnpkMmNvbmZzXzE0emQyKSkpOkJnTF9zY19uYnpkMmNvbmZzXzE0emQy
KTsKKyAgICAgICAgICAgIH0pLCAoQmdMX3NjX2RlZnpkMmxvb3BfNnpkMihncmFtbWFyLCAoMCkp
KSkrQmdMX3NjX25iemQybnRzXzd6ZDIpKTsKKyAgICAgICAgICAgIChzY19zdGFydGVyc181ID0g
KHNjX21ha2VWZWN0b3IoQmdMX3NjX25iemQybnRzXzd6ZDIsIG51bGwpKSk7CisgICAgICAgICAg
ICAoc2NfZW5kZXJzXzQgPSAoc2NfbWFrZVZlY3RvcihCZ0xfc2NfbmJ6ZDJudHNfN3pkMiwgbnVs
bCkpKTsKKyAgICAgICAgICAgIChzY19wcmVkaWN0b3JzXzMgPSAoc2NfbWFrZVZlY3RvcihCZ0xf
c2NfbmJ6ZDJudHNfN3pkMiwgbnVsbCkpKTsKKyAgICAgICAgICAgIChzY19zdGVwc18yID0gKHNj
X21ha2VWZWN0b3IobmJfY29uZnMsIGZhbHNlKSkpOworICAgICAgICAgICAgKHNjX25hbWVzXzEg
PSAoc2NfbWFrZVZlY3RvcihuYl9jb25mcywgZmFsc2UpKSk7CisgICAgICAgICAgICAobnRzID0g
c2NfbnRzXzgpOworICAgICAgICAgICAgKHN0YXJ0ZXJzID0gc2Nfc3RhcnRlcnNfNSk7CisgICAg
ICAgICAgICAoZW5kZXJzID0gc2NfZW5kZXJzXzQpOworICAgICAgICAgICAgKHByZWRpY3RvcnMg
PSBzY19wcmVkaWN0b3JzXzMpOworICAgICAgICAgICAgKHN0ZXBzID0gc2Nfc3RlcHNfMik7Cisg
ICAgICAgICAgICAobmFtZXMgPSBzY19uYW1lc18xKTsKKyAgICAgICAgICAgIChuYl9udHMgPSAo
c2NfbnRzXzgubGVuZ3RoKSk7CisgICAgICAgICAgICAoaSA9IChuYl9udHMtKDEpKSk7CisgICAg
ICAgICAgICB3aGlsZSAoKGk+PSgwKSkpIHsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIChzY19zdGVwc18yW2ldID0gKGktbmJfbnRzKSk7CisgICAgICAgICAgICAgICAg
ICAgIChzY19uYW1lc18xW2ldID0gKHNjX2xpc3QoKHNjX250c184W2ldKSwgKDApKSkpOworICAg
ICAgICAgICAgICAgICAgICAoc2NfZW5kZXJzXzRbaV0gPSAoc2NfbGlzdChpKSkpOworICAgICAg
ICAgICAgICAgICAgICAoLS1pKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkZWZfbG9vcCA9IGZ1bmN0aW9uKGRlZnMsIGNvbmYpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgcnVsZV9sb29wOworICAgICAgICAgICAgICAgIHZhciBoZWFkOworICAgICAgICAg
ICAgICAgIHZhciBkZWY7CisgICAgICAgICAgICAgICAgcmV0dXJuICgoZGVmcyBpbnN0YW5jZW9m
IHNjX1BhaXIpPygoZGVmID0gKGRlZnMuY2FyKSksIChoZWFkID0gKGRlZi5jYXIpKSwgKHJ1bGVf
bG9vcCA9IGZ1bmN0aW9uKHJ1bGVzLCBjb25mLCBydWxlX251bSkgeworICAgICAgICAgICAgICAg
ICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2lfMTc7CisgICAgICAgICAg
ICAgICAgICAgIHZhciBudDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAg
ICAgICAgICAgIHZhciBzY19jb25mXzE4OworICAgICAgICAgICAgICAgICAgICB2YXIgc2NfaV8x
OTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJ1bGU7CisgICAgICAgICAgICAgICAgICAgIGlm
ICgocnVsZXMgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVsZSA9IChydWxlcy5jYXIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAobmFtZXNbY29uZl0gPSAoc2NfbGlzdChoZWFkLCBydWxl
X251bSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfaV8xOSA9IChpbmQoaGVh
ZCwgbnRzKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGFydGVyc1tzY19pXzE5
XSA9IChuZXcgc2NfUGFpcihjb25mLCAoc3RhcnRlcnNbc2NfaV8xOV0pKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChsID0gcnVsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHNjX2NvbmZfMTggPSBjb25mKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoKGwgaW5zdGFuY2VvZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnQgPSAobC5jYXIp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVwc1tzY19jb25mXzE4
XSA9IChpbmQobnQsIG50cykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzY19pXzE3ID0gKGluZChudCwgbnRzKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHByZWRpY3RvcnNbc2NfaV8xN10gPSAobmV3IHNjX1BhaXIoc2NfY29uZl8xOCwg
KHByZWRpY3RvcnNbc2NfaV8xN10pKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGwgPSAobC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgrK3NjX2NvbmZfMTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
dGVwc1tzY19jb25mXzE4XSA9ICgoaW5kKGhlYWQsIG50cykpLW5iX250cykpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChpID0gKGluZChoZWFkLCBudHMpKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGVuZGVyc1tpXSA9IChuZXcgc2NfUGFpcihzY19jb25mXzE4LCAoZW5k
ZXJzW2ldKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJ1bGVfbG9v
cCgocnVsZXMuY2RyKSwgKHNjX2NvbmZfMTgrKDEpKSwgKHJ1bGVfbnVtKygxKSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIChkZWZfbG9vcCgoZGVmcy5jZHIpLCBjb25mKSk7CisgICAg
ICAgICAgICAgICAgfSksIChydWxlX2xvb3AoKGRlZi5jZHIpLCBjb25mLCAoMSkpKSk6dW5kZWZp
bmVkKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICAoZGVmX2xvb3AoZ3JhbW1hciwgKHNj
X250c184Lmxlbmd0aCkpKTsKKyAgICAgICAgICAgIChwYXJzZXJfZGVzY3IgPSBbbGV4ZXIsIHNj
X250c184LCBzY19zdGFydGVyc181LCBzY19lbmRlcnNfNCwgc2NfcHJlZGljdG9yc18zLCBzY19z
dGVwc18yLCBzY19uYW1lc18xXSk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oaW5wdXQp
IHsKKyAgICAgICAgICAgICAgICB2YXIgb3B0ck9wbmQ7CisgICAgICAgICAgICAgICAgdmFyIHNj
X29wdHJPcG5kXzIwOworICAgICAgICAgICAgICAgIHZhciBzY19vcHRyT3BuZF8yMTsKKyAgICAg
ICAgICAgICAgICB2YXIgc2Nfb3B0ck9wbmRfMjI7CisgICAgICAgICAgICAgICAgdmFyIGxvb3Ax
OworICAgICAgICAgICAgICAgIHZhciBCZ0xfc2Nfc3RhdGV6YTJfMjN6YTI7CisgICAgICAgICAg
ICAgICAgdmFyIHRva3M7CisgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19uYnpkMm50c18yNHpk
MjsKKyAgICAgICAgICAgICAgICB2YXIgc2Nfc3RlcHNfMjU7CisgICAgICAgICAgICAgICAgdmFy
IHNjX2VuZGVyc18yNjsKKyAgICAgICAgICAgICAgICB2YXIgc3RhdGVfbnVtOworICAgICAgICAg
ICAgICAgIHZhciBCZ0xfc2Nfc3RhdGVzemEyXzI3emEyOworICAgICAgICAgICAgICAgIHZhciBz
dGF0ZXM7CisgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAgdmFyIGNvbmY7
CisgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAgdmFyIHRva19udHM7Cisg
ICAgICAgICAgICAgICAgdmFyIHNjX2lfMjg7CisgICAgICAgICAgICAgICAgdmFyIHNjX2lfMjk7
CisgICAgICAgICAgICAgICAgdmFyIGwxOworICAgICAgICAgICAgICAgIHZhciBsMjsKKyAgICAg
ICAgICAgICAgICB2YXIgdG9rOworICAgICAgICAgICAgICAgIHZhciB0YWlsMTEyOTsKKyAgICAg
ICAgICAgICAgICB2YXIgTDExMjU7CisgICAgICAgICAgICAgICAgdmFyIGdvYWxfZW5kZXJzOwor
ICAgICAgICAgICAgICAgIHZhciBCZ0xfc2Nfc3RhdGVzemEyXzMwemEyOworICAgICAgICAgICAg
ICAgIHZhciBCZ0xfc2NfbmJ6ZDJudHNfMzF6ZDI7CisgICAgICAgICAgICAgICAgdmFyIEJnTF9z
Y19uYnpkMmNvbmZzXzMyemQyOworICAgICAgICAgICAgICAgIHZhciBuYl90b2tzOworICAgICAg
ICAgICAgICAgIHZhciBnb2FsX3N0YXJ0ZXJzOworICAgICAgICAgICAgICAgIHZhciBzY19zdGF0
ZXNfMzM7CisgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19uYnpkMmNvbmZzXzM0emQyOworICAg
ICAgICAgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJ0b2tzXzM1emQyOworICAgICAgICAgICAgICAg
IHZhciBzY190b2tzXzM2OworICAgICAgICAgICAgICAgIHZhciBmYWxzZUhlYWQxMTI4OworICAg
ICAgICAgICAgICAgIHZhciBzY19uYW1lc18zNzsKKyAgICAgICAgICAgICAgICB2YXIgc2Nfc3Rl
cHNfMzg7CisgICAgICAgICAgICAgICAgdmFyIHNjX3ByZWRpY3RvcnNfMzk7CisgICAgICAgICAg
ICAgICAgdmFyIHNjX2VuZGVyc180MDsKKyAgICAgICAgICAgICAgICB2YXIgc2Nfc3RhcnRlcnNf
NDE7CisgICAgICAgICAgICAgICAgdmFyIHNjX250c180MjsKKyAgICAgICAgICAgICAgICB2YXIg
bGV4ZXI7CisgICAgICAgICAgICAgICAgdmFyIHNjX2luZF80MzsKKyAgICAgICAgICAgICAgICB2
YXIgbWFrZV9zdGF0ZXM7CisgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19jb25memQyc2V0emQy
Z2V0emEyXzQ0emEyOworICAgICAgICAgICAgICAgIHZhciBjb25mX3NldF9tZXJnZV9uZXdfYmFu
ZzsKKyAgICAgICAgICAgICAgICB2YXIgY29uZl9zZXRfYWRqb2luOworICAgICAgICAgICAgICAg
IHZhciBCZ0xfc2NfY29uZnpkMnNldHpkMmFkam9pbnphMl80NXphMjsKKyAgICAgICAgICAgICAg
ICB2YXIgQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJ6YTJfNDZ6MDA7CisgICAgICAgICAg
ICAgICAgdmFyIGNvbmZfc2V0X3VuaW9uOworICAgICAgICAgICAgICAgIHZhciBmb3J3OworICAg
ICAgICAgICAgICAgIHZhciBpc19wYXJzZWQ7CisgICAgICAgICAgICAgICAgdmFyIGRlcml2X3Ry
ZWVzOworICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfZGVyaXZ6ZDJ0cmVlc3phMl80N3o3MDsK
KyAgICAgICAgICAgICAgICB2YXIgbmJfZGVyaXZfdHJlZXM7CisgICAgICAgICAgICAgICAgdmFy
IEJnTF9zY19uYnpkMmRlcml2emQydHJlZXN6YTJfNDh6YTI7CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBzY19pbmRfNDMgPSBmdW5jdGlvbihudCwgc2NfbnRzXzQ5KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSA9ICgoc2NfbnRzXzQ5Lmxlbmd0aCkt
KDEpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpPj0oMCkpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKChzY19pc0VxdWFsKChzY19udHNfNDlbaV0pLCBudCkp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgtLWkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBtYWtlX3N0
YXRlcyA9IGZ1bmN0aW9uKEJnTF9zY19uYnpkMnRva3NfNTB6ZDIsIEJnTF9zY19uYnpkMmNvbmZz
XzUxemQyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX3N0YXRlc181
MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc2Nfc3RhdGVzXzUyID0gKHNjX21ha2VWZWN0b3IoKEJnTF9zY19uYnpkMnRva3NfNTB6ZDIr
KDEpKSwgZmFsc2UpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSBCZ0xfc2Nf
bmJ6ZDJ0b2tzXzUwemQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGk+
PSgwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHYgPSAoc2NfbWFrZVZlY3RvcigoQmdMX3NjX25iemQy
Y29uZnNfNTF6ZDIrKDEpKSwgZmFsc2UpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAodlsoMCldID0gKC0xKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc2Nfc3RhdGVzXzUyW2ldID0gdik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoLS1pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc2Nfc3RhdGVzXzUyOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBCZ0xfc2NfY29uZnpkMnNldHpkMmdldHph
Ml80NHphMiA9IGZ1bmN0aW9uKHN0YXRlLCBCZ0xfc2Nfc3RhdGV6ZDJudW1fNTN6ZDIsIHNjX2Nv
bmZfNTQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25mX3NldDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfY29uZnpkMnNldF81NXpkMjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoKEJnTF9zY19jb25memQyc2V0XzU1emQyID0gKHN0YXRlWyhz
Y19jb25mXzU0KygxKSldKSksICgoQmdMX3NjX2NvbmZ6ZDJzZXRfNTV6ZDIhPT0gZmFsc2UpP0Jn
TF9zY19jb25memQyc2V0XzU1emQyOigoY29uZl9zZXQgPSAoc2NfbWFrZVZlY3RvcigoQmdMX3Nj
X3N0YXRlemQybnVtXzUzemQyKyg2KSksIGZhbHNlKSkpLCAoY29uZl9zZXRbKDEpXSA9ICgtMykp
LCAoY29uZl9zZXRbKDIpXSA9ICgtMSkpLCAoY29uZl9zZXRbKDMpXSA9ICgtMSkpLCAoY29uZl9z
ZXRbKDQpXSA9ICgtMSkpLCAoc3RhdGVbKHNjX2NvbmZfNTQrKDEpKV0gPSBjb25mX3NldCksIGNv
bmZfc2V0KSkpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBj
b25mX3NldF9tZXJnZV9uZXdfYmFuZyA9IGZ1bmN0aW9uKGNvbmZfc2V0KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKChjb25mX3NldFsoKGNvbmZfc2V0WygxKV0pKyg1KSldID0g
KGNvbmZfc2V0Wyg0KV0pKSwgKGNvbmZfc2V0WygxKV0gPSAoY29uZl9zZXRbKDMpXSkpLCAoY29u
Zl9zZXRbKDMpXSA9ICgtMSkpLCAoY29uZl9zZXRbKDQpXSA9ICgtMSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgY29uZl9zZXRfYWRqb2luID0gZnVuY3Rp
b24oc3RhdGUsIGNvbmZfc2V0LCBzY19jb25mXzU2LCBpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgdGFpbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHRhaWwgPSAo
Y29uZl9zZXRbKDMpXSkpLCAoY29uZl9zZXRbKGkrKDUpKV0gPSAoLTEpKSwgKGNvbmZfc2V0Wyh0
YWlsKyg1KSldID0gaSksIChjb25mX3NldFsoMyldID0gaSksICgodGFpbDwoMCkpPygoY29uZl9z
ZXRbKDApXSA9IChzdGF0ZVsoMCldKSksIChzdGF0ZVsoMCldID0gc2NfY29uZl81NikpOnVuZGVm
aW5lZCkpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBCZ0xf
c2NfY29uZnpkMnNldHpkMmFkam9pbnphMl80NXphMiA9IGZ1bmN0aW9uKHNjX3N0YXRlc181Nywg
QmdMX3NjX3N0YXRlemQybnVtXzU4emQyLCBsLCBpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgY29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfY29uZl81OTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsMTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBzdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc3RhdGUgPSAoc2Nfc3RhdGVzXzU3W0JnTF9zY19zdGF0ZXpkMm51bV81OHpk
Ml0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobDEgPSBsKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAoKGwxIGluc3RhbmNlb2Ygc2NfUGFpcikpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHNjX2NvbmZfNTkgPSAobDEuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoY29uZl9zZXQgPSAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJnZXR6YTJfNDR6
YTIoc3RhdGUsIEJnTF9zY19zdGF0ZXpkMm51bV81OHpkMiwgc2NfY29uZl81OSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKGNvbmZfc2V0WyhpKyg1KSldKT09
PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZl9zZXRfYWRqb2lu
KHN0YXRlLCBjb25mX3NldCwgc2NfY29uZl81OSwgaSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAobDEgPSAobDEuY2RyKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsMSA9
IChsMS5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgICAgICBCZ0xfc2NfY29uZnpkMnNldHpkMmFkam9pbnphMnph
Ml80NnowMCA9IGZ1bmN0aW9uKHNjX3N0YXRlc182MCwgQmdMX3NjX3N0YXRlc3phMl82MXphMiwg
QmdMX3NjX3N0YXRlemQybnVtXzYyemQyLCBzY19jb25mXzYzLCBpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgQmdMX3NjX2NvbmZ6ZDJzZXR6YTJfNjR6NzA7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgQmdMX3NjX3N0YXRlemEyXzY1emEyOworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgoc3RhdGUgPSAoc2Nfc3RhdGVzXzYwW0Jn
TF9zY19zdGF0ZXpkMm51bV82MnpkMl0pKSwgKCgoKGNvbmZfc2V0ID0gKHN0YXRlWyhzY19jb25m
XzYzKygxKSldKSksICgoY29uZl9zZXQhPT0gZmFsc2UpPyhjb25mX3NldFsoaSsoNSkpXSk6ZmFs
c2UpKSE9PSBmYWxzZSk/KChCZ0xfc2Nfc3RhdGV6YTJfNjV6YTIgPSAoQmdMX3NjX3N0YXRlc3ph
Ml82MXphMltCZ0xfc2Nfc3RhdGV6ZDJudW1fNjJ6ZDJdKSksIChCZ0xfc2NfY29uZnpkMnNldHph
Ml82NHo3MCA9IChCZ0xfc2NfY29uZnpkMnNldHpkMmdldHphMl80NHphMihCZ0xfc2Nfc3RhdGV6
YTJfNjV6YTIsIEJnTF9zY19zdGF0ZXpkMm51bV82MnpkMiwgc2NfY29uZl82MykpKSwgKCgoQmdM
X3NjX2NvbmZ6ZDJzZXR6YTJfNjR6NzBbKGkrKDUpKV0pPT09IGZhbHNlKT8oY29uZl9zZXRfYWRq
b2luKEJnTF9zY19zdGF0ZXphMl82NXphMiwgQmdMX3NjX2NvbmZ6ZDJzZXR6YTJfNjR6NzAsIHNj
X2NvbmZfNjMsIGkpKTp1bmRlZmluZWQpLCB0cnVlKTpmYWxzZSkpOworICAgICAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgICAgICBjb25mX3NldF91bmlvbiA9IGZ1bmN0aW9uKHN0
YXRlLCBjb25mX3NldCwgc2NfY29uZl82Niwgb3RoZXJfc2V0KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoaSA9IChvdGhlcl9zZXRbKDIpXSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdoaWxlICgoaT49KDApKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKChjb25mX3NldFsoaSsoNSkpXSk9PT0gZmFsc2UpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChjb25mX3NldF9hZGpvaW4oc3RhdGUsIGNvbmZfc2V0LCBzY19jb25mXzY2LCBpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSAob3RoZXJfc2V0
WyhpKyg1KSldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChpID0gKG90aGVyX3NldFsoaSsoNSkpXSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZp
bmVkOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgICAgICBmb3J3ID0gZnVuY3Rpb24oc2Nfc3RhdGVzXzY3LCBCZ0xfc2Nf
c3RhdGV6ZDJudW1fNjh6ZDIsIHNjX3N0YXJ0ZXJzXzY5LCBzY19lbmRlcnNfNzAsIHNjX3ByZWRp
Y3RvcnNfNzEsIHNjX3N0ZXBzXzcyLCBzY19udHNfNzMpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBuZXh0X3NldDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0OworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGVuZGVyOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgc3RhcnRlcl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgc3RhcnRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19sXzc0OworICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHNjX2xvb3AxXzc1OworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGhlYWQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX2NvbmZ6ZDJz
ZXRfNzZ6ZDI7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX3N0YXRlemQybnVt
Xzc3emQyOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlOworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHNjX3N0YXRlc183ODsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBwcmVkczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfY29uZnpkMnNldF83
OXpkMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGVwOworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHNjX2NvbmZfODA7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdM
X3NjX25iemQybnRzXzgxemQyOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX3N0YXRl
XzgyOworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzY19zdGF0ZV84MiA9IChzY19zdGF0ZXNfNjdbQmdMX3NjX3N0YXRlemQybnVtXzY4emQy
XSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJudHNfODF6ZDIg
PSAoc2NfbnRzXzczLmxlbmd0aCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzY19jb25mXzgwID0gKHNjX3N0YXRlXzgyWygwKV0p
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2NfY29uZl84MD49
KDApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVwID0gKHNjX3N0ZXBzXzcy
W3NjX2NvbmZfODBdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChCZ0xfc2NfY29uZnpkMnNldF83OXpkMiA9IChzY19zdGF0ZV84Mlsoc2NfY29uZl84MCso
MSkpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGVh
ZCA9IChCZ0xfc2NfY29uZnpkMnNldF83OXpkMlsoNCldKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzY19zdGF0ZV84MlsoMCldID0gKEJnTF9zY19jb25m
emQyc2V0Xzc5emQyWygwKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGNvbmZfc2V0X21lcmdlX25ld19iYW5nKEJnTF9zY19jb25memQyc2V0Xzc5emQy
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc3Rl
cD49KDApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c2NfbF83NCA9IChzY19zdGFydGVyc182OVtzdGVwXSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoc2NfbF83NCBpbnN0YW5jZW9m
IHNjX1BhaXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzdGFydGVyID0gKHNjX2xfNzQuY2FyKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhcnRl
cl9zZXQgPSAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJnZXR6YTJfNDR6YTIoc2Nfc3RhdGVfODIsIEJn
TF9zY19zdGF0ZXpkMm51bV82OHpkMiwgc3RhcnRlcikpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKHN0YXJ0ZXJfc2V0
WyhCZ0xfc2Nfc3RhdGV6ZDJudW1fNjh6ZDIrKDUpKV0pPT09IGZhbHNlKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjb25mX3NldF9hZGpvaW4oc2Nfc3RhdGVfODIsIHN0YXJ0ZXJfc2V0LCBzdGFy
dGVyLCBCZ0xfc2Nfc3RhdGV6ZDJudW1fNjh6ZDIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2xfNzQgPSAo
c2NfbF83NC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2xfNzQgPSAoc2Nf
bF83NC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAobCA9IChzY19lbmRlcnNfNzBbc3RlcF0pKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGwgaW5zdGFuY2VvZiBzY19Q
YWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoZW5kZXIgPSAobC5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKChjb25mX3NldCA9IChz
Y19zdGF0ZV84MlsoZW5kZXIrKDEpKV0pKSwgKChjb25mX3NldCE9PSBmYWxzZSk/KGNvbmZfc2V0
WyhCZ0xfc2Nfc3RhdGV6ZDJudW1fNjh6ZDIrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKG5leHQgPSAoc2NfY29uZl84MCsoMSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KG5leHRfc2V0ID0gKEJnTF9zY19jb25memQyc2V0emQyZ2V0emEyXzQ0emEyKHNjX3N0YXRlXzgy
LCBCZ0xfc2Nfc3RhdGV6ZDJudW1fNjh6ZDIsIG5leHQpKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25mX3Nl
dF91bmlvbihzY19zdGF0ZV84MiwgbmV4dF9zZXQsIG5leHQsIEJnTF9zY19jb25memQyc2V0Xzc5
emQyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJl
ZHMgPSAoc2NfcHJlZGljdG9yc183MVsoc3RlcCtCZ0xfc2NfbmJ6ZDJudHNfODF6ZDIpXSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19z
dGF0ZXNfNzggPSBzY19zdGF0ZXNfNjcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZSA9IHNjX3N0YXRlXzgyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX3N0YXRlemQy
bnVtXzc3emQyID0gQmdMX3NjX3N0YXRlemQybnVtXzY4emQyKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX2NvbmZ6ZDJzZXRfNzZ6
ZDIgPSBCZ0xfc2NfY29uZnpkMnNldF83OXpkMik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfbG9vcDFfNzUgPSBmdW5jdGlvbihsKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBzY19zdGF0ZV84MzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIEJnTF9zY19uZXh0emQyc2V0Xzg0emQyOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfbmV4dF84
NTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHByZWRfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZWQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobCBpbnN0YW5jZW9mIHNjX1Bh
aXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChwcmVkID0gKGwuY2FyKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSBoZWFkKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAoKGk+PSgwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHByZWRfc2V0ID0gKChzY19zdGF0ZV84MyA9IChzY19zdGF0ZXNfNzhbaV0pKSwgKHNjX3N0YXRl
XzgzWyhwcmVkKygxKSldKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcmVkX3NldCE9PSBmYWxz
ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfbmV4
dF84NSA9IChwcmVkKygxKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25leHR6
ZDJzZXRfODR6ZDIgPSAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJnZXR6YTJfNDR6YTIoc3RhdGUsIEJn
TF9zY19zdGF0ZXpkMm51bV83N3pkMiwgc2NfbmV4dF84NSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNvbmZfc2V0X3VuaW9uKHN0YXRlLCBCZ0xfc2NfbmV4dHpkMnNldF84NHpkMiwgc2Nf
bmV4dF84NSwgcHJlZF9zZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoaSA9IChCZ0xfc2NfY29uZnpkMnNldF83NnpkMlsoaSsoNSkpXSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAoc2NfbG9vcDFfNzUoKGwuY2RyKSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHNjX2xvb3AxXzc1KHByZWRzKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1
bmRlZmluZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIGlzX3BhcnNlZCA9IGZ1bmN0aW9uKG50
LCBpLCBqLCBzY19udHNfODYsIHNjX2VuZGVyc184Nywgc2Nfc3RhdGVzXzg4KSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgY29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgc3RhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfY29uZl84OTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBsOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEJn
TF9zY19udHphMl85MHphMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoQmdMX3NjX250emEyXzkwemEyID0gKHNjX2luZF80MyhudCwgc2Nf
bnRzXzg2KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoQmdMX3NjX250emEy
XzkwemEyIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX250c184Ni5sZW5ndGgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSAoc2NfZW5kZXJzXzg3W0JnTF9z
Y19udHphMl85MHphMl0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KChsIGluc3RhbmNlb2Ygc2NfUGFpcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzY19jb25mXzg5ID0gKGwuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgoc3RhdGUgPSAoc2Nfc3RhdGVzXzg4W2pdKSks
IChjb25mX3NldCA9IChzdGF0ZVsoc2NfY29uZl84OSsoMSkpXSkpLCAoKGNvbmZfc2V0IT09IGZh
bHNlKT8oY29uZl9zZXRbKGkrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2Ry
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBkZXJpdl90cmVlcyA9IGZ1
bmN0aW9uKHNjX2NvbmZfOTEsIGksIGosIHNjX2VuZGVyc185Miwgc2Nfc3RlcHNfOTMsIHNjX25h
bWVzXzk0LCBzY190b2tzXzk1LCBzY19zdGF0ZXNfOTYsIEJnTF9zY19uYnpkMm50c185N3pkMikg
eworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2xvb3AxXzk4OworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHByZXY7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKG5hbWUgPSAoc2NfbmFtZXNfOTRbc2Nf
Y29uZl85MV0pKSwgKChuYW1lIT09IGZhbHNlKT8oKHNjX2NvbmZfOTE8QmdMX3NjX25iemQybnRz
Xzk3emQyKT8oc2NfbGlzdCgoc2NfbGlzdChuYW1lLCAoKHNjX3Rva3NfOTVbaV0pLmNhcikpKSkp
OihzY19saXN0KChzY19saXN0KG5hbWUpKSkpKTooKHByZXYgPSAoc2NfY29uZl85MS0oMSkpKSwg
KHNjX2xvb3AxXzk4ID0gZnVuY3Rpb24obDEsIGwyKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGxvb3AyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmRlcl9z
ZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBlbmRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgbDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwyOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgobDEgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoZW5kZXIgPSAobDEuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGVuZGVyX3NldCA9ICgoc3RhdGUgPSAoc2Nfc3RhdGVzXzk2W2pdKSksIChzdGF0ZVso
ZW5kZXIrKDEpKV0pKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKChlbmRlcl9zZXQhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb29wMiA9IGZ1bmN0aW9uKGssIGwyKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxvb3AzOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmRlcl90cmVlczsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJl
dl90cmVlczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgY29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHNjX3N0YXRlXzk5OworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsMjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGs+
PSgwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoKChrPj1pKSYmKCgoc2Nfc3RhdGVfOTkgPSAoc2Nfc3RhdGVzXzk2W2td
KSksIChjb25mX3NldCA9IChzY19zdGF0ZV85OVsocHJldisoMSkpXSkpLCAoKGNvbmZfc2V0IT09
IGZhbHNlKT8oY29uZl9zZXRbKGkrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChwcmV2X3RyZWVzID0gKGRlcml2X3RyZWVzKHByZXYsIGksIGssIHNjX2Vu
ZGVyc185Miwgc2Nfc3RlcHNfOTMsIHNjX25hbWVzXzk0LCBzY190b2tzXzk1LCBzY19zdGF0ZXNf
OTYsIEJnTF9zY19uYnpkMm50c185N3pkMikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZGVyX3RyZWVzID0g
KGRlcml2X3RyZWVzKGVuZGVyLCBrLCBqLCBzY19lbmRlcnNfOTIsIHNjX3N0ZXBzXzkzLCBzY19u
YW1lc185NCwgc2NfdG9rc185NSwgc2Nfc3RhdGVzXzk2LCBCZ0xfc2NfbmJ6ZDJudHNfOTd6ZDIp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvb3AzID0gZnVuY3Rpb24obDMsIGwyKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgbDQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfbDJfMTAwOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGVuZGVyX3RyZWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGwzIGluc3RhbmNlb2Ygc2NfUGFp
cikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kZXJf
dHJlZSA9IChzY19saXN0KChsMy5jYXIpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobDQg
PSBwcmV2X3RyZWVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2wyXzEwMCA9IGwyKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChsNCBpbnN0YW5jZW9mIHNjX1BhaXIpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHNjX2wyXzEwMCA9IChuZXcgc2NfUGFpcigoc2NfYXBwZW5kKChsNC5jYXIpLCBlbmRl
cl90cmVlKSksIHNjX2wyXzEwMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
bDQgPSAobDQuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChsb29wMygobDMu
Y2RyKSwgc2NfbDJfMTAwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobG9vcDIoKGVuZGVyX3NldFsoaysoNSkp
XSksIGwyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobG9vcDMoZW5kZXJf
dHJlZXMsIGwyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrID0gKGVuZGVyX3NldFso
aysoNSkpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHNjX2xvb3AxXzk4KChsMS5jZHIpLCBsMikpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxvb3AyKChl
bmRlcl9zZXRbKDIpXSksIGwyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsMSA9IChsMS5j
ZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGwyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0pLCAoc2NfbG9vcDFfOTgoKHNjX2VuZGVyc185Mlsoc2Nfc3RlcHNf
OTNbcHJldl0pXSksIG51bGwpKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICAgICAgQmdMX3NjX2Rlcml2emQydHJlZXN6YTJfNDd6NzAgPSBmdW5jdGlvbihudCwg
aSwgaiwgc2NfbnRzXzEwMSwgc2NfZW5kZXJzXzEwMiwgc2Nfc3RlcHNfMTAzLCBzY19uYW1lc18x
MDQsIHNjX3Rva3NfMTA1LCBzY19zdGF0ZXNfMTA2KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgY29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgc2NfY29uZl8xMDc7CisgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cmVlczsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJudHNfMTA4emQyOworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIEJnTF9zY19udHphMl8xMDl6YTI7CisgICAgICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19udHphMl8xMDl6YTIg
PSAoc2NfaW5kXzQzKG50LCBzY19udHNfMTAxKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgoQmdMX3NjX250emEyXzEwOXphMiE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChC
Z0xfc2NfbmJ6ZDJudHNfMTA4emQyID0gKHNjX250c18xMDEubGVuZ3RoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IChzY19lbmRlcnNfMTAyW0JnTF9zY19udHph
Ml8xMDl6YTJdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXMg
PSBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobCBp
bnN0YW5jZW9mIHNjX1BhaXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nf
Y29uZl8xMDcgPSAobC5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCgoKHN0YXRlID0gKHNjX3N0YXRlc18xMDZbal0pKSwgKGNvbmZfc2V0ID0g
KHN0YXRlWyhzY19jb25mXzEwNysoMSkpXSkpLCAoKGNvbmZfc2V0IT09IGZhbHNlKT8oY29uZl9z
ZXRbKGkrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzID0gKHNjX2FwcGVuZCgoZGVy
aXZfdHJlZXMoc2NfY29uZl8xMDcsIGksIGosIHNjX2VuZGVyc18xMDIsIHNjX3N0ZXBzXzEwMywg
c2NfbmFtZXNfMTA0LCBzY190b2tzXzEwNSwgc2Nfc3RhdGVzXzEwNiwgQmdMX3NjX25iemQybnRz
XzEwOHpkMikpLCB0cmVlcykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGwgPSAobC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJlZXM7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgbmJfZGVy
aXZfdHJlZXMgPSBmdW5jdGlvbihzY19jb25mXzExMCwgaSwgaiwgc2NfZW5kZXJzXzExMSwgc2Nf
c3RlcHNfMTEyLCBzY190b2tzXzExMywgc2Nfc3RhdGVzXzExNCwgQmdMX3NjX25iemQybnRzXzEx
NXpkMikgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2xvb3AxXzExNjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciB0bXAxMTI0OworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHByZXY7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChwcmV2ID0gKHNjX2Nv
bmZfMTEwLSgxKSkpLCAoKCgodG1wMTEyNCA9IChzY19jb25mXzExMDxCZ0xfc2NfbmJ6ZDJudHNf
MTE1emQyKSksICgodG1wMTEyNCE9PSBmYWxzZSk/dG1wMTEyNDooKHNjX3N0ZXBzXzExMltwcmV2
XSk8KDApKSkpIT09IGZhbHNlKT8oMSk6KChzY19sb29wMV8xMTYgPSBmdW5jdGlvbihsLCBzY19u
XzExOCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYl9lbmRlcl90cmVlczsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmJfcHJldl90cmVlczsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgY29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHN0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBlbmRlcl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX3N0
YXRlXzExNzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW5kZXI7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHNjX25fMTE4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobCBpbnN0YW5jZW9mIHNjX1Bh
aXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmRlciA9IChsLmNhcikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmRlcl9zZXQgPSAoKHNjX3N0YXRlXzEx
NyA9IChzY19zdGF0ZXNfMTE0W2pdKSksIChzY19zdGF0ZV8xMTdbKGVuZGVyKygxKSldKSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZW5kZXJfc2V0IT09
IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGsgPSAoZW5k
ZXJfc2V0WygyKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChuID0gc2Nfbl8xMTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKChrPj0oMCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoaz49aSkmJigoKHN0YXRlID0gKHNj
X3N0YXRlc18xMTRba10pKSwgKGNvbmZfc2V0ID0gKHN0YXRlWyhwcmV2KygxKSldKSksICgoY29u
Zl9zZXQhPT0gZmFsc2UpPyhjb25mX3NldFsoaSsoNSkpXSk6ZmFsc2UpKSE9PSBmYWxzZSkpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAobmJfcHJldl90cmVlcyA9IChuYl9kZXJpdl90cmVlcyhwcmV2LCBpLCBrLCBzY19lbmRl
cnNfMTExLCBzY19zdGVwc18xMTIsIHNjX3Rva3NfMTEzLCBzY19zdGF0ZXNfMTE0LCBCZ0xfc2Nf
bmJ6ZDJudHNfMTE1emQyKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKG5iX2VuZGVyX3RyZWVzID0gKG5iX2Rlcml2X3RyZWVz
KGVuZGVyLCBrLCBqLCBzY19lbmRlcnNfMTExLCBzY19zdGVwc18xMTIsIHNjX3Rva3NfMTEzLCBz
Y19zdGF0ZXNfMTE0LCBCZ0xfc2NfbmJ6ZDJudHNfMTE1emQyKSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGsgPSAoZW5kZXJf
c2V0WyhrKyg1KSldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAobiArPShuYl9wcmV2X3RyZWVzKm5iX2VuZGVyX3RyZWVzKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChrID0gKGVuZGVyX3NldFsoaysoNSkpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIChzY19sb29wMV8xMTYoKGwuY2RyKSwgbikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2Nfbl8xMTg7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSksIChz
Y19sb29wMV8xMTYoKHNjX2VuZGVyc18xMTFbKHNjX3N0ZXBzXzExMltwcmV2XSldKSwgKDApKSkp
KSk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIEJnTF9zY19u
YnpkMmRlcml2emQydHJlZXN6YTJfNDh6YTIgPSBmdW5jdGlvbihudCwgaSwgaiwgc2NfbnRzXzEx
OSwgc2NfZW5kZXJzXzEyMCwgc2Nfc3RlcHNfMTIxLCBzY190b2tzXzEyMiwgc2Nfc3RhdGVzXzEy
MykgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHN0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2Nv
bmZfMTI0OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgbmJfdHJlZXM7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3Nj
X25iemQybnRzXzEyNXpkMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbnR6
YTJfMTI2emEyOworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChCZ0xfc2NfbnR6YTJfMTI2emEyID0gKHNjX2luZF80MyhudCwgc2NfbnRzXzEx
OSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKEJnTF9zY19udHphMl8xMjZ6
YTIhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25iemQybnRzXzEyNXpkMiA9IChz
Y19udHNfMTE5Lmxlbmd0aCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGwgPSAoc2NfZW5kZXJzXzEyMFtCZ0xfc2NfbnR6YTJfMTI2emEyXSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKG5iX3RyZWVzID0gKDApKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobCBpbnN0YW5jZW9mIHNjX1BhaXIpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfY29uZl8xMjQgPSAobC5jYXIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoKHN0YXRlID0g
KHNjX3N0YXRlc18xMjNbal0pKSwgKGNvbmZfc2V0ID0gKHN0YXRlWyhzY19jb25mXzEyNCsoMSkp
XSkpLCAoKGNvbmZfc2V0IT09IGZhbHNlKT8oY29uZl9zZXRbKGkrKDUpKV0pOmZhbHNlKSkhPT0g
ZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs
ID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG5iX3RyZWVzID0gKChuYl9kZXJpdl90cmVlcyhzY19jb25mXzEyNCwgaSwgaiwg
c2NfZW5kZXJzXzEyMCwgc2Nfc3RlcHNfMTIxLCBzY190b2tzXzEyMiwgc2Nfc3RhdGVzXzEyMywg
QmdMX3NjX25iemQybnRzXzEyNXpkMikpK25iX3RyZWVzKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5iX3RyZWVzOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgICAgIChsZXhlciA9IChwYXJzZXJfZGVzY3JbKDApXSkpOworICAgICAgICAgICAg
ICAgICAgICAoc2NfbnRzXzQyID0gKHBhcnNlcl9kZXNjclsoMSldKSk7CisgICAgICAgICAgICAg
ICAgICAgIChzY19zdGFydGVyc180MSA9IChwYXJzZXJfZGVzY3JbKDIpXSkpOworICAgICAgICAg
ICAgICAgICAgICAoc2NfZW5kZXJzXzQwID0gKHBhcnNlcl9kZXNjclsoMyldKSk7CisgICAgICAg
ICAgICAgICAgICAgIChzY19wcmVkaWN0b3JzXzM5ID0gKHBhcnNlcl9kZXNjclsoNCldKSk7Cisg
ICAgICAgICAgICAgICAgICAgIChzY19zdGVwc18zOCA9IChwYXJzZXJfZGVzY3JbKDUpXSkpOwor
ICAgICAgICAgICAgICAgICAgICAoc2NfbmFtZXNfMzcgPSAocGFyc2VyX2Rlc2NyWyg2KV0pKTsK
KyAgICAgICAgICAgICAgICAgICAgKGZhbHNlSGVhZDExMjggPSAobmV3IHNjX1BhaXIobnVsbCwg
bnVsbCkpKTsKKyAgICAgICAgICAgICAgICAgICAgKEwxMTI1ID0gKGxleGVyKGlucHV0KSkpOwor
ICAgICAgICAgICAgICAgICAgICAodGFpbDExMjkgPSBmYWxzZUhlYWQxMTI4KTsKKyAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKCEoTDExMjUgPT09IG51bGwpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvayA9IChMMTEyNS5jYXIp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobDEgPSAodG9rLmNkcikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChsMiA9IG51bGwpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdoaWxlICgobDEgaW5zdGFuY2VvZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c2NfaV8yOSA9IChzY19pbmRfNDMoKGwxLmNhciksIHNjX250c180MikpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2NfaV8yOSE9PSBmYWxzZSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAobDEgPSAobDEuY2RyKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsMiA9IChuZXcgc2NfUGFpcihzY19pXzI5LCBs
MikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGwxID0gKGwxLmNkcikpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzY19vcHRyT3BuZF8yMiA9IChuZXcgc2NfUGFpcigodG9rLmNhciks
IChzY19yZXZlcnNlKGwyKSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX29w
dHJPcG5kXzIxID0gKG5ldyBzY19QYWlyKHNjX29wdHJPcG5kXzIyLCBudWxsKSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICh0YWlsMTEyOS5jZHIgPSBzY19vcHRyT3BuZF8yMSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhaWwxMTI5ID0gKHRhaWwxMTI5LmNkcikpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMMTEyNSA9IChMMTEyNS5jZHIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAoc2Nfb3B0ck9wbmRfMjAgPSAoZmFsc2VIZWFkMTEyOC5jZHIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgKHNjX3Rva3NfMzYgPSAoc2NfbGlzdDJ2ZWN0b3Ioc2Nfb3B0ck9wbmRfMjAp
KSk7CisgICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJ0b2tzXzM1emQyID0gKHNjX3Rv
a3NfMzYubGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJjb25mc18z
NHpkMiA9IChzY19zdGVwc18zOC5sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAgKHNjX3N0
YXRlc18zMyA9IChtYWtlX3N0YXRlcyhCZ0xfc2NfbmJ6ZDJ0b2tzXzM1emQyLCBCZ0xfc2NfbmJ6
ZDJjb25mc18zNHpkMikpKTsKKyAgICAgICAgICAgICAgICAgICAgKGdvYWxfc3RhcnRlcnMgPSAo
c2Nfc3RhcnRlcnNfNDFbKDApXSkpOworICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX2NvbmZ6
ZDJzZXR6ZDJhZGpvaW56YTJfNDV6YTIoc2Nfc3RhdGVzXzMzLCAoMCksIGdvYWxfc3RhcnRlcnMs
ICgwKSkpOworICAgICAgICAgICAgICAgICAgICAoZm9ydyhzY19zdGF0ZXNfMzMsICgwKSwgc2Nf
c3RhcnRlcnNfNDEsIHNjX2VuZGVyc180MCwgc2NfcHJlZGljdG9yc18zOSwgc2Nfc3RlcHNfMzgs
IHNjX250c180MikpOworICAgICAgICAgICAgICAgICAgICAoc2NfaV8yOCA9ICgwKSk7CisgICAg
ICAgICAgICAgICAgICAgIHdoaWxlICgoc2NfaV8yODxCZ0xfc2NfbmJ6ZDJ0b2tzXzM1emQyKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICh0b2tfbnRzID0gKChzY190b2tzXzM2W3NjX2lfMjhdKS5jZHIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJfNDV6YTIoc2Nfc3Rh
dGVzXzMzLCAoc2NfaV8yOCsoMSkpLCB0b2tfbnRzLCBzY19pXzI4KSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGZvcncoc2Nfc3RhdGVzXzMzLCAoc2NfaV8yOCsoMSkpLCBzY19zdGFy
dGVyc180MSwgc2NfZW5kZXJzXzQwLCBzY19wcmVkaWN0b3JzXzM5LCBzY19zdGVwc18zOCwgc2Nf
bnRzXzQyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsrc2NfaV8yOCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgKG5iX3Rva3MgPSAoc2NfdG9rc18zNi5sZW5ndGgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgKEJnTF9zY19uYnpkMmNvbmZzXzMyemQyID0gKHNjX3N0ZXBzXzM4Lmxlbmd0aCkpOwor
ICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25iemQybnRzXzMxemQyID0gKHNjX250c180Mi5s
ZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19zdGF0ZXN6YTJfMzB6YTIgPSAo
bWFrZV9zdGF0ZXMobmJfdG9rcywgQmdMX3NjX25iemQyY29uZnNfMzJ6ZDIpKSk7CisgICAgICAg
ICAgICAgICAgICAgIChnb2FsX2VuZGVycyA9IChzY19lbmRlcnNfNDBbKDApXSkpOworICAgICAg
ICAgICAgICAgICAgICAobCA9IGdvYWxfZW5kZXJzKTsKKyAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKChsIGluc3RhbmNlb2Ygc2NfUGFpcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZiA9IChsLmNhcikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfY29uZnpkMnNldHpkMmFkam9pbnphMnphMl80Nnow
MChzY19zdGF0ZXNfMzMsIEJnTF9zY19zdGF0ZXN6YTJfMzB6YTIsIG5iX3Rva3MsIGNvbmYsICgw
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgKGkgPSBuYl90b2tzKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChpPj0oMCkp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHN0YXRlcyA9IHNjX3N0YXRlc18zMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KEJnTF9zY19zdGF0ZXN6YTJfMjd6YTIgPSBCZ0xfc2Nfc3RhdGVzemEyXzMwemEyKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGVfbnVtID0gaSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHNjX2VuZGVyc18yNiA9IHNjX2VuZGVyc180MCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHNjX3N0ZXBzXzI1ID0gc2Nfc3RlcHNfMzgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJudHNfMjR6ZDIgPSBCZ0xfc2NfbmJ6ZDJudHNf
MzF6ZDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b2tzID0gc2NfdG9rc18zNik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19zdGF0ZXphMl8yM3phMiA9IChC
Z0xfc2Nfc3RhdGVzemEyXzMwemEyW2ldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bG9vcDEgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHNjX2xvb3AxXzEyNzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZXY7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2Nfc3RhdGVzemEyXzEy
OHphMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX3N0YXRlc18xMjk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHNjX2lfMTMwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVhZDsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfY29uZl8xMzE7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
Y19jb25mXzEzMSA9IChCZ0xfc2Nfc3RhdGV6YTJfMjN6YTJbKDApXSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzY19jb25mXzEzMT49KDApKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChjb25mX3NldCA9IChCZ0xfc2Nfc3RhdGV6YTJfMjN6YTJb
KHNjX2NvbmZfMTMxKygxKSldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChoZWFkID0gKGNvbmZfc2V0Wyg0KV0pKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19zdGF0ZXphMl8yM3phMlsoMCldID0gKGNv
bmZfc2V0WygwKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGNvbmZfc2V0X21lcmdlX25ld19iYW5nKGNvbmZfc2V0KSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19pXzEzMCA9IGhlYWQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKHNjX2lfMTMwPj0oMCkp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSBz
Y19pXzEzMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGogPSBzdGF0ZV9udW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzY19zdGF0ZXNfMTI5ID0gc3RhdGVzKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX3N0YXRlc3ph
Ml8xMjh6YTIgPSBCZ0xfc2Nfc3RhdGVzemEyXzI3emEyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJldiA9IChzY19jb25mXzEzMS0oMSkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoKChzY19jb25mXzEzMT49QmdMX3NjX25iemQybnRzXzI0emQyKSYmKChzY19zdGVwc18yNVtw
cmV2XSk+PSgwKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzY19sb29wMV8xMjcgPSBmdW5jdGlvbihsKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIGVuZGVyX3NldDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdGU7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGVuZGVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgobCBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChlbmRlciA9IChsLmNhcikpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmRl
cl9zZXQgPSAoKHN0YXRlID0gKHNjX3N0YXRlc18xMjlbal0pKSwgKHN0YXRlWyhlbmRlcisoMSkp
XSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGVuZGVyX3NldCE9PSBmYWxzZSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrID0gKGVu
ZGVyX3NldFsoMildKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGs+PSgw
KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgoaz49aSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoKChCZ0xfc2NfY29uZnpkMnNldHpkMmFkam9pbnphMnphMl80Nnow
MChzY19zdGF0ZXNfMTI5LCBCZ0xfc2Nfc3RhdGVzemEyXzEyOHphMiwgaywgcHJldiwgaSkpIT09
IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdM
X3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJ6YTJfNDZ6MDAoc2Nfc3RhdGVzXzEyOSwgQmdMX3Nj
X3N0YXRlc3phMl8xMjh6YTIsIGosIGVuZGVyLCBrKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChrID0gKGVuZGVyX3NldFsoaysoNSkpXSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAoc2NfbG9vcDFfMTI3KChsLmNkcikpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGwgPSAobC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHNjX2xvb3AxXzEyNygoc2NfZW5kZXJzXzI2WyhzY19zdGVwc18yNVtwcmV2XSldKSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNj
X2lfMTMwID0gKGNvbmZfc2V0WyhzY19pXzEzMCsoNSkpXSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAobG9vcDEoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb29wMSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoLS1pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAob3B0ck9wbmQgPSBC
Z0xfc2Nfc3RhdGVzemEyXzMwemEyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtzY19u
dHNfNDIsIHNjX3N0YXJ0ZXJzXzQxLCBzY19lbmRlcnNfNDAsIHNjX3ByZWRpY3RvcnNfMzksIHNj
X3N0ZXBzXzM4LCBzY19uYW1lc18zNywgc2NfdG9rc18zNiwgb3B0ck9wbmQsIGlzX3BhcnNlZCwg
QmdMX3NjX2Rlcml2emQydHJlZXN6YTJfNDd6NzAsIEJnTF9zY19uYnpkMmRlcml2emQydHJlZXN6
YTJfNDh6YTJdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgIH0K
KyAgICB9OworICAgIEJnTF9wYXJzZXpkMnplM3BhcnNlZHpmM3pjMiA9IGZ1bmN0aW9uKHBhcnNl
LCBudCwgaSwgaikgeworICAgICAgICB2YXIgaXNfcGFyc2VkOworICAgICAgICB2YXIgc3RhdGVz
OworICAgICAgICB2YXIgZW5kZXJzOworICAgICAgICB2YXIgbnRzOworICAgICAgICByZXR1cm4g
KChudHMgPSAocGFyc2VbKDApXSkpLCAoZW5kZXJzID0gKHBhcnNlWygyKV0pKSwgKHN0YXRlcyA9
IChwYXJzZVsoNyldKSksIChpc19wYXJzZWQgPSAocGFyc2VbKDgpXSkpLCAoaXNfcGFyc2VkKG50
LCBpLCBqLCBudHMsIGVuZGVycywgc3RhdGVzKSkpOworICAgIH07CisgICAgQmdMX3BhcnNlemQy
emUzdHJlZXN6MzEgPSBmdW5jdGlvbihwYXJzZSwgbnQsIGksIGopIHsKKyAgICAgICAgdmFyIEJn
TF9zY19kZXJpdnpkMnRyZWVzemEyXzEzMno3MDsKKyAgICAgICAgdmFyIHN0YXRlczsKKyAgICAg
ICAgdmFyIHRva3M7CisgICAgICAgIHZhciBuYW1lczsKKyAgICAgICAgdmFyIHN0ZXBzOworICAg
ICAgICB2YXIgZW5kZXJzOworICAgICAgICB2YXIgbnRzOworICAgICAgICByZXR1cm4gKChudHMg
PSAocGFyc2VbKDApXSkpLCAoZW5kZXJzID0gKHBhcnNlWygyKV0pKSwgKHN0ZXBzID0gKHBhcnNl
Wyg0KV0pKSwgKG5hbWVzID0gKHBhcnNlWyg1KV0pKSwgKHRva3MgPSAocGFyc2VbKDYpXSkpLCAo
c3RhdGVzID0gKHBhcnNlWyg3KV0pKSwgKEJnTF9zY19kZXJpdnpkMnRyZWVzemEyXzEzMno3MCA9
IChwYXJzZVsoOSldKSksIChCZ0xfc2NfZGVyaXZ6ZDJ0cmVlc3phMl8xMzJ6NzAobnQsIGksIGos
IG50cywgZW5kZXJzLCBzdGVwcywgbmFtZXMsIHRva3MsIHN0YXRlcykpKTsKKyAgICB9OworICAg
IEJnTF9wYXJzZXpkMnplM25iemQydHJlZXN6ZTMgPSBmdW5jdGlvbihwYXJzZSwgbnQsIGksIGop
IHsKKyAgICAgICAgdmFyIEJnTF9zY19uYnpkMmRlcml2emQydHJlZXN6YTJfMTMzemEyOworICAg
ICAgICB2YXIgc3RhdGVzOworICAgICAgICB2YXIgdG9rczsKKyAgICAgICAgdmFyIHN0ZXBzOwor
ICAgICAgICB2YXIgZW5kZXJzOworICAgICAgICB2YXIgbnRzOworICAgICAgICByZXR1cm4gKChu
dHMgPSAocGFyc2VbKDApXSkpLCAoZW5kZXJzID0gKHBhcnNlWygyKV0pKSwgKHN0ZXBzID0gKHBh
cnNlWyg0KV0pKSwgKHRva3MgPSAocGFyc2VbKDYpXSkpLCAoc3RhdGVzID0gKHBhcnNlWyg3KV0p
KSwgKEJnTF9zY19uYnpkMmRlcml2emQydHJlZXN6YTJfMTMzemEyID0gKHBhcnNlWygxMCldKSks
IChCZ0xfc2NfbmJ6ZDJkZXJpdnpkMnRyZWVzemEyXzEzM3phMihudCwgaSwgaiwgbnRzLCBlbmRl
cnMsIHN0ZXBzLCB0b2tzLCBzdGF0ZXMpKSk7CisgICAgfTsKKyAgICB0ZXN0ID0gZnVuY3Rpb24o
aykgeworICAgICAgICB2YXIgeDsKKyAgICAgICAgdmFyIHA7CisgICAgICAgIHJldHVybiAoKHAg
PSAoQmdMX21ha2V6ZDJwYXJzZXJ6ZDIoY29uc3RfZWFybGV5LCBmdW5jdGlvbihsKSB7CisgICAg
ICAgICAgICB2YXIgc2NfeF8xMzQ7CisgICAgICAgICAgICB2YXIgdGFpbDExMzQ7CisgICAgICAg
ICAgICB2YXIgTDExMzA7CisgICAgICAgICAgICB2YXIgZmFsc2VIZWFkMTEzMzsKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAoZmFsc2VIZWFkMTEzMyA9IChuZXcgc2NfUGFpcihudWxs
LCBudWxsKSkpOworICAgICAgICAgICAgICAgICh0YWlsMTEzNCA9IGZhbHNlSGVhZDExMzMpOwor
ICAgICAgICAgICAgICAgIChMMTEzMCA9IGwpOworICAgICAgICAgICAgICAgIHdoaWxlICghKEwx
MTMwID09PSBudWxsKSkgeworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAodGFpbDExMzQuY2RyID0gKG5ldyBzY19QYWlyKCgoc2NfeF8xMzQgPSAoTDExMzAu
Y2FyKSksIChzY19saXN0KHNjX3hfMTM0LCBzY194XzEzNCkpKSwgbnVsbCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICh0YWlsMTEzNCA9ICh0YWlsMTEzNC5jZHIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIChMMTEzMCA9IChMMTEzMC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gKGZhbHNlSGVhZDEx
MzMuY2RyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkpKSwgKHggPSAocCgoc2NfdmVjdG9y
Mmxpc3QoKHNjX21ha2VWZWN0b3IoaywgIlx1MUU5Q2EiKSkpKSkpKSwgKHNjX2xlbmd0aCgoQmdM
X3BhcnNlemQyemUzdHJlZXN6MzEoeCwgIlx1MUU5Q3MiLCAoMCksIGspKSkpKTsKKyAgICB9Owor
ICAgIEJnTF9lYXJsZXl6ZDJiZW5jaG1hcmt6ZDIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFy
IGFyZ3MgPSBudWxsOworICAgICAgICBmb3IgKHZhciBzY190bXAgPSBhcmd1bWVudHMubGVuZ3Ro
IC0gMTsgc2NfdG1wID49IDA7IHNjX3RtcC0tKSB7CisgICAgICAgICAgICBhcmdzID0gc2NfY29u
cyhhcmd1bWVudHNbc2NfdG1wXSwgYXJncyk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIGs7Cisg
ICAgICAgIHJldHVybiAoKGsgPSAoKGFyZ3MgPT09IG51bGwpPyg3KTooYXJncy5jYXIpKSksIChC
Z0xfcnVuemQyYmVuY2htYXJremQyKCJlYXJsZXkiLCAoMSksIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgcmV0dXJuICh0ZXN0KGspKTsKKyAgICAgICAgfSwgZnVuY3Rpb24ocmVzdWx0KSB7Cisg
ICAgICAgICAgICByZXR1cm4gKChzY19kaXNwbGF5KHJlc3VsdCkpLCAoc2NfbmV3bGluZSgpKSwg
cmVzdWx0ID09IDEzMik7CisgICAgICAgIH0pKSk7CisgICAgfTsKK30KKworCisvKioqKioqKioq
KioqKiBFTkQgT0YgR0VORVJBVEVEIENPREUgKioqKioqKioqKioqKi8KKy8vIEludm9rZSB0aGlz
IGZ1bmN0aW9uIHRvIHJ1biBhIGJlbmNobWFyay4KKy8vIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBh
IHN0cmluZyBpZGVudGlmeWluZyB0aGUgYmVuY2htYXJrLgorLy8gVGhlIHNlY29uZCBhcmd1bWVu
dCBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJ1biB0aGUgYmVuY2htYXJrLgorLy8gVGhlIHRo
aXJkIGFyZ3VtZW50IGlzIGEgZnVuY3Rpb24gdGhhdCBydW5zIHRoZSBiZW5jaG1hcmsuCisvLyBU
aGUgZm91cnRoIGFyZ3VtZW50IGlzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCB3YXJucyBpZiB0aGUg
cmVzdWx0CisvLyByZXR1cm5lZCBieSB0aGUgYmVuY2htYXJrIGlzIGluY29ycmVjdC4KKy8vCisv
LyBFeGFtcGxlOgorLy8gUnVuQmVuY2htYXJrKCJuZXcgQXJyYXkoKSIsCisvLyAgICAgICAgICAg
ICAgMSwKKy8vICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IG5ldyBBcnJheSgxMDAwMDAwKTsg
fQorLy8gICAgICAgICAgICAgIGZ1bmN0aW9uICh2KSB7CisvLyAgICAgICAgICAgICAgICByZXR1
cm4gKHYgaW5zdGFuY2VvZiBBcnJheSkgJiYgKHYubGVuZ3RoID09IDEwMDAwMDApOworLy8gICAg
ICAgICAgICAgIH0pOworCitTQ19ERUZBVUxUX09VVCA9IG5ldyBzY19HZW5lcmljT3V0cHV0UG9y
dChmdW5jdGlvbihzKSB7fSk7CitTQ19FUlJPUl9PVVQgPSBTQ19ERUZBVUxUX09VVDsKKworZnVu
Y3Rpb24gUnVuQmVuY2htYXJrKG5hbWUsIGNvdW50LCBydW4sIHdhcm4pIHsKKyAgZm9yICh2YXIg
biA9IDA7IG4gPCBjb3VudDsgKytuKSB7CisgICAgcmVzdWx0ID0gcnVuKCk7CisgICAgaWYgKCF3
YXJuKHJlc3VsdCkpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcigiRWFybGV5IG9yIEJveWVyIGRp
ZCBpbmNvcnJlY3QgbnVtYmVyIG9mIHJld3JpdGVzIik7CisgICAgfQorICB9Cit9CisKK3ZhciBC
Z0xfcnVuemQyYmVuY2htYXJremQyID0gUnVuQmVuY2htYXJrOworCitmb3IgKHZhciBpID0gMDsg
aSA8IDQ7ICsraSkgeworICBCZ0xfZWFybGV5emQyYmVuY2htYXJremQyKCk7CisgIEJnTF9uYm95
ZXJ6ZDJiZW5jaG1hcmt6ZDIoKTsKK30KKworfSBjYXRjaCAoZSkgeworICAgIHByaW50KCJKU0Mg
RVhDRVBUSU9OIEZVWlo6IENhdWdodCBleGNlcHRpb246ICIgKyBlKTsKK30KKwpJbmRleDogVG9v
bHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMJKHJldmlzaW9uIDE3MTEwNikKKysrIFRv
b2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzcsNiArMjM3LDcgQEAgaWYgKCRydW5KU0NTdHJlc3MpIHsKICAgICAgICAgIi91c3IvYmluL2Vu
diIsICJydWJ5IiwgIlRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMiLAogICAgICAg
ICAiLWoiLCBqc2NQYXRoKCRwcm9kdWN0RGlyKSwgIi1vIiwgJGpzY1N0cmVzc1Jlc3VsdHNEaXIs
CiAgICAgICAgICJQZXJmb3JtYW5jZVRlc3RzL1N1blNwaWRlci90ZXN0cy9zdW5zcGlkZXItMS4w
IiwKKyAgICAgICAgIlNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9leGNlcHRpb24tZnV6ei55
YW1sIiwKICAgICAgICAgIlBlcmZvcm1hbmNlVGVzdHMvU3VuU3BpZGVyL25vLWFyY2hpdGVjdHVy
ZS1zcGVjaWZpYy1vcHRpbWl6YXRpb25zLnlhbWwiLAogICAgICAgICAiUGVyZm9ybWFuY2VUZXN0
cy9TdW5TcGlkZXIvdGVzdHMvdjgtdjYiLAogICAgICAgICAiU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL21vemlsbGEvbW96aWxsYS10ZXN0cy55YW1sIiwKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
cnVuLWpzYy1zdHJlc3MtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tanNj
LXN0cmVzcy10ZXN0cwkocmV2aXNpb24gMTcxMTA2KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tanNj
LXN0cmVzcy10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtNzMzLDYgKzczMywxMCBAQCBkZWYgcnVu
UHJvZmlsZXIKICAgICBlbmQKIGVuZAogCitkZWYgcnVuRXhjZXB0aW9uRnV6egorICAgIGFkZFJ1
bkNvbW1hbmQoImV4Y2VwdGlvbi1mdXp6IiwgWyJwZXJsIiwgKEhFTFBFUlNfUEFUSCArICJqcy1l
eGNlcHRpb24tZnV6eiIpLnRvX3MsIHBhdGhUb1ZNLnRvX3MsICRiZW5jaG1hcmsudG9fc10sIHNp
bGVudE91dHB1dEhhbmRsZXIsIHNpbXBsZUVycm9ySGFuZGxlcikKK2VuZAorCiBkZWYgcnVuTGF5
b3V0VGVzdChraW5kLCAqb3B0aW9ucykKICAgICByYWlzZSB1bmxlc3MgJGJlbmNobWFyay50b19z
ID1+IC9cLmpzJC8KICAgICB0ZXN0TmFtZSA9ICR+LnByZV9tYXRjaApJbmRleDogVG9vbHMvU2Ny
aXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9qcy1leGNlcHRpb24tZnV6ego9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxwZXJzL2pzLWV4Y2VwdGlvbi1m
dXp6CShyZXZpc2lvbiAwKQorKysgVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVy
cy9qcy1leGNlcHRpb24tZnV6egkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyMyBAQAorIyEv
dXNyL2Jpbi9wZXJsCisKKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIwor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCit1c2Ugc3Ry
aWN0OwordXNlIEZpbmRCaW47Cit1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgcGFzc190aHJv
dWdoKTsKK3VzZSBQT1NJWDsKK3VzZSBTdHJpbmc6OlNoZWxsUXVvdGU7CisKKyMgV2UgZmlyc3Qg
d2FudCB0byBydW4gdGhlIHRlc3Qgb25jZSB0byBkZXRlcm1pbmUgd2hhdCB0aGUgbnVtYmVyIG9m
IGVuY291bnRlcmVkCisjIGNoZWNrcyBpcy4gVGhlbiB3ZSB3YW50IHRvIHJ1biBpdCBhZ2FpbiBz
b21lIG51bWJlciBvZiB0aW1lcyB3aXRoIHJhbmRvbSBjaGVjaworIyBhbW91bnRzLiBUaGUgdGVz
dCBpcyBzdWNjZXNzZnVsIGlmIGFmdGVyIHByaW50aW5nIGEgbWVzc2FnZSB0aGF0IHdlJ3JlCisj
IGludGVuZGluZyB0byB0aHJvdyB0aGUgZnV6eiBleGNlcHRpb24sIGl0IHByaW50cyBhbm90aGVy
IG1lc3NhZ2Ugc2F5aW5nIHRoYXQgaXQKKyMgY2F1Z2h0IHRoZSBleGNlcHRpb24uCisKK215ICRy
ZXBlYXQgPSAxMDA7CitteSAkc2VlZCA9IHRpbWUoKTsKK215ICR2ZXJib3NlID0gMDsKKworR2V0
T3B0aW9ucygKKyAgICAncmVwZWF0PXMnID0+IFwkcmVwZWF0LAorICAgICdzZWVkPXMnID0+IFwk
c2VlZCwKKyAgICAndmVyYm9zZScgPT4gXCR2ZXJib3NlCispOworCitteSAkY29tbWFuZFN0cmlu
ZyA9IHNoZWxsX3F1b3RlIEBBUkdWOworCitteSAkY2hlY2tDb3VudDsKKworc3ViIGZhaWwgewor
ICAgIG15ICRjb250ZXh0ID0gc2hpZnQ7CisgICAgZmx1c2ggU1RET1VUOworICAgIGZsdXNoIFNU
REVSUjsKKyAgICBkaWUgIkZhaWx1cmUgZm9yIGNvbW1hbmQgJGNvbW1hbmRTdHJpbmcgd2l0aCBz
ZWVkICRzZWVkLCByZXBlYXQgJHJlcGVhdDogJGNvbnRleHQiOworfQorCitvcGVuIChteSAkdGVz
dElucHV0LCAiJGNvbW1hbmRTdHJpbmcgLS1lbmFibGVFeGNlcHRpb25GdXp6PXRydWUgfCIpIG9y
IGZhaWwoIkNhbm5vdCBleGVjdXRlIGluaXRpYWwgY29tbWFuZCB3aGVuIGdldHRpbmcgY2hlY2sg
Y291bnQiKTsKK3doaWxlIChteSAkaW5wdXRMaW5lID0gPCR0ZXN0SW5wdXQ+KSB7CisgICAgY2hv
bXAoJGlucHV0TGluZSk7CisgICAgaWYgKCRpbnB1dExpbmUgPX4gL15KU0MgRVhDRVBUSU9OIEZV
Wlo6LykgeworICAgICAgICBpZiAoJCcgPX4gL2VuY291bnRlcmVkIChbMC05XSspIGNoZWNrc1wu
LykgeworICAgICAgICAgICAgJGNoZWNrQ291bnQgPSAkMTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICAgIHByaW50ICJjaGVja0NvdW50OiAkaW5wdXRMaW5lXG4iOworICAgIH0KK30K
K2Nsb3NlKCR0ZXN0SW5wdXQpOworCitpZiAoJHZlcmJvc2UpIHsKKyAgICBwcmludCAiQ2hlY2sg
Y291bnQ6ICRjaGVja0NvdW50XG4iOworICAgIHByaW50ICJTZWVkOiAkc2VlZFxuIjsKK30KKwor
c3JhbmQoJHNlZWQpOworCitmb3IgKG15ICRpdGVyYXRpb24gPSAwOyAkaXRlcmF0aW9uIDwgJHJl
cGVhdDsgKyskaXRlcmF0aW9uKSB7CisgICAgbXkgJHRhcmdldCA9IGludChyYW5kKCkgKiAkY2hl
Y2tDb3VudCk7CisgICAgaWYgKCR2ZXJib3NlKSB7CisgICAgICAgIHByaW50ICJpdGVyYXRpb24o
JGl0ZXJhdGlvbikgdGFyZ2V0KCR0YXJnZXQpOiBSdW5uaW5nLlxuIjsKKyAgICB9CisgICAgb3Bl
biAoJHRlc3RJbnB1dCwgIiRjb21tYW5kU3RyaW5nIC0tZW5hYmxlRXhjZXB0aW9uRnV6ej10cnVl
IC0tZmlyZUV4Y2VwdGlvbkZ1enpBdD0kdGFyZ2V0IHwiKSBvciBmYWlsKCJDYW5ub3QgZXhlY3V0
ZSBjb21tYW5kIG9uIGl0ZXJhdGlvbiAkaXRlcmF0aW9uIik7CisgICAgbXkgJHN0YXRlID0gIndh
aXRpbmciOworICAgIHdoaWxlIChteSAkaW5wdXRMaW5lID0gPCR0ZXN0SW5wdXQ+KSB7CisgICAg
ICAgIGNob21wKCRpbnB1dExpbmUpOworICAgICAgICBpZiAoJGlucHV0TGluZSA9fiAvXkpTQyBF
WENFUFRJT04gRlVaWjovKSB7CisgICAgICAgICAgICBpZiAoJCcgPX4gL1Rocm93aW5nIGZ1enog
ZXhjZXB0aW9uLykgeworICAgICAgICAgICAgICAgIGlmICgkdmVyYm9zZSkgeworICAgICAgICAg
ICAgICAgICAgICBwcmludCAiaXRlcmF0aW9uKCRpdGVyYXRpb24pIHRhcmdldCgkdGFyZ2V0KTog
VGhyZXcgZnV6eiBleGNlcHRpb24uXG4iOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBpZiAoJHN0YXRlIGVxICJ3YWl0aW5nIikgeworICAgICAgICAgICAgICAgICAgICAkc3Rh
dGUgPSAidGhyb3duIjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBmYWlsKCJVbmV4cGVjdGVkICRpbnB1dExpbmUgd2hpbGUgaW4gc3RhdGUgJHN0YXRlIGZv
ciB0YXJnZXQgJHRhcmdldCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxz
aWYgKCQnID1+IC9DYXVnaHQgZXhjZXB0aW9uLykgeworICAgICAgICAgICAgICAgIGlmICgkdmVy
Ym9zZSkgeworICAgICAgICAgICAgICAgICAgICBwcmludCAiaXRlcmF0aW9uKCRpdGVyYXRpb24p
IHRhcmdldCgkdGFyZ2V0KTogQ2F1Z2h0IGZ1enogZXhjZXB0aW9uLlxuIjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCRzdGF0ZSBlcSAidGhyb3duIikgeworICAgICAg
ICAgICAgICAgICAgICAkc3RhdGUgPSAid2FpdGluZyI7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbCgiVW5leHBlY3RlZCAkaW5wdXRMaW5lIHdoaWxl
IGluIHN0YXRlICRzdGF0ZSBmb3IgdGFyZ2V0ICR0YXJnZXQiKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwcmludCAiaXRl
cmF0aW9uKCRpdGVyYXRpb24pIHRhcmdldCgkdGFyZ2V0KTogJGlucHV0TGluZVxuIjsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBpZiAoJHN0YXRlIG5lICJ3YWl0aW5nIikgeworICAgICAgICBmYWls
KCJVbmV4cGVjdGVkIHN0YXRlICRzdGF0ZSBhdCBlbmQgZm9yIHRhcmdldCAkdGFyZ2V0Iik7Cisg
ICAgfQorICAgIGNsb3NlKCR0ZXN0SW5wdXQpOworICAgIGlmICgkPyAhPSAwKSB7CisgICAgICAg
IGZhaWwoIlVuZXhwZWN0ZWQgZXhpdCBzdGF0dXMgJD8gZm9yIHRhcmdldCAkdGFyZ2V0Iik7Cisg
ICAgfQorfQorCitpZiAoJHZlcmJvc2UpIHsKKyAgICBwcmludCAiU3VjY2VzcyFcbiI7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234974</attachid>
            <date>2014-07-15 19:31:10 -0700</date>
            <delta_ts>2014-07-16 10:52:05 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>246249</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcxMTMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE0LTA3LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TmVlZCBhYmlsaXR5IHRvIGZ1enogZXhjZXB0aW9uIHRocm93aW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ5NDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZHMgdGhlIGFiaWxpdHkg
dG8gaW5zdHJ1bWVudCBleGNlcHRpb24gY2hlY2tzLCBhbmQgdG8gZm9yY2Ugc29tZSByYW5kb20K
KyAgICAgICAgZXhjZXB0aW9uIGNoZWNrIHRvIGFydGlmaWNpYWxseSB0aHJvdyBhbiBleGNlcHRp
b24uIEFsc28gYWRkcyBuZXcgdGVzdHMgdGhhdAorICAgICAgICBhcmUgc3VpdGFibGUgZm9yIHRl
c3RpbmcgdGhpcy4gTm90ZSB0aGF0IHRoaXMgaXMgY2xvc2VseSB0aWVkIHRvIHRoZSBUb29scwor
ICAgICAgICBkaXJlY3RvcnkgY2hhbmdlcyB0aGF0IGFyZSBhbHNvIHBhcnQgb2YgdGhpcyBjaGFu
Z2VzZXQuCisgICAgICAgIAorICAgICAgICBUaGlzIGFsc28gZml4ZXMgYW4gYWN0aXZhdGlvbiB0
ZWFyLW9mZiBidWcgdGhhdCBhcmlzZXMgaWYgd2UgZXZlciB0aHJvdyBhbgorICAgICAgICBleGNl
cHRpb24gZnJvbSBvcGVyYXRpb25PcHRpbWl6ZSwgb3IgaWYgZHVlIHRvIHNvbWUgb3RoZXIgYnVn
IGl0J3Mgb25seSBkdWUKKyAgICAgICAgdG8gdGhlIG9wZXJhdGlvbk9wdGltaXplIGV4Y2VwdGlv
biBjaGVjayB0aGF0IHdlIHJlYWxpemUgdGhhdCB0aGVyZSBpcyBhbgorICAgICAgICBleGNlcHRp
b24gdG8gYmUgdGhyb3duLgorCisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmZhc3RFeGNlcHRpb25DaGVjayk6CisgICAgICAg
ICogZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjYWxsQ2hl
Y2spOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjYWxsRXhjZXB0aW9uRnV6eik6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEV4Y2VwdGlvbkNoZWNrKToKKyAgICAgICAg
KiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
ZW1pdEV4Y2VwdGlvbkNoZWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQv
SklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpudW1iZXJPZkV4Y2Vw
dGlvbkZ1enpDaGVja3MpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICoganNjLmNwcDoKKyAgICAgICAgKGpzY21haW4pOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmg6CisgICAgICAgICogdGVz
dHMvZXhjZXB0aW9uLWZ1enoueWFtbDogQWRkZWQuCisgICAgICAgICogdGVzdHMvZXhjZXB0aW9u
RnV6ejogQWRkZWQuCisgICAgICAgICogdGVzdHMvZXhjZXB0aW9uRnV6ei8zZC1jdWJlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9leGNlcHRpb25GdXp6L2RhdGUtZm9ybWF0LXhwYXJiLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9leGNlcHRpb25GdXp6L2VhcmxleS1ib3llci5qczog
QWRkZWQuCisKIDIwMTQtMDctMTUgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJlZHVjZSB0aGUgb3ZlcmhlYWQgb2YgdXBkYXRpbmcgdGhlIEFzc2Vt
YmxlckJ1ZmZlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE3MTEwNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjczLDYg
KzEyNzMsOSBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAg
ICBpZiAoIXZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPnNhdmUob3B0aW9ucy5tX3Byb2ZpbGVy
T3V0cHV0LnV0ZjgoKS5kYXRhKCkpKQogICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
Y291bGQgbm90IHNhdmUgcHJvZmlsZXIgb3V0cHV0LlxuIik7CiAgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGlmIChPcHRpb25zOjplbmFibGVFeGNlcHRpb25GdXp6KCkpCisgICAgICAgICAg
ICBwcmludGYoIkpTQyBFWENFUFRJT04gRlVaWjogZW5jb3VudGVyZWQgJXUgY2hlY2tzLlxuIiwg
bnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKCkpOwogICAgIH0KICAgICAKICAgICByZXR1cm4g
cmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aAkocmV2aXNpb24gMTcxMTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNiArMTg2LDcgQEAgcHVibGljOgogICAg
IC8vIEFkZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdpdGggYSBmYXN0IGV4Y2VwdGlvbiBj
aGVjayB0aGF0IHRlc3RzIGlmIHRoZSByZXR1cm4gdmFsdWUgaXMgemVyby4KICAgICB2b2lkIGZh
c3RFeGNlcHRpb25DaGVjaygpCiAgICAgeworICAgICAgICBjYWxsRXhjZXB0aW9uRnV6eigpOwog
ICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBlbmQoYnJhbmNoVGVzdFB0cihaZXJvLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUikpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAx
NzExMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRv
cnkuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU19KSVRPcGVyYXRpb25fRUosIGZ1bmN0aW9uVHlwZShp
bnRQdHIsIGludFB0ciwgaW50NjQpKSBcCiAgICAgbWFjcm8oU19KSVRPcGVyYXRpb25fRUpKLCBm
dW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludDY0LCBpbnQ2NCkpIFwKICAgICBtYWNybyhT
X0pJVE9wZXJhdGlvbl9KLCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnQ2NCkpIFwKKyAgICBtYWNy
byhWX0pJVE9wZXJhdGlvbiwgZnVuY3Rpb25UeXBlKHZvaWRUeXBlKSkgXAogICAgIG1hY3JvKFZf
SklUT3BlcmF0aW9uX0VKSkosIGZ1bmN0aW9uVHlwZSh2b2lkVHlwZSwgaW50UHRyLCBpbnQ2NCwg
aW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKFZfSklUT3BlcmF0aW9uX0VPWkQsIGZ1bmN0aW9u
VHlwZSh2b2lkVHlwZSwgaW50UHRyLCBpbnRQdHIsIGludDMyLCBkb3VibGVUeXBlKSkgXAogICAg
IG1hY3JvKFZfSklUT3BlcmF0aW9uX0VPWkosIGZ1bmN0aW9uVHlwZSh2b2lkVHlwZSwgaW50UHRy
LCBpbnRQdHIsIGludDMyLCBpbnQ2NCkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNzExMDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTc2MCw2ICs1NzYwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG1vZGUgPT0gTm9F
eGNlcHRpb25zKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAgICAgICAgaWYgKE9w
dGlvbnM6OmVuYWJsZUV4Y2VwdGlvbkZ1enooKSkKKyAgICAgICAgICAgIG1fb3V0LmNhbGwobV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enopKTsKKyAgICAgICAgCiAgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRXhjZXB0
aW9uIGNoZWNrIGNvbnRpbnVhdGlvbiIpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmJyYW5j
aCgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAkocmV2aXNpb24gMTcxMTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU3LDcgKzQ1Nyw3
IEBAIHN0YXRpYyBib29sIHVud2luZENhbGxGcmFtZShTdGFja1Zpc2l0b3IKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIXZpc2l0b3ItPmlzSW5saW5lZEZyYW1lKCkpOwogI2VuZGlmCiAgICAgICAg
IGFjdGl2YXRpb24gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFjdGl2YXRpb24oKTsKLSAgICAgICAg
aWYgKGFjdGl2YXRpb24pCisgICAgICAgIGlmIChhY3RpdmF0aW9uICYmIGFjdGl2YXRpb24uaXND
ZWxsKCkpCiAgICAgICAgICAgICBqc0Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvbiktPnRl
YXJPZmYoKnNjb3BlLT52bSgpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDE3MTEwNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkpJVE9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
MTk1LDYgKzE5NiwzMyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0QXJndW1lbnRD
CiB9CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogCit2b2lkIEFzc2VtYmx5SGVscGVyczo6
Y2FsbEV4Y2VwdGlvbkZ1enooKQoreworICAgIGlmICghT3B0aW9uczo6ZW5hYmxlRXhjZXB0aW9u
RnV6eigpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoc3RhY2tBbGlnbm1lbnRCeXRl
cygpID49IHNpemVvZih2b2lkKikgKiAyKTsKKyAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKHN0YWNr
QWxpZ25tZW50Qnl0ZXMoKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBwb2tlKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSLCAwKTsKKyAgICBwb2tlKEdQUkluZm86OnJldHVyblZhbHVlR1BS
MiwgMSk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0
aW9uRXhjZXB0aW9uRnV6eikpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwor
ICAgIGNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKKyAgICBwZWVrKEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCAwKTsKKyAgICBwZWVrKEdQUkluZm86OnJldHVyblZhbHVl
R1BSMiwgMSk7CisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkp
LCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Cit9CisKK0Fzc2VtYmx5SGVscGVyczo6SnVtcCBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRFeGNlcHRpb25DaGVjayhFeGNlcHRpb25DaGVja0tpbmQga2luZCkK
K3sKKyAgICBjYWxsRXhjZXB0aW9uRnV6eigpOworICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChraW5kID09IE5vcm1hbEV4Y2VwdGlvbkNoZWNrID8gTm9u
WmVybyA6IFplcm8sIEFic29sdXRlQWRkcmVzcyh2bSgpLT5hZGRyZXNzT2ZFeGNlcHRpb24oKSkp
OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICByZXR1cm4gYnJhbmNoMzIoa2luZCA9PSBO
b3JtYWxFeGNlcHRpb25DaGVjayA/IE5vdEVxdWFsIDogRXF1YWwsIEFic29sdXRlQWRkcmVzcyhy
ZWludGVycHJldF9jYXN0PGNoYXIqPih2bSgpLT5hZGRyZXNzT2ZFeGNlcHRpb24oKSkgKyBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpFbXB0eVZhbHVlVGFnKSk7CisjZW5kaWYKK30KKwogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVt
aXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhBc3NlbWJseUhlbHBlcnMmIGppdCwgVHJ1c3Rl
ZEltbVB0ciBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCkKIHsKICAgICBjb25zdCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0IFN0cnVjdHVyZSo+KHN0cnVjdHVy
ZS5tX3ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAkocmV2aXNpb24gMTcxMTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDgxLDE1ICs0ODEsMTAgQEAgcHVi
bGljOgogICAgIH0KICNlbmRpZgogICAgIAorICAgIHZvaWQgY2FsbEV4Y2VwdGlvbkZ1enooKTsK
KyAgICAKICAgICBlbnVtIEV4Y2VwdGlvbkNoZWNrS2luZCB7IE5vcm1hbEV4Y2VwdGlvbkNoZWNr
LCBJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrIH07Ci0gICAgSnVtcCBlbWl0RXhjZXB0aW9uQ2hlY2so
RXhjZXB0aW9uQ2hlY2tLaW5kIGtpbmQgPSBOb3JtYWxFeGNlcHRpb25DaGVjaykKLSAgICB7Ci0j
aWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChraW5kID09IE5v
cm1hbEV4Y2VwdGlvbkNoZWNrID8gTm9uWmVybyA6IFplcm8sIEFic29sdXRlQWRkcmVzcyh2bSgp
LT5hZGRyZXNzT2ZFeGNlcHRpb24oKSkpOwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKGtpbmQgPT0gTm9ybWFsRXhjZXB0aW9uQ2hlY2sgPyBOb3RFcXVh
bCA6IEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odm0oKS0+
YWRkcmVzc09mRXhjZXB0aW9uKCkpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnRhZykpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOwotI2VuZGlmCi0g
ICAgfQorICAgIEp1bXAgZW1pdEV4Y2VwdGlvbkNoZWNrKEV4Y2VwdGlvbkNoZWNrS2luZCBraW5k
ID0gTm9ybWFsRXhjZXB0aW9uQ2hlY2spOwogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJT
KQogICAgIHN0YXRpYyB2b2lkIGVtaXRDb3VudChNYWNyb0Fzc2VtYmxlciYgaml0LCBBYnN0cmFj
dFNhbXBsaW5nQ291bnRlciYgY291bnRlciwgaW50MzJfdCBpbmNyZW1lbnQgPSAxKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTcxMTA2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNyArMTY3LDEw
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgICAgICBB
YnNvbHV0ZUFkZHJlc3MobV9jb21waWxhdGlvbi0+ZXhlY3V0aW9uQ291bnRlckZvcihQcm9maWxl
cjo6T3JpZ2luU3RhY2soUHJvZmlsZXI6Ok9yaWdpbigKICAgICAgICAgICAgICAgICAgICAgbV9j
b21waWxhdGlvbi0+Ynl0ZWNvZGVzKCksIG1fYnl0ZWNvZGVPZmZzZXQpKSktPmFkZHJlc3MoKSkp
OwogICAgICAgICB9Ci0KKyAgICAgICAgCisgICAgICAgIGlmIChPcHRpb25zOjplYWdlcmx5VXBk
YXRlVG9wQ2FsbEZyYW1lKCkpCisgICAgICAgICAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAg
ICAgICAgCiAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICAgICAgREVGSU5FX1NMT1df
T1AoZGVsX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoaW4pCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE3MTEwNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc2Miw4ICs3NjIsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChJbnN0cnVjdGlvbiog
CiAKIHZvaWQgSklUOjplbWl0X29wX2VudGVyKEluc3RydWN0aW9uKikKIHsKLSAgICBlbWl0RW50
ZXJPcHRpbWl6YXRpb25DaGVjaygpOwotICAgIAogICAgIC8vIEV2ZW4gdGhvdWdoIENUSSBkb2Vz
bid0IHVzZSB0aGVtLCB3ZSBpbml0aWFsaXplIG91ciBjb25zdGFudAogICAgIC8vIHJlZ2lzdGVy
cyB0byB6YXAgc3RhbGUgcG9pbnRlcnMsIHRvIGF2b2lkIHVubmVjZXNzYXJpbHkgcHJvbG9uZ2lu
ZwogICAgIC8vIG9iamVjdCBsaWZldGltZSBhbmQgaW5jcmVhc2luZyBHQyBwcmVzc3VyZS4KQEAg
LTc3Miw2ICs3NzAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihJbnN0cnVjdGlvbiopCiAg
ICAgICAgIGVtaXRJbml0UmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaikub2Zmc2V0
KCkpOwogCiAgICAgZW1pdFdyaXRlQmFycmllcihtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCkpOworCisgICAgZW1pdEVudGVyT3B0aW1pemF0aW9uQ2hlY2soKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfY3JlYXRlX2FjdGl2YXRpb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMTcxMTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDE0IEBACiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIlJlcGF0Y2guaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVy
LmgiCisjaW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFT
TS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAorc3RhdGljIHVuc2lnbmVkIHNfbnVtYmVyT2ZFeGNl
cHRpb25GdXp6Q2hlY2tzOwordW5zaWduZWQgbnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKCkg
eyByZXR1cm4gc19udW1iZXJPZkV4Y2VwdGlvbkZ1enpDaGVja3M7IH0KKwogZXh0ZXJuICJDIiB7
CiAKICNpZiBDT01QSUxFUihNU1ZDKQpAQCAtMTAyOCw3ICsxMDMyLDcgQEAgU2xvd1BhdGhSZXR1
cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJH
Qyh2bS5oZWFwKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOwotCisgICAgCiAgICAgaWYgKGJ5dGVjb2RlSW5kZXgpIHsKICAgICAgICAgLy8gSWYg
d2UncmUgYXR0ZW1wdGluZyB0byBPU1IgZnJvbSBhIGxvb3AsIGFzc3VtZSB0aGF0IHRoaXMgc2hv
dWxkIGJlCiAgICAgICAgIC8vIHNlcGFyYXRlbHkgb3B0aW1pemVkLgpAQCAtMTc5OSw2ICsxODAz
LDI2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25WTUhhbmRsZUV4Y2UKICAgICBnZW5l
cmljVW53aW5kKHZtLCBleGVjLCB2bS0+ZXhjZXB0aW9uKCkpOwogfQogCit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eigpCit7CisgICAgQVNTRVJUKE9wdGlvbnM6OmVu
YWJsZUV4Y2VwdGlvbkZ1enooKSk7CisKKyAgICAvLyBUaGlzIHByb2JhYmx5ICJqdXN0IHdvcmtz
IiBmb3IgR0NDIGFsc28sIGJ1dCBJIGhhdmVuJ3QgdHJpZWQuCisjaWYgQ09NUElMRVIoQ0xBTkcp
CisgICAgRXhlY1N0YXRlKiBleGVjID0gc3RhdGljX2Nhc3Q8RXhlY1N0YXRlKj4oX19idWlsdGlu
X2ZyYW1lX2FkZHJlc3MoMSkpOworICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyhleGVjLT52
bSgpLmhlYXApOworICAgIAorICAgIHNfbnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKys7Cisg
ICAgCisgICAgdW5zaWduZWQgZmlyZVRhcmdldCA9IE9wdGlvbnM6OmZpcmVFeGNlcHRpb25GdXp6
QXQoKTsKKyAgICBpZiAoZmlyZVRhcmdldCA9PSBzX251bWJlck9mRXhjZXB0aW9uRnV6ekNoZWNr
cykgeworICAgICAgICBwcmludGYoIkpTQyBFWENFUFRJT04gRlVaWjogVGhyb3dpbmcgZnV6eiBl
eGNlcHRpb24gd2l0aCBjYWxsIGZyYW1lICVwIGFuZCByZXR1cm4gYWRkcmVzcyAlcC5cbiIsIGV4
ZWMsIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSk7CisgICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oCisgICAgICAgICAgICBleGVjLCBjcmVhdGVFcnJvcihleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiRXhjZXB0aW9uIEZ1enoiKSkpOworICAgIH0K
KyNlbmRpZiAvLyBDT01QSUxFUihDTEFORykKK30KKwogfSAvLyBleHRlcm4gIkMiCiAKIC8vIE5v
dGU6IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKCkgbmVlZHMgdG8gYmUgcGxh
Y2VkIGJlZm9yZSB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCShyZXZpc2lvbiAxNzExMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0Myw3IEBAIHR5cGVkZWYg
c2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXIKIHR5cGVkZWYgc2l6ZV90IEpJVF9PUEVS
QVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FT0pzcykoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1N0
cmluZyopOwogdHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0op
KEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJ
T04gKCpTcHJ0X0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7Cit0eXBlZGVm
IHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uKSgpOwogdHlwZWRlZiB2b2lkIEpJ
VF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKIHR5cGVkZWYgdm9p
ZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUMpKEV4ZWNTdGF0ZSosIEpTQ2VsbCop
OwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FQ2IpKEV4ZWNT
dGF0ZSosIENvZGVCbG9jayopOwpAQCAtMzAwLDYgKzMwMSw4IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25PU1JXcml0ZUJhcnIKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbklu
aXRHbG9iYWxDb25zdChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwogCit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eigpOworCiB9IC8vIGV4dGVybiAiQyIKIAogaW5s
aW5lIFBfSklUT3BlcmF0aW9uX0VDbGkgb3BlcmF0aW9uTGlua0ZvcigKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDE3MTEwNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQx
LDYgKzE0MSw3IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYoYm9v
bCwgdGVzdFRoZUZUTCwgZmFsc2UpIFwKICAgICB2KGJvb2wsIHZlcmJvc2VTYW5pdGl6ZVN0YWNr
LCBmYWxzZSkgXAogICAgIHYoYm9vbCwgYWx3YXlzRG9GdWxsQ29sbGVjdGlvbiwgZmFsc2UpIFwK
KyAgICB2KGJvb2wsIGVhZ2VybHlVcGRhdGVUb3BDYWxsRnJhbWUsIGZhbHNlKSBcCiAgICAgXAog
ICAgIHYoYm9vbCwgZW5hYmxlT1NSRW50cnlUb0RGRywgdHJ1ZSkgXAogICAgIHYoYm9vbCwgZW5h
YmxlT1NSRW50cnlUb0ZUTCwgdHJ1ZSkgXApAQCAtMjY5LDcgKzI3MCwxMCBAQCB0eXBlZGVmIGNv
bnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGRpc2FibGVHQywgZmFsc2UpIFwK
ICAgICB2KHVuc2lnbmVkLCBnY01heEhlYXBTaXplLCAwKSBcCiAgICAgdihib29sLCByZWNvcmRH
Q1BhdXNlVGltZXMsIGZhbHNlKSBcCi0gICAgdihib29sLCBsb2dIZWFwU3RhdGlzdGljc0F0RXhp
dCwgZmFsc2UpCisgICAgdihib29sLCBsb2dIZWFwU3RhdGlzdGljc0F0RXhpdCwgZmFsc2UpIFwK
KyAgICBcCisgICAgdihib29sLCBlbmFibGVFeGNlcHRpb25GdXp6LCBmYWxzZSkgXAorICAgIHYo
dW5zaWduZWQsIGZpcmVFeGNlcHRpb25GdXp6QXQsIDApCiAKIGNsYXNzIE9wdGlvbnMgewogcHVi
bGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVzdFJ1bm5lclV0aWxz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVzdFJ1bm5l
clV0aWxzLmgJKHJldmlzaW9uIDE3MTEwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Rlc3RSdW5uZXJVdGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw4IEBAIEpT
X0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgbnVtYmVyT2ZERkdDb20KIEpTX0VYUE9SVF9QUklWQVRF
IEpTVmFsdWUgc2V0TmV2ZXJJbmxpbmUoRXhlY1N0YXRlKik7CiBKU19FWFBPUlRfUFJJVkFURSBK
U1ZhbHVlIG9wdGltaXplTmV4dEludm9jYXRpb24oRXhlY1N0YXRlKik7CiAKK0pTX0VYUE9SVF9Q
UklWQVRFIHVuc2lnbmVkIG51bWJlck9mRXhjZXB0aW9uRnV6ekNoZWNrcygpOworCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFRlc3RSdW5uZXJVdGlsc19oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvZXhjZXB0aW9uLWZ1enoueWFtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXhjZXB0aW9uLWZ1enoueWFtbAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9leGNlcHRpb24tZnV6ei55YW1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCistIHBhdGg6IGV4Y2VwdGlvbkZ1enoKKyAgY21kOiB8CisgICAgICBpZiAkYXJjaGl0
ZWN0dXJlICF+IC94ODYvaSBhbmQgJGhvc3RPUyA9PSAiZGFyd2luIgorICAgICAgICAgIHNraXAK
KyAgICAgIGVsc2UKKyAgICAgICAgICBydW5FeGNlcHRpb25GdXp6CisgICAgICBlbmQKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9leGNlcHRpb25GdXp6LzNkLWN1YmUuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2V4Y2VwdGlvbkZ1enovM2Qt
Y3ViZS5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9leGNl
cHRpb25GdXp6LzNkLWN1YmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNjAgQEAKK3Ry
eSB7CisKKy8vIDNEIEN1YmUgUm90YXRpb24KKy8vIGh0dHA6Ly93d3cuc3BlaWNoLm5ldC9jb21w
dXRlci9tb3p0ZXN0aW5nLzNkLmh0bQorLy8gQ3JlYXRlZCBieSBTaW1vbiBTcGVpY2gKKwordmFy
IFEgPSBuZXcgQXJyYXkoKTsKK3ZhciBNVHJhbnMgPSBuZXcgQXJyYXkoKTsgIC8vIHRyYW5zZm9y
bWF0aW9uIG1hdHJpeAordmFyIE1RdWJlID0gbmV3IEFycmF5KCk7ICAvLyBwb3NpdGlvbiBpbmZv
cm1hdGlvbiBvZiBxdWJlCit2YXIgSSA9IG5ldyBBcnJheSgpOyAgICAgIC8vIGVudGl0eSBtYXRy
aXgKK3ZhciBPcmlnaW4gPSBuZXcgT2JqZWN0KCk7Cit2YXIgVGVzdGluZyA9IG5ldyBPYmplY3Qo
KTsKK3ZhciBMb29wVGltZXI7CisKK3ZhciB2YWxpZGF0aW9uID0geworIDIwOiAyODg5LjAwMDAw
MDAwMDAwNDUsCisgNDA6IDI4ODkuMDAwMDAwMDAwMDA1NSwKKyA4MDogMjg4OS4wMDAwMDAwMDAw
MDUsCisgMTYwOiAyODg5LjAwMDAwMDAwMDAwNTUKK307CisKK3ZhciBEaXNwbEFyZWEgPSBuZXcg
T2JqZWN0KCk7CitEaXNwbEFyZWEuV2lkdGggPSAzMDA7CitEaXNwbEFyZWEuSGVpZ2h0ID0gMzAw
OworCitmdW5jdGlvbiBEcmF3TGluZShGcm9tLCBUbykgeworICB2YXIgeDEgPSBGcm9tLlZbMF07
CisgIHZhciB4MiA9IFRvLlZbMF07CisgIHZhciB5MSA9IEZyb20uVlsxXTsKKyAgdmFyIHkyID0g
VG8uVlsxXTsKKyAgdmFyIGR4ID0gTWF0aC5hYnMoeDIgLSB4MSk7CisgIHZhciBkeSA9IE1hdGgu
YWJzKHkyIC0geTEpOworICB2YXIgeCA9IHgxOworICB2YXIgeSA9IHkxOworICB2YXIgSW5jWDEs
IEluY1kxOworICB2YXIgSW5jWDIsIEluY1kyOyAgCisgIHZhciBEZW47CisgIHZhciBOdW07Cisg
IHZhciBOdW1BZGQ7CisgIHZhciBOdW1QaXg7CisKKyAgaWYgKHgyID49IHgxKSB7ICBJbmNYMSA9
IDE7IEluY1gyID0gMTsgIH0KKyAgZWxzZSB7IEluY1gxID0gLTE7IEluY1gyID0gLTE7IH0KKyAg
aWYgKHkyID49IHkxKSAgeyAgSW5jWTEgPSAxOyBJbmNZMiA9IDE7IH0KKyAgZWxzZSB7IEluY1kx
ID0gLTE7IEluY1kyID0gLTE7IH0KKyAgaWYgKGR4ID49IGR5KSB7CisgICAgSW5jWDEgPSAwOwor
ICAgIEluY1kyID0gMDsKKyAgICBEZW4gPSBkeDsKKyAgICBOdW0gPSBkeCAvIDI7CisgICAgTnVt
QWRkID0gZHk7CisgICAgTnVtUGl4ID0gZHg7CisgIH0KKyAgZWxzZSB7CisgICAgSW5jWDIgPSAw
OworICAgIEluY1kxID0gMDsKKyAgICBEZW4gPSBkeTsKKyAgICBOdW0gPSBkeSAvIDI7CisgICAg
TnVtQWRkID0gZHg7CisgICAgTnVtUGl4ID0gZHk7CisgIH0KKworICBOdW1QaXggPSBNYXRoLnJv
dW5kKFEuTGFzdFB4ICsgTnVtUGl4KTsKKworICB2YXIgaSA9IFEuTGFzdFB4OworICBmb3IgKDsg
aSA8IE51bVBpeDsgaSsrKSB7CisgICAgTnVtICs9IE51bUFkZDsKKyAgICBpZiAoTnVtID49IERl
bikgeworICAgICAgTnVtIC09IERlbjsKKyAgICAgIHggKz0gSW5jWDE7CisgICAgICB5ICs9IElu
Y1kxOworICAgIH0KKyAgICB4ICs9IEluY1gyOworICAgIHkgKz0gSW5jWTI7CisgIH0KKyAgUS5M
YXN0UHggPSBOdW1QaXg7Cit9CisKK2Z1bmN0aW9uIENhbGNDcm9zcyhWMCwgVjEpIHsKKyAgdmFy
IENyb3NzID0gbmV3IEFycmF5KCk7CisgIENyb3NzWzBdID0gVjBbMV0qVjFbMl0gLSBWMFsyXSpW
MVsxXTsKKyAgQ3Jvc3NbMV0gPSBWMFsyXSpWMVswXSAtIFYwWzBdKlYxWzJdOworICBDcm9zc1sy
XSA9IFYwWzBdKlYxWzFdIC0gVjBbMV0qVjFbMF07CisgIHJldHVybiBDcm9zczsKK30KKworZnVu
Y3Rpb24gQ2FsY05vcm1hbChWMCwgVjEsIFYyKSB7CisgIHZhciBBID0gbmV3IEFycmF5KCk7ICAg
dmFyIEIgPSBuZXcgQXJyYXkoKTsgCisgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7Cisg
ICAgQVtpXSA9IFYwW2ldIC0gVjFbaV07CisgICAgQltpXSA9IFYyW2ldIC0gVjFbaV07CisgIH0K
KyAgQSA9IENhbGNDcm9zcyhBLCBCKTsKKyAgdmFyIExlbmd0aCA9IE1hdGguc3FydChBWzBdKkFb
MF0gKyBBWzFdKkFbMV0gKyBBWzJdKkFbMl0pOyAKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyBp
KyspIEFbaV0gPSBBW2ldIC8gTGVuZ3RoOworICBBWzNdID0gMTsKKyAgcmV0dXJuIEE7Cit9CisK
K2Z1bmN0aW9uIENyZWF0ZVAoWCxZLFopIHsKKyAgdGhpcy5WID0gW1gsWSxaLDFdOworfQorCisv
LyBtdWx0aXBsaWVzIHR3byBtYXRyaWNlcworZnVuY3Rpb24gTU11bHRpKE0xLCBNMikgeworICB2
YXIgTSA9IFtbXSxbXSxbXSxbXV07CisgIHZhciBpID0gMDsKKyAgdmFyIGogPSAwOworICBmb3Ig
KDsgaSA8IDQ7IGkrKykgeworICAgIGogPSAwOworICAgIGZvciAoOyBqIDwgNDsgaisrKSBNW2ld
W2pdID0gTTFbaV1bMF0gKiBNMlswXVtqXSArIE0xW2ldWzFdICogTTJbMV1bal0gKyBNMVtpXVsy
XSAqIE0yWzJdW2pdICsgTTFbaV1bM10gKiBNMlszXVtqXTsKKyAgfQorICByZXR1cm4gTTsKK30K
KworLy9tdWx0aXBsaWVzIG1hdHJpeCB3aXRoIHZlY3RvcgorZnVuY3Rpb24gVk11bHRpKE0sIFYp
IHsKKyAgdmFyIFZlY3QgPSBuZXcgQXJyYXkoKTsKKyAgdmFyIGkgPSAwOworICBmb3IgKDtpIDwg
NDsgaSsrKSBWZWN0W2ldID0gTVtpXVswXSAqIFZbMF0gKyBNW2ldWzFdICogVlsxXSArIE1baV1b
Ml0gKiBWWzJdICsgTVtpXVszXSAqIFZbM107CisgIHJldHVybiBWZWN0OworfQorCitmdW5jdGlv
biBWTXVsdGkyKE0sIFYpIHsKKyAgdmFyIFZlY3QgPSBuZXcgQXJyYXkoKTsKKyAgdmFyIGkgPSAw
OworICBmb3IgKDtpIDwgMzsgaSsrKSBWZWN0W2ldID0gTVtpXVswXSAqIFZbMF0gKyBNW2ldWzFd
ICogVlsxXSArIE1baV1bMl0gKiBWWzJdOworICByZXR1cm4gVmVjdDsKK30KKworLy8gYWRkIHRv
IG1hdHJpY2VzCitmdW5jdGlvbiBNQWRkKE0xLCBNMikgeworICB2YXIgTSA9IFtbXSxbXSxbXSxb
XV07CisgIHZhciBpID0gMDsKKyAgdmFyIGogPSAwOworICBmb3IgKDsgaSA8IDQ7IGkrKykgewor
ICAgIGogPSAwOworICAgIGZvciAoOyBqIDwgNDsgaisrKSBNW2ldW2pdID0gTTFbaV1bal0gKyBN
MltpXVtqXTsKKyAgfQorICByZXR1cm4gTTsKK30KKworZnVuY3Rpb24gVHJhbnNsYXRlKE0sIER4
LCBEeSwgRHopIHsKKyAgdmFyIFQgPSBbCisgIFsxLDAsMCxEeF0sCisgIFswLDEsMCxEeV0sCisg
IFswLDAsMSxEel0sCisgIFswLDAsMCwxXQorICBdOworICByZXR1cm4gTU11bHRpKFQsIE0pOwor
fQorCitmdW5jdGlvbiBSb3RhdGVYKE0sIFBoaSkgeworICB2YXIgYSA9IFBoaTsKKyAgYSAqPSBN
YXRoLlBJIC8gMTgwOworICB2YXIgQ29zID0gTWF0aC5jb3MoYSk7CisgIHZhciBTaW4gPSBNYXRo
LnNpbihhKTsKKyAgdmFyIFIgPSBbCisgIFsxLDAsMCwwXSwKKyAgWzAsQ29zLC1TaW4sMF0sCisg
IFswLFNpbixDb3MsMF0sCisgIFswLDAsMCwxXQorICBdOworICByZXR1cm4gTU11bHRpKFIsIE0p
OworfQorCitmdW5jdGlvbiBSb3RhdGVZKE0sIFBoaSkgeworICB2YXIgYSA9IFBoaTsKKyAgYSAq
PSBNYXRoLlBJIC8gMTgwOworICB2YXIgQ29zID0gTWF0aC5jb3MoYSk7CisgIHZhciBTaW4gPSBN
YXRoLnNpbihhKTsKKyAgdmFyIFIgPSBbCisgIFtDb3MsMCxTaW4sMF0sCisgIFswLDEsMCwwXSwK
KyAgWy1TaW4sMCxDb3MsMF0sCisgIFswLDAsMCwxXQorICBdOworICByZXR1cm4gTU11bHRpKFIs
IE0pOworfQorCitmdW5jdGlvbiBSb3RhdGVaKE0sIFBoaSkgeworICB2YXIgYSA9IFBoaTsKKyAg
YSAqPSBNYXRoLlBJIC8gMTgwOworICB2YXIgQ29zID0gTWF0aC5jb3MoYSk7CisgIHZhciBTaW4g
PSBNYXRoLnNpbihhKTsKKyAgdmFyIFIgPSBbCisgIFtDb3MsLVNpbiwwLDBdLAorICBbU2luLENv
cywwLDBdLAorICBbMCwwLDEsMF0sICAgCisgIFswLDAsMCwxXQorICBdOworICByZXR1cm4gTU11
bHRpKFIsIE0pOworfQorCitmdW5jdGlvbiBEcmF3UXViZSgpIHsKKyAgLy8gY2FsYyBjdXJyZW50
IG5vcm1hbHMKKyAgdmFyIEN1ck4gPSBuZXcgQXJyYXkoKTsKKyAgdmFyIGkgPSA1OworICBRLkxh
c3RQeCA9IDA7CisgIGZvciAoOyBpID4gLTE7IGktLSkgQ3VyTltpXSA9IFZNdWx0aTIoTVF1YmUs
IFEuTm9ybWFsW2ldKTsKKyAgaWYgKEN1ck5bMF1bMl0gPCAwKSB7CisgICAgaWYgKCFRLkxpbmVb
MF0pIHsgRHJhd0xpbmUoUVswXSwgUVsxXSk7IFEuTGluZVswXSA9IHRydWU7IH07CisgICAgaWYg
KCFRLkxpbmVbMV0pIHsgRHJhd0xpbmUoUVsxXSwgUVsyXSk7IFEuTGluZVsxXSA9IHRydWU7IH07
CisgICAgaWYgKCFRLkxpbmVbMl0pIHsgRHJhd0xpbmUoUVsyXSwgUVszXSk7IFEuTGluZVsyXSA9
IHRydWU7IH07CisgICAgaWYgKCFRLkxpbmVbM10pIHsgRHJhd0xpbmUoUVszXSwgUVswXSk7IFEu
TGluZVszXSA9IHRydWU7IH07CisgIH0KKyAgaWYgKEN1ck5bMV1bMl0gPCAwKSB7CisgICAgaWYg
KCFRLkxpbmVbMl0pIHsgRHJhd0xpbmUoUVszXSwgUVsyXSk7IFEuTGluZVsyXSA9IHRydWU7IH07
CisgICAgaWYgKCFRLkxpbmVbOV0pIHsgRHJhd0xpbmUoUVsyXSwgUVs2XSk7IFEuTGluZVs5XSA9
IHRydWU7IH07CisgICAgaWYgKCFRLkxpbmVbNl0pIHsgRHJhd0xpbmUoUVs2XSwgUVs3XSk7IFEu
TGluZVs2XSA9IHRydWU7IH07CisgICAgaWYgKCFRLkxpbmVbMTBdKSB7IERyYXdMaW5lKFFbN10s
IFFbM10pOyBRLkxpbmVbMTBdID0gdHJ1ZTsgfTsKKyAgfQorICBpZiAoQ3VyTlsyXVsyXSA8IDAp
IHsKKyAgICBpZiAoIVEuTGluZVs0XSkgeyBEcmF3TGluZShRWzRdLCBRWzVdKTsgUS5MaW5lWzRd
ID0gdHJ1ZTsgfTsKKyAgICBpZiAoIVEuTGluZVs1XSkgeyBEcmF3TGluZShRWzVdLCBRWzZdKTsg
US5MaW5lWzVdID0gdHJ1ZTsgfTsKKyAgICBpZiAoIVEuTGluZVs2XSkgeyBEcmF3TGluZShRWzZd
LCBRWzddKTsgUS5MaW5lWzZdID0gdHJ1ZTsgfTsKKyAgICBpZiAoIVEuTGluZVs3XSkgeyBEcmF3
TGluZShRWzddLCBRWzRdKTsgUS5MaW5lWzddID0gdHJ1ZTsgfTsKKyAgfQorICBpZiAoQ3VyTlsz
XVsyXSA8IDApIHsKKyAgICBpZiAoIVEuTGluZVs0XSkgeyBEcmF3TGluZShRWzRdLCBRWzVdKTsg
US5MaW5lWzRdID0gdHJ1ZTsgfTsKKyAgICBpZiAoIVEuTGluZVs4XSkgeyBEcmF3TGluZShRWzVd
LCBRWzFdKTsgUS5MaW5lWzhdID0gdHJ1ZTsgfTsKKyAgICBpZiAoIVEuTGluZVswXSkgeyBEcmF3
TGluZShRWzFdLCBRWzBdKTsgUS5MaW5lWzBdID0gdHJ1ZTsgfTsKKyAgICBpZiAoIVEuTGluZVsx
MV0pIHsgRHJhd0xpbmUoUVswXSwgUVs0XSk7IFEuTGluZVsxMV0gPSB0cnVlOyB9OworICB9Cisg
IGlmIChDdXJOWzRdWzJdIDwgMCkgeworICAgIGlmICghUS5MaW5lWzExXSkgeyBEcmF3TGluZShR
WzRdLCBRWzBdKTsgUS5MaW5lWzExXSA9IHRydWU7IH07CisgICAgaWYgKCFRLkxpbmVbM10pIHsg
RHJhd0xpbmUoUVswXSwgUVszXSk7IFEuTGluZVszXSA9IHRydWU7IH07CisgICAgaWYgKCFRLkxp
bmVbMTBdKSB7IERyYXdMaW5lKFFbM10sIFFbN10pOyBRLkxpbmVbMTBdID0gdHJ1ZTsgfTsKKyAg
ICBpZiAoIVEuTGluZVs3XSkgeyBEcmF3TGluZShRWzddLCBRWzRdKTsgUS5MaW5lWzddID0gdHJ1
ZTsgfTsKKyAgfQorICBpZiAoQ3VyTls1XVsyXSA8IDApIHsKKyAgICBpZiAoIVEuTGluZVs4XSkg
eyBEcmF3TGluZShRWzFdLCBRWzVdKTsgUS5MaW5lWzhdID0gdHJ1ZTsgfTsKKyAgICBpZiAoIVEu
TGluZVs1XSkgeyBEcmF3TGluZShRWzVdLCBRWzZdKTsgUS5MaW5lWzVdID0gdHJ1ZTsgfTsKKyAg
ICBpZiAoIVEuTGluZVs5XSkgeyBEcmF3TGluZShRWzZdLCBRWzJdKTsgUS5MaW5lWzldID0gdHJ1
ZTsgfTsKKyAgICBpZiAoIVEuTGluZVsxXSkgeyBEcmF3TGluZShRWzJdLCBRWzFdKTsgUS5MaW5l
WzFdID0gdHJ1ZTsgfTsKKyAgfQorICBRLkxpbmUgPSBbZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2Us
ZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2VdOworICBRLkxh
c3RQeCA9IDA7Cit9CisKK2Z1bmN0aW9uIExvb3AoKSB7CisgIGlmIChUZXN0aW5nLkxvb3BDb3Vu
dCA+IFRlc3RpbmcuTG9vcE1heCkgcmV0dXJuOworICB2YXIgVGVzdGluZ1N0ciA9IFN0cmluZyhU
ZXN0aW5nLkxvb3BDb3VudCk7CisgIHdoaWxlIChUZXN0aW5nU3RyLmxlbmd0aCA8IDMpIFRlc3Rp
bmdTdHIgPSAiMCIgKyBUZXN0aW5nU3RyOworICBNVHJhbnMgPSBUcmFuc2xhdGUoSSwgLVFbOF0u
VlswXSwgLVFbOF0uVlsxXSwgLVFbOF0uVlsyXSk7CisgIE1UcmFucyA9IFJvdGF0ZVgoTVRyYW5z
LCAxKTsKKyAgTVRyYW5zID0gUm90YXRlWShNVHJhbnMsIDMpOworICBNVHJhbnMgPSBSb3RhdGVa
KE1UcmFucywgNSk7CisgIE1UcmFucyA9IFRyYW5zbGF0ZShNVHJhbnMsIFFbOF0uVlswXSwgUVs4
XS5WWzFdLCBRWzhdLlZbMl0pOworICBNUXViZSA9IE1NdWx0aShNVHJhbnMsIE1RdWJlKTsKKyAg
dmFyIGkgPSA4OworICBmb3IgKDsgaSA+IC0xOyBpLS0pIHsKKyAgICBRW2ldLlYgPSBWTXVsdGko
TVRyYW5zLCBRW2ldLlYpOworICB9CisgIERyYXdRdWJlKCk7CisgIFRlc3RpbmcuTG9vcENvdW50
Kys7CisgIExvb3AoKTsKK30KKworZnVuY3Rpb24gSW5pdChDdWJlU2l6ZSkgeworICAvLyBpbml0
L3Jlc2V0IHZhcnMKKyAgT3JpZ2luLlYgPSBbMTUwLDE1MCwyMCwxXTsKKyAgVGVzdGluZy5Mb29w
Q291bnQgPSAwOworICBUZXN0aW5nLkxvb3BNYXggPSA1MDsKKyAgVGVzdGluZy5UaW1lTWF4ID0g
MDsKKyAgVGVzdGluZy5UaW1lQXZnID0gMDsKKyAgVGVzdGluZy5UaW1lTWluID0gMDsKKyAgVGVz
dGluZy5UaW1lVGVtcCA9IDA7CisgIFRlc3RpbmcuVGltZVRvdGFsID0gMDsKKyAgVGVzdGluZy5J
bml0ID0gZmFsc2U7CisKKyAgLy8gdHJhbnNmb3JtYXRpb24gbWF0cml4CisgIE1UcmFucyA9IFsK
KyAgWzEsMCwwLDBdLAorICBbMCwxLDAsMF0sCisgIFswLDAsMSwwXSwKKyAgWzAsMCwwLDFdCisg
IF07CisgIAorICAvLyBwb3NpdGlvbiBpbmZvcm1hdGlvbiBvZiBxdWJlCisgIE1RdWJlID0gWwor
ICBbMSwwLDAsMF0sCisgIFswLDEsMCwwXSwKKyAgWzAsMCwxLDBdLAorICBbMCwwLDAsMV0KKyAg
XTsKKyAgCisgIC8vIGVudGl0eSBtYXRyaXgKKyAgSSA9IFsKKyAgWzEsMCwwLDBdLAorICBbMCwx
LDAsMF0sCisgIFswLDAsMSwwXSwKKyAgWzAsMCwwLDFdCisgIF07CisgIAorICAvLyBjcmVhdGUg
cXViZQorICBRWzBdID0gbmV3IENyZWF0ZVAoLUN1YmVTaXplLC1DdWJlU2l6ZSwgQ3ViZVNpemUp
OworICBRWzFdID0gbmV3IENyZWF0ZVAoLUN1YmVTaXplLCBDdWJlU2l6ZSwgQ3ViZVNpemUpOwor
ICBRWzJdID0gbmV3IENyZWF0ZVAoIEN1YmVTaXplLCBDdWJlU2l6ZSwgQ3ViZVNpemUpOworICBR
WzNdID0gbmV3IENyZWF0ZVAoIEN1YmVTaXplLC1DdWJlU2l6ZSwgQ3ViZVNpemUpOworICBRWzRd
ID0gbmV3IENyZWF0ZVAoLUN1YmVTaXplLC1DdWJlU2l6ZSwtQ3ViZVNpemUpOworICBRWzVdID0g
bmV3IENyZWF0ZVAoLUN1YmVTaXplLCBDdWJlU2l6ZSwtQ3ViZVNpemUpOworICBRWzZdID0gbmV3
IENyZWF0ZVAoIEN1YmVTaXplLCBDdWJlU2l6ZSwtQ3ViZVNpemUpOworICBRWzddID0gbmV3IENy
ZWF0ZVAoIEN1YmVTaXplLC1DdWJlU2l6ZSwtQ3ViZVNpemUpOworICAKKyAgLy8gY2VudGVyIG9m
IGdyYXZpdHkKKyAgUVs4XSA9IG5ldyBDcmVhdGVQKDAsIDAsIDApOworICAKKyAgLy8gYW50aS1j
bG9ja3dpc2UgZWRnZSBjaGVjaworICBRLkVkZ2UgPSBbWzAsMSwyXSxbMywyLDZdLFs3LDYsNV0s
WzQsNSwxXSxbNCwwLDNdLFsxLDUsNl1dOworICAKKyAgLy8gY2FsY3VsYXRlIHNxdWFkIG5vcm1h
bHMKKyAgUS5Ob3JtYWwgPSBuZXcgQXJyYXkoKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBRLkVk
Z2UubGVuZ3RoOyBpKyspIFEuTm9ybWFsW2ldID0gQ2FsY05vcm1hbChRW1EuRWRnZVtpXVswXV0u
ViwgUVtRLkVkZ2VbaV1bMV1dLlYsIFFbUS5FZGdlW2ldWzJdXS5WKTsKKyAgCisgIC8vIGxpbmUg
ZHJhd24gPworICBRLkxpbmUgPSBbZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2Us
ZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2VdOworICAKKyAgLy8gY3JlYXRlIGxp
bmUgcGl4ZWxzCisgIFEuTnVtUHggPSA5ICogMiAqIEN1YmVTaXplOworICBmb3IgKHZhciBpID0g
MDsgaSA8IFEuTnVtUHg7IGkrKykgQ3JlYXRlUCgwLDAsMCk7CisgIAorICBNVHJhbnMgPSBUcmFu
c2xhdGUoTVRyYW5zLCBPcmlnaW4uVlswXSwgT3JpZ2luLlZbMV0sIE9yaWdpbi5WWzJdKTsKKyAg
TVF1YmUgPSBNTXVsdGkoTVRyYW5zLCBNUXViZSk7CisKKyAgdmFyIGkgPSAwOworICBmb3IgKDsg
aSA8IDk7IGkrKykgeworICAgIFFbaV0uViA9IFZNdWx0aShNVHJhbnMsIFFbaV0uVik7CisgIH0K
KyAgRHJhd1F1YmUoKTsKKyAgVGVzdGluZy5Jbml0ID0gdHJ1ZTsKKyAgTG9vcCgpOworICAKKyAg
Ly8gUGVyZm9ybSBhIHNpbXBsZSBzdW0tYmFzZWQgdmVyaWZpY2F0aW9uLgorICB2YXIgc3VtID0g
MDsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBRLmxlbmd0aDsgKytpKSB7CisgICAgdmFyIHZlY3Rv
ciA9IFFbaV0uVjsKKyAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZlY3Rvci5sZW5ndGg7ICsraikK
KyAgICAgIHN1bSArPSB2ZWN0b3Jbal07CisgIH0KKyAgaWYgKHN1bSAhPSB2YWxpZGF0aW9uW0N1
YmVTaXplXSkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2ZWN0b3Igc3VtIGZvciBDdWJlU2l6ZSA9
ICIgKyBDdWJlU2l6ZSArICI7IGV4cGVjdGVkICIgKyB2YWxpZGF0aW9uW0N1YmVTaXplXSArICIg
YnV0IGdvdCAiICsgc3VtOworfQorCitmb3IgKCB2YXIgaSA9IDIwOyBpIDw9IDE2MDsgaSAqPSAy
ICkgeworICBJbml0KGkpOworfQorCitRID0gbnVsbDsKK01UcmFucyA9IG51bGw7CitNUXViZSA9
IG51bGw7CitJID0gbnVsbDsKK09yaWdpbiA9IG51bGw7CitUZXN0aW5nID0gbnVsbDsKK0xvb3BU
aW1lID0gbnVsbDsKK0Rpc3BsQXJlYSA9IG51bGw7CisKK30gY2F0Y2ggKGUpIHsKKyAgICBwcmlu
dCgiSlNDIEVYQ0VQVElPTiBGVVpaOiBDYXVnaHQgZXhjZXB0aW9uOiAiICsgZSk7Cit9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXhjZXB0aW9uRnV6ei9kYXRlLWZvcm1hdC14
cGFyYi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXhjZXB0
aW9uRnV6ei9kYXRlLWZvcm1hdC14cGFyYi5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9leGNlcHRpb25GdXp6L2RhdGUtZm9ybWF0LXhwYXJiLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDI2IEBACit0cnkgeworCisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA0IEJhcm9uIFNjaHdhcnR6IDxiYXJvbiBhdCBzZXF1ZW50IGRvdCBvcmc+CisgKgorICog
VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgdmVyc2lvbiAyLjEuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUKKyAqIGRldGFpbHMu
CisgKi8KKworRGF0ZS5wYXJzZUZ1bmN0aW9ucyA9IHtjb3VudDowfTsKK0RhdGUucGFyc2VSZWdl
eGVzID0gW107CitEYXRlLmZvcm1hdEZ1bmN0aW9ucyA9IHtjb3VudDowfTsKKworRGF0ZS5wcm90
b3R5cGUuZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uKGZvcm1hdCkgeworICAgIGlmIChEYXRlLmZvcm1h
dEZ1bmN0aW9uc1tmb3JtYXRdID09IG51bGwpIHsKKyAgICAgICAgRGF0ZS5jcmVhdGVOZXdGb3Jt
YXQoZm9ybWF0KTsKKyAgICB9CisgICAgdmFyIGZ1bmMgPSBEYXRlLmZvcm1hdEZ1bmN0aW9uc1tm
b3JtYXRdOworICAgIHJldHVybiB0aGlzW2Z1bmNdKCk7Cit9CisKK0RhdGUuY3JlYXRlTmV3Rm9y
bWF0ID0gZnVuY3Rpb24oZm9ybWF0KSB7CisgICAgdmFyIGZ1bmNOYW1lID0gImZvcm1hdCIgKyBE
YXRlLmZvcm1hdEZ1bmN0aW9ucy5jb3VudCsrOworICAgIERhdGUuZm9ybWF0RnVuY3Rpb25zW2Zv
cm1hdF0gPSBmdW5jTmFtZTsKKyAgICB2YXIgY29kZSA9ICJEYXRlLnByb3RvdHlwZS4iICsgZnVu
Y05hbWUgKyAiID0gZnVuY3Rpb24oKXtyZXR1cm4gIjsKKyAgICB2YXIgc3BlY2lhbCA9IGZhbHNl
OworICAgIHZhciBjaCA9ICcnOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm9ybWF0Lmxlbmd0
aDsgKytpKSB7CisgICAgICAgIGNoID0gZm9ybWF0LmNoYXJBdChpKTsKKyAgICAgICAgaWYgKCFz
cGVjaWFsICYmIGNoID09ICJcXCIpIHsKKyAgICAgICAgICAgIHNwZWNpYWwgPSB0cnVlOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNwZWNpYWwpIHsKKyAgICAgICAgICAgIHNwZWNpYWwg
PSBmYWxzZTsKKyAgICAgICAgICAgIGNvZGUgKz0gIiciICsgU3RyaW5nLmVzY2FwZShjaCkgKyAi
JyArICI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb2RlICs9IERh
dGUuZ2V0Rm9ybWF0Q29kZShjaCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZXZhbChjb2RlLnN1
YnN0cmluZygwLCBjb2RlLmxlbmd0aCAtIDMpICsgIjt9Iik7Cit9CisKK0RhdGUuZ2V0Rm9ybWF0
Q29kZSA9IGZ1bmN0aW9uKGNoYXJhY3RlcikgeworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7Cisg
ICAgY2FzZSAiZCI6CisgICAgICAgIHJldHVybiAiU3RyaW5nLmxlZnRQYWQodGhpcy5nZXREYXRl
KCksIDIsICcwJykgKyAiOworICAgIGNhc2UgIkQiOgorICAgICAgICByZXR1cm4gIkRhdGUuZGF5
TmFtZXNbdGhpcy5nZXREYXkoKV0uc3Vic3RyaW5nKDAsIDMpICsgIjsKKyAgICBjYXNlICJqIjoK
KyAgICAgICAgcmV0dXJuICJ0aGlzLmdldERhdGUoKSArICI7CisgICAgY2FzZSAibCI6CisgICAg
ICAgIHJldHVybiAiRGF0ZS5kYXlOYW1lc1t0aGlzLmdldERheSgpXSArICI7CisgICAgY2FzZSAi
UyI6CisgICAgICAgIHJldHVybiAidGhpcy5nZXRTdWZmaXgoKSArICI7CisgICAgY2FzZSAidyI6
CisgICAgICAgIHJldHVybiAidGhpcy5nZXREYXkoKSArICI7CisgICAgY2FzZSAieiI6CisgICAg
ICAgIHJldHVybiAidGhpcy5nZXREYXlPZlllYXIoKSArICI7CisgICAgY2FzZSAiVyI6CisgICAg
ICAgIHJldHVybiAidGhpcy5nZXRXZWVrT2ZZZWFyKCkgKyAiOworICAgIGNhc2UgIkYiOgorICAg
ICAgICByZXR1cm4gIkRhdGUubW9udGhOYW1lc1t0aGlzLmdldE1vbnRoKCldICsgIjsKKyAgICBj
YXNlICJtIjoKKyAgICAgICAgcmV0dXJuICJTdHJpbmcubGVmdFBhZCh0aGlzLmdldE1vbnRoKCkg
KyAxLCAyLCAnMCcpICsgIjsKKyAgICBjYXNlICJNIjoKKyAgICAgICAgcmV0dXJuICJEYXRlLm1v
bnRoTmFtZXNbdGhpcy5nZXRNb250aCgpXS5zdWJzdHJpbmcoMCwgMykgKyAiOworICAgIGNhc2Ug
Im4iOgorICAgICAgICByZXR1cm4gIih0aGlzLmdldE1vbnRoKCkgKyAxKSArICI7CisgICAgY2Fz
ZSAidCI6CisgICAgICAgIHJldHVybiAidGhpcy5nZXREYXlzSW5Nb250aCgpICsgIjsKKyAgICBj
YXNlICJMIjoKKyAgICAgICAgcmV0dXJuICIodGhpcy5pc0xlYXBZZWFyKCkgPyAxIDogMCkgKyAi
OworICAgIGNhc2UgIlkiOgorICAgICAgICByZXR1cm4gInRoaXMuZ2V0RnVsbFllYXIoKSArICI7
CisgICAgY2FzZSAieSI6CisgICAgICAgIHJldHVybiAiKCcnICsgdGhpcy5nZXRGdWxsWWVhcigp
KS5zdWJzdHJpbmcoMiwgNCkgKyAiOworICAgIGNhc2UgImEiOgorICAgICAgICByZXR1cm4gIih0
aGlzLmdldEhvdXJzKCkgPCAxMiA/ICdhbScgOiAncG0nKSArICI7CisgICAgY2FzZSAiQSI6Cisg
ICAgICAgIHJldHVybiAiKHRoaXMuZ2V0SG91cnMoKSA8IDEyID8gJ0FNJyA6ICdQTScpICsgIjsK
KyAgICBjYXNlICJnIjoKKyAgICAgICAgcmV0dXJuICIoKHRoaXMuZ2V0SG91cnMoKSAlMTIpID8g
dGhpcy5nZXRIb3VycygpICUgMTIgOiAxMikgKyAiOworICAgIGNhc2UgIkciOgorICAgICAgICBy
ZXR1cm4gInRoaXMuZ2V0SG91cnMoKSArICI7CisgICAgY2FzZSAiaCI6CisgICAgICAgIHJldHVy
biAiU3RyaW5nLmxlZnRQYWQoKHRoaXMuZ2V0SG91cnMoKSAlMTIpID8gdGhpcy5nZXRIb3Vycygp
ICUgMTIgOiAxMiwgMiwgJzAnKSArICI7CisgICAgY2FzZSAiSCI6CisgICAgICAgIHJldHVybiAi
U3RyaW5nLmxlZnRQYWQodGhpcy5nZXRIb3VycygpLCAyLCAnMCcpICsgIjsKKyAgICBjYXNlICJp
IjoKKyAgICAgICAgcmV0dXJuICJTdHJpbmcubGVmdFBhZCh0aGlzLmdldE1pbnV0ZXMoKSwgMiwg
JzAnKSArICI7CisgICAgY2FzZSAicyI6CisgICAgICAgIHJldHVybiAiU3RyaW5nLmxlZnRQYWQo
dGhpcy5nZXRTZWNvbmRzKCksIDIsICcwJykgKyAiOworICAgIGNhc2UgIk8iOgorICAgICAgICBy
ZXR1cm4gInRoaXMuZ2V0R01UT2Zmc2V0KCkgKyAiOworICAgIGNhc2UgIlQiOgorICAgICAgICBy
ZXR1cm4gInRoaXMuZ2V0VGltZXpvbmUoKSArICI7CisgICAgY2FzZSAiWiI6CisgICAgICAgIHJl
dHVybiAiKHRoaXMuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIC02MCkgKyAiOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiAiJyIgKyBTdHJpbmcuZXNjYXBlKGNoYXJhY3RlcikgKyAiJyArICI7
CisgICAgfQorfQorCitEYXRlLnBhcnNlRGF0ZSA9IGZ1bmN0aW9uKGlucHV0LCBmb3JtYXQpIHsK
KyAgICBpZiAoRGF0ZS5wYXJzZUZ1bmN0aW9uc1tmb3JtYXRdID09IG51bGwpIHsKKyAgICAgICAg
RGF0ZS5jcmVhdGVQYXJzZXIoZm9ybWF0KTsKKyAgICB9CisgICAgdmFyIGZ1bmMgPSBEYXRlLnBh
cnNlRnVuY3Rpb25zW2Zvcm1hdF07CisgICAgcmV0dXJuIERhdGVbZnVuY10oaW5wdXQpOworfQor
CitEYXRlLmNyZWF0ZVBhcnNlciA9IGZ1bmN0aW9uKGZvcm1hdCkgeworICAgIHZhciBmdW5jTmFt
ZSA9ICJwYXJzZSIgKyBEYXRlLnBhcnNlRnVuY3Rpb25zLmNvdW50Kys7CisgICAgdmFyIHJlZ2V4
TnVtID0gRGF0ZS5wYXJzZVJlZ2V4ZXMubGVuZ3RoOworICAgIHZhciBjdXJyZW50R3JvdXAgPSAx
OworICAgIERhdGUucGFyc2VGdW5jdGlvbnNbZm9ybWF0XSA9IGZ1bmNOYW1lOworCisgICAgdmFy
IGNvZGUgPSAiRGF0ZS4iICsgZnVuY05hbWUgKyAiID0gZnVuY3Rpb24oaW5wdXQpe1xuIgorICAg
ICAgICArICJ2YXIgeSA9IC0xLCBtID0gLTEsIGQgPSAtMSwgaCA9IC0xLCBpID0gLTEsIHMgPSAt
MTtcbiIKKyAgICAgICAgKyAidmFyIGQgPSBuZXcgRGF0ZSgpO1xuIgorICAgICAgICArICJ5ID0g
ZC5nZXRGdWxsWWVhcigpO1xuIgorICAgICAgICArICJtID0gZC5nZXRNb250aCgpO1xuIgorICAg
ICAgICArICJkID0gZC5nZXREYXRlKCk7XG4iCisgICAgICAgICsgInZhciByZXN1bHRzID0gaW5w
dXQubWF0Y2goRGF0ZS5wYXJzZVJlZ2V4ZXNbIiArIHJlZ2V4TnVtICsgIl0pO1xuIgorICAgICAg
ICArICJpZiAocmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aCA+IDApIHsiCisgICAgdmFyIHJlZ2V4
ID0gIiI7CisKKyAgICB2YXIgc3BlY2lhbCA9IGZhbHNlOworICAgIHZhciBjaCA9ICcnOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZm9ybWF0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGNoID0g
Zm9ybWF0LmNoYXJBdChpKTsKKyAgICAgICAgaWYgKCFzcGVjaWFsICYmIGNoID09ICJcXCIpIHsK
KyAgICAgICAgICAgIHNwZWNpYWwgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYg
KHNwZWNpYWwpIHsKKyAgICAgICAgICAgIHNwZWNpYWwgPSBmYWxzZTsKKyAgICAgICAgICAgIHJl
Z2V4ICs9IFN0cmluZy5lc2NhcGUoY2gpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgb2JqID0gRGF0ZS5mb3JtYXRDb2RlVG9SZWdleChjaCwgY3VycmVudEdyb3VwKTsK
KyAgICAgICAgICAgIGN1cnJlbnRHcm91cCArPSBvYmouZzsKKyAgICAgICAgICAgIHJlZ2V4ICs9
IG9iai5zOworICAgICAgICAgICAgaWYgKG9iai5nICYmIG9iai5jKSB7CisgICAgICAgICAgICAg
ICAgY29kZSArPSBvYmouYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IGNvZGUgKz0gImlmICh5ID4gMCAmJiBtID49IDAgJiYgZCA+IDAgJiYgaCA+PSAwICYmIGkgPj0g
MCAmJiBzID49IDApXG4iCisgICAgICAgICsgIntyZXR1cm4gbmV3IERhdGUoeSwgbSwgZCwgaCwg
aSwgcyk7fVxuIgorICAgICAgICArICJlbHNlIGlmICh5ID4gMCAmJiBtID49IDAgJiYgZCA+IDAg
JiYgaCA+PSAwICYmIGkgPj0gMClcbiIKKyAgICAgICAgKyAie3JldHVybiBuZXcgRGF0ZSh5LCBt
LCBkLCBoLCBpKTt9XG4iCisgICAgICAgICsgImVsc2UgaWYgKHkgPiAwICYmIG0gPj0gMCAmJiBk
ID4gMCAmJiBoID49IDApXG4iCisgICAgICAgICsgIntyZXR1cm4gbmV3IERhdGUoeSwgbSwgZCwg
aCk7fVxuIgorICAgICAgICArICJlbHNlIGlmICh5ID4gMCAmJiBtID49IDAgJiYgZCA+IDApXG4i
CisgICAgICAgICsgIntyZXR1cm4gbmV3IERhdGUoeSwgbSwgZCk7fVxuIgorICAgICAgICArICJl
bHNlIGlmICh5ID4gMCAmJiBtID49IDApXG4iCisgICAgICAgICsgIntyZXR1cm4gbmV3IERhdGUo
eSwgbSk7fVxuIgorICAgICAgICArICJlbHNlIGlmICh5ID4gMClcbiIKKyAgICAgICAgKyAie3Jl
dHVybiBuZXcgRGF0ZSh5KTt9XG4iCisgICAgICAgICsgIn1yZXR1cm4gbnVsbDt9IjsKKworICAg
IERhdGUucGFyc2VSZWdleGVzW3JlZ2V4TnVtXSA9IG5ldyBSZWdFeHAoIl4iICsgcmVnZXggKyAi
JCIpOworICAgIGV2YWwoY29kZSk7Cit9CisKK0RhdGUuZm9ybWF0Q29kZVRvUmVnZXggPSBmdW5j
dGlvbihjaGFyYWN0ZXIsIGN1cnJlbnRHcm91cCkgeworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7
CisgICAgY2FzZSAiRCI6CisgICAgICAgIHJldHVybiB7ZzowLAorICAgICAgICBjOm51bGwsCisg
ICAgICAgIHM6Iig/OlN1bnxNb258VHVlfFdlZHxUaHV8RnJpfFNhdCkifTsKKyAgICBjYXNlICJq
IjoKKyAgICBjYXNlICJkIjoKKyAgICAgICAgcmV0dXJuIHtnOjEsCisgICAgICAgICAgICBjOiJk
ID0gcGFyc2VJbnQocmVzdWx0c1siICsgY3VycmVudEdyb3VwICsgIl0sIDEwKTtcbiIsCisgICAg
ICAgICAgICBzOiIoXFxkezEsMn0pIn07CisgICAgY2FzZSAibCI6CisgICAgICAgIHJldHVybiB7
ZzowLAorICAgICAgICAgICAgYzpudWxsLAorICAgICAgICAgICAgczoiKD86IiArIERhdGUuZGF5
TmFtZXMuam9pbigifCIpICsgIikifTsKKyAgICBjYXNlICJTIjoKKyAgICAgICAgcmV0dXJuIHtn
OjAsCisgICAgICAgICAgICBjOm51bGwsCisgICAgICAgICAgICBzOiIoPzpzdHxuZHxyZHx0aCki
fTsKKyAgICBjYXNlICJ3IjoKKyAgICAgICAgcmV0dXJuIHtnOjAsCisgICAgICAgICAgICBjOm51
bGwsCisgICAgICAgICAgICBzOiJcXGQifTsKKyAgICBjYXNlICJ6IjoKKyAgICAgICAgcmV0dXJu
IHtnOjAsCisgICAgICAgICAgICBjOm51bGwsCisgICAgICAgICAgICBzOiIoPzpcXGR7MSwzfSki
fTsKKyAgICBjYXNlICJXIjoKKyAgICAgICAgcmV0dXJuIHtnOjAsCisgICAgICAgICAgICBjOm51
bGwsCisgICAgICAgICAgICBzOiIoPzpcXGR7Mn0pIn07CisgICAgY2FzZSAiRiI6CisgICAgICAg
IHJldHVybiB7ZzoxLAorICAgICAgICAgICAgYzoibSA9IHBhcnNlSW50KERhdGUubW9udGhOdW1i
ZXJzW3Jlc3VsdHNbIiArIGN1cnJlbnRHcm91cCArICJdLnN1YnN0cmluZygwLCAzKV0sIDEwKTtc
biIsCisgICAgICAgICAgICBzOiIoIiArIERhdGUubW9udGhOYW1lcy5qb2luKCJ8IikgKyAiKSJ9
OworICAgIGNhc2UgIk0iOgorICAgICAgICByZXR1cm4ge2c6MSwKKyAgICAgICAgICAgIGM6Im0g
PSBwYXJzZUludChEYXRlLm1vbnRoTnVtYmVyc1tyZXN1bHRzWyIgKyBjdXJyZW50R3JvdXAgKyAi
XV0sIDEwKTtcbiIsCisgICAgICAgICAgICBzOiIoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVs
fEF1Z3xTZXB8T2N0fE5vdnxEZWMpIn07CisgICAgY2FzZSAibiI6CisgICAgY2FzZSAibSI6Cisg
ICAgICAgIHJldHVybiB7ZzoxLAorICAgICAgICAgICAgYzoibSA9IHBhcnNlSW50KHJlc3VsdHNb
IiArIGN1cnJlbnRHcm91cCArICJdLCAxMCkgLSAxO1xuIiwKKyAgICAgICAgICAgIHM6IihcXGR7
MSwyfSkifTsKKyAgICBjYXNlICJ0IjoKKyAgICAgICAgcmV0dXJuIHtnOjAsCisgICAgICAgICAg
ICBjOm51bGwsCisgICAgICAgICAgICBzOiJcXGR7MSwyfSJ9OworICAgIGNhc2UgIkwiOgorICAg
ICAgICByZXR1cm4ge2c6MCwKKyAgICAgICAgICAgIGM6bnVsbCwKKyAgICAgICAgICAgIHM6Iig/
OjF8MCkifTsKKyAgICBjYXNlICJZIjoKKyAgICAgICAgcmV0dXJuIHtnOjEsCisgICAgICAgICAg
ICBjOiJ5ID0gcGFyc2VJbnQocmVzdWx0c1siICsgY3VycmVudEdyb3VwICsgIl0sIDEwKTtcbiIs
CisgICAgICAgICAgICBzOiIoXFxkezR9KSJ9OworICAgIGNhc2UgInkiOgorICAgICAgICByZXR1
cm4ge2c6MSwKKyAgICAgICAgICAgIGM6InZhciB0eSA9IHBhcnNlSW50KHJlc3VsdHNbIiArIGN1
cnJlbnRHcm91cCArICJdLCAxMCk7XG4iCisgICAgICAgICAgICAgICAgKyAieSA9IHR5ID4gRGF0
ZS55MmtZZWFyID8gMTkwMCArIHR5IDogMjAwMCArIHR5O1xuIiwKKyAgICAgICAgICAgIHM6Iihc
XGR7MSwyfSkifTsKKyAgICBjYXNlICJhIjoKKyAgICAgICAgcmV0dXJuIHtnOjEsCisgICAgICAg
ICAgICBjOiJpZiAocmVzdWx0c1siICsgY3VycmVudEdyb3VwICsgIl0gPT0gJ2FtJykge1xuIgor
ICAgICAgICAgICAgICAgICsgImlmIChoID09IDEyKSB7IGggPSAwOyB9XG4iCisgICAgICAgICAg
ICAgICAgKyAifSBlbHNlIHsgaWYgKGggPCAxMikgeyBoICs9IDEyOyB9fSIsCisgICAgICAgICAg
ICBzOiIoYW18cG0pIn07CisgICAgY2FzZSAiQSI6CisgICAgICAgIHJldHVybiB7ZzoxLAorICAg
ICAgICAgICAgYzoiaWYgKHJlc3VsdHNbIiArIGN1cnJlbnRHcm91cCArICJdID09ICdBTScpIHtc
biIKKyAgICAgICAgICAgICAgICArICJpZiAoaCA9PSAxMikgeyBoID0gMDsgfVxuIgorICAgICAg
ICAgICAgICAgICsgIn0gZWxzZSB7IGlmIChoIDwgMTIpIHsgaCArPSAxMjsgfX0iLAorICAgICAg
ICAgICAgczoiKEFNfFBNKSJ9OworICAgIGNhc2UgImciOgorICAgIGNhc2UgIkciOgorICAgIGNh
c2UgImgiOgorICAgIGNhc2UgIkgiOgorICAgICAgICByZXR1cm4ge2c6MSwKKyAgICAgICAgICAg
IGM6ImggPSBwYXJzZUludChyZXN1bHRzWyIgKyBjdXJyZW50R3JvdXAgKyAiXSwgMTApO1xuIiwK
KyAgICAgICAgICAgIHM6IihcXGR7MSwyfSkifTsKKyAgICBjYXNlICJpIjoKKyAgICAgICAgcmV0
dXJuIHtnOjEsCisgICAgICAgICAgICBjOiJpID0gcGFyc2VJbnQocmVzdWx0c1siICsgY3VycmVu
dEdyb3VwICsgIl0sIDEwKTtcbiIsCisgICAgICAgICAgICBzOiIoXFxkezJ9KSJ9OworICAgIGNh
c2UgInMiOgorICAgICAgICByZXR1cm4ge2c6MSwKKyAgICAgICAgICAgIGM6InMgPSBwYXJzZUlu
dChyZXN1bHRzWyIgKyBjdXJyZW50R3JvdXAgKyAiXSwgMTApO1xuIiwKKyAgICAgICAgICAgIHM6
IihcXGR7Mn0pIn07CisgICAgY2FzZSAiTyI6CisgICAgICAgIHJldHVybiB7ZzowLAorICAgICAg
ICAgICAgYzpudWxsLAorICAgICAgICAgICAgczoiWystXVxcZHs0fSJ9OworICAgIGNhc2UgIlQi
OgorICAgICAgICByZXR1cm4ge2c6MCwKKyAgICAgICAgICAgIGM6bnVsbCwKKyAgICAgICAgICAg
IHM6IltBLVpdezN9In07CisgICAgY2FzZSAiWiI6CisgICAgICAgIHJldHVybiB7ZzowLAorICAg
ICAgICAgICAgYzpudWxsLAorICAgICAgICAgICAgczoiWystXVxcZHsxLDV9In07CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIHtnOjAsCisgICAgICAgICAgICBjOm51bGwsCisgICAgICAg
ICAgICBzOlN0cmluZy5lc2NhcGUoY2hhcmFjdGVyKX07CisgICAgfQorfQorCitEYXRlLnByb3Rv
dHlwZS5nZXRUaW1lem9uZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLnRvU3RyaW5n
KCkucmVwbGFjZSgKKyAgICAgICAgL14uKj8gKFtBLVpdezN9KSBbMC05XXs0fS4qJC8sICIkMSIp
LnJlcGxhY2UoCisgICAgICAgIC9eLio/XCgoW0EtWl0pW2Etel0rIChbQS1aXSlbYS16XSsgKFtB
LVpdKVthLXpdK1wpJC8sICIkMSQyJDMiKTsKK30KKworRGF0ZS5wcm90b3R5cGUuZ2V0R01UT2Zm
c2V0ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuICh0aGlzLmdldFRpbWV6b25lT2Zmc2V0KCkg
PiAwID8gIi0iIDogIisiKQorICAgICAgICArIFN0cmluZy5sZWZ0UGFkKE1hdGguZmxvb3IodGhp
cy5nZXRUaW1lem9uZU9mZnNldCgpIC8gNjApLCAyLCAiMCIpCisgICAgICAgICsgU3RyaW5nLmxl
ZnRQYWQodGhpcy5nZXRUaW1lem9uZU9mZnNldCgpICUgNjAsIDIsICIwIik7Cit9CisKK0RhdGUu
cHJvdG90eXBlLmdldERheU9mWWVhciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBudW0gPSAwOwor
ICAgIERhdGUuZGF5c0luTW9udGhbMV0gPSB0aGlzLmlzTGVhcFllYXIoKSA/IDI5IDogMjg7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmdldE1vbnRoKCk7ICsraSkgeworICAgICAgICBu
dW0gKz0gRGF0ZS5kYXlzSW5Nb250aFtpXTsKKyAgICB9CisgICAgcmV0dXJuIG51bSArIHRoaXMu
Z2V0RGF0ZSgpIC0gMTsKK30KKworRGF0ZS5wcm90b3R5cGUuZ2V0V2Vla09mWWVhciA9IGZ1bmN0
aW9uKCkgeworICAgIC8vIFNraXAgdG8gVGh1cnNkYXkgb2YgdGhpcyB3ZWVrCisgICAgdmFyIG5v
dyA9IHRoaXMuZ2V0RGF5T2ZZZWFyKCkgKyAoNCAtIHRoaXMuZ2V0RGF5KCkpOworICAgIC8vIEZp
bmQgdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyCisgICAgdmFyIGphbjEgPSBuZXcgRGF0
ZSh0aGlzLmdldEZ1bGxZZWFyKCksIDAsIDEpOworICAgIHZhciB0aGVuID0gKDcgLSBqYW4xLmdl
dERheSgpICsgNCk7CisgICAgZG9jdW1lbnQud3JpdGUodGhlbik7CisgICAgcmV0dXJuIFN0cmlu
Zy5sZWZ0UGFkKCgobm93IC0gdGhlbikgLyA3KSArIDEsIDIsICIwIik7Cit9CisKK0RhdGUucHJv
dG90eXBlLmlzTGVhcFllYXIgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgeWVhciA9IHRoaXMuZ2V0
RnVsbFllYXIoKTsKKyAgICByZXR1cm4gKCh5ZWFyICYgMykgPT0gMCAmJiAoeWVhciAlIDEwMCB8
fCAoeWVhciAlIDQwMCA9PSAwICYmIHllYXIpKSk7Cit9CisKK0RhdGUucHJvdG90eXBlLmdldEZp
cnN0RGF5T2ZNb250aCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBkYXkgPSAodGhpcy5nZXREYXko
KSAtICh0aGlzLmdldERhdGUoKSAtIDEpKSAlIDc7CisgICAgcmV0dXJuIChkYXkgPCAwKSA/IChk
YXkgKyA3KSA6IGRheTsKK30KKworRGF0ZS5wcm90b3R5cGUuZ2V0TGFzdERheU9mTW9udGggPSBm
dW5jdGlvbigpIHsKKyAgICB2YXIgZGF5ID0gKHRoaXMuZ2V0RGF5KCkgKyAoRGF0ZS5kYXlzSW5N
b250aFt0aGlzLmdldE1vbnRoKCldIC0gdGhpcy5nZXREYXRlKCkpKSAlIDc7CisgICAgcmV0dXJu
IChkYXkgPCAwKSA/IChkYXkgKyA3KSA6IGRheTsKK30KKworRGF0ZS5wcm90b3R5cGUuZ2V0RGF5
c0luTW9udGggPSBmdW5jdGlvbigpIHsKKyAgICBEYXRlLmRheXNJbk1vbnRoWzFdID0gdGhpcy5p
c0xlYXBZZWFyKCkgPyAyOSA6IDI4OworICAgIHJldHVybiBEYXRlLmRheXNJbk1vbnRoW3RoaXMu
Z2V0TW9udGgoKV07Cit9CisKK0RhdGUucHJvdG90eXBlLmdldFN1ZmZpeCA9IGZ1bmN0aW9uKCkg
eworICAgIHN3aXRjaCAodGhpcy5nZXREYXRlKCkpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAg
ICBjYXNlIDIxOgorICAgICAgICBjYXNlIDMxOgorICAgICAgICAgICAgcmV0dXJuICJzdCI7Cisg
ICAgICAgIGNhc2UgMjoKKyAgICAgICAgY2FzZSAyMjoKKyAgICAgICAgICAgIHJldHVybiAibmQi
OworICAgICAgICBjYXNlIDM6CisgICAgICAgIGNhc2UgMjM6CisgICAgICAgICAgICByZXR1cm4g
InJkIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAidGgiOworICAgIH0K
K30KKworU3RyaW5nLmVzY2FwZSA9IGZ1bmN0aW9uKHN0cmluZykgeworICAgIHJldHVybiBzdHJp
bmcucmVwbGFjZSgvKCd8XFwpL2csICJcXCQxIik7Cit9CisKK1N0cmluZy5sZWZ0UGFkID0gZnVu
Y3Rpb24gKHZhbCwgc2l6ZSwgY2gpIHsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZyh2YWwp
OworICAgIGlmIChjaCA9PSBudWxsKSB7CisgICAgICAgIGNoID0gIiAiOworICAgIH0KKyAgICB3
aGlsZSAocmVzdWx0Lmxlbmd0aCA8IHNpemUpIHsKKyAgICAgICAgcmVzdWx0ID0gY2ggKyByZXN1
bHQ7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0RhdGUuZGF5c0luTW9udGggPSBb
MzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdOworRGF0ZS5tb250aE5hbWVzID0K
KyAgIFsiSmFudWFyeSIsCisgICAgIkZlYnJ1YXJ5IiwKKyAgICAiTWFyY2giLAorICAgICJBcHJp
bCIsCisgICAgIk1heSIsCisgICAgIkp1bmUiLAorICAgICJKdWx5IiwKKyAgICAiQXVndXN0IiwK
KyAgICAiU2VwdGVtYmVyIiwKKyAgICAiT2N0b2JlciIsCisgICAgIk5vdmVtYmVyIiwKKyAgICAi
RGVjZW1iZXIiXTsKK0RhdGUuZGF5TmFtZXMgPQorICAgWyJTdW5kYXkiLAorICAgICJNb25kYXki
LAorICAgICJUdWVzZGF5IiwKKyAgICAiV2VkbmVzZGF5IiwKKyAgICAiVGh1cnNkYXkiLAorICAg
ICJGcmlkYXkiLAorICAgICJTYXR1cmRheSJdOworRGF0ZS55MmtZZWFyID0gNTA7CitEYXRlLm1v
bnRoTnVtYmVycyA9IHsKKyAgICBKYW46MCwKKyAgICBGZWI6MSwKKyAgICBNYXI6MiwKKyAgICBB
cHI6MywKKyAgICBNYXk6NCwKKyAgICBKdW46NSwKKyAgICBKdWw6NiwKKyAgICBBdWc6NywKKyAg
ICBTZXA6OCwKKyAgICBPY3Q6OSwKKyAgICBOb3Y6MTAsCisgICAgRGVjOjExfTsKK0RhdGUucGF0
dGVybnMgPSB7CisgICAgSVNPODYwMUxvbmdQYXR0ZXJuOiJZLW0tZCBIOmk6cyIsCisgICAgSVNP
ODYwMVNob3J0UGF0dGVybjoiWS1tLWQiLAorICAgIFNob3J0RGF0ZVBhdHRlcm46ICJuL2ovWSIs
CisgICAgTG9uZ0RhdGVQYXR0ZXJuOiAibCwgRiBkLCBZIiwKKyAgICBGdWxsRGF0ZVRpbWVQYXR0
ZXJuOiAibCwgRiBkLCBZIGc6aTpzIEEiLAorICAgIE1vbnRoRGF5UGF0dGVybjogIkYgZCIsCisg
ICAgU2hvcnRUaW1lUGF0dGVybjogImc6aSBBIiwKKyAgICBMb25nVGltZVBhdHRlcm46ICJnOmk6
cyBBIiwKKyAgICBTb3J0YWJsZURhdGVUaW1lUGF0dGVybjogIlktbS1kXFxUSDppOnMiLAorICAg
IFVuaXZlcnNhbFNvcnRhYmxlRGF0ZVRpbWVQYXR0ZXJuOiAiWS1tLWQgSDppOnNPIiwKKyAgICBZ
ZWFyTW9udGhQYXR0ZXJuOiAiRiwgWSJ9OworCit2YXIgZGF0ZSA9IG5ldyBEYXRlKCIxLzEvMjAw
NyAxOjExOjExIik7CisKK2ZvciAoaSA9IDA7IGkgPCA0MDAwOyArK2kpIHsKKyAgICB2YXIgc2hv
cnRGb3JtYXQgPSBkYXRlLmRhdGVGb3JtYXQoIlktbS1kIik7CisgICAgdmFyIGxvbmdGb3JtYXQg
PSBkYXRlLmRhdGVGb3JtYXQoImwsIEYgZCwgWSBnOmk6cyBBIik7CisgICAgZGF0ZS5zZXRUaW1l
KGRhdGUuZ2V0VGltZSgpICsgODQyNjY5NTYpOworfQorCisvLyBGSVhNRTogRmluZCBhIHdheSB0
byB2YWxpZGF0ZSB0aGlzIHRlc3QuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE0ODQ5CisKK30gY2F0Y2ggKGUpIHsKKyAgICBwcmludCgiSlNDIEVYQ0VQVElP
TiBGVVpaOiBDYXVnaHQgZXhjZXB0aW9uOiAiICsgZSk7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvZXhjZXB0aW9uRnV6ei9lYXJsZXktYm95ZXIuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2V4Y2VwdGlvbkZ1enovZWFybGV5LWJveWVy
LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2V4Y2VwdGlv
bkZ1enovZWFybGV5LWJveWVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDY4OSBAQAor
dHJ5IHsKKy8vIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBzY2hlbWUy
anMsIGV4Y2VwdCBmb3IgdGhlCisvLyBiZW5jaG1hcmsgaGFybmVzcyBjb2RlIGF0IHRoZSBiZWdp
bm5pbmcgYW5kIGVuZCBvZiB0aGUgZmlsZS4KKworLyoqKioqKioqKioqKiogR0VORVJBVEVEIEZJ
TEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiogR0VORVJBVEVE
IEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiogR0VORVJB
VEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiogR0VO
RVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioqKiog
R0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioqKioq
KiogR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioqKioq
KioqKiogR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoqKioq
KioqKioqKiogR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVCAqKioqKioqKioqKioqLworLyoK
KyAqIFRvIHVzZSB3cml0ZS9wcmludHMvLi4uIHRoZSBkZWZhdWx0LW91dHB1dCBwb3J0IGhhcyB0
byBiZSBzZXQgZmlyc3QuCisgKiBTaW1wbHkgc2V0dGluZyBTQ19ERUZBVUxUX09VVCBhbmQgU0Nf
RVJST1JfT1VUIHRvIHRoZSBkZXNpcmVkIHZhbHVlcworICogc2hvdWxkIGRvIHRoZSB0cmljay4K
KyAqIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSB0aGUgc3RkLW91dCBhbmQgZXJyb3ItcG9ydCBh
cmUgcmVkaXJlY3RlZCB0bworICogYSBESVYuCitmdW5jdGlvbiBpbml0UnVudGltZSgpIHsKKyAg
ICBmdW5jdGlvbiBlc2NhcGVIVE1MKHMpIHsKKwl2YXIgdG1wID0gczsKKwl0bXAgPSB0bXAucmVw
bGFjZSgvJi9nLCAiJmFtcDsiKTsKKwl0bXAgPSB0bXAucmVwbGFjZSgvPC9nLCAiJmx0OyIpOwor
CXRtcCA9IHRtcC5yZXBsYWNlKC8+L2csICImZ3Q7Iik7CisJdG1wID0gdG1wLnJlcGxhY2UoLyAv
ZywgIiZuYnNwOyIpOworCXRtcCA9IHRtcC5yZXBsYWNlKC9cbi9nLCAiPGJyIC8+Iik7CisJdG1w
ID0gdG1wLnJlcGxhY2UoL1x0L2csICImbmJzcDsmbmJzcDsmbmJzcDsmbmJzcCIpOworCXJldHVy
biB0bXA7CisJCisgICAgfQorCisgICAgZG9jdW1lbnQud3JpdGUoIjxkaXYgaWQ9J3N0ZG91dCc+
PC9kaXY+Iik7CisgICAgU0NfREVGQVVMVF9PVVQgPSBuZXcgc2NfR2VuZXJpY091dHB1dFBvcnQo
CisJZnVuY3Rpb24ocykgeworCSAgICB2YXIgc3Rkb3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3N0ZG91dCcpOworCSAgICBzdGRvdXQuaW5uZXJIVE1MID0gc3Rkb3V0LmlubmVySFRNTCAr
IGVzY2FwZUhUTUwocyk7CisJfSk7CisgICAgU0NfRVJST1JfT1VUID0gU0NfREVGQVVMVF9PVVQ7
Cit9CisqLworCisKK2Z1bmN0aW9uIHNjX3ByaW50X2RlYnVnKCkgeworICAgIHNjX3ByaW50LmFw
cGx5KG51bGwsIGFyZ3VtZW50cyk7Cit9CisvKioqIE1FVEEgKChleHBvcnQgKmpzKikpICovCit2
YXIgc2NfSlNfR0xPQkFMUyA9IHRoaXM7CisKK3ZhciBfX3NjX0xJTkU9LTE7Cit2YXIgX19zY19G
SUxFPSIiOworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYWxlcnQo
KSB7CisgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDsKKyAgIHZhciBzID0gIiI7CisgICB2
YXIgaTsKKworICAgZm9yKCBpID0gMDsgaSA8IGxlbjsgaSsrICkgeworICAgICAgIHMgKz0gc2Nf
dG9EaXNwbGF5U3RyaW5nKGFyZ3VtZW50c1sgaSBdKTsKKyAgIH0KKworICAgcmV0dXJuIGFsZXJ0
KCBzICk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY190eXBl
b2YoIHggKSB7CisgICByZXR1cm4gdHlwZW9mIHg7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkpICovCitmdW5jdGlvbiBzY19lcnJvcigpIHsKKyAgICB2YXIgYSA9IFtzY19qc3N0cmluZzJz
eW1ib2woIiplcnJvcioiKV07CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVu
Z3RoOyBpKyspIHsKKwlhW2krMV0gPSBhcmd1bWVudHNbaV07CisgICAgfQorICAgIHRocm93IGE7
Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwcmVm
aXggInRocm93ICIpKSkKKyovCitmdW5jdGlvbiBzY19yYWlzZShvYmopIHsKKyAgICB0aHJvdyBv
Ymo7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCB3aXRoLWhhbmRsZXItbGFtYmRhKSkgKi8KK2Z1
bmN0aW9uIHNjX3dpdGhIYW5kbGVyTGFtYmRhKGhhbmRsZXIsIGJvZHkpIHsKKyAgICB0cnkgewor
CXJldHVybiBib2R5KCk7CisgICAgfSBjYXRjaChlKSB7CisJaWYgKCFlLl9pbnRlcm5hbEV4Y2Vw
dGlvbikKKwkgICAgcmV0dXJuIGhhbmRsZXIoZSk7CisJZWxzZQorCSAgICB0aHJvdyBlOworICAg
IH0KK30KKwordmFyIHNjX3Byb3BlcnRpZXMgPSBuZXcgT2JqZWN0KCk7CisKKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19wdXRwcm9wQmFuZyhzeW0sIGtleSwgdmFsKSB7
CisgICAgdmFyIGh0ID0gc2NfcHJvcGVydGllc1tzeW1dOworICAgIGlmICghaHQpIHsKKwlodCA9
IG5ldyBPYmplY3QoKTsKKwlzY19wcm9wZXJ0aWVzW3N5bV0gPSBodDsKKyAgICB9CisgICAgaHRb
a2V5XSA9IHZhbDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNj
X2dldHByb3Aoc3ltLCBrZXkpIHsKKyAgICB2YXIgaHQgPSBzY19wcm9wZXJ0aWVzW3N5bV07Cisg
ICAgaWYgKGh0KSB7CisJaWYgKGtleSBpbiBodCkKKwkgICAgcmV0dXJuIGh0W2tleV07CisJZWxz
ZQorCSAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlCisJcmV0dXJuIGZhbHNlOworfQorCisv
KioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcmVtcHJvcEJhbmcoc3ltLCBr
ZXkpIHsKKyAgICB2YXIgaHQgPSBzY19wcm9wZXJ0aWVzW3N5bV07CisgICAgaWYgKGh0KQorCWRl
bGV0ZSBodFtrZXldOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24g
c2NfYW55MlN0cmluZyhvKSB7CisgICAgcmV0dXJuIGpzc3RyaW5nMnN0cmluZyhzY190b0Rpc3Bs
YXlTdHJpbmcobykpOworfSAgICAKKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAg
ICAocGVlcGhvbGUgKGluZml4IDIgMiAiPT09IikpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQor
Ki8KK2Z1bmN0aW9uIHNjX2lzRXF2KG8xLCBvMikgeworICAgIHJldHVybiAobzEgPT09IG8yKTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4
IDIgMiAiPT09IikpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lz
RXEobzEsIG8yKSB7CisgICAgcmV0dXJuIChvMSA9PT0gbzIpOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzTnVt
YmVyKG4pIHsKKyAgICByZXR1cm4gKHR5cGVvZiBuID09PSAibnVtYmVyIik7Cit9CisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24g
c2NfaXNDb21wbGV4KG4pIHsKKyAgICByZXR1cm4gc2NfaXNOdW1iZXIobik7Cit9CisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24g
c2NfaXNSZWFsKG4pIHsKKyAgICByZXR1cm4gc2NfaXNOdW1iZXIobik7Cit9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2Nf
aXNSYXRpb25hbChuKSB7CisgICAgcmV0dXJuIHNjX2lzUmVhbChuKTsKK30KKworLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKSkKKyovCitmdW5jdGlvbiBzY19p
c0ludGVnZXIobikgeworICAgIHJldHVybiAocGFyc2VJbnQobikgPT09IG4pOworfQorCisvKioq
IE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChw
ZWVwaG9sZSAocG9zdGZpeCAiLCBmYWxzZSIpKSkKKyovCisvLyB3ZSBkb24ndCBoYXZlIGV4YWN0
IG51bWJlcnMuLi4KK2Z1bmN0aW9uIHNjX2lzRXhhY3QobikgeworICAgIHJldHVybiBmYWxzZTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3Rm
aXggIiwgdHJ1ZSIpKQorCSAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzSW5leGFj
dChuKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCA9ID1meCA9
ZmwpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaW5maXgg
MiAyICI9PT0iKSkpCisqLworZnVuY3Rpb24gc2NfZXF1YWwoeCkgeworICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorCWlmICh4ICE9PSBhcmd1bWVudHNbaV0p
CisJICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyoqKiBNRVRBICgo
ZXhwb3J0IDwgPGZ4IDxmbCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBl
ZXBob2xlIChpbmZpeCAyIDIgIjwiKSkpCisqLworZnVuY3Rpb24gc2NfbGVzcyh4KSB7CisgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKwlpZiAoeCA+PSBh
cmd1bWVudHNbaV0pCisJICAgIHJldHVybiBmYWxzZTsKKwl4ID0gYXJndW1lbnRzW2ldOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ID4gPmZ4ID5mbCkK
KyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIg
Ij4iKSkpCisqLworZnVuY3Rpb24gc2NfZ3JlYXRlcih4LCB5KSB7CisgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKwlpZiAoeCA8PSBhcmd1bWVudHNbaV0p
CisJICAgIHJldHVybiBmYWxzZTsKKwl4ID0gYXJndW1lbnRzW2ldOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IDw9IDw9ZnggPD1mbCkKKyAgICAgICAg
ICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIjw9IikpKQor
Ki8KK2Z1bmN0aW9uIHNjX2xlc3NFcXVhbCh4LCB5KSB7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKwlpZiAoeCA+IGFyZ3VtZW50c1tpXSkKKwkgICAg
cmV0dXJuIGZhbHNlOworCXggPSBhcmd1bWVudHNbaV07CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCisvKioqIE1FVEEgKChleHBvcnQgPj0gPj1mbCA+PWZ4KQorICAgICAgICAgICAodHlw
ZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDIgMiAiPj0iKSkpCisqLworZnVu
Y3Rpb24gc2NfZ3JlYXRlckVxdWFsKHgsIHkpIHsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFy
Z3VtZW50cy5sZW5ndGg7IGkrKykgeworCWlmICh4IDwgYXJndW1lbnRzW2ldKQorCSAgICByZXR1
cm4gZmFsc2U7CisJeCA9IGFyZ3VtZW50c1tpXTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAg
ICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICI9PT0gMCIpKSkKKyovCitmdW5jdGlvbiBzY19pc1pl
cm8oeCkgeworICAgIHJldHVybiAoeCA9PT0gMCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4
ICI+IDAiKSkpCisqLworZnVuY3Rpb24gc2NfaXNQb3NpdGl2ZSh4KSB7CisgICAgcmV0dXJuICh4
ID4gMCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9v
bCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICI8IDAiKSkpCisqLworZnVuY3Rpb24g
c2NfaXNOZWdhdGl2ZSh4KSB7CisgICAgcmV0dXJuICh4IDwgMCk7Cit9CisKKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xl
IChwb3N0Zml4ICIlMj09PTEiKSkpCisqLworZnVuY3Rpb24gc2NfaXNPZGQoeCkgeworICAgIHJl
dHVybiAoeCAlIDIgPT09IDEpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAg
ICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiJTI9PT0wIikp
KQorKi8KK2Z1bmN0aW9uIHNjX2lzRXZlbih4KSB7CisgICAgcmV0dXJuICh4ICUgMiA9PT0gMCk7
Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfbWF4ID0gTWF0aC5tYXg7
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX21pbiA9IE1hdGgubWluOworCisv
KioqIE1FVEEgKChleHBvcnQgKyArZnggK2ZsKQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4
IDAgI2YgIisiICIwIikpKQorKi8KK2Z1bmN0aW9uIHNjX3BsdXMoKSB7CisgICAgdmFyIHN1bSA9
IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJc3Vt
ICs9IGFyZ3VtZW50c1tpXTsKKyAgICByZXR1cm4gc3VtOworfQorCisvKioqIE1FVEEgKChleHBv
cnQgKiAqZnggKmZsKQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDAgI2YgIioiICIxIikp
KQorKi8KK2Z1bmN0aW9uIHNjX211bHRpKCkgeworICAgIHZhciBwcm9kdWN0ID0gMTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKwlwcm9kdWN0ICo9IGFy
Z3VtZW50c1tpXTsKKyAgICByZXR1cm4gcHJvZHVjdDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0
IC0gLWZ4IC1mbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChtaW51cykpKQorKi8KK2Z1bmN0aW9u
IHNjX21pbnVzKHgpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkKKwlyZXR1cm4g
LXg7CisgICAgZWxzZSB7CisJdmFyIHJlcyA9IHg7CisJZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1
bWVudHMubGVuZ3RoOyBpKyspCisJICAgIHJlcyAtPSBhcmd1bWVudHNbaV07CisJcmV0dXJuIHJl
czsKKyAgICB9Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAvIC9mbCkKKyAgICAgICAgICAgKHBl
ZXBob2xlIChkaXYpKSkKKyovCitmdW5jdGlvbiBzY19kaXYoeCkgeworICAgIGlmIChhcmd1bWVu
dHMubGVuZ3RoID09PSAxKQorCXJldHVybiAxL3g7CisgICAgZWxzZSB7CisJdmFyIHJlcyA9IHg7
CisJZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJICAgIHJlcyAv
PSBhcmd1bWVudHNbaV07CisJcmV0dXJuIHJlczsKKyAgICB9Cit9CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkpICovCit2YXIgc2NfYWJzID0gTWF0aC5hYnM7CisKKy8qKiogTUVUQSAoKGV4cG9y
dCBxdW90aWVudCAvZngpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyICJwYXJzZUludCgi
IHggIi8iIHkgIikiKSkpCisqLworZnVuY3Rpb24gc2NfcXVvdGllbnQoeCwgeSkgeworICAgIHJl
dHVybiBwYXJzZUludCh4IC8geSk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAg
ICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIiUiKSkpCisqLworZnVuY3Rpb24gc2NfcmVtYWlu
ZGVyKHgsIHkpIHsKKyAgICByZXR1cm4geCAlIHk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkKKyAgICAgICAgICAgKHBlZXBob2xlIChtb2R1bG8pKSkKKyovCitmdW5jdGlvbiBzY19tb2R1
bG8oeCwgeSkgeworICAgIHZhciByZW1haW5kZXIgPSB4ICUgeTsKKyAgICAvLyBpZiB0aGV5IGRv
bid0IGhhdmUgdGhlIHNhbWUgc2lnbgorICAgIGlmICgocmVtYWluZGVyICogeSkgPCAwKQorCXJl
dHVybiByZW1haW5kZXIgKyB5OworICAgIGVsc2UKKwlyZXR1cm4gcmVtYWluZGVyOworfQorCitm
dW5jdGlvbiBzY19ldWNsaWRfZ2NkKGEsIGIpIHsKKyAgICB2YXIgdGVtcDsKKyAgICBpZiAoYSA9
PT0gMCkgcmV0dXJuIGI7CisgICAgaWYgKGIgPT09IDApIHJldHVybiBhOworICAgIGlmIChhIDwg
MCkge2EgPSAtYTt9OworICAgIGlmIChiIDwgMCkge2IgPSAtYjt9OworICAgIGlmIChiID4gYSkg
e3RlbXAgPSBhOyBhID0gYjsgYiA9IHRlbXA7fTsKKyAgICB3aGlsZSAodHJ1ZSkgeworCWEgJT0g
YjsKKwlpZihhID09PSAwKSB7cmV0dXJuIGI7fTsKKwliICU9IGE7CisJaWYoYiA9PT0gMCkge3Jl
dHVybiBhO307CisgICAgfTsKKyAgICByZXR1cm4gYjsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0
ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2djZCgpIHsKKyAgICB2YXIgZ2NkID0gMDsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKwlnY2QgPSBzY19ldWNsaWRf
Z2NkKGdjZCwgYXJndW1lbnRzW2ldKTsKKyAgICByZXR1cm4gZ2NkOworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbGNtKCkgeworICAgIHZhciBsY20gPSAxOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisJdmFyIGYg
PSBNYXRoLnJvdW5kKGFyZ3VtZW50c1tpXSAvIHNjX2V1Y2xpZF9nY2QoYXJndW1lbnRzW2ldLCBs
Y20pKTsKKwlsY20gKj0gTWF0aC5hYnMoZik7CisgICAgfQorICAgIHJldHVybiBsY207Cit9CisK
Ky8vIExJTUlUQVRJT046IG51bWVyYXRvciBhbmQgZGVub21pbmF0b3IgZG9uJ3QgbWFrZSBzZW5z
ZSBpbiBmbG9hdGluZyBwb2ludCB3b3JsZC4KKy8vdmFyIFNDX01BWF9ERUNJTUFMUyA9IDEwMDAw
MDAKKy8vCisvLyBmdW5jdGlvbiBzY19udW1lcmF0b3IoeCkgeworLy8gICAgIHZhciByb3VuZGVk
ID0gTWF0aC5yb3VuZCh4ICogU0NfTUFYX0RFQ0lNQUxTKTsKKy8vICAgICByZXR1cm4gTWF0aC5y
b3VuZChyb3VuZGVkIC8gc2NfZXVjbGlkX2djZChyb3VuZGVkLCBTQ19NQVhfREVDSU1BTFMpKTsK
Ky8vIH0KKworLy8gZnVuY3Rpb24gc2NfZGVub21pbmF0b3IoeCkgeworLy8gICAgIHZhciByb3Vu
ZGVkID0gTWF0aC5yb3VuZCh4ICogU0NfTUFYX0RFQ0lNQUxTKTsKKy8vICAgICByZXR1cm4gTWF0
aC5yb3VuZChTQ19NQVhfREVDSU1BTFMgLyBzY19ldWNsaWRfZ2NkKHJvdW5kZWQsIFNDX01BWF9E
RUNJTUFMUykpOworLy8gfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2Zs
b29yID0gTWF0aC5mbG9vcjsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfY2Vp
bGluZyA9IE1hdGguY2VpbDsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfdHJ1
bmNhdGUgPSBwYXJzZUludDsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2Nfcm91
bmQgPSBNYXRoLnJvdW5kOworCisvLyBMSU1JVEFUSU9OOiBzY19yYXRpb25hbGl6ZSBkb2Vzbid0
IG1ha2Ugc2Vuc2UgaW4gYSBmbG9hdGluZyBwb2ludCB3b3JsZC4KKworLyoqKiBNRVRBICgoZXhw
b3J0ICN0KSkgKi8KK3ZhciBzY19leHAgPSBNYXRoLmV4cDsKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkpICovCit2YXIgc2NfbG9nID0gTWF0aC5sb2c7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAq
LwordmFyIHNjX3NpbiA9IE1hdGguc2luOworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3Zh
ciBzY19jb3MgPSBNYXRoLmNvczsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2Nf
dGFuID0gTWF0aC50YW47CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2FzaW4g
PSBNYXRoLmFzaW47CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2Fjb3MgPSBN
YXRoLmFjb3M7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2F0YW4gPSBNYXRo
LmF0YW47CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2Nfc3FydCA9IE1hdGgu
c3FydDsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfZXhwdCA9IE1hdGgucG93
OworCisvLyBMSU1JVEFUSU9OOiB3ZSBkb24ndCBoYXZlIGNvbXBsZXggbnVtYmVycy4KKy8vIExJ
TUlUQVRJT046IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBoZW5jZSBub3QgaW1wbGVtZW50
ZWQuCisvLyBMSU1JVEFUSU9OOiBtYWtlLXJlY3Rhbmd1bGFyLCBtYWtlLXBvbGFyLCByZWFsLXBh
cnQsIGltYWctcGFydCwgbWFnbml0dWRlLCBhbmdsZQorLy8gTElNSVRBVElPTjogMiBhcmd1bWVu
dCBhdGFuCisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChp
ZCkpKQorKi8KK2Z1bmN0aW9uIHNjX2V4YWN0MmluZXhhY3QoeCkgeworICAgIHJldHVybiB4Owor
fQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaWQpKSkK
KyovCitmdW5jdGlvbiBzY19pbmV4YWN0MmV4YWN0KHgpIHsKKyAgICByZXR1cm4geDsKK30KKwor
ZnVuY3Rpb24gc2NfbnVtYmVyMmpzc3RyaW5nKHgsIHJhZGl4KSB7CisgICAgaWYgKHJhZGl4KQor
CXJldHVybiB4LnRvU3RyaW5nKHJhZGl4KTsKKyAgICBlbHNlCisJcmV0dXJuIHgudG9TdHJpbmco
KTsKK30KKworZnVuY3Rpb24gc2NfanNzdHJpbmcybnVtYmVyKHMsIHJhZGl4KSB7CisgICAgaWYg
KHMgPT09ICIiKSByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAocmFkaXgpIHsKKwl2YXIgdCA9IHBh
cnNlSW50KHMsIHJhZGl4KTsKKwlpZiAoIXQgJiYgdCAhPT0gMCkgcmV0dXJuIGZhbHNlOworCS8v
IHZlcmlmeSB0aGF0IGVhY2ggY2hhciBpcyBpbiByYW5nZS4gKHBhcnNlSW50IGlnbm9yZXMgbGVh
ZGluZworCS8vIHdoaXRlIGFuZCB0cmFpbGluZyBjaGFycykKKwl2YXIgYWxsb3dlZENoYXJzID0g
IjAxMjM0NTY3ODkwYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLnN1YnN0cmluZygwLCByYWRp
eCsxKTsKKwlpZiAoKG5ldyBSZWdFeHAoIl5bIithbGxvd2VkQ2hhcnMrIl0qJCIsICJpIikpLnRl
c3QocykpCisJICAgIHJldHVybiB0OworCWVsc2UgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7
CisJdmFyIHQgPSArczsgLy8gZG9lcyBub3QgaWdub3JlIHRyYWlsaW5nIGNoYXJzLgorCWlmICgh
dCAmJiB0ICE9PSAwKSByZXR1cm4gZmFsc2U7CisJLy8gc2ltcGx5IHZlcmlmeSB0aGF0IGZpcnN0
IGNoYXIgaXMgbm90IHdoaXRlc3BhY2UuCisJdmFyIGMgPSBzLmNoYXJBdCgwKTsKKwkvLyBpZiAr
YyBpcyAwLCBidXQgdGhlIGNoYXIgaXMgbm90ICIwIiwgdGhlbiB3ZSBoYXZlIGEgd2hpdGVzcGFj
ZS4KKwlpZiAoK2MgPT09IDAgJiYgYyAhPT0gIjAiKSByZXR1cm4gZmFsc2U7CisJcmV0dXJuIHQ7
CisgICAgfQorfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJv
b2wpCisgICAgICAgICAgIChwZWVwaG9sZSAobm90KSkpCisqLworZnVuY3Rpb24gc2Nfbm90KGIp
IHsKKyAgICByZXR1cm4gYiA9PT0gZmFsc2U7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkK
KyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNCb29sZWFuKGIpIHsK
KyAgICByZXR1cm4gKGIgPT09IHRydWUpIHx8IChiID09PSBmYWxzZSk7Cit9CisKK2Z1bmN0aW9u
IHNjX1BhaXIoY2FyLCBjZHIpIHsKKyAgICB0aGlzLmNhciA9IGNhcjsKKyAgICB0aGlzLmNkciA9
IGNkcjsKK30KKworc2NfUGFpci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAg
ICByZXR1cm4gc2NfdG9EaXNwbGF5U3RyaW5nKHRoaXMpOworfTsKK3NjX1BhaXIucHJvdG90eXBl
LnNjX3RvV3JpdGVPckRpc3BsYXlTdHJpbmcgPSBmdW5jdGlvbih3cml0ZU9yRGlzcGxheSkgewor
ICAgIHZhciBjdXJyZW50ID0gdGhpczsKKworICAgIHZhciByZXMgPSAiKCI7CisKKyAgICB3aGls
ZSh0cnVlKSB7CisJcmVzICs9IHdyaXRlT3JEaXNwbGF5KGN1cnJlbnQuY2FyKTsKKwlpZiAoc2Nf
aXNQYWlyKGN1cnJlbnQuY2RyKSkgeworCSAgICByZXMgKz0gIiAiOworCSAgICBjdXJyZW50ID0g
Y3VycmVudC5jZHI7CisJfSBlbHNlIGlmIChjdXJyZW50LmNkciAhPT0gbnVsbCkgeworCSAgICBy
ZXMgKz0gIiAuICIgKyB3cml0ZU9yRGlzcGxheShjdXJyZW50LmNkcik7CisJICAgIGJyZWFrOwor
CX0gZWxzZSAvLyBjdXJyZW50LmNkciA9PSBudWxsCisJICAgIGJyZWFrOworICAgIH0KKwkKKyAg
ICByZXMgKz0gIikiOworCisgICAgcmV0dXJuIHJlczsKK307CitzY19QYWlyLnByb3RvdHlwZS5z
Y190b0Rpc3BsYXlTdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5zY190b1dy
aXRlT3JEaXNwbGF5U3RyaW5nKHNjX3RvRGlzcGxheVN0cmluZyk7Cit9Oworc2NfUGFpci5wcm90
b3R5cGUuc2NfdG9Xcml0ZVN0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLnNj
X3RvV3JpdGVPckRpc3BsYXlTdHJpbmcoc2NfdG9Xcml0ZVN0cmluZyk7Cit9OworLy8gc2NfUGFp
ci5wcm90b3R5cGUuc2NfdG9Xcml0ZUNpcmNsZVN0cmluZyBpbiBJTy5qcworCisvKioqIE1FVEEg
KChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9s
ZSAocG9zdGZpeCAiIGluc3RhbmNlb2Ygc2NfUGFpciIpKSkKKyovCitmdW5jdGlvbiBzY19pc1Bh
aXIocCkgeworICAgIHJldHVybiAocCBpbnN0YW5jZW9mIHNjX1BhaXIpOworfQorCitmdW5jdGlv
biBzY19pc1BhaXJFcXVhbChwMSwgcDIsIGNvbXApIHsKKyAgICByZXR1cm4gKGNvbXAocDEuY2Fy
LCBwMi5jYXIpICYmIGNvbXAocDEuY2RyLCBwMi5jZHIpKTsKK30KKworLyoqKiBNRVRBICgoZXhw
b3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiAibmV3IHNjX1BhaXIoIiBjYXIg
IiwgIiBjZHIgIikiKSkpCisqLworZnVuY3Rpb24gc2NfY29ucyhjYXIsIGNkcikgeworICAgIHJl
dHVybiBuZXcgc2NfUGFpcihjYXIsIGNkcik7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBjb25z
KikpICovCitmdW5jdGlvbiBzY19jb25zU3RhcigpIHsKKyAgICB2YXIgcmVzID0gYXJndW1lbnRz
W2FyZ3VtZW50cy5sZW5ndGggLSAxXTsKKyAgICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0
aC0yOyBpID49IDA7IGktLSkKKwlyZXMgPSBuZXcgc2NfUGFpcihhcmd1bWVudHNbaV0sIHJlcyk7
CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAg
ICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FyKHApIHsK
KyAgICByZXR1cm4gcC5jYXI7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkcihwKSB7
CisgICAgcmV0dXJuIHAuY2RyOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAg
ICAgIChwZWVwaG9sZSAoaG9sZSAyIHAgIi5jYXIgPSAiIHZhbCkpKQorKi8KK2Z1bmN0aW9uIHNj
X3NldENhckJhbmcocCwgdmFsKSB7CisgICAgcC5jYXIgPSB2YWw7Cit9CisKKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgcCAiLmNkciA9ICIgdmFs
KSkpCisqLworZnVuY3Rpb24gc2Nfc2V0Q2RyQmFuZyhwLCB2YWwpIHsKKyAgICBwLmNkciA9IHZh
bDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBv
c3RmaXggIi5jYXIuY2FyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhYXIocCkgeyByZXR1cm4gcC5j
YXIuY2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAo
cG9zdGZpeCAiLmNkci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FkcihwKSB7IHJldHVybiBw
LmNkci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xl
IChwb3N0Zml4ICIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGFyKHApIHsgcmV0dXJu
IHAuY2FyLmNkcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhv
bGUgKHBvc3RmaXggIi5jZHIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkZHIocCkgeyByZXR1
cm4gcC5jZHIuY2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVw
aG9sZSAocG9zdGZpeCAiLmNhci5jYXIuY2FyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhYWFyKHAp
IHsgcmV0dXJuIHAuY2FyLmNhci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAg
ICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNkci5jYXIiKSkpCisqLworZnVuY3Rpb24g
c2NfY2FkYXIocCkgeyByZXR1cm4gcC5jYXIuY2RyLmNhcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0
ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jZHIuY2FyLmNhciIpKSkKKyov
CitmdW5jdGlvbiBzY19jYWFkcihwKSB7IHJldHVybiBwLmNkci5jYXIuY2FyOyB9CisvKioqIE1F
VEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNkci5jZHIu
Y2FyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhZGRyKHApIHsgcmV0dXJuIHAuY2RyLmNkci5jYXI7
IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4
ICIuY2FyLmNhci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RhYXIocCkgeyByZXR1cm4gcC5j
YXIuY2FyLmNkcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhv
bGUgKHBvc3RmaXggIi5jZHIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGFkcihwKSB7
IHJldHVybiBwLmNkci5jYXIuY2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAg
ICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNhci5jZHIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNj
X2NkZGFyKHApIHsgcmV0dXJuIHAuY2FyLmNkci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNkci5jZHIiKSkpCisqLwor
ZnVuY3Rpb24gc2NfY2RkZHIocCkgeyByZXR1cm4gcC5jZHIuY2RyLmNkcjsgfQorLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIuY2FyLmNh
ci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FhYWFyKHApIHsgcmV0dXJuIHAuY2FyLmNhci5j
YXIuY2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAo
cG9zdGZpeCAiLmNhci5jZHIuY2FyLmNhciIpKSkKKyovCitmdW5jdGlvbiBzY19jYWFkYXIocCkg
eyByZXR1cm4gcC5jYXIuY2RyLmNhci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAg
ICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNhci5jYXIuY2FyIikpKQorKi8KK2Z1
bmN0aW9uIHNjX2NhYWFkcihwKSB7IHJldHVybiBwLmNkci5jYXIuY2FyLmNhcjsgfQorLyoqKiBN
RVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jZHIuY2Ry
LmNhci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FhZGRyKHApIHsgcmV0dXJuIHAuY2RyLmNk
ci5jYXIuY2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9s
ZSAocG9zdGZpeCAiLmNhci5jYXIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGFhYXIo
cCkgeyByZXR1cm4gcC5jYXIuY2FyLmNhci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkK
KyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNkci5jYXIuY2RyIikpKQorKi8K
K2Z1bmN0aW9uIHNjX2NkYWRhcihwKSB7IHJldHVybiBwLmNhci5jZHIuY2FyLmNkcjsgfQorLyoq
KiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jZHIu
Y2FyLmNhci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RhYWRyKHApIHsgcmV0dXJuIHAuY2Ry
LmNhci5jYXIuY2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVw
aG9sZSAocG9zdGZpeCAiLmNkci5jZHIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGFk
ZHIocCkgeyByZXR1cm4gcC5jZHIuY2RyLmNhci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNhci5jZHIuY2FyIikpKQor
Ki8KK2Z1bmN0aW9uIHNjX2NhZGFhcihwKSB7IHJldHVybiBwLmNhci5jYXIuY2RyLmNhcjsgfQor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5j
YXIuY2RyLmNkci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FkZGFyKHApIHsgcmV0dXJuIHAu
Y2FyLmNkci5jZHIuY2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChw
ZWVwaG9sZSAocG9zdGZpeCAiLmNkci5jYXIuY2RyLmNhciIpKSkKKyovCitmdW5jdGlvbiBzY19j
YWRhZHIocCkgeyByZXR1cm4gcC5jZHIuY2FyLmNkci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNkci5jZHIuY2FyIikp
KQorKi8KK2Z1bmN0aW9uIHNjX2NhZGRkcihwKSB7IHJldHVybiBwLmNkci5jZHIuY2RyLmNhcjsg
fQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXgg
Ii5jYXIuY2FyLmNkci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RkYWFyKHApIHsgcmV0dXJu
IHAuY2FyLmNhci5jZHIuY2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAg
IChwZWVwaG9sZSAocG9zdGZpeCAiLmNhci5jZHIuY2RyLmNkciIpKSkKKyovCitmdW5jdGlvbiBz
Y19jZGRkYXIocCkgeyByZXR1cm4gcC5jYXIuY2RyLmNkci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNhci5jZHIuY2Ry
IikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkZGFkcihwKSB7IHJldHVybiBwLmNkci5jYXIuY2RyLmNk
cjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3Rm
aXggIi5jZHIuY2RyLmNkci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RkZGRyKHApIHsgcmV0
dXJuIHAuY2RyLmNkci5jZHIuY2RyOyB9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitm
dW5jdGlvbiBzY19sYXN0UGFpcihsKSB7CisgICAgaWYgKCFzY19pc1BhaXIobCkpIHNjX2Vycm9y
KCJzY19sYXN0UGFpcjogcGFpciBleHBlY3RlZCIpOworICAgIHZhciByZXMgPSBsOworICAgIHZh
ciBjZHIgPSBsLmNkcjsKKyAgICB3aGlsZSAoc2NfaXNQYWlyKGNkcikpIHsKKwlyZXMgPSBjZHI7
CisJY2RyID0gcmVzLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhv
bGUgKHBvc3RmaXggIiA9PT0gbnVsbCIpKSkKKyovCitmdW5jdGlvbiBzY19pc051bGwobykgewor
ICAgIHJldHVybiAobyA9PT0gbnVsbCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAg
ICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNMaXN0KG8pIHsKKyAgICB2
YXIgcmFiYml0OworICAgIHZhciB0dXJ0bGU7CisKKyAgICB2YXIgcmFiYml0ID0gbzsKKyAgICB2
YXIgdHVydGxlID0gbzsKKyAgICB3aGlsZSAodHJ1ZSkgeworCWlmIChyYWJiaXQgPT09IG51bGwg
fHwKKwkgICAgKHJhYmJpdCBpbnN0YW5jZW9mIHNjX1BhaXIgJiYgcmFiYml0LmNkciA9PT0gbnVs
bCkpCisJICAgIHJldHVybiB0cnVlOyAgLy8gZW5kIG9mIGxpc3QKKwllbHNlIGlmICgocmFiYml0
IGluc3RhbmNlb2Ygc2NfUGFpcikgJiYKKwkJIChyYWJiaXQuY2RyIGluc3RhbmNlb2Ygc2NfUGFp
cikpIHsKKwkgICAgcmFiYml0ID0gcmFiYml0LmNkci5jZHI7CisJICAgIHR1cnRsZSA9IHR1cnRs
ZS5jZHI7CisJICAgIGlmIChyYWJiaXQgPT09IHR1cnRsZSkgcmV0dXJuIGZhbHNlOyAvLyBjeWNs
ZQorCX0gZWxzZQorCSAgICByZXR1cm4gZmFsc2U7IC8vIG5vdCBwYWlyCisgICAgfQorfQorCisv
KioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbGlzdCgpIHsKKyAgICB2YXIg
cmVzID0gbnVsbDsKKyAgICB2YXIgYSA9IGFyZ3VtZW50czsKKyAgICBmb3IgKHZhciBpID0gYS5s
ZW5ndGgtMTsgaSA+PSAwOyBpLS0pCisJcmVzID0gbmV3IHNjX1BhaXIoYVtpXSwgcmVzKTsKKyAg
ICByZXR1cm4gcmVzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24g
c2NfaW90YShudW0sIGluaXQpIHsKKyAgIHZhciByZXMgPSBudWxsOworICAgaWYgKCFpbml0KSBp
bml0ID0gMDsKKyAgIGZvciAodmFyIGkgPSBudW0gLSAxOyBpID49IDA7IGktLSkKKyAgICAgIHJl
cyA9IG5ldyBzY19QYWlyKGkgKyBpbml0LCByZXMpOworICAgcmV0dXJuIHJlczsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX21ha2VMaXN0KG5iRWxzLCBmaWxs
KSB7CisgICAgdmFyIHJlcyA9IG51bGw7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYkVsczsg
aSsrKQorCXJlcyA9IG5ldyBzY19QYWlyKGZpbGwsIHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2xlbmd0aChsKSB7Cisg
ICAgdmFyIHJlcyA9IDA7CisgICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKwlyZXMrKzsKKwlsID0g
bC5jZHI7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkpICovCitmdW5jdGlvbiBzY19yZW1xKG8sIGwpIHsKKyAgICB2YXIgZHVtbXkgPSB7IGNkciA6
IG51bGwgfTsKKyAgICB2YXIgdGFpbCA9IGR1bW15OworICAgIHdoaWxlIChsICE9PSBudWxsKSB7
CisJaWYgKGwuY2FyICE9PSBvKSB7CisJICAgIHRhaWwuY2RyID0gc2NfY29ucyhsLmNhciwgbnVs
bCk7CisJICAgIHRhaWwgPSB0YWlsLmNkcjsKKwl9CisJbCA9IGwuY2RyOworICAgIH0KKyAgICBy
ZXR1cm4gZHVtbXkuY2RyOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rp
b24gc2NfcmVtcUJhbmcobywgbCkgeworICAgIHZhciBkdW1teSA9IHsgY2RyIDogbnVsbCB9Owor
ICAgIHZhciB0YWlsID0gZHVtbXk7CisgICAgdmFyIG5lZWRzQXNzaWcgPSB0cnVlOworICAgIHdo
aWxlIChsICE9PSBudWxsKSB7CisJaWYgKGwuY2FyID09PSBvKSB7CisJICAgIG5lZWRzQXNzaWcg
PSB0cnVlOworCX0gZWxzZSB7CisJICAgIGlmIChuZWVkc0Fzc2lnKSB7CisJCXRhaWwuY2RyID0g
bDsKKwkJbmVlZHNBc3NpZyA9IGZhbHNlOworCSAgICB9CisJICAgIHRhaWwgPSBsOworCX0KKwls
ID0gbC5jZHI7CisgICAgfQorICAgIHRhaWwuY2RyID0gbnVsbDsKKyAgICByZXR1cm4gZHVtbXku
Y2RyOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZGVsZXRl
KG8sIGwpIHsKKyAgICB2YXIgZHVtbXkgPSB7IGNkciA6IG51bGwgfTsKKyAgICB2YXIgdGFpbCA9
IGR1bW15OworICAgIHdoaWxlIChsICE9PSBudWxsKSB7CisJaWYgKCFzY19pc0VxdWFsKGwuY2Fy
LCBvKSkgeworCSAgICB0YWlsLmNkciA9IHNjX2NvbnMobC5jYXIsIG51bGwpOworCSAgICB0YWls
ID0gdGFpbC5jZHI7CisJfQorCWwgPSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGR1bW15LmNk
cjsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2RlbGV0ZUJh
bmcobywgbCkgeworICAgIHZhciBkdW1teSA9IHsgY2RyIDogbnVsbCB9OworICAgIHZhciB0YWls
ID0gZHVtbXk7CisgICAgdmFyIG5lZWRzQXNzaWcgPSB0cnVlOworICAgIHdoaWxlIChsICE9PSBu
dWxsKSB7CisJaWYgKHNjX2lzRXF1YWwobC5jYXIsIG8pKSB7CisJICAgIG5lZWRzQXNzaWcgPSB0
cnVlOworCX0gZWxzZSB7CisJICAgIGlmIChuZWVkc0Fzc2lnKSB7CisJCXRhaWwuY2RyID0gbDsK
KwkJbmVlZHNBc3NpZyA9IGZhbHNlOworCSAgICB9CisJICAgIHRhaWwgPSBsOworCX0KKwlsID0g
bC5jZHI7CisgICAgfQorICAgIHRhaWwuY2RyID0gbnVsbDsKKyAgICByZXR1cm4gZHVtbXkuY2Ry
OworfQorCitmdW5jdGlvbiBzY19yZXZlcnNlQXBwZW5kQmFuZyhsMSwgbDIpIHsKKyAgICB2YXIg
cmVzID0gbDI7CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7CisJdmFyIHRtcCA9IHJlczsKKwly
ZXMgPSBsMTsKKwlsMSA9IGwxLmNkcjsKKwlyZXMuY2RyID0gdG1wOworICAgIH0KKyAgICByZXR1
cm4gcmVzOworfQorCQorZnVuY3Rpb24gc2NfZHVhbEFwcGVuZChsMSwgbDIpIHsKKyAgICBpZiAo
bDEgPT09IG51bGwpIHJldHVybiBsMjsKKyAgICBpZiAobDIgPT09IG51bGwpIHJldHVybiBsMTsK
KyAgICB2YXIgcmV2ID0gc2NfcmV2ZXJzZShsMSk7CisgICAgcmV0dXJuIHNjX3JldmVyc2VBcHBl
bmRCYW5nKHJldiwgbDIpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rp
b24gc2NfYXBwZW5kKCkgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKQorCXJldHVy
biBudWxsOworICAgIHZhciByZXMgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdOwor
ICAgIGZvciAodmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSA+PSAwOyBpLS0pCisJcmVz
ID0gc2NfZHVhbEFwcGVuZChhcmd1bWVudHNbaV0sIHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30K
KworZnVuY3Rpb24gc2NfZHVhbEFwcGVuZEJhbmcobDEsIGwyKSB7CisgICAgaWYgKGwxID09PSBu
dWxsKSByZXR1cm4gbDI7CisgICAgaWYgKGwyID09PSBudWxsKSByZXR1cm4gbDE7CisgICAgdmFy
IHRtcCA9IGwxOworICAgIHdoaWxlICh0bXAuY2RyICE9PSBudWxsKSB0bXA9dG1wLmNkcjsKKyAg
ICB0bXAuY2RyID0gbDI7CisgICAgcmV0dXJuIGwxOworfQorICAgIAorLyoqKiBNRVRBICgoZXhw
b3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2FwcGVuZEJhbmcoKSB7CisgICAgdmFyIHJlcyA9IG51
bGw7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJcmVz
ID0gc2NfZHVhbEFwcGVuZEJhbmcocmVzLCBhcmd1bWVudHNbaV0pOworICAgIHJldHVybiByZXM7
Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19yZXZlcnNlKGwx
KSB7CisgICAgdmFyIHJlcyA9IG51bGw7CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7CisJcmVz
ID0gc2NfY29ucyhsMS5jYXIsIHJlcyk7CisJbDEgPSBsMS5jZHI7CisgICAgfQorICAgIHJldHVy
biByZXM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19yZXZl
cnNlQmFuZyhsKSB7CisgICAgcmV0dXJuIHNjX3JldmVyc2VBcHBlbmRCYW5nKGwsIG51bGwpOwor
fQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbGlzdFRhaWwobCwg
aykgeworICAgIHZhciByZXMgPSBsOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKSB7
CisJcmVzID0gcmVzLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2xpc3RSZWYobCwgaykgeworICAgIHJldHVy
biBzY19saXN0VGFpbChsLCBrKS5jYXI7Cit9CisKKy8qIC8vIHVub3B0aW1pemVkIGdlbmVyaWMg
dmVyc2lvbnMKK2Z1bmN0aW9uIHNjX21lbVgobywgbCwgY29tcCkgeworICAgIHdoaWxlIChsICE9
IG51bGwpIHsKKwlpZiAoY29tcChsLmNhciwgbykpCisJICAgIHJldHVybiBsOworCWwgPSBsLmNk
cjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorZnVuY3Rpb24gc2NfbWVtcShvLCBsKSB7
IHJldHVybiBzY19tZW1YKG8sIGwsIHNjX2lzRXEpOyB9CitmdW5jdGlvbiBzY19tZW12KG8sIGwp
IHsgcmV0dXJuIHNjX21lbVgobywgbCwgc2NfaXNFcXYpOyB9CitmdW5jdGlvbiBzY19tZW1iZXIo
bywgbCkgeyByZXR1cm4gc2NfbWVtWChvLCBsLCBzY19pc0VxdWFsKTsgfQorKi8KKworLyogb3B0
aW1pemVkIHZlcnNpb25zICovCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24g
c2NfbWVtcShvLCBsKSB7CisgICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKwlpZiAobC5jYXIgPT09
IG8pCisJICAgIHJldHVybiBsOworCWwgPSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX21lbXYobywgbCkg
eworICAgIHdoaWxlIChsICE9PSBudWxsKSB7CisJaWYgKGwuY2FyID09PSBvKQorCSAgICByZXR1
cm4gbDsKKwlsID0gbC5jZHI7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19tZW1iZXIobywgbCkgeworICAgIHdoaWxl
IChsICE9PSBudWxsKSB7CisJaWYgKHNjX2lzRXF1YWwobC5jYXIsbykpCisJICAgIHJldHVybiBs
OworCWwgPSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKiAvLyBnZW5l
cmljIHVub3B0aW1pemVkIHZlcnNpb25zCitmdW5jdGlvbiBzY19hc3NYKG8sIGFsLCBjb21wKSB7
CisgICAgd2hpbGUgKGFsICE9IG51bGwpIHsKKwlpZiAoY29tcChhbC5jYXIuY2FyLCBvKSkKKwkg
ICAgcmV0dXJuIGFsLmNhcjsKKwlhbCA9IGFsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorZnVuY3Rpb24gc2NfYXNzcShvLCBhbCkgeyByZXR1cm4gc2NfYXNzWChvLCBhbCwgc2Nf
aXNFcSk7IH0KK2Z1bmN0aW9uIHNjX2Fzc3YobywgYWwpIHsgcmV0dXJuIHNjX2Fzc1gobywgYWws
IHNjX2lzRXF2KTsgfQorZnVuY3Rpb24gc2NfYXNzb2MobywgYWwpIHsgcmV0dXJuIHNjX2Fzc1go
bywgYWwsIHNjX2lzRXF1YWwpOyB9CisqLworLy8gb3B0aW1pemVkIHZlcnNpb25zCisvKioqIE1F
VEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYXNzcShvLCBhbCkgeworICAgIHdoaWxl
IChhbCAhPT0gbnVsbCkgeworCWlmIChhbC5jYXIuY2FyID09PSBvKQorCSAgICByZXR1cm4gYWwu
Y2FyOworCWFsID0gYWwuY2RyOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisvKioqIE1F
VEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYXNzdihvLCBhbCkgeworICAgIHdoaWxl
IChhbCAhPT0gbnVsbCkgeworCWlmIChhbC5jYXIuY2FyID09PSBvKQorCSAgICByZXR1cm4gYWwu
Y2FyOworCWFsID0gYWwuY2RyOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisvKioqIE1F
VEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfYXNzb2MobywgYWwpIHsKKyAgICB3aGls
ZSAoYWwgIT09IG51bGwpIHsKKwlpZiAoc2NfaXNFcXVhbChhbC5jYXIuY2FyLCBvKSkKKwkgICAg
cmV0dXJuIGFsLmNhcjsKKwlhbCA9IGFsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCisvKiBjYW4gYmUgdXNlZCBmb3IgbXV0YWJsZSBzdHJpbmdzIGFuZCBjaGFyYWN0ZXJzICov
CitmdW5jdGlvbiBzY19pc0NoYXJTdHJpbmdFcXVhbChjczEsIGNzMikgeyByZXR1cm4gY3MxLnZh
bCA9PT0gY3MyLnZhbDsgfQorZnVuY3Rpb24gc2NfaXNDaGFyU3RyaW5nTGVzcyhjczEsIGNzMikg
eyByZXR1cm4gY3MxLnZhbCA8IGNzMi52YWw7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0dy
ZWF0ZXIoY3MxLCBjczIpIHsgcmV0dXJuIGNzMS52YWwgPiBjczIudmFsOyB9CitmdW5jdGlvbiBz
Y19pc0NoYXJTdHJpbmdMZXNzRXF1YWwoY3MxLCBjczIpIHsgcmV0dXJuIGNzMS52YWwgPD0gY3My
LnZhbDsgfQorZnVuY3Rpb24gc2NfaXNDaGFyU3RyaW5nR3JlYXRlckVxdWFsKGNzMSwgY3MyKSB7
IHJldHVybiBjczEudmFsID49IGNzMi52YWw7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJ
RXF1YWwoY3MxLCBjczIpCisgICAgeyByZXR1cm4gY3MxLnZhbC50b0xvd2VyQ2FzZSgpID09PSBj
czIudmFsLnRvTG93ZXJDYXNlKCk7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJTGVzcyhj
czEsIGNzMikKKyAgICB7IHJldHVybiBjczEudmFsLnRvTG93ZXJDYXNlKCkgPCBjczIudmFsLnRv
TG93ZXJDYXNlKCk7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJR3JlYXRlcihjczEsIGNz
MikKKyAgICB7IHJldHVybiBjczEudmFsLnRvTG93ZXJDYXNlKCkgPiBjczIudmFsLnRvTG93ZXJD
YXNlKCk7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJTGVzc0VxdWFsKGNzMSwgY3MyKQor
ICAgIHsgcmV0dXJuIGNzMS52YWwudG9Mb3dlckNhc2UoKSA8PSBjczIudmFsLnRvTG93ZXJDYXNl
KCk7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0NJR3JlYXRlckVxdWFsKGNzMSwgY3MyKQor
ICAgIHsgcmV0dXJuIGNzMS52YWwudG9Mb3dlckNhc2UoKSA+PSBjczIudmFsLnRvTG93ZXJDYXNl
KCk7IH0KKworCisKKworZnVuY3Rpb24gc2NfQ2hhcihjKSB7CisgICAgdmFyIGNhY2hlZCA9IHNj
X0NoYXIubGF6eVtjXTsKKyAgICBpZiAoY2FjaGVkKQorCXJldHVybiBjYWNoZWQ7CisgICAgdGhp
cy52YWwgPSBjOworICAgIHNjX0NoYXIubGF6eVtjXSA9IHRoaXM7CisgICAgLy8gYWRkIHJldHVy
biwgc28gRkYgZG9lcyBub3QgY29tcGxhaW4uCisgICAgcmV0dXJuIHVuZGVmaW5lZDsKK30KK3Nj
X0NoYXIubGF6eSA9IG5ldyBPYmplY3QoKTsKKy8vIHRoYW5rcyB0byBFcmljCitzY19DaGFyLmNo
YXIycmVhZGFibGUgPSB7CisgICAgIlwwMDAiOiAiI1xcbnVsbCIsCisgICAgIlwwMDciOiAiI1xc
YmVsbCIsCisgICAgIlwwMTAiOiAiI1xcYmFja3NwYWNlIiwKKyAgICAiXDAxMSI6ICIjXFx0YWIi
LAorICAgICJcMDEyIjogIiNcXG5ld2xpbmUiLAorICAgICJcMDE0IjogIiNcXHBhZ2UiLAorICAg
ICJcMDE1IjogIiNcXHJldHVybiIsCisgICAgIlwwMzMiOiAiI1xcZXNjYXBlIiwKKyAgICAiXDA0
MCI6ICIjXFxzcGFjZSIsCisgICAgIlwxNzciOiAiI1xcZGVsZXRlIiwKKworICAvKiBwb2V0aWNs
ZXNzIG5hbWVzICovCisgICAgIlwwMDEiOiAiI1xcc29oIiwKKyAgICAiXDAwMiI6ICIjXFxzdHgi
LAorICAgICJcMDAzIjogIiNcXGV0eCIsCisgICAgIlwwMDQiOiAiI1xcZW90IiwKKyAgICAiXDAw
NSI6ICIjXFxlbnEiLAorICAgICJcMDA2IjogIiNcXGFjayIsCisKKyAgICAiXDAxMyI6ICIjXFx2
dCIsCisgICAgIlwwMTYiOiAiI1xcc28iLAorICAgICJcMDE3IjogIiNcXHNpIiwKKworICAgICJc
MDIwIjogIiNcXGRsZSIsCisgICAgIlwwMjEiOiAiI1xcZGMxIiwKKyAgICAiXDAyMiI6ICIjXFxk
YzIiLAorICAgICJcMDIzIjogIiNcXGRjMyIsCisgICAgIlwwMjQiOiAiI1xcZGM0IiwKKyAgICAi
XDAyNSI6ICIjXFxuYWsiLAorICAgICJcMDI2IjogIiNcXHN5biIsCisgICAgIlwwMjciOiAiI1xc
ZXRiIiwKKworICAgICJcMDMwIjogIiNcXGNhbiIsCisgICAgIlwwMzEiOiAiI1xcZW0iLAorICAg
ICJcMDMyIjogIiNcXHN1YiIsCisgICAgIlwwMzMiOiAiI1xcZXNjIiwKKyAgICAiXDAzNCI6ICIj
XFxmcyIsCisgICAgIlwwMzUiOiAiI1xcZ3MiLAorICAgICJcMDM2IjogIiNcXHJzIiwKKyAgICAi
XDAzNyI6ICIjXFx1cyJ9OworCitzY19DaGFyLnJlYWRhYmxlMmNoYXIgPSB7CisgICAgIm51bGwi
OiAiXDAwMCIsCisgICAgImJlbGwiOiAiXDAwNyIsCisgICAgImJhY2tzcGFjZSI6ICJcMDEwIiwK
KyAgICAidGFiIjogIlwwMTEiLAorICAgICJuZXdsaW5lIjogIlwwMTIiLAorICAgICJwYWdlIjog
IlwwMTQiLAorICAgICJyZXR1cm4iOiAiXDAxNSIsCisgICAgImVzY2FwZSI6ICJcMDMzIiwKKyAg
ICAic3BhY2UiOiAiXDA0MCIsCisgICAgImRlbGV0ZSI6ICJcMDAwIiwKKyAgICAic29oIjogIlww
MDEiLAorICAgICJzdHgiOiAiXDAwMiIsCisgICAgImV0eCI6ICJcMDAzIiwKKyAgICAiZW90Ijog
IlwwMDQiLAorICAgICJlbnEiOiAiXDAwNSIsCisgICAgImFjayI6ICJcMDA2IiwKKyAgICAiYmVs
IjogIlwwMDciLAorICAgICJicyI6ICJcMDEwIiwKKyAgICAiaHQiOiAiXDAxMSIsCisgICAgIm5s
IjogIlwwMTIiLAorICAgICJ2dCI6ICJcMDEzIiwKKyAgICAibnAiOiAiXDAxNCIsCisgICAgImNy
IjogIlwwMTUiLAorICAgICJzbyI6ICJcMDE2IiwKKyAgICAic2kiOiAiXDAxNyIsCisgICAgImRs
ZSI6ICJcMDIwIiwKKyAgICAiZGMxIjogIlwwMjEiLAorICAgICJkYzIiOiAiXDAyMiIsCisgICAg
ImRjMyI6ICJcMDIzIiwKKyAgICAiZGM0IjogIlwwMjQiLAorICAgICJuYWsiOiAiXDAyNSIsCisg
ICAgInN5biI6ICJcMDI2IiwKKyAgICAiZXRiIjogIlwwMjciLAorICAgICJjYW4iOiAiXDAzMCIs
CisgICAgImVtIjogIlwwMzEiLAorICAgICJzdWIiOiAiXDAzMiIsCisgICAgImVzYyI6ICJcMDMz
IiwKKyAgICAiZnMiOiAiXDAzNCIsCisgICAgImdzIjogIlwwMzUiLAorICAgICJycyI6ICJcMDM2
IiwKKyAgICAidXMiOiAiXDAzNyIsCisgICAgInNwIjogIlwwNDAiLAorICAgICJkZWwiOiAiXDE3
NyJ9OworICAgIAorc2NfQ2hhci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAg
ICByZXR1cm4gdGhpcy52YWw7Cit9OworLy8gc2NfdG9EaXNwbGF5U3RyaW5nID09IHRvU3RyaW5n
CitzY19DaGFyLnByb3RvdHlwZS5zY190b1dyaXRlU3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAg
dmFyIGVudHJ5ID0gc2NfQ2hhci5jaGFyMnJlYWRhYmxlW3RoaXMudmFsXTsKKyAgICBpZiAoZW50
cnkpCisJcmV0dXJuIGVudHJ5OworICAgIGVsc2UKKwlyZXR1cm4gIiNcXCIgKyB0aGlzLnZhbDsK
K307CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAg
ICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICJpbnN0YW5jZW9mIHNjX0NoYXIiKSkpCisqLwor
ZnVuY3Rpb24gc2NfaXNDaGFyKGMpIHsKKyAgICByZXR1cm4gKGMgaW5zdGFuY2VvZiBzY19DaGFy
KTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IGNoYXI9PykKKyAgICAgICAgICAgKHR5cGUgYm9v
bCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwgPT09ICIgYzIgIi52YWwi
KSkpCisqLwordmFyIHNjX2lzQ2hhckVxdWFsID0gc2NfaXNDaGFyU3RyaW5nRXF1YWw7CisvKioq
IE1FVEEgKChleHBvcnQgY2hhcjw/KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAg
ICAocGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZhbCA8ICIgYzIgIi52YWwiKSkpCisqLwordmFyIHNj
X2lzQ2hhckxlc3MgPSBzY19pc0NoYXJTdHJpbmdMZXNzOworLyoqKiBNRVRBICgoZXhwb3J0IGNo
YXI+PykKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xl
IDIgYzEgIi52YWwgPiAiIGMyICIudmFsIikpKQorKi8KK3ZhciBzY19pc0NoYXJHcmVhdGVyID0g
c2NfaXNDaGFyU3RyaW5nR3JlYXRlcjsKKy8qKiogTUVUQSAoKGV4cG9ydCBjaGFyPD0/KQorICAg
ICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZh
bCA8PSAiIGMyICIudmFsIikpKQorKi8KK3ZhciBzY19pc0NoYXJMZXNzRXF1YWwgPSBzY19pc0No
YXJTdHJpbmdMZXNzRXF1YWw7CisvKioqIE1FVEEgKChleHBvcnQgY2hhcj49PykKKyAgICAgICAg
ICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwgPj0g
IiBjMiAiLnZhbCIpKSkKKyovCit2YXIgc2NfaXNDaGFyR3JlYXRlckVxdWFsID0gc2NfaXNDaGFy
U3RyaW5nR3JlYXRlckVxdWFsOworLyoqKiBNRVRBICgoZXhwb3J0IGNoYXItY2k9PykKKyAgICAg
ICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwu
dG9Mb3dlckNhc2UoKSA9PT0gIiBjMiAiLnZhbC50b0xvd2VyQ2FzZSgpIikpKQorKi8KK3ZhciBz
Y19pc0NoYXJDSUVxdWFsID0gc2NfaXNDaGFyU3RyaW5nQ0lFcXVhbDsKKy8qKiogTUVUQSAoKGV4
cG9ydCBjaGFyLWNpPD8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVw
aG9sZSAoaG9sZSAyIGMxICIudmFsLnRvTG93ZXJDYXNlKCkgPCAiIGMyICIudmFsLnRvTG93ZXJD
YXNlKCkiKSkpCisqLwordmFyIHNjX2lzQ2hhckNJTGVzcyA9IHNjX2lzQ2hhclN0cmluZ0NJTGVz
czsKKy8qKiogTUVUQSAoKGV4cG9ydCBjaGFyLWNpPj8pCisgICAgICAgICAgICh0eXBlIGJvb2wp
CisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIGMxICIudmFsLnRvTG93ZXJDYXNlKCkgPiAi
IGMyICIudmFsLnRvTG93ZXJDYXNlKCkiKSkpCisqLwordmFyIHNjX2lzQ2hhckNJR3JlYXRlciA9
IHNjX2lzQ2hhclN0cmluZ0NJR3JlYXRlcjsKKy8qKiogTUVUQSAoKGV4cG9ydCBjaGFyLWNpPD0/
KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBj
MSAiLnZhbC50b0xvd2VyQ2FzZSgpIDw9ICIgYzIgIi52YWwudG9Mb3dlckNhc2UoKSIpKSkKKyov
Cit2YXIgc2NfaXNDaGFyQ0lMZXNzRXF1YWwgPSBzY19pc0NoYXJTdHJpbmdDSUxlc3NFcXVhbDsK
Ky8qKiogTUVUQSAoKGV4cG9ydCBjaGFyLWNpPj0/KQorICAgICAgICAgICAodHlwZSBib29sKQor
ICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZhbC50b0xvd2VyQ2FzZSgpID49ICIg
YzIgIi52YWwudG9Mb3dlckNhc2UoKSIpKSkKKyovCit2YXIgc2NfaXNDaGFyQ0lHcmVhdGVyRXF1
YWwgPSBzY19pc0NoYXJTdHJpbmdDSUdyZWF0ZXJFcXVhbDsKKwordmFyIFNDX05VTUJFUl9DTEFT
UyA9ICIwMTIzNDU2Nzg5IjsKK3ZhciBTQ19XSElURVNQQUNFX0NMQVNTID0gJyBcclxuXHRcZic7
Cit2YXIgU0NfTE9XRVJfQ0xBU1MgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonOwordmFy
IFNDX1VQUEVSX0NMQVNTID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJzsKKworZnVuY3Rp
b24gc2NfaXNDaGFyT2ZDbGFzcyhjLCBjbCkgeyByZXR1cm4gKGNsLmluZGV4T2YoYykgIT0gLTEp
OyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8K
K2Z1bmN0aW9uIHNjX2lzQ2hhckFscGhhYmV0aWMoYykKKyAgICB7IHJldHVybiBzY19pc0NoYXJP
ZkNsYXNzKGMudmFsLCBTQ19MT1dFUl9DTEFTUykgfHwKKwkgIHNjX2lzQ2hhck9mQ2xhc3MoYy52
YWwsIFNDX1VQUEVSX0NMQVNTKTsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAg
ICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMSAiU0NfTlVNQkVSX0NM
QVNTLmluZGV4T2YoIiBjICIudmFsKSAhPSAtMSIpKSkKKyovCitmdW5jdGlvbiBzY19pc0NoYXJO
dW1lcmljKGMpCisgICAgeyByZXR1cm4gc2NfaXNDaGFyT2ZDbGFzcyhjLnZhbCwgU0NfTlVNQkVS
X0NMQVNTKTsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29s
KSkKKyovCitmdW5jdGlvbiBzY19pc0NoYXJXaGl0ZXNwYWNlKGMpIHsKKyAgICB2YXIgdG1wID0g
Yy52YWw7CisgICAgcmV0dXJuIHRtcCA9PT0gIiAiIHx8IHRtcCA9PT0gIlxyIiB8fCB0bXAgPT09
ICJcbiIgfHwgdG1wID09PSAiXHQiIHx8IHRtcCA9PT0gIlxmIjsKK30KKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlICho
b2xlIDEgIlNDX1VQUEVSX0NMQVNTLmluZGV4T2YoIiBjICIudmFsKSAhPSAtMSIpKSkKKyovCitm
dW5jdGlvbiBzY19pc0NoYXJVcHBlckNhc2UoYykKKyAgICB7IHJldHVybiBzY19pc0NoYXJPZkNs
YXNzKGMudmFsLCBTQ19VUFBFUl9DTEFTUyk7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAg
ICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDEgIlNDX0xP
V0VSX0NMQVNTLmluZGV4T2YoIiBjICIudmFsKSAhPSAtMSIpKSkKKyovCitmdW5jdGlvbiBzY19p
c0NoYXJMb3dlckNhc2UoYykKKyAgICB7IHJldHVybiBzY19pc0NoYXJPZkNsYXNzKGMudmFsLCBT
Q19MT1dFUl9DTEFTUyk7IH0KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAo
cGVlcGhvbGUgKHBvc3RmaXggIi52YWwuY2hhckNvZGVBdCgwKSIpKSkKKyovCitmdW5jdGlvbiBz
Y19jaGFyMmludGVnZXIoYykKKyAgICB7IHJldHVybiBjLnZhbC5jaGFyQ29kZUF0KDApOyB9Cisv
KioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAxICJuZXcg
c2NfQ2hhcihTdHJpbmcuZnJvbUNoYXJDb2RlKCIgbiAiKSkiKSkpCisqLworZnVuY3Rpb24gc2Nf
aW50ZWdlcjJjaGFyKG4pCisgICAgeyByZXR1cm4gbmV3IHNjX0NoYXIoU3RyaW5nLmZyb21DaGFy
Q29kZShuKSk7IH0KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhv
bGUgKGhvbGUgMSAibmV3IHNjX0NoYXIoIiBjICIudmFsLnRvVXBwZXJDYXNlKCkpIikpKQorKi8K
K2Z1bmN0aW9uIHNjX2NoYXJVcGNhc2UoYykKKyAgICB7IHJldHVybiBuZXcgc2NfQ2hhcihjLnZh
bC50b1VwcGVyQ2FzZSgpKTsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAo
cGVlcGhvbGUgKGhvbGUgMSAibmV3IHNjX0NoYXIoIiBjICIudmFsLnRvTG93ZXJDYXNlKCkpIikp
KQorKi8KK2Z1bmN0aW9uIHNjX2NoYXJEb3duY2FzZShjKQorICAgIHsgcmV0dXJuIG5ldyBzY19D
aGFyKGMudmFsLnRvTG93ZXJDYXNlKCkpOyB9CisKK2Z1bmN0aW9uIHNjX21ha2VKU1N0cmluZ09m
TGVuZ3RoKGssIGMpIHsKKyAgICB2YXIgZmlsbDsKKyAgICBpZiAoYyA9PT0gdW5kZWZpbmVkKQor
CWZpbGwgPSAiICI7CisgICAgZWxzZQorCWZpbGwgPSBjOworICAgIHZhciByZXMgPSAiIjsKKyAg
ICB2YXIgbGVuID0gMTsKKyAgICAvLyBldmVyeSByb3VuZCBkb3VibGVzIHRoZSBzaXplIG9mIGZp
bGwuCisgICAgd2hpbGUgKGsgPj0gbGVuKSB7CisJaWYgKGsgJiBsZW4pCisJICAgIHJlcyA9IHJl
cy5jb25jYXQoZmlsbCk7CisJZmlsbCA9IGZpbGwuY29uY2F0KGZpbGwpOworCWxlbiAqPSAyOwor
ICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorCitmdW5jdGlvbiBzY19tYWtlanNTdHJpbmcoaywg
YykgeworICAgIHZhciBmaWxsOworICAgIGlmIChjKQorCWZpbGwgPSBjLnZhbDsKKyAgICBlbHNl
CisJZmlsbCA9ICIgIjsKKyAgICByZXR1cm4gc2NfbWFrZUpTU3RyaW5nT2ZMZW5ndGgoaywgZmls
bCk7Cit9CisKK2Z1bmN0aW9uIHNjX2pzc3RyaW5nMmxpc3QocykgeworICAgIHZhciByZXMgPSBu
dWxsOworICAgIGZvciAodmFyIGkgPSBzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQorCXJlcyA9
IHNjX2NvbnMobmV3IHNjX0NoYXIocy5jaGFyQXQoaSkpLCByZXMpOworICAgIHJldHVybiByZXM7
Cit9CisKK2Z1bmN0aW9uIHNjX2xpc3QyanNzdHJpbmcobCkgeworICAgIHZhciBhID0gbmV3IEFy
cmF5KCk7CisgICAgd2hpbGUobCAhPT0gbnVsbCkgeworCWEucHVzaChsLmNhci52YWwpOworCWwg
PSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuICIiLmNvbmNhdC5hcHBseSgiIiwgYSk7Cit9CisK
K3ZhciBzY19WZWN0b3IgPSBBcnJheTsKKworc2NfVmVjdG9yLnByb3RvdHlwZS5zY190b1dyaXRl
T3JEaXNwbGF5U3RyaW5nID0gZnVuY3Rpb24od3JpdGVPckRpc3BsYXkpIHsKKyAgICBpZiAodGhp
cy5sZW5ndGggPT09IDApIHJldHVybiAiIygpIjsKKworICAgIHZhciByZXMgPSAiIygiICsgd3Jp
dGVPckRpc3BsYXkodGhpc1swXSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0aGlzLmxlbmd0
aDsgaSsrKQorCXJlcyArPSAiICIgKyB3cml0ZU9yRGlzcGxheSh0aGlzW2ldKTsKKyAgICByZXMg
Kz0gIikiOworICAgIHJldHVybiByZXM7Cit9Oworc2NfVmVjdG9yLnByb3RvdHlwZS5zY190b0Rp
c3BsYXlTdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5zY190b1dyaXRlT3JE
aXNwbGF5U3RyaW5nKHNjX3RvRGlzcGxheVN0cmluZyk7Cit9Oworc2NfVmVjdG9yLnByb3RvdHlw
ZS5zY190b1dyaXRlU3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMuc2NfdG9X
cml0ZU9yRGlzcGxheVN0cmluZyhzY190b1dyaXRlU3RyaW5nKTsKK307CisKKy8qKiogTUVUQSAo
KGV4cG9ydCB2ZWN0b3I/IGFycmF5PykKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChwb3N0Zml4ICIgaW5zdGFuY2VvZiBzY19WZWN0b3IiKSkpCisqLworZnVu
Y3Rpb24gc2NfaXNWZWN0b3IodikgeworICAgIHJldHVybiAodiBpbnN0YW5jZW9mIHNjX1ZlY3Rv
cik7Cit9CisKKy8vIG9ubHkgYXBwbGllcyB0byB2ZWN0b3JzCitmdW5jdGlvbiBzY19pc1ZlY3Rv
ckVxdWFsKHYxLCB2MiwgY29tcCkgeworICAgIGlmICh2MS5sZW5ndGggIT09IHYyLmxlbmd0aCkg
cmV0dXJuIGZhbHNlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspCisJ
aWYgKCFjb21wKHYxW2ldLCB2MltpXSkpIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0IG1ha2UtdmVjdG9yIG1ha2UtYXJyYXkpKSAqLworZnVu
Y3Rpb24gc2NfbWFrZVZlY3RvcihzaXplLCBmaWxsKSB7CisgICAgdmFyIGEgPSBuZXcgc2NfVmVj
dG9yKHNpemUpOworICAgIGlmIChmaWxsICE9PSB1bmRlZmluZWQpCisJc2NfdmVjdG9yRmlsbEJh
bmcoYSwgZmlsbCk7CisgICAgcmV0dXJuIGE7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCB2ZWN0
b3IgYXJyYXkpCisgICAgICAgICAgIChwZWVwaG9sZSAodmVjdG9yKSkpCisqLworZnVuY3Rpb24g
c2NfdmVjdG9yKCkgeworICAgIHZhciBhID0gbmV3IHNjX1ZlY3RvcigpOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorCWEucHVzaChhcmd1bWVudHNbaV0p
OworICAgIHJldHVybiBhOworfQorCisvKioqIE1FVEEgKChleHBvcnQgdmVjdG9yLWxlbmd0aCBh
cnJheS1sZW5ndGgpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmxlbmd0aCIpKSkK
KyovCitmdW5jdGlvbiBzY192ZWN0b3JMZW5ndGgodikgeworICAgIHJldHVybiB2Lmxlbmd0aDsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0IHZlY3Rvci1yZWYgYXJyYXktcmVmKQorICAgICAgICAg
ICAocGVlcGhvbGUgKGhvbGUgMiB2ICJbIiBwb3MgIl0iKSkpCisqLworZnVuY3Rpb24gc2NfdmVj
dG9yUmVmKHYsIHBvcykgeworICAgIHJldHVybiB2W3Bvc107Cit9CisKKy8qKiogTUVUQSAoKGV4
cG9ydCB2ZWN0b3Itc2V0ISBhcnJheS1zZXQhKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUg
MyB2ICJbIiBwb3MgIl0gPSAiIHZhbCkpKQorKi8KK2Z1bmN0aW9uIHNjX3ZlY3RvclNldEJhbmco
diwgcG9zLCB2YWwpIHsKKyAgICB2W3Bvc10gPSB2YWw7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9y
dCB2ZWN0b3ItPmxpc3QgYXJyYXktPmxpc3QpKSAqLworZnVuY3Rpb24gc2NfdmVjdG9yMmxpc3Qo
YSkgeworICAgIHZhciByZXMgPSBudWxsOworICAgIGZvciAodmFyIGkgPSBhLmxlbmd0aC0xOyBp
ID49IDA7IGktLSkKKwlyZXMgPSBzY19jb25zKGFbaV0sIHJlcyk7CisgICAgcmV0dXJuIHJlczsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0IGxpc3QtPnZlY3RvciBsaXN0LT5hcnJheSkpICovCitm
dW5jdGlvbiBzY19saXN0MnZlY3RvcihsKSB7CisgICAgdmFyIGEgPSBuZXcgc2NfVmVjdG9yKCk7
CisgICAgd2hpbGUobCAhPT0gbnVsbCkgeworCWEucHVzaChsLmNhcik7CisJbCA9IGwuY2RyOwor
ICAgIH0KKyAgICByZXR1cm4gYTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IHZlY3Rvci1maWxs
ISBhcnJheS1maWxsISkpICovCitmdW5jdGlvbiBzY192ZWN0b3JGaWxsQmFuZyhhLCBmaWxsKSB7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorCWFbaV0gPSBmaWxsOwor
fQorCisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19jb3B5VmVjdG9y
KGEsIGxlbikgeworICAgIGlmIChsZW4gPD0gYS5sZW5ndGgpCisJcmV0dXJuIGEuc2xpY2UoMCwg
bGVuKTsKKyAgICBlbHNlIHsKKwl2YXIgdG1wID0gYS5jb25jYXQoKTsKKwl0bXAubGVuZ3RoID0g
bGVuOworCXJldHVybiB0bXA7CisgICAgfQorfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisg
ICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAzIGEgIi5zbGljZSgiIHN0YXJ0ICIsIiBlbmQgIiki
KSkpCisqLworZnVuY3Rpb24gc2NfdmVjdG9yQ29weShhLCBzdGFydCwgZW5kKSB7CisgICAgcmV0
dXJuIGEuc2xpY2Uoc3RhcnQsIGVuZCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICov
CitmdW5jdGlvbiBzY192ZWN0b3JDb3B5QmFuZyh0YXJnZXQsIHRzdGFydCwgc291cmNlLCBzc3Rh
cnQsIHNlbmQpIHsKKyAgICBpZiAoIXNzdGFydCkgc3N0YXJ0ID0gMDsKKyAgICBpZiAoIXNlbmQp
IHNlbmQgPSBzb3VyY2UubGVuZ3RoOworCisgICAgLy8gaWYgdGFyZ2V0ID09IHNvdXJjZSB3ZSBk
b24ndCB3YW50IHRvIG92ZXJ3cml0ZSBub3QgeWV0IGNvcGllZCBlbGVtZW50cy4KKyAgICBpZiAo
dHN0YXJ0IDw9IHNzdGFydCkgeworCWZvciAodmFyIGkgPSB0c3RhcnQsIGogPSBzc3RhcnQ7IGog
PCBzZW5kOyBpKyssIGorKykgeworCSAgICB0YXJnZXRbaV0gPSBzb3VyY2Vbal07CisJfQorICAg
IH0gZWxzZSB7CisJdmFyIGRpZmYgPSBzZW5kIC0gc3N0YXJ0OworCWZvciAodmFyIGkgPSB0c3Rh
cnQgKyBkaWZmIC0gMSwgaiA9IHNlbmQgLSAxOworCSAgICAgaiA+PSBzc3RhcnQ7CisJICAgICBp
LS0sIGotLSkgeworCSAgICB0YXJnZXRbaV0gPSBzb3VyY2Vbal07CisJfQorICAgIH0KKyAgICBy
ZXR1cm4gdGFyZ2V0OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0
eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAxICJ0eXBlb2YgIiBvICIgPT09
ICdmdW5jdGlvbiciKSkpCisqLworZnVuY3Rpb24gc2NfaXNQcm9jZWR1cmUobykgeworICAgIHJl
dHVybiAodHlwZW9mIG8gPT09ICJmdW5jdGlvbiIpOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
I3QpKSAqLworZnVuY3Rpb24gc2NfYXBwbHkocHJvYykgeworICAgIHZhciBhcmdzID0gbmV3IEFy
cmF5KCk7CisgICAgLy8gZmlyc3QgcGFydCBvZiBhcmd1bWVudHMgYXJlIG5vdCBpbiBsaXN0LWZv
cm0uCisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKQor
CWFyZ3MucHVzaChhcmd1bWVudHNbaV0pOworICAgIHZhciBsID0gYXJndW1lbnRzW2FyZ3VtZW50
cy5sZW5ndGggLSAxXTsKKyAgICB3aGlsZSAobCAhPT0gbnVsbCkgeworCWFyZ3MucHVzaChsLmNh
cik7CisJbCA9IGwuY2RyOworICAgIH0KKyAgICByZXR1cm4gcHJvYy5hcHBseShudWxsLCBhcmdz
KTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX21hcChwcm9j
LCBsMSkgeworICAgIGlmIChsMSA9PT0gdW5kZWZpbmVkKQorCXJldHVybiBudWxsOworICAgIC8v
IGVsc2UKKyAgICB2YXIgbmJBcHBseUFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsKKyAgICB2
YXIgYXBwbHlBcmdzID0gbmV3IEFycmF5KG5iQXBwbHlBcmdzKTsKKyAgICB2YXIgcmV2cmVzID0g
bnVsbDsKKyAgICB3aGlsZSAobDEgIT09IG51bGwpIHsKKwlmb3IgKHZhciBpID0gMDsgaSA8IG5i
QXBwbHlBcmdzOyBpKyspIHsKKwkgICAgYXBwbHlBcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXS5j
YXI7CisJICAgIGFyZ3VtZW50c1tpICsgMV0gPSBhcmd1bWVudHNbaSArIDFdLmNkcjsKKwl9CisJ
cmV2cmVzID0gc2NfY29ucyhwcm9jLmFwcGx5KG51bGwsIGFwcGx5QXJncyksIHJldnJlcyk7Cisg
ICAgfQorICAgIHJldHVybiBzY19yZXZlcnNlQXBwZW5kQmFuZyhyZXZyZXMsIG51bGwpOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbWFwQmFuZyhwcm9jLCBs
MSkgeworICAgIGlmIChsMSA9PT0gdW5kZWZpbmVkKQorCXJldHVybiBudWxsOworICAgIC8vIGVs
c2UKKyAgICB2YXIgbDFfb3JpZyA9IGwxOworICAgIHZhciBuYkFwcGx5QXJncyA9IGFyZ3VtZW50
cy5sZW5ndGggLSAxOworICAgIHZhciBhcHBseUFyZ3MgPSBuZXcgQXJyYXkobmJBcHBseUFyZ3Mp
OworICAgIHdoaWxlIChsMSAhPT0gbnVsbCkgeworCXZhciB0bXAgPSBsMTsKKwlmb3IgKHZhciBp
ID0gMDsgaSA8IG5iQXBwbHlBcmdzOyBpKyspIHsKKwkgICAgYXBwbHlBcmdzW2ldID0gYXJndW1l
bnRzW2kgKyAxXS5jYXI7CisJICAgIGFyZ3VtZW50c1tpICsgMV0gPSBhcmd1bWVudHNbaSArIDFd
LmNkcjsKKwl9CisJdG1wLmNhciA9IHByb2MuYXBwbHkobnVsbCwgYXBwbHlBcmdzKTsKKyAgICB9
CisgICAgcmV0dXJuIGwxX29yaWc7Cit9CisgICAgIAorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkg
Ki8KK2Z1bmN0aW9uIHNjX2ZvckVhY2gocHJvYywgbDEpIHsKKyAgICBpZiAobDEgPT09IHVuZGVm
aW5lZCkKKwlyZXR1cm4gdW5kZWZpbmVkOworICAgIC8vIGVsc2UKKyAgICB2YXIgbmJBcHBseUFy
Z3MgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsKKyAgICB2YXIgYXBwbHlBcmdzID0gbmV3IEFycmF5
KG5iQXBwbHlBcmdzKTsKKyAgICB3aGlsZSAobDEgIT09IG51bGwpIHsKKwlmb3IgKHZhciBpID0g
MDsgaSA8IG5iQXBwbHlBcmdzOyBpKyspIHsKKwkgICAgYXBwbHlBcmdzW2ldID0gYXJndW1lbnRz
W2kgKyAxXS5jYXI7CisJICAgIGFyZ3VtZW50c1tpICsgMV0gPSBhcmd1bWVudHNbaSArIDFdLmNk
cjsKKwl9CisJcHJvYy5hcHBseShudWxsLCBhcHBseUFyZ3MpOworICAgIH0KKyAgICAvLyBhZGQg
cmV0dXJuIHNvIEZGIGRvZXMgbm90IGNvbXBsYWluLgorICAgIHJldHVybiB1bmRlZmluZWQ7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19maWx0ZXIocHJvYywg
bDEpIHsKKyAgICB2YXIgZHVtbXkgPSB7IGNkciA6IG51bGwgfTsKKyAgICB2YXIgdGFpbCA9IGR1
bW15OworICAgIHdoaWxlIChsMSAhPT0gbnVsbCkgeworCWlmIChwcm9jKGwxLmNhcikgIT09IGZh
bHNlKSB7CisJICAgIHRhaWwuY2RyID0gc2NfY29ucyhsMS5jYXIsIG51bGwpOworCSAgICB0YWls
ID0gdGFpbC5jZHI7CisJfQorCWwxID0gbDEuY2RyOworICAgIH0KKyAgICByZXR1cm4gZHVtbXku
Y2RyOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZmlsdGVy
QmFuZyhwcm9jLCBsMSkgeworICAgIHZhciBoZWFkID0gc2NfY29ucygiZHVtbXkiLCBsMSk7Cisg
ICAgdmFyIGl0ID0gaGVhZDsKKyAgICB2YXIgbmV4dCA9IGwxOworICAgIHdoaWxlIChuZXh0ICE9
PSBudWxsKSB7CisgICAgICAgIGlmIChwcm9jKG5leHQuY2FyKSAhPT0gZmFsc2UpIHsKKwkgICAg
aXQuY2RyID0gbmV4dAorCSAgICBpdCA9IG5leHQ7CisJfQorCW5leHQgPSBuZXh0LmNkcjsKKyAg
ICB9CisgICAgaXQuY2RyID0gbnVsbDsKKyAgICByZXR1cm4gaGVhZC5jZHI7Cit9CisKK2Z1bmN0
aW9uIHNjX2ZpbHRlck1hcDEocHJvYywgbDEpIHsKKyAgICB2YXIgcmV2cmVzID0gbnVsbDsKKyAg
ICB3aGlsZSAobDEgIT09IG51bGwpIHsKKyAgICAgICAgdmFyIHRtcCA9IHByb2MobDEuY2FyKQor
ICAgICAgICBpZiAodG1wICE9PSBmYWxzZSkgcmV2cmVzID0gc2NfY29ucyh0bXAsIHJldnJlcyk7
CisgICAgICAgIGwxID0gbDEuY2RyOworICAgIH0KKyAgICByZXR1cm4gc2NfcmV2ZXJzZUFwcGVu
ZEJhbmcocmV2cmVzLCBudWxsKTsKK30KK2Z1bmN0aW9uIHNjX2ZpbHRlck1hcDIocHJvYywgbDEs
IGwyKSB7CisgICAgdmFyIHJldnJlcyA9IG51bGw7CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7
CisgICAgICAgIHZhciB0bXAgPSBwcm9jKGwxLmNhciwgbDIuY2FyKTsKKyAgICAgICAgaWYodG1w
ICE9PSBmYWxzZSkgcmV2cmVzID0gc2NfY29ucyh0bXAsIHJldnJlcyk7CisJbDEgPSBsMS5jZHI7
CisJbDIgPSBsMi5jZHIKKyAgICB9CisgICAgcmV0dXJuIHNjX3JldmVyc2VBcHBlbmRCYW5nKHJl
dnJlcywgbnVsbCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBz
Y19maWx0ZXJNYXAocHJvYywgbDEsIGwyLCBsMykgeworICAgIGlmIChsMiA9PT0gdW5kZWZpbmVk
KQorCXJldHVybiBzY19maWx0ZXJNYXAxKHByb2MsIGwxKTsKKyAgICBlbHNlIGlmIChsMyA9PT0g
dW5kZWZpbmVkKQorCXJldHVybiBzY19maWx0ZXJNYXAyKHByb2MsIGwxLCBsMik7CisgICAgLy8g
ZWxzZQorICAgIHZhciBuYkFwcGx5QXJncyA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOworICAgIHZh
ciBhcHBseUFyZ3MgPSBuZXcgQXJyYXkobmJBcHBseUFyZ3MpOworICAgIHZhciByZXZyZXMgPSBu
dWxsOworICAgIHdoaWxlIChsMSAhPT0gbnVsbCkgeworCWZvciAodmFyIGkgPSAwOyBpIDwgbmJB
cHBseUFyZ3M7IGkrKykgeworCSAgICBhcHBseUFyZ3NbaV0gPSBhcmd1bWVudHNbaSArIDFdLmNh
cjsKKwkgICAgYXJndW1lbnRzW2kgKyAxXSA9IGFyZ3VtZW50c1tpICsgMV0uY2RyOworCX0KKwl2
YXIgdG1wID0gcHJvYy5hcHBseShudWxsLCBhcHBseUFyZ3MpOworCWlmKHRtcCAhPT0gZmFsc2Up
IHJldnJlcyA9IHNjX2NvbnModG1wLCByZXZyZXMpOworICAgIH0KKyAgICByZXR1cm4gc2NfcmV2
ZXJzZUFwcGVuZEJhbmcocmV2cmVzLCBudWxsKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0
KSkgKi8KK2Z1bmN0aW9uIHNjX2FueShwcm9jLCBsKSB7CisgICAgdmFyIHJldnJlcyA9IG51bGw7
CisgICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKyAgICAgICAgdmFyIHRtcCA9IHByb2MobC5jYXIp
OworICAgICAgICBpZih0bXAgIT09IGZhbHNlKSByZXR1cm4gdG1wOworCWwgPSBsLmNkcjsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKioqIE1FVEEgKChleHBvcnQgYW55PykKKyAg
ICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgInNjX2FueSgiIHByb2MgIiwiIGwgIikgIT09IGZh
bHNlIikpKQorKi8KK2Z1bmN0aW9uIHNjX2FueVByZWQocHJvYywgbCkgeworICAgIHJldHVybiBz
Y19hbnkocHJvYywgbCkhPT0gZmFsc2U7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICov
CitmdW5jdGlvbiBzY19ldmVyeShwcm9jLCBsKSB7CisgICAgdmFyIHJldnJlcyA9IG51bGw7Cisg
ICAgdmFyIHRtcCA9IHRydWU7CisgICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKyAgICAgICAgdG1w
ID0gcHJvYyhsLmNhcik7CisgICAgICAgIGlmICh0bXAgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7
CisJbCA9IGwuY2RyOworICAgIH0KKyAgICByZXR1cm4gdG1wOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQgZXZlcnk/KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiAic2NfZXZlcnkoIiBw
cm9jICIsIiBsICIpICE9PSBmYWxzZSIpKSkKKyovCitmdW5jdGlvbiBzY19ldmVyeVByZWQocHJv
YywgbCkgeworICAgIHZhciB0bXAgPSBzY19ldmVyeShwcm9jLCBsKTsKKyAgICBpZiAodG1wICE9
PSBmYWxzZSkgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiKCkiKSkpCisqLwor
ZnVuY3Rpb24gc2NfZm9yY2UobykgeworICAgIHJldHVybiBvKCk7Cit9CisKKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19tYWtlUHJvbWlzZShwcm9jKSB7CisgICAgdmFy
IGlzUmVzdWx0UmVhZHkgPSBmYWxzZTsKKyAgICB2YXIgcmVzdWx0ID0gdW5kZWZpbmVkOworICAg
IHJldHVybiBmdW5jdGlvbigpIHsKKwlpZiAoIWlzUmVzdWx0UmVhZHkpIHsKKwkgICAgdmFyIHRt
cCA9IHByb2MoKTsKKwkgICAgaWYgKCFpc1Jlc3VsdFJlYWR5KSB7CisJCWlzUmVzdWx0UmVhZHkg
PSB0cnVlOworCQlyZXN1bHQgPSB0bXA7CisJICAgIH0KKwl9CisJcmV0dXJuIHJlc3VsdDsKKyAg
ICB9OworfQorCitmdW5jdGlvbiBzY19WYWx1ZXModmFsdWVzKSB7CisgICAgdGhpcy52YWx1ZXMg
PSB2YWx1ZXM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBo
b2xlICh2YWx1ZXMpKSkKKyovCitmdW5jdGlvbiBzY192YWx1ZXMoKSB7CisgICAgaWYgKGFyZ3Vt
ZW50cy5sZW5ndGggPT09IDEpCisJcmV0dXJuIGFyZ3VtZW50c1swXTsKKyAgICBlbHNlCisJcmV0
dXJuIG5ldyBzY19WYWx1ZXMoYXJndW1lbnRzKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0
KSkgKi8KK2Z1bmN0aW9uIHNjX2NhbGxXaXRoVmFsdWVzKHByb2R1Y2VyLCBjb25zdW1lcikgewor
ICAgIHZhciBwcm9kdWNlZCA9IHByb2R1Y2VyKCk7CisgICAgaWYgKHByb2R1Y2VkIGluc3RhbmNl
b2Ygc2NfVmFsdWVzKQorCXJldHVybiBjb25zdW1lci5hcHBseShudWxsLCBwcm9kdWNlZC52YWx1
ZXMpOworICAgIGVsc2UKKwlyZXR1cm4gY29uc3VtZXIocHJvZHVjZWQpOworfQorCisvKioqIE1F
VEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZHluYW1pY1dpbmQoYmVmb3JlLCB0aHVu
aywgYWZ0ZXIpIHsKKyAgICBiZWZvcmUoKTsKKyAgICB0cnkgeworCXZhciByZXMgPSB0aHVuaygp
OworCXJldHVybiByZXM7CisgICAgfSBmaW5hbGx5IHsKKwlhZnRlcigpOworICAgIH0KK30KKwor
CisvLyBUT0RPOiBldmFsL3NjaGVtZS1yZXBvcnQtZW52aXJvbm1lbnQvbnVsbC1lbnZpcm9ubWVu
dC9pbnRlcmFjdGlvbi1lbnZpcm9ubWVudAorCisvLyBMSU1JVEFUSU9OOiAnbG9hZCcgZG9lc24n
dCBleGlzdCB3aXRob3V0IGZpbGVzLgorLy8gTElNSVRBVElPTjogdHJhbnNjcmlwdC1vbi90cmFu
c2NyaXB0LW9mZiBkb2Vzbid0IGV4aXN0IHdpdGhvdXQgZmlsZXMuCisKKworZnVuY3Rpb24gc2Nf
U3RydWN0KG5hbWUpIHsKKyAgICB0aGlzLm5hbWUgPSBuYW1lOworfQorc2NfU3RydWN0LnByb3Rv
dHlwZS5zY190b0Rpc3BsYXlTdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gIiM8c3Ry
dWN0IiArIHNjX2hhc2godGhpcykgKyAiPiI7Cit9Oworc2NfU3RydWN0LnByb3RvdHlwZS5zY190
b1dyaXRlU3RyaW5nID0gc2NfU3RydWN0LnByb3RvdHlwZS5zY190b0Rpc3BsYXlTdHJpbmc7CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDEgIm5l
dyBzY19TdHJ1Y3QoIiBuYW1lICIpIikpKQorKi8KK2Z1bmN0aW9uIHNjX21ha2VTdHJ1Y3QobmFt
ZSkgeworICAgIHJldHVybiBuZXcgc2NfU3RydWN0KG5hbWUpOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAo
cG9zdGZpeCAiIGluc3RhbmNlb2Ygc2NfU3RydWN0IikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzU3Ry
dWN0KG8pIHsKKyAgICByZXR1cm4gKG8gaW5zdGFuY2VvZiBzY19TdHJ1Y3QpOworfQorCisvKioq
IE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChw
ZWVwaG9sZSAoaG9sZSAyICIoIiAxICIgaW5zdGFuY2VvZiBzY19TdHJ1Y3QpICYmICggIiAxICIu
bmFtZSA9PT0gIiAwICIpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzU3RydWN0TmFtZWQobmFtZSwg
cykgeworICAgIHJldHVybiAoKHMgaW5zdGFuY2VvZiBzY19TdHJ1Y3QpICYmIChzLm5hbWUgPT09
IG5hbWUpKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IHN0cnVjdC1maWVsZCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChob2xlIDMgMCAiWyIgMiAiXSIpKSkKKyovCitmdW5jdGlvbiBzY19nZXRT
dHJ1Y3RGaWVsZChzLCBuYW1lLCBmaWVsZCkgeworICAgIHJldHVybiBzW2ZpZWxkXTsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0IHN0cnVjdC1maWVsZC1zZXQhKQorICAgICAgICAgICAocGVlcGhv
bGUgKGhvbGUgNCAwICJbIiAyICJdID0gIiAzKSkpCisqLworZnVuY3Rpb24gc2Nfc2V0U3RydWN0
RmllbGRCYW5nKHMsIG5hbWUsIGZpZWxkLCB2YWwpIHsKKyAgICBzW2ZpZWxkXSA9IHZhbDsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHByZWZpeCAi
fiIpKSkKKyovCitmdW5jdGlvbiBzY19iaXROb3QoeCkgeworICAgIHJldHVybiB+eDsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDIgMiAi
JiIpKSkKKyovCitmdW5jdGlvbiBzY19iaXRBbmQoeCwgeSkgeworICAgIHJldHVybiB4ICYgeTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4
IDIgMiAifCIpKSkKKyovCitmdW5jdGlvbiBzY19iaXRPcih4LCB5KSB7CisgICAgcmV0dXJuIHgg
fCB5OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAo
aW5maXggMiAyICJeIikpKQorKi8KK2Z1bmN0aW9uIHNjX2JpdFhvcih4LCB5KSB7CisgICAgcmV0
dXJuIHggXiB5OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVw
aG9sZSAoaW5maXggMiAyICI8PCIpKSkKKyovCitmdW5jdGlvbiBzY19iaXRMc2goeCwgeSkgewor
ICAgIHJldHVybiB4IDw8IHk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIj4+IikpKQorKi8KK2Z1bmN0aW9uIHNjX2JpdFJzaCh4
LCB5KSB7CisgICAgcmV0dXJuIHggPj4geTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQor
ICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDIgMiAiPj4+IikpKQorKi8KK2Z1bmN0aW9uIHNj
X2JpdFVyc2goeCwgeSkgeworICAgIHJldHVybiB4ID4+PiB5OworfQorCisvKioqIE1FVEEgKChl
eHBvcnQganMtZmllbGQganMtcHJvcGVydHkpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAy
IG8gIlsiIGZpZWxkICJdIikpKQorKi8KK2Z1bmN0aW9uIHNjX2pzRmllbGQobywgZmllbGQpIHsK
KyAgICByZXR1cm4gb1tmaWVsZF07Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBqcy1maWVsZC1z
ZXQhIGpzLXByb3BlcnR5LXNldCEpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAzIG8gIlsi
IGZpZWxkICJdID0gIiB2YWwpKSkKKyovCitmdW5jdGlvbiBzY19zZXRKc0ZpZWxkQmFuZyhvLCBm
aWVsZCwgdmFsKSB7CisgICAgcmV0dXJuIG9bZmllbGRdID0gdmFsOworfQorCisvKioqIE1FVEEg
KChleHBvcnQganMtZmllbGQtZGVsZXRlISBqcy1wcm9wZXJ0eS1kZWxldGUhKQorICAgICAgICAg
ICAocGVlcGhvbGUgKGhvbGUgMiAiZGVsZXRlIiBvICJbIiBmaWVsZCAiXSIpKSkKKyovCitmdW5j
dGlvbiBzY19kZWxldGVKc0ZpZWxkQmFuZyhvLCBmaWVsZCkgeworICAgIGRlbGV0ZSBvW2ZpZWxk
XTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGpz
Q2FsbCkpKQorKi8KK2Z1bmN0aW9uIHNjX2pzQ2FsbChvLCBmdW4pIHsKKyAgICB2YXIgYXJncyA9
IG5ldyBBcnJheSgpOworICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsg
aSsrKQorCWFyZ3NbaS0yXSA9IGFyZ3VtZW50c1tpXTsKKyAgICByZXR1cm4gZnVuLmFwcGx5KG8s
IGFyZ3MpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9s
ZSAoanNNZXRob2RDYWxsKSkpCisqLworZnVuY3Rpb24gc2NfanNNZXRob2RDYWxsKG8sIGZpZWxk
KSB7CisgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoKTsKKyAgICBmb3IgKHZhciBpID0gMjsgaSA8
IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKwlhcmdzW2ktMl0gPSBhcmd1bWVudHNbaV07CisgICAg
cmV0dXJuIG9bZmllbGRdLmFwcGx5KG8sIGFyZ3MpOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
bmV3IGpzLW5ldykKKyAgICAgICAgICAgKHBlZXBob2xlIChqc05ldykpKQorKi8KK2Z1bmN0aW9u
IHNjX2pzTmV3KGMpIHsKKyAgICB2YXIgZXZhbFN0ciA9ICJuZXcgYygiOworICAgIGV2YWxTdHIg
Kz1hcmd1bWVudHMubGVuZ3RoID4gMT8gImFyZ3VtZW50c1sxXSI6ICIiOworICAgIGZvciAodmFy
IGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorCWV2YWxTdHIgKz0gIiwgYXJndW1l
bnRzWyIgKyBpICsgIl0iOworICAgIGV2YWxTdHIgKz0iKSI7CisgICAgcmV0dXJuIGV2YWwoZXZh
bFN0cik7Cit9ICAgIAorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT0gUmVnRXhwID09PT09
PT09PT09PT09PT09PT09CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nf
cHJlZ2V4cChyZSkgeworICAgIHJldHVybiBuZXcgUmVnRXhwKHNjX3N0cmluZzJqc3N0cmluZyhy
ZSkpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJlZ2V4
cE1hdGNoKHJlLCBzKSB7CisgICAgdmFyIHJlZyA9IChyZSBpbnN0YW5jZW9mIFJlZ0V4cCkgPyBy
ZSA6IHNjX3ByZWdleHAocmUpOworICAgIHZhciB0bXAgPSByZWcuZXhlYyhzY19zdHJpbmcyanNz
dHJpbmcocykpOworICAgIAorICAgIGlmICh0bXAgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIHZhciByZXMgPSBudWxsOworICAgIGZvciAodmFyIGkgPSB0bXAubGVuZ3RoLTE7IGkg
Pj0gMDsgaS0tKSB7CisJaWYgKHRtcFtpXSAhPT0gbnVsbCkgeworCSAgICByZXMgPSBzY19jb25z
KHNjX2pzc3RyaW5nMnN0cmluZyh0bXBbaV0pLCByZXMpOworCX0gZWxzZSB7CisJICAgIHJlcyA9
IHNjX2NvbnMoZmFsc2UsIHJlcyk7CisJfQorICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorICAg
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJlZ2V4cFJlcGxhY2Uo
cmUsIHMxLCBzMikgeworICAgdmFyIHJlZzsKKyAgIHZhciBqc3MxID0gc2Nfc3RyaW5nMmpzc3Ry
aW5nKHMxKTsKKyAgIHZhciBqc3MyID0gc2Nfc3RyaW5nMmpzc3RyaW5nKHMyKTsKKworICAgaWYg
KHJlIGluc3RhbmNlb2YgUmVnRXhwKSB7CisgICAgICAgaWYgKHJlLmdsb2JhbCkKKwkgICByZWcg
PSByZTsKKyAgICAgICBlbHNlCisJICAgcmVnID0gbmV3IFJlZ0V4cChyZS5zb3VyY2UpOworICAg
fSBlbHNlIHsKKyAgICAgICByZWcgPSBuZXcgUmVnRXhwKHNjX3N0cmluZzJqc3N0cmluZyhyZSkp
OworICAgfQorCisgICByZXR1cm4ganNzMS5yZXBsYWNlKHJlZywganNzMik7Cit9CisgICAKKy8q
KiogTUVUQSAoKGV4cG9ydCBwcmVnZXhwLXJlcGxhY2UqKSkgKi8KK2Z1bmN0aW9uIHNjX3ByZWdl
eHBSZXBsYWNlQWxsKHJlLCBzMSwgczIpIHsKKyAgIHZhciByZWc7CisgICB2YXIganNzMSA9IHNj
X3N0cmluZzJqc3N0cmluZyhzMSk7CisgICB2YXIganNzMiA9IHNjX3N0cmluZzJqc3N0cmluZyhz
Mik7CisKKyAgIGlmIChyZSBpbnN0YW5jZW9mIFJlZ0V4cCkgeworICAgICAgaWYgKHJlLmdsb2Jh
bCkKKwkgIHJlZyA9IHJlOworICAgICAgZWxzZQorCSAgcmVnID0gbmV3IFJlZ0V4cChyZS5zb3Vy
Y2UsICJnIik7CisgICB9IGVsc2UgeworICAgICAgIHJlZyA9IG5ldyBSZWdFeHAoc2Nfc3RyaW5n
Mmpzc3RyaW5nKHJlKSwgImciKTsKKyAgIH0KKworICAgcmV0dXJuIGpzczEucmVwbGFjZShyZWcs
IGpzczIpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJl
Z2V4cFNwbGl0KHJlLCBzKSB7CisgICB2YXIgcmVnID0gKChyZSBpbnN0YW5jZW9mIFJlZ0V4cCkg
PworCSAgICAgIHJlIDoKKwkgICAgICBuZXcgUmVnRXhwKHNjX3N0cmluZzJqc3N0cmluZyhyZSkp
KTsKKyAgIHZhciBqc3MgPSBzY19zdHJpbmcyanNzdHJpbmcocyk7CisgICB2YXIgdG1wID0ganNz
LnNwbGl0KHJlZyk7CisKKyAgIGlmICh0bXAgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworCisgICBy
ZXR1cm4gc2NfdmVjdG9yMmxpc3QodG1wKTsKK30KKyAgIAorCisvKiA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0gKi8KKy8qIE90aGVyIGxpYnJhcnkgc3R1ZmYgKi8KKy8qID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAq
LworCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAx
ICJNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqIiAnbiAiKSIpKSkKKyovCitmdW5jdGlvbiBzY19y
YW5kb20obikgeworICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbik7Cit9CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCBjdXJyZW50LWRhdGUpCisgICAgICAgICAgIChwZWVwaG9sZSAo
aG9sZSAwICJuZXcgRGF0ZSgpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2N1cnJlbnREYXRlKCkgewor
ICAgcmV0dXJuIG5ldyBEYXRlKCk7Cit9CisKK2Z1bmN0aW9uIHNjX0hhc2h0YWJsZSgpIHsKK30K
K3NjX0hhc2h0YWJsZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1
cm4gIiN7JWhhc2h0YWJsZX0iOworfTsKKy8vIHNjX3RvV3JpdGVTdHJpbmcgPT0gc2NfdG9EaXNw
bGF5U3RyaW5nID09IHRvU3RyaW5nCisKK2Z1bmN0aW9uIHNjX0hhc2h0YWJsZUVsZW1lbnQoa2V5
LCB2YWwpIHsKKyAgICB0aGlzLmtleSA9IGtleTsKKyAgICB0aGlzLnZhbCA9IHZhbDsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMCAibmV3
IHNjX0hhc2h0YWJsZSgpIikpKQorKi8KK2Z1bmN0aW9uIHNjX21ha2VIYXNodGFibGUoKSB7Cisg
ICAgcmV0dXJuIG5ldyBzY19IYXNodGFibGUoKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0
KSkgKi8KK2Z1bmN0aW9uIHNjX2hhc2h0YWJsZVB1dEJhbmcoaHQsIGtleSwgdmFsKSB7CisgICAg
dmFyIGhhc2ggPSBzY19oYXNoKGtleSk7CisgICAgaHRbaGFzaF0gPSBuZXcgc2NfSGFzaHRhYmxl
RWxlbWVudChrZXksIHZhbCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5j
dGlvbiBzY19oYXNodGFibGVHZXQoaHQsIGtleSkgeworICAgIHZhciBoYXNoID0gc2NfaGFzaChr
ZXkpOworICAgIGlmIChoYXNoIGluIGh0KQorCXJldHVybiBodFtoYXNoXS52YWw7CisgICAgZWxz
ZQorCXJldHVybiBmYWxzZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0
aW9uIHNjX2hhc2h0YWJsZUZvckVhY2goaHQsIGYpIHsKKyAgICBmb3IgKHZhciB2IGluIGh0KSB7
CisJaWYgKGh0W3ZdIGluc3RhbmNlb2Ygc2NfSGFzaHRhYmxlRWxlbWVudCkKKwkgICAgZihodFt2
XS5rZXksIGh0W3ZdLnZhbCk7CisgICAgfQorfQorCisvKioqIE1FVEEgKChleHBvcnQgaGFzaHRh
YmxlLWNvbnRhaW5zPykKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgInNjX2hhc2goIiAx
ICIpIGluICIgMCkpKQorKi8KK2Z1bmN0aW9uIHNjX2hhc2h0YWJsZUNvbnRhaW5zKGh0LCBrZXkp
IHsKKyAgICB2YXIgaGFzaCA9IHNjX2hhc2goa2V5KTsKKyAgICBpZiAoaGFzaCBpbiBodCkKKwly
ZXR1cm4gdHJ1ZTsKKyAgICBlbHNlCisJcmV0dXJuIGZhbHNlOworfQorCit2YXIgU0NfSEFTSF9D
T1VOVEVSID0gMDsKKworZnVuY3Rpb24gc2NfaGFzaChvKSB7CisgICAgaWYgKG8gPT09IG51bGwp
CisJcmV0dXJuICJudWxsIjsKKyAgICBlbHNlIGlmIChvID09PSB1bmRlZmluZWQpCisJcmV0dXJu
ICJ1bmRlZmluZWQiOworICAgIGVsc2UgaWYgKG8gPT09IHRydWUpCisJcmV0dXJuICJ0cnVlIjsK
KyAgICBlbHNlIGlmIChvID09PSBmYWxzZSkKKwlyZXR1cm4gImZhbHNlIjsKKyAgICBlbHNlIGlm
ICh0eXBlb2YgbyA9PT0gIm51bWJlciIpCisJcmV0dXJuICJudW0tIiArIG87CisgICAgZWxzZSBp
ZiAodHlwZW9mIG8gPT09ICJzdHJpbmciKQorCXJldHVybiAianNzdHItIiArIG87CisgICAgZWxz
ZSBpZiAoby5zY19nZXRIYXNoKQorCXJldHVybiBvLnNjX2dldEhhc2goKTsKKyAgICBlbHNlCisJ
cmV0dXJuIHNjX2NvdW50ZXJIYXNoLmNhbGwobyk7Cit9CitmdW5jdGlvbiBzY19jb3VudGVySGFz
aCgpIHsKKyAgICBpZiAoIXRoaXMuc2NfaGFzaCkgeworCXRoaXMuc2NfaGFzaCA9ICJoYXNoLSIg
KyBTQ19IQVNIX0NPVU5URVI7CisJU0NfSEFTSF9DT1VOVEVSKys7CisgICAgfQorICAgIHJldHVy
biB0aGlzLnNjX2hhc2g7Cit9CisKK2Z1bmN0aW9uIHNjX1RyYW1wb2xpbmUoYXJncywgbWF4VGFp
bENhbGxzKSB7CisgICAgdGhpc1snX190cmFtcG9saW5lIHJldHVybl9fJ10gPSB0cnVlOworICAg
IHRoaXMuYXJncyA9IGFyZ3M7CisgICAgdGhpcy5NQVhfVEFJTF9DQUxMcyA9IG1heFRhaWxDYWxs
czsKK30KKy8vIFRPRE86IGNhbGwvY2Mgc3R1ZmYKK3NjX1RyYW1wb2xpbmUucHJvdG90eXBlLnJl
c3RhcnQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgbyA9IHRoaXM7CisgICAgd2hpbGUgKHRydWUp
IHsKKwkvLyBzZXQgYm90aCBnbG9iYWxzLgorCVNDX1RBSUxfT0JKRUNULmNhbGxzID0gby5NQVhf
VEFJTF9DQUxMcy0xOworCXZhciBmdW4gPSBvLmFyZ3MuY2FsbGVlOworCXZhciByZXMgPSBmdW4u
YXBwbHkoU0NfVEFJTF9PQkpFQ1QsIG8uYXJncyk7CisJaWYgKHJlcyBpbnN0YW5jZW9mIHNjX1Ry
YW1wb2xpbmUpCisJICAgIG8gPSByZXM7CisJZWxzZQorCSAgICByZXR1cm4gcmVzOworICAgIH0K
K30KKworLyoqKiBNRVRBICgoZXhwb3J0IGJpbmQtZXhpdC1sYW1iZGEpKSAqLworZnVuY3Rpb24g
c2NfYmluZEV4aXRMYW1iZGEocHJvYykgeworICAgIHZhciBlc2NhcGVfb2JqID0gbmV3IHNjX0Jp
bmRFeGl0RXhjZXB0aW9uKCk7CisgICAgdmFyIGVzY2FwZSA9IGZ1bmN0aW9uKHJlcykgeworCWVz
Y2FwZV9vYmoucmVzID0gcmVzOworCXRocm93IGVzY2FwZV9vYmo7CisgICAgfTsKKyAgICB0cnkg
eworCXJldHVybiBwcm9jKGVzY2FwZSk7CisgICAgfSBjYXRjaChlKSB7CisJaWYgKGUgPT09IGVz
Y2FwZV9vYmopIHsKKwkgICAgcmV0dXJuIGUucmVzOworCX0KKwl0aHJvdyBlOworICAgIH0KK30K
K2Z1bmN0aW9uIHNjX0JpbmRFeGl0RXhjZXB0aW9uKCkgeworICAgIHRoaXMuX2ludGVybmFsRXhj
ZXB0aW9uID0gdHJ1ZTsKK30KKwordmFyIFNDX1NDTTJKU19HTE9CQUxTID0gbmV3IE9iamVjdCgp
OworCisvLyBkZWZhdWx0IHRhaWwtY2FsbCBkZXB0aC4KKy8vIG5vcm1hbGx5IHRoZSBwcm9ncmFt
IHNob3VsZCBzZXQgaXQgYWdhaW4uIGJ1dCBqdXN0IGluIGNhc2UuLi4KK3ZhciBTQ19UQUlMX09C
SkVDVCA9IG5ldyBPYmplY3QoKTsKK1NDX1NDTTJKU19HTE9CQUxTLlRBSUxfT0JKRUNUID0gU0Nf
VEFJTF9PQkpFQ1Q7CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT0gSS9PID09PT09PT09PT09
PT09PT09PT09PT09CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworZnVuY3Rpb24gc2NfRU9GKCkgeworfQor
dmFyIFNDX0VPRl9PQkpFQ1QgPSBuZXcgc2NfRU9GKCk7CisKK2Z1bmN0aW9uIHNjX1BvcnQoKSB7
Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLSBJbnB1dCBwb3J0cyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKi8KKworZnVuY3Rpb24gc2NfSW5wdXRQb3J0KCkgeworfQorc2Nf
SW5wdXRQb3J0LnByb3RvdHlwZSA9IG5ldyBzY19Qb3J0KCk7CisKK3NjX0lucHV0UG9ydC5wcm90
b3R5cGUucGVla0NoYXIgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoISgicGVla2VkIiBpbiB0aGlz
KSkKKwl0aGlzLnBlZWtlZCA9IHRoaXMuZ2V0TmV4dENoYXIoKTsKKyAgICByZXR1cm4gdGhpcy5w
ZWVrZWQ7Cit9CitzY19JbnB1dFBvcnQucHJvdG90eXBlLnJlYWRDaGFyID0gZnVuY3Rpb24oKSB7
CisgICAgdmFyIHRtcCA9IHRoaXMucGVla0NoYXIoKTsKKyAgICBkZWxldGUgdGhpcy5wZWVrZWQ7
CisgICAgcmV0dXJuIHRtcDsKK30KK3NjX0lucHV0UG9ydC5wcm90b3R5cGUuaXNDaGFyUmVhZHkg
PSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK3NjX0lucHV0UG9ydC5wcm90b3R5
cGUuY2xvc2UgPSBmdW5jdGlvbigpIHsKKyAgICAvLyBkbyBub3RoaW5nCit9CisKKy8qIC4uLi4u
Li4uLi4uLi4uIFN0cmluZyBwb3J0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uKi8KK2Z1bmN0
aW9uIHNjX0Vycm9ySW5wdXRQb3J0KCkgeworfTsKK3NjX0Vycm9ySW5wdXRQb3J0LnByb3RvdHlw
ZSA9IG5ldyBzY19JbnB1dFBvcnQoKTsKK3NjX0Vycm9ySW5wdXRQb3J0LnByb3RvdHlwZS5nZXRO
ZXh0Q2hhciA9IGZ1bmN0aW9uKCkgeworICAgIHRocm93ICJjYW4ndCByZWFkIGZyb20gZXJyb3It
cG9ydC4iOworfTsKK3NjX0Vycm9ySW5wdXRQb3J0LnByb3RvdHlwZS5pc0NoYXJSZWFkeSA9IGZ1
bmN0aW9uKCkgeworICAgIHJldHVybiBmYWxzZTsKK307CisgICAgCisKKy8qIC4uLi4uLi4uLi4u
Li4uIFN0cmluZyBwb3J0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uKi8KKworZnVuY3Rpb24g
c2NfU3RyaW5nSW5wdXRQb3J0KGpzU3RyKSB7CisgICAgLy8gd2UgYXJlIGdvaW5nIHRvIGRvIHNv
bWUgY2hhckF0cyBvbiB0aGUgc3RyLgorICAgIC8vIGluc3RlYWQgb2YgcmVjcmVhdGluZyBhbGwg
dGhlIHRpbWUgYSBTdHJpbmctb2JqZWN0LCB3ZQorICAgIC8vIGNyZWF0ZSBvbmUgaW4gdGhlIGJl
Z2lubmluZy4gKG5vdCBzdXJlLCBpZiB0aGlzIGlzIHJlYWxseSBhbiBvcHRpbSkKKyAgICB0aGlz
LnN0ciA9IG5ldyBTdHJpbmcoanNTdHIpOworICAgIHRoaXMucG9zID0gMDsKK30KK3NjX1N0cmlu
Z0lucHV0UG9ydC5wcm90b3R5cGUgPSBuZXcgc2NfSW5wdXRQb3J0KCk7CitzY19TdHJpbmdJbnB1
dFBvcnQucHJvdG90eXBlLmdldE5leHRDaGFyID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHRoaXMu
cG9zID49IHRoaXMuc3RyLmxlbmd0aCkKKwlyZXR1cm4gU0NfRU9GX09CSkVDVDsKKyAgICByZXR1
cm4gdGhpcy5zdHIuY2hhckF0KHRoaXMucG9zKyspOworfTsKKworLyogLS0tLS0tLS0tLS0tLSBS
ZWFkIGFuZCBvdGhlciBsaWItZnVucyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov
CitmdW5jdGlvbiBzY19Ub2tlbih0eXBlLCB2YWwsIHBvcykgeworICAgIHRoaXMudHlwZSA9IHR5
cGU7CisgICAgdGhpcy52YWwgPSB2YWw7CisgICAgdGhpcy5wb3MgPSBwb3M7Cit9CitzY19Ub2tl
bi5FT0YgPSAwLypFT0YqLzsKK3NjX1Rva2VuLk9QRU5fUEFSID0gMS8qT1BFTl9QQVIqLzsKK3Nj
X1Rva2VuLkNMT1NFX1BBUiA9IDIvKkNMT1NFX1BBUiovOworc2NfVG9rZW4uT1BFTl9CUkFDRSA9
IDMvKk9QRU5fQlJBQ0UqLzsKK3NjX1Rva2VuLkNMT1NFX0JSQUNFID0gNC8qQ0xPU0VfQlJBQ0Uq
LzsKK3NjX1Rva2VuLk9QRU5fQlJBQ0tFVCA9IDUvKk9QRU5fQlJBQ0tFVCovOworc2NfVG9rZW4u
Q0xPU0VfQlJBQ0tFVCA9IDYvKkNMT1NFX0JSQUNLRVQqLzsKK3NjX1Rva2VuLldISVRFU1BBQ0Ug
PSA3LypXSElURVNQQUNFKi87CitzY19Ub2tlbi5RVU9URSA9IDgvKlFVT1RFKi87CitzY19Ub2tl
bi5JRCA9IDkvKklEKi87CitzY19Ub2tlbi5ET1QgPSAxMC8qRE9UKi87CitzY19Ub2tlbi5TVFJJ
TkcgPSAxMS8qU1RSSU5HKi87CitzY19Ub2tlbi5OVU1CRVIgPSAxMi8qTlVNQkVSKi87CitzY19U
b2tlbi5FUlJPUiA9IDEzLypFUlJPUiovOworc2NfVG9rZW4uVkVDVE9SX0JFR0lOID0gMTQvKlZF
Q1RPUl9CRUdJTiovOworc2NfVG9rZW4uVFJVRSA9IDE1LypUUlVFKi87CitzY19Ub2tlbi5GQUxT
RSA9IDE2LypGQUxTRSovOworc2NfVG9rZW4uVU5TUEVDSUZJRUQgPSAxNy8qVU5TUEVDSUZJRUQq
LzsKK3NjX1Rva2VuLlJFRkVSRU5DRSA9IDE4LypSRUZFUkVOQ0UqLzsKK3NjX1Rva2VuLlNUT1JF
ID0gMTkvKlNUT1JFKi87CitzY19Ub2tlbi5DSEFSID0gMjAvKkNIQVIqLzsKKwordmFyIFNDX0lE
X0NMQVNTID0gU0NfTE9XRVJfQ0xBU1MgKyBTQ19VUFBFUl9DTEFTUyArICIhJCUqKy0uLzo8PT4/
QF5ffiI7CitmdW5jdGlvbiBzY19Ub2tlbml6ZXIocG9ydCkgeworICAgIHRoaXMucG9ydCA9IHBv
cnQ7Cit9CitzY19Ub2tlbml6ZXIucHJvdG90eXBlLnBlZWtUb2tlbiA9IGZ1bmN0aW9uKCkgewor
ICAgIGlmICh0aGlzLnBlZWtlZCkKKwlyZXR1cm4gdGhpcy5wZWVrZWQ7CisgICAgdmFyIG5ld1Rv
a2VuID0gdGhpcy5uZXh0VG9rZW4oKTsKKyAgICB0aGlzLnBlZWtlZCA9IG5ld1Rva2VuOworICAg
IHJldHVybiBuZXdUb2tlbjsKK307CitzY19Ub2tlbml6ZXIucHJvdG90eXBlLnJlYWRUb2tlbiA9
IGZ1bmN0aW9uKCkgeworICAgIHZhciB0bXAgPSB0aGlzLnBlZWtUb2tlbigpOworICAgIGRlbGV0
ZSB0aGlzLnBlZWtlZDsKKyAgICByZXR1cm4gdG1wOworfTsKK3NjX1Rva2VuaXplci5wcm90b3R5
cGUubmV4dFRva2VuID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHBvcnQgPSB0aGlzLnBvcnQ7Cisg
ICAgCisgICAgZnVuY3Rpb24gaXNOdW1iZXJDaGFyKGMpIHsKKwlyZXR1cm4gKGMgPj0gIjAiICYm
IGMgPD0gIjkiKTsKKyAgICB9OworICAgIGZ1bmN0aW9uIGlzSWRPck51bWJlckNoYXIoYykgewor
CXJldHVybiBTQ19JRF9DTEFTUy5pbmRleE9mKGMpICE9IC0xIHx8IC8vIElELWNoYXIKKwkgICAg
KGMgPj0gIjAiICYmIGMgPD0gIjkiKTsKKyAgICB9CisgICAgZnVuY3Rpb24gaXNXaGl0ZXNwYWNl
KGMpIHsKKwlyZXR1cm4gYyA9PT0gIiAiIHx8IGMgPT09ICJcciIgfHwgYyA9PT0gIlxuIiB8fCBj
ID09PSAiXHQiIHx8IGMgPT09ICJcZiI7CisgICAgfTsKKyAgICBmdW5jdGlvbiBpc1doaXRlc3Bh
Y2VPckVPRihjKSB7CisJcmV0dXJuIGlzV2hpdGVzcGFjZShjKSB8fCBjID09PSBTQ19FT0ZfT0JK
RUNUOworICAgIH07CisKKyAgICBmdW5jdGlvbiByZWFkU3RyaW5nKCkgeworCXJlcyA9ICIiOwor
CXdoaWxlICh0cnVlKSB7CisJICAgIHZhciBjID0gcG9ydC5yZWFkQ2hhcigpOworCSAgICBzd2l0
Y2ggKGMpIHsKKwkgICAgY2FzZSAnIic6CisJCXJldHVybiBuZXcgc2NfVG9rZW4oMTEvKlNUUklO
RyovLCByZXMpOworCSAgICBjYXNlICJcXCI6CisJCXZhciB0bXAgPSBwb3J0LnJlYWRDaGFyKCk7
CisJCXN3aXRjaCAodG1wKSB7CisJCWNhc2UgJzAnOiByZXMgKz0gIlwwIjsgYnJlYWs7CisJCWNh
c2UgJ2EnOiByZXMgKz0gIlxhIjsgYnJlYWs7CisJCWNhc2UgJ2InOiByZXMgKz0gIlxiIjsgYnJl
YWs7CisJCWNhc2UgJ2YnOiByZXMgKz0gIlxmIjsgYnJlYWs7CisJCWNhc2UgJ24nOiByZXMgKz0g
IlxuIjsgYnJlYWs7CisJCWNhc2UgJ3InOiByZXMgKz0gIlxyIjsgYnJlYWs7CisJCWNhc2UgJ3Qn
OiByZXMgKz0gIlx0IjsgYnJlYWs7CisJCWNhc2UgJ3YnOiByZXMgKz0gIlx2IjsgYnJlYWs7CisJ
CWNhc2UgJyInOiByZXMgKz0gJyInOyBicmVhazsKKwkJY2FzZSAnXFwnOiByZXMgKz0gJ1xcJzsg
YnJlYWs7CisJCWNhc2UgJ3gnOgorCQkgICAgLyogaGV4YS1udW1iZXIgKi8KKwkJICAgIHZhciBu
YiA9IDA7CisJCSAgICB3aGlsZSAodHJ1ZSkgeworCQkJdmFyIGhleEMgPSBwb3J0LnBlZWtDaGFy
KCk7CisJCQlpZiAoaGV4QyA+PSAnMCcgJiYgaGV4QyA8PSAnOScpIHsKKwkJCSAgICBwb3J0LnJl
YWRDaGFyKCk7CisJCQkgICAgbmIgPSBuYiAqIDE2ICsgaGV4Qy5jaGFyQ29kZUF0KDApIC0gJzAn
LmNoYXJDb2RlQXQoMCk7CisJCQl9IGVsc2UgaWYgKGhleEMgPj0gJ2EnICYmIGhleEMgPD0gJ2Yn
KSB7CisJCQkgICAgcG9ydC5yZWFkQ2hhcigpOworCQkJICAgIG5iID0gbmIgKiAxNiArIGhleEMu
Y2hhckNvZGVBdCgwKSAtICdhJy5jaGFyQ29kZUF0KDApOworCQkJfSBlbHNlIGlmIChoZXhDID49
ICdBJyAmJiBoZXhDIDw9ICdGJykgeworCQkJICAgIHBvcnQucmVhZENoYXIoKTsKKwkJCSAgICBu
YiA9IG5iICogMTYgKyBoZXhDLmNoYXJDb2RlQXQoMCkgLSAnQScuY2hhckNvZGVBdCgwKTsKKwkJ
CX0gZWxzZSB7CisJCQkgICAgLy8gbmV4dCBjaGFyIGlzbid0IHBhcnQgb2YgaGV4LgorCQkJICAg
IHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG5iKTsKKwkJCSAgICBicmVhazsKKwkJCX0KKwkJ
ICAgIH0KKwkJICAgIGJyZWFrOworCQlkZWZhdWx0OgorCQkgICAgaWYgKHRtcCA9PT0gU0NfRU9G
X09CSkVDVCkgeworCQkJcmV0dXJuIG5ldyBzY19Ub2tlbigxMy8qRVJST1IqLywgInVuY2xvc2Vk
IHN0cmluZy1saXRlcmFsIiArIHJlcyk7CisJCSAgICB9CisJCSAgICByZXMgKz0gdG1wOworCQl9
CisJCWJyZWFrOworCSAgICBkZWZhdWx0OgorCQlpZiAoYyA9PT0gU0NfRU9GX09CSkVDVCkgewor
CQkgICAgcmV0dXJuIG5ldyBzY19Ub2tlbigxMy8qRVJST1IqLywgInVuY2xvc2VkIHN0cmluZy1s
aXRlcmFsIiArIHJlcyk7CisJCX0KKwkJcmVzICs9IGM7CisJICAgIH0KKwl9CisgICAgfTsKKyAg
ICBmdW5jdGlvbiByZWFkSWRPck51bWJlcihmaXJzdENoYXIpIHsKKwl2YXIgcmVzID0gZmlyc3RD
aGFyOworCXdoaWxlIChpc0lkT3JOdW1iZXJDaGFyKHBvcnQucGVla0NoYXIoKSkpCisJICAgIHJl
cyArPSBwb3J0LnJlYWRDaGFyKCk7CisJaWYgKGlzTmFOKHJlcykpCisJICAgIHJldHVybiBuZXcg
c2NfVG9rZW4oOS8qSUQqLywgcmVzKTsKKwllbHNlCisJICAgIHJldHVybiBuZXcgc2NfVG9rZW4o
MTIvKk5VTUJFUiovLCByZXMgLSAwKTsKKyAgICB9OworICAgIAorICAgIGZ1bmN0aW9uIHNraXBX
aGl0ZXNwYWNlQW5kQ29tbWVudHMoKSB7CisJdmFyIGRvbmUgPSBmYWxzZTsKKwl3aGlsZSAoIWRv
bmUpIHsKKwkgICAgZG9uZSA9IHRydWU7CisJICAgIHdoaWxlIChpc1doaXRlc3BhY2UocG9ydC5w
ZWVrQ2hhcigpKSkKKwkJcG9ydC5yZWFkQ2hhcigpOworCSAgICBpZiAocG9ydC5wZWVrQ2hhcigp
ID09PSAnOycpIHsKKwkJcG9ydC5yZWFkQ2hhcigpOworCQlkb25lID0gZmFsc2U7CisJCXdoaWxl
ICh0cnVlKSB7CisJCSAgICBjdXJDaGFyID0gcG9ydC5yZWFkQ2hhcigpOworCQkgICAgaWYgKGN1
ckNoYXIgPT09IFNDX0VPRl9PQkpFQ1QgfHwKKwkJCWN1ckNoYXIgPT09ICdcbicpCisJCQlicmVh
azsKKwkJfQorCSAgICB9CisJfQorICAgIH07CisgICAgCisgICAgZnVuY3Rpb24gcmVhZERvdCgp
IHsKKwlpZiAoaXNXaGl0ZXNwYWNlKHBvcnQucGVla0NoYXIoKSkpCisJICAgIHJldHVybiBuZXcg
c2NfVG9rZW4oMTAvKkRPVCovKTsKKwllbHNlCisJICAgIHJldHVybiByZWFkSWRPck51bWJlcigi
LiIpOworICAgIH07CisKKyAgICBmdW5jdGlvbiByZWFkU2hhcnAoKSB7CisJdmFyIGMgPSBwb3J0
LnJlYWRDaGFyKCk7CisJaWYgKGlzV2hpdGVzcGFjZShjKSkKKwkgICAgcmV0dXJuIG5ldyBzY19U
b2tlbigxMy8qRVJST1IqLywgImJhZCAjLXBhdHRlcm4wLiIpOworCisJLy8gcmVmZXJlbmNlCisJ
aWYgKGlzTnVtYmVyQ2hhcihjKSkgeworCSAgICB2YXIgbmIgPSBjIC0gMDsKKwkgICAgd2hpbGUg
KGlzTnVtYmVyQ2hhcihwb3J0LnBlZWtDaGFyKCkpKQorCQluYiA9IG5iKjEwICsgKHBvcnQucmVh
ZENoYXIoKSAtIDApOworCSAgICBzd2l0Y2ggKHBvcnQucmVhZENoYXIoKSkgeworCSAgICBjYXNl
ICcjJzoKKwkJcmV0dXJuIG5ldyBzY19Ub2tlbigxOC8qUkVGRVJFTkNFKi8sIG5iKTsKKwkgICAg
Y2FzZSAnPSc6CisJCXJldHVybiBuZXcgc2NfVG9rZW4oMTkvKlNUT1JFKi8sIG5iKTsKKwkgICAg
ZGVmYXVsdDoKKwkJcmV0dXJuIG5ldyBzY19Ub2tlbigxMy8qRVJST1IqLywgImJhZCAjLXBhdHRl
cm4xLiIgKyBuYik7CisJICAgIH0KKwl9CisKKwlpZiAoYyA9PT0gIigiKQorCSAgICByZXR1cm4g
bmV3IHNjX1Rva2VuKDE0LypWRUNUT1JfQkVHSU4qLyk7CisJCisJaWYgKGMgPT09ICJcXCIpIHsg
Ly8gY2hhcmFjdGVyCisJICAgIHZhciB0bXAgPSAiIgorCSAgICB3aGlsZSAoIWlzV2hpdGVzcGFj
ZU9yRU9GKHBvcnQucGVla0NoYXIoKSkpCisJCXRtcCArPSBwb3J0LnJlYWRDaGFyKCk7CisJICAg
IHN3aXRjaCAodG1wLmxlbmd0aCkgeworCSAgICBjYXNlIDA6IC8vIGl0J3MgZXNjYXBpbmcgYSB3
aGl0ZXNwYWNlIGNoYXI6CisJCWlmIChzY19pc0VPRk9iamVjdChwb3J0LnBlZWtDaGFyKSkKKwkJ
ICAgIHJldHVybiBuZXcgc2NfVG9rZW4oMTMvKkVSUk9SKi8sICJiYWQgIy1wYXR0ZXJuMi4iKTsK
KwkJZWxzZQorCQkgICAgcmV0dXJuIG5ldyBzY19Ub2tlbigyMC8qQ0hBUiovLCBwb3J0LnJlYWRD
aGFyKCkpOworCSAgICBjYXNlIDE6CisJCXJldHVybiBuZXcgc2NfVG9rZW4oMjAvKkNIQVIqLywg
dG1wKTsKKwkgICAgZGVmYXVsdDoKKwkJdmFyIGVudHJ5ID0gc2NfQ2hhci5yZWFkYWJsZTJjaGFy
W3RtcC50b0xvd2VyQ2FzZSgpXTsKKwkJaWYgKGVudHJ5KQorCQkgICAgcmV0dXJuIG5ldyBzY19U
b2tlbigyMC8qQ0hBUiovLCBlbnRyeSk7CisJCWVsc2UKKwkJICAgIHJldHVybiBuZXcgc2NfVG9r
ZW4oMTMvKkVSUk9SKi8sICJ1bmtub3duIGNoYXJhY3RlciBkZXNjcmlwdGlvbjogI1xcIiArIHRt
cCk7CisJICAgIH0KKwl9CisKKwkvLyBzb21lIGNvbnN0YW50cyAoI3QsICNmLCAjdW5zcGVjaWZp
ZWQpCisJdmFyIHJlczsKKwl2YXIgbmVlZGluZzsKKwlzd2l0Y2ggKGMpIHsKKwljYXNlICd0Jzog
cmVzID0gbmV3IHNjX1Rva2VuKDE1LypUUlVFKi8sIHRydWUpOyBuZWVkaW5nID0gIiI7IGJyZWFr
OworCWNhc2UgJ2YnOiByZXMgPSBuZXcgc2NfVG9rZW4oMTYvKkZBTFNFKi8sIGZhbHNlKTsgbmVl
ZGluZyA9ICIiOyBicmVhazsKKwljYXNlICd1JzogcmVzID0gbmV3IHNjX1Rva2VuKDE3LypVTlNQ
RUNJRklFRCovLCB1bmRlZmluZWQpOyBuZWVkaW5nID0gIm5zcGVjaWZpZWQiOyBicmVhazsKKwlk
ZWZhdWx0OgorCSAgICByZXR1cm4gbmV3IHNjX1Rva2VuKDEzLypFUlJPUiovLCAiYmFkICMtcGF0
dGVybjM6ICIgKyBjKTsKKwl9CisJd2hpbGUodHJ1ZSkgeworCSAgICBjID0gcG9ydC5wZWVrQ2hh
cigpOworCSAgICBpZiAoKGlzV2hpdGVzcGFjZU9yRU9GKGMpIHx8IGMgPT09ICcpJykgJiYKKwkJ
bmVlZGluZyA9PSAiIikKKwkJcmV0dXJuIHJlczsKKwkgICAgZWxzZSBpZiAoaXNXaGl0ZXNwYWNl
KGMpIHx8IG5lZWRpbmcgPT0gIiIpCisJCXJldHVybiBuZXcgc2NfVG9rZW4oMTMvKkVSUk9SKi8s
ICJiYWQgIy1wYXR0ZXJuNCAiICsgYyArICIgIiArIG5lZWRpbmcpOworCSAgICBlbHNlIGlmIChu
ZWVkaW5nLmNoYXJBdCgwKSA9PSBjKSB7CisJCXBvcnQucmVhZENoYXIoKTsgLy8gY29uc3VtZQor
CQluZWVkaW5nID0gbmVlZGluZy5zbGljZSgxKTsKKwkgICAgfSBlbHNlCisJCXJldHVybiBuZXcg
c2NfVG9rZW4oMTMvKkVSUk9SKi8sICJiYWQgIy1wYXR0ZXJuNSIpOworCX0KKwkKKyAgICB9Owor
CisgICAgc2tpcFdoaXRlc3BhY2VBbmRDb21tZW50cygpOworICAgIHZhciBjdXJDaGFyID0gcG9y
dC5yZWFkQ2hhcigpOworICAgIGlmIChjdXJDaGFyID09PSBTQ19FT0ZfT0JKRUNUKQorCXJldHVy
biBuZXcgc2NfVG9rZW4oMC8qRU9GKi8sIGN1ckNoYXIpOworICAgIHN3aXRjaCAoY3VyQ2hhcikK
KyAgICB7CisgICAgY2FzZSAiICI6CisgICAgY2FzZSAiXG4iOgorICAgIGNhc2UgIlx0IjoKKwly
ZXR1cm4gcmVhZFdoaXRlc3BhY2UoKTsKKyAgICBjYXNlICIoIjoKKwlyZXR1cm4gbmV3IHNjX1Rv
a2VuKDEvKk9QRU5fUEFSKi8pOworICAgIGNhc2UgIikiOgorCXJldHVybiBuZXcgc2NfVG9rZW4o
Mi8qQ0xPU0VfUEFSKi8pOworICAgIGNhc2UgInsiOgorCXJldHVybiBuZXcgc2NfVG9rZW4oMy8q
T1BFTl9CUkFDRSovKTsKKyAgICBjYXNlICJ9IjoKKwlyZXR1cm4gbmV3IHNjX1Rva2VuKDQvKkNM
T1NFX0JSQUNFKi8pOworICAgIGNhc2UgIlsiOgorCXJldHVybiBuZXcgc2NfVG9rZW4oNS8qT1BF
Tl9CUkFDS0VUKi8pOworICAgIGNhc2UgIl0iOgorCXJldHVybiBuZXcgc2NfVG9rZW4oNi8qQ0xP
U0VfQlJBQ0tFVCovKTsKKyAgICBjYXNlICInIjoKKwlyZXR1cm4gbmV3IHNjX1Rva2VuKDgvKlFV
T1RFKi8pOworICAgIGNhc2UgIiMiOgorCXJldHVybiByZWFkU2hhcnAoKTsKKyAgICBjYXNlICIu
IjoKKwlyZXR1cm4gcmVhZERvdCgpOworICAgIGNhc2UgJyInOgorCXJldHVybiByZWFkU3RyaW5n
KCk7CisgICAgZGVmYXVsdDoKKwlpZiAoaXNJZE9yTnVtYmVyQ2hhcihjdXJDaGFyKSkKKwkgICAg
cmV0dXJuIHJlYWRJZE9yTnVtYmVyKGN1ckNoYXIpOworCXRocm93ICJ1bmV4cGVjdGVkIGNoYXJh
Y3RlcjogIiArIGN1ckNoYXI7CisgICAgfQorfTsKKworZnVuY3Rpb24gc2NfUmVhZGVyKHRva2Vu
aXplcikgeworICAgIHRoaXMudG9rZW5pemVyID0gdG9rZW5pemVyOworICAgIHRoaXMuYmFja3Jl
ZiA9IG5ldyBBcnJheSgpOworfQorc2NfUmVhZGVyLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24o
KSB7CisgICAgZnVuY3Rpb24gcmVhZExpc3QobGlzdEJlZ2luVHlwZSkgeworCWZ1bmN0aW9uIG1h
dGNoZXNQZWVyKG9wZW4sIGNsb3NlKSB7CisJICAgIHJldHVybiBvcGVuID09PSAxLypPUEVOX1BB
UiovICYmIGNsb3NlID09PSAyLypDTE9TRV9QQVIqLworCSAgICAJfHwgb3BlbiA9PT0gMy8qT1BF
Tl9CUkFDRSovICYmIGNsb3NlID09PSA0LypDTE9TRV9CUkFDRSovCisJCXx8IG9wZW4gPT09IDUv
Kk9QRU5fQlJBQ0tFVCovICYmIGNsb3NlID09PSA2LypDTE9TRV9CUkFDS0VUKi87CisJfTsKKwl2
YXIgcmVzID0gbnVsbDsKKworCXdoaWxlICh0cnVlKSB7CisJICAgIHZhciB0b2tlbiA9IHRva2Vu
aXplci5wZWVrVG9rZW4oKTsKKwkgICAgCisJICAgIHN3aXRjaCAodG9rZW4udHlwZSkgeworCSAg
ICBjYXNlIDIvKkNMT1NFX1BBUiovOgorCSAgICBjYXNlIDQvKkNMT1NFX0JSQUNFKi86CisJICAg
IGNhc2UgNi8qQ0xPU0VfQlJBQ0tFVCovOgorCQlpZiAobWF0Y2hlc1BlZXIobGlzdEJlZ2luVHlw
ZSwgdG9rZW4udHlwZSkpIHsKKwkJICAgIHRva2VuaXplci5yZWFkVG9rZW4oKTsgLy8gY29uc3Vt
ZSB0b2tlbgorCQkgICAgcmV0dXJuIHNjX3JldmVyc2VCYW5nKHJlcyk7CisJCX0gZWxzZQorCQkg
ICAgdGhyb3cgImNsb3NpbmcgcGFyIGRvZXNuJ3QgbWF0Y2g6ICIgKyBsaXN0QmVnaW5UeXBlCisJ
CQkrICIgIiArIGxpc3RFbmRUeXBlOworCisJICAgIGNhc2UgMC8qRU9GKi86CisJCXRocm93ICJ1
bmV4cGVjdGVkIGVuZCBvZiBmaWxlIjsKKworCSAgICBjYXNlIDEwLypET1QqLzoKKwkJdG9rZW5p
emVyLnJlYWRUb2tlbigpOyAvLyBjb25zdW1lIHRva2VuCisJCXZhciBjZHIgPSB0aGlzLnJlYWQo
KTsKKwkJdmFyIHBhciA9IHRva2VuaXplci5yZWFkVG9rZW4oKTsKKwkJaWYgKCFtYXRjaGVzUGVl
cihsaXN0QmVnaW5UeXBlLCBwYXIudHlwZSkpCisJCSAgICB0aHJvdyAiY2xvc2luZyBwYXIgZG9l
c24ndCBtYXRjaDogIiArIGxpc3RCZWdpblR5cGUKKwkJCSsgIiAiICsgcGFyLnR5cGU7CisJCWVs
c2UKKwkJICAgIHJldHVybiBzY19yZXZlcnNlQXBwZW5kQmFuZyhyZXMsIGNkcik7CisJCQorCisJ
ICAgIGRlZmF1bHQ6CisJCXJlcyA9IHNjX2NvbnModGhpcy5yZWFkKCksIHJlcyk7CisJICAgIH0K
Kwl9CisgICAgfTsKKyAgICBmdW5jdGlvbiByZWFkUXVvdGUoKSB7CisJcmV0dXJuIHNjX2NvbnMo
InF1b3RlIiwgc2NfY29ucyh0aGlzLnJlYWQoKSwgbnVsbCkpOworICAgIH07CisgICAgZnVuY3Rp
b24gcmVhZFZlY3RvcigpIHsKKwkvLyBvcGVuaW5nLXBhcmVudGhlc2lzIGlzIGFscmVhZHkgY29u
c3VtZWQKKwl2YXIgYSA9IG5ldyBBcnJheSgpOworCXdoaWxlICh0cnVlKSB7CisJICAgIHZhciB0
b2tlbiA9IHRva2VuaXplci5wZWVrVG9rZW4oKTsKKwkgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7
CisJICAgIGNhc2UgMi8qQ0xPU0VfUEFSKi86CisJCXRva2VuaXplci5yZWFkVG9rZW4oKTsKKwkJ
cmV0dXJuIGE7CisJCQorCSAgICBkZWZhdWx0OgorCQlhLnB1c2godGhpcy5yZWFkKCkpOworCSAg
ICB9CisJfQorICAgIH07CisKKyAgICBmdW5jdGlvbiBzdG9yZVJlZmVuY2UobmIpIHsKKwl2YXIg
dG1wID0gdGhpcy5yZWFkKCk7CisJdGhpcy5iYWNrcmVmW25iXSA9IHRtcDsKKwlyZXR1cm4gdG1w
OworICAgIH07CisJCisgICAgZnVuY3Rpb24gcmVhZFJlZmVyZW5jZShuYikgeworCWlmIChuYiBp
biB0aGlzLmJhY2tyZWYpCisJICAgIHJldHVybiB0aGlzLmJhY2tyZWZbbmJdOworCWVsc2UKKwkg
ICAgdGhyb3cgImJhZCByZWZlcmVuY2U6ICIgKyBuYjsKKyAgICB9OworICAgIAorICAgIHZhciB0
b2tlbml6ZXIgPSB0aGlzLnRva2VuaXplcjsKKworICAgIHZhciB0b2tlbiA9IHRva2VuaXplci5y
ZWFkVG9rZW4oKTsKKworICAgIC8vIGhhbmRsZSBlcnJvcgorICAgIGlmICh0b2tlbi50eXBlID09
PSAxMy8qRVJST1IqLykKKwl0aHJvdyB0b2tlbi52YWw7CisgICAgCisgICAgc3dpdGNoICh0b2tl
bi50eXBlKSB7CisgICAgY2FzZSAxLypPUEVOX1BBUiovOgorICAgIGNhc2UgMy8qT1BFTl9CUkFD
RSovOgorICAgIGNhc2UgNS8qT1BFTl9CUkFDS0VUKi86CisJcmV0dXJuIHJlYWRMaXN0LmNhbGwo
dGhpcywgdG9rZW4udHlwZSk7CisgICAgY2FzZSA4LypRVU9URSovOgorCXJldHVybiByZWFkUXVv
dGUuY2FsbCh0aGlzKTsKKyAgICBjYXNlIDExLypTVFJJTkcqLzoKKwlyZXR1cm4gc2NfanNzdHJp
bmcyc3RyaW5nKHRva2VuLnZhbCk7CisgICAgY2FzZSAyMC8qQ0hBUiovOgorCXJldHVybiBuZXcg
c2NfQ2hhcih0b2tlbi52YWwpOworICAgIGNhc2UgMTQvKlZFQ1RPUl9CRUdJTiovOgorCXJldHVy
biByZWFkVmVjdG9yLmNhbGwodGhpcyk7CisgICAgY2FzZSAxOC8qUkVGRVJFTkNFKi86CisJcmV0
dXJuIHJlYWRSZWZlcmVuY2UuY2FsbCh0aGlzLCB0b2tlbi52YWwpOworICAgIGNhc2UgMTkvKlNU
T1JFKi86CisJcmV0dXJuIHN0b3JlUmVmZW5jZS5jYWxsKHRoaXMsIHRva2VuLnZhbCk7CisgICAg
Y2FzZSA5LypJRCovOgorCXJldHVybiBzY19qc3N0cmluZzJzeW1ib2wodG9rZW4udmFsKTsKKyAg
ICBjYXNlIDAvKkVPRiovOgorICAgIGNhc2UgMTIvKk5VTUJFUiovOgorICAgIGNhc2UgMTUvKlRS
VUUqLzoKKyAgICBjYXNlIDE2LypGQUxTRSovOgorICAgIGNhc2UgMTcvKlVOU1BFQ0lGSUVEKi86
CisJcmV0dXJuIHRva2VuLnZhbDsKKyAgICBkZWZhdWx0OgorCXRocm93ICJ1bmV4cGVjdGVkIHRv
a2VuICIgKyB0b2tlbi50eXBlICsgIiAiICsgdG9rZW4udmFsOworICAgIH0KK307CisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19yZWFkKHBvcnQpIHsKKyAgICBpZiAo
cG9ydCA9PT0gdW5kZWZpbmVkKSAvLyB3ZSBhc3N1bWUgdGhlIHBvcnQgaGFzbid0IGJlZW4gZ2l2
ZW4uCisJcG9ydCA9IFNDX0RFRkFVTFRfSU47IC8vIFRIUkVBRDogc2hhcmVkIHZhci4uLgorICAg
IHZhciByZWFkZXIgPSBuZXcgc2NfUmVhZGVyKG5ldyBzY19Ub2tlbml6ZXIocG9ydCkpOworICAg
IHJldHVybiByZWFkZXIucmVhZCgpOworfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1
bmN0aW9uIHNjX3JlYWRDaGFyKHBvcnQpIHsKKyAgICBpZiAocG9ydCA9PT0gdW5kZWZpbmVkKSAv
LyB3ZSBhc3N1bWUgdGhlIHBvcnQgaGFzbid0IGJlZW4gZ2l2ZW4uCisJcG9ydCA9IFNDX0RFRkFV
TFRfSU47IC8vIFRIUkVBRDogc2hhcmVkIHZhci4uLgorICAgIHZhciB0ID0gcG9ydC5yZWFkQ2hh
cigpOworICAgIHJldHVybiB0ID09PSBTQ19FT0ZfT0JKRUNUPyB0OiBuZXcgc2NfQ2hhcih0KTsK
K30KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19wZWVrQ2hhcihwb3J0
KSB7CisgICAgaWYgKHBvcnQgPT09IHVuZGVmaW5lZCkgLy8gd2UgYXNzdW1lIHRoZSBwb3J0IGhh
c24ndCBiZWVuIGdpdmVuLgorCXBvcnQgPSBTQ19ERUZBVUxUX0lOOyAvLyBUSFJFQUQ6IHNoYXJl
ZCB2YXIuLi4KKyAgICB2YXIgdCA9IHBvcnQucGVla0NoYXIoKTsKKyAgICByZXR1cm4gdCA9PT0g
U0NfRU9GX09CSkVDVD8gdDogbmV3IHNjX0NoYXIodCk7Cit9ICAgIAorLyoqKiBNRVRBICgoZXhw
b3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKSkKKyovCitmdW5jdGlvbiBzY19pc0NoYXJS
ZWFkeShwb3J0KSB7CisgICAgaWYgKHBvcnQgPT09IHVuZGVmaW5lZCkgLy8gd2UgYXNzdW1lIHRo
ZSBwb3J0IGhhc24ndCBiZWVuIGdpdmVuLgorCXBvcnQgPSBTQ19ERUZBVUxUX0lOOyAvLyBUSFJF
QUQ6IHNoYXJlZCB2YXIuLi4KKyAgICByZXR1cm4gcG9ydC5pc0NoYXJSZWFkeSgpOworfQorLyoq
KiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jbG9z
ZSgpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2Nsb3NlSW5wdXRQb3J0KHApIHsKKyAgICByZXR1cm4g
cC5jbG9zZSgpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBl
IGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiIGluc3RhbmNlb2Ygc2NfSW5w
dXRQb3J0IikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzSW5wdXRQb3J0KG8pIHsKKyAgICByZXR1cm4g
KG8gaW5zdGFuY2VvZiBzY19JbnB1dFBvcnQpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgZW9m
LW9iamVjdD8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAo
cG9zdGZpeCAiID09PSBTQ19FT0ZfT0JKRUNUIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzRU9GT2Jq
ZWN0KG8pIHsKKyAgICByZXR1cm4gbyA9PT0gU0NfRU9GX09CSkVDVDsKK30KKworLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMCAiU0NfREVGQVVMVF9J
TiIpKSkKKyovCitmdW5jdGlvbiBzY19jdXJyZW50SW5wdXRQb3J0KCkgeworICAgIHJldHVybiBT
Q19ERUZBVUxUX0lOOworfQorCisvKiAtLS0tLS0tLS0tLS0gZmlsZSBvcGVyYXRpb25zIGFyZSBu
b3Qgc3VwcG9ydGVkIC0tLS0tLS0tLS0tKi8KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitm
dW5jdGlvbiBzY19jYWxsV2l0aElucHV0RmlsZShzLCBwcm9jKSB7CisgICAgdGhyb3cgImNhbid0
IG9wZW4gIiArIHM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBz
Y19jYWxsV2l0aE91dHB1dEZpbGUocywgcHJvYykgeworICAgIHRocm93ICJjYW4ndCBvcGVuICIg
KyBzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd2l0aElu
cHV0RnJvbUZpbGUocywgdGh1bmspIHsKKyAgICB0aHJvdyAiY2FuJ3Qgb3BlbiAiICsgczsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3dpdGhPdXRwdXRUb0Zp
bGUocywgdGh1bmspIHsKKyAgICB0aHJvdyAiY2FuJ3Qgb3BlbiAiICsgczsKK30KKworLyoqKiBN
RVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX29wZW5JbnB1dEZpbGUocykgeworICAg
IHRocm93ICJjYW4ndCBvcGVuICIgKyBzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAq
LworZnVuY3Rpb24gc2Nfb3Blbk91dHB1dEZpbGUocykgeworICAgIHRocm93ICJjYW4ndCBvcGVu
ICIgKyBzOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkpICovCitmdW5jdGlvbiBzY19iYXNlbmFtZShwKSB7CisgICB2YXIgaSA9IHAubGFzdElu
ZGV4T2YoJy8nKTsKKworICAgaWYoaSA+PSAwKQorICAgICAgcmV0dXJuIHAuc3Vic3RyaW5nKGkg
KyAxLCBwLmxlbmd0aCk7CisgICBlbHNlCisgICAgICByZXR1cm4gJyc7Cit9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19kaXJuYW1lKHApIHsKKyAgIHZhciBpID0g
cC5sYXN0SW5kZXhPZignLycpOworCisgICBpZihpID49IDApCisgICAgICByZXR1cm4gcC5zdWJz
dHJpbmcoMCwgaSk7CisgICBlbHNlCisgICAgICByZXR1cm4gJyc7Cit9CisKKy8qIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0qLworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nf
d2l0aElucHV0RnJvbVBvcnQocCwgdGh1bmspIHsKKyAgICB0cnkgeworCXZhciB0bXAgPSBTQ19E
RUZBVUxUX0lOOyAvLyBUSFJFQUQ6IHNoYXJlZCB2YXIuCisJU0NfREVGQVVMVF9JTiA9IHA7CisJ
cmV0dXJuIHRodW5rKCk7CisgICAgfSBmaW5hbGx5IHsKKwlTQ19ERUZBVUxUX0lOID0gdG1wOwor
ICAgIH0KK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3dpdGhJ
bnB1dEZyb21TdHJpbmcocywgdGh1bmspIHsKKyAgICByZXR1cm4gc2Nfd2l0aElucHV0RnJvbVBv
cnQobmV3IHNjX1N0cmluZ0lucHV0UG9ydChzY19zdHJpbmcyanNzdHJpbmcocykpLCB0aHVuayk7
Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY193aXRoT3V0cHV0
VG9Qb3J0KHAsIHRodW5rKSB7CisgICAgdHJ5IHsKKwl2YXIgdG1wID0gU0NfREVGQVVMVF9PVVQ7
IC8vIFRIUkVBRDogc2hhcmVkIHZhci4KKwlTQ19ERUZBVUxUX09VVCA9IHA7CisJcmV0dXJuIHRo
dW5rKCk7CisgICAgfSBmaW5hbGx5IHsKKwlTQ19ERUZBVUxUX09VVCA9IHRtcDsKKyAgICB9Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY193aXRoT3V0cHV0VG9T
dHJpbmcodGh1bmspIHsKKyAgICB2YXIgcCA9IG5ldyBzY19TdHJpbmdPdXRwdXRQb3J0KCk7Cisg
ICAgc2Nfd2l0aE91dHB1dFRvUG9ydChwLCB0aHVuayk7CisgICAgcmV0dXJuIHAuY2xvc2UoKTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3dpdGhPdXRwdXRU
b1Byb2NlZHVyZShwcm9jLCB0aHVuaykgeworICAgIHZhciB0ID0gZnVuY3Rpb24ocykgeyBwcm9j
KHNjX2pzc3RyaW5nMnN0cmluZyhzKSk7IH07CisgICAgcmV0dXJuIHNjX3dpdGhPdXRwdXRUb1Bv
cnQobmV3IHNjX0dlbmVyaWNPdXRwdXRQb3J0KHQpLCB0aHVuayk7Cit9CisKKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDAgIm5ldyBzY19TdHJpbmdP
dXRwdXRQb3J0KCkiKSkpCisqLworZnVuY3Rpb24gc2Nfb3Blbk91dHB1dFN0cmluZygpIHsKKyAg
ICByZXR1cm4gbmV3IHNjX1N0cmluZ091dHB1dFBvcnQoKTsKK30KKworLyoqKiBNRVRBICgoZXhw
b3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX29wZW5JbnB1dFN0cmluZyhzdHIpIHsKKyAgICByZXR1
cm4gbmV3IHNjX1N0cmluZ0lucHV0UG9ydChzY19zdHJpbmcyanNzdHJpbmcoc3RyKSk7Cit9CisK
Ky8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitmdW5jdGlvbiBzY19PdXRwdXRQb3J0KCkgewor
fQorc2NfT3V0cHV0UG9ydC5wcm90b3R5cGUgPSBuZXcgc2NfUG9ydCgpOworc2NfT3V0cHV0UG9y
dC5wcm90b3R5cGUuYXBwZW5kSlNTdHJpbmcgPSBmdW5jdGlvbihvYmopIHsKKyAgICAvKiBkbyBu
b3RoaW5nICovCit9CitzY19PdXRwdXRQb3J0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCkg
eworICAgIC8qIGRvIG5vdGhpbmcgKi8KK30KKworZnVuY3Rpb24gc2NfU3RyaW5nT3V0cHV0UG9y
dCgpIHsKKyAgICB0aGlzLnJlcyA9ICIiOworfQorc2NfU3RyaW5nT3V0cHV0UG9ydC5wcm90b3R5
cGUgPSBuZXcgc2NfT3V0cHV0UG9ydCgpOworc2NfU3RyaW5nT3V0cHV0UG9ydC5wcm90b3R5cGUu
YXBwZW5kSlNTdHJpbmcgPSBmdW5jdGlvbihzKSB7CisgICAgdGhpcy5yZXMgKz0gczsKK30KK3Nj
X1N0cmluZ091dHB1dFBvcnQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0
dXJuIHNjX2pzc3RyaW5nMnN0cmluZyh0aGlzLnJlcyk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkpICovCitmdW5jdGlvbiBzY19nZXRPdXRwdXRTdHJpbmcoc3ApIHsKKyAgICByZXR1cm4g
c2NfanNzdHJpbmcyc3RyaW5nKHNwLnJlcyk7Cit9CisgICAgCisKK2Z1bmN0aW9uIHNjX0Vycm9y
T3V0cHV0UG9ydCgpIHsKK30KK3NjX0Vycm9yT3V0cHV0UG9ydC5wcm90b3R5cGUgPSBuZXcgc2Nf
T3V0cHV0UG9ydCgpOworc2NfRXJyb3JPdXRwdXRQb3J0LnByb3RvdHlwZS5hcHBlbmRKU1N0cmlu
ZyA9IGZ1bmN0aW9uKHMpIHsKKyAgICB0aHJvdyAiZG9uJ3Qgd3JpdGUgb24gRXJyb3JQb3J0ISI7
Cit9CitzY19FcnJvck91dHB1dFBvcnQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7Cisg
ICAgLyogZG8gbm90aGluZyAqLworfQorCitmdW5jdGlvbiBzY19HZW5lcmljT3V0cHV0UG9ydChh
cHBlbmRKU1N0cmluZywgY2xvc2UpIHsKKyAgICB0aGlzLmFwcGVuZEpTU3RyaW5nID0gYXBwZW5k
SlNTdHJpbmc7CisgICAgaWYgKGNsb3NlKQorCXRoaXMuY2xvc2UgPSBjbG9zZTsKK30KK3NjX0dl
bmVyaWNPdXRwdXRQb3J0LnByb3RvdHlwZSA9IG5ldyBzY19PdXRwdXRQb3J0KCk7CisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBl
ZXBob2xlIChwb3N0Zml4ICIgaW5zdGFuY2VvZiBzY19PdXRwdXRQb3J0IikpKQorKi8KK2Z1bmN0
aW9uIHNjX2lzT3V0cHV0UG9ydChvKSB7CisgICAgcmV0dXJuIChvIGluc3RhbmNlb2Ygc2NfT3V0
cHV0UG9ydCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChwb3N0Zml4ICIuY2xvc2UoKSIpKSkKKyovCitmdW5jdGlvbiBzY19jbG9zZU91dHB1dFBv
cnQocCkgeworICAgIHJldHVybiBwLmNsb3NlKCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0t
LSB3cml0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd3JpdGUobywg
cCkgeworICAgIGlmIChwID09PSB1bmRlZmluZWQpIC8vIHdlIGFzc3VtZSBub3QgZ2l2ZW4KKwlw
ID0gU0NfREVGQVVMVF9PVVQ7CisgICAgcC5hcHBlbmRKU1N0cmluZyhzY190b1dyaXRlU3RyaW5n
KG8pKTsKK30KKworZnVuY3Rpb24gc2NfdG9Xcml0ZVN0cmluZyhvKSB7CisgICAgaWYgKG8gPT09
IG51bGwpCisJcmV0dXJuICIoKSI7CisgICAgZWxzZSBpZiAobyA9PT0gdHJ1ZSkKKwlyZXR1cm4g
IiN0IjsKKyAgICBlbHNlIGlmIChvID09PSBmYWxzZSkKKwlyZXR1cm4gIiNmIjsKKyAgICBlbHNl
IGlmIChvID09PSB1bmRlZmluZWQpCisJcmV0dXJuICIjdW5zcGVjaWZpZWQiOworICAgIGVsc2Ug
aWYgKHR5cGVvZiBvID09PSAnZnVuY3Rpb24nKQorCXJldHVybiAiIzxwcm9jZWR1cmUgIiArIHNj
X2hhc2gobykgKyAiPiI7CisgICAgZWxzZSBpZiAoby5zY190b1dyaXRlU3RyaW5nKQorCXJldHVy
biBvLnNjX3RvV3JpdGVTdHJpbmcoKTsKKyAgICBlbHNlCisJcmV0dXJuIG8udG9TdHJpbmcoKTsK
K30KKworZnVuY3Rpb24gc2NfZXNjYXBlV3JpdGVTdHJpbmcocykgeworICAgIHZhciByZXMgPSAi
IjsKKyAgICB2YXIgaiA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIHsK
Kwlzd2l0Y2ggKHMuY2hhckF0KGkpKSB7CisJY2FzZSAiXDAiOiByZXMgKz0gcy5zdWJzdHJpbmco
aiwgaSkgKyAiXFwwIjsgaiA9IGkgKyAxOyBicmVhazsKKwljYXNlICJcYiI6IHJlcyArPSBzLnN1
YnN0cmluZyhqLCBpKSArICJcXGIiOyBqID0gaSArIDE7IGJyZWFrOworCWNhc2UgIlxmIjogcmVz
ICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcZiI7IGogPSBpICsgMTsgYnJlYWs7CisJY2FzZSAi
XG4iOiByZXMgKz0gcy5zdWJzdHJpbmcoaiwgaSkgKyAiXFxuIjsgaiA9IGkgKyAxOyBicmVhazsK
KwljYXNlICJcciI6IHJlcyArPSBzLnN1YnN0cmluZyhqLCBpKSArICJcXHIiOyBqID0gaSArIDE7
IGJyZWFrOworCWNhc2UgIlx0IjogcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcdCI7IGog
PSBpICsgMTsgYnJlYWs7CisJY2FzZSAiXHYiOiByZXMgKz0gcy5zdWJzdHJpbmcoaiwgaSkgKyAi
XFx2IjsgaiA9IGkgKyAxOyBicmVhazsKKwljYXNlICciJzogcmVzICs9IHMuc3Vic3RyaW5nKGos
IGkpICsgJ1xcIic7IGogPSBpICsgMTsgYnJlYWs7CisJY2FzZSAiXFwiOiByZXMgKz0gcy5zdWJz
dHJpbmcoaiwgaSkgKyAiXFxcXCI7IGogPSBpICsgMTsgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAg
dmFyIGMgPSBzLmNoYXJBdChpKTsKKwkgICAgaWYgKCJcYSIgIT09ICJhIiAmJiBjID09ICJcYSIp
IHsKKwkJcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcYSI7IGogPSBpICsgMTsgY29udGlu
dWU7CisJICAgIH0KKwkgICAgaWYgKCJcdiIgIT09ICJ2IiAmJiBjID09ICJcdiIpIHsKKwkJcmVz
ICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcdiI7IGogPSBpICsgMTsgY29udGludWU7CisJICAg
IH0KKwkgICAgLy9pZiAocy5jaGFyQXQoaSkgPCAnICcgfHwgcy5jaGFyQ29kZUF0KGkpID4gMTI3
KSB7CisJICAgIC8vIENBUkU6IE1hbnVlbCBpcyB0aGlzIE9LIHdpdGggSE9QPworCSAgICBpZiAo
cy5jaGFyQXQoaSkgPCAnICcpIHsKKwkJLyogbm9uIHByaW50YWJsZSBjaGFyYWN0ZXIgYW5kIHNw
ZWNpYWwgY2hhcnMgKi8KKwkJcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxceCIgKyBzLmNo
YXJDb2RlQXQoaSkudG9TdHJpbmcoMTYpOworCQlqID0gaSArIDE7CisJICAgIH0KKwkgICAgLy8g
ZWxzZSBqdXN0IGxldCBpIGluY3JlYXNlLi4uCisJfQorICAgIH0KKyAgICByZXMgKz0gcy5zdWJz
dHJpbmcoaiwgaSk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0t
IGRpc3BsYXkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2Rpc3BsYXko
bywgcCkgeworICAgIGlmIChwID09PSB1bmRlZmluZWQpIC8vIHdlIGFzc3VtZSBub3QgZ2l2ZW4K
KwlwID0gU0NfREVGQVVMVF9PVVQ7CisgICAgcC5hcHBlbmRKU1N0cmluZyhzY190b0Rpc3BsYXlT
dHJpbmcobykpOworfQorCitmdW5jdGlvbiBzY190b0Rpc3BsYXlTdHJpbmcobykgeworICAgIGlm
IChvID09PSBudWxsKQorCXJldHVybiAiKCkiOworICAgIGVsc2UgaWYgKG8gPT09IHRydWUpCisJ
cmV0dXJuICIjdCI7CisgICAgZWxzZSBpZiAobyA9PT0gZmFsc2UpCisJcmV0dXJuICIjZiI7Cisg
ICAgZWxzZSBpZiAobyA9PT0gdW5kZWZpbmVkKQorCXJldHVybiAiI3Vuc3BlY2lmaWVkIjsKKyAg
ICBlbHNlIGlmICh0eXBlb2YgbyA9PT0gJ2Z1bmN0aW9uJykKKwlyZXR1cm4gIiM8cHJvY2VkdXJl
ICIgKyBzY19oYXNoKG8pICsgIj4iOworICAgIGVsc2UgaWYgKG8uc2NfdG9EaXNwbGF5U3RyaW5n
KQorCXJldHVybiBvLnNjX3RvRGlzcGxheVN0cmluZygpOworICAgIGVsc2UKKwlyZXR1cm4gby50
b1N0cmluZygpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0gbmV3bGluZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbmV3bGluZShwKSB7CisgICAgaWYgKHAgPT09
IHVuZGVmaW5lZCkgLy8gd2UgYXNzdW1lIG5vdCBnaXZlbgorCXAgPSBTQ19ERUZBVUxUX09VVDsK
KyAgICBwLmFwcGVuZEpTU3RyaW5nKCJcbiIpOworfQorICAgIAorLyogLS0tLS0tLS0tLS0tLS0t
LS0tIHdyaXRlLWNoYXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3dy
aXRlQ2hhcihjLCBwKSB7CisgICAgaWYgKHAgPT09IHVuZGVmaW5lZCkgLy8gd2UgYXNzdW1lIG5v
dCBnaXZlbgorCXAgPSBTQ19ERUZBVUxUX09VVDsKKyAgICBwLmFwcGVuZEpTU3RyaW5nKGMudmFs
KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tIHdyaXRlLWNpcmNsZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd3JpdGVDaXJjbGUobywgcCkgeworICAgIGlmIChw
ID09PSB1bmRlZmluZWQpIC8vIHdlIGFzc3VtZSBub3QgZ2l2ZW4KKwlwID0gU0NfREVGQVVMVF9P
VVQ7CisgICAgcC5hcHBlbmRKU1N0cmluZyhzY190b1dyaXRlQ2lyY2xlU3RyaW5nKG8pKTsKK30K
KworZnVuY3Rpb24gc2NfdG9Xcml0ZUNpcmNsZVN0cmluZyhvKSB7CisgICAgdmFyIHN5bWIgPSBz
Y19nZW5zeW0oIndyaXRlQ2lyY2xlIik7CisgICAgdmFyIG5iUG9pbnRlciA9IG5ldyBPYmplY3Qo
KTsKKyAgICBuYlBvaW50ZXIubmIgPSAwOworICAgIHNjX3ByZXBXcml0ZUNpcmNsZShvLCBzeW1i
LCBuYlBvaW50ZXIpOworICAgIHJldHVybiBzY19nZW5Ub1dyaXRlQ2lyY2xlU3RyaW5nKG8sIHN5
bWIpOworfQorCitmdW5jdGlvbiBzY19wcmVwV3JpdGVDaXJjbGUobywgc3ltYiwgbmJQb2ludGVy
KSB7CisgICAgLy8gVE9ETyBzY19TdHJ1Y3QKKyAgICBpZiAobyBpbnN0YW5jZW9mIHNjX1BhaXIg
fHwKKwlvIGluc3RhbmNlb2Ygc2NfVmVjdG9yKSB7CisJaWYgKG9bc3ltYl0gIT09IHVuZGVmaW5l
ZCkgeworCSAgICAvLyBub3QgdGhlIGZpcnN0IHZpc2l0LgorCSAgICBvW3N5bWJdKys7CisJICAg
IC8vIHVubGVzcyB0aGVyZSBpcyBhbHJlYWR5IGEgbnVtYmVyLCBhc3NpZ24gb25lLgorCSAgICBp
ZiAoIW9bc3ltYiArICJuYiJdKSBvW3N5bWIgKyAibmIiXSA9IG5iUG9pbnRlci5uYisrOworCSAg
ICByZXR1cm47CisJfQorCW9bc3ltYl0gPSAwOworCWlmIChvIGluc3RhbmNlb2Ygc2NfUGFpcikg
eworCSAgICBzY19wcmVwV3JpdGVDaXJjbGUoby5jYXIsIHN5bWIsIG5iUG9pbnRlcik7CisJICAg
IHNjX3ByZXBXcml0ZUNpcmNsZShvLmNkciwgc3ltYiwgbmJQb2ludGVyKTsKKwl9IGVsc2Ugewor
CSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG8ubGVuZ3RoOyBpKyspCisJCXNjX3ByZXBXcml0ZUNp
cmNsZShvW2ldLCBzeW1iLCBuYlBvaW50ZXIpOworCX0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNj
X2dlblRvV3JpdGVDaXJjbGVTdHJpbmcobywgc3ltYikgeworICAgIGlmICghKG8gaW5zdGFuY2Vv
ZiBzY19QYWlyIHx8CisJICBvIGluc3RhbmNlb2Ygc2NfVmVjdG9yKSkKKwlyZXR1cm4gc2NfdG9X
cml0ZVN0cmluZyhvKTsKKyAgICByZXR1cm4gby5zY190b1dyaXRlQ2lyY2xlU3RyaW5nKHN5bWIp
OworfQorc2NfUGFpci5wcm90b3R5cGUuc2NfdG9Xcml0ZUNpcmNsZVN0cmluZyA9IGZ1bmN0aW9u
KHN5bWIsIGluTGlzdCkgeworICAgIGlmICh0aGlzW3N5bWIgKyAidXNlIl0pIHsgLy8gdXNlLWZs
YWcgaXMgc2V0LiBKdXN0IHVzZSBpdC4KKwl2YXIgbmIgPSB0aGlzW3N5bWIgKyAibmIiXTsKKwlp
ZiAodGhpc1tzeW1iXS0tID09PSAwKSB7IC8vIGlmIHdlIGFyZSB0aGUgbGFzdCB1c2UuIHJlbW92
ZSBhbGwgZmllbGRzLgorCSAgICBkZWxldGUgdGhpc1tzeW1iXTsKKwkgICAgZGVsZXRlIHRoaXNb
c3ltYiArICJuYiJdOworCSAgICBkZWxldGUgdGhpc1tzeW1iICsgInVzZSJdOworCX0KKwlpZiAo
aW5MaXN0KQorCSAgICByZXR1cm4gJy4gIycgKyBuYiArICcjJzsKKwllbHNlCisJICAgIHJldHVy
biAnIycgKyBuYiArICcjJzsKKyAgICB9CisgICAgaWYgKHRoaXNbc3ltYl0tLSA9PT0gMCkgeyAv
LyBpZiB3ZSBhcmUgdGhlIGxhc3QgdXNlLiByZW1vdmUgYWxsIGZpZWxkcy4KKwlkZWxldGUgdGhp
c1tzeW1iXTsKKwlkZWxldGUgdGhpc1tzeW1iICsgIm5iIl07CisJZGVsZXRlIHRoaXNbc3ltYiAr
ICJ1c2UiXTsKKyAgICB9CisKKyAgICB2YXIgcmVzID0gIiI7CisgICAgCisgICAgaWYgKHRoaXNb
c3ltYl0gIT09IHVuZGVmaW5lZCkgeyAvLyBpbXBsaWVzID4gMAorCXRoaXNbc3ltYiArICJ1c2Ui
XSA9IHRydWU7CisJaWYgKGluTGlzdCkKKwkgICAgcmVzICs9ICcuICMnICsgdGhpc1tzeW1iICsg
Im5iIl0gKyAnPSc7CisJZWxzZQorCSAgICByZXMgKz0gJyMnICsgdGhpc1tzeW1iICsgIm5iIl0g
KyAnPSc7CisJaW5MaXN0ID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFpbkxpc3QpCisJcmVz
ICs9ICIoIjsKKyAgICAKKyAgICAvLyBwcmludCBjYXIKKyAgICByZXMgKz0gc2NfZ2VuVG9Xcml0
ZUNpcmNsZVN0cmluZyh0aGlzLmNhciwgc3ltYik7CisgICAgCisgICAgaWYgKHNjX2lzUGFpcih0
aGlzLmNkcikpIHsKKwlyZXMgKz0gIiAiICsgdGhpcy5jZHIuc2NfdG9Xcml0ZUNpcmNsZVN0cmlu
ZyhzeW1iLCB0cnVlKTsKKyAgICB9IGVsc2UgaWYgKHRoaXMuY2RyICE9PSBudWxsKSB7CisJcmVz
ICs9ICIgLiAiICsgc2NfZ2VuVG9Xcml0ZUNpcmNsZVN0cmluZyh0aGlzLmNkciwgc3ltYik7Cisg
ICAgfQorICAgIGlmICghaW5MaXN0KQorCXJlcyArPSAiKSI7CisgICAgcmV0dXJuIHJlczsKK307
CitzY19WZWN0b3IucHJvdG90eXBlLnNjX3RvV3JpdGVDaXJjbGVTdHJpbmcgPSBmdW5jdGlvbihz
eW1iKSB7CisgICAgaWYgKHRoaXNbc3ltYiArICJ1c2UiXSkgeyAvLyB1c2UtZmxhZyBpcyBzZXQu
IEp1c3QgdXNlIGl0LgorCXZhciBuYiA9IHRoaXNbc3ltYiArICJuYiJdOworCWlmICh0aGlzW3N5
bWJdLS0gPT09IDApIHsgLy8gaWYgd2UgYXJlIHRoZSBsYXN0IHVzZS4gcmVtb3ZlIGFsbCBmaWVs
ZHMuCisJICAgIGRlbGV0ZSB0aGlzW3N5bWJdOworCSAgICBkZWxldGUgdGhpc1tzeW1iICsgIm5i
Il07CisJICAgIGRlbGV0ZSB0aGlzW3N5bWIgKyAidXNlIl07CisJfQorCXJldHVybiAnIycgKyBu
YiArICcjJzsKKyAgICB9CisgICAgaWYgKHRoaXNbc3ltYl0tLSA9PT0gMCkgeyAvLyBpZiB3ZSBh
cmUgdGhlIGxhc3QgdXNlLiByZW1vdmUgYWxsIGZpZWxkcy4KKwlkZWxldGUgdGhpc1tzeW1iXTsK
KwlkZWxldGUgdGhpc1tzeW1iICsgIm5iIl07CisJZGVsZXRlIHRoaXNbc3ltYiArICJ1c2UiXTsK
KyAgICB9CisKKyAgICB2YXIgcmVzID0gIiI7CisgICAgaWYgKHRoaXNbc3ltYl0gIT09IHVuZGVm
aW5lZCkgeyAvLyBpbXBsaWVzID4gMAorCXRoaXNbc3ltYiArICJ1c2UiXSA9IHRydWU7CisJcmVz
ICs9ICcjJyArIHRoaXNbc3ltYiArICJuYiJdICsgJz0nOworICAgIH0KKyAgICByZXMgKz0gIiMo
IjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHsKKwlyZXMgKz0g
c2NfZ2VuVG9Xcml0ZUNpcmNsZVN0cmluZyh0aGlzW2ldLCBzeW1iKTsKKwlpZiAoaSA8IHRoaXMu
bGVuZ3RoIC0gMSkgcmVzICs9ICIgIjsKKyAgICB9CisgICAgcmVzICs9ICIpIjsKKyAgICByZXR1
cm4gcmVzOworfTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0gcHJpbnQgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoqKiBNRVRBICgo
ZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3ByaW50KHMpIHsKKyAgICBpZiAoYXJndW1lbnRz
Lmxlbmd0aCA9PT0gMSkgeworCXNjX2Rpc3BsYXkocyk7CisJc2NfbmV3bGluZSgpOworICAgIH0K
KyAgICBlbHNlIHsKKwlmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykK
KwkgICAgc2NfZGlzcGxheShhcmd1bWVudHNbaV0pOworCXNjX25ld2xpbmUoKTsKKyAgICB9Cit9
CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLSBmb3JtYXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICov
CitmdW5jdGlvbiBzY19mb3JtYXQocywgYXJncykgeworICAgdmFyIGxlbiA9IHMubGVuZ3RoOwor
ICAgdmFyIHAgPSBuZXcgc2NfU3RyaW5nT3V0cHV0UG9ydCgpOworICAgdmFyIGkgPSAwLCBqID0g
MTsKKworICAgd2hpbGUoIGkgPCBsZW4gKSB7CisgICAgICB2YXIgaTIgPSBzLmluZGV4T2YoIn4i
LCBpKTsKKworICAgICAgaWYgKGkyID09IC0xKSB7CisJICBwLmFwcGVuZEpTU3RyaW5nKCBzLnN1
YnN0cmluZyggaSwgbGVuICkgKTsKKwkgIHJldHVybiBwLmNsb3NlKCk7CisgICAgICB9IGVsc2Ug
eworCSBpZiAoaTIgPiBpKSB7CisJICAgIGlmIChpMiA9PSAobGVuIC0gMSkpIHsKKwkJcC5hcHBl
bmRKU1N0cmluZyhzLnN1YnN0cmluZyhpLCBsZW4pKTsKKwkJcmV0dXJuIHAuY2xvc2UoKTsKKwkg
ICAgfSBlbHNlIHsKKwkgICAgICAgcC5hcHBlbmRKU1N0cmluZyhzLnN1YnN0cmluZyhpLCBpMikp
OworCSAgICAgICBpID0gaTI7CisJICAgIH0KKwkgfQorCisJIHN3aXRjaChzLmNoYXJDb2RlQXQo
aTIgKyAxKSkgeworCSAgICBjYXNlIDY1OgorCSAgICBjYXNlIDk3OgorCSAgICAgICAvLyBhCisJ
ICAgICAgIHNjX2Rpc3BsYXkoYXJndW1lbnRzW2pdLCBwKTsKKwkgICAgICAgaSArPSAyOyBqKys7
CisJICAgICAgIGJyZWFrOworCisJICAgIGNhc2UgODM6CisJICAgIGNhc2UgMTE1OgorCSAgICAg
ICAvLyBzCisJICAgICAgIHNjX3dyaXRlKGFyZ3VtZW50c1tqXSwgcCk7CisJICAgICAgIGkgKz0g
MjsgaisrOworCSAgICAgICBicmVhazsKKworCSAgICBjYXNlIDg2OgorCSAgICBjYXNlIDExODoK
KwkgICAgICAgLy8gdgorCSAgICAgICBzY19kaXNwbGF5KGFyZ3VtZW50c1tqXSwgcCk7CisJICAg
ICAgIHAuYXBwZW5kSlNTdHJpbmcoIlxuIik7CisJICAgICAgIGkgKz0gMjsgaisrOworCSAgICAg
ICBicmVhazsKKworCSAgICBjYXNlIDY3OgorCSAgICBjYXNlIDk5OgorCSAgICAgICAvLyBjCisJ
ICAgICAgIHAuYXBwZW5kSlNTdHJpbmcoU3RyaW5nLmZyb21DaGFyQ29kZShhcmd1bWVudHNbal0p
KTsKKwkgICAgICAgaSArPSAyOyBqKys7CisJICAgICAgIGJyZWFrOworCisJICAgIGNhc2UgODg6
CisJICAgIGNhc2UgMTIwOgorCSAgICAgICAvLyB4CisJICAgICAgIHAuYXBwZW5kSlNTdHJpbmco
YXJndW1lbnRzW2pdLnRvU3RyaW5nKDYpKTsKKwkgICAgICAgaSArPSAyOyBqKys7CisJICAgICAg
IGJyZWFrOworCisJICAgIGNhc2UgNzk6CisJICAgIGNhc2UgMTExOgorCSAgICAgICAvLyBvCisJ
ICAgICAgIHAuYXBwZW5kSlNTdHJpbmcoYXJndW1lbnRzW2pdLnRvU3RyaW5nKDgpKTsKKwkgICAg
ICAgaSArPSAyOyBqKys7CisJICAgICAgIGJyZWFrOworCisJICAgIGNhc2UgNjY6CisJICAgIGNh
c2UgOTg6CisJICAgICAgIC8vIGIKKwkgICAgICAgcC5hcHBlbmRKU1N0cmluZyhhcmd1bWVudHNb
al0udG9TdHJpbmcoMikpOworCSAgICAgICBpICs9IDI7IGorKzsKKwkgICAgICAgYnJlYWs7CisJ
ICAgICAgIAorCSAgICBjYXNlIDM3OgorCSAgICBjYXNlIDExMDoKKwkgICAgICAgLy8gJSwgbgor
CSAgICAgICBwLmFwcGVuZEpTU3RyaW5nKCJcbiIpOworCSAgICAgICBpICs9IDI7IGJyZWFrOwor
CisJICAgIGNhc2UgMTE0OgorCSAgICAgICAvLyByCisJICAgICAgIHAuYXBwZW5kSlNTdHJpbmco
IlxyIik7CisJICAgICAgIGkgKz0gMjsgYnJlYWs7CisKKwkgICAgY2FzZSAxMjY6CisJICAgICAg
IC8vIH4KKwkgICAgICAgcC5hcHBlbmRKU1N0cmluZygifiIpOworCSAgICAgICBpICs9IDI7IGJy
ZWFrOworCisJICAgIGRlZmF1bHQ6CisJICAgICAgIHNjX2Vycm9yKCAiZm9ybWF0OiBpbGxlZ2Fs
IH4iCisJCQkgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKHMuY2hhckNvZGVBdChpMiArIDEpKQorCQkJ
ICsgIiBzZXF1ZW5jZSIgKTsKKwkgICAgICAgcmV0dXJuICIiOworCSB9CisgICAgICB9CisgICB9
CisKKyAgIHJldHVybiBwLmNsb3NlKCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLSBnbG9i
YWwgcG9ydHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KKwordmFyIFNDX0RFRkFVTFRfSU4gPSBuZXcgc2NfRXJyb3JJbnB1dFBvcnQoKTsKK3Zh
ciBTQ19ERUZBVUxUX09VVCA9IG5ldyBzY19FcnJvck91dHB1dFBvcnQoKTsKK3ZhciBTQ19FUlJP
Ul9PVVQgPSBuZXcgc2NfRXJyb3JPdXRwdXRQb3J0KCk7CisKK3ZhciBzY19TWU1CT0xfUFJFRklY
ID0gIlx1MUU5QyI7Cit2YXIgc2NfS0VZV09SRF9QUkVGSVggPSAiXHUxRTlEIjsKKworLyoqKiBN
RVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGlkKSkpICovCitmdW5jdGlv
biBzY19qc3N0cmluZzJzdHJpbmcocykgeworICAgIHJldHVybiBzOworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocHJlZml4ICInXFx1MUU5QycgKyIp
KSkKKyovCitmdW5jdGlvbiBzY19qc3N0cmluZzJzeW1ib2wocykgeworICAgIHJldHVybiBzY19T
WU1CT0xfUFJFRklYICsgczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAg
ICAocGVlcGhvbGUgKGlkKSkpCisqLworZnVuY3Rpb24gc2Nfc3RyaW5nMmpzc3RyaW5nKHMpIHsK
KyAgICByZXR1cm4gczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAo
cGVlcGhvbGUgKHN5bWJvbDJqc3N0cmluZ19pbW11dGFibGUpKSkKKyovCitmdW5jdGlvbiBzY19z
eW1ib2wyanNzdHJpbmcocykgeworICAgIHJldHVybiBzLnNsaWNlKDEpOworfQorCisvKioqIE1F
VEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLnNsaWNlKDEp
IikpKQorKi8KK2Z1bmN0aW9uIHNjX2tleXdvcmQyanNzdHJpbmcoaykgeworICAgIHJldHVybiBr
LnNsaWNlKDEpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVw
aG9sZSAocHJlZml4ICInXFx1MUU5RCcgKyIpKSkKKyovCitmdW5jdGlvbiBzY19qc3N0cmluZzJr
ZXl3b3JkKHMpIHsKKyAgICByZXR1cm4gc2NfS0VZV09SRF9QUkVGSVggKyBzOworfQorCisvKioq
IE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9u
IHNjX2lzS2V5d29yZChzKSB7CisgICAgcmV0dXJuICh0eXBlb2YgcyA9PT0gInN0cmluZyIpICYm
CisJKHMuY2hhckF0KDApID09PSBzY19LRVlXT1JEX1BSRUZJWCk7Cit9CisKKworLyoqKiBNRVRB
ICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBzY19nZW5zeW0gPSBmdW5jdGlvbigpIHsKKyAgICB2YXIg
Y291bnRlciA9IDEwMDA7CisgICAgcmV0dXJuIGZ1bmN0aW9uKHN5bSkgeworCWNvdW50ZXIrKzsK
KwlpZiAoIXN5bSkgc3ltID0gc2NfU1lNQk9MX1BSRUZJWDsKKwlyZXR1cm4gc3ltICsgInMiICsg
Y291bnRlciArICJ+IiArICJec0MtR2VOc1ltICI7CisgICAgfTsKK30oKTsKKworCisvKioqIE1F
VEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNj
X2lzRXF1YWwobzEsIG8yKSB7CisgICAgcmV0dXJuICgobzEgPT09IG8yKSB8fAorCSAgICAoc2Nf
aXNQYWlyKG8xKSAmJiBzY19pc1BhaXIobzIpCisJICAgICAmJiBzY19pc1BhaXJFcXVhbChvMSwg
bzIsIHNjX2lzRXF1YWwpKSB8fAorCSAgICAoc2NfaXNWZWN0b3IobzEpICYmIHNjX2lzVmVjdG9y
KG8yKQorCSAgICAgJiYgc2NfaXNWZWN0b3JFcXVhbChvMSwgbzIsIHNjX2lzRXF1YWwpKSk7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCBudW1iZXItPnN5bWJvbCBpbnRlZ2VyLT5zeW1ib2wpKSAq
LworZnVuY3Rpb24gc2NfbnVtYmVyMnN5bWJvbCh4LCByYWRpeCkgeworICAgIHJldHVybiBzY19T
WU1CT0xfUFJFRklYICsgc2NfbnVtYmVyMmpzc3RyaW5nKHgsIHJhZGl4KTsKK30KKyAgICAKKy8q
KiogTUVUQSAoKGV4cG9ydCBudW1iZXItPnN0cmluZyBpbnRlZ2VyLT5zdHJpbmcpKSAqLwordmFy
IHNjX251bWJlcjJzdHJpbmcgPSBzY19udW1iZXIyanNzdHJpbmc7CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19zeW1ib2wybnVtYmVyKHMsIHJhZGl4KSB7CisgICAg
cmV0dXJuIHNjX2pzc3RyaW5nMm51bWJlcihzLnNsaWNlKDEpLCByYWRpeCk7Cit9CisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2Nfc3RyaW5nMm51bWJlciA9IHNjX2pzc3RyaW5n
Mm51bWJlcjsKKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUg
KHByZWZpeCAiKyIgcykpKQorICAgICAgICAgICA7OyBwZWVwaG9sZSB3aWxsIG9ubHkgYXBwbHkg
aWYgbm8gcmFkaXggaXMgZ2l2ZW4uCisqLworZnVuY3Rpb24gc2Nfc3RyaW5nMmludGVnZXIocywg
cmFkaXgpIHsKKyAgICBpZiAoIXJhZGl4KSByZXR1cm4gK3M7CisgICAgcmV0dXJuIHBhcnNlSW50
KHMsIHJhZGl4KTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVl
cGhvbGUgKHByZWZpeCAiKyIpKSkKKyovCitmdW5jdGlvbiBzY19zdHJpbmcycmVhbChzKSB7Cisg
ICAgcmV0dXJuICtzOworfQorCisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAg
KHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNTeW1ib2wocykgeworICAgIHJldHVybiAo
dHlwZW9mIHMgPT09ICJzdHJpbmciKSAmJgorCShzLmNoYXJBdCgwKSA9PT0gc2NfU1lNQk9MX1BS
RUZJWCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xl
IChzeW1ib2wyc3RyaW5nX2ltbXV0YWJsZSkpKQorKi8KK2Z1bmN0aW9uIHNjX3N5bWJvbDJzdHJp
bmcocykgeworICAgIHJldHVybiBzLnNsaWNlKDEpOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
I3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocHJlZml4ICInXFx1MUU5QycgKyIpKSkKKyovCitm
dW5jdGlvbiBzY19zdHJpbmcyc3ltYm9sKHMpIHsKKyAgICByZXR1cm4gc2NfU1lNQk9MX1BSRUZJ
WCArIHM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBzeW1ib2wtYXBwZW5kKQorICAgICAgICAg
ICAocGVlcGhvbGUgKHN5bWJvbEFwcGVuZF9pbW11dGFibGUpKSkKKyovCitmdW5jdGlvbiBzY19z
eW1ib2xBcHBlbmQoKSB7CisgICAgdmFyIHJlcyA9IHNjX1NZTUJPTF9QUkVGSVg7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisJcmVzICs9IGFyZ3VtZW50
c1tpXS5zbGljZSgxKTsKKyAgICByZXR1cm4gcmVzOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
I3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLnZhbCIpKSkKKyovCitmdW5jdGlv
biBzY19jaGFyMnN0cmluZyhjKSB7IHJldHVybiBjLnZhbDsgfQorCisvKioqIE1FVEEgKChleHBv
cnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAxICInXFx1MUU5QycgKyAiIGMgIi52
YWwiKSkpCisqLworZnVuY3Rpb24gc2NfY2hhcjJzeW1ib2woYykgeyByZXR1cm4gc2NfU1lNQk9M
X1BSRUZJWCArIGMudmFsOyB9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAg
KHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmcocykgeworICAgIHJldHVybiAo
dHlwZW9mIHMgPT09ICJzdHJpbmciKSAmJgorCShzLmNoYXJBdCgwKSAhPT0gc2NfU1lNQk9MX1BS
RUZJWCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfbWFrZVN0cmlu
ZyA9IHNjX21ha2Vqc1N0cmluZzsKKworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVu
Y3Rpb24gc2Nfc3RyaW5nKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxl
bmd0aDsgaSsrKQorCWFyZ3VtZW50c1tpXSA9IGFyZ3VtZW50c1tpXS52YWw7CisgICAgcmV0dXJu
ICIiLmNvbmNhdC5hcHBseSgiIiwgYXJndW1lbnRzKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0
ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5sZW5ndGgiKSkpCisqLworZnVu
Y3Rpb24gc2Nfc3RyaW5nTGVuZ3RoKHMpIHsgcmV0dXJuIHMubGVuZ3RoOyB9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19zdHJpbmdSZWYocywgaykgeworICAgIHJl
dHVybiBuZXcgc2NfQ2hhcihzLmNoYXJBdChrKSk7Cit9CisKKy8qIHRoZXJlJ3Mgbm8gc3RyaW5n
U2V0IGluIHRoZSBpbW11dGFibGUgdmVyc2lvbgorZnVuY3Rpb24gc2Nfc3RyaW5nU2V0KHMsIGss
IGMpCisqLworCisKKy8qKiogTUVUQSAoKGV4cG9ydCBzdHJpbmc9PykKKwkgICAodHlwZSBib29s
KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBzdHIxICIgPT09ICIgc3RyMikpKQorKi8K
K2Z1bmN0aW9uIHNjX2lzU3RyaW5nRXF1YWwoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxID09PSBz
MjsKK30KKy8qKiogTUVUQSAoKGV4cG9ydCBzdHJpbmc8PykKKwkgICAodHlwZSBib29sKQorICAg
ICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBzdHIxICIgPCAiIHN0cjIpKSkKKyovCitmdW5jdGlv
biBzY19pc1N0cmluZ0xlc3MoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxIDwgczI7Cit9CisvKioq
IE1FVEEgKChleHBvcnQgc3RyaW5nPj8pCisJICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBl
ZXBob2xlIChob2xlIDIgc3RyMSAiID4gIiBzdHIyKSkpCisqLworZnVuY3Rpb24gc2NfaXNTdHJp
bmdHcmVhdGVyKHMxLCBzMikgeworICAgIHJldHVybiBzMSA+IHMyOworfQorLyoqKiBNRVRBICgo
ZXhwb3J0IHN0cmluZzw9PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUg
KGhvbGUgMiBzdHIxICIgPD0gIiBzdHIyKSkpCisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmdMZXNz
RXF1YWwoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxIDw9IHMyOworfQorLyoqKiBNRVRBICgoZXhw
b3J0IHN0cmluZz49PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhv
bGUgMiBzdHIxICIgPj0gIiBzdHIyKSkpCisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmdHcmVhdGVy
RXF1YWwoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxID49IHMyOworfQorLyoqKiBNRVRBICgoZXhw
b3J0IHN0cmluZy1jaT0/KQorCSAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAo
aG9sZSAyIHN0cjEgIi50b0xvd2VyQ2FzZSgpID09PSAiIHN0cjIgIi50b0xvd2VyQ2FzZSgpIikp
KQorKi8KK2Z1bmN0aW9uIHNjX2lzU3RyaW5nQ0lFcXVhbChzMSwgczIpIHsKKyAgICByZXR1cm4g
czEudG9Mb3dlckNhc2UoKSA9PT0gczIudG9Mb3dlckNhc2UoKTsKK30KKy8qKiogTUVUQSAoKGV4
cG9ydCBzdHJpbmctY2k8PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUg
KGhvbGUgMiBzdHIxICIudG9Mb3dlckNhc2UoKSA8ICIgc3RyMiAiLnRvTG93ZXJDYXNlKCkiKSkp
CisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmdDSUxlc3MoczEsIHMyKSB7CisgICAgcmV0dXJuIHMx
LnRvTG93ZXJDYXNlKCkgPCBzMi50b0xvd2VyQ2FzZSgpOworfQorLyoqKiBNRVRBICgoZXhwb3J0
IHN0cmluZy1jaT4/KQorCSAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9s
ZSAyIHN0cjEgIi50b0xvd2VyQ2FzZSgpID4gIiBzdHIyICIudG9Mb3dlckNhc2UoKSIpKSkKKyov
CitmdW5jdGlvbiBzY19pc1N0cmluZ0NJR3JlYXRlcihzMSwgczIpIHsKKyAgICByZXR1cm4gczEu
dG9Mb3dlckNhc2UoKSA+IHMyLnRvTG93ZXJDYXNlKCk7Cit9CisvKioqIE1FVEEgKChleHBvcnQg
c3RyaW5nLWNpPD0/KQorCSAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9s
ZSAyIHN0cjEgIi50b0xvd2VyQ2FzZSgpIDw9ICIgc3RyMiAiLnRvTG93ZXJDYXNlKCkiKSkpCisq
LworZnVuY3Rpb24gc2NfaXNTdHJpbmdDSUxlc3NFcXVhbChzMSwgczIpIHsKKyAgICByZXR1cm4g
czEudG9Mb3dlckNhc2UoKSA8PSBzMi50b0xvd2VyQ2FzZSgpOworfQorLyoqKiBNRVRBICgoZXhw
b3J0IHN0cmluZy1jaT49PykKKwkgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUg
KGhvbGUgMiBzdHIxICIudG9Mb3dlckNhc2UoKSA+PSAiIHN0cjIgIi50b0xvd2VyQ2FzZSgpIikp
KQorKi8KK2Z1bmN0aW9uIHNjX2lzU3RyaW5nQ0lHcmVhdGVyRXF1YWwoczEsIHMyKSB7CisgICAg
cmV0dXJuIHMxLnRvTG93ZXJDYXNlKCkgPj0gczIudG9Mb3dlckNhc2UoKTsKK30KKworLyoqKiBN
RVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMyBzICIuc3Vic3Ry
aW5nKCIgc3RhcnQgIiwgIiBlbmQgIikiKSkpCisqLworZnVuY3Rpb24gc2Nfc3Vic3RyaW5nKHMs
IHN0YXJ0LCBlbmQpIHsKKyAgICByZXR1cm4gcy5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7Cit9CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkpCisqLworZnVuY3Rpb24gc2NfaXNTdWJzdHJpbmdfYXQo
czEsIHMyLCBpKSB7CisgICAgcmV0dXJuIHMyID09IHMxLnN1YnN0cmluZyhpLCBpKyBzMi5sZW5n
dGgpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAo
aW5maXggMCAjZiAiKyIgIicnIikpKQorKi8KK2Z1bmN0aW9uIHNjX3N0cmluZ0FwcGVuZCgpIHsK
KyAgICByZXR1cm4gIiIuY29uY2F0LmFwcGx5KCIiLCBhcmd1bWVudHMpOworfQorCisvKioqIE1F
VEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX3N0cmluZzJsaXN0ID0gc2NfanNzdHJpbmcybGlz
dDsKKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBzY19saXN0MnN0cmluZyA9IHNj
X2xpc3QyanNzdHJpbmc7CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBl
ZXBob2xlIChpZCkpKQorKi8KK2Z1bmN0aW9uIHNjX3N0cmluZ0NvcHkocykgeworICAgIHJldHVy
biBzOworfQorCisvKiB0aGVyZSdzIG5vIHN0cmluZy1maWxsIGluIHRoZSBpbW11dGFibGUgdmVy
c2lvbgorZnVuY3Rpb24gc2Nfc3RyaW5nRmlsbChzLCBjKQorKi8KKworLyoqKiBNRVRBICgoZXhw
b3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5zbGljZSgxKSIpKSkKKyov
CitmdW5jdGlvbiBzY19rZXl3b3JkMnN0cmluZyhvKSB7CisgICAgcmV0dXJuIG8uc2xpY2UoMSk7
Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwcmVm
aXggIidcXHUxRTlEJyArIikpKQorKi8KK2Z1bmN0aW9uIHNjX3N0cmluZzJrZXl3b3JkKG8pIHsK
KyAgICByZXR1cm4gc2NfS0VZV09SRF9QUkVGSVggKyBvOworfQorCitTdHJpbmcucHJvdG90eXBl
LnNjX3RvRGlzcGxheVN0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0aGlzLmNoYXJBdCgw
KSA9PT0gc2NfU1lNQk9MX1BSRUZJWCkKKwkvLyBUT0RPOiBjYXJlIGZvciBzeW1ib2xzIHdpdGgg
c3BhY2VzIChlc2NhcGUtY2hhcnMgc3ltYm9scykuCisJcmV0dXJuIHRoaXMuc2xpY2UoMSk7Cisg
ICAgZWxzZSBpZiAodGhpcy5jaGFyQXQoMCkgPT09IHNjX0tFWVdPUkRfUFJFRklYKQorCXJldHVy
biAiOiIgKyB0aGlzLnNsaWNlKDEpOworICAgIGVsc2UKKwlyZXR1cm4gdGhpcy50b1N0cmluZygp
OworfTsKKworU3RyaW5nLnByb3RvdHlwZS5zY190b1dyaXRlU3RyaW5nID0gZnVuY3Rpb24oKSB7
CisgICAgaWYgKHRoaXMuY2hhckF0KDApID09PSBzY19TWU1CT0xfUFJFRklYKQorCS8vIFRPRE86
IGNhcmUgZm9yIHN5bWJvbHMgd2l0aCBzcGFjZXMgKGVzY2FwZS1jaGFycyBzeW1ib2xzKS4KKwly
ZXR1cm4gdGhpcy5zbGljZSgxKTsKKyAgICBlbHNlIGlmICh0aGlzLmNoYXJBdCgwKSA9PT0gc2Nf
S0VZV09SRF9QUkVGSVgpCisJcmV0dXJuICI6IiArIHRoaXMuc2xpY2UoMSk7CisgICAgZWxzZQor
CXJldHVybiAnIicgKyBzY19lc2NhcGVXcml0ZVN0cmluZyh0aGlzKSArICciJzsKK307CisvKiBF
eHBvcnRlZCBWYXJpYWJsZXMgKi8KK3ZhciBCZ0xfdGVzdHpkMmJveWVyemQyOwordmFyIEJnTF9u
Ym95ZXJ6ZDJiZW5jaG1hcmt6ZDI7Cit2YXIgQmdMX3NldHVwemQyYm95ZXJ6ZDI7CisvKiBFbmQg
RXhwb3J0cyAqLworCit2YXIgdHJhbnNsYXRlX3Rlcm1fbmJveWVyOwordmFyIHRyYW5zbGF0ZV9h
cmdzX25ib3llcjsKK3ZhciB1bnRyYW5zbGF0ZV90ZXJtX25ib3llcjsKK3ZhciBCZ0xfc2Nfc3lt
Ym9semQyemUzc3ltYm9semQycmVjb3JkXzF6ZTNfbmJveWVyOwordmFyIEJnTF9zY196YTJzeW1i
b2x6ZDJyZWNvcmRzemQyYWxpc3R6YTJfMnowMF9uYm95ZXI7Cit2YXIgdHJhbnNsYXRlX2FsaXN0
X25ib3llcjsKK3ZhciBhcHBseV9zdWJzdF9uYm95ZXI7Cit2YXIgYXBwbHlfc3Vic3RfbHN0X25i
b3llcjsKK3ZhciB0YXV0b2xvZ3lwX25ib3llcjsKK3ZhciBpZl9jb25zdHJ1Y3Rvcl9uYm95ZXI7
Cit2YXIgcmV3cml0ZV9jb3VudF9uYm95ZXI7Cit2YXIgcmV3cml0ZV9uYm95ZXI7Cit2YXIgcmV3
cml0ZV9hcmdzX25ib3llcjsKK3ZhciB1bmlmeV9zdWJzdF9uYm95ZXI7Cit2YXIgb25lX3dheV91
bmlmeTFfbmJveWVyOwordmFyIGZhbHNlX3Rlcm1fbmJveWVyOwordmFyIHRydWVfdGVybV9uYm95
ZXI7Cit2YXIgdHJhbnNfb2ZfaW1wbGllczFfbmJveWVyOwordmFyIGlzX3Rlcm1fZXF1YWxfbmJv
eWVyOwordmFyIGlzX3Rlcm1fbWVtYmVyX25ib3llcjsKK3ZhciBjb25zdF9uYm95ZXI7Cit2YXIg
c2NfY29uc3RfM19uYm95ZXI7Cit2YXIgc2NfY29uc3RfNF9uYm95ZXI7Cit7CisgICAgKHNjX2Nv
bnN0XzRfbmJveWVyID0gKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNhbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2ltcGxpZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5Iixu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaW1wbGllcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3oiLChuZXcgc2NfUGFpcigiXHUxRTlDdSIsbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3UiLChuZXcgc2NfUGFpcigiXHUxRTlDdyIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwp
KSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVz
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDdyIsbnVsbCkpKSkp
KSxudWxsKSkpKSkpKTsKKyAgICAoc2NfY29uc3RfM19uYm95ZXIgPSBzY19saXN0KChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NvbXBp
bGUiLChuZXcgc2NfUGFpcigiXHUxRTlDZm9ybSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
Y29kZWdlbiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDb3B0aW1pemUiLChuZXcg
c2NfUGFpcigiXHUxRTlDZm9ybSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDbmlsIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXAi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ki
LG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVh
bCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ3JlYXRlcnAiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzZXFwIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUx
RTlDeCIsbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNncmVhdGVyZXFwIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUx
RTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNib29sZWFuIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q29yIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0IixudWxsKSksbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmIixudWxsKSks
bnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmZiIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNp
bXBsaWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpbXBsaWVzIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSxudWxsKSkp
KSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2V2ZW4xIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0IixudWxsKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDb2RkIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzdWIx
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpLG51bGwpKSkpKSkpKSxu
dWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNjb3VudHBzLSIsKG5ldyBzY19QYWlyKCJcdTFFOUNsIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3ByZWQiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDY291bnRwcy1sb29wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2wiLChuZXcgc2NfUGFpcigiXHUx
RTlDcHJlZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51
bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmYWN0LSIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIixu
dWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmYWN0LWxvb3AiLChuZXcg
c2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCgxKSxudWxsKSkpKSkpLG51bGwpKSkpKSks
IChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3JldmVyc2UtIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UtbG9vcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNuaWwiLG51bGwpKSxudWxsKSkpKSkp
LG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2RpdmlkZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3plcm9wIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZW1haW5kZXIiLChuZXcg
c2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLG51bGwp
KSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2Fzc3VtZS10cnVlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhciIs
KG5ldyBzY19QYWlyKCJcdTFFOUNhbGlzdCIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25z
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDdCIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNhbGlzdCIsbnVsbCkp
KSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNhc3N1bWUtZmFsc2UiLChuZXcgc2NfUGFpcigiXHUxRTlDdmFy
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2FsaXN0IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2NvbnMiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Nv
bnMiLChuZXcgc2NfUGFpcigiXHUxRTlDdmFyIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNmIixudWxsKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2FsaXN0IixudWxs
KSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3RhdXRvbG9neS1jaGVja2VyIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RhdXRvbG9n
eXAiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vcm1hbGl6ZSIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNu
aWwiLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZhbHNpZnkiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmFs
c2lmeTEiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vcm1hbGl6ZSIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNuaWwiLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3ByaW1lIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Fu
ZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxu
dWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FkZDEiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3ByaW1lMSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzdWIxIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcg
c2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Fu
ZCIsKG5ldyBzY19QYWlyKCJcdTFFOUNwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3EiLG51bGwpKSkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUx
RTlDcCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigi
XHUxRTlDcSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSxudWxsKSkpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpLG51bGwpKSkpKSkpKSxudWxsKSkp
KSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNvciIsKG5ldyBzY19QYWlyKCJcdTFFOUNwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3Ei
LG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2Nf
UGFpcigiXHUxRTlDcCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3EiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3QiLG51bGwpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmIixudWxsKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSkp
KSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigiXHUxRTlDcCIsbnVsbCkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDcCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3QiLG51bGwpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
aW1wbGllcyIsKG5ldyBzY19QYWlyKCJcdTFFOUNwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3EiLG51
bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFp
cigiXHUxRTlDcCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2Nf
UGFpcigiXHUxRTlDcSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSxudWxsKSkpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLG51bGwpKSkpKSkpKSxu
dWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q251bWJlcnAiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxs
KSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q2IiLChuZXcgc2NfUGFpcigiXHUxRTlDYyIsbnVsbCkpKSkpKSkpLChuZXcgc2NfUGFpcigiXHUx
RTlDZCIsKG5ldyBzY19QYWlyKCJcdTFFOUNlIixudWxsKSkpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNkIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2UiLG51bGwpKSkpKSkpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2QiLChuZXcgc2NfUGFpcigiXHUxRTlDZSIsbnVsbCkpKSkpKSkpLG51
bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iixu
dWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNvciIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNudW1iZXJwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkp
LG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkp
LCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxs
KSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNh
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2MiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2ZpeCIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkp
KSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxs
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkp
KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZm
ZXJlbmNlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVs
bCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNvciIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlD
eCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigi
XHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcg
c2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21l
YW5pbmciLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMtdHJlZSIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gi
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1
cyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVhbmluZyIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cy10cmVlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51
bGwpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNtZWFuaW5nIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNwbHVzLXRyZWUiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksKG5ldyBzY19QYWly
KCJcdTFFOUNhIixudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVhbmluZyIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cy10cmVlIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzLWZyaW5nZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iixu
dWxsKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNtZWFuaW5nIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUx
RTlDYSIsbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN6Iixu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQi
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkp
LG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigi
XHUxRTlDYiIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNhcHBlbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChu
ZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSxudWxsKSkpKSkp
LG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGlt
ZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51
bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1l
cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkp
KSksKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFs
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDb3IiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3pl
cm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwp
KSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDZXhlYyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIs
bnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q3BkcyIsKG5ldyBzY19QYWlyKCJcdTFFOUNl
bnZybiIsbnVsbCkpKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2V4ZWMi
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
ZXhlYyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3BkcyIsKG5l
dyBzY19QYWlyKCJcdTFFOUNlbnZybiIsbnVsbCkpKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlD
ZW52cm4iLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFs
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtYy1mbGF0dGVuIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2ZsYXR0ZW4iLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19Q
YWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChu
ZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLG51
bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDb3IiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDbWVtYmVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlD
YiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZXZlcnNlIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDbWVtYmVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2Nf
UGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZW5ndGgiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
bnVsbCkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVuZ3Ro
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFp
cigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIs
KG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNp
bnRlcnNlY3QiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixu
dWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5k
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigi
XHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2MiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudGgi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSwobmV3IHNjX1Bh
aXIoIlx1MUU5Q2kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
emVybyIsbnVsbCkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2V4cCIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q2oiLChuZXcgc2NfUGFpcigiXHUxRTlDayIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNleHAiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNq
IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2V4cCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNpIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2siLG51bGwpKSkpKSksbnVsbCkp
KSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNleHAiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIsKG5l
dyBzY19QYWlyKCJcdTFFOUNrIixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDZXhwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNl
eHAiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNqIixudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigiXHUxRTlDayIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZXZl
cnNlLWxvb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5Iixu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IixudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwg
KG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDcmV2ZXJzZS1sb29wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q25pbCIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxu
dWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNjb3VudC1saXN0IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3NvcnQtbHAiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDY291bnQtbGlzdCIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY291bnQtbGlz
dCIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkp
KSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigi
XHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBl
bmQiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkp
KSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChu
ZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkpKSkpLG51
bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JlbWFp
bmRlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFp
cigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcXVvdGllbnQiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51
bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmaXgi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcG93ZXItZXZh
bCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYmlnLXBsdXMxIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q2wiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNi
YXNlIixudWxsKSkpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3Bvd2VyLWV2YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDbCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsbnVsbCkp
KSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNwb3dlci1ldmFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNiaWctcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixu
dWxsKSkpKSkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNwb3dlci1ldmFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2Nf
UGFpcigiXHUxRTlDYmFzZSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNwb3dlci1ldmFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUx
RTlDYmFzZSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
cmVtYWluZGVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigoMSksbnVsbCkp
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkp
KSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JlbWFpbmRl
ciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkp
KSksKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3Ai
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
cmVtYWluZGVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
bnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSks
bnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3F1
b3RpZW50IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIsbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNu
b3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2kiLG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q29yIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNqIixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNu
b3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2oiLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkp
LG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3JlbWFpbmRlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3pl
cm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDbGVzc3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5Iixu
dWxsKSkpKSkpLG51bGwpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwb3dlci1ldmFs
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwb3dlci1yZXAiLChuZXcgc2NfUGFp
cigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigiXHUxRTlDYmFzZSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
cG93ZXItZXZhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYmlnLXBsdXMiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Bvd2VyLXJlcCIsKG5ldyBzY19QYWlyKCJc
dTFFOUNpIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDcG93ZXItcmVwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oiLChu
ZXcgc2NfUGFpcigiXHUxRTlDYmFzZSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUN6ZXJvIixudWxsKSksKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkp
KSkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFF
OUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ2NkIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNnY2QiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUx
RTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q250aCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChu
ZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51
bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudGgiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5l
dyBzY19QYWlyKCJcdTFFOUNpIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q250aCIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0aCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxs
KSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZm
ZXJlbmNlIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
Zml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZl
cmVuY2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFp
cigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNm
aXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVy
ZW5jZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNl
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2MiLChuZXcgc2NfUGFpcigiXHUxRTlDdyIsbnVsbCkpKSkp
KSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2Ui
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2MiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN3IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZW1haW5k
ZXIiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVy
byIsbnVsbCkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q2MiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2Ei
LG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNiIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2MiLG51bGwpKSkpKSksbnVsbCkp
KSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYWRk
MSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJc
dTFFOUN5IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBz
Y19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q2FkZDEiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
bGVzc3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWly
KCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6Iixu
dWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5k
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpLG51
bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkp
LG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJv
cCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLCAo
bmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNnY2QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNnY2QiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBz
Y19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdmFs
dWUiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vcm1hbGl6ZSIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdmFsdWUiLChuZXcgc2NfUGFpcigiXHUx
RTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcg
c2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmbGF0dGVuIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Nv
bnMiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDbmlsIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbmxpc3Rw
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUx
RTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUx
RTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xpc3RwIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNnb3BoZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
bnVsbCkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGlzdHAi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc2FtZWZyaW5n
ZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2ZsYXR0ZW4iLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmxhdHRlbiIsKG5ldyBzY19QYWly
KCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigi
XHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNncmVhdGVzdC1mYWN0b3IiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDb3IiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3kiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51
bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFF
OUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2dyZWF0ZXN0LWZhY3RvciIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCgx
KSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxudWxsKSkpKSkp
LCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNudW1iZXJwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNncmVhdGVzdC1m
YWN0b3IiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxs
KSkpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNvciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCgxKSxudWxs
KSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90Iiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudW1iZXJwIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwg
KG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDdGltZXMtbGlzdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxu
dWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMtbGlzdCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcy1saXN0Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
cHJpbWUtbGlzdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxs
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhbmQiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3ByaW1lLWxpc3QiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVs
bCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcHJpbWUtbGlzdCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFs
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ciLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVs
bCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5ldyBzY19QYWlyKCJc
dTFFOUN6IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNvciIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlD
eiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigi
XHUxRTlDdyIsKG5ldyBzY19QYWlyKCgxKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkp
KSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNncmVhdGVyZXFwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcg
c2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkp
KSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNvciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDemVybyIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudW1iZXJwIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkp
KSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmVtYWluZGVyIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN5Iixu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxu
dWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGlt
ZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoc2NfbGlzdCgiXHUx
RTlDYW5kIiwgKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwi
LChuZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
emVybyIsbnVsbCkpLG51bGwpKSkpKSksbnVsbCkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDbnVt
YmVycCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFF
OUNudW1iZXJwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzdWIxIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzdWIxIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q2IiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwp
KSxudWxsKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDbGVuZ3RoIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkZWxl
dGUiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUNsIixudWxsKSkp
KSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0aCIsKG5l
dyBzY19QYWlyKCJcdTFFOUNsIixudWxsKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q2wiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc29ydDIiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2RlbGV0ZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2wiLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDZGVsZXRlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3NvcnQyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2wiLG51bGwp
KSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZHNvcnQiLChuZXcgc2NfUGFpcigiXHUxRTlD
eCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc29ydDIiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFF
OUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVuZ3RoIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gxIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3gyIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3gzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3g0IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3g1IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNj
b25zIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3g2IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3g3IixudWxs
KSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkp
KSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3
IHNjX1BhaXIoKDYpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0aCIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4NyIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3
IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNk
aWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhZGQxIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhZGQxIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51
bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigoMiksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSks
bnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDcXVvdGllbnQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ki
LG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKDIpLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNxdW90aWVudCIsKG5ldyBzY19QYWlyKCJc
dTFFOUN5IiwobmV3IHNjX1BhaXIoKDIpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkp
LCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNzaWdtYSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkp
LChuZXcgc2NfUGFpcigiXHUxRTlDaSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNxdW90aWVudCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGlt
ZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDYWRkMSIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxsKSkpKSxudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigoMiksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FkZDEiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNhZGQxIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxs
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhZGQxIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVz
c3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5l
dyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZpeCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNm
aXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkp
KSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lYW5pbmciLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3BsdXMtdHJlZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDZGVsZXRlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIs
bnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVy
ZW5jZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVhbmluZyIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cy10cmVlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ki
LG51bGwpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNtZWFuaW5nIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcg
c2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q21lYW5pbmciLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3BsdXMtdHJlZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2EiLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFp
cigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Fk
ZDEiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDbnVtYmVycCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2ZpeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxu
dWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnRoIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNuaWwiLG51bGwpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25pbCIsbnVsbCkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBz
Y19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGFz
dCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDbGlzdHAiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGFzdCIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxs
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDbGlzdHAiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29ucyIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDY2FyIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsYXN0
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigi
XHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSkpKSxu
dWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUx
RTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlD
eSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLChuZXcgc2NfUGFpcigiXHUx
RTlDeiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpLChuZXcgc2NfUGFpcigi
XHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXNzaWdubWVu
dCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNhcHBlbmQiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixu
dWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Fzc2lnbmVkcCIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDYXNzaWdubWVudCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDYXNzaWdubWVudCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2IiLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFp
cigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NhciIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ29waGVyIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lm
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsaXN0cCIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjYXIiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZsYXR0ZW4iLChuZXcgc2NfUGFpcigiXHUx
RTlDeCIsbnVsbCkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
emVybyIsbnVsbCkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmbGF0dGVuIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjZHIiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2dvcGhlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSxu
dWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDbGlzdHAiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY2RyIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNmbGF0dGVuIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkp
LG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NvbnMiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNuaWwiLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkp
KSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNxdW90aWVudCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMi
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDemVybyIsbnVsbCkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZpeCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwg
KG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDZ2V0IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3NldCIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3Zh
bCIsKG5ldyBzY19QYWlyKCJcdTFFOUNtZW0iLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNlcXAiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIsKG5ldyBzY19QYWlyKCJcdTFFOUNp
IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDdmFsIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNnZXQiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIsKG5ldyBzY19QYWlyKCJc
dTFFOUNtZW0iLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSkpKTsKKyAgICAoY29u
c3RfbmJveWVyID0gKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Ei
LChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2MiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkp
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2YiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Qi
LG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3oiLChuZXcgc2NfUGFpcigiXHUxRTlDZiIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDcmV2ZXJzZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBw
ZW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2NfUGFp
cigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q25pbCIsbnVsbCkpLG51bGwpKSkpKSksbnVsbCkpKSksbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN1IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdyIsKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNz
cCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmVtYWluZGVyIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVuZ3RoIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q2IiLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSkpKSkpKTsKKyAg
ICBCZ0xfbmJveWVyemQyYmVuY2htYXJremQyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBh
cmdzID0gbnVsbDsKKyAgICAgICAgZm9yICh2YXIgc2NfdG1wID0gYXJndW1lbnRzLmxlbmd0aCAt
IDE7IHNjX3RtcCA+PSAwOyBzY190bXAtLSkgeworICAgICAgICAgICAgYXJncyA9IHNjX2NvbnMo
YXJndW1lbnRzW3NjX3RtcF0sIGFyZ3MpOworICAgICAgICB9CisgICAgICAgIHZhciBuOworICAg
ICAgICByZXR1cm4gKChuID0gKChhcmdzID09PSBudWxsKT8oMCk6KGFyZ3MuY2FyKSkpLCAoQmdM
X3NldHVwemQyYm95ZXJ6ZDIoKSksIChCZ0xfcnVuemQyYmVuY2htYXJremQyKCgibmJveWVyIiso
c2NfbnVtYmVyMnN0cmluZyhuKSkpLCAoMSksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0
dXJuIChCZ0xfdGVzdHpkMmJveWVyemQyKG4pKTsKKyAgICAgICAgfSwgZnVuY3Rpb24ocmV3cml0
ZXMpIHsKKyAgICAgICAgICAgIGlmICgoc2NfaXNOdW1iZXIocmV3cml0ZXMpKSkKKyAgICAgICAg
ICAgICAgICBzd2l0Y2ggKG4pIHsKKyAgICAgICAgICAgICAgICBjYXNlICgwKToKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIChyZXdyaXRlcz09PSg5NTAyNCkpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICgxKToKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIChyZXdyaXRlcz09PSg1OTE3NzcpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSAoMik6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAocmV3cml0ZXM9PT0oMTgxMzk3NSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlICgzKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXdy
aXRlcz09PSg1Mzc1Njc4KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgKDQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJld3JpdGVzPT09
KDE2NDQ1NDA2KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgKDUpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJld3JpdGVzPT09KDUxNTA3
NzM5KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9KSkpOworICAgIH07CisgICAgQmdMX3NldHVw
emQyYm95ZXJ6ZDIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsK
KyAgICBCZ0xfdGVzdHpkMmJveWVyemQyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH07CisgICAgdHJhbnNsYXRlX3Rlcm1fbmJveWVyID0gZnVuY3Rpb24odGVybSkg
eworICAgICAgICB2YXIgbHN0OworICAgICAgICByZXR1cm4gKCEodGVybSBpbnN0YW5jZW9mIHNj
X1BhaXIpP3Rlcm06KG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVj
b3JkXzF6ZTNfbmJveWVyKCh0ZXJtLmNhcikpKSwgKChsc3QgPSAodGVybS5jZHIpKSwgKChsc3Qg
PT09IG51bGwpP251bGw6KG5ldyBzY19QYWlyKCh0cmFuc2xhdGVfdGVybV9uYm95ZXIoKGxzdC5j
YXIpKSksICh0cmFuc2xhdGVfYXJnc19uYm95ZXIoKGxzdC5jZHIpKSkpKSkpKSkpOworICAgIH07
CisgICAgdHJhbnNsYXRlX2FyZ3NfbmJveWVyID0gZnVuY3Rpb24obHN0KSB7CisgICAgICAgIHZh
ciBzY19sc3RfNTsKKyAgICAgICAgdmFyIHRlcm07CisgICAgICAgIHJldHVybiAoKGxzdCA9PT0g
bnVsbCk/bnVsbDoobmV3IHNjX1BhaXIoKCh0ZXJtID0gKGxzdC5jYXIpKSwgKCEodGVybSBpbnN0
YW5jZW9mIHNjX1BhaXIpP3Rlcm06KG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3lt
Ym9semQycmVjb3JkXzF6ZTNfbmJveWVyKCh0ZXJtLmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdzX25i
b3llcigodGVybS5jZHIpKSkpKSkpLCAoKHNjX2xzdF81ID0gKGxzdC5jZHIpKSwgKChzY19sc3Rf
NSA9PT0gbnVsbCk/bnVsbDoobmV3IHNjX1BhaXIoKHRyYW5zbGF0ZV90ZXJtX25ib3llcigoc2Nf
bHN0XzUuY2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKChzY19sc3RfNS5jZHIpKSkpKSkp
KSkpOworICAgIH07CisgICAgdW50cmFuc2xhdGVfdGVybV9uYm95ZXIgPSBmdW5jdGlvbih0ZXJt
KSB7CisgICAgICAgIHZhciBvcHRyT3BuZDsKKyAgICAgICAgdmFyIHRhaWwxMTMxOworICAgICAg
ICB2YXIgTDExMjc7CisgICAgICAgIHZhciBmYWxzZUhlYWQxMTMwOworICAgICAgICB2YXIgc3lt
Ym9sX3JlY29yZDsKKyAgICAgICAgaWYgKCEodGVybSBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAg
ICAgICAgICAgcmV0dXJuIHRlcm07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAoZmFsc2VIZWFkMTEzMCA9IChuZXcgc2NfUGFpcihudWxsLCBudWxsKSkpOwor
ICAgICAgICAgICAgICAgIChMMTEyNyA9ICh0ZXJtLmNkcikpOworICAgICAgICAgICAgICAgICh0
YWlsMTEzMSA9IGZhbHNlSGVhZDExMzApOworICAgICAgICAgICAgICAgIHdoaWxlICghKEwxMTI3
ID09PSBudWxsKSkgeworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAodGFpbDExMzEuY2RyID0gKG5ldyBzY19QYWlyKCh1bnRyYW5zbGF0ZV90ZXJtX25ib3ll
cigoTDExMjcuY2FyKSkpLCBudWxsKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgKHRhaWwx
MTMxID0gKHRhaWwxMTMxLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgKEwxMTI3ID0g
KEwxMTI3LmNkcikpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIChvcHRyT3BuZCA9IChmYWxzZUhlYWQxMTMwLmNkcikpOworICAgICAg
ICAgICAgICAgIHJldHVybiAobmV3IHNjX1BhaXIoKChzeW1ib2xfcmVjb3JkID0gKHRlcm0uY2Fy
KSksIChzeW1ib2xfcmVjb3JkWygwKV0pKSwgb3B0ck9wbmQpKTsKKyAgICAgICAgICAgIH0KKyAg
ICB9OworICAgIEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIg
PSBmdW5jdGlvbihzeW0pIHsKKyAgICAgICAgdmFyIHI7CisgICAgICAgIHZhciB4OworICAgICAg
ICByZXR1cm4gKCh4ID0gKHNjX2Fzc3Eoc3ltLCBCZ0xfc2NfemEyc3ltYm9semQycmVjb3Jkc3pk
MmFsaXN0emEyXzJ6MDBfbmJveWVyKSkpLCAoKHghPT0gZmFsc2UpPyh4LmNkcik6KChyID0gW3N5
bSwgbnVsbF0pLCAoQmdMX3NjX3phMnN5bWJvbHpkMnJlY29yZHN6ZDJhbGlzdHphMl8yejAwX25i
b3llciA9IChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoc3ltLCByKSksIEJnTF9zY196YTJzeW1i
b2x6ZDJyZWNvcmRzemQyYWxpc3R6YTJfMnowMF9uYm95ZXIpKSksIHIpKSk7CisgICAgfTsKKyAg
ICAoQmdMX3NjX3phMnN5bWJvbHpkMnJlY29yZHN6ZDJhbGlzdHphMl8yejAwX25ib3llciA9IG51
bGwpOworICAgIHRyYW5zbGF0ZV9hbGlzdF9uYm95ZXIgPSBmdW5jdGlvbihhbGlzdCkgeworICAg
ICAgICB2YXIgc2NfYWxpc3RfNjsKKyAgICAgICAgdmFyIHRlcm07CisgICAgICAgIHJldHVybiAo
KGFsaXN0ID09PSBudWxsKT9udWxsOihuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoKGFsaXN0LmNh
ci5jYXIpLCAoKHRlcm0gPSAoYWxpc3QuY2FyLmNkcikpLCAoISh0ZXJtIGluc3RhbmNlb2Ygc2Nf
UGFpcik/dGVybToobmV3IHNjX1BhaXIoKEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNv
cmRfMXplM19uYm95ZXIoKHRlcm0uY2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKCh0ZXJt
LmNkcikpKSkpKSkpKSwgKChzY19hbGlzdF82ID0gKGFsaXN0LmNkcikpLCAoKHNjX2FsaXN0XzYg
PT09IG51bGwpP251bGw6KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigoc2NfYWxpc3RfNi5jYXIu
Y2FyKSwgKHRyYW5zbGF0ZV90ZXJtX25ib3llcigoc2NfYWxpc3RfNi5jYXIuY2RyKSkpKSksICh0
cmFuc2xhdGVfYWxpc3RfbmJveWVyKChzY19hbGlzdF82LmNkcikpKSkpKSkpKSk7CisgICAgfTsK
KyAgICBhcHBseV9zdWJzdF9uYm95ZXIgPSBmdW5jdGlvbihhbGlzdCwgdGVybSkgeworICAgICAg
ICB2YXIgbHN0OworICAgICAgICB2YXIgdGVtcF90ZW1wOworICAgICAgICByZXR1cm4gKCEodGVy
bSBpbnN0YW5jZW9mIHNjX1BhaXIpPygodGVtcF90ZW1wID0gKHNjX2Fzc3EodGVybSwgYWxpc3Qp
KSksICgodGVtcF90ZW1wIT09IGZhbHNlKT8odGVtcF90ZW1wLmNkcik6dGVybSkpOihuZXcgc2Nf
UGFpcigodGVybS5jYXIpLCAoKGxzdCA9ICh0ZXJtLmNkcikpLCAoKGxzdCA9PT0gbnVsbCk/bnVs
bDoobmV3IHNjX1BhaXIoKGFwcGx5X3N1YnN0X25ib3llcihhbGlzdCwgKGxzdC5jYXIpKSksIChh
cHBseV9zdWJzdF9sc3RfbmJveWVyKGFsaXN0LCAobHN0LmNkcikpKSkpKSkpKSk7CisgICAgfTsK
KyAgICBhcHBseV9zdWJzdF9sc3RfbmJveWVyID0gZnVuY3Rpb24oYWxpc3QsIGxzdCkgeworICAg
ICAgICB2YXIgc2NfbHN0Xzc7CisgICAgICAgIHJldHVybiAoKGxzdCA9PT0gbnVsbCk/bnVsbDoo
bmV3IHNjX1BhaXIoKGFwcGx5X3N1YnN0X25ib3llcihhbGlzdCwgKGxzdC5jYXIpKSksICgoc2Nf
bHN0XzcgPSAobHN0LmNkcikpLCAoKHNjX2xzdF83ID09PSBudWxsKT9udWxsOihuZXcgc2NfUGFp
cigoYXBwbHlfc3Vic3RfbmJveWVyKGFsaXN0LCAoc2NfbHN0XzcuY2FyKSkpLCAoYXBwbHlfc3Vi
c3RfbHN0X25ib3llcihhbGlzdCwgKHNjX2xzdF83LmNkcikpKSkpKSkpKSk7CisgICAgfTsKKyAg
ICB0YXV0b2xvZ3lwX25ib3llciA9IGZ1bmN0aW9uKHNjX3hfMTEsIHRydWVfbHN0LCBmYWxzZV9s
c3QpIHsKKyAgICAgICAgdmFyIHRtcDExMjU7CisgICAgICAgIHZhciB4OworICAgICAgICB2YXIg
dG1wMTEyNjsKKyAgICAgICAgdmFyIHNjX3hfODsKKyAgICAgICAgdmFyIHNjX3RtcDExMjVfOTsK
KyAgICAgICAgdmFyIHNjX3RtcDExMjZfMTA7CisgICAgICAgIHZhciBzY194XzExOworICAgICAg
ICB2YXIgdHJ1ZV9sc3Q7CisgICAgICAgIHZhciBmYWxzZV9sc3Q7CisgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICBpZiAoKCgoc2NfdG1wMTEyNl8xMCA9IChpc190ZXJtX2VxdWFs
X25ib3llcihzY194XzExLCB0cnVlX3Rlcm1fbmJveWVyKSkpLCAoKHNjX3RtcDExMjZfMTAhPT0g
ZmFsc2UpP3NjX3RtcDExMjZfMTA6KGlzX3Rlcm1fbWVtYmVyX25ib3llcihzY194XzExLCB0cnVl
X2xzdCkpKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlmICgoKChzY190bXAxMTI1XzkgPSAoaXNfdGVy
bV9lcXVhbF9uYm95ZXIoc2NfeF8xMSwgZmFsc2VfdGVybV9uYm95ZXIpKSksICgoc2NfdG1wMTEy
NV85IT09IGZhbHNlKT9zY190bXAxMTI1Xzk6KGlzX3Rlcm1fbWVtYmVyX25ib3llcihzY194XzEx
LCBmYWxzZV9sc3QpKSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoc2Nf
eF8xMSBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoKChzY194XzExLmNhcik9PT1pZl9jb25zdHJ1Y3Rvcl9uYm95ZXIpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgoKChzY194XzggPSAoc2NfeF8xMS5jZHIuY2FyKSksICh0
bXAxMTI2ID0gKGlzX3Rlcm1fZXF1YWxfbmJveWVyKHNjX3hfOCwgdHJ1ZV90ZXJtX25ib3llcikp
KSwgKCh0bXAxMTI2IT09IGZhbHNlKT90bXAxMTI2Oihpc190ZXJtX21lbWJlcl9uYm95ZXIoc2Nf
eF84LCB0cnVlX2xzdCkpKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc2NfeF8xMSA9IChzY194XzExLmNkci5jZHIuY2FyKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgo
eCA9IChzY194XzExLmNkci5jYXIpKSwgKHRtcDExMjUgPSAoaXNfdGVybV9lcXVhbF9uYm95ZXIo
eCwgZmFsc2VfdGVybV9uYm95ZXIpKSksICgodG1wMTEyNSE9PSBmYWxzZSk/dG1wMTEyNTooaXNf
dGVybV9tZW1iZXJfbmJveWVyKHgsIGZhbHNlX2xzdCkpKSkhPT0gZmFsc2UpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX3hfMTEgPSAoc2NfeF8xMS5jZHIuY2RyLmNk
ci5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgodGF1dG9sb2d5cF9uYm95ZXIoKHNjX3hf
MTEuY2RyLmNkci5jYXIpLCAobmV3IHNjX1BhaXIoKHNjX3hfMTEuY2RyLmNhciksIHRydWVfbHN0
KSksIGZhbHNlX2xzdCkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChmYWxzZV9sc3QgPSAobmV3IHNjX1BhaXIoKHNjX3hfMTEuY2RyLmNhciksIGZhbHNlX2xzdCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX3hfMTEg
PSAoc2NfeF8xMS5jZHIuY2RyLmNkci5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH07CisgICAgKGlmX2NvbnN0cnVjdG9yX25i
b3llciA9ICJcdTFFOUMqIik7CisgICAgKHJld3JpdGVfY291bnRfbmJveWVyID0gKDApKTsKKyAg
ICByZXdyaXRlX25ib3llciA9IGZ1bmN0aW9uKHRlcm0pIHsKKyAgICAgICAgdmFyIHRlcm0yOwor
ICAgICAgICB2YXIgc2NfdGVybV8xMjsKKyAgICAgICAgdmFyIGxzdDsKKyAgICAgICAgdmFyIHN5
bWJvbF9yZWNvcmQ7CisgICAgICAgIHZhciBzY19sc3RfMTM7CisgICAgICAgIHsKKyAgICAgICAg
ICAgICgrK3Jld3JpdGVfY291bnRfbmJveWVyKTsKKyAgICAgICAgICAgIGlmICghKHRlcm0gaW5z
dGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGVybTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIChzY190ZXJt
XzEyID0gKG5ldyBzY19QYWlyKCh0ZXJtLmNhciksICgoc2NfbHN0XzEzID0gKHRlcm0uY2RyKSks
ICgoc2NfbHN0XzEzID09PSBudWxsKT9udWxsOihuZXcgc2NfUGFpcigocmV3cml0ZV9uYm95ZXIo
KHNjX2xzdF8xMy5jYXIpKSksIChyZXdyaXRlX2FyZ3NfbmJveWVyKChzY19sc3RfMTMuY2RyKSkp
KSkpKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgKGxzdCA9ICgoc3ltYm9sX3JlY29yZCA9ICh0
ZXJtLmNhcikpLCAoc3ltYm9sX3JlY29yZFsoMSldKSkpOworICAgICAgICAgICAgICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsc3QgPT09IG51bGwp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzY190ZXJtXzEyOworICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgo
KCh0ZXJtMiA9ICgobHN0LmNhcikuY2RyLmNhcikpLCAodW5pZnlfc3Vic3RfbmJveWVyID0gbnVs
bCksIChvbmVfd2F5X3VuaWZ5MV9uYm95ZXIoc2NfdGVybV8xMiwgdGVybTIpKSkhPT0gZmFsc2Up
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJld3JpdGVfbmJveWVy
KChhcHBseV9zdWJzdF9uYm95ZXIodW5pZnlfc3Vic3RfbmJveWVyLCAoKGxzdC5jYXIpLmNkci5j
ZHIuY2FyKSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAobHN0ID0gKGxzdC5jZHIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisgICAgcmV3cml0
ZV9hcmdzX25ib3llciA9IGZ1bmN0aW9uKGxzdCkgeworICAgICAgICB2YXIgc2NfbHN0XzE0Owor
ICAgICAgICByZXR1cm4gKChsc3QgPT09IG51bGwpP251bGw6KG5ldyBzY19QYWlyKChyZXdyaXRl
X25ib3llcigobHN0LmNhcikpKSwgKChzY19sc3RfMTQgPSAobHN0LmNkcikpLCAoKHNjX2xzdF8x
NCA9PT0gbnVsbCk/bnVsbDoobmV3IHNjX1BhaXIoKHJld3JpdGVfbmJveWVyKChzY19sc3RfMTQu
Y2FyKSkpLCAocmV3cml0ZV9hcmdzX25ib3llcigoc2NfbHN0XzE0LmNkcikpKSkpKSkpKSk7Cisg
ICAgfTsKKyAgICAodW5pZnlfc3Vic3RfbmJveWVyID0gIlx1MUU5QyoiKTsKKyAgICBvbmVfd2F5
X3VuaWZ5MV9uYm95ZXIgPSBmdW5jdGlvbih0ZXJtMSwgdGVybTIpIHsKKyAgICAgICAgdmFyIGxz
dDE7CisgICAgICAgIHZhciBsc3QyOworICAgICAgICB2YXIgdGVtcF90ZW1wOworICAgICAgICBp
ZiAoISh0ZXJtMiBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICh0ZW1wX3RlbXAgPSAoc2NfYXNzcSh0ZXJtMiwgdW5pZnlfc3Vic3RfbmJveWVyKSkp
OworICAgICAgICAgICAgICAgIGlmICgodGVtcF90ZW1wIT09IGZhbHNlKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIChpc190ZXJtX2VxdWFsX25ib3llcih0ZXJtMSwgKHRlbXBfdGVtcC5j
ZHIpKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpZiAoKHNj
X2lzTnVtYmVyKHRlcm0yKSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHNjX2lz
RXF1YWwodGVybTEsIHRlcm0yKSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5pZnlfc3Vi
c3RfbmJveWVyID0gKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcih0ZXJtMiwgdGVybTEpKSwgdW5p
Znlfc3Vic3RfbmJveWVyKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgICAgICBpZiAoISh0ZXJtMSBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBpZiAoKCh0ZXJtMS5jYXIpPT09KHRlcm0yLmNhcikpKQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAobHN0MSA9ICh0ZXJtMS5jZHIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIChsc3QyID0gKHRlcm0yLmNkcikpOworICAgICAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxz
dDEgPT09IG51bGwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxz
dDIgPT09IG51bGwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsc3QyID09PSBudWxsKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCgob25lX3dheV91bmlmeTFfbmJveWVyKChsc3QxLmNhciksIChsc3QyLmNhcikpKSE9PSBm
YWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobHN0MSA9IChsc3QxLmNkcikp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobHN0MiA9IChs
c3QyLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworICAgIChmYWxzZV90ZXJtX25i
b3llciA9ICJcdTFFOUMqIik7CisgICAgKHRydWVfdGVybV9uYm95ZXIgPSAiXHUxRTlDKiIpOwor
ICAgIHRyYW5zX29mX2ltcGxpZXMxX25ib3llciA9IGZ1bmN0aW9uKG4pIHsKKyAgICAgICAgdmFy
IHNjX25fMTU7CisgICAgICAgIHJldHVybiAoKHNjX2lzRXF1YWwobiwgKDEpKSk/KHNjX2xpc3Qo
Ilx1MUU5Q2ltcGxpZXMiLCAoMCksICgxKSkpOihzY19saXN0KCJcdTFFOUNhbmQiLCAoc2NfbGlz
dCgiXHUxRTlDaW1wbGllcyIsIChuLSgxKSksIG4pKSwgKChzY19uXzE1ID0gKG4tKDEpKSksICgo
c2NfaXNFcXVhbChzY19uXzE1LCAoMSkpKT8oc2NfbGlzdCgiXHUxRTlDaW1wbGllcyIsICgwKSwg
KDEpKSk6KHNjX2xpc3QoIlx1MUU5Q2FuZCIsIChzY19saXN0KCJcdTFFOUNpbXBsaWVzIiwgKHNj
X25fMTUtKDEpKSwgc2Nfbl8xNSkpLCAodHJhbnNfb2ZfaW1wbGllczFfbmJveWVyKChzY19uXzE1
LSgxKSkpKSkpKSkpKSk7CisgICAgfTsKKyAgICBpc190ZXJtX2VxdWFsX25ib3llciA9IGZ1bmN0
aW9uKHgsIHkpIHsKKyAgICAgICAgdmFyIGxzdDE7CisgICAgICAgIHZhciBsc3QyOworICAgICAg
ICB2YXIgcjI7CisgICAgICAgIHZhciByMTsKKyAgICAgICAgaWYgKCh4IGluc3RhbmNlb2Ygc2Nf
UGFpcikpCisgICAgICAgICAgICBpZiAoKHkgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAg
ICAgICAgICBpZiAoKCgocjEgPSAoeC5jYXIpKSwgKHIyID0gKHkuY2FyKSksIChyMT09PXIyKSkh
PT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAobHN0MSA9ICh4LmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgKGxzdDIgPSAoeS5j
ZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKChsc3QxID09PSBudWxsKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIChsc3QyID09PSBudWxsKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobHN0
MiA9PT0gbnVsbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKGlzX3Rlcm1fZXF1YWxfbmJveWVyKChsc3Qx
LmNhciksIChsc3QyLmNhcikpKSE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAobHN0MSA9IChsc3QxLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAobHN0MiA9IChsc3QyLmNkcikpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJldHVybiAoc2NfaXNFcXVhbCh4LCB5KSk7CisgICAgfTsKKyAgICBp
c190ZXJtX21lbWJlcl9uYm95ZXIgPSBmdW5jdGlvbih4LCBsc3QpIHsKKyAgICAgICAgdmFyIHg7
CisgICAgICAgIHZhciBsc3Q7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBp
ZiAoKGxzdCA9PT0gbnVsbCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlmICgoKGlzX3Rlcm1fZXF1YWxfbmJveWVyKHgs
IChsc3QuY2FyKSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAobHN0ID0gKGxzdC5j
ZHIpKTsKKyAgICAgICAgfQorICAgIH07CisgICAgQmdMX3NldHVwemQyYm95ZXJ6ZDIgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgdmFyIHN5bWJvbF9yZWNvcmQ7CisgICAgICAgIHZhciB2YWx1ZTsK
KyAgICAgICAgdmFyIEJnTF9zY19zeW1ib2x6ZDJyZWNvcmRfMTZ6ZDI7CisgICAgICAgIHZhciBz
eW07CisgICAgICAgIHZhciBzY19zeW1fMTc7CisgICAgICAgIHZhciB0ZXJtOworICAgICAgICB2
YXIgbHN0OworICAgICAgICB2YXIgc2NfdGVybV8xODsKKyAgICAgICAgdmFyIHNjX3Rlcm1fMTk7
CisgICAgICAgIHsKKyAgICAgICAgICAgIChCZ0xfc2NfemEyc3ltYm9semQycmVjb3Jkc3pkMmFs
aXN0emEyXzJ6MDBfbmJveWVyID0gbnVsbCk7CisgICAgICAgICAgICAoaWZfY29uc3RydWN0b3Jf
bmJveWVyID0gKEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIo
Ilx1MUU5Q2lmIikpKTsKKyAgICAgICAgICAgIChmYWxzZV90ZXJtX25ib3llciA9ICgoc2NfdGVy
bV8xOSA9IChuZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpKSwgKCEoc2NfdGVybV8xOSBpbnN0
YW5jZW9mIHNjX1BhaXIpP3NjX3Rlcm1fMTk6KG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQy
emUzc3ltYm9semQycmVjb3JkXzF6ZTNfbmJveWVyKChzY190ZXJtXzE5LmNhcikpKSwgKHRyYW5z
bGF0ZV9hcmdzX25ib3llcigoc2NfdGVybV8xOS5jZHIpKSkpKSkpKTsKKyAgICAgICAgICAgICh0
cnVlX3Rlcm1fbmJveWVyID0gKChzY190ZXJtXzE4ID0gKG5ldyBzY19QYWlyKCJcdTFFOUN0Iixu
dWxsKSkpLCAoIShzY190ZXJtXzE4IGluc3RhbmNlb2Ygc2NfUGFpcik/c2NfdGVybV8xODoobmV3
IHNjX1BhaXIoKEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIo
KHNjX3Rlcm1fMTguY2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKChzY190ZXJtXzE4LmNk
cikpKSkpKSkpOworICAgICAgICAgICAgKGxzdCA9IHNjX2NvbnN0XzNfbmJveWVyKTsKKyAgICAg
ICAgICAgIHdoaWxlICghKGxzdCA9PT0gbnVsbCkpIHsKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICh0ZXJtID0gKGxzdC5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCgodGVybSBpbnN0YW5jZW9mIHNjX1BhaXIpJiYoKCh0ZXJtLmNhcik9PT0iXHUxRTlDZXF1
YWwiKSYmKCh0ZXJtLmNkci5jYXIpIGluc3RhbmNlb2Ygc2NfUGFpcikpKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nfc3ltXzE3ID0g
KCh0ZXJtLmNkci5jYXIpLmNhcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1
ZSA9IChuZXcgc2NfUGFpcigoISh0ZXJtIGluc3RhbmNlb2Ygc2NfUGFpcik/dGVybToobmV3IHNj
X1BhaXIoKEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIoKHRl
cm0uY2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKCh0ZXJtLmNkcikpKSkpKSwgKChzeW0g
PSAoKHRlcm0uY2RyLmNhcikuY2FyKSksIChCZ0xfc2Nfc3ltYm9semQycmVjb3JkXzE2emQyID0g
KEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXplM19uYm95ZXIoc3ltKSkpLCAo
QmdMX3NjX3N5bWJvbHpkMnJlY29yZF8xNnpkMlsoMSldKSkpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHN5bWJvbF9yZWNvcmQgPSAoQmdMX3NjX3N5bWJvbHpkMnplM3N5bWJvbHpk
MnJlY29yZF8xemUzX25ib3llcihzY19zeW1fMTcpKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHN5bWJvbF9yZWNvcmRbKDEpXSA9IHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
KHNjX2Vycm9yKCJBREQtTEVNTUEgZGlkIG5vdCBsaWtlIHRlcm06ICAiLCB0ZXJtKSk7CisgICAg
ICAgICAgICAgICAgICAgIChsc3QgPSAobHN0LmNkcikpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfTsK
KyAgICBCZ0xfdGVzdHpkMmJveWVyemQyID0gZnVuY3Rpb24obikgeworICAgICAgICB2YXIgb3B0
ck9wbmQ7CisgICAgICAgIHZhciB0ZXJtOworICAgICAgICB2YXIgc2Nfbl8yMDsKKyAgICAgICAg
dmFyIGFuc3dlcjsKKyAgICAgICAgdmFyIHNjX3Rlcm1fMjE7CisgICAgICAgIHZhciBzY190ZXJt
XzIyOworICAgICAgICB7CisgICAgICAgICAgICAocmV3cml0ZV9jb3VudF9uYm95ZXIgPSAoMCkp
OworICAgICAgICAgICAgKHRlcm0gPSBzY19jb25zdF80X25ib3llcik7CisgICAgICAgICAgICAo
c2Nfbl8yMCA9IG4pOworICAgICAgICAgICAgd2hpbGUgKCEoc2Nfbl8yMD09PSAwKSkgeworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKHRlcm0gPSAoc2NfbGlzdCgiXHUx
RTlDb3IiLCB0ZXJtLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgKC0tc2Nfbl8yMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgKHNjX3Rlcm1fMjIgPSB0ZXJtKTsKKyAgICAgICAgICAgIGlmICghKHNj
X3Rlcm1fMjIgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAob3B0ck9wbmQg
PSBzY190ZXJtXzIyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAob3B0ck9w
bmQgPSAobmV3IHNjX1BhaXIoKEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJyZWNvcmRfMXpl
M19uYm95ZXIoKHNjX3Rlcm1fMjIuY2FyKSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKChzY190
ZXJtXzIyLmNkcikpKSkpKTsKKyAgICAgICAgICAgIChzY190ZXJtXzIxID0gKGFwcGx5X3N1YnN0
X25ib3llcigoKGNvbnN0X25ib3llciA9PT0gbnVsbCk/bnVsbDoobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKChjb25zdF9uYm95ZXIuY2FyLmNhciksICh0cmFuc2xhdGVfdGVybV9uYm95ZXIoKGNv
bnN0X25ib3llci5jYXIuY2RyKSkpKSksICh0cmFuc2xhdGVfYWxpc3RfbmJveWVyKChjb25zdF9u
Ym95ZXIuY2RyKSkpKSkpLCBvcHRyT3BuZCkpKTsKKyAgICAgICAgICAgIChhbnN3ZXIgPSAodGF1
dG9sb2d5cF9uYm95ZXIoKHJld3JpdGVfbmJveWVyKHNjX3Rlcm1fMjEpKSwgbnVsbCwgbnVsbCkp
KTsKKyAgICAgICAgICAgIChzY193cml0ZShyZXdyaXRlX2NvdW50X25ib3llcikpOworICAgICAg
ICAgICAgKHNjX2Rpc3BsYXkoIiByZXdyaXRlcyIpKTsKKyAgICAgICAgICAgIChzY19uZXdsaW5l
KCkpOworICAgICAgICAgICAgaWYgKChhbnN3ZXIhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXdyaXRlX2NvdW50X25ib3llcjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9OworfQorLyogRXhwb3J0ZWQg
VmFyaWFibGVzICovCit2YXIgQmdMX3BhcnNlemQyemUzbmJ6ZDJ0cmVlc3plMzsKK3ZhciBCZ0xf
ZWFybGV5emQyYmVuY2htYXJremQyOwordmFyIEJnTF9wYXJzZXpkMnplM3BhcnNlZHpmM3pjMjsK
K3ZhciB0ZXN0OwordmFyIEJnTF9wYXJzZXpkMnplM3RyZWVzejMxOwordmFyIEJnTF9tYWtlemQy
cGFyc2VyemQyOworLyogRW5kIEV4cG9ydHMgKi8KKwordmFyIGNvbnN0X2VhcmxleTsKK3sKKyAg
ICAoY29uc3RfZWFybGV5ID0gKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcyIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3MiLChuZXcgc2NfUGFpcigiXHUxRTlDcyIsbnVsbCkpKSksbnVsbCkp
KSkpKSxudWxsKSkpOworICAgIEJnTF9tYWtlemQycGFyc2VyemQyID0gZnVuY3Rpb24oZ3JhbW1h
ciwgbGV4ZXIpIHsKKyAgICAgICAgdmFyIGk7CisgICAgICAgIHZhciBwYXJzZXJfZGVzY3I7Cisg
ICAgICAgIHZhciBkZWZfbG9vcDsKKyAgICAgICAgdmFyIG5iX250czsKKyAgICAgICAgdmFyIG5h
bWVzOworICAgICAgICB2YXIgc3RlcHM7CisgICAgICAgIHZhciBwcmVkaWN0b3JzOworICAgICAg
ICB2YXIgZW5kZXJzOworICAgICAgICB2YXIgc3RhcnRlcnM7CisgICAgICAgIHZhciBudHM7Cisg
ICAgICAgIHZhciBzY19uYW1lc18xOworICAgICAgICB2YXIgc2Nfc3RlcHNfMjsKKyAgICAgICAg
dmFyIHNjX3ByZWRpY3RvcnNfMzsKKyAgICAgICAgdmFyIHNjX2VuZGVyc180OworICAgICAgICB2
YXIgc2Nfc3RhcnRlcnNfNTsKKyAgICAgICAgdmFyIG5iX2NvbmZzOworICAgICAgICB2YXIgQmdM
X3NjX2RlZnpkMmxvb3BfNnpkMjsKKyAgICAgICAgdmFyIEJnTF9zY19uYnpkMm50c183emQyOwor
ICAgICAgICB2YXIgc2NfbnRzXzg7CisgICAgICAgIHZhciBCZ0xfc2NfZGVmemQybG9vcF85emQy
OworICAgICAgICB2YXIgaW5kOworICAgICAgICB7CisgICAgICAgICAgICBpbmQgPSBmdW5jdGlv
bihudCwgc2NfbnRzXzEwKSB7CisgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAoaSA9ICgoc2NfbnRzXzEwLmxlbmd0aCktKDEpKSk7
CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKGk+PSgwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzY19p
c0VxdWFsKChzY19udHNfMTBbaV0pLCBudCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgtLWkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAoc2NfbnRzXzggPSAoKEJnTF9zY19kZWZ6ZDJsb29wXzl6ZDIgPSBmdW5jdGlvbihkZWZz
LCBzY19udHNfMTEpIHsKKyAgICAgICAgICAgICAgICB2YXIgcnVsZV9sb29wOworICAgICAgICAg
ICAgICAgIHZhciBoZWFkOworICAgICAgICAgICAgICAgIHZhciBkZWY7CisgICAgICAgICAgICAg
ICAgcmV0dXJuICgoZGVmcyBpbnN0YW5jZW9mIHNjX1BhaXIpPygoZGVmID0gKGRlZnMuY2FyKSks
IChoZWFkID0gKGRlZi5jYXIpKSwgKHJ1bGVfbG9vcCA9IGZ1bmN0aW9uKHJ1bGVzLCBzY19udHNf
MTIpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG50OworICAgICAgICAgICAgICAgICAgICB2
YXIgbDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNjX250c18xMzsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIHJ1bGU7CisgICAgICAgICAgICAgICAgICAgIGlmICgocnVsZXMgaW5zdGFuY2Vv
ZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAocnVsZSA9IChydWxlcy5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAobCA9IHJ1bGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19udHNfMTMg
PSBzY19udHNfMTIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobCBpbnN0
YW5jZW9mIHNjX1BhaXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudCA9IChsLmNhcikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSAobC5jZHIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzY19udHNfMTMgPSAoKChzY19tZW1iZXIobnQsIHNj
X250c18xMykpIT09IGZhbHNlKT9zY19udHNfMTM6KG5ldyBzY19QYWlyKG50LCBzY19udHNfMTMp
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocnVsZV9s
b29wKChydWxlcy5jZHIpLCBzY19udHNfMTMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IChCZ0xfc2NfZGVmemQybG9vcF85emQyKChkZWZzLmNkciksIHNjX250c18xMikpOworICAgICAg
ICAgICAgICAgIH0pLCAocnVsZV9sb29wKChkZWYuY2RyKSwgKCgoc2NfbWVtYmVyKGhlYWQsIHNj
X250c18xMSkpIT09IGZhbHNlKT9zY19udHNfMTE6KG5ldyBzY19QYWlyKGhlYWQsIHNjX250c18x
MSkpKSkpKTooc2NfbGlzdDJ2ZWN0b3IoKHNjX3JldmVyc2Uoc2NfbnRzXzExKSkpKSk7CisgICAg
ICAgICAgICB9KSwgKEJnTF9zY19kZWZ6ZDJsb29wXzl6ZDIoZ3JhbW1hciwgbnVsbCkpKSk7Cisg
ICAgICAgICAgICAoQmdMX3NjX25iemQybnRzXzd6ZDIgPSAoc2NfbnRzXzgubGVuZ3RoKSk7Cisg
ICAgICAgICAgICAobmJfY29uZnMgPSAoKChCZ0xfc2NfZGVmemQybG9vcF82emQyID0gZnVuY3Rp
b24oZGVmcywgQmdMX3NjX25iemQyY29uZnNfMTR6ZDIpIHsKKyAgICAgICAgICAgICAgICB2YXIg
cnVsZV9sb29wOworICAgICAgICAgICAgICAgIHZhciBkZWY7CisgICAgICAgICAgICAgICAgcmV0
dXJuICgoZGVmcyBpbnN0YW5jZW9mIHNjX1BhaXIpPygoZGVmID0gKGRlZnMuY2FyKSksIChydWxl
X2xvb3AgPSBmdW5jdGlvbihydWxlcywgQmdMX3NjX25iemQyY29uZnNfMTV6ZDIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbmJ6
ZDJjb25mc18xNnpkMjsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJ1bGU7CisgICAgICAgICAg
ICAgICAgICAgIGlmICgocnVsZXMgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVsZSA9IChydWxlcy5j
YXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IHJ1bGUpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJjb25mc18xNnpkMiA9IEJnTF9zY19uYnpk
MmNvbmZzXzE1emQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGwgaW5z
dGFuY2VvZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsrQmdMX3NjX25iemQyY29uZnNfMTZ6ZDIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocnVsZV9sb29w
KChydWxlcy5jZHIpLCAoQmdMX3NjX25iemQyY29uZnNfMTZ6ZDIrKDEpKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gKEJnTF9zY19kZWZ6ZDJsb29wXzZ6ZDIoKGRlZnMuY2RyKSwgQmdM
X3NjX25iemQyY29uZnNfMTV6ZDIpKTsKKyAgICAgICAgICAgICAgICB9KSwgKHJ1bGVfbG9vcCgo
ZGVmLmNkciksIEJnTF9zY19uYnpkMmNvbmZzXzE0emQyKSkpOkJnTF9zY19uYnpkMmNvbmZzXzE0
emQyKTsKKyAgICAgICAgICAgIH0pLCAoQmdMX3NjX2RlZnpkMmxvb3BfNnpkMihncmFtbWFyLCAo
MCkpKSkrQmdMX3NjX25iemQybnRzXzd6ZDIpKTsKKyAgICAgICAgICAgIChzY19zdGFydGVyc181
ID0gKHNjX21ha2VWZWN0b3IoQmdMX3NjX25iemQybnRzXzd6ZDIsIG51bGwpKSk7CisgICAgICAg
ICAgICAoc2NfZW5kZXJzXzQgPSAoc2NfbWFrZVZlY3RvcihCZ0xfc2NfbmJ6ZDJudHNfN3pkMiwg
bnVsbCkpKTsKKyAgICAgICAgICAgIChzY19wcmVkaWN0b3JzXzMgPSAoc2NfbWFrZVZlY3RvcihC
Z0xfc2NfbmJ6ZDJudHNfN3pkMiwgbnVsbCkpKTsKKyAgICAgICAgICAgIChzY19zdGVwc18yID0g
KHNjX21ha2VWZWN0b3IobmJfY29uZnMsIGZhbHNlKSkpOworICAgICAgICAgICAgKHNjX25hbWVz
XzEgPSAoc2NfbWFrZVZlY3RvcihuYl9jb25mcywgZmFsc2UpKSk7CisgICAgICAgICAgICAobnRz
ID0gc2NfbnRzXzgpOworICAgICAgICAgICAgKHN0YXJ0ZXJzID0gc2Nfc3RhcnRlcnNfNSk7Cisg
ICAgICAgICAgICAoZW5kZXJzID0gc2NfZW5kZXJzXzQpOworICAgICAgICAgICAgKHByZWRpY3Rv
cnMgPSBzY19wcmVkaWN0b3JzXzMpOworICAgICAgICAgICAgKHN0ZXBzID0gc2Nfc3RlcHNfMik7
CisgICAgICAgICAgICAobmFtZXMgPSBzY19uYW1lc18xKTsKKyAgICAgICAgICAgIChuYl9udHMg
PSAoc2NfbnRzXzgubGVuZ3RoKSk7CisgICAgICAgICAgICAoaSA9IChuYl9udHMtKDEpKSk7Cisg
ICAgICAgICAgICB3aGlsZSAoKGk+PSgwKSkpIHsKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIChzY19zdGVwc18yW2ldID0gKGktbmJfbnRzKSk7CisgICAgICAgICAgICAg
ICAgICAgIChzY19uYW1lc18xW2ldID0gKHNjX2xpc3QoKHNjX250c184W2ldKSwgKDApKSkpOwor
ICAgICAgICAgICAgICAgICAgICAoc2NfZW5kZXJzXzRbaV0gPSAoc2NfbGlzdChpKSkpOworICAg
ICAgICAgICAgICAgICAgICAoLS1pKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBkZWZfbG9vcCA9IGZ1bmN0aW9uKGRlZnMsIGNvbmYpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgcnVsZV9sb29wOworICAgICAgICAgICAgICAgIHZhciBoZWFkOworICAgICAg
ICAgICAgICAgIHZhciBkZWY7CisgICAgICAgICAgICAgICAgcmV0dXJuICgoZGVmcyBpbnN0YW5j
ZW9mIHNjX1BhaXIpPygoZGVmID0gKGRlZnMuY2FyKSksIChoZWFkID0gKGRlZi5jYXIpKSwgKHJ1
bGVfbG9vcCA9IGZ1bmN0aW9uKHJ1bGVzLCBjb25mLCBydWxlX251bSkgeworICAgICAgICAgICAg
ICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2lfMTc7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBudDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBzY19jb25mXzE4OworICAgICAgICAgICAgICAgICAgICB2YXIgc2Nf
aV8xOTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJ1bGU7CisgICAgICAgICAgICAgICAgICAg
IGlmICgocnVsZXMgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVsZSA9IChydWxlcy5jYXIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZXNbY29uZl0gPSAoc2NfbGlzdChoZWFkLCBy
dWxlX251bSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfaV8xOSA9IChpbmQo
aGVhZCwgbnRzKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGFydGVyc1tzY19p
XzE5XSA9IChuZXcgc2NfUGFpcihjb25mLCAoc3RhcnRlcnNbc2NfaV8xOV0pKSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChsID0gcnVsZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHNjX2NvbmZfMTggPSBjb25mKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoKGwgaW5zdGFuY2VvZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnQgPSAobC5j
YXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVwc1tzY19jb25m
XzE4XSA9IChpbmQobnQsIG50cykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzY19pXzE3ID0gKGluZChudCwgbnRzKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHByZWRpY3RvcnNbc2NfaV8xN10gPSAobmV3IHNjX1BhaXIoc2NfY29uZl8x
OCwgKHByZWRpY3RvcnNbc2NfaV8xN10pKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGwgPSAobC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICgrK3NjX2NvbmZfMTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzdGVwc1tzY19jb25mXzE4XSA9ICgoaW5kKGhlYWQsIG50cykpLW5iX250cykpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChpID0gKGluZChoZWFkLCBudHMpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGVuZGVyc1tpXSA9IChuZXcgc2NfUGFpcihzY19jb25mXzE4LCAo
ZW5kZXJzW2ldKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJ1bGVf
bG9vcCgocnVsZXMuY2RyKSwgKHNjX2NvbmZfMTgrKDEpKSwgKHJ1bGVfbnVtKygxKSkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIChkZWZfbG9vcCgoZGVmcy5jZHIpLCBjb25mKSk7Cisg
ICAgICAgICAgICAgICAgfSksIChydWxlX2xvb3AoKGRlZi5jZHIpLCBjb25mLCAoMSkpKSk6dW5k
ZWZpbmVkKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICAoZGVmX2xvb3AoZ3JhbW1hciwg
KHNjX250c184Lmxlbmd0aCkpKTsKKyAgICAgICAgICAgIChwYXJzZXJfZGVzY3IgPSBbbGV4ZXIs
IHNjX250c184LCBzY19zdGFydGVyc181LCBzY19lbmRlcnNfNCwgc2NfcHJlZGljdG9yc18zLCBz
Y19zdGVwc18yLCBzY19uYW1lc18xXSk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oaW5w
dXQpIHsKKyAgICAgICAgICAgICAgICB2YXIgb3B0ck9wbmQ7CisgICAgICAgICAgICAgICAgdmFy
IHNjX29wdHJPcG5kXzIwOworICAgICAgICAgICAgICAgIHZhciBzY19vcHRyT3BuZF8yMTsKKyAg
ICAgICAgICAgICAgICB2YXIgc2Nfb3B0ck9wbmRfMjI7CisgICAgICAgICAgICAgICAgdmFyIGxv
b3AxOworICAgICAgICAgICAgICAgIHZhciBCZ0xfc2Nfc3RhdGV6YTJfMjN6YTI7CisgICAgICAg
ICAgICAgICAgdmFyIHRva3M7CisgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19uYnpkMm50c18y
NHpkMjsKKyAgICAgICAgICAgICAgICB2YXIgc2Nfc3RlcHNfMjU7CisgICAgICAgICAgICAgICAg
dmFyIHNjX2VuZGVyc18yNjsKKyAgICAgICAgICAgICAgICB2YXIgc3RhdGVfbnVtOworICAgICAg
ICAgICAgICAgIHZhciBCZ0xfc2Nfc3RhdGVzemEyXzI3emEyOworICAgICAgICAgICAgICAgIHZh
ciBzdGF0ZXM7CisgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAgdmFyIGNv
bmY7CisgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAgdmFyIHRva19udHM7
CisgICAgICAgICAgICAgICAgdmFyIHNjX2lfMjg7CisgICAgICAgICAgICAgICAgdmFyIHNjX2lf
Mjk7CisgICAgICAgICAgICAgICAgdmFyIGwxOworICAgICAgICAgICAgICAgIHZhciBsMjsKKyAg
ICAgICAgICAgICAgICB2YXIgdG9rOworICAgICAgICAgICAgICAgIHZhciB0YWlsMTEyOTsKKyAg
ICAgICAgICAgICAgICB2YXIgTDExMjU7CisgICAgICAgICAgICAgICAgdmFyIGdvYWxfZW5kZXJz
OworICAgICAgICAgICAgICAgIHZhciBCZ0xfc2Nfc3RhdGVzemEyXzMwemEyOworICAgICAgICAg
ICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJudHNfMzF6ZDI7CisgICAgICAgICAgICAgICAgdmFyIEJn
TF9zY19uYnpkMmNvbmZzXzMyemQyOworICAgICAgICAgICAgICAgIHZhciBuYl90b2tzOworICAg
ICAgICAgICAgICAgIHZhciBnb2FsX3N0YXJ0ZXJzOworICAgICAgICAgICAgICAgIHZhciBzY19z
dGF0ZXNfMzM7CisgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19uYnpkMmNvbmZzXzM0emQyOwor
ICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJ0b2tzXzM1emQyOworICAgICAgICAgICAg
ICAgIHZhciBzY190b2tzXzM2OworICAgICAgICAgICAgICAgIHZhciBmYWxzZUhlYWQxMTI4Owor
ICAgICAgICAgICAgICAgIHZhciBzY19uYW1lc18zNzsKKyAgICAgICAgICAgICAgICB2YXIgc2Nf
c3RlcHNfMzg7CisgICAgICAgICAgICAgICAgdmFyIHNjX3ByZWRpY3RvcnNfMzk7CisgICAgICAg
ICAgICAgICAgdmFyIHNjX2VuZGVyc180MDsKKyAgICAgICAgICAgICAgICB2YXIgc2Nfc3RhcnRl
cnNfNDE7CisgICAgICAgICAgICAgICAgdmFyIHNjX250c180MjsKKyAgICAgICAgICAgICAgICB2
YXIgbGV4ZXI7CisgICAgICAgICAgICAgICAgdmFyIHNjX2luZF80MzsKKyAgICAgICAgICAgICAg
ICB2YXIgbWFrZV9zdGF0ZXM7CisgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19jb25memQyc2V0
emQyZ2V0emEyXzQ0emEyOworICAgICAgICAgICAgICAgIHZhciBjb25mX3NldF9tZXJnZV9uZXdf
YmFuZzsKKyAgICAgICAgICAgICAgICB2YXIgY29uZl9zZXRfYWRqb2luOworICAgICAgICAgICAg
ICAgIHZhciBCZ0xfc2NfY29uZnpkMnNldHpkMmFkam9pbnphMl80NXphMjsKKyAgICAgICAgICAg
ICAgICB2YXIgQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJ6YTJfNDZ6MDA7CisgICAgICAg
ICAgICAgICAgdmFyIGNvbmZfc2V0X3VuaW9uOworICAgICAgICAgICAgICAgIHZhciBmb3J3Owor
ICAgICAgICAgICAgICAgIHZhciBpc19wYXJzZWQ7CisgICAgICAgICAgICAgICAgdmFyIGRlcml2
X3RyZWVzOworICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfZGVyaXZ6ZDJ0cmVlc3phMl80N3o3
MDsKKyAgICAgICAgICAgICAgICB2YXIgbmJfZGVyaXZfdHJlZXM7CisgICAgICAgICAgICAgICAg
dmFyIEJnTF9zY19uYnpkMmRlcml2emQydHJlZXN6YTJfNDh6YTI7CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzY19pbmRfNDMgPSBmdW5jdGlvbihudCwgc2NfbnRzXzQ5
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSA9ICgoc2NfbnRzXzQ5Lmxlbmd0
aCktKDEpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpPj0oMCkpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzY19pc0VxdWFsKChzY19udHNfNDlbaV0pLCBu
dCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgtLWkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBtYWtl
X3N0YXRlcyA9IGZ1bmN0aW9uKEJnTF9zY19uYnpkMnRva3NfNTB6ZDIsIEJnTF9zY19uYnpkMmNv
bmZzXzUxemQyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX3N0YXRl
c181MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc2Nfc3RhdGVzXzUyID0gKHNjX21ha2VWZWN0b3IoKEJnTF9zY19uYnpkMnRva3NfNTB6
ZDIrKDEpKSwgZmFsc2UpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSBCZ0xf
c2NfbmJ6ZDJ0b2tzXzUwemQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
KGk+PSgwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHYgPSAoc2NfbWFrZVZlY3RvcigoQmdMX3NjX25i
emQyY29uZnNfNTF6ZDIrKDEpKSwgZmFsc2UpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAodlsoMCldID0gKC0xKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoc2Nfc3RhdGVzXzUyW2ldID0gdik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoLS1pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc2Nfc3RhdGVzXzUyOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBCZ0xfc2NfY29uZnpkMnNldHpkMmdl
dHphMl80NHphMiA9IGZ1bmN0aW9uKHN0YXRlLCBCZ0xfc2Nfc3RhdGV6ZDJudW1fNTN6ZDIsIHNj
X2NvbmZfNTQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25mX3NldDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfY29uZnpkMnNldF81NXpkMjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAoKEJnTF9zY19jb25memQyc2V0XzU1emQyID0gKHN0YXRl
WyhzY19jb25mXzU0KygxKSldKSksICgoQmdMX3NjX2NvbmZ6ZDJzZXRfNTV6ZDIhPT0gZmFsc2Up
P0JnTF9zY19jb25memQyc2V0XzU1emQyOigoY29uZl9zZXQgPSAoc2NfbWFrZVZlY3RvcigoQmdM
X3NjX3N0YXRlemQybnVtXzUzemQyKyg2KSksIGZhbHNlKSkpLCAoY29uZl9zZXRbKDEpXSA9ICgt
MykpLCAoY29uZl9zZXRbKDIpXSA9ICgtMSkpLCAoY29uZl9zZXRbKDMpXSA9ICgtMSkpLCAoY29u
Zl9zZXRbKDQpXSA9ICgtMSkpLCAoc3RhdGVbKHNjX2NvbmZfNTQrKDEpKV0gPSBjb25mX3NldCks
IGNvbmZfc2V0KSkpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAg
ICBjb25mX3NldF9tZXJnZV9uZXdfYmFuZyA9IGZ1bmN0aW9uKGNvbmZfc2V0KSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKChjb25mX3NldFsoKGNvbmZfc2V0WygxKV0pKyg1KSld
ID0gKGNvbmZfc2V0Wyg0KV0pKSwgKGNvbmZfc2V0WygxKV0gPSAoY29uZl9zZXRbKDMpXSkpLCAo
Y29uZl9zZXRbKDMpXSA9ICgtMSkpLCAoY29uZl9zZXRbKDQpXSA9ICgtMSkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgY29uZl9zZXRfYWRqb2luID0gZnVu
Y3Rpb24oc3RhdGUsIGNvbmZfc2V0LCBzY19jb25mXzU2LCBpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgdGFpbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHRhaWwg
PSAoY29uZl9zZXRbKDMpXSkpLCAoY29uZl9zZXRbKGkrKDUpKV0gPSAoLTEpKSwgKGNvbmZfc2V0
Wyh0YWlsKyg1KSldID0gaSksIChjb25mX3NldFsoMyldID0gaSksICgodGFpbDwoMCkpPygoY29u
Zl9zZXRbKDApXSA9IChzdGF0ZVsoMCldKSksIChzdGF0ZVsoMCldID0gc2NfY29uZl81NikpOnVu
ZGVmaW5lZCkpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBC
Z0xfc2NfY29uZnpkMnNldHpkMmFkam9pbnphMl80NXphMiA9IGZ1bmN0aW9uKHNjX3N0YXRlc181
NywgQmdMX3NjX3N0YXRlemQybnVtXzU4emQyLCBsLCBpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgY29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfY29uZl81
OTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsMTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBzdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoc3RhdGUgPSAoc2Nfc3RhdGVzXzU3W0JnTF9zY19zdGF0ZXpkMm51bV81
OHpkMl0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobDEgPSBsKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGwxIGluc3RhbmNlb2Ygc2NfUGFpcikpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHNjX2NvbmZfNTkgPSAobDEuY2FyKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoY29uZl9zZXQgPSAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJnZXR6YTJf
NDR6YTIoc3RhdGUsIEJnTF9zY19zdGF0ZXpkMm51bV81OHpkMiwgc2NfY29uZl81OSkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKGNvbmZfc2V0WyhpKyg1KSld
KT09PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZl9zZXRfYWRq
b2luKHN0YXRlLCBjb25mX3NldCwgc2NfY29uZl81OSwgaSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobDEgPSAobDEuY2RyKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs
MSA9IChsMS5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgICAgICBCZ0xfc2NfY29uZnpkMnNldHpkMmFkam9pbnph
MnphMl80NnowMCA9IGZ1bmN0aW9uKHNjX3N0YXRlc182MCwgQmdMX3NjX3N0YXRlc3phMl82MXph
MiwgQmdMX3NjX3N0YXRlemQybnVtXzYyemQyLCBzY19jb25mXzYzLCBpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgQmdMX3NjX2NvbmZ6ZDJzZXR6YTJfNjR6NzA7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgQmdMX3NjX3N0YXRlemEyXzY1emEyOworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRl
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgoc3RhdGUgPSAoc2Nfc3RhdGVzXzYw
W0JnTF9zY19zdGF0ZXpkMm51bV82MnpkMl0pKSwgKCgoKGNvbmZfc2V0ID0gKHN0YXRlWyhzY19j
b25mXzYzKygxKSldKSksICgoY29uZl9zZXQhPT0gZmFsc2UpPyhjb25mX3NldFsoaSsoNSkpXSk6
ZmFsc2UpKSE9PSBmYWxzZSk/KChCZ0xfc2Nfc3RhdGV6YTJfNjV6YTIgPSAoQmdMX3NjX3N0YXRl
c3phMl82MXphMltCZ0xfc2Nfc3RhdGV6ZDJudW1fNjJ6ZDJdKSksIChCZ0xfc2NfY29uZnpkMnNl
dHphMl82NHo3MCA9IChCZ0xfc2NfY29uZnpkMnNldHpkMmdldHphMl80NHphMihCZ0xfc2Nfc3Rh
dGV6YTJfNjV6YTIsIEJnTF9zY19zdGF0ZXpkMm51bV82MnpkMiwgc2NfY29uZl82MykpKSwgKCgo
QmdMX3NjX2NvbmZ6ZDJzZXR6YTJfNjR6NzBbKGkrKDUpKV0pPT09IGZhbHNlKT8oY29uZl9zZXRf
YWRqb2luKEJnTF9zY19zdGF0ZXphMl82NXphMiwgQmdMX3NjX2NvbmZ6ZDJzZXR6YTJfNjR6NzAs
IHNjX2NvbmZfNjMsIGkpKTp1bmRlZmluZWQpLCB0cnVlKTpmYWxzZSkpOworICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBjb25mX3NldF91bmlvbiA9IGZ1bmN0aW9u
KHN0YXRlLCBjb25mX3NldCwgc2NfY29uZl82Niwgb3RoZXJfc2V0KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoaSA9IChvdGhlcl9zZXRbKDIpXSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdoaWxlICgoaT49KDApKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKChjb25mX3NldFsoaSsoNSkpXSk9PT0gZmFsc2UpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjb25mX3NldF9hZGpvaW4oc3RhdGUsIGNvbmZfc2V0LCBzY19jb25mXzY2LCBp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSAob3RoZXJf
c2V0WyhpKyg1KSldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChpID0gKG90aGVyX3NldFsoaSsoNSkpXSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5k
ZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgICAgICBmb3J3ID0gZnVuY3Rpb24oc2Nfc3RhdGVzXzY3LCBCZ0xf
c2Nfc3RhdGV6ZDJudW1fNjh6ZDIsIHNjX3N0YXJ0ZXJzXzY5LCBzY19lbmRlcnNfNzAsIHNjX3By
ZWRpY3RvcnNfNzEsIHNjX3N0ZXBzXzcyLCBzY19udHNfNzMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBuZXh0X3NldDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0Owor
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGVuZGVyOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgc3RhcnRlcl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgc3RhcnRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19sXzc0OworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2xvb3AxXzc1OworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGhlYWQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX2NvbmZ6
ZDJzZXRfNzZ6ZDI7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX3N0YXRlemQy
bnVtXzc3emQyOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlOworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHNjX3N0YXRlc183ODsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBwcmVkczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfY29uZnpkMnNl
dF83OXpkMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGVwOworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHNjX2NvbmZfODA7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
QmdMX3NjX25iemQybnRzXzgxemQyOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX3N0
YXRlXzgyOworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzY19zdGF0ZV84MiA9IChzY19zdGF0ZXNfNjdbQmdMX3NjX3N0YXRlemQybnVtXzY4
emQyXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJudHNfODF6
ZDIgPSAoc2NfbnRzXzczLmxlbmd0aCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19jb25mXzgwID0gKHNjX3N0YXRlXzgyWygw
KV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2NfY29uZl84
MD49KDApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVwID0gKHNjX3N0ZXBz
XzcyW3NjX2NvbmZfODBdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChCZ0xfc2NfY29uZnpkMnNldF83OXpkMiA9IChzY19zdGF0ZV84Mlsoc2NfY29uZl84
MCsoMSkpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
aGVhZCA9IChCZ0xfc2NfY29uZnpkMnNldF83OXpkMlsoNCldKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19zdGF0ZV84MlsoMCldID0gKEJnTF9zY19j
b25memQyc2V0Xzc5emQyWygwKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGNvbmZfc2V0X21lcmdlX25ld19iYW5nKEJnTF9zY19jb25memQyc2V0Xzc5
emQyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgo
c3RlcD49KDApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc2NfbF83NCA9IChzY19zdGFydGVyc182OVtzdGVwXSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoc2NfbF83NCBpbnN0YW5j
ZW9mIHNjX1BhaXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzdGFydGVyID0gKHNjX2xfNzQuY2FyKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Rh
cnRlcl9zZXQgPSAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJnZXR6YTJfNDR6YTIoc2Nfc3RhdGVfODIs
IEJnTF9zY19zdGF0ZXpkMm51bV82OHpkMiwgc3RhcnRlcikpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKHN0YXJ0ZXJf
c2V0WyhCZ0xfc2Nfc3RhdGV6ZDJudW1fNjh6ZDIrKDUpKV0pPT09IGZhbHNlKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChjb25mX3NldF9hZGpvaW4oc2Nfc3RhdGVfODIsIHN0YXJ0ZXJfc2V0LCBz
dGFydGVyLCBCZ0xfc2Nfc3RhdGV6ZDJudW1fNjh6ZDIpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2xfNzQg
PSAoc2NfbF83NC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2xfNzQgPSAo
c2NfbF83NC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAobCA9IChzY19lbmRlcnNfNzBbc3RlcF0pKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGwgaW5zdGFuY2VvZiBz
Y19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoZW5kZXIgPSAobC5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKChjb25mX3NldCA9
IChzY19zdGF0ZV84MlsoZW5kZXIrKDEpKV0pKSwgKChjb25mX3NldCE9PSBmYWxzZSk/KGNvbmZf
c2V0WyhCZ0xfc2Nfc3RhdGV6ZDJudW1fNjh6ZDIrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKG5leHQgPSAoc2NfY29uZl84MCsoMSkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKG5leHRfc2V0ID0gKEJnTF9zY19jb25memQyc2V0emQyZ2V0emEyXzQ0emEyKHNjX3N0YXRl
XzgyLCBCZ0xfc2Nfc3RhdGV6ZDJudW1fNjh6ZDIsIG5leHQpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25m
X3NldF91bmlvbihzY19zdGF0ZV84MiwgbmV4dF9zZXQsIG5leHQsIEJnTF9zY19jb25memQyc2V0
Xzc5emQyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
cHJlZHMgPSAoc2NfcHJlZGljdG9yc183MVsoc3RlcCtCZ0xfc2NfbmJ6ZDJudHNfODF6ZDIpXSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
Y19zdGF0ZXNfNzggPSBzY19zdGF0ZXNfNjcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZSA9IHNjX3N0YXRlXzgyKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX3N0YXRl
emQybnVtXzc3emQyID0gQmdMX3NjX3N0YXRlemQybnVtXzY4emQyKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX2NvbmZ6ZDJzZXRf
NzZ6ZDIgPSBCZ0xfc2NfY29uZnpkMnNldF83OXpkMik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfbG9vcDFfNzUgPSBmdW5jdGlvbihsKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBzY19zdGF0ZV84MzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19uZXh0emQyc2V0Xzg0emQyOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfbmV4
dF84NTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHByZWRfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZWQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobCBpbnN0YW5jZW9mIHNj
X1BhaXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChwcmVkID0gKGwuY2FyKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSBoZWFk
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAoKGk+PSgwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHByZWRfc2V0ID0gKChzY19zdGF0ZV84MyA9IChzY19zdGF0ZXNfNzhbaV0pKSwgKHNjX3N0
YXRlXzgzWyhwcmVkKygxKSldKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcmVkX3NldCE9PSBm
YWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nf
bmV4dF84NSA9IChwcmVkKygxKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25l
eHR6ZDJzZXRfODR6ZDIgPSAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJnZXR6YTJfNDR6YTIoc3RhdGUs
IEJnTF9zY19zdGF0ZXpkMm51bV83N3pkMiwgc2NfbmV4dF84NSkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGNvbmZfc2V0X3VuaW9uKHN0YXRlLCBCZ0xfc2NfbmV4dHpkMnNldF84NHpkMiwg
c2NfbmV4dF84NSwgcHJlZF9zZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoaSA9IChCZ0xfc2NfY29uZnpkMnNldF83NnpkMlsoaSsoNSkpXSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoc2NfbG9vcDFfNzUoKGwuY2RyKSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2xvb3AxXzc1KHByZWRzKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1bmRlZmluZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIGlzX3BhcnNlZCA9IGZ1bmN0aW9u
KG50LCBpLCBqLCBzY19udHNfODYsIHNjX2VuZGVyc184Nywgc2Nfc3RhdGVzXzg4KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgY29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgc3RhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfY29uZl84OTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBsOworICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IEJnTF9zY19udHphMl85MHphMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX250emEyXzkwemEyID0gKHNjX2luZF80MyhudCwg
c2NfbnRzXzg2KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoQmdMX3NjX250
emEyXzkwemEyIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX250c184Ni5sZW5ndGgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSAoc2NfZW5kZXJzXzg3W0Jn
TF9zY19udHphMl85MHphMl0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKChsIGluc3RhbmNlb2Ygc2NfUGFpcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzY19jb25mXzg5ID0gKGwuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgoc3RhdGUgPSAoc2Nfc3RhdGVzXzg4W2pd
KSksIChjb25mX3NldCA9IChzdGF0ZVsoc2NfY29uZl84OSsoMSkpXSkpLCAoKGNvbmZfc2V0IT09
IGZhbHNlKT8oY29uZl9zZXRbKGkrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsID0gKGwu
Y2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBkZXJpdl90cmVlcyA9
IGZ1bmN0aW9uKHNjX2NvbmZfOTEsIGksIGosIHNjX2VuZGVyc185Miwgc2Nfc3RlcHNfOTMsIHNj
X25hbWVzXzk0LCBzY190b2tzXzk1LCBzY19zdGF0ZXNfOTYsIEJnTF9zY19uYnpkMm50c185N3pk
MikgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2xvb3AxXzk4OworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHByZXY7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmFt
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKG5hbWUgPSAoc2NfbmFtZXNfOTRb
c2NfY29uZl85MV0pKSwgKChuYW1lIT09IGZhbHNlKT8oKHNjX2NvbmZfOTE8QmdMX3NjX25iemQy
bnRzXzk3emQyKT8oc2NfbGlzdCgoc2NfbGlzdChuYW1lLCAoKHNjX3Rva3NfOTVbaV0pLmNhcikp
KSkpOihzY19saXN0KChzY19saXN0KG5hbWUpKSkpKTooKHByZXYgPSAoc2NfY29uZl85MS0oMSkp
KSwgKHNjX2xvb3AxXzk4ID0gZnVuY3Rpb24obDEsIGwyKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGxvb3AyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmRl
cl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBlbmRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgbDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwyOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgobDEgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoZW5kZXIgPSAobDEuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGVuZGVyX3NldCA9ICgoc3RhdGUgPSAoc2Nfc3RhdGVzXzk2W2pdKSksIChzdGF0
ZVsoZW5kZXIrKDEpKV0pKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKChlbmRlcl9zZXQhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb29wMiA9IGZ1bmN0aW9uKGssIGwyKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxvb3AzOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmRlcl90cmVlczsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
cHJldl90cmVlczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgY29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHNjX3N0YXRlXzk5OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsMjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KGs+PSgwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoKChrPj1pKSYmKCgoc2Nfc3RhdGVfOTkgPSAoc2Nfc3RhdGVzXzk2
W2tdKSksIChjb25mX3NldCA9IChzY19zdGF0ZV85OVsocHJldisoMSkpXSkpLCAoKGNvbmZfc2V0
IT09IGZhbHNlKT8oY29uZl9zZXRbKGkrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChwcmV2X3RyZWVzID0gKGRlcml2X3RyZWVzKHByZXYsIGksIGssIHNj
X2VuZGVyc185Miwgc2Nfc3RlcHNfOTMsIHNjX25hbWVzXzk0LCBzY190b2tzXzk1LCBzY19zdGF0
ZXNfOTYsIEJnTF9zY19uYnpkMm50c185N3pkMikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZGVyX3RyZWVz
ID0gKGRlcml2X3RyZWVzKGVuZGVyLCBrLCBqLCBzY19lbmRlcnNfOTIsIHNjX3N0ZXBzXzkzLCBz
Y19uYW1lc185NCwgc2NfdG9rc185NSwgc2Nfc3RhdGVzXzk2LCBCZ0xfc2NfbmJ6ZDJudHNfOTd6
ZDIpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvb3AzID0gZnVuY3Rpb24obDMsIGwyKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgbDQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfbDJfMTAwOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGVuZGVyX3RyZWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGwzIGluc3RhbmNlb2Ygc2Nf
UGFpcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5k
ZXJfdHJlZSA9IChzY19saXN0KChsMy5jYXIpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
bDQgPSBwcmV2X3RyZWVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2wyXzEwMCA9IGwy
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChsNCBpbnN0YW5jZW9mIHNjX1BhaXIp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHNjX2wyXzEwMCA9IChuZXcgc2NfUGFpcigoc2NfYXBwZW5kKChsNC5jYXIpLCBl
bmRlcl90cmVlKSksIHNjX2wyXzEwMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobDQgPSAobDQuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChsb29wMygo
bDMuY2RyKSwgc2NfbDJfMTAwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobG9vcDIoKGVuZGVyX3NldFsoayso
NSkpXSksIGwyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobG9vcDMoZW5k
ZXJfdHJlZXMsIGwyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrID0gKGVuZGVyX3Nl
dFsoaysoNSkpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHNjX2xvb3AxXzk4KChsMS5jZHIpLCBsMikp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxvb3Ay
KChlbmRlcl9zZXRbKDIpXSksIGwyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsMSA9IChs
MS5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGwyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0pLCAoc2NfbG9vcDFfOTgoKHNjX2VuZGVyc185Mlsoc2Nfc3Rl
cHNfOTNbcHJldl0pXSksIG51bGwpKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICAgICAgQmdMX3NjX2Rlcml2emQydHJlZXN6YTJfNDd6NzAgPSBmdW5jdGlvbihu
dCwgaSwgaiwgc2NfbnRzXzEwMSwgc2NfZW5kZXJzXzEwMiwgc2Nfc3RlcHNfMTAzLCBzY19uYW1l
c18xMDQsIHNjX3Rva3NfMTA1LCBzY19zdGF0ZXNfMTA2KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgY29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdGU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfY29uZl8xMDc7CisgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cmVlczsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJudHNfMTA4emQyOworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIEJnTF9zY19udHphMl8xMDl6YTI7CisgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19udHphMl8xMDl6
YTIgPSAoc2NfaW5kXzQzKG50LCBzY19udHNfMTAxKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgoQmdMX3NjX250emEyXzEwOXphMiE9PSBmYWxzZSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChCZ0xfc2NfbmJ6ZDJudHNfMTA4emQyID0gKHNjX250c18xMDEubGVuZ3RoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IChzY19lbmRlcnNfMTAyW0JnTF9zY19u
dHphMl8xMDl6YTJdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJl
ZXMgPSBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgo
bCBpbnN0YW5jZW9mIHNjX1BhaXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c2NfY29uZl8xMDcgPSAobC5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCgoKHN0YXRlID0gKHNjX3N0YXRlc18xMDZbal0pKSwgKGNvbmZfc2V0
ID0gKHN0YXRlWyhzY19jb25mXzEwNysoMSkpXSkpLCAoKGNvbmZfc2V0IT09IGZhbHNlKT8oY29u
Zl9zZXRbKGkrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzID0gKHNjX2FwcGVuZCgo
ZGVyaXZfdHJlZXMoc2NfY29uZl8xMDcsIGksIGosIHNjX2VuZGVyc18xMDIsIHNjX3N0ZXBzXzEw
Mywgc2NfbmFtZXNfMTA0LCBzY190b2tzXzEwNSwgc2Nfc3RhdGVzXzEwNiwgQmdMX3NjX25iemQy
bnRzXzEwOHpkMikpLCB0cmVlcykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGwgPSAobC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJlZXM7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgbmJf
ZGVyaXZfdHJlZXMgPSBmdW5jdGlvbihzY19jb25mXzExMCwgaSwgaiwgc2NfZW5kZXJzXzExMSwg
c2Nfc3RlcHNfMTEyLCBzY190b2tzXzExMywgc2Nfc3RhdGVzXzExNCwgQmdMX3NjX25iemQybnRz
XzExNXpkMikgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2xvb3AxXzExNjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciB0bXAxMTI0OworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHByZXY7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChwcmV2ID0gKHNj
X2NvbmZfMTEwLSgxKSkpLCAoKCgodG1wMTEyNCA9IChzY19jb25mXzExMDxCZ0xfc2NfbmJ6ZDJu
dHNfMTE1emQyKSksICgodG1wMTEyNCE9PSBmYWxzZSk/dG1wMTEyNDooKHNjX3N0ZXBzXzExMltw
cmV2XSk8KDApKSkpIT09IGZhbHNlKT8oMSk6KChzY19sb29wMV8xMTYgPSBmdW5jdGlvbihsLCBz
Y19uXzExOCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYl9lbmRlcl90cmVl
czsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmJfcHJldl90cmVlczsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29uZl9zZXQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHN0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBlbmRlcl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNj
X3N0YXRlXzExNzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW5kZXI7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHNjX25fMTE4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobCBpbnN0YW5jZW9mIHNj
X1BhaXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmRlciA9IChsLmNhcikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmRlcl9zZXQgPSAoKHNjX3N0YXRl
XzExNyA9IChzY19zdGF0ZXNfMTE0W2pdKSksIChzY19zdGF0ZV8xMTdbKGVuZGVyKygxKSldKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZW5kZXJfc2V0
IT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGsgPSAo
ZW5kZXJfc2V0WygyKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChuID0gc2Nfbl8xMTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKChrPj0oMCkpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoaz49aSkmJigoKHN0YXRlID0g
KHNjX3N0YXRlc18xMTRba10pKSwgKGNvbmZfc2V0ID0gKHN0YXRlWyhwcmV2KygxKSldKSksICgo
Y29uZl9zZXQhPT0gZmFsc2UpPyhjb25mX3NldFsoaSsoNSkpXSk6ZmFsc2UpKSE9PSBmYWxzZSkp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAobmJfcHJldl90cmVlcyA9IChuYl9kZXJpdl90cmVlcyhwcmV2LCBpLCBrLCBzY19l
bmRlcnNfMTExLCBzY19zdGVwc18xMTIsIHNjX3Rva3NfMTEzLCBzY19zdGF0ZXNfMTE0LCBCZ0xf
c2NfbmJ6ZDJudHNfMTE1emQyKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5iX2VuZGVyX3RyZWVzID0gKG5iX2Rlcml2X3Ry
ZWVzKGVuZGVyLCBrLCBqLCBzY19lbmRlcnNfMTExLCBzY19zdGVwc18xMTIsIHNjX3Rva3NfMTEz
LCBzY19zdGF0ZXNfMTE0LCBCZ0xfc2NfbmJ6ZDJudHNfMTE1emQyKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGsgPSAoZW5k
ZXJfc2V0WyhrKyg1KSldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAobiArPShuYl9wcmV2X3RyZWVzKm5iX2VuZGVyX3RyZWVz
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChrID0gKGVuZGVyX3NldFsoaysoNSkpXSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzY19sb29wMV8xMTYoKGwuY2RyKSwgbikpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2Nfbl8xMTg7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSks
IChzY19sb29wMV8xMTYoKHNjX2VuZGVyc18xMTFbKHNjX3N0ZXBzXzExMltwcmV2XSldKSwgKDAp
KSkpKSk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIEJnTF9z
Y19uYnpkMmRlcml2emQydHJlZXN6YTJfNDh6YTIgPSBmdW5jdGlvbihudCwgaSwgaiwgc2NfbnRz
XzExOSwgc2NfZW5kZXJzXzEyMCwgc2Nfc3RlcHNfMTIxLCBzY190b2tzXzEyMiwgc2Nfc3RhdGVz
XzEyMykgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHN0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNj
X2NvbmZfMTI0OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGw7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgbmJfdHJlZXM7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdM
X3NjX25iemQybnRzXzEyNXpkMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2Nf
bnR6YTJfMTI2emEyOworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChCZ0xfc2NfbnR6YTJfMTI2emEyID0gKHNjX2luZF80MyhudCwgc2NfbnRz
XzExOSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKEJnTF9zY19udHphMl8x
MjZ6YTIhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25iemQybnRzXzEyNXpkMiA9
IChzY19udHNfMTE5Lmxlbmd0aCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGwgPSAoc2NfZW5kZXJzXzEyMFtCZ0xfc2NfbnR6YTJfMTI2emEyXSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5iX3RyZWVzID0gKDApKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobCBpbnN0YW5jZW9mIHNjX1BhaXIpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfY29uZl8xMjQgPSAobC5jYXIpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoKHN0YXRl
ID0gKHNjX3N0YXRlc18xMjNbal0pKSwgKGNvbmZfc2V0ID0gKHN0YXRlWyhzY19jb25mXzEyNCso
MSkpXSkpLCAoKGNvbmZfc2V0IT09IGZhbHNlKT8oY29uZl9zZXRbKGkrKDUpKV0pOmZhbHNlKSkh
PT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKG5iX3RyZWVzID0gKChuYl9kZXJpdl90cmVlcyhzY19jb25mXzEyNCwgaSwg
aiwgc2NfZW5kZXJzXzEyMCwgc2Nfc3RlcHNfMTIxLCBzY190b2tzXzEyMiwgc2Nfc3RhdGVzXzEy
MywgQmdMX3NjX25iemQybnRzXzEyNXpkMikpK25iX3RyZWVzKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5iX3RyZWVzOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgICAgIChsZXhlciA9IChwYXJzZXJfZGVzY3JbKDApXSkpOworICAgICAgICAg
ICAgICAgICAgICAoc2NfbnRzXzQyID0gKHBhcnNlcl9kZXNjclsoMSldKSk7CisgICAgICAgICAg
ICAgICAgICAgIChzY19zdGFydGVyc180MSA9IChwYXJzZXJfZGVzY3JbKDIpXSkpOworICAgICAg
ICAgICAgICAgICAgICAoc2NfZW5kZXJzXzQwID0gKHBhcnNlcl9kZXNjclsoMyldKSk7CisgICAg
ICAgICAgICAgICAgICAgIChzY19wcmVkaWN0b3JzXzM5ID0gKHBhcnNlcl9kZXNjclsoNCldKSk7
CisgICAgICAgICAgICAgICAgICAgIChzY19zdGVwc18zOCA9IChwYXJzZXJfZGVzY3JbKDUpXSkp
OworICAgICAgICAgICAgICAgICAgICAoc2NfbmFtZXNfMzcgPSAocGFyc2VyX2Rlc2NyWyg2KV0p
KTsKKyAgICAgICAgICAgICAgICAgICAgKGZhbHNlSGVhZDExMjggPSAobmV3IHNjX1BhaXIobnVs
bCwgbnVsbCkpKTsKKyAgICAgICAgICAgICAgICAgICAgKEwxMTI1ID0gKGxleGVyKGlucHV0KSkp
OworICAgICAgICAgICAgICAgICAgICAodGFpbDExMjkgPSBmYWxzZUhlYWQxMTI4KTsKKyAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKCEoTDExMjUgPT09IG51bGwpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvayA9IChMMTEyNS5j
YXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobDEgPSAodG9rLmNkcikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChsMiA9IG51bGwpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdoaWxlICgobDEgaW5zdGFuY2VvZiBzY19QYWlyKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc2NfaV8yOSA9IChzY19pbmRfNDMoKGwxLmNhciksIHNjX250c180MikpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2NfaV8yOSE9PSBmYWxzZSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobDEgPSAobDEuY2RyKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsMiA9IChuZXcgc2NfUGFpcihzY19pXzI5
LCBsMikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGwxID0gKGwxLmNkcikpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzY19vcHRyT3BuZF8yMiA9IChuZXcgc2NfUGFpcigodG9rLmNh
ciksIChzY19yZXZlcnNlKGwyKSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNj
X29wdHJPcG5kXzIxID0gKG5ldyBzY19QYWlyKHNjX29wdHJPcG5kXzIyLCBudWxsKSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh0YWlsMTEyOS5jZHIgPSBzY19vcHRyT3BuZF8yMSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhaWwxMTI5ID0gKHRhaWwxMTI5LmNkcikp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMMTEyNSA9IChMMTEyNS5jZHIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAoc2Nfb3B0ck9wbmRfMjAgPSAoZmFsc2VIZWFkMTEyOC5jZHIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgKHNjX3Rva3NfMzYgPSAoc2NfbGlzdDJ2ZWN0b3Ioc2Nfb3B0ck9wbmRf
MjApKSk7CisgICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJ0b2tzXzM1emQyID0gKHNj
X3Rva3NfMzYubGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJjb25m
c18zNHpkMiA9IChzY19zdGVwc18zOC5sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAgKHNj
X3N0YXRlc18zMyA9IChtYWtlX3N0YXRlcyhCZ0xfc2NfbmJ6ZDJ0b2tzXzM1emQyLCBCZ0xfc2Nf
bmJ6ZDJjb25mc18zNHpkMikpKTsKKyAgICAgICAgICAgICAgICAgICAgKGdvYWxfc3RhcnRlcnMg
PSAoc2Nfc3RhcnRlcnNfNDFbKDApXSkpOworICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX2Nv
bmZ6ZDJzZXR6ZDJhZGpvaW56YTJfNDV6YTIoc2Nfc3RhdGVzXzMzLCAoMCksIGdvYWxfc3RhcnRl
cnMsICgwKSkpOworICAgICAgICAgICAgICAgICAgICAoZm9ydyhzY19zdGF0ZXNfMzMsICgwKSwg
c2Nfc3RhcnRlcnNfNDEsIHNjX2VuZGVyc180MCwgc2NfcHJlZGljdG9yc18zOSwgc2Nfc3RlcHNf
MzgsIHNjX250c180MikpOworICAgICAgICAgICAgICAgICAgICAoc2NfaV8yOCA9ICgwKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHdoaWxlICgoc2NfaV8yODxCZ0xfc2NfbmJ6ZDJ0b2tzXzM1emQy
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICh0b2tfbnRzID0gKChzY190b2tzXzM2W3NjX2lfMjhdKS5jZHIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJfNDV6YTIoc2Nf
c3RhdGVzXzMzLCAoc2NfaV8yOCsoMSkpLCB0b2tfbnRzLCBzY19pXzI4KSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGZvcncoc2Nfc3RhdGVzXzMzLCAoc2NfaV8yOCsoMSkpLCBzY19z
dGFydGVyc180MSwgc2NfZW5kZXJzXzQwLCBzY19wcmVkaWN0b3JzXzM5LCBzY19zdGVwc18zOCwg
c2NfbnRzXzQyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsrc2NfaV8yOCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgKG5iX3Rva3MgPSAoc2NfdG9rc18zNi5sZW5ndGgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgKEJnTF9zY19uYnpkMmNvbmZzXzMyemQyID0gKHNjX3N0ZXBzXzM4Lmxlbmd0aCkp
OworICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25iemQybnRzXzMxemQyID0gKHNjX250c180
Mi5sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19zdGF0ZXN6YTJfMzB6YTIg
PSAobWFrZV9zdGF0ZXMobmJfdG9rcywgQmdMX3NjX25iemQyY29uZnNfMzJ6ZDIpKSk7CisgICAg
ICAgICAgICAgICAgICAgIChnb2FsX2VuZGVycyA9IChzY19lbmRlcnNfNDBbKDApXSkpOworICAg
ICAgICAgICAgICAgICAgICAobCA9IGdvYWxfZW5kZXJzKTsKKyAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKChsIGluc3RhbmNlb2Ygc2NfUGFpcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZiA9IChsLmNhcikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfY29uZnpkMnNldHpkMmFkam9pbnphMnphMl80
NnowMChzY19zdGF0ZXNfMzMsIEJnTF9zY19zdGF0ZXN6YTJfMzB6YTIsIG5iX3Rva3MsIGNvbmYs
ICgwKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgKGkgPSBuYl90b2tzKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChpPj0o
MCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHN0YXRlcyA9IHNjX3N0YXRlc18zMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKEJnTF9zY19zdGF0ZXN6YTJfMjd6YTIgPSBCZ0xfc2Nfc3RhdGVzemEyXzMwemEyKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGVfbnVtID0gaSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHNjX2VuZGVyc18yNiA9IHNjX2VuZGVyc180MCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHNjX3N0ZXBzXzI1ID0gc2Nfc3RlcHNfMzgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfbmJ6ZDJudHNfMjR6ZDIgPSBCZ0xfc2NfbmJ6ZDJu
dHNfMzF6ZDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b2tzID0gc2NfdG9rc18z
Nik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19zdGF0ZXphMl8yM3phMiA9
IChCZ0xfc2Nfc3RhdGVzemEyXzMwemEyW2ldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbG9vcDEgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHNjX2xvb3AxXzEyNzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBy
ZXY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBCZ0xfc2Nfc3RhdGVzemEy
XzEyOHphMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX3N0YXRlc18x
Mjk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHNjX2lfMTMwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVh
ZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfY29uZl8xMzE7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzY19jb25mXzEzMSA9IChCZ0xfc2Nfc3RhdGV6YTJfMjN6YTJbKDApXSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzY19jb25mXzEzMT49KDApKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChjb25mX3NldCA9IChCZ0xfc2Nfc3RhdGV6YTJfMjN6
YTJbKHNjX2NvbmZfMTMxKygxKSldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChoZWFkID0gKGNvbmZfc2V0Wyg0KV0pKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19zdGF0ZXphMl8yM3phMlsoMCldID0g
KGNvbmZfc2V0WygwKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNvbmZfc2V0X21lcmdlX25ld19iYW5nKGNvbmZfc2V0KSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19pXzEzMCA9IGhlYWQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKHNjX2lfMTMwPj0o
MCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkg
PSBzY19pXzEzMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGogPSBzdGF0ZV9udW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzY19zdGF0ZXNfMTI5ID0gc3RhdGVzKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX3N0YXRl
c3phMl8xMjh6YTIgPSBCZ0xfc2Nfc3RhdGVzemEyXzI3emEyKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJldiA9IChzY19jb25mXzEzMS0o
MSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoKChzY19jb25mXzEzMT49QmdMX3NjX25iemQybnRzXzI0emQyKSYmKChzY19zdGVwc18y
NVtwcmV2XSk+PSgwKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzY19sb29wMV8xMjcgPSBmdW5jdGlvbihsKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGVuZGVyX3NldDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGVuZGVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBsOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgobCBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChlbmRlciA9IChsLmNhcikpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChl
bmRlcl9zZXQgPSAoKHN0YXRlID0gKHNjX3N0YXRlc18xMjlbal0pKSwgKHN0YXRlWyhlbmRlciso
MSkpXSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGVuZGVyX3NldCE9PSBmYWxzZSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrID0g
KGVuZGVyX3NldFsoMildKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGs+
PSgwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgoaz49aSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKChCZ0xfc2NfY29uZnpkMnNldHpkMmFkam9pbnphMnphMl80
NnowMChzY19zdGF0ZXNfMTI5LCBCZ0xfc2Nfc3RhdGVzemEyXzEyOHphMiwgaywgcHJldiwgaSkp
IT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
QmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJ6YTJfNDZ6MDAoc2Nfc3RhdGVzXzEyOSwgQmdM
X3NjX3N0YXRlc3phMl8xMjh6YTIsIGosIGVuZGVyLCBrKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChrID0gKGVuZGVyX3NldFsoaysoNSkpXSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoc2NfbG9vcDFfMTI3KChsLmNkcikpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGwgPSAobC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHNjX2xvb3AxXzEyNygoc2NfZW5kZXJzXzI2WyhzY19zdGVwc18yNVtwcmV2XSldKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHNjX2lfMTMwID0gKGNvbmZfc2V0WyhzY19pXzEzMCsoNSkpXSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAobG9vcDEoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmlu
ZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb29wMSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoLS1pKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAob3B0ck9wbmQg
PSBCZ0xfc2Nfc3RhdGVzemEyXzMwemEyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtz
Y19udHNfNDIsIHNjX3N0YXJ0ZXJzXzQxLCBzY19lbmRlcnNfNDAsIHNjX3ByZWRpY3RvcnNfMzks
IHNjX3N0ZXBzXzM4LCBzY19uYW1lc18zNywgc2NfdG9rc18zNiwgb3B0ck9wbmQsIGlzX3BhcnNl
ZCwgQmdMX3NjX2Rlcml2emQydHJlZXN6YTJfNDd6NzAsIEJnTF9zY19uYnpkMmRlcml2emQydHJl
ZXN6YTJfNDh6YTJdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAg
IH0KKyAgICB9OworICAgIEJnTF9wYXJzZXpkMnplM3BhcnNlZHpmM3pjMiA9IGZ1bmN0aW9uKHBh
cnNlLCBudCwgaSwgaikgeworICAgICAgICB2YXIgaXNfcGFyc2VkOworICAgICAgICB2YXIgc3Rh
dGVzOworICAgICAgICB2YXIgZW5kZXJzOworICAgICAgICB2YXIgbnRzOworICAgICAgICByZXR1
cm4gKChudHMgPSAocGFyc2VbKDApXSkpLCAoZW5kZXJzID0gKHBhcnNlWygyKV0pKSwgKHN0YXRl
cyA9IChwYXJzZVsoNyldKSksIChpc19wYXJzZWQgPSAocGFyc2VbKDgpXSkpLCAoaXNfcGFyc2Vk
KG50LCBpLCBqLCBudHMsIGVuZGVycywgc3RhdGVzKSkpOworICAgIH07CisgICAgQmdMX3BhcnNl
emQyemUzdHJlZXN6MzEgPSBmdW5jdGlvbihwYXJzZSwgbnQsIGksIGopIHsKKyAgICAgICAgdmFy
IEJnTF9zY19kZXJpdnpkMnRyZWVzemEyXzEzMno3MDsKKyAgICAgICAgdmFyIHN0YXRlczsKKyAg
ICAgICAgdmFyIHRva3M7CisgICAgICAgIHZhciBuYW1lczsKKyAgICAgICAgdmFyIHN0ZXBzOwor
ICAgICAgICB2YXIgZW5kZXJzOworICAgICAgICB2YXIgbnRzOworICAgICAgICByZXR1cm4gKChu
dHMgPSAocGFyc2VbKDApXSkpLCAoZW5kZXJzID0gKHBhcnNlWygyKV0pKSwgKHN0ZXBzID0gKHBh
cnNlWyg0KV0pKSwgKG5hbWVzID0gKHBhcnNlWyg1KV0pKSwgKHRva3MgPSAocGFyc2VbKDYpXSkp
LCAoc3RhdGVzID0gKHBhcnNlWyg3KV0pKSwgKEJnTF9zY19kZXJpdnpkMnRyZWVzemEyXzEzMno3
MCA9IChwYXJzZVsoOSldKSksIChCZ0xfc2NfZGVyaXZ6ZDJ0cmVlc3phMl8xMzJ6NzAobnQsIGks
IGosIG50cywgZW5kZXJzLCBzdGVwcywgbmFtZXMsIHRva3MsIHN0YXRlcykpKTsKKyAgICB9Owor
ICAgIEJnTF9wYXJzZXpkMnplM25iemQydHJlZXN6ZTMgPSBmdW5jdGlvbihwYXJzZSwgbnQsIGks
IGopIHsKKyAgICAgICAgdmFyIEJnTF9zY19uYnpkMmRlcml2emQydHJlZXN6YTJfMTMzemEyOwor
ICAgICAgICB2YXIgc3RhdGVzOworICAgICAgICB2YXIgdG9rczsKKyAgICAgICAgdmFyIHN0ZXBz
OworICAgICAgICB2YXIgZW5kZXJzOworICAgICAgICB2YXIgbnRzOworICAgICAgICByZXR1cm4g
KChudHMgPSAocGFyc2VbKDApXSkpLCAoZW5kZXJzID0gKHBhcnNlWygyKV0pKSwgKHN0ZXBzID0g
KHBhcnNlWyg0KV0pKSwgKHRva3MgPSAocGFyc2VbKDYpXSkpLCAoc3RhdGVzID0gKHBhcnNlWyg3
KV0pKSwgKEJnTF9zY19uYnpkMmRlcml2emQydHJlZXN6YTJfMTMzemEyID0gKHBhcnNlWygxMCld
KSksIChCZ0xfc2NfbmJ6ZDJkZXJpdnpkMnRyZWVzemEyXzEzM3phMihudCwgaSwgaiwgbnRzLCBl
bmRlcnMsIHN0ZXBzLCB0b2tzLCBzdGF0ZXMpKSk7CisgICAgfTsKKyAgICB0ZXN0ID0gZnVuY3Rp
b24oaykgeworICAgICAgICB2YXIgeDsKKyAgICAgICAgdmFyIHA7CisgICAgICAgIHJldHVybiAo
KHAgPSAoQmdMX21ha2V6ZDJwYXJzZXJ6ZDIoY29uc3RfZWFybGV5LCBmdW5jdGlvbihsKSB7Cisg
ICAgICAgICAgICB2YXIgc2NfeF8xMzQ7CisgICAgICAgICAgICB2YXIgdGFpbDExMzQ7CisgICAg
ICAgICAgICB2YXIgTDExMzA7CisgICAgICAgICAgICB2YXIgZmFsc2VIZWFkMTEzMzsKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAoZmFsc2VIZWFkMTEzMyA9IChuZXcgc2NfUGFpcihu
dWxsLCBudWxsKSkpOworICAgICAgICAgICAgICAgICh0YWlsMTEzNCA9IGZhbHNlSGVhZDExMzMp
OworICAgICAgICAgICAgICAgIChMMTEzMCA9IGwpOworICAgICAgICAgICAgICAgIHdoaWxlICgh
KEwxMTMwID09PSBudWxsKSkgeworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAodGFpbDExMzQuY2RyID0gKG5ldyBzY19QYWlyKCgoc2NfeF8xMzQgPSAoTDEx
MzAuY2FyKSksIChzY19saXN0KHNjX3hfMTM0LCBzY194XzEzNCkpKSwgbnVsbCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICh0YWlsMTEzNCA9ICh0YWlsMTEzNC5jZHIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIChMMTEzMCA9IChMMTEzMC5jZHIpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gKGZhbHNlSGVh
ZDExMzMuY2RyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkpKSwgKHggPSAocCgoc2NfdmVj
dG9yMmxpc3QoKHNjX21ha2VWZWN0b3IoaywgIlx1MUU5Q2EiKSkpKSkpKSwgKHNjX2xlbmd0aCgo
QmdMX3BhcnNlemQyemUzdHJlZXN6MzEoeCwgIlx1MUU5Q3MiLCAoMCksIGspKSkpKTsKKyAgICB9
OworICAgIEJnTF9lYXJsZXl6ZDJiZW5jaG1hcmt6ZDIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
dmFyIGFyZ3MgPSBudWxsOworICAgICAgICBmb3IgKHZhciBzY190bXAgPSBhcmd1bWVudHMubGVu
Z3RoIC0gMTsgc2NfdG1wID49IDA7IHNjX3RtcC0tKSB7CisgICAgICAgICAgICBhcmdzID0gc2Nf
Y29ucyhhcmd1bWVudHNbc2NfdG1wXSwgYXJncyk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIGs7
CisgICAgICAgIHJldHVybiAoKGsgPSAoKGFyZ3MgPT09IG51bGwpPyg3KTooYXJncy5jYXIpKSks
IChCZ0xfcnVuemQyYmVuY2htYXJremQyKCJlYXJsZXkiLCAoMSksIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgcmV0dXJuICh0ZXN0KGspKTsKKyAgICAgICAgfSwgZnVuY3Rpb24ocmVzdWx0KSB7
CisgICAgICAgICAgICByZXR1cm4gKChzY19kaXNwbGF5KHJlc3VsdCkpLCAoc2NfbmV3bGluZSgp
KSwgcmVzdWx0ID09IDEzMik7CisgICAgICAgIH0pKSk7CisgICAgfTsKK30KKworCisvKioqKioq
KioqKioqKiBFTkQgT0YgR0VORVJBVEVEIENPREUgKioqKioqKioqKioqKi8KKy8vIEludm9rZSB0
aGlzIGZ1bmN0aW9uIHRvIHJ1biBhIGJlbmNobWFyay4KKy8vIFRoZSBmaXJzdCBhcmd1bWVudCBp
cyBhIHN0cmluZyBpZGVudGlmeWluZyB0aGUgYmVuY2htYXJrLgorLy8gVGhlIHNlY29uZCBhcmd1
bWVudCBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJ1biB0aGUgYmVuY2htYXJrLgorLy8gVGhl
IHRoaXJkIGFyZ3VtZW50IGlzIGEgZnVuY3Rpb24gdGhhdCBydW5zIHRoZSBiZW5jaG1hcmsuCisv
LyBUaGUgZm91cnRoIGFyZ3VtZW50IGlzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCB3YXJucyBpZiB0
aGUgcmVzdWx0CisvLyByZXR1cm5lZCBieSB0aGUgYmVuY2htYXJrIGlzIGluY29ycmVjdC4KKy8v
CisvLyBFeGFtcGxlOgorLy8gUnVuQmVuY2htYXJrKCJuZXcgQXJyYXkoKSIsCisvLyAgICAgICAg
ICAgICAgMSwKKy8vICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IG5ldyBBcnJheSgxMDAwMDAw
KTsgfQorLy8gICAgICAgICAgICAgIGZ1bmN0aW9uICh2KSB7CisvLyAgICAgICAgICAgICAgICBy
ZXR1cm4gKHYgaW5zdGFuY2VvZiBBcnJheSkgJiYgKHYubGVuZ3RoID09IDEwMDAwMDApOworLy8g
ICAgICAgICAgICAgIH0pOworCitTQ19ERUZBVUxUX09VVCA9IG5ldyBzY19HZW5lcmljT3V0cHV0
UG9ydChmdW5jdGlvbihzKSB7fSk7CitTQ19FUlJPUl9PVVQgPSBTQ19ERUZBVUxUX09VVDsKKwor
ZnVuY3Rpb24gUnVuQmVuY2htYXJrKG5hbWUsIGNvdW50LCBydW4sIHdhcm4pIHsKKyAgZm9yICh2
YXIgbiA9IDA7IG4gPCBjb3VudDsgKytuKSB7CisgICAgcmVzdWx0ID0gcnVuKCk7CisgICAgaWYg
KCF3YXJuKHJlc3VsdCkpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcigiRWFybGV5IG9yIEJveWVy
IGRpZCBpbmNvcnJlY3QgbnVtYmVyIG9mIHJld3JpdGVzIik7CisgICAgfQorICB9Cit9CisKK3Zh
ciBCZ0xfcnVuemQyYmVuY2htYXJremQyID0gUnVuQmVuY2htYXJrOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDQ7ICsraSkgeworICBCZ0xfZWFybGV5emQyYmVuY2htYXJremQyKCk7CisgIEJnTF9u
Ym95ZXJ6ZDJiZW5jaG1hcmt6ZDIoKTsKK30KKworfSBjYXRjaCAoZSkgeworICAgIHByaW50KCJK
U0MgRVhDRVBUSU9OIEZVWlo6IENhdWdodCBleGNlcHRpb246ICIgKyBlKTsKK30KKwpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTcxMTMwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTQtMDctMTUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAg
ICBOZWVkIGFiaWxpdHkgdG8gZnV6eiBleGNlcHRpb24gdGhyb3dpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDk0NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkcyBhIG5ldyBzY3Jp
cHQsIGpzLWV4Y2VwdGlvbi1mdXp6LCB3aGljaCB3aWxsIHJ1biBzb21lIGpzYyBjb21tYW5kLWxp
bmUgdXNpbmcKKyAgICAgICAgZXhjZXB0aW9uIGZ1enppbmcuIFRoaXMgbWVhbnMgdGhhdCB3ZSB3
aWxsIGZvcmNlIGV4Y2VwdGlvbnMgdG8gYmUgdGhyb3duIGluIHJhbmRvbQorICAgICAgICBwbGFj
ZXMgdG8gc2VlIGhvdyB0aGUgZW5naW5lIHJlYWN0cy4gVGhpcyBpcyBub3cgaW50ZWdyYXRlZCB3
aXRoIHRoZSB2YXJpb3VzIHRlc3QKKyAgICAgICAgZHJpdmVycywgc28gcnVuLWphdmFzY3JpcHRj
b3JlLXRlc3RzIHdpbGwgcnVuIHNvbWUgZXhjZXB0aW9uIGZ1enppbmcgdGVzdHMgYnkKKyAgICAg
ICAgZGVmYXVsdC4KKworICAgICAgICAqIFNjcmlwdHMvanNjLXN0cmVzcy10ZXN0LWhlbHBlcnMv
anMtZXhjZXB0aW9uLWZ1eno6IEFkZGVkLgorICAgICAgICAoZmFpbCk6CisgICAgICAgICogU2Ny
aXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHM6CisgICAgICAgICogU2NyaXB0cy9ydW4tanNj
LXN0cmVzcy10ZXN0czoKKwogMjAxNC0wNy0xNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgY2hlY2std2Via2l0LXN0eWxlIHNob3VsZCBhcHBseSBDKysgcnVs
ZXMgdG8gT2JqZWN0aXZlLUMrKyBmaWxlcwpJbmRleDogVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNj
cmlwdGNvcmUtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlw
dGNvcmUtdGVzdHMJKHJldmlzaW9uIDE3MTEwNikKKysrIFRvb2xzL1NjcmlwdHMvcnVuLWphdmFz
Y3JpcHRjb3JlLXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNiArMjM3LDcgQEAgaWYgKCRy
dW5KU0NTdHJlc3MpIHsKICAgICAgICAgIi91c3IvYmluL2VudiIsICJydWJ5IiwgIlRvb2xzL1Nj
cmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMiLAogICAgICAgICAiLWoiLCBqc2NQYXRoKCRwcm9k
dWN0RGlyKSwgIi1vIiwgJGpzY1N0cmVzc1Jlc3VsdHNEaXIsCiAgICAgICAgICJQZXJmb3JtYW5j
ZVRlc3RzL1N1blNwaWRlci90ZXN0cy9zdW5zcGlkZXItMS4wIiwKKyAgICAgICAgIlNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9leGNlcHRpb24tZnV6ei55YW1sIiwKICAgICAgICAgIlBlcmZv
cm1hbmNlVGVzdHMvU3VuU3BpZGVyL25vLWFyY2hpdGVjdHVyZS1zcGVjaWZpYy1vcHRpbWl6YXRp
b25zLnlhbWwiLAogICAgICAgICAiUGVyZm9ybWFuY2VUZXN0cy9TdW5TcGlkZXIvdGVzdHMvdjgt
djYiLAogICAgICAgICAiU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vemlsbGEvbW96aWxs
YS10ZXN0cy55YW1sIiwKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkocmV2aXNp
b24gMTcxMTA2KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkod29ya2lu
ZyBjb3B5KQpAQCAtNzMzLDYgKzczMywxMCBAQCBkZWYgcnVuUHJvZmlsZXIKICAgICBlbmQKIGVu
ZAogCitkZWYgcnVuRXhjZXB0aW9uRnV6egorICAgIGFkZFJ1bkNvbW1hbmQoImV4Y2VwdGlvbi1m
dXp6IiwgWyJwZXJsIiwgKEhFTFBFUlNfUEFUSCArICJqcy1leGNlcHRpb24tZnV6eiIpLnRvX3Ms
IHBhdGhUb1ZNLnRvX3MsICRiZW5jaG1hcmsudG9fc10sIHNpbGVudE91dHB1dEhhbmRsZXIsIHNp
bXBsZUVycm9ySGFuZGxlcikKK2VuZAorCiBkZWYgcnVuTGF5b3V0VGVzdChraW5kLCAqb3B0aW9u
cykKICAgICByYWlzZSB1bmxlc3MgJGJlbmNobWFyay50b19zID1+IC9cLmpzJC8KICAgICB0ZXN0
TmFtZSA9ICR+LnByZV9tYXRjaApJbmRleDogVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3Qt
aGVscGVycy9qcy1leGNlcHRpb24tZnV6ego9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2pz
Yy1zdHJlc3MtdGVzdC1oZWxwZXJzL2pzLWV4Y2VwdGlvbi1mdXp6CShyZXZpc2lvbiAwKQorKysg
VG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9qcy1leGNlcHRpb24tZnV6egko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzNSBAQAorIyEvdXNyL2Jpbi9wZXJsCisKKyMgQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4gCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4g
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCit1c2Ugc3RyaWN0OwordXNlIEZpbmRCaW47Cit1
c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgcGFzc190aHJvdWdoKTsKK3VzZSBQT1NJWDsKK3Vz
ZSBTdHJpbmc6OlNoZWxsUXVvdGU7CisKKyMgV2UgZmlyc3Qgd2FudCB0byBydW4gdGhlIHRlc3Qg
b25jZSB0byBkZXRlcm1pbmUgd2hhdCB0aGUgbnVtYmVyIG9mIGVuY291bnRlcmVkCisjIGNoZWNr
cyBpcy4gVGhlbiB3ZSB3YW50IHRvIHJ1biBpdCBhZ2FpbiBzb21lIG51bWJlciBvZiB0aW1lcyB3
aXRoIHJhbmRvbSBjaGVjaworIyBhbW91bnRzLiBUaGUgdGVzdCBpcyBzdWNjZXNzZnVsIGlmIGFm
dGVyIHByaW50aW5nIGEgbWVzc2FnZSB0aGF0IHdlJ3JlCisjIGludGVuZGluZyB0byB0aHJvdyB0
aGUgZnV6eiBleGNlcHRpb24sIGl0IHByaW50cyBhbm90aGVyIG1lc3NhZ2Ugc2F5aW5nIHRoYXQg
aXQKKyMgY2F1Z2h0IHRoZSBleGNlcHRpb24uCisKK215ICRyZXBlYXQgPSAxMDA7CitteSAkc2Vl
ZCA9IHRpbWUoKTsKK215ICR2ZXJib3NlID0gMDsKKworIyBXZSBhbGxvdyBmbGFncyB0byBiZSBw
YXNzZWQgdmlhIGVudmlyb25tZW50IHZhcmlhYmxlcywgd2hpY2ggaXMgcmF0aGVyIHVzZWZ1bCBm
b3IKKyMgcnVubmluZyB3aXRoIHRoZSBydW4tanNjLXN0cmVzcy10ZXN0cyBoYXJuZXNzLgoraWYg
KGRlZmluZWQoJEVOVntKU19FRlVaWl9SRVBFQVR9KSkgeworICAgICRyZXBlYXQgPSAkRU5We0pT
X0VGVVpaX1JFUEVBVH07Cit9CitpZiAoZGVmaW5lZCgkRU5We0pTX0VGVVpaX1NFRUR9KSkgewor
ICAgICRzZWVkID0gJEVOVntKU19FRlVaWl9TRUVEfTsKK30KK2lmIChkZWZpbmVkKCRFTlZ7SlNf
RUZVWlpfVkVSQk9TRX0pKSB7CisgICAgJHZlcmJvc2UgPSAkRU5We0pTX0VGVVpaX1ZFUkJPU0V9
OworfQorCitHZXRPcHRpb25zKAorICAgICdyZXBlYXQ9cycgPT4gXCRyZXBlYXQsCisgICAgJ3Nl
ZWQ9cycgPT4gXCRzZWVkLAorICAgICd2ZXJib3NlJyA9PiBcJHZlcmJvc2UKKyk7CisKK215ICRj
b21tYW5kU3RyaW5nID0gc2hlbGxfcXVvdGUgQEFSR1Y7CisKK215ICRjaGVja0NvdW50OworCitz
dWIgZmFpbCB7CisgICAgbXkgJGNvbnRleHQgPSBzaGlmdDsKKyAgICBmbHVzaCBTVERPVVQ7Cisg
ICAgZmx1c2ggU1RERVJSOworICAgIGRpZSAiRmFpbHVyZSBmb3IgY29tbWFuZCAkY29tbWFuZFN0
cmluZyB3aXRoIHNlZWQgJHNlZWQsIHJlcGVhdCAkcmVwZWF0OiAkY29udGV4dCI7Cit9CisKK29w
ZW4gKG15ICR0ZXN0SW5wdXQsICIkY29tbWFuZFN0cmluZyAtLWVuYWJsZUV4Y2VwdGlvbkZ1eno9
dHJ1ZSB8Iikgb3IgZmFpbCgiQ2Fubm90IGV4ZWN1dGUgaW5pdGlhbCBjb21tYW5kIHdoZW4gZ2V0
dGluZyBjaGVjayBjb3VudCIpOword2hpbGUgKG15ICRpbnB1dExpbmUgPSA8JHRlc3RJbnB1dD4p
IHsKKyAgICBjaG9tcCgkaW5wdXRMaW5lKTsKKyAgICBpZiAoJGlucHV0TGluZSA9fiAvXkpTQyBF
WENFUFRJT04gRlVaWjovKSB7CisgICAgICAgIGlmICgkJyA9fiAvZW5jb3VudGVyZWQgKFswLTld
KykgY2hlY2tzXC4vKSB7CisgICAgICAgICAgICAkY2hlY2tDb3VudCA9ICQxOworICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHJpbnQgImNoZWNrQ291bnQ6ICRpbnB1dExpbmVcbiI7
CisgICAgfQorfQorY2xvc2UoJHRlc3RJbnB1dCk7CisKK2lmICgkdmVyYm9zZSkgeworICAgIHBy
aW50ICJDaGVjayBjb3VudDogJGNoZWNrQ291bnRcbiI7CisgICAgcHJpbnQgIlNlZWQ6ICRzZWVk
XG4iOworfQorCitzcmFuZCgkc2VlZCk7CisKK2ZvciAobXkgJGl0ZXJhdGlvbiA9IDA7ICRpdGVy
YXRpb24gPCAkcmVwZWF0OyArKyRpdGVyYXRpb24pIHsKKyAgICBteSAkdGFyZ2V0ID0gaW50KHJh
bmQoKSAqICRjaGVja0NvdW50KTsKKyAgICBpZiAoJHZlcmJvc2UpIHsKKyAgICAgICAgcHJpbnQg
Iml0ZXJhdGlvbigkaXRlcmF0aW9uKSB0YXJnZXQoJHRhcmdldCk6IFJ1bm5pbmcuXG4iOworICAg
IH0KKyAgICBvcGVuICgkdGVzdElucHV0LCAiJGNvbW1hbmRTdHJpbmcgLS1lbmFibGVFeGNlcHRp
b25GdXp6PXRydWUgLS1maXJlRXhjZXB0aW9uRnV6ekF0PSR0YXJnZXQgfCIpIG9yIGZhaWwoIkNh
bm5vdCBleGVjdXRlIGNvbW1hbmQgb24gaXRlcmF0aW9uICRpdGVyYXRpb24iKTsKKyAgICBteSAk
c3RhdGUgPSAid2FpdGluZyI7CisgICAgd2hpbGUgKG15ICRpbnB1dExpbmUgPSA8JHRlc3RJbnB1
dD4pIHsKKyAgICAgICAgY2hvbXAoJGlucHV0TGluZSk7CisgICAgICAgIGlmICgkaW5wdXRMaW5l
ID1+IC9eSlNDIEVYQ0VQVElPTiBGVVpaOi8pIHsKKyAgICAgICAgICAgIGlmICgkJyA9fiAvVGhy
b3dpbmcgZnV6eiBleGNlcHRpb24vKSB7CisgICAgICAgICAgICAgICAgaWYgKCR2ZXJib3NlKSB7
CisgICAgICAgICAgICAgICAgICAgIHByaW50ICJpdGVyYXRpb24oJGl0ZXJhdGlvbikgdGFyZ2V0
KCR0YXJnZXQpOiBUaHJldyBmdXp6IGV4Y2VwdGlvbi5cbiI7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmICgkc3RhdGUgZXEgIndhaXRpbmciKSB7CisgICAgICAgICAgICAg
ICAgICAgICRzdGF0ZSA9ICJ0aHJvd24iOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIGZhaWwoIlVuZXhwZWN0ZWQgJGlucHV0TGluZSB3aGlsZSBpbiBzdGF0
ZSAkc3RhdGUgZm9yIHRhcmdldCAkdGFyZ2V0Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSBlbHNpZiAoJCcgPX4gL0NhdWdodCBleGNlcHRpb24vKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCR2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50ICJpdGVyYXRpb24o
JGl0ZXJhdGlvbikgdGFyZ2V0KCR0YXJnZXQpOiBDYXVnaHQgZnV6eiBleGNlcHRpb24uXG4iOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoJHN0YXRlIGVxICJ0aHJvd24i
KSB7CisgICAgICAgICAgICAgICAgICAgICRzdGF0ZSA9ICJ3YWl0aW5nIjsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmYWlsKCJVbmV4cGVjdGVkICRpbnB1
dExpbmUgd2hpbGUgaW4gc3RhdGUgJHN0YXRlIGZvciB0YXJnZXQgJHRhcmdldCIpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHByaW50ICJpdGVyYXRpb24oJGl0ZXJhdGlvbikgdGFyZ2V0KCR0YXJnZXQpOiAkaW5wdXRMaW5l
XG4iOworICAgICAgICB9CisgICAgfQorICAgIGlmICgkc3RhdGUgbmUgIndhaXRpbmciKSB7Cisg
ICAgICAgIGZhaWwoIlVuZXhwZWN0ZWQgc3RhdGUgJHN0YXRlIGF0IGVuZCBmb3IgdGFyZ2V0ICR0
YXJnZXQiKTsKKyAgICB9CisgICAgY2xvc2UoJHRlc3RJbnB1dCk7CisgICAgaWYgKCQ/ICE9IDAp
IHsKKyAgICAgICAgZmFpbCgiVW5leHBlY3RlZCBleGl0IHN0YXR1cyAkPyBmb3IgdGFyZ2V0ICR0
YXJnZXQiKTsKKyAgICB9Cit9CisKK2lmICgkdmVyYm9zZSkgeworICAgIHByaW50ICJTdWNjZXNz
IVxuIjsKK30K
</data>
<flag name="review"
          id="259505"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>