<?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>122575</bug_id>
          
          <creation_ts>2013-10-09 14:35:44 -0700</creation_ts>
          <short_desc>Further improve ArrayIterator performance</short_desc>
          <delta_ts>2013-10-10 16:14:34 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>nrotem</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>938080</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-09 14:35:44 -0700</bug_when>
    <thetext>Further improve ArrayIterator performance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938081</commentid>
    <comment_count>1</comment_count>
      <attachid>213817</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-09 14:39:45 -0700</bug_when>
    <thetext>Created attachment 213817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938095</commentid>
    <comment_count>2</comment_count>
      <attachid>213821</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-09 15:16:54 -0700</bug_when>
    <thetext>Created attachment 213821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938163</commentid>
    <comment_count>3</comment_count>
    <who name="Nadav Rotem">nrotem</who>
    <bug_when>2013-10-09 18:06:17 -0700</bug_when>
    <thetext>You added whitespace in  Source/JavaScriptCore/runtime/JSGlobalObject.cpp

Can you please document arrayIteratorNextThunkGenerator(VM* vm)  ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938533</commentid>
    <comment_count>4</comment_count>
      <attachid>213926</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-10 13:55:11 -0700</bug_when>
    <thetext>Created attachment 213926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938539</commentid>
    <comment_count>5</comment_count>
      <attachid>213926</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-10 14:15:40 -0700</bug_when>
    <thetext>Comment on attachment 213926
Patch

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

&gt; Source/JavaScriptCore/jit/SpecializedThunkJIT.h:47
&gt; +            if (expectedArgCount &gt;= 0) {
&gt; +                // Check that we have the expected number of arguments
&gt; +                m_failures.append(branch32(NotEqual, payloadFor(JSStack::ArgumentCount), TrustedImm32(expectedArgCount + 1)));
&gt; +            }

Is there a better way we could indicate that we shouldn&apos;t do an arg count check than just passing -1? Maybe an enum with a default value set to emit the check?

&gt; Source/JavaScriptCore/jit/SpecializedThunkJIT.h:68
&gt; +        void loadSpecificClassArgument(const ClassInfo* classInfo, int argument, RegisterID dst, RegisterID scratch)

Name is sort of confusing. loadArgumentWithClassCheck?

&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:1018
&gt; +    // Return the termination signal to indicate that we&apos;ve finished

Move comment down one line, or change to indicate we&apos;re doing a check and then possibly returning.

&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:1027
&gt; +    Jump notKey = jit.branch32(SpecializedThunkJIT::NotEqual, Address(SpecializedThunkJIT::regT4, JSArrayIterator::offsetOfIterationKind()), TrustedImm32(ArrayIterateKey));

Are we sure the cmp/branch here is the right size? Should it be a branch8 instead? I guess alignment will save us in this case, but I thought I&apos;d just make sure.

&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:1048
&gt; +    Jump hole = jit.branchTest64(SpecializedThunkJIT::NonZero, SpecializedThunkJIT::regT0);

Isn&apos;t this case &quot;notHole&quot;?

&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:1055
&gt; +    Jump hole = jit.branch32(SpecializedThunkJIT::NotEqual, SpecializedThunkJIT::regT3, TrustedImm32(JSValue::EmptyValueTag));

Ditto.

&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:1083
&gt; +    jit.appendFailure(jit.branch32(SpecializedThunkJIT::NotEqual, SpecializedThunkJIT::regT3, TrustedImm32(DoubleShape)));
&gt; +
&gt; +    jit.loadPtr(Address(SpecializedThunkJIT::regT0, JSObject::butterflyOffset()), SpecializedThunkJIT::regT2);
&gt; +
&gt; +    jit.loadDouble(BaseIndex(SpecializedThunkJIT::regT2, SpecializedThunkJIT::regT1, SpecializedThunkJIT::TimesEight), SpecializedThunkJIT::fpRegT0);
&gt; +    
&gt; +    jit.add32(TrustedImm32(1), Address(SpecializedThunkJIT::regT4, JSArrayIterator::offsetOfNextIndex()));
&gt; +    
&gt; +    jit.returnDouble(SpecializedThunkJIT::fpRegT0);

Why are there newlines between each of these lines?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:316
&gt; -
&gt; +    

Revert.

&gt; LayoutTests/js/script-tests/array-iterators.js:77
&gt; +

It would be nice to test each of the different paths in the JIT code (i.e. int32s, doubles, undecided/values). I think I see int32s and values here already. Are we sure that these tests run long enough to get into the baseline JIT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938559</commentid>
    <comment_count>6</comment_count>
      <attachid>213930</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-10 14:56:44 -0700</bug_when>
    <thetext>Created attachment 213930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938593</commentid>
    <comment_count>7</comment_count>
      <attachid>213930</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-10 16:06:25 -0700</bug_when>
    <thetext>Comment on attachment 213930
Patch

r=me with changes we discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938595</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-10 16:14:34 -0700</bug_when>
    <thetext>Committed r157267: &lt;http://trac.webkit.org/changeset/157267&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213817</attachid>
            <date>2013-10-09 14:39:45 -0700</date>
            <delta_ts>2013-10-09 15:16:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122575-20131009143945.patch</filename>
            <type>text/plain</type>
            <size>18455</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzcyYjVjZjg0YzQyMmU4NmVlNzVmYzZkNTcxMDA0ZTIzYzMwOTg0Li4wYTQ4MjZjNmZhNGQzNjNm
MThhMTQ2N2NmZWRiNzQ3YjRlMWEyNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxMy0xMC0wOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEZ1cnRoZXIgaW1wcm92ZSBBcnJheUl0ZXJhdG9yIHBlcmZvcm1hbmNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI1NzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gYXNzZW1i
bHkgdGh1bmsgZm9yIEFycmF5SXRlcmF0b3IuQEBuZXh0IHNvIHRoYXQgd2UKKyAgICAgICAgY2Fu
IGF2b2lkIG1hcnNoYWxsaW5nIGNvc3RzIHdoZW4gaXRlcmF0aW5nIGFycmF5cy4KKworICAgICAg
ICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVk
VGh1bmtKSVQ6OlNwZWNpYWxpemVkVGh1bmtKSVQpOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXpl
ZFRodW5rSklUOjpsb2FkU3BlY2lmaWNDbGFzc0FyZ3VtZW50KToKKyAgICAgICAgKiBqaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlJdGVyYXRvck5leHRUaHVua0dl
bmVyYXRvcik6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5SXRl
cmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludHJp
bnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OkpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZJdGVyYXRpb25LaW5kKToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZkl0ZXJhdGVkT2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6Om9mZnNldE9mUGF5bG9hZCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmVP
ZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjp0aHVua0dl
bmVyYXRvckZvckludHJpbnNpYyk6CisKIDIwMTMtMTAtMDkgIEp1bGllbiBCcmlhbmNlYXUgIDxq
YnJpYW5jZUBjaXNjby5jb20+CiAKICAgICAgICAgW2FybV0gSW52ZXJ0ZWQgc3JjIGFuZCBkZXN0
IEZQIHJlZ2lzdGVycyBpbiBERkcgc3BlY3VsYXRpdmUgSklUIHdoZW4gdXNpbmcgaGFyZGZwLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAppbmRl
eCBlZjE1ZGMwNzc4ZWRmYTc5YmQwZjhkN2Y1ZTAxNzE1NjgzMDE1ZjkyLi4zNTAwYjFkZmM2NWUx
MjhhNGMyOGExNTg0MTY5NTA1NTEwNDk3NDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCisjaW5jbHVkZSAi
SlNTdGFjay5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC00MCw4ICs0MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3BlY2lhbGl6ZWRUaHVu
a0pJVChWTSogdm0sIGludCBleHBlY3RlZEFyZ0NvdW50KQogICAgICAgICAgICAgOiBKU0ludGVy
ZmFjZUpJVCh2bSkKICAgICAgICAgewotICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBoYXZl
IHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgICAgICAgICBtX2ZhaWx1cmVz
LmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENv
dW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworICAgICAgICAgICAg
aWYgKGV4cGVjdGVkQXJnQ291bnQgPj0gMCkgeworICAgICAgICAgICAgICAgIC8vIENoZWNrIHRo
YXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cworICAgICAgICAgICAg
ICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBwYXlsb2FkRm9yKEpTU3Rh
Y2s6OkFyZ3VtZW50Q291bnQpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgbG9hZERv
dWJsZUFyZ3VtZW50KGludCBhcmd1bWVudCwgRlBSZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBz
Y3JhdGNoKQpAQCAtNjIsNiArNjUsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBt
X2ZhaWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZHN0LCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cih2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHZvaWQgbG9hZFNwZWNpZmljQ2xh
c3NBcmd1bWVudChjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgaW50IGFyZ3VtZW50LCBSZWdp
c3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQorICAgICAgICB7CisgICAgICAgICAgICBs
b2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50LCBkc3QpOworICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGRzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gpOworICAgICAgICAg
ICAgYXBwZW5kRmFpbHVyZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgU3Ry
dWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwor
ICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2b2lkIGxvYWRJbnQzMkFyZ3VtZW50KGludCBh
cmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QsIEp1bXAmIGZhaWxUYXJnZXQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHVuc2lnbmVkIHNyYyA9IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoYXJndW1l
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmlu
ZGV4IGVkMTk5OWRhYTVkZmVhZDMzNzJkZDVkMzg3MzQ1MDNlYmFmMzEyNjguLjhmNzlkYzU3YmZk
NGNlYjZiZjVkYTE0MmM2NDFiMzg1NjhkZTY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0Fy
cmF5LmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFjay5o
IgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTcGVjaWFsaXplZFRodW5rSklU
LmgiCkBAIC05ODYsNiArOTg4LDExNCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5r
R2VuZXJhdG9yKFZNKiB2bSkKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+
Y3RpTmF0aXZlQ2FsbCh2bSksICJpbXVsIik7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBh
cnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAgICB0eXBlZGVmIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OlRydXN0ZWRJbW0zMiBUcnVzdGVkSW1tMzI7CisgICAgdHlwZWRl
ZiBTcGVjaWFsaXplZFRodW5rSklUOjpUcnVzdGVkSW1tUHRyIFRydXN0ZWRJbW1QdHI7CisgICAg
dHlwZWRlZiBTcGVjaWFsaXplZFRodW5rSklUOjpBZGRyZXNzIEFkZHJlc3M7CisgICAgdHlwZWRl
ZiBTcGVjaWFsaXplZFRodW5rSklUOjpCYXNlSW5kZXggQmFzZUluZGV4OworICAgIHR5cGVkZWYg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcCBKdW1wOworICAgIAorICAgIFNwZWNpYWxpemVkVGh1
bmtKSVQgaml0KHZtLCAtMSk7CisgICAgaml0LmxvYWRTcGVjaWZpY0NsYXNzQXJndW1lbnQoSlNB
cnJheUl0ZXJhdG9yOjppbmZvKCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OlRoaXNBcmd1bWVudCwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsK
KyAgICBpbnQgY291bnQgPSAwOworICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5icmFuY2gzMihT
cGVjaWFsaXplZFRodW5rSklUOjpBYm92ZU9yRXF1YWwsIEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDQsIEpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZJdGVyYXRpb25LaW5kKCkpLCBU
cnVzdGVkSW1tMzIoQXJyYXlJdGVyYXRlS2V5VmFsdWUpKSk7CisgICAgCisgICAgaml0LmxvYWRQ
dHIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpv
ZmZzZXRPZkl0ZXJhdGVkT2JqZWN0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7Cisg
ICAgCisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwg
SlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDEpOworICAgIAorICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMik7CisgICAgCisgICAgaml0LmxvYWQ4KEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUMyk7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDIpOworICAgIAorICAgIGppdC5hbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhp
bmdTaGFwZU1hc2spLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMyk7CisgICAgCisgICAgSnVt
cCBub3REb25lID0gaml0LmJyYW5jaDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OkJlbG93LCBTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMSwgQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CisgICAgaml0Lm1vdmUoVHJ1
c3RlZEltbVB0cih2bS0+aXRlcmF0aW9uVGVybWluYXRvci5nZXQoKSksIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBqaXQucmV0dXJuSlNDZWxsKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBub3REb25lLmxpbmsoJmppdCk7CisgICAgCisgICAg
CisgICAgSnVtcCBub3RLZXkgPSBqaXQuYnJhbmNoMzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6Tm90
RXF1YWwsIEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJdGVyYXRv
cjo6b2Zmc2V0T2ZJdGVyYXRpb25LaW5kKCkpLCBUcnVzdGVkSW1tMzIoQXJyYXlJdGVyYXRlS2V5
KSk7CisgICAgCisgICAgaml0LmFkZFB0cihUcnVzdGVkSW1tMzIoMSksIEFkZHJlc3MoU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgo
KSkpOworICAgIAorICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MSk7CisgICAgCisgICAgbm90S2V5LmxpbmsoJmppdCk7CisgICAgCisgICAgYXV0byB1bmRlY2lk
ZWRTdG9yYWdlID0gaml0LmJyYW5jaDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OkVxdWFsLCBTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMywgVHJ1c3RlZEltbTMyKFVuZGVjaWRlZFNoYXBlKSk7Cisg
ICAgCisgICAgYXV0byBub3RDb250aWd1b3VzU3RvcmFnZSA9IGppdC5icmFuY2gzMihTcGVjaWFs
aXplZFRodW5rSklUOjpOb3RFcXVhbCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMsIFRydXN0
ZWRJbW0zMihDb250aWd1b3VzU2hhcGUpKTsKKyAgICAKKyAgICB1bmRlY2lkZWRTdG9yYWdlLmxp
bmsoJmppdCk7CisgICAgCisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDIpOworICAgIAorICAgIGppdC5sb2FkNjQoQmFzZUluZGV4KFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6VGltZXNFaWdodCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICAK
KyAgICBKdW1wIGhvbGUgPSBqaXQuYnJhbmNoVGVzdDY0KFNwZWNpYWxpemVkVGh1bmtKSVQ6Ok5v
blplcm8sIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBqaXQubW92ZShK
U0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTY0KFZhbHVlVW5kZWZpbmVkKSwgSlNJbnRlcmZhY2VK
SVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBob2xlLmxpbmsoJmppdCk7CisgICAgaml0LmFkZFB0cihU
cnVzdGVkSW1tMzIoMSksIEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpTQXJy
YXlJdGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgoKSkpOworICAgIAorICAgIGppdC5yZXR1cm5K
U1ZhbHVlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBub3RDb250aWd1
b3VzU3RvcmFnZS5saW5rKCZqaXQpOworICAgIAorICAgIGF1dG8gbm90SW50MzJTdG9yYWdlID0g
aml0LmJyYW5jaDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6Ok5vdEVxdWFsLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMywgVHJ1c3RlZEltbTMyKEludDMyU2hhcGUpKTsKKyAgICAKKyAgICBqaXQu
eG9yUHRyKFRydXN0ZWRJbW0zMihjb3VudCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsK
KyAgICBqaXQueG9yUHRyKFRydXN0ZWRJbW0zMihjb3VudCsrKSwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDMpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QyKTsKKyAgICAKKyAgICBqaXQueG9yUHRyKFRydXN0ZWRJbW0zMihjb3VudCksIFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsKKyAgICBqaXQueG9yUHRyKFRydXN0ZWRJbW0zMihjb3Vu
dCsrKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOworICAgIGppdC5sb2FkMzIoQmFzZUlu
ZGV4KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6VGltZXNFaWdodCwgSlNWYWx1ZTo6b2Zmc2V0T2ZQYXls
b2FkKCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisgICAgCisgICAgaml0LnhvclB0
cihUcnVzdGVkSW1tMzIoY291bnQpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMyk7CisgICAg
aml0LnhvclB0cihUcnVzdGVkSW1tMzIoY291bnQrKyksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QzKTsKKyAgICBqaXQuYWRkUHRyKFRydXN0ZWRJbW0zMigxKSwgQWRkcmVzcyhTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCgpKSk7
CisgICAgCisgICAgaml0LnhvclB0cihUcnVzdGVkSW1tMzIoY291bnQpLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMyk7CisgICAgaml0LnhvclB0cihUcnVzdGVkSW1tMzIoY291bnQrKyksIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsKKyAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDApOworICAgIAorICAgIGppdC54b3JQdHIoVHJ1c3RlZEltbTMyKGNv
dW50KSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOworICAgIGppdC54b3JQdHIoVHJ1c3Rl
ZEltbTMyKGNvdW50KyspLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMyk7CisgICAgbm90SW50
MzJTdG9yYWdlLmxpbmsoJmppdCk7CisgICAgCisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJy
YW5jaDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6Ok5vdEVxdWFsLCBTcGVjaWFsaXplZFRodW5rSklU
OjpyZWdUMywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSkpOworICAgIAorICAgIGppdC54b3JQ
dHIoVHJ1c3RlZEltbTMyKGNvdW50KSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOworICAg
IGppdC54b3JQdHIoVHJ1c3RlZEltbTMyKGNvdW50KyspLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMyk7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDIpOworICAgIAorICAgIGppdC54b3JQdHIoVHJ1c3RlZEltbTMyKGNvdW50KSwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDMpOworICAgIGppdC54b3JQdHIoVHJ1c3RlZEltbTMyKGNvdW50Kysp
LCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMyk7CisgICAgaml0LmxvYWREb3VibGUoQmFzZUlu
ZGV4KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6VGltZXNFaWdodCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OmZwUmVnVDApOworICAgIAorICAgIGppdC54b3JQdHIoVHJ1c3RlZEltbTMyKGNvdW50KSwgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOworICAgIGppdC54b3JQdHIoVHJ1c3RlZEltbTMyKGNv
dW50KyspLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMyk7CisgICAgaml0LmFkZFB0cihUcnVz
dGVkSW1tMzIoMSksIEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJ
dGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgoKSkpOworICAgIAorICAgIGppdC54b3JQdHIoVHJ1
c3RlZEltbTMyKGNvdW50KSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOworICAgIGppdC54
b3JQdHIoVHJ1c3RlZEltbTMyKGNvdW50KyspLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMyk7
CisgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKKyAg
ICAKKyAgICBqaXQueG9yUHRyKFRydXN0ZWRJbW0zMihjb3VudCksIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QzKTsKKyAgICBqaXQueG9yUHRyKFRydXN0ZWRJbW0zMihjb3VudCsrKSwgU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDMpOworICAgIAorICAgIAorICAgIHJldHVybiBqaXQuZmluYWxp
emUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgImFycmF5LWl0ZXJhdG9yLW5leHQi
KTsKK30KKyAgICAKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAppbmRleCA2YzdhMjc4YmMwN2RhYzlkMjdlNDZh
NTdkZDRiNTQxMDkwNjY3ZWQ2Li42OWRhMzlkNzNmMmU3MDdiNDBlZTY4N2FjNjdlM2MwM2U1YmM0
NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKQEAg
LTU4LDYgKzU4LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJvdW5kVGh1bmtHZW5lcmF0b3Io
Vk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBwb3dUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGltdWxUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGFycmF5SXRlcmF0b3JOZXh0VGh1bmtHZW5lcmF0b3IoVk0qKTsKIAogfQogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUl0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDgzMDNmZjAzNWFkM2MzYjEzN2Q5M2E4ZWRh
MDhhODI5OTI4ZjE3YTEuLjA4NzFkYTYzOGNjZTU0MzE1MDNmOTAyZDBmYTk1YzRiZTE1NjllM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRl
cmF0b3JQcm90b3R5cGUuY3BwCkBAIC00NSw3ICs0NSw4IEBAIHZvaWQgQXJyYXlJdGVyYXRvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnByb3RvdHlwZU1hcC5h
ZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yTmV4dFByaXZhdGVOYW1lLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4
dCwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yTmV4dFByaXZhdGVOYW1lLCBhcnJheUl0ZXJhdG9yUHJvdG90
eXBlTmV4dCwgRG9udEVudW0sIDAsIEFycmF5SXRlcmF0b3JOZXh0SW50cmluc2ljKTsKKwogICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFt
ZSwgYXJyYXlJdGVyYXRvclByb3RvdHlwZUl0ZXJhdGUsIERvbnRFbnVtLCAwKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRleCAzMTM4MjZlZGJmZjNm
NmM5N2E2NjIzMzdkODYyNTVkMGIxNTA3YmU5Li5mYjIzZTBiYWM4ZGNiNjAwMjhmNjkzOWQxYTlj
M2NkNDhhNGE4YjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMu
aApAQCAtNDgsNyArNDgsOCBAQCBlbnVtIEludHJpbnNpYyB7CiAgICAgUmVnRXhwRXhlY0ludHJp
bnNpYywKICAgICBSZWdFeHBUZXN0SW50cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVZhbHVl
T2ZJbnRyaW5zaWMsCi0gICAgSU11bEludHJpbnNpYworICAgIElNdWxJbnRyaW5zaWMsCisgICAg
QXJyYXlJdGVyYXRvck5leHRJbnRyaW5zaWMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAppbmRleCBi
YTg1NjQ2ZTg3NGUwMjU0NWQzNGU4YjI4MjRlMGQ4YjY4MWZmMTBjLi5lMDFhMjkwZjM3MzM2NzJj
MGNhODc1NWRiMWRhMWQ4N2U4ODY3Y2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApAQCAtNjYsNiArNjYsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBmaW5pc2goKSB7IG1fbmV4dEluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKTsgfQogICAgIAogICAgIHVzaW5nIEpTTm9uRmluYWxPYmplY3Q6OmFycmF5U3RvcmFn
ZU9yTnVsbDsKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSXRlcmF0aW9uS2luZCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0FycmF5SXRlcmF0b3IsIG1faXRlcmF0aW9uS2luZCk7
IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSXRlcmF0ZWRPYmplY3QoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNBcnJheUl0ZXJhdG9yLCBtX2l0ZXJhdGVkT2JqZWN0KTsgfQor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOZXh0SW5kZXgoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSlNBcnJheUl0ZXJhdG9yLCBtX25leHRJbmRleCk7IH0KIAogcHJpdmF0ZToKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGI2MmI5YzU3
YjY3NDZmOTFlZDA3ZGFlMTMyNzE1MTE5ZDU3NzVmZDUuLjdkOTU0MmRhN2U0MDY0YjI1ZDUzYmRj
YTM5NGQxMTlkOWMyZDdlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKQEAgLTI3OCw2ICsyNzgsOCBAQCBwdWJsaWM6CiAgICAgLy8gY29udmVydGVkIHRv
IEludDUycyBhbmQgYmFjayBhZ2Fpbi4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVy
T2ZJbnQ1MkJpdHMgPSA1MjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50NTJTaGlmdEFt
b3VudCA9IDEyOworICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQYXlsb2FkKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpOyB9CiAK
IHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUoV3JpdGVCYXJyaWVyQmFz
ZTxUPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggMTkyNDQ2MDE1NGQ3MjAyMjA2NDQ2NmJlNTk4YThjZThmODZiNjNhZS4uZGNl
NjQyZTExZDU3MDJjYTA1YjY2MTdlY2MyYzk2MmU5Y2QxNDdlMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzEzLDcgKzMxMyw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIG1f
cHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9taXNlQ2FsbGJhY2s6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwog
ICAgIG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUHJv
bWlzZVdyYXBwZXJDYWxsYmFjazo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSk7CiAjZW5kaWYgLy8gRU5BQkxFKFBST01JU0VTKQotCisgICAgCiAj
ZGVmaW5lIENSRUFURV9QUk9UT1RZUEVfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dl
ck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiAgICAgbV8gIyMgbG93
ZXJOYW1lICMjIFByb3RvdHlwZS5zZXQodm0sIHRoaXMsIGNhcGl0YWxOYW1lIyNQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgdGhpcywgY2FwaXRhbE5hbWUjI1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsgXAogICAgIG1fICMjIHByb3Bl
ck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUuZ2V0KCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGE2
NWI5ZjUyOWY5YzEzMzI5NDE3NmNkMzQ3MThhMTE4NzA2ZmRhNGUuLmY5MjdiOTRmN2UzMmI4YTM5
MjRmYzRhMjMxZjRmYzdiNWYwNGU2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDA2LDYgKzQwNiw3IEBAIHB1YmxpYzoKICAgICBT
dHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogaXRl
cmF0b3JSZXN1bHRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUmVzdWx0U3Ry
dWN0dXJlLmdldCgpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBpdGVyYXRvclJlc3VsdFN0cnVj
dHVyZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9p
dGVyYXRvclJlc3VsdFN0cnVjdHVyZSk7IH0KIAogI2lmIEVOQUJMRShQUk9NSVNFUykKICAgICBT
dHJ1Y3R1cmUqIHByb21pc2VTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VTdHJ1
Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBkYTRi
NzU1NmZhMDUyYjU4NDY3YTZiNDc4OWJhMTgxYmVlYTUxNGRkLi4zZWM3MWQyZDAwZmY3ZGVhMTUy
YWVhYjllYzI0MzI2YzVmZmNkYzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CkBAIC00MjAsNiArNDIwLDggQEAgc3RhdGljIFRodW5rR2VuZXJhdG9yIHRodW5rR2VuZXJhdG9y
Rm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiBsb2dUaHVu
a0dlbmVyYXRvcjsKICAgICBjYXNlIElNdWxJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiBpbXVs
VGh1bmtHZW5lcmF0b3I7CisgICAgY2FzZSBBcnJheUl0ZXJhdG9yTmV4dEludHJpbnNpYzoKKyAg
ICAgICAgcmV0dXJuIGFycmF5SXRlcmF0b3JOZXh0VGh1bmtHZW5lcmF0b3I7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQwMWQwOGFhZTEzYjEzNGZiMjQ1
NTkzZjNhYTE2M2Q1MTVjNDNkODEuLmNkN2JjYjI2ZWFjZDAzY2YzNDk1ZGQ5YmJmZTFhMmYxY2Yx
YTI5OTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0xMC0wOSAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZ1cnRoZXIgaW1wcm92ZSBBcnJheUl0ZXJhdG9y
IHBlcmZvcm1hbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjI1NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBmZXcgbmV3IHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGUgbmV3IGFzbSB0aHVuayBj
b3JyZWN0bHkKKyAgICAgICAgaGFuZGxlcyBub24tYXJyYXlzLgorCisgICAgICAgICoganMvYXJy
YXktaXRlcmF0b3JzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJy
YXktaXRlcmF0b3JzLmpzOgorCiAyMDEzLTEwLTA5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFj
aEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFZvaWNlT3ZlciBkb3VibGUgc3BlYWtzIGFsbCBp
dGVtcyBpbiA8bGk+IG5vZGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1pdGVy
YXRvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyYXktaXRlcmF0b3JzLWV4cGVj
dGVkLnR4dAppbmRleCA1MWQ3NWFhZTVjMGFkZDcxOGZkZmZkOTE4MDdiZjg1ZTI5NjVjMGNmLi44
ZWY2NTk0NGMwNDdjOWYwYTcwNzZkMWJkNjBlNGI5MjcxMWY5ZmI3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9qcy9hcnJheS1pdGVyYXRvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2pzL2FycmF5LWl0ZXJhdG9ycy1leHBlY3RlZC50eHQKQEAgLTU1LDYgKzU1LDI2IEBAIFBBU1Mg
a2V5IGlzIGkKIFBBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KIFBBU1Mga2V5IGlzIGkKIFBB
U1MgdGVzdEFycmF5Lmxlbmd0aCBpcyA5CitQQVNTIGkgaXMgMAorUEFTUyB2YWx1ZSBpcyBvW2tl
eV0KK1BBU1Mga2V5IGlzIDAKK1BBU1MgdmFsdWUgaXMgMQorUEFTUyB2YWx1ZSBpcyBvW2tleV0K
K1BBU1Mga2V5IGlzIDEKK1BBU1MgdmFsdWUgaXMgMgorUEFTUyB2YWx1ZSBpcyBvW2tleV0KK1BB
U1Mga2V5IGlzIDIKK1BBU1MgdmFsdWUgaXMgMworUEFTUyB2YWx1ZSBpcyBvW2tleV0KK1BBU1Mg
a2V5IGlzIDMKK1BBU1MgdmFsdWUgaXMgNAorUEFTUyB2YWx1ZSBpcyBvW2tleV0KK1BBU1Mga2V5
IGlzIDQKK1BBU1MgdmFsdWUgaXMgNQorUEFTUyB2YWx1ZSBpcyBvW2tleV0KK1BBU1Mga2V5IGlz
IDUKK1BBU1MgdmFsdWUgaXMgNgorUEFTUyBvLmxlbmd0aCBpcyA2CiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJheS1pdGVyYXRvcnMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyYXktaXRlcmF0b3JzLmpzCmluZGV4IGE0Nzc0MjdjZDY0N2ZiYTMyMTBmYmFk
Njc2MmU4ZTQwZjZjYTc2Y2EuLmQ5M2NjZGU0YzgxMWMxOTgzZjBkMTM3MjEwYWZmZjVlZTY1MDYw
NzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJheS1pdGVyYXRv
cnMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2FycmF5LWl0ZXJhdG9ycy5q
cwpAQCAtNTAsMyArNTAsMjggQEAgZm9yICh2YXIgW2tleSwgdmFsdWVdIG9mIGVudHJpZXMpIHsK
IH0KIHNob3VsZEJlKCJ0ZXN0QXJyYXkubGVuZ3RoIiwgU3RyaW5nKGkpKQogCit2YXIgbyA9IHt9
OworZm9yICh2YXIgaSA9MDsgaSA8IDY7IGkrKykKKyAgICBvW2ldPWkrMQorCisKK3ZhciBlbnRy
aWVzID0gQXJyYXkucHJvdG90eXBlLmVudHJpZXMuY2FsbChvKTsKK3ZhciBpID0gMDsKK2ZvciAo
dmFyIFtrZXksIHZhbHVlXSBvZiBlbnRyaWVzKSB7CisgICAgZmFpbCgpOworfQorc2hvdWxkQmUo
ImkiLCAiMCIpCisKK28ubGVuZ3RoPTY7CisKK3ZhciBlbnRyaWVzID0gQXJyYXkucHJvdG90eXBl
LmVudHJpZXMuY2FsbChvKTsKK3ZhciBpID0gMDsKK2ZvciAodmFyIFtrZXksIHZhbHVlXSBvZiBl
bnRyaWVzKSB7CisgICAgc2hvdWxkQmUoInZhbHVlIiwgIm9ba2V5XSIpCisgICAgc2hvdWxkQmUo
ImtleSIsIFN0cmluZyhpKSkKKyAgICBpKysKKyAgICBzaG91bGRCZSgidmFsdWUiLCBTdHJpbmco
aSkpCit9CitzaG91bGRCZSgiby5sZW5ndGgiLCBTdHJpbmcoaSkpCisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213821</attachid>
            <date>2013-10-09 15:16:54 -0700</date>
            <delta_ts>2013-10-10 13:55:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122575-20131009151653.patch</filename>
            <type>text/plain</type>
            <size>19424</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzcyYjVjZjg0YzQyMmU4NmVlNzVmYzZkNTcxMDA0ZTIzYzMwOTg0Li4wYTQ4MjZjNmZhNGQzNjNm
MThhMTQ2N2NmZWRiNzQ3YjRlMWEyNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxMy0xMC0wOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEZ1cnRoZXIgaW1wcm92ZSBBcnJheUl0ZXJhdG9yIHBlcmZvcm1hbmNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI1NzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gYXNzZW1i
bHkgdGh1bmsgZm9yIEFycmF5SXRlcmF0b3IuQEBuZXh0IHNvIHRoYXQgd2UKKyAgICAgICAgY2Fu
IGF2b2lkIG1hcnNoYWxsaW5nIGNvc3RzIHdoZW4gaXRlcmF0aW5nIGFycmF5cy4KKworICAgICAg
ICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVk
VGh1bmtKSVQ6OlNwZWNpYWxpemVkVGh1bmtKSVQpOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXpl
ZFRodW5rSklUOjpsb2FkU3BlY2lmaWNDbGFzc0FyZ3VtZW50KToKKyAgICAgICAgKiBqaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlJdGVyYXRvck5leHRUaHVua0dl
bmVyYXRvcik6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5SXRl
cmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludHJp
bnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OkpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZJdGVyYXRpb25LaW5kKToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZkl0ZXJhdGVkT2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6Om9mZnNldE9mUGF5bG9hZCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmVP
ZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjp0aHVua0dl
bmVyYXRvckZvckludHJpbnNpYyk6CisKIDIwMTMtMTAtMDkgIEp1bGllbiBCcmlhbmNlYXUgIDxq
YnJpYW5jZUBjaXNjby5jb20+CiAKICAgICAgICAgW2FybV0gSW52ZXJ0ZWQgc3JjIGFuZCBkZXN0
IEZQIHJlZ2lzdGVycyBpbiBERkcgc3BlY3VsYXRpdmUgSklUIHdoZW4gdXNpbmcgaGFyZGZwLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAppbmRl
eCBlZjE1ZGMwNzc4ZWRmYTc5YmQwZjhkN2Y1ZTAxNzE1NjgzMDE1ZjkyLi43ZTYyZWFkMGM2M2Q1
Zjk2MmVjNjBiMmRlZjhhMzVhMzg1MmIxOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCisjaW5jbHVkZSAi
SlNTdGFjay5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC00MCw4ICs0MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3BlY2lhbGl6ZWRUaHVu
a0pJVChWTSogdm0sIGludCBleHBlY3RlZEFyZ0NvdW50KQogICAgICAgICAgICAgOiBKU0ludGVy
ZmFjZUpJVCh2bSkKICAgICAgICAgewotICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBoYXZl
IHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgICAgICAgICBtX2ZhaWx1cmVz
LmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENv
dW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworICAgICAgICAgICAg
aWYgKGV4cGVjdGVkQXJnQ291bnQgPj0gMCkgeworICAgICAgICAgICAgICAgIC8vIENoZWNrIHRo
YXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cworICAgICAgICAgICAg
ICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBwYXlsb2FkRm9yKEpTU3Rh
Y2s6OkFyZ3VtZW50Q291bnQpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgbG9hZERv
dWJsZUFyZ3VtZW50KGludCBhcmd1bWVudCwgRlBSZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBz
Y3JhdGNoKQpAQCAtNjIsNiArNjUsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBt
X2ZhaWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZHN0LCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cih2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHZvaWQgbG9hZFNwZWNpZmljQ2xh
c3NBcmd1bWVudChjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgaW50IGFyZ3VtZW50LCBSZWdp
c3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQorICAgICAgICB7CisgICAgICAgICAgICBs
b2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50LCBkc3QpOworICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKGRzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gpOworICAgICAgICAg
ICAgYXBwZW5kRmFpbHVyZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgU3Ry
dWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwor
ICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2b2lkIGxvYWRJbnQzMkFyZ3VtZW50KGludCBh
cmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QsIEp1bXAmIGZhaWxUYXJnZXQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHVuc2lnbmVkIHNyYyA9IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoYXJndW1l
bnQpOwpAQCAtNzksNyArODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAg
ICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoZmFpbHVyZSk7CiAgICAgICAgIH0KLQorI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgICAgIHZvaWQgcmV0dXJuSlNWYWx1ZShSZWdpc3RlcklEIHNyYykKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKHNyYyAhPSByZWdUMCkKQEAgLTg3LDYgKzk3LDE1IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbG9hZFB0cihwYXlsb2FkRm9yKEpTU3RhY2s6
OkNhbGxlckZyYW1lLCBjYWxsRnJhbWVSZWdpc3RlciksIGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAg
ICAgICAgICAgIHJldCgpOwogICAgICAgICB9CisjZWxzZQorICAgICAgICB2b2lkIHJldHVybkpT
VmFsdWUoUmVnaXN0ZXJJRCBwYXlsb2FkLCBSZWdpc3RlcklEIHRhZykKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChwYXlsb2FkLCBwYXlsb2FkID09IHJlZ1QwKTsKKyAgICAg
ICAgICAgIEFTU0VSVF9VTlVTRUQodGFnLCB0YWcgPT0gcmVnVDEpOworICAgICAgICAgICAgbG9h
ZFB0cihwYXlsb2FkRm9yKEpTU3RhY2s6OkNhbGxlckZyYW1lLCBjYWxsRnJhbWVSZWdpc3Rlciks
IGNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHJldCgpOworICAgICAgICB9CisjZW5k
aWYKICAgICAgICAgCiAgICAgICAgIHZvaWQgcmV0dXJuRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMp
CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3Jz
LmNwcAppbmRleCBlZDE5OTlkYWE1ZGZlYWQzMzcyZGQ1ZDM4NzM0NTAzZWJhZjMxMjY4Li4yNTZj
ZmY4NzYzMmEyNjcxNGUzOGUxNjM4MzliZjE1ZDJlMzY3YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCisjaW5jbHVk
ZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpT
U3RhY2suaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU3BlY2lhbGl6ZWRU
aHVua0pJVC5oIgpAQCAtOTg2LDYgKzk4OCw5NCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11
bFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJpbXVsIik7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBhcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAgICB0eXBl
ZGVmIFNwZWNpYWxpemVkVGh1bmtKSVQ6OlRydXN0ZWRJbW0zMiBUcnVzdGVkSW1tMzI7CisgICAg
dHlwZWRlZiBTcGVjaWFsaXplZFRodW5rSklUOjpUcnVzdGVkSW1tUHRyIFRydXN0ZWRJbW1QdHI7
CisgICAgdHlwZWRlZiBTcGVjaWFsaXplZFRodW5rSklUOjpBZGRyZXNzIEFkZHJlc3M7CisgICAg
dHlwZWRlZiBTcGVjaWFsaXplZFRodW5rSklUOjpCYXNlSW5kZXggQmFzZUluZGV4OworICAgIHR5
cGVkZWYgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcCBKdW1wOworICAgIAorICAgIFNwZWNpYWxp
emVkVGh1bmtKSVQgaml0KHZtLCAtMSk7CisgICAgaml0LmxvYWRTcGVjaWZpY0NsYXNzQXJndW1l
bnQoSlNBcnJheUl0ZXJhdG9yOjppbmZvKCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OlRoaXNBcmd1
bWVudCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QxKTsKKworICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5icmFuY2gzMihTcGVjaWFsaXplZFRo
dW5rSklUOjpBYm92ZU9yRXF1YWwsIEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQs
IEpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZJdGVyYXRpb25LaW5kKCkpLCBUcnVzdGVkSW1tMzIo
QXJyYXlJdGVyYXRlS2V5VmFsdWUpKSk7CisgICAgCisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZkl0ZXJh
dGVkT2JqZWN0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisgICAgCisgICAgaml0
LmxvYWQzMihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Q0LCBKU0FycmF5SXRlcmF0
b3I6Om9mZnNldE9mTmV4dEluZGV4KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSk7Cisg
ICAgCisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsK
KyAgICAKKyAgICBqaXQubG9hZDgoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwg
U3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QzKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qw
LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
Mik7CisgICAgCisgICAgaml0LmFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayks
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsKKyAgICAKKyAgICBKdW1wIG5vdERvbmUgPSBq
aXQuYnJhbmNoMzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6QmVsb3csIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QxLCBBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBCdXR0ZXJmbHk6
Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKKyAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKHZt
LT5pdGVyYXRpb25UZXJtaW5hdG9yLmdldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAp
OworICAgIAorICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAp
OworICAgIAorICAgIG5vdERvbmUubGluaygmaml0KTsKKyAgICAKKyAgICAKKyAgICBKdW1wIG5v
dEtleSA9IGppdC5icmFuY2gzMihTcGVjaWFsaXplZFRodW5rSklUOjpOb3RFcXVhbCwgQWRkcmVz
cyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZkl0
ZXJhdGlvbktpbmQoKSksIFRydXN0ZWRJbW0zMihBcnJheUl0ZXJhdGVLZXkpKTsKKyAgICAKKyAg
ICBqaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1Q0LCBKU0FycmF5SXRlcmF0b3I6Om9mZnNldE9mTmV4dEluZGV4KCkpKTsKKyAgICAKKyAg
ICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOworICAgIAorICAg
IG5vdEtleS5saW5rKCZqaXQpOworICAgIAorICAgIEp1bXAgdW5kZWNpZGVkU3RvcmFnZSA9IGpp
dC5icmFuY2gzMihTcGVjaWFsaXplZFRodW5rSklUOjpFcXVhbCwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDMsIFRydXN0ZWRJbW0zMihVbmRlY2lkZWRTaGFwZSkpOworICAgIEp1bXAgbm90Q29u
dGlndW91c1N0b3JhZ2UgPSBqaXQuYnJhbmNoMzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6Tm90RXF1
YWwsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzLCBUcnVzdGVkSW1tMzIoQ29udGlndW91c1No
YXBlKSk7CisgICAgCisgICAgdW5kZWNpZGVkU3RvcmFnZS5saW5rKCZqaXQpOworICAgIAorICAg
IGppdC5sb2FkUHRyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIEpTT2JqZWN0
OjpidXR0ZXJmbHlPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKKyAgICAK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGppdC5sb2FkNjQoQmFzZUluZGV4KFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6VGltZXNFaWdodCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICBK
dW1wIGhvbGUgPSBqaXQuYnJhbmNoVGVzdDY0KFNwZWNpYWxpemVkVGh1bmtKSVQ6Ok5vblplcm8s
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJ
VDo6VHJ1c3RlZEltbTY0KFZhbHVlVW5kZWZpbmVkKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsK
KyAgICBob2xlLmxpbmsoJmppdCk7CisgICAgaml0LmFkZFB0cihUcnVzdGVkSW1tMzIoMSksIEFk
ZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0
T2ZOZXh0SW5kZXgoKSkpOworICAgIGppdC5yZXR1cm5KU1ZhbHVlKFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QwKTsKKyNlbHNlCisgICAgaml0LmxvYWQzMihCYXNlSW5kZXgoU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDIsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpUaW1lc0VpZ2h0LCBKU1ZhbHVlOjpvZmZzZXRPZlRhZygpKSwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDMpOworICAgIEp1bXAgaG9sZSA9IGppdC5icmFuY2gzMihTcGVjaWFsaXpl
ZFRodW5rSklUOjpOb3RFcXVhbCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VK
SVQ6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCBKU0ludGVyZmFjZUpJVDo6
cmVnVDEpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoMCksIEpT
SW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWRk
cmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRP
Zk5leHRJbmRleCgpKSk7CisgICAgaml0LnJldHVybkpTVmFsdWUoU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDAsIEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7CisgICAgaG9sZS5saW5rKCZqaXQpOwor
ICAgIGppdC5sb2FkMzIoQmFzZUluZGV4KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6VGltZXNFaWdodCwg
SlNWYWx1ZTo6b2Zmc2V0T2ZQYXlsb2FkKCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7
CisgICAgaml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWRkcmVzcyhTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCgpKSk7CisgICAg
aml0Lm1vdmUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMsIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QxKTsKKyAgICBqaXQucmV0dXJuSlNWYWx1ZShTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOworI2VuZGlmCisgICAgbm90Q29udGlndW91
c1N0b3JhZ2UubGluaygmaml0KTsKKyAgICAKKyAgICBKdW1wIG5vdEludDMyU3RvcmFnZSA9IGpp
dC5icmFuY2gzMihTcGVjaWFsaXplZFRodW5rSklUOjpOb3RFcXVhbCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDMsIFRydXN0ZWRJbW0zMihJbnQzMlNoYXBlKSk7CisgICAgaml0LmxvYWRQdHIo
QWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9m
ZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIpOworICAgIGppdC5sb2FkMzIoQmFz
ZUluZGV4KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6VGltZXNFaWdodCwgSlNWYWx1ZTo6b2Zmc2V0T2ZQ
YXlsb2FkKCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisgICAgaml0LmFkZDMyKFRy
dXN0ZWRJbW0zMigxKSwgQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJh
eUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCgpKSk7CisgICAgaml0LnJldHVybkludDMyKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICBub3RJbnQzMlN0b3JhZ2UubGluaygmaml0
KTsKKyAgICAKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoMzIoU3BlY2lhbGl6ZWRU
aHVua0pJVDo6Tm90RXF1YWwsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzLCBUcnVzdGVkSW1t
MzIoRG91YmxlU2hhcGUpKSk7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDIpOworCisgICAgaml0LmxvYWREb3VibGUoQmFzZUluZGV4KFNwZWNpYWxp
emVkVGh1bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6VGltZXNFaWdodCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwor
ICAgIAorICAgIGppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIEFkZHJlc3MoU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgoKSkpOwor
ICAgIAorICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7
CisgICAgCisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNh
bGwodm0pLCAiYXJyYXktaXRlcmF0b3ItbmV4dCIpOworfQorICAgIAogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5o
CmluZGV4IDZjN2EyNzhiYzA3ZGFjOWQyN2U0NmE1N2RkNGI1NDEwOTA2NjdlZDYuLjY5ZGEzOWQ3
M2YyZTcwN2I0MGVlNjg3YWM2N2UzYzAzZTViYzQ2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaApAQCAtNTgsNiArNTgsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHNxcnRUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHBvd1RodW5r
R2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5rR2VuZXJhdG9y
KFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJyYXlJdGVyYXRvck5leHRUaHVua0dlbmVy
YXRvcihWTSopOwogCiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5k
ZXggODMwM2ZmMDM1YWQzYzNiMTM3ZDkzYThlZGEwOGE4Mjk5MjhmMTdhMS4uMDg3MWRhNjM4Y2Nl
NTQzMTUwM2Y5MDJkMGZhOTVjNGJlMTU2OWUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTQ1LDcg
KzQ1LDggQEAgdm9pZCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5m
bygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKIAotICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJpdmF0ZU5h
bWUsIGFycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0LCBEb250RW51bSwgMCk7CisgICAgSlNDX05B
VElWRV9JTlRSSU5TSUNfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJp
dmF0ZU5hbWUsIGFycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0LCBEb250RW51bSwgMCwgQXJyYXlJ
dGVyYXRvck5leHRJbnRyaW5zaWMpOworCiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlSXRl
cmF0ZSwgRG9udEVudW0sIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dHJpbnNpYy5oCmluZGV4IDMxMzgyNmVkYmZmM2Y2Yzk3YTY2MjMzN2Q4NjI1NWQwYjE1MDdiZTku
LmZiMjNlMGJhYzhkY2I2MDAyOGY2OTM5ZDFhOWMzY2Q0OGE0YThiMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC00OCw3ICs0OCw4IEBAIGVudW0gSW50
cmluc2ljIHsKICAgICBSZWdFeHBFeGVjSW50cmluc2ljLAogICAgIFJlZ0V4cFRlc3RJbnRyaW5z
aWMsCiAgICAgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYywKLSAgICBJTXVsSW50cmlu
c2ljCisgICAgSU11bEludHJpbnNpYywKKyAgICBBcnJheUl0ZXJhdG9yTmV4dEludHJpbnNpYwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlJdGVyYXRvci5oCmluZGV4IGJhODU2NDZlODc0ZTAyNTQ1ZDM0ZThiMjgyNGUw
ZDhiNjgxZmYxMGMuLmZmMjVhZDc1ODFjNTQ4ZGU5MDNmOWRiMjBmNmRjYmU0NDQwZjQxODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCkBA
IC02Myw5ICs2MywxMiBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9pdGVyYXRlZE9iamVjdC5nZXQoKTsgfQogICAgIHNpemVfdCBuZXh0
SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX25leHRJbmRleDsgfQogICAgIHZvaWQgc2V0TmV4dElu
ZGV4KHNpemVfdCBuZXh0SW5kZXgpIHsgbV9uZXh0SW5kZXggPSBuZXh0SW5kZXg7IH0KLSAgICB2
b2lkIGZpbmlzaCgpIHsgbV9uZXh0SW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpOyB9CisgICAgdm9pZCBmaW5pc2goKSB7IG1fbmV4dEluZGV4ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50MzJfdD46Om1heCgpOyB9CiAgICAgCiAgICAgdXNpbmcgSlNOb25GaW5hbE9i
amVjdDo6YXJyYXlTdG9yYWdlT3JOdWxsOworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJ
dGVyYXRpb25LaW5kKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQXJyYXlJdGVyYXRvciwg
bV9pdGVyYXRpb25LaW5kKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJdGVyYXRl
ZE9iamVjdCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0FycmF5SXRlcmF0b3IsIG1faXRl
cmF0ZWRPYmplY3QpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk5leHRJbmRleCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0FycmF5SXRlcmF0b3IsIG1fbmV4dEluZGV4KTsg
fQogCiBwcml2YXRlOgogCkBAIC04Miw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQXJy
YXlJdGVyYXRpb25LaW5kIG1faXRlcmF0aW9uS2luZDsKICAgICBXcml0ZUJhcnJpZXI8SlNPYmpl
Y3Q+IG1faXRlcmF0ZWRPYmplY3Q7Ci0gICAgc2l6ZV90IG1fbmV4dEluZGV4OworICAgIHVpbnQz
Ml90IG1fbmV4dEluZGV4OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCmluZGV4IGI2MmI5YzU3YjY3NDZmOTFlZDA3ZGFlMTMyNzE1MTE5ZDU3NzVm
ZDUuLjg1YWMzMmJkZGZmZGE2ZjU1NThhODBjZTFjMGRiYmE2ZTFkNTIzYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTI3OCw2ICsyNzgsOSBAQCBw
dWJsaWM6CiAgICAgLy8gY29udmVydGVkIHRvIEludDUycyBhbmQgYmFjayBhZ2Fpbi4KICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZJbnQ1MkJpdHMgPSA1MjsKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaW50NTJTaGlmdEFtb3VudCA9IDEyOworICAgIAorICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZQYXlsb2FkKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnBheWxvYWQpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRh
ZygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpOyB9CiAK
IHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUoV3JpdGVCYXJyaWVyQmFz
ZTxUPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggMTkyNDQ2MDE1NGQ3MjAyMjA2NDQ2NmJlNTk4YThjZThmODZiNjNhZS4uZGNl
NjQyZTExZDU3MDJjYTA1YjY2MTdlY2MyYzk2MmU5Y2QxNDdlMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzEzLDcgKzMxMyw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIG1f
cHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9taXNlQ2FsbGJhY2s6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwog
ICAgIG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUHJv
bWlzZVdyYXBwZXJDYWxsYmFjazo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSk7CiAjZW5kaWYgLy8gRU5BQkxFKFBST01JU0VTKQotCisgICAgCiAj
ZGVmaW5lIENSRUFURV9QUk9UT1RZUEVfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dl
ck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiAgICAgbV8gIyMgbG93
ZXJOYW1lICMjIFByb3RvdHlwZS5zZXQodm0sIHRoaXMsIGNhcGl0YWxOYW1lIyNQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgdGhpcywgY2FwaXRhbE5hbWUjI1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsgXAogICAgIG1fICMjIHByb3Bl
ck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUuZ2V0KCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGE2
NWI5ZjUyOWY5YzEzMzI5NDE3NmNkMzQ3MThhMTE4NzA2ZmRhNGUuLmY5MjdiOTRmN2UzMmI4YTM5
MjRmYzRhMjMxZjRmYzdiNWYwNGU2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDA2LDYgKzQwNiw3IEBAIHB1YmxpYzoKICAgICBT
dHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogaXRl
cmF0b3JSZXN1bHRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUmVzdWx0U3Ry
dWN0dXJlLmdldCgpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBpdGVyYXRvclJlc3VsdFN0cnVj
dHVyZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9p
dGVyYXRvclJlc3VsdFN0cnVjdHVyZSk7IH0KIAogI2lmIEVOQUJMRShQUk9NSVNFUykKICAgICBT
dHJ1Y3R1cmUqIHByb21pc2VTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VTdHJ1
Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBkYTRi
NzU1NmZhMDUyYjU4NDY3YTZiNDc4OWJhMTgxYmVlYTUxNGRkLi4zZWM3MWQyZDAwZmY3ZGVhMTUy
YWVhYjllYzI0MzI2YzVmZmNkYzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CkBAIC00MjAsNiArNDIwLDggQEAgc3RhdGljIFRodW5rR2VuZXJhdG9yIHRodW5rR2VuZXJhdG9y
Rm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiBsb2dUaHVu
a0dlbmVyYXRvcjsKICAgICBjYXNlIElNdWxJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiBpbXVs
VGh1bmtHZW5lcmF0b3I7CisgICAgY2FzZSBBcnJheUl0ZXJhdG9yTmV4dEludHJpbnNpYzoKKyAg
ICAgICAgcmV0dXJuIGFycmF5SXRlcmF0b3JOZXh0VGh1bmtHZW5lcmF0b3I7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQwMWQwOGFhZTEzYjEzNGZiMjQ1
NTkzZjNhYTE2M2Q1MTVjNDNkODEuLmNkN2JjYjI2ZWFjZDAzY2YzNDk1ZGQ5YmJmZTFhMmYxY2Yx
YTI5OTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0xMC0wOSAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZ1cnRoZXIgaW1wcm92ZSBBcnJheUl0ZXJhdG9y
IHBlcmZvcm1hbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjI1NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBmZXcgbmV3IHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGUgbmV3IGFzbSB0aHVuayBj
b3JyZWN0bHkKKyAgICAgICAgaGFuZGxlcyBub24tYXJyYXlzLgorCisgICAgICAgICoganMvYXJy
YXktaXRlcmF0b3JzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJy
YXktaXRlcmF0b3JzLmpzOgorCiAyMDEzLTEwLTA5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFj
aEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFZvaWNlT3ZlciBkb3VibGUgc3BlYWtzIGFsbCBp
dGVtcyBpbiA8bGk+IG5vZGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1pdGVy
YXRvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyYXktaXRlcmF0b3JzLWV4cGVj
dGVkLnR4dAppbmRleCA1MWQ3NWFhZTVjMGFkZDcxOGZkZmZkOTE4MDdiZjg1ZTI5NjVjMGNmLi44
ZWY2NTk0NGMwNDdjOWYwYTcwNzZkMWJkNjBlNGI5MjcxMWY5ZmI3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9qcy9hcnJheS1pdGVyYXRvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2pzL2FycmF5LWl0ZXJhdG9ycy1leHBlY3RlZC50eHQKQEAgLTU1LDYgKzU1LDI2IEBAIFBBU1Mg
a2V5IGlzIGkKIFBBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KIFBBU1Mga2V5IGlzIGkKIFBB
U1MgdGVzdEFycmF5Lmxlbmd0aCBpcyA5CitQQVNTIGkgaXMgMAorUEFTUyB2YWx1ZSBpcyBvW2tl
eV0KK1BBU1Mga2V5IGlzIDAKK1BBU1MgdmFsdWUgaXMgMQorUEFTUyB2YWx1ZSBpcyBvW2tleV0K
K1BBU1Mga2V5IGlzIDEKK1BBU1MgdmFsdWUgaXMgMgorUEFTUyB2YWx1ZSBpcyBvW2tleV0KK1BB
U1Mga2V5IGlzIDIKK1BBU1MgdmFsdWUgaXMgMworUEFTUyB2YWx1ZSBpcyBvW2tleV0KK1BBU1Mg
a2V5IGlzIDMKK1BBU1MgdmFsdWUgaXMgNAorUEFTUyB2YWx1ZSBpcyBvW2tleV0KK1BBU1Mga2V5
IGlzIDQKK1BBU1MgdmFsdWUgaXMgNQorUEFTUyB2YWx1ZSBpcyBvW2tleV0KK1BBU1Mga2V5IGlz
IDUKK1BBU1MgdmFsdWUgaXMgNgorUEFTUyBvLmxlbmd0aCBpcyA2CiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJheS1pdGVyYXRvcnMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyYXktaXRlcmF0b3JzLmpzCmluZGV4IGE0Nzc0MjdjZDY0N2ZiYTMyMTBmYmFk
Njc2MmU4ZTQwZjZjYTc2Y2EuLmQ5M2NjZGU0YzgxMWMxOTgzZjBkMTM3MjEwYWZmZjVlZTY1MDYw
NzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJheS1pdGVyYXRv
cnMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2FycmF5LWl0ZXJhdG9ycy5q
cwpAQCAtNTAsMyArNTAsMjggQEAgZm9yICh2YXIgW2tleSwgdmFsdWVdIG9mIGVudHJpZXMpIHsK
IH0KIHNob3VsZEJlKCJ0ZXN0QXJyYXkubGVuZ3RoIiwgU3RyaW5nKGkpKQogCit2YXIgbyA9IHt9
OworZm9yICh2YXIgaSA9MDsgaSA8IDY7IGkrKykKKyAgICBvW2ldPWkrMQorCisKK3ZhciBlbnRy
aWVzID0gQXJyYXkucHJvdG90eXBlLmVudHJpZXMuY2FsbChvKTsKK3ZhciBpID0gMDsKK2ZvciAo
dmFyIFtrZXksIHZhbHVlXSBvZiBlbnRyaWVzKSB7CisgICAgZmFpbCgpOworfQorc2hvdWxkQmUo
ImkiLCAiMCIpCisKK28ubGVuZ3RoPTY7CisKK3ZhciBlbnRyaWVzID0gQXJyYXkucHJvdG90eXBl
LmVudHJpZXMuY2FsbChvKTsKK3ZhciBpID0gMDsKK2ZvciAodmFyIFtrZXksIHZhbHVlXSBvZiBl
bnRyaWVzKSB7CisgICAgc2hvdWxkQmUoInZhbHVlIiwgIm9ba2V5XSIpCisgICAgc2hvdWxkQmUo
ImtleSIsIFN0cmluZyhpKSkKKyAgICBpKysKKyAgICBzaG91bGRCZSgidmFsdWUiLCBTdHJpbmco
aSkpCit9CitzaG91bGRCZSgiby5sZW5ndGgiLCBTdHJpbmcoaSkpCisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213926</attachid>
            <date>2013-10-10 13:55:11 -0700</date>
            <delta_ts>2013-10-10 14:56:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122575-20131010135511.patch</filename>
            <type>text/plain</type>
            <size>20181</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZDkyMGU3NjQzMDgwMDgyZDEwMDkwZjM4ZGM5MzlkMjRlZTI2ZmMwLi4zZWQ1NTBkMzk3NDBlYzYw
OTBjM2JiOTc3NjgzZmExMTZmYmJjNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxMy0xMC0wOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEZ1cnRoZXIgaW1wcm92ZSBBcnJheUl0ZXJhdG9yIHBlcmZvcm1hbmNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI1NzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gYXNzZW1i
bHkgdGh1bmsgZm9yIEFycmF5SXRlcmF0b3IuQEBuZXh0IHNvIHRoYXQgd2UKKyAgICAgICAgY2Fu
IGF2b2lkIG1hcnNoYWxsaW5nIGNvc3RzIHdoZW4gaXRlcmF0aW5nIGFycmF5cy4KKworICAgICAg
ICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVk
VGh1bmtKSVQ6OlNwZWNpYWxpemVkVGh1bmtKSVQpOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXpl
ZFRodW5rSklUOjpsb2FkU3BlY2lmaWNDbGFzc0FyZ3VtZW50KToKKyAgICAgICAgKiBqaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlJdGVyYXRvck5leHRUaHVua0dl
bmVyYXRvcik6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5SXRl
cmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludHJp
bnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OkpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZJdGVyYXRpb25LaW5kKToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZkl0ZXJhdGVkT2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6Om9mZnNldE9mUGF5bG9hZCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmVP
ZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjp0aHVua0dl
bmVyYXRvckZvckludHJpbnNpYyk6CisKIDIwMTMtMTAtMTAgIE1hcmsgSGFobmVuYmVyZyAgPG1o
YWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBPYmplY3RpdmUtQyBBUEk6IGJsb2NrcyBh
cmVuJ3QgY2FsbGFibGUgdmlhICduZXcnCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U3BlY2lhbGl6ZWRUaHVua0pJVC5oCmluZGV4IGVmMTVkYzA3NzhlZGZhNzliZDBmOGQ3ZjVlMDE3
MTU2ODMwMTVmOTIuLjdlNjJlYWQwYzYzZDVmOTYyZWM2MGIyZGVmOGEzNWEzODUyYjE5NjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSlNJ
bnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZl
ci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQwLDggKzQxLDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTcGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSwgaW50IGV4cGVjdGVkQXJnQ291
bnQpCiAgICAgICAgICAgICA6IEpTSW50ZXJmYWNlSklUKHZtKQogICAgICAgICB7Ci0gICAgICAg
ICAgICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVu
dHMKLSAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBwYXls
b2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdD
b3VudCArIDEpKSk7CisgICAgICAgICAgICBpZiAoZXhwZWN0ZWRBcmdDb3VudCA+PSAwKSB7Cisg
ICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIg
b2YgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIo
Tm90RXF1YWwsIHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIFRydXN0ZWRJbW0z
MihleHBlY3RlZEFyZ0NvdW50ICsgMSkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgdm9pZCBsb2FkRG91YmxlQXJndW1lbnQoaW50IGFyZ3VtZW50LCBGUFJl
Z2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkBAIC02Miw2ICs2NSwxMyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAgICAgfQogICAgICAgICAKKyAg
ICAgICAgdm9pZCBsb2FkU3BlY2lmaWNDbGFzc0FyZ3VtZW50KGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRzdCk7
CisgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZHN0LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBhcHBlbmRGYWlsdXJlKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1
c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZv
aWQgbG9hZEludDMyQXJndW1lbnQoaW50IGFyZ3VtZW50LCBSZWdpc3RlcklEIGRzdCwgSnVtcCYg
ZmFpbFRhcmdldCkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgc3JjID0gQ2FsbEZy
YW1lOjphcmd1bWVudE9mZnNldChhcmd1bWVudCk7CkBAIC03OSw3ICs4OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChmYWlsdXJl
KTsKICAgICAgICAgfQotCisjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgdm9pZCByZXR1cm5K
U1ZhbHVlKFJlZ2lzdGVySUQgc3JjKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoc3JjICE9
IHJlZ1QwKQpAQCAtODcsNiArOTcsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBs
b2FkUHRyKHBheWxvYWRGb3IoSlNTdGFjazo6Q2FsbGVyRnJhbWUsIGNhbGxGcmFtZVJlZ2lzdGVy
KSwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgICAgICAgICAgcmV0KCk7CiAgICAgICAgIH0KKyNl
bHNlCisgICAgICAgIHZvaWQgcmV0dXJuSlNWYWx1ZShSZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lz
dGVySUQgdGFnKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHBheWxvYWQs
IHBheWxvYWQgPT0gcmVnVDApOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh0YWcsIHRhZyA9
PSByZWdUMSk7CisgICAgICAgICAgICBsb2FkUHRyKHBheWxvYWRGb3IoSlNTdGFjazo6Q2FsbGVy
RnJhbWUsIGNhbGxGcmFtZVJlZ2lzdGVyKSwgY2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICAg
ICAgcmV0KCk7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAKICAgICAgICAgdm9pZCByZXR1
cm5Eb3VibGUoRlBSZWdpc3RlcklEIHNyYykKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IGVkMTk5OWRhYTVkZmVhZDMzNzJk
ZDVkMzg3MzQ1MDNlYmFmMzEyNjguLmJjNTk2MWU4ZDRjNzJjOGJmMWIyZDA3Njc0ZjNkOTgzZjM0
MzYyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkpJVE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJh
eUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFjay5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJTcGVjaWFsaXplZFRodW5rSklULmgiCkBAIC05ODYsNiArOTg4LDEwMyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKICAgICBy
ZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJpbXVs
Iik7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBhcnJheUl0ZXJhdG9yTmV4dFRodW5rR2Vu
ZXJhdG9yKFZNKiB2bSkKK3sKKyAgICB0eXBlZGVmIFNwZWNpYWxpemVkVGh1bmtKSVQ6OlRydXN0
ZWRJbW0zMiBUcnVzdGVkSW1tMzI7CisgICAgdHlwZWRlZiBTcGVjaWFsaXplZFRodW5rSklUOjpU
cnVzdGVkSW1tUHRyIFRydXN0ZWRJbW1QdHI7CisgICAgdHlwZWRlZiBTcGVjaWFsaXplZFRodW5r
SklUOjpBZGRyZXNzIEFkZHJlc3M7CisgICAgdHlwZWRlZiBTcGVjaWFsaXplZFRodW5rSklUOjpC
YXNlSW5kZXggQmFzZUluZGV4OworICAgIHR5cGVkZWYgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVt
cCBKdW1wOworICAgIAorICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAtMSk7CisgICAg
Ly8gTWFrZSBzdXJlIHdlJ3JlIGJlaW5nIGNhbGxlZCBvbiBhbiBhcnJheSBpdGVyYXRvciwgYW5k
IGxvYWQgbV9pdGVyYXRlZE9iamVjdCwgYW5kIG1fbmV4dEluZGV4IGludG8gcmVnVDAgYW5kIHJl
Z1QxIHJlc3BlY3RpdmVseQorICAgIGppdC5sb2FkU3BlY2lmaWNDbGFzc0FyZ3VtZW50KEpTQXJy
YXlJdGVyYXRvcjo6aW5mbygpLCBTcGVjaWFsaXplZFRodW5rSklUOjpUaGlzQXJndW1lbnQsIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Q0LCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSk7CisK
KyAgICAvLyBFYXJseSBleGl0IGlmIHdlIGRvbid0IGhhdmUgYSB0aHVuayBmb3IgdGhpcyBmb3Jt
IG9mIGl0ZXJhdGlvbgorICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5icmFuY2gzMihTcGVjaWFs
aXplZFRodW5rSklUOjpBYm92ZU9yRXF1YWwsIEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDQsIEpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZJdGVyYXRpb25LaW5kKCkpLCBUcnVzdGVk
SW1tMzIoQXJyYXlJdGVyYXRlS2V5VmFsdWUpKSk7CisgICAgCisgICAgaml0LmxvYWRQdHIoQWRk
cmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRP
Zkl0ZXJhdGVkT2JqZWN0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisgICAgCisg
ICAgaml0LmxvYWQzMihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Q0LCBKU0FycmF5
SXRlcmF0b3I6Om9mZnNldE9mTmV4dEluZGV4KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MSk7CisgICAgCisgICAgLy8gUHVsbCBvdXQgdGhlIGJ1dHRlcmZseSBmcm9tIGl0ZXJhdGVkT2Jq
ZWN0CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsK
KyAgICAKKyAgICBqaXQubG9hZDgoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwg
U3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QzKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qw
LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
Mik7CisgICAgCisgICAgaml0LmFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayks
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsKKyAgICAKKyAgICAvLyBSZXR1cm4gdGhlIHRl
cm1pbmF0aW9uIHNpZ25hbCB0byBpbmRpY2F0ZSB0aGF0IHdlJ3ZlIGZpbmlzaGVkCisgICAgSnVt
cCBub3REb25lID0gaml0LmJyYW5jaDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OkJlbG93LCBTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMSwgQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CisgICAgaml0Lm1vdmUoVHJ1
c3RlZEltbVB0cih2bS0+aXRlcmF0aW9uVGVybWluYXRvci5nZXQoKSksIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBqaXQucmV0dXJuSlNDZWxsKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBub3REb25lLmxpbmsoJmppdCk7CisgICAgCisgICAg
CisgICAgSnVtcCBub3RLZXkgPSBqaXQuYnJhbmNoMzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6Tm90
RXF1YWwsIEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJdGVyYXRv
cjo6b2Zmc2V0T2ZJdGVyYXRpb25LaW5kKCkpLCBUcnVzdGVkSW1tMzIoQXJyYXlJdGVyYXRlS2V5
KSk7CisgICAgLy8gSWYgd2UncmUgZG9pbmcga2V5IGl0ZXJhdGlvbiB3ZSBqdXN0IG5lZWQgdG8g
aW5jcmVtZW50IG1fbmV4dEluZGV4IGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWUKKyAgICBq
aXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1Q0LCBKU0FycmF5SXRlcmF0b3I6Om9mZnNldE9mTmV4dEluZGV4KCkpKTsKKyAgICBqaXQucmV0
dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOworICAgIAorICAgIG5vdEtleS5s
aW5rKCZqaXQpOworICAgIAorICAgIAorICAgIC8vIE9rYXksIG5vdyB3ZSdyZSByZXR1cm5pbmcg
YSB2YWx1ZSBzbyBtYWtlIHN1cmUgd2UncmUgaW5zaWRlIHRoZSB2ZWN0b3Igc2l6ZQorICAgIGpp
dC5hcHBlbmRGYWlsdXJlKGppdC5icmFuY2gzMihTcGVjaWFsaXplZFRodW5rSklUOjpBYm92ZU9y
RXF1YWwsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxLCBBZGRyZXNzKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QyLCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKSk7CisgICAg
CisgICAgLy8gU28gbm93IHdlIHBlcmZvcm0gaW5saW5lIGxvYWRzIGZvciBpbnQzMiwgdmFsdWUv
dW5kZWNpZGVkLCBhbmQgZG91YmxlIHN0b3JhZ2UKKyAgICBKdW1wIHVuZGVjaWRlZFN0b3JhZ2Ug
PSBqaXQuYnJhbmNoMzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6RXF1YWwsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QzLCBUcnVzdGVkSW1tMzIoVW5kZWNpZGVkU2hhcGUpKTsKKyAgICBKdW1wIG5v
dENvbnRpZ3VvdXNTdG9yYWdlID0gaml0LmJyYW5jaDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6Ok5v
dEVxdWFsLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMywgVHJ1c3RlZEltbTMyKENvbnRpZ3Vv
dXNTaGFwZSkpOworICAgIAorICAgIHVuZGVjaWRlZFN0b3JhZ2UubGluaygmaml0KTsKKyAgICAK
KyAgICBqaXQubG9hZFB0cihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU09i
amVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMik7Cisg
ICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBqaXQubG9hZDY0KEJhc2VJbmRleChTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUMiwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIFNwZWNpYWxp
emVkVGh1bmtKSVQ6OlRpbWVzRWlnaHQpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7Cisg
ICAgSnVtcCBob2xlID0gaml0LmJyYW5jaFRlc3Q2NChTcGVjaWFsaXplZFRodW5rSklUOjpOb25a
ZXJvLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisgICAgaml0Lm1vdmUoSlNJbnRlcmZh
Y2VKSVQ6OlRydXN0ZWRJbW02NChWYWx1ZVVuZGVmaW5lZCksIEpTSW50ZXJmYWNlSklUOjpyZWdU
MCk7CisgICAgaG9sZS5saW5rKCZqaXQpOworICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKDEp
LCBBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Q0LCBKU0FycmF5SXRlcmF0b3I6Om9m
ZnNldE9mTmV4dEluZGV4KCkpKTsKKyAgICBqaXQucmV0dXJuSlNWYWx1ZShTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCk7CisjZWxzZQorICAgIGppdC5sb2FkMzIoQmFzZUluZGV4KFNwZWNpYWxp
emVkVGh1bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6VGltZXNFaWdodCwgSlNWYWx1ZTo6b2Zmc2V0T2ZUYWcoKSksIFNwZWNpYWxp
emVkVGh1bmtKSVQ6OnJlZ1QzKTsKKyAgICBKdW1wIGhvbGUgPSBqaXQuYnJhbmNoMzIoU3BlY2lh
bGl6ZWRUaHVua0pJVDo6Tm90RXF1YWwsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworICAgIGppdC5tb3ZlKEpTSW50ZXJm
YWNlSklUOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgSlNJbnRlcmZhY2VK
SVQ6OnJlZ1QxKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDAp
LCBKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAgIGppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSks
IEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJdGVyYXRvcjo6b2Zm
c2V0T2ZOZXh0SW5kZXgoKSkpOworICAgIGppdC5yZXR1cm5KU1ZhbHVlKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwLCBKU0ludGVyZmFjZUpJVDo6cmVnVDEpOworICAgIGhvbGUubGluaygmaml0
KTsKKyAgICBqaXQubG9hZDMyKEJhc2VJbmRleChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OlRpbWVzRWln
aHQsIEpTVmFsdWU6Om9mZnNldE9mUGF5bG9hZCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDApOworICAgIGppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIEFkZHJlc3MoU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgoKSkpOwor
ICAgIGppdC5tb3ZlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMSk7CisgICAgaml0LnJldHVybkpTVmFsdWUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKKyNlbmRpZgorICAgIG5vdENvbnRp
Z3VvdXNTdG9yYWdlLmxpbmsoJmppdCk7CisgICAgCisgICAgSnVtcCBub3RJbnQzMlN0b3JhZ2Ug
PSBqaXQuYnJhbmNoMzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6Tm90RXF1YWwsIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QzLCBUcnVzdGVkSW1tMzIoSW50MzJTaGFwZSkpOworICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJm
bHlPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKKyAgICBqaXQubG9hZDMy
KEJhc2VJbmRleChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDEsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OlRpbWVzRWlnaHQsIEpTVmFsdWU6Om9mZnNl
dE9mUGF5bG9hZCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOworICAgIGppdC5hZGQz
MihUcnVzdGVkSW1tMzIoMSksIEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpT
QXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgoKSkpOworICAgIGppdC5yZXR1cm5JbnQz
MihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisgICAgbm90SW50MzJTdG9yYWdlLmxpbmso
JmppdCk7CisgICAgCisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJyYW5jaDMyKFNwZWNpYWxp
emVkVGh1bmtKSVQ6Ok5vdEVxdWFsLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMywgVHJ1c3Rl
ZEltbTMyKERvdWJsZVNoYXBlKSkpOworCisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDIpOworCisgICAgaml0LmxvYWREb3VibGUoQmFzZUluZGV4KFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSwgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6VGltZXNFaWdodCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVn
VDApOworICAgIAorICAgIGppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIEFkZHJlc3MoU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgo
KSkpOworICAgIAorICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBS
ZWdUMCk7CisgICAgCisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5h
dGl2ZUNhbGwodm0pLCAiYXJyYXktaXRlcmF0b3ItbmV4dCIpOworfQorICAgIAogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5oCmluZGV4IDZjN2EyNzhiYzA3ZGFjOWQyN2U0NmE1N2RkNGI1NDEwOTA2NjdlZDYuLjY5
ZGEzOWQ3M2YyZTcwN2I0MGVlNjg3YWM2N2UzYzAzZTViYzQ2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaApAQCAtNTgsNiArNTgsNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHNxcnRUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHBv
d1RodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5rR2Vu
ZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJyYXlJdGVyYXRvck5leHRUaHVu
a0dlbmVyYXRvcihWTSopOwogCiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5j
cHAKaW5kZXggODMwM2ZmMDM1YWQzYzNiMTM3ZDkzYThlZGEwOGE4Mjk5MjhmMTdhMS4uMDg3MWRh
NjM4Y2NlNTQzMTUwM2Y5MDJkMGZhOTVjNGJlMTU2OWUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAg
LTQ1LDcgKzQ1LDggQEAgdm9pZCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBBU1NFUlQoaW5oZXJp
dHMoaW5mbygpKSk7CiAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKIAot
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JOZXh0UHJp
dmF0ZU5hbWUsIGFycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0LCBEb250RW51bSwgMCk7CisgICAg
SlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JO
ZXh0UHJpdmF0ZU5hbWUsIGFycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0LCBEb250RW51bSwgMCwg
QXJyYXlJdGVyYXRvck5leHRJbnRyaW5zaWMpOworCiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZhdGVOYW1lLCBhcnJheUl0ZXJhdG9yUHJvdG90
eXBlSXRlcmF0ZSwgRG9udEVudW0sIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5oCmluZGV4IDMxMzgyNmVkYmZmM2Y2Yzk3YTY2MjMzN2Q4NjI1NWQwYjE1
MDdiZTkuLmZiMjNlMGJhYzhkY2I2MDAyOGY2OTM5ZDFhOWMzY2Q0OGE0YThiMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC00OCw3ICs0OCw4IEBAIGVu
dW0gSW50cmluc2ljIHsKICAgICBSZWdFeHBFeGVjSW50cmluc2ljLAogICAgIFJlZ0V4cFRlc3RJ
bnRyaW5zaWMsCiAgICAgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYywKLSAgICBJTXVs
SW50cmluc2ljCisgICAgSU11bEludHJpbnNpYywKKyAgICBBcnJheUl0ZXJhdG9yTmV4dEludHJp
bnNpYwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCmluZGV4IGJhODU2NDZlODc0ZTAyNTQ1ZDM0ZThi
MjgyNGUwZDhiNjgxZmYxMGMuLmZmMjVhZDc1ODFjNTQ4ZGU5MDNmOWRiMjBmNmRjYmU0NDQwZjQx
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRv
ci5oCkBAIC02Myw5ICs2MywxMiBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3QqIGl0ZXJhdGVkT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRlZE9iamVjdC5nZXQoKTsgfQogICAgIHNpemVf
dCBuZXh0SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX25leHRJbmRleDsgfQogICAgIHZvaWQgc2V0
TmV4dEluZGV4KHNpemVfdCBuZXh0SW5kZXgpIHsgbV9uZXh0SW5kZXggPSBuZXh0SW5kZXg7IH0K
LSAgICB2b2lkIGZpbmlzaCgpIHsgbV9uZXh0SW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpOyB9CisgICAgdm9pZCBmaW5pc2goKSB7IG1fbmV4dEluZGV4ID0gc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOyB9CiAgICAgCiAgICAgdXNpbmcgSlNOb25G
aW5hbE9iamVjdDo6YXJyYXlTdG9yYWdlT3JOdWxsOworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZJdGVyYXRpb25LaW5kKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQXJyYXlJdGVy
YXRvciwgbV9pdGVyYXRpb25LaW5kKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJ
dGVyYXRlZE9iamVjdCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0FycmF5SXRlcmF0b3Is
IG1faXRlcmF0ZWRPYmplY3QpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk5leHRJ
bmRleCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0FycmF5SXRlcmF0b3IsIG1fbmV4dElu
ZGV4KTsgfQogCiBwcml2YXRlOgogCkBAIC04Miw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgQXJyYXlJdGVyYXRpb25LaW5kIG1faXRlcmF0aW9uS2luZDsKICAgICBXcml0ZUJhcnJpZXI8
SlNPYmplY3Q+IG1faXRlcmF0ZWRPYmplY3Q7Ci0gICAgc2l6ZV90IG1fbmV4dEluZGV4OworICAg
IHVpbnQzMl90IG1fbmV4dEluZGV4OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGI2MmI5YzU3YjY3NDZmOTFlZDA3ZGFlMTMyNzE1MTE5
ZDU3NzVmZDUuLjg1YWMzMmJkZGZmZGE2ZjU1NThhODBjZTFjMGRiYmE2ZTFkNTIzYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTI3OCw2ICsyNzgs
OSBAQCBwdWJsaWM6CiAgICAgLy8gY29udmVydGVkIHRvIEludDUycyBhbmQgYmFjayBhZ2Fpbi4K
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZJbnQ1MkJpdHMgPSA1MjsKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW50NTJTaGlmdEFtb3VudCA9IDEyOworICAgIAorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQYXlsb2FkKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZlRhZygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcp
OyB9CiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUoV3JpdGVCYXJy
aWVyQmFzZTxUPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggMTkyNDQ2MDE1NGQ3MjAyMjA2NDQ2NmJlNTk4YThjZThmODZiNjNh
ZS4uZGNlNjQyZTExZDU3MDJjYTA1YjY2MTdlY2MyYzk2MmU5Y2QxNDdlMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzEzLDcg
KzMxMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIG1fcHJvbWlzZUNhbGxiYWNrU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9taXNlQ2Fs
bGJhY2s6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSkpOwogICAgIG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IEpTUHJvbWlzZVdyYXBwZXJDYWxsYmFjazo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAjZW5kaWYgLy8gRU5BQkxFKFBST01JU0VTKQotCisg
ICAgCiAjZGVmaW5lIENSRUFURV9QUk9UT1RZUEVfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1l
LCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiAgICAgbV8g
IyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS5zZXQodm0sIHRoaXMsIGNhcGl0YWxOYW1lIyNQcm90
b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgY2FwaXRhbE5hbWUjI1Byb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsgXAogICAgIG1fICMj
IHByb3Blck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUuZ2V0KCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IGE2NWI5ZjUyOWY5YzEzMzI5NDE3NmNkMzQ3MThhMTE4NzA2ZmRhNGUuLmY5MjdiOTRmN2Uz
MmI4YTM5MjRmYzRhMjMxZjRmYzdiNWYwNGU2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDA2LDYgKzQwNiw3IEBAIHB1YmxpYzoK
ICAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVy
ZSogaXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUmVz
dWx0U3RydWN0dXJlLmdldCgpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBpdGVyYXRvclJlc3Vs
dFN0cnVjdHVyZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVj
dCwgbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZSk7IH0KIAogI2lmIEVOQUJMRShQUk9NSVNFUykK
ICAgICBTdHJ1Y3R1cmUqIHByb21pc2VTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb21p
c2VTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRl
eCBkYTRiNzU1NmZhMDUyYjU4NDY3YTZiNDc4OWJhMTgxYmVlYTUxNGRkLi4zZWM3MWQyZDAwZmY3
ZGVhMTUyYWVhYjllYzI0MzI2YzVmZmNkYzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCkBAIC00MjAsNiArNDIwLDggQEAgc3RhdGljIFRodW5rR2VuZXJhdG9yIHRodW5rR2Vu
ZXJhdG9yRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiBs
b2dUaHVua0dlbmVyYXRvcjsKICAgICBjYXNlIElNdWxJbnRyaW5zaWM6CiAgICAgICAgIHJldHVy
biBpbXVsVGh1bmtHZW5lcmF0b3I7CisgICAgY2FzZSBBcnJheUl0ZXJhdG9yTmV4dEludHJpbnNp
YzoKKyAgICAgICAgcmV0dXJuIGFycmF5SXRlcmF0b3JOZXh0VGh1bmtHZW5lcmF0b3I7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNkOWZmNjVkZTZlNzVj
ZjI2OGYwNzEwNjQ2ZTQyNDgwY2Q2N2Y2NTEuLmMwNTdiOWJhNWM1ODA0MWFkMjlmYjFiNjVhMDc3
MDE5OWE3OTUzNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0xMC0wOSAgT2xpdmVyIEh1
bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZ1cnRoZXIgaW1wcm92ZSBBcnJheUl0
ZXJhdG9yIHBlcmZvcm1hbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjI1NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBmZXcgbmV3IHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGUgbmV3IGFzbSB0
aHVuayBjb3JyZWN0bHkKKyAgICAgICAgaGFuZGxlcyBub24tYXJyYXlzLgorCisgICAgICAgICog
anMvYXJyYXktaXRlcmF0b3JzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVz
dHMvYXJyYXktaXRlcmF0b3JzLmpzOgorCiAyMDEzLTEwLTEwICBCZW0gSm9uZXMtQmV5ICA8Ympv
bmVzYmVAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgU2hhcGVzXSBOZXcgcG9zaXRpb25pbmcg
bW9kZWw6IFNoYXBlIGNyb3BwZWQgdG8gbWFyZ2luIGJveApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvYXJyYXktaXRlcmF0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2FycmF5
LWl0ZXJhdG9ycy1leHBlY3RlZC50eHQKaW5kZXggNTFkNzVhYWU1YzBhZGQ3MThmZGZmZDkxODA3
YmY4NWUyOTY1YzBjZi4uOGVmNjU5NDRjMDQ3YzlmMGE3MDc2ZDFiZDYwZTRiOTI3MTFmOWZiNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvYXJyYXktaXRlcmF0b3JzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1pdGVyYXRvcnMtZXhwZWN0ZWQudHh0CkBAIC01NSw2
ICs1NSwyNiBAQCBQQVNTIGtleSBpcyBpCiBQQVNTIHZhbHVlIGlzIHRlc3RBcnJheVtrZXldCiBQ
QVNTIGtleSBpcyBpCiBQQVNTIHRlc3RBcnJheS5sZW5ndGggaXMgOQorUEFTUyBpIGlzIDAKK1BB
U1MgdmFsdWUgaXMgb1trZXldCitQQVNTIGtleSBpcyAwCitQQVNTIHZhbHVlIGlzIDEKK1BBU1Mg
dmFsdWUgaXMgb1trZXldCitQQVNTIGtleSBpcyAxCitQQVNTIHZhbHVlIGlzIDIKK1BBU1MgdmFs
dWUgaXMgb1trZXldCitQQVNTIGtleSBpcyAyCitQQVNTIHZhbHVlIGlzIDMKK1BBU1MgdmFsdWUg
aXMgb1trZXldCitQQVNTIGtleSBpcyAzCitQQVNTIHZhbHVlIGlzIDQKK1BBU1MgdmFsdWUgaXMg
b1trZXldCitQQVNTIGtleSBpcyA0CitQQVNTIHZhbHVlIGlzIDUKK1BBU1MgdmFsdWUgaXMgb1tr
ZXldCitQQVNTIGtleSBpcyA1CitQQVNTIHZhbHVlIGlzIDYKK1BBU1Mgby5sZW5ndGggaXMgNgog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyYXktaXRlcmF0b3JzLmpzIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2FycmF5LWl0ZXJhdG9ycy5qcwppbmRleCBhNDc3NDI3
Y2Q2NDdmYmEzMjEwZmJhZDY3NjJlOGU0MGY2Y2E3NmNhLi5kOTNjY2RlNGM4MTFjMTk4M2YwZDEz
NzIxMGFmZmY1ZWU2NTA2MDc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyYXktaXRlcmF0b3JzLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJheS1pdGVyYXRvcnMuanMKQEAgLTUwLDMgKzUwLDI4IEBAIGZvciAodmFyIFtrZXksIHZhbHVl
XSBvZiBlbnRyaWVzKSB7CiB9CiBzaG91bGRCZSgidGVzdEFycmF5Lmxlbmd0aCIsIFN0cmluZyhp
KSkKIAordmFyIG8gPSB7fTsKK2ZvciAodmFyIGkgPTA7IGkgPCA2OyBpKyspCisgICAgb1tpXT1p
KzEKKworCit2YXIgZW50cmllcyA9IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzLmNhbGwobyk7Cit2
YXIgaSA9IDA7Citmb3IgKHZhciBba2V5LCB2YWx1ZV0gb2YgZW50cmllcykgeworICAgIGZhaWwo
KTsKK30KK3Nob3VsZEJlKCJpIiwgIjAiKQorCitvLmxlbmd0aD02OworCit2YXIgZW50cmllcyA9
IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzLmNhbGwobyk7Cit2YXIgaSA9IDA7Citmb3IgKHZhciBb
a2V5LCB2YWx1ZV0gb2YgZW50cmllcykgeworICAgIHNob3VsZEJlKCJ2YWx1ZSIsICJvW2tleV0i
KQorICAgIHNob3VsZEJlKCJrZXkiLCBTdHJpbmcoaSkpCisgICAgaSsrCisgICAgc2hvdWxkQmUo
InZhbHVlIiwgU3RyaW5nKGkpKQorfQorc2hvdWxkQmUoIm8ubGVuZ3RoIiwgU3RyaW5nKGkpKQor
CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213930</attachid>
            <date>2013-10-10 14:56:44 -0700</date>
            <delta_ts>2013-10-10 16:06:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122575-20131010145644.patch</filename>
            <type>text/plain</type>
            <size>20868</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZDkyMGU3NjQzMDgwMDgyZDEwMDkwZjM4ZGM5MzlkMjRlZTI2ZmMwLi4zZWQ1NTBkMzk3NDBlYzYw
OTBjM2JiOTc3NjgzZmExMTZmYmJjNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxMy0xMC0wOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEZ1cnRoZXIgaW1wcm92ZSBBcnJheUl0ZXJhdG9yIHBlcmZvcm1hbmNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI1NzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gYXNzZW1i
bHkgdGh1bmsgZm9yIEFycmF5SXRlcmF0b3IuQEBuZXh0IHNvIHRoYXQgd2UKKyAgICAgICAgY2Fu
IGF2b2lkIG1hcnNoYWxsaW5nIGNvc3RzIHdoZW4gaXRlcmF0aW5nIGFycmF5cy4KKworICAgICAg
ICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVk
VGh1bmtKSVQ6OlNwZWNpYWxpemVkVGh1bmtKSVQpOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXpl
ZFRodW5rSklUOjpsb2FkU3BlY2lmaWNDbGFzc0FyZ3VtZW50KToKKyAgICAgICAgKiBqaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlJdGVyYXRvck5leHRUaHVua0dl
bmVyYXRvcik6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5SXRl
cmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludHJp
bnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OkpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZJdGVyYXRpb25LaW5kKToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZkl0ZXJhdGVkT2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6Om9mZnNldE9mUGF5bG9hZCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmVP
ZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjp0aHVua0dl
bmVyYXRvckZvckludHJpbnNpYyk6CisKIDIwMTMtMTAtMTAgIE1hcmsgSGFobmVuYmVyZyAgPG1o
YWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBPYmplY3RpdmUtQyBBUEk6IGJsb2NrcyBh
cmVuJ3QgY2FsbGFibGUgdmlhICduZXcnCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U3BlY2lhbGl6ZWRUaHVua0pJVC5oCmluZGV4IGVmMTVkYzA3NzhlZGZhNzliZDBmOGQ3ZjVlMDE3
MTU2ODMwMTVmOTIuLjdlNjJlYWQwYzYzZDVmOTYyZWM2MGIyZGVmOGEzNWEzODUyYjE5NjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSlNJ
bnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZl
ci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQwLDggKzQxLDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTcGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSwgaW50IGV4cGVjdGVkQXJnQ291
bnQpCiAgICAgICAgICAgICA6IEpTSW50ZXJmYWNlSklUKHZtKQogICAgICAgICB7Ci0gICAgICAg
ICAgICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVu
dHMKLSAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBwYXls
b2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdD
b3VudCArIDEpKSk7CisgICAgICAgICAgICBpZiAoZXhwZWN0ZWRBcmdDb3VudCA+PSAwKSB7Cisg
ICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIg
b2YgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIo
Tm90RXF1YWwsIHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIFRydXN0ZWRJbW0z
MihleHBlY3RlZEFyZ0NvdW50ICsgMSkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgdm9pZCBsb2FkRG91YmxlQXJndW1lbnQoaW50IGFyZ3VtZW50LCBGUFJl
Z2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkBAIC02Miw2ICs2NSwxMyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAgICAgfQogICAgICAgICAKKyAg
ICAgICAgdm9pZCBsb2FkU3BlY2lmaWNDbGFzc0FyZ3VtZW50KGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRzdCk7
CisgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZHN0LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBhcHBlbmRGYWlsdXJlKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1
c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZv
aWQgbG9hZEludDMyQXJndW1lbnQoaW50IGFyZ3VtZW50LCBSZWdpc3RlcklEIGRzdCwgSnVtcCYg
ZmFpbFRhcmdldCkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgc3JjID0gQ2FsbEZy
YW1lOjphcmd1bWVudE9mZnNldChhcmd1bWVudCk7CkBAIC03OSw3ICs4OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChmYWlsdXJl
KTsKICAgICAgICAgfQotCisjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgdm9pZCByZXR1cm5K
U1ZhbHVlKFJlZ2lzdGVySUQgc3JjKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoc3JjICE9
IHJlZ1QwKQpAQCAtODcsNiArOTcsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBs
b2FkUHRyKHBheWxvYWRGb3IoSlNTdGFjazo6Q2FsbGVyRnJhbWUsIGNhbGxGcmFtZVJlZ2lzdGVy
KSwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgICAgICAgICAgcmV0KCk7CiAgICAgICAgIH0KKyNl
bHNlCisgICAgICAgIHZvaWQgcmV0dXJuSlNWYWx1ZShSZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lz
dGVySUQgdGFnKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHBheWxvYWQs
IHBheWxvYWQgPT0gcmVnVDApOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh0YWcsIHRhZyA9
PSByZWdUMSk7CisgICAgICAgICAgICBsb2FkUHRyKHBheWxvYWRGb3IoSlNTdGFjazo6Q2FsbGVy
RnJhbWUsIGNhbGxGcmFtZVJlZ2lzdGVyKSwgY2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICAg
ICAgcmV0KCk7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAKICAgICAgICAgdm9pZCByZXR1
cm5Eb3VibGUoRlBSZWdpc3RlcklEIHNyYykKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IGVkMTk5OWRhYTVkZmVhZDMzNzJk
ZDVkMzg3MzQ1MDNlYmFmMzEyNjguLjg0MTNhNDc4MTYwMGFmYmUxNWQ4ODEwYTkzYTVjMWY1MzQ4
YzllMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkpJVE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJh
eUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFjay5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJTcGVjaWFsaXplZFRodW5rSklULmgiCkBAIC05ODYsNiArOTg4LDk4IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogICAgIHJl
dHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgImltdWwi
KTsKIH0KIAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFycmF5SXRlcmF0b3JOZXh0VGh1bmtHZW5l
cmF0b3IoVk0qIHZtKQoreworICAgIHR5cGVkZWYgU3BlY2lhbGl6ZWRUaHVua0pJVDo6VHJ1c3Rl
ZEltbTMyIFRydXN0ZWRJbW0zMjsKKyAgICB0eXBlZGVmIFNwZWNpYWxpemVkVGh1bmtKSVQ6OlRy
dXN0ZWRJbW1QdHIgVHJ1c3RlZEltbVB0cjsKKyAgICB0eXBlZGVmIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OkFkZHJlc3MgQWRkcmVzczsKKyAgICB0eXBlZGVmIFNwZWNpYWxpemVkVGh1bmtKSVQ6OkJh
c2VJbmRleCBCYXNlSW5kZXg7CisgICAgdHlwZWRlZiBTcGVjaWFsaXplZFRodW5rSklUOjpKdW1w
IEp1bXA7CisgICAgCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIC0xKTsKKyAgICAv
LyBNYWtlIHN1cmUgd2UncmUgYmVpbmcgY2FsbGVkIG9uIGFuIGFycmF5IGl0ZXJhdG9yLCBhbmQg
bG9hZCBtX2l0ZXJhdGVkT2JqZWN0LCBhbmQgbV9uZXh0SW5kZXggaW50byByZWdUMCBhbmQgcmVn
VDEgcmVzcGVjdGl2ZWx5CisgICAgaml0LmxvYWRTcGVjaWZpY0NsYXNzQXJndW1lbnQoSlNBcnJh
eUl0ZXJhdG9yOjppbmZvKCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OlRoaXNBcmd1bWVudCwgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKKwor
ICAgIC8vIEVhcmx5IGV4aXQgaWYgd2UgZG9uJ3QgaGF2ZSBhIHRodW5rIGZvciB0aGlzIGZvcm0g
b2YgaXRlcmF0aW9uCisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJyYW5jaDMyKFNwZWNpYWxp
emVkVGh1bmtKSVQ6OkFib3ZlT3JFcXVhbCwgQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZkl0ZXJhdGlvbktpbmQoKSksIFRydXN0ZWRJ
bW0zMihBcnJheUl0ZXJhdGVLZXlWYWx1ZSkpKTsKKyAgICAKKyAgICBqaXQubG9hZFB0cihBZGRy
ZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Q0LCBKU0FycmF5SXRlcmF0b3I6Om9mZnNldE9m
SXRlcmF0ZWRPYmplY3QoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICAKKyAg
ICBqaXQubG9hZDMyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJ
dGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qx
KTsKKyAgICAKKyAgICAvLyBQdWxsIG91dCB0aGUgYnV0dGVyZmx5IGZyb20gaXRlcmF0ZWRPYmpl
Y3QKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIpOwor
ICAgIAorICAgIGppdC5sb2FkOChBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBT
dHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDMpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAs
IEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qy
KTsKKyAgICAKKyAgICBqaXQuYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOworICAgIAorICAgIEp1bXAgbm90RG9uZSA9IGpp
dC5icmFuY2gzMihTcGVjaWFsaXplZFRodW5rSklUOjpCZWxvdywgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDEsIEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIsIEJ1dHRlcmZseTo6
b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOworICAgIC8vIFJldHVybiB0aGUgdGVybWluYXRpb24g
c2lnbmFsIHRvIGluZGljYXRlIHRoYXQgd2UndmUgZmluaXNoZWQKKyAgICBqaXQubW92ZShUcnVz
dGVkSW1tUHRyKHZtLT5pdGVyYXRpb25UZXJtaW5hdG9yLmdldCgpKSwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDApOworICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDApOworICAgIAorICAgIG5vdERvbmUubGluaygmaml0KTsKKyAgICAKKyAgICAKKyAgICBK
dW1wIG5vdEtleSA9IGppdC5icmFuY2gzMihTcGVjaWFsaXplZFRodW5rSklUOjpOb3RFcXVhbCwg
QWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZz
ZXRPZkl0ZXJhdGlvbktpbmQoKSksIFRydXN0ZWRJbW0zMihBcnJheUl0ZXJhdGVLZXkpKTsKKyAg
ICAvLyBJZiB3ZSdyZSBkb2luZyBrZXkgaXRlcmF0aW9uIHdlIGp1c3QgbmVlZCB0byBpbmNyZW1l
bnQgbV9uZXh0SW5kZXggYW5kIHJldHVybiB0aGUgY3VycmVudCB2YWx1ZQorICAgIGppdC5hZGQz
MihUcnVzdGVkSW1tMzIoMSksIEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpT
QXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgoKSkpOworICAgIGppdC5yZXR1cm5JbnQz
MihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSk7CisgICAgCisgICAgbm90S2V5LmxpbmsoJmpp
dCk7CisgICAgCisgICAgCisgICAgLy8gT2theSwgbm93IHdlJ3JlIHJldHVybmluZyBhIHZhbHVl
IHNvIG1ha2Ugc3VyZSB3ZSdyZSBpbnNpZGUgdGhlIHZlY3RvciBzaXplCisgICAgaml0LmFwcGVu
ZEZhaWx1cmUoaml0LmJyYW5jaDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OkFib3ZlT3JFcXVhbCwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpKTsKKyAgICAKKyAgICAv
LyBTbyBub3cgd2UgcGVyZm9ybSBpbmxpbmUgbG9hZHMgZm9yIGludDMyLCB2YWx1ZS91bmRlY2lk
ZWQsIGFuZCBkb3VibGUgc3RvcmFnZQorICAgIEp1bXAgdW5kZWNpZGVkU3RvcmFnZSA9IGppdC5i
cmFuY2gzMihTcGVjaWFsaXplZFRodW5rSklUOjpFcXVhbCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDMsIFRydXN0ZWRJbW0zMihVbmRlY2lkZWRTaGFwZSkpOworICAgIEp1bXAgbm90Q29udGln
dW91c1N0b3JhZ2UgPSBqaXQuYnJhbmNoMzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6Tm90RXF1YWws
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzLCBUcnVzdGVkSW1tMzIoQ29udGlndW91c1NoYXBl
KSk7CisgICAgCisgICAgdW5kZWNpZGVkU3RvcmFnZS5saW5rKCZqaXQpOworICAgIAorICAgIGpp
dC5sb2FkUHRyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIEpTT2JqZWN0Ojpi
dXR0ZXJmbHlPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKKyAgICAKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgIGppdC5sb2FkNjQoQmFzZUluZGV4KFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6VGltZXNFaWdodCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICBKdW1w
IG5vdEhvbGUgPSBqaXQuYnJhbmNoVGVzdDY0KFNwZWNpYWxpemVkVGh1bmtKSVQ6Ok5vblplcm8s
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJ
VDo6VHJ1c3RlZEltbTY0KFZhbHVlVW5kZWZpbmVkKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsK
KyAgICBub3RIb2xlLmxpbmsoJmppdCk7CisgICAgaml0LmFkZFB0cihUcnVzdGVkSW1tMzIoMSks
IEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJdGVyYXRvcjo6b2Zm
c2V0T2ZOZXh0SW5kZXgoKSkpOworICAgIGppdC5yZXR1cm5KU1ZhbHVlKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKKyNlbHNlCisgICAgaml0LmxvYWQzMihCYXNlSW5kZXgoU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDIsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpUaW1lc0VpZ2h0LCBKU1ZhbHVlOjpvZmZzZXRPZlRhZygpKSwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDMpOworICAgIEp1bXAgbm90SG9sZSA9IGppdC5icmFuY2gzMihTcGVj
aWFsaXplZFRodW5rSklUOjpOb3RFcXVhbCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgaml0Lm1vdmUoSlNJbnRl
cmZhY2VKSVQ6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCBKU0ludGVyZmFj
ZUpJVDo6cmVnVDEpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIo
MCksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0LmFkZDMyKFRydXN0ZWRJbW0zMigx
KSwgQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpv
ZmZzZXRPZk5leHRJbmRleCgpKSk7CisgICAgaml0LnJldHVybkpTVmFsdWUoU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDAsIEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7CisgICAgbm90SG9sZS5saW5r
KCZqaXQpOworICAgIGppdC5sb2FkMzIoQmFzZUluZGV4KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QyLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6VGlt
ZXNFaWdodCwgSlNWYWx1ZTo6b2Zmc2V0T2ZQYXlsb2FkKCkpLCBTcGVjaWFsaXplZFRodW5rSklU
OjpyZWdUMCk7CisgICAgaml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWRkcmVzcyhTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCgp
KSk7CisgICAgaml0Lm1vdmUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMsIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QxKTsKKyAgICBqaXQucmV0dXJuSlNWYWx1ZShTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOworI2VuZGlmCisgICAgbm90
Q29udGlndW91c1N0b3JhZ2UubGluaygmaml0KTsKKyAgICAKKyAgICBKdW1wIG5vdEludDMyU3Rv
cmFnZSA9IGppdC5icmFuY2gzMihTcGVjaWFsaXplZFRodW5rSklUOjpOb3RFcXVhbCwgU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDMsIFRydXN0ZWRJbW0zMihJbnQzMlNoYXBlKSk7CisgICAgaml0
LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIpOworICAgIGppdC5s
b2FkMzIoQmFzZUluZGV4KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6VGltZXNFaWdodCwgSlNWYWx1ZTo6
b2Zmc2V0T2ZQYXlsb2FkKCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisgICAgaml0
LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
NCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCgpKSk7CisgICAgaml0LnJldHVy
bkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICBub3RJbnQzMlN0b3JhZ2Uu
bGluaygmaml0KTsKKyAgICAKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoMzIoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6Tm90RXF1YWwsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzLCBU
cnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKSk7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIpOworICAgIGppdC5sb2FkRG91YmxlKEJhc2VJbmRleChT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OlRpbWVzRWlnaHQpLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJl
Z1QwKTsKKyAgICBqaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBBZGRyZXNzKFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1Q0LCBKU0FycmF5SXRlcmF0b3I6Om9mZnNldE9mTmV4dEluZGV4KCkpKTsK
KyAgICBqaXQucmV0dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOworICAg
IAorICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZt
KSwgImFycmF5LWl0ZXJhdG9yLW5leHQiKTsKK30KKyAgICAKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAppbmRl
eCA2YzdhMjc4YmMwN2RhYzlkMjdlNDZhNTdkZDRiNTQxMDkwNjY3ZWQ2Li42OWRhMzlkNzNmMmU3
MDdiNDBlZTY4N2FjNjdlM2MwM2U1YmM0NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmgKQEAgLTU4LDYgKzU4LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIHJvdW5kVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0
VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBwb3dUaHVua0dlbmVy
YXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dlbmVyYXRvcihWTSop
OworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFycmF5SXRlcmF0b3JOZXh0VGh1bmtHZW5lcmF0b3Io
Vk0qKTsKIAogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDgz
MDNmZjAzNWFkM2MzYjEzN2Q5M2E4ZWRhMDhhODI5OTI4ZjE3YTEuLjA4NzFkYTYzOGNjZTU0MzE1
MDNmOTAyZDBmYTk1YzRiZTE1NjllM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC00NSw3ICs0NSw4
IEBAIHZvaWQgQXJyYXlJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkp
OwogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CiAKLSAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yTmV4dFByaXZhdGVOYW1lLCBh
cnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVf
SU5UUklOU0lDX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yTmV4dFByaXZhdGVO
YW1lLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCwgRG9udEVudW0sIDAsIEFycmF5SXRlcmF0
b3JOZXh0SW50cmluc2ljKTsKKwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgYXJyYXlJdGVyYXRvclByb3RvdHlwZUl0ZXJhdGUs
IERvbnRFbnVtLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuaAppbmRleCAzMTM4MjZlZGJmZjNmNmM5N2E2NjIzMzdkODYyNTVkMGIxNTA3YmU5Li5mYjIz
ZTBiYWM4ZGNiNjAwMjhmNjkzOWQxYTljM2NkNDhhNGE4YjBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApAQCAtNDgsNyArNDgsOCBAQCBlbnVtIEludHJpbnNp
YyB7CiAgICAgUmVnRXhwRXhlY0ludHJpbnNpYywKICAgICBSZWdFeHBUZXN0SW50cmluc2ljLAog
ICAgIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMsCi0gICAgSU11bEludHJpbnNpYwor
ICAgIElNdWxJbnRyaW5zaWMsCisgICAgQXJyYXlJdGVyYXRvck5leHRJbnRyaW5zaWMKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5SXRlcmF0b3IuaAppbmRleCBiYTg1NjQ2ZTg3NGUwMjU0NWQzNGU4YjI4MjRlMGQ4YjY4
MWZmMTBjLi5mZjI1YWQ3NTgxYzU0OGRlOTAzZjlkYjIwZjZkY2JlNDQ0MGY0MTg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApAQCAtNjMs
OSArNjMsMTIgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1faXRlcmF0ZWRPYmplY3QuZ2V0KCk7IH0KICAgICBzaXplX3QgbmV4dEluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0SW5kZXg7IH0KICAgICB2b2lkIHNldE5leHRJbmRleChz
aXplX3QgbmV4dEluZGV4KSB7IG1fbmV4dEluZGV4ID0gbmV4dEluZGV4OyB9Ci0gICAgdm9pZCBm
aW5pc2goKSB7IG1fbmV4dEluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KTsgfQorICAgIHZvaWQgZmluaXNoKCkgeyBtX25leHRJbmRleCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDMyX3Q+OjptYXgoKTsgfQogICAgIAogICAgIHVzaW5nIEpTTm9uRmluYWxPYmplY3Q6
OmFycmF5U3RvcmFnZU9yTnVsbDsKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSXRlcmF0
aW9uS2luZCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0FycmF5SXRlcmF0b3IsIG1faXRl
cmF0aW9uS2luZCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSXRlcmF0ZWRPYmpl
Y3QoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNBcnJheUl0ZXJhdG9yLCBtX2l0ZXJhdGVk
T2JqZWN0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOZXh0SW5kZXgoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNBcnJheUl0ZXJhdG9yLCBtX25leHRJbmRleCk7IH0KIAog
cHJpdmF0ZToKIApAQCAtODIsNyArODUsNyBAQCBwcml2YXRlOgogICAgIAogICAgIEFycmF5SXRl
cmF0aW9uS2luZCBtX2l0ZXJhdGlvbktpbmQ7CiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBt
X2l0ZXJhdGVkT2JqZWN0OwotICAgIHNpemVfdCBtX25leHRJbmRleDsKKyAgICB1aW50MzJfdCBt
X25leHRJbmRleDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaAppbmRleCBiNjJiOWM1N2I2NzQ2ZjkxZWQwN2RhZTEzMjcxNTExOWQ1Nzc1ZmQ1Li44
NWFjMzJiZGRmZmRhNmY1NTU4YTgwY2UxYzBkYmJhNmUxZDUyM2MwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0yNzgsNiArMjc4LDkgQEAgcHVibGlj
OgogICAgIC8vIGNvbnZlcnRlZCB0byBJbnQ1MnMgYW5kIGJhY2sgYWdhaW4uCiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG51bWJlck9mSW50NTJCaXRzID0gNTI7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGludDUyU2hpZnRBbW91bnQgPSAxMjsKKyAgICAKKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mUGF5bG9hZCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1
LmFzQml0cy5wYXlsb2FkKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZUYWcoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKTsgfQogCiBwcml2
YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBKU1ZhbHVlKFdyaXRlQmFycmllckJhc2U8VD4p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggYTY1YjlmNTI5ZjljMTMzMjk0MTc2Y2QzNDcxOGExMTg3MDZmZGE0ZS4uZjkyN2I5NGY3ZTMy
YjhhMzkyNGZjNGEyMzFmNGZjN2I1ZjA0ZTZhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00MDYsNiArNDA2LDcgQEAgcHVibGljOgog
ICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zZXRTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBpdGVyYXRvclJlc3VsdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JSZXN1
bHRTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IGl0ZXJhdG9yUmVzdWx0
U3RydWN0dXJlT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0
LCBtX2l0ZXJhdG9yUmVzdWx0U3RydWN0dXJlKTsgfQogCiAjaWYgRU5BQkxFKFBST01JU0VTKQog
ICAgIFN0cnVjdHVyZSogcHJvbWlzZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlz
ZVN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4
IGRhNGI3NTU2ZmEwNTJiNTg0NjdhNmI0Nzg5YmExODFiZWVhNTE0ZGQuLjNlYzcxZDJkMDBmZjdk
ZWExNTJhZWFiOWVjMjQzMjZjNWZmY2RjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKQEAgLTQyMCw2ICs0MjAsOCBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5l
cmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJuIGxv
Z1RodW5rR2VuZXJhdG9yOwogICAgIGNhc2UgSU11bEludHJpbnNpYzoKICAgICAgICAgcmV0dXJu
IGltdWxUaHVua0dlbmVyYXRvcjsKKyAgICBjYXNlIEFycmF5SXRlcmF0b3JOZXh0SW50cmluc2lj
OgorICAgICAgICByZXR1cm4gYXJyYXlJdGVyYXRvck5leHRUaHVua0dlbmVyYXRvcjsKICAgICBk
ZWZhdWx0OgogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2Q5ZmY2NWRlNmU3NWNm
MjY4ZjA3MTA2NDZlNDI0ODBjZDY3ZjY1MS4uYzA1N2I5YmE1YzU4MDQxYWQyOWZiMWI2NWEwNzcw
MTk5YTc5NTM3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEwLTA5ICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgRnVydGhlciBpbXByb3ZlIEFycmF5SXRl
cmF0b3IgcGVyZm9ybWFuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMjU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhIGZldyBuZXcgdGVzdHMgdG8gbWFrZSBzdXJlIHRoZSBuZXcgYXNtIHRo
dW5rIGNvcnJlY3RseQorICAgICAgICBoYW5kbGVzIG5vbi1hcnJheXMuCisKKyAgICAgICAgKiBq
cy9hcnJheS1pdGVyYXRvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9hcnJheS1pdGVyYXRvcnMuanM6CisKIDIwMTMtMTAtMTAgIEJlbSBKb25lcy1CZXkgIDxiam9u
ZXNiZUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBTaGFwZXNdIE5ldyBwb3NpdGlvbmluZyBt
b2RlbDogU2hhcGUgY3JvcHBlZCB0byBtYXJnaW4gYm94CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9hcnJheS1pdGVyYXRvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyYXkt
aXRlcmF0b3JzLWV4cGVjdGVkLnR4dAppbmRleCA1MWQ3NWFhZTVjMGFkZDcxOGZkZmZkOTE4MDdi
Zjg1ZTI5NjVjMGNmLi4zMjQxNmI2YWJlNzNjNDI1NzI4ZjU1Y2JhNTgxOWE1MjZmMjc1MTI1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1pdGVyYXRvcnMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2pzL2FycmF5LWl0ZXJhdG9ycy1leHBlY3RlZC50eHQKQEAgLTU1LDYg
KzU1LDY1IEBAIFBBU1Mga2V5IGlzIGkKIFBBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KIFBB
U1Mga2V5IGlzIGkKIFBBU1MgdGVzdEFycmF5Lmxlbmd0aCBpcyA5CitQQVNTIGkgaXMgMAorUEFT
UyB2YWx1ZSBpcyBvW2tleV0KK1BBU1Mga2V5IGlzIDAKK1BBU1MgdmFsdWUgaXMgMQorUEFTUyB2
YWx1ZSBpcyBvW2tleV0KK1BBU1Mga2V5IGlzIDEKK1BBU1MgdmFsdWUgaXMgMgorUEFTUyB2YWx1
ZSBpcyBvW2tleV0KK1BBU1Mga2V5IGlzIDIKK1BBU1MgdmFsdWUgaXMgMworUEFTUyB2YWx1ZSBp
cyBvW2tleV0KK1BBU1Mga2V5IGlzIDMKK1BBU1MgdmFsdWUgaXMgNAorUEFTUyB2YWx1ZSBpcyBv
W2tleV0KK1BBU1Mga2V5IGlzIDQKK1BBU1MgdmFsdWUgaXMgNQorUEFTUyB2YWx1ZSBpcyBvW2tl
eV0KK1BBU1Mga2V5IGlzIDUKK1BBU1MgdmFsdWUgaXMgNgorUEFTUyBvLmxlbmd0aCBpcyA2CitQ
QVNTIHZhbHVlIGlzIDEuNQorUEFTUyB2YWx1ZSBpcyAyLjUKK1BBU1MgdmFsdWUgaXMgMy41CitQ
QVNTIHZhbHVlIGlzIDQuNQorUEFTUyB2YWx1ZSBpcyA1LjUKK1BBU1MgdmFsdWUgaXMgNi41CitQ
QVNTIHRlc3RBcnJheS5sZW5ndGggaXMgNgorUEFTUyB2YWx1ZSBpcyB0cnVlCitQQVNTIHZhbHVl
IGlzIHRydWUKK1BBU1MgdmFsdWUgaXMgdHJ1ZQorUEFTUyB2YWx1ZSBpcyB0cnVlCitQQVNTIHZh
bHVlIGlzIHRydWUKK1BBU1MgdmFsdWUgaXMgdHJ1ZQorUEFTUyB0ZXN0QXJyYXkubGVuZ3RoIGlz
IDYKK1BBU1MgaXNOYU4odmFsdWUpIGlzIHRydWUKK1BBU1MgaXNOYU4odmFsdWUpIGlzIHRydWUK
K1BBU1MgaXNOYU4odmFsdWUpIGlzIHRydWUKK1BBU1MgaXNOYU4odmFsdWUpIGlzIHRydWUKK1BB
U1MgaXNOYU4odmFsdWUpIGlzIHRydWUKK1BBU1MgaXNOYU4odmFsdWUpIGlzIHRydWUKK1BBU1Mg
dGVzdEFycmF5Lmxlbmd0aCBpcyA2CitQQVNTIHZhbHVlIGlzIHVuZGVmaW5lZC4KK1BBU1MgdmFs
dWUgaXMgdW5kZWZpbmVkLgorUEFTUyB2YWx1ZSBpcyB1bmRlZmluZWQuCitQQVNTIHZhbHVlIGlz
IHVuZGVmaW5lZC4KK1BBU1MgdmFsdWUgaXMgdW5kZWZpbmVkLgorUEFTUyB2YWx1ZSBpcyB1bmRl
ZmluZWQuCitQQVNTIHZhbHVlIGlzIHVuZGVmaW5lZC4KK1BBU1MgdmFsdWUgaXMgdW5kZWZpbmVk
LgorUEFTUyB0ZXN0QXJyYXkubGVuZ3RoIGlzIDgKK1BBU1Mga2V5IGlzIDAKK1BBU1Mga2V5IGlz
IDEKK1BBU1Mga2V5IGlzIDIKK1BBU1Mga2V5IGlzIDMKK1BBU1Mga2V5IGlzIDQKK1BBU1Mga2V5
IGlzIDUKK1BBU1Mga2V5IGlzIDYKK1BBU1Mga2V5IGlzIDcKK1BBU1MgdGVzdEFycmF5Lmxlbmd0
aCBpcyA4CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJheS1pdGVyYXRvcnMu
anMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyYXktaXRlcmF0b3JzLmpzCmluZGV4
IGE0Nzc0MjdjZDY0N2ZiYTMyMTBmYmFkNjc2MmU4ZTQwZjZjYTc2Y2EuLjYxMDE4NWExODJkMzY4
MmM2MjczNzEyYjM2NjcwNzY1YjRiNTljNzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9hcnJheS1pdGVyYXRvcnMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2FycmF5LWl0ZXJhdG9ycy5qcwpAQCAtNTAsMyArNTAsNzUgQEAgZm9yICh2YXIgW2tl
eSwgdmFsdWVdIG9mIGVudHJpZXMpIHsKIH0KIHNob3VsZEJlKCJ0ZXN0QXJyYXkubGVuZ3RoIiwg
U3RyaW5nKGkpKQogCit2YXIgbyA9IHt9OworZm9yICh2YXIgaSA9MDsgaSA8IDY7IGkrKykKKyAg
ICBvW2ldPWkrMQorCisKK3ZhciBlbnRyaWVzID0gQXJyYXkucHJvdG90eXBlLmVudHJpZXMuY2Fs
bChvKTsKK3ZhciBpID0gMDsKK2ZvciAodmFyIFtrZXksIHZhbHVlXSBvZiBlbnRyaWVzKSB7Cisg
ICAgZmFpbCgpOworfQorc2hvdWxkQmUoImkiLCAiMCIpCisKK28ubGVuZ3RoPTY7CisKK3ZhciBl
bnRyaWVzID0gQXJyYXkucHJvdG90eXBlLmVudHJpZXMuY2FsbChvKTsKK3ZhciBpID0gMDsKK2Zv
ciAodmFyIFtrZXksIHZhbHVlXSBvZiBlbnRyaWVzKSB7CisgICAgc2hvdWxkQmUoInZhbHVlIiwg
Im9ba2V5XSIpCisgICAgc2hvdWxkQmUoImtleSIsIFN0cmluZyhpKSkKKyAgICBpKysKKyAgICBz
aG91bGRCZSgidmFsdWUiLCBTdHJpbmcoaSkpCit9CitzaG91bGRCZSgiby5sZW5ndGgiLCBTdHJp
bmcoaSkpCisKKwordmFyIHRlc3RBcnJheSA9IFsxLjUsMi41LDMuNSw0LjUsNS41LDYuNV0KK3Zh
ciBpID0gMDsKK2ZvciAodmFyIHZhbHVlIG9mIHRlc3RBcnJheSkgeworICAgIHNob3VsZEJlKCJ2
YWx1ZSIsIFN0cmluZyhpICsgMS41KSkKKyAgICBpKys7Cit9CisKK3Nob3VsZEJlKCJ0ZXN0QXJy
YXkubGVuZ3RoIiwgU3RyaW5nKGkpKQorCisKK3ZhciB0ZXN0QXJyYXkgPSBbdHJ1ZSx0cnVlLHRy
dWUsdHJ1ZSx0cnVlLHRydWVdCit2YXIgaSA9IDA7Citmb3IgKHZhciB2YWx1ZSBvZiB0ZXN0QXJy
YXkpIHsKKyAgICBzaG91bGRCZSgidmFsdWUiLCAidHJ1ZSIpCisgICAgaSsrOworfQorCitzaG91
bGRCZSgidGVzdEFycmF5Lmxlbmd0aCIsIFN0cmluZyhpKSkKKworCit2YXIgdGVzdEFycmF5ID0g
W05hTixOYU4sTmFOLE5hTixOYU4sTmFOXQordmFyIGkgPSAwOworZm9yICh2YXIgdmFsdWUgb2Yg
dGVzdEFycmF5KSB7CisgICAgc2hvdWxkQmVUcnVlKCJpc05hTih2YWx1ZSkiKQorICAgIGkrKzsK
K30KKworc2hvdWxkQmUoInRlc3RBcnJheS5sZW5ndGgiLCBTdHJpbmcoaSkpCisKKworCit2YXIg
dGVzdEFycmF5ID0gW3VuZGVmaW5lZCwsdW5kZWZpbmVkLCx1bmRlZmluZWQsdW5kZWZpbmVkXQor
dGVzdEFycmF5Lmxlbmd0aCA9IDg7Cit2YXIgaSA9IDA7Citmb3IgKHZhciB2YWx1ZSBvZiB0ZXN0
QXJyYXkpIHsKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgidmFsdWUiKQorICAgIGkrKzsKK30KKwor
c2hvdWxkQmUoInRlc3RBcnJheS5sZW5ndGgiLCBTdHJpbmcoaSkpCit2YXIgaSA9IDA7Citmb3Ig
KHZhciBrZXkgb2YgdGVzdEFycmF5LmtleXMoKSkgeworICAgIHNob3VsZEJlKCJrZXkiLCBTdHJp
bmcoaSkpCisgICAgaSsrOworfQorCitzaG91bGRCZSgidGVzdEFycmF5Lmxlbmd0aCIsIFN0cmlu
ZyhpKSkK
</data>
<flag name="review"
          id="236385"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>