<?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>171527</bug_id>
          
          <creation_ts>2017-05-01 17:22:13 -0700</creation_ts>
          <short_desc>How we build polymorphic cases is wrong when making a call from Wasm</short_desc>
          <delta_ts>2017-05-03 22:50:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit 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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1303514</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-01 17:22:13 -0700</bug_when>
    <thetext>We do a totally borked thing and assume the case does not have a code block when it totally does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303543</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-01 18:34:37 -0700</bug_when>
    <thetext>*** Bug 171518 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303545</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-01 18:34:55 -0700</bug_when>
    <thetext>*** Bug 171507 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303562</commentid>
    <comment_count>3</comment_count>
      <attachid>308798</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-01 19:38:30 -0700</bug_when>
    <thetext>Created attachment 308798
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303563</commentid>
    <comment_count>4</comment_count>
      <attachid>308798</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-01 19:39:19 -0700</bug_when>
    <thetext>Comment on attachment 308798
patch

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

&gt; Source/JavaScriptCore/jit/Repatch.cpp:765
&gt; +        if (variant.executable()-&gt;isHostFunction())

This is the fix for the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303564</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-01 19:40:24 -0700</bug_when>
    <thetext>Attachment 308798 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WasmBinding.cpp:192:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/wasm/WasmBinding.cpp:193:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303961</commentid>
    <comment_count>6</comment_count>
      <attachid>308798</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-05-02 22:35:44 -0700</bug_when>
    <thetext>Comment on attachment 308798
patch

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

A few comments, but overall looks good.

&gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:128
&gt; +    if (!Options::useCallICsForWebAssemblyToJSCalls()) {

This versus the code below are kinda hard to tell apart. Aren&apos;t the mostly similar? Could you pull the common bits out, or is it too weird?

&gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:136
&gt; +        jit.subPtr(MacroAssembler::TrustedImm32(16), MacroAssembler::stackPointerRegister);

Why 16 instead of 8?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304090</commentid>
    <comment_count>7</comment_count>
      <attachid>308798</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-03 10:11:30 -0700</bug_when>
    <thetext>Comment on attachment 308798
patch

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

thanks for the review

&gt;&gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:128
&gt;&gt; +    if (!Options::useCallICsForWebAssemblyToJSCalls()) {
&gt; 
&gt; This versus the code below are kinda hard to tell apart. Aren&apos;t the mostly similar? Could you pull the common bits out, or is it too weird?

I think it&apos;s different enough (note we only loop over signature once, not twice) that pulling out the common bits will just make everything less readable.

&gt;&gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:136
&gt;&gt; +        jit.subPtr(MacroAssembler::TrustedImm32(16), MacroAssembler::stackPointerRegister);
&gt; 
&gt; Why 16 instead of 8?

This is probably an anti pattern to use 16 directly, but the reason is it&apos;s rounded to stack alignment bytes.
I&apos;ll do this instead (which is the same as 16, but at least not hard coded):
uint32_t bytes = WTF::roundToMultipleOf(stackAlignmentBytes(), sizeof(Register));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304471</commentid>
    <comment_count>8</comment_count>
      <attachid>309003</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-03 19:18:24 -0700</bug_when>
    <thetext>Created attachment 309003
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304472</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-03 19:19:41 -0700</bug_when>
    <thetext>Attachment 309003 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WasmBinding.cpp:192:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/wasm/WasmBinding.cpp:193:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304478</commentid>
    <comment_count>10</comment_count>
      <attachid>309005</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-03 19:51:01 -0700</bug_when>
    <thetext>Created attachment 309005
patch for landing

fix style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304520</commentid>
    <comment_count>11</comment_count>
      <attachid>309005</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-03 22:50:05 -0700</bug_when>
    <thetext>Comment on attachment 309005
patch for landing

Clearing flags on attachment: 309005

Committed r216173: &lt;http://trac.webkit.org/changeset/216173&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304521</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-03 22:50:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308798</attachid>
            <date>2017-05-01 19:38:30 -0700</date>
            <delta_ts>2017-05-03 19:18:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>18443</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2MDU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE3LTA1LTAxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEhvdyB3ZSBidWlsZCBwb2x5bW9ycGhpYyBjYXNlcyBpcyB3cm9uZyB3aGVuIG1ha2luZyBhIGNh
bGwgZnJvbSBXYXNtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzE1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoZXMgZml4ZXMgYSBidWcgd2hlbiB3ZSBlbWl0IGEgcG9seW1vcnBoaWMg
Y2FsbCBJQyBmcm9tCisgICAgICAgIFdhc20uIFdlIHdlcmUgaW5jb3JyZWN0bHkgYXNzdW1pbmcg
dGhhdCBpZiB3ZSBtYWRlIGEgY2FsbCAqZnJvbSB3YXNtKiwKKyAgICAgICAgdGhlbiB0aGUgdGhp
bmcgd2UgYXJlICpjYWxsaW5nIHRvKiBkb2VzIG5vdCBoYXZlIGEgQ29kZUJsb2NrLiBUaGlzCisg
ICAgICAgIGlzIG9idmlvdXNseSB3cm9uZy4gVGhpcyBwYXRjaCBmaXhlcyB0aGUgaW5jb3JyZWN0
IGFzc3VtcHRpb24uCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFsc28gZG9lcyB0d28g
bW9yZSB0aGluZ3M6CisgICAgICAgIDEuIEFkZCBhIG5ldyBvcHRpb24gdGhhdCBtYWtlcyB1cyBt
YWtlIGNhbGxzIHRvIEpTIHVzaW5nIGEKKyAgICAgICAgc2xvdyBwYXRoIGluc3RlYWQgb2YgdXNp
bmcgYSBjYWxsIElDLgorICAgICAgICAyLiBGaXhlcyBhIHBvdGVudGlhbCBHQyBidWcgd2hlcmUg
d2UgZGlkbid0IHBvcHVsYXRlIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sncworICAgICAgICBKU1dl
YkFzc2VtYmx5TW9kdWxlIHBvaW50ZXIuCisKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6Cisg
ICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorICAgICAgICAqIHdhc20vV2FzbUJpbmRpbmcuY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjp3YXNtVG9Kcyk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oOgorICAgICAgICAqIHdhc20v
anMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKToKKwogMjAxNy0wNS0wMSAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgc3ByaW50ZigpIGlu
IEphdmFTY3JpcHRDb3JlIGRlYnVnZ2VyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAJKHJldmlzaW9uIDIxNjA1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2Miw3ICs3NjIsNyBAQCB2b2lkIGxpbmtQ
b2x5bW9ycGhpY0NhbGwoCiAgICAgLy8gRmlndXJlIG91dCB3aGF0IG91ciBjYXNlcyBhcmUuCiAg
ICAgZm9yIChDYWxsVmFyaWFudCB2YXJpYW50IDogbGlzdCkgewogICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jazsKLSAgICAgICAgaWYgKGlzV2ViQXNzZW1ibHkgfHwgdmFyaWFudC5leGVjdXRh
YmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGlmICh2YXJpYW50LmV4ZWN1dGFibGUo
KS0+aXNIb3N0RnVuY3Rpb24oKSkKICAgICAgICAgICAgIGNvZGVCbG9jayA9IG51bGxwdHI7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB2
YXJpYW50LmV4ZWN1dGFibGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgJKHJldmlzaW9uIDIxNjA1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDcgKzQ0Niw4IEBAIHR5cGVkZWYg
Y29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYodW5zaWduZWQsIHdlYkFzc2VtYmx5RmFz
dE1lbW9yeVJlZHpvbmVQYWdlcywgMTI4LCBOb3JtYWwsICJXZWJBc3NlbWJseSBmYXN0IG1lbW9y
aWVzIHVzZSA0R2lCIHZpcnR1YWwgYWxsb2NhdGlvbnMsIHBsdXMgYSByZWR6b25lIChjb3VudGVk
IGFzIG11bHRpcGxlIG9mIDY0S2lCIFdlYkFzc2VtYmx5IHBhZ2VzKSBhdCB0aGUgZW5kIHRvIGNh
dGNoIHJlZytpbW0gYWNjZXNzZXMgd2hpY2ggZXhjZWVkIDMyLWJpdCwgYW55dGhpbmcgYmV5b25k
IHRoZSByZWR6b25lIGlzIGV4cGxpY2l0bHkgYm91bmRzLWNoZWNrZWQiKSBcCiAgICAgdihib29s
LCBjcmFzaElmV2ViQXNzZW1ibHlDYW50RmFzdE1lbW9yeSwgZmFsc2UsIE5vcm1hbCwgIklmIHRy
dWUsIHdlIHdpbGwgY3Jhc2ggaWYgd2UgY2FuJ3Qgb2J0YWluIGZhc3QgbWVtb3J5IGZvciB3YXNt
LiIpIFwKICAgICB2KHVuc2lnbmVkLCB3ZWJBc3NlbWJseUZhc3RNZW1vcnlQcmVhbGxvY2F0ZUNv
dW50LCAwLCBOb3JtYWwsICJXZWJBc3NlbWJseSBmYXN0IG1lbW9yaWVzIGNhbiBiZSBwcmUtYWxs
b2NhdGVkIGF0IHByb2dyYW0gc3RhcnR1cCBhbmQgcmVtYWluIGNhY2hlZCB0byBhdm9pZCBmcmFn
bWVudGF0aW9uIGxlYWRpbmcgdG8gYm91bmRzLWNoZWNrZWQgbWVtb3J5LiBUaGlzIG51bWJlciBp
cyBhbiB1cHBlciBib3VuZCBvbiBpbml0aWFsIGFsbG9jYXRpb24gYXMgd2VsbCBhcyB0b3RhbCBj
b3VudCBvZiBmYXN0IG1lbW9yaWVzLiBaZXJvIG1lYW5zIG5vIHByZS1hbGxvY2F0aW9uLCBubyBj
YWNoaW5nLCBhbmQgbm8gbGltaXQgdG8gdGhlIG51bWJlciBvZiBydW50aW1lIGFsbG9jYXRpb25z
LiIpIFwKLSAgICB2KGJvb2wsIHVzZVdlYkFzc2VtYmx5RmFzdFRMUywgdHJ1ZSwgTm9ybWFsLCAi
SWYgdHJ1ZSwgd2Ugd2lsbCB0cnkgdG8gdXNlIGZhc3QgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgaWYg
YXZhaWxhYmxlIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtLiIpCisgICAgdihib29sLCB1c2VXZWJB
c3NlbWJseUZhc3RUTFMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdHJ5IHRvIHVz
ZSBmYXN0IHRocmVhZC1sb2NhbCBzdG9yYWdlIGlmIGF2YWlsYWJsZSBvbiB0aGUgY3VycmVudCBw
bGF0Zm9ybS4iKSBcCisgICAgdihib29sLCB1c2VDYWxsSUNzRm9yV2ViQXNzZW1ibHlUb0pTQ2Fs
bHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIENhbGxMaW5rSW5mbyB0byBp
bmxpbmUgY2FjaGUgV2FzbSB0byBKUyBjYWxscy4iKQogCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVu
Y2UgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAko
cmV2aXNpb24gMjE2MDU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDE4NSBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCCiAgICAgbWlzc2luZ0NhbGxlZVNhdmVzLmV4Y2x1
ZGUoanNDQy5tX2NhbGxlZVNhdmVSZWdpc3RlcnMpOwogICAgIEFTU0VSVChtaXNzaW5nQ2FsbGVl
U2F2ZXMuaXNFbXB0eSgpKTsKIAorICAgIGlmICghT3B0aW9uczo6dXNlQ2FsbElDc0ZvcldlYkFz
c2VtYmx5VG9KU0NhbGxzKCkpIHsKKyAgICAgICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZl
ciA9IHZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShhcmdDb3VudCAqIHNpemVvZih1aW50NjRfdCkp
OworICAgICAgICBjaGFyKiBidWZmZXIgPSBhcmdDb3VudCA/IHN0YXRpY19jYXN0PGNoYXIqPihz
Y3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpIDogbnVsbHB0cjsKKyAgICAgICAgdW5zaWduZWQg
bWFyc2hhbGxlZEdQUnMgPSAwOworICAgICAgICB1bnNpZ25lZCBtYXJzaGFsbGVkRlBScyA9IDA7
CisgICAgICAgIHVuc2lnbmVkIGJ1ZmZlck9mZnNldCA9IDA7CisgICAgICAgIHVuc2lnbmVkIGZy
T2Zmc2V0ID0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpOworICAgICAgICBjb25zdCBHUFJSZWcgc2NyYXRjaEdQUiA9
IEdQUkluZm86OnJlZ0NTMDsKKyAgICAgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKDE2KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAg
ICAgICAgaml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1h
Y3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlcikpOworCisgICAgICAgIGZvciAodW5z
aWduZWQgYXJnTnVtID0gMDsgYXJnTnVtIDwgYXJnQ291bnQ7ICsrYXJnTnVtKSB7CisgICAgICAg
ICAgICBUeXBlIGFyZ1R5cGUgPSBzaWduYXR1cmUuYXJndW1lbnQoYXJnTnVtKTsKKyAgICAgICAg
ICAgIHN3aXRjaCAoYXJnVHlwZSkgeworICAgICAgICAgICAgY2FzZSBWb2lkOgorICAgICAgICAg
ICAgY2FzZSBGdW5jOgorICAgICAgICAgICAgY2FzZSBBbnlmdW5jOgorICAgICAgICAgICAgY2Fz
ZSBJNjQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIGNhc2UgSTMyOiB7CisgICAgICAgICAgICAgICAgR1BSUmVnIGdwclJlZzsKKyAg
ICAgICAgICAgICAgICBpZiAobWFyc2hhbGxlZEdQUnMgPCB3YXNtQ0MubV9ncHJBcmdzLnNpemUo
KSkKKyAgICAgICAgICAgICAgICAgICAgZ3ByUmVnID0gd2FzbUNDLm1fZ3ByQXJnc1ttYXJzaGFs
bGVkR1BSc10uZ3ByKCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIFdlJ3ZlIGFscmVhZHkgc3BpbGxlZCBhbGwgYXJndW1lbnRzLCB0aGVzZSByZWdpc3Rl
cnMgYXJlIGF2YWlsYWJsZSBhcyBzY3JhdGNoLgorICAgICAgICAgICAgICAgICAgICBncHJSZWcg
PSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CisgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQo
SklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBmck9mZnNldCksIGdwclJl
Zyk7CisgICAgICAgICAgICAgICAgICAgIGZyT2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGppdC56ZXJvRXh0ZW5kMzJUb1B0cihn
cHJSZWcsIGdwclJlZyk7CisgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoZ3ByUmVnLCBidWZm
ZXIgKyBidWZmZXJPZmZzZXQpOworICAgICAgICAgICAgICAgICsrbWFyc2hhbGxlZEdQUnM7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEYz
MjogeworICAgICAgICAgICAgICAgIEZQUlJlZyBmcHJSZWc7CisgICAgICAgICAgICAgICAgaWYg
KG1hcnNoYWxsZWRGUFJzIDwgd2FzbUNDLm1fZnByQXJncy5zaXplKCkpCisgICAgICAgICAgICAg
ICAgICAgIGZwclJlZyA9IHdhc21DQy5tX2ZwckFyZ3NbbWFyc2hhbGxlZEZQUnNdLmZwcigpOwor
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBXZSd2ZSBhbHJl
YWR5IHNwaWxsZWQgYWxsIGFyZ3VtZW50cywgdGhlc2UgcmVnaXN0ZXJzIGFyZSBhdmFpbGFibGUg
YXMgc2NyYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgZnByUmVnID0gRlBSSW5mbzo6YXJndW1l
bnRGUFIwOworICAgICAgICAgICAgICAgICAgICBqaXQubG9hZEZsb2F0KEpJVDo6QWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZnJPZmZzZXQpLCBmcHJSZWcpOworICAgICAgICAg
ICAgICAgICAgICBmck9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBqaXQuY29udmVydEZsb2F0VG9Eb3VibGUoZnByUmVnLCBmcHJS
ZWcpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlRG91YmxlVG82NChmcHJSZWcsIHNjcmF0Y2hH
UFIpOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFIsIGJ1ZmZlciArIGJ1
ZmZlck9mZnNldCk7CisgICAgICAgICAgICAgICAgKyttYXJzaGFsbGVkRlBSczsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgRjY0OiB7Cisg
ICAgICAgICAgICAgICAgRlBSUmVnIGZwclJlZzsKKyAgICAgICAgICAgICAgICBpZiAobWFyc2hh
bGxlZEZQUnMgPCB3YXNtQ0MubV9mcHJBcmdzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAg
ZnByUmVnID0gd2FzbUNDLm1fZnByQXJnc1ttYXJzaGFsbGVkRlBSc10uZnByKCk7CisgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgc3Bp
bGxlZCBhbGwgYXJndW1lbnRzLCB0aGVzZSByZWdpc3RlcnMgYXJlIGF2YWlsYWJsZSBhcyBzY3Jh
dGNoLgorICAgICAgICAgICAgICAgICAgICBmcHJSZWcgPSBGUFJJbmZvOjphcmd1bWVudEZQUjA7
CisgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkRG91YmxlKEpJVDo6QWRkcmVzcyhHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgZnJPZmZzZXQpLCBmcHJSZWcpOworICAgICAgICAgICAgICAg
ICAgICBmck9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBqaXQubW92ZURvdWJsZVRvNjQoZnByUmVnLCBzY3JhdGNoR1BSKTsKKyAg
ICAgICAgICAgICAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSLCBidWZmZXIgKyBidWZmZXJPZmZz
ZXQpOworICAgICAgICAgICAgICAgICsrbWFyc2hhbGxlZEZQUnM7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgIH0KKyAgICAgICAgICAgfQorCisgICAgICAgICAgICBidWZmZXJP
ZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgfQorICAgICAgICBqaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgaWYgKGFyZ0NvdW50KSB7CisgICAgICAgICAg
ICAvLyBUaGUgR0Mgc2hvdWxkIG5vdCBsb29rIGF0IHRoaXMgYnVmZmVyIGF0IGFsbCwgdGhlc2Ug
YXJlbid0IEpTVmFsdWVzLgorICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxlbmd0aFB0cigpKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoMCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIH0KKworICAgICAg
ICB1aW50NjRfdCAoKmNhbGxGdW5jKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFNpZ25hdHVyZUlu
ZGV4LCB1aW50NjRfdCopID0KKyAgICAgICAgICAgIFtdIChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBjYWxsZWUsIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4LCB1aW50NjRfdCogYnVm
ZmVyKSAtPiB1aW50NjRfdCB7IAorICAgICAgICAgICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OworICAgICAgICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OworICAgICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
KnZtKTsKKyAgICAgICAgICAgICAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25h
dHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOworICAgICAgICAgICAgICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBh
cmdOdW0gPSAwOyBhcmdOdW0gPCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyArK2FyZ051bSkg
eworICAgICAgICAgICAgICAgICAgICBUeXBlIGFyZ1R5cGUgPSBzaWduYXR1cmUuYXJndW1lbnQo
YXJnTnVtKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBhcmc7CisgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAoYXJnVHlwZSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIFZvaWQ6
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRnVuYzoKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBbnlmdW5jOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEk2NDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgSTMyOgorICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0ganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oYnVmZmVyW2FyZ051bV0pKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEYzMjoKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSBGNjQ6CisgICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBqc051bWJlcihi
aXR3aXNlX2Nhc3Q8ZG91YmxlPihidWZmZXJbYXJnTnVtXSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
YXJncy5hcHBlbmQoYXJnKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGNh
bGxlZS0+bWV0aG9kVGFibGUoKnZtKS0+Z2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUp
OworICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChleGVjLCBjYWxsZWUsIGNh
bGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJncyk7CisgICAgICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCAwKTsKKworICAgICAgICAgICAgICAgIHVp
bnQ2NF90IHJlYWxSZXN1bHQ7CisgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUucmV0
dXJuVHlwZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGdW5jOgorICAgICAgICAgICAgICAg
IGNhc2UgQW55ZnVuYzoKKyAgICAgICAgICAgICAgICBjYXNlIEk2NDoKKyAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBWb2lkOgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEkzMjogeworICAgICAgICAgICAgICAgICAgICBy
ZWFsUmVzdWx0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90Pihy
ZXN1bHQudG9JbnQzMihleGVjKSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBGNjQ6CisgICAgICAgICAgICAgICAg
Y2FzZSBGMzI6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVhbFJlc3VsdCA9IGJpdHdpc2VfY2Fz
dDx1aW50NjRfdD4ocmVzdWx0LnRvTnVtYmVyKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgMCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlYWxSZXN1bHQ7CisgICAgICAgICAgICB9OworICAgICAgICAKKyAgICAgICAg
aml0LmxvYWRXYXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBqaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mQ2FsbGVlKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKSVQ6OkFk
ZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKKyAgICAgICAgCisgICAgICAg
IG1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKGppdCwgaW1wb3J0SW5kZXgsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzaWduYXR1cmVJbmRl
eCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihidWZmZXIpKTsKKyAgICAgICAgYXV0byBj
YWxsID0gaml0LmNhbGwoKTsKKyAgICAgICAgYXV0byBub0V4Y2VwdGlvbiA9IGppdC5lbWl0RXhj
ZXB0aW9uQ2hlY2soKnZtLCBBc3NlbWJseUhlbHBlcnM6OkludmVydGVkRXhjZXB0aW9uQ2hlY2sp
OworCisgICAgICAgIC8vIGV4Y2VwdGlvbiBoZXJlLgorICAgICAgICBqaXQuY29weUNhbGxlZVNh
dmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcigqdm0pOworICAgICAgICBqaXQubW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICAgICAgdm9pZCAoKmRvVW53aW5kaW5nKShFeGVjU3RhdGUqKSA9IFtdIChFeGVjU3RhdGUqIGV4
ZWMpIC0+IHZvaWQgeworICAgICAgICAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgICAg
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICAgICAgICAg
IGdlbmVyaWNVbndpbmQodm0sIGV4ZWMpOworICAgICAgICAgICAgQVNTRVJUKCEhdm0tPmNhbGxG
cmFtZUZvckNhdGNoKTsKKyAgICAgICAgfTsKKyAgICAgICAgYXV0byBleGNlcHRpb25DYWxsID0g
aml0LmNhbGwoKTsKKyAgICAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKnZtKTsKKwor
ICAgICAgICBub0V4Y2VwdGlvbi5saW5rKCZqaXQpOworICAgICAgICBzd2l0Y2ggKHNpZ25hdHVy
ZS5yZXR1cm5UeXBlKCkpIHsKKyAgICAgICAgY2FzZSBGNjQ6IHsKKyAgICAgICAgICAgIGppdC5t
b3ZlNjRUb0RvdWJsZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgRlBSSW5mbzo6cmV0dXJuVmFs
dWVGUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGMzI6
IHsKKyAgICAgICAgICAgIGppdC5tb3ZlNjRUb0RvdWJsZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
UiwgRlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIpOworICAgICAgICAgICAgaml0LmNvbnZlcnREb3Vi
bGVUb0Zsb2F0KEZQUkluZm86OnJldHVyblZhbHVlRlBSLCBGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQ
Uik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKKyAgICAgICAgaml0LnJldCgpOworCisgICAgICAgIExpbmtCdWZmZXIgbGlua0J1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxs
LCBjYWxsRnVuYyk7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhleGNlcHRpb25DYWxsLCBkb1Vu
d2luZGluZyk7CisKKyAgICAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJX
ZWJBc3NlbWJseS0+SmF2YVNjcmlwdCBpbXBvcnRbJWldICVzIiwgaW1wb3J0SW5kZXgsIHNpZ25h
dHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKSk7CisgICAgfQorCiAgICAgLy8gRklYTUUg
cGVyZm9ybSBhIHN0YWNrIGNoZWNrIGJlZm9yZSB1cGRhdGluZyBTUC4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTU0NgogCiAgICAgY29uc3QgdW5zaWduZWQgbnVt
YmVyT2ZQYXJhbWV0ZXJzID0gYXJnQ291bnQgKyAxOyAvLyBUaGVyZSBpcyBhICJ0aGlzIiBhcmd1
bWVudC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlD
b2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMTYwNTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFz
c0luZm8gSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6c19pbmZvID0geyAiV2ViQXNzZW1ibHlDb2Rl
QmxvY2siLCBudWxscHRyLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2spIH07CiAKLUpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2s6OmNyZWF0ZShWTSYgdm0sIFJlZjxXYXNtOjpDb2RlQmxvY2s+IGNvZGVCbG9jaywgY29uc3Qg
V2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uKQorSlNXZWJBc3NlbWJs
eUNvZGVCbG9jayogSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlKFZNJiB2bSwgUmVmPFdh
c206OkNvZGVCbG9jaz4gY29kZUJsb2NrLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUpCiB7
CisgICAgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uID0g
bW9kdWxlLT5tb2R1bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpOwogICAgIGF1dG8qIHJlc3VsdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KHZtLmhl
YXAsIGFsbG9jYXRpb25TaXplKG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uQ291bnQo
KSkpKSBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKHZtLCBXVEZNb3ZlKGNvZGVCbG9jayksIG1vZHVs
ZUluZm9ybWF0aW9uKTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXN1
bHQtPmZpbmlzaENyZWF0aW9uKHZtLCBtb2R1bGUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
QEAgLTYyLDYgKzYzLDEyIEBAIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OkpTV2ViQXNzZW1ibHlD
b2QKICAgICB9CiB9CiAKK3ZvaWQgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUpCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIG1fbW9kdWxlLnNldCh2bSwgdGhpcywgbW9kdWxlKTsKK30K
Kwogdm9pZCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsK
ICAgICBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKj4oY2VsbCktPkpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2s6On5KU1dlYkFzc2VtYmx5Q29kZUJsb2NrKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9j
ay5oCShyZXZpc2lvbiAyMTYwNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0lt
bW9ydGFsOwogCi0gICAgc3RhdGljIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNyZWF0ZShWTSYs
IFJlZjxXYXNtOjpDb2RlQmxvY2s+LCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYpOwor
ICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiBjcmVhdGUoVk0mLCBSZWY8V2FzbTo6
Q29kZUJsb2NrPiwgSlNXZWJBc3NlbWJseU1vZHVsZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKQEAgLTYyLDYgKzYyLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBp
c1NhZmVUb1J1bihKU1dlYkFzc2VtYmx5TWVtb3J5KikgY29uc3Q7CiAKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgSlNXZWJBc3NlbWJseU1vZHVsZSopOworCiAgICAgLy8gVGhlc2UgdHdv
IGNhbGxlZSBnZXR0ZXJzIGFyZSBvbmx5IHZhbGlkIG9uY2UgdGhlIGNhbGxlZXMgaGF2ZSBiZWVu
IHBvcHVsYXRlZC4KIAogICAgIFdhc206OkNhbGxlZSYganNFbnRyeXBvaW50Q2FsbGVlRnJvbUZ1
bmN0aW9uSW5kZXhTcGFjZSh1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3BhY2UpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5jcHAJKHJldmlzaW9uIDIxNjA1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsx
MTIsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluYWxpemVDcmVhCiAgICAgICAg
IEFTU0VSVCgmY29kZUJsb2NrLT5jb2RlQmxvY2soKSA9PSB3YXNtQ29kZUJsb2NrLnB0cigpKTsK
ICAgICAgICAgbV9jb2RlQmxvY2suc2V0KHZtLCB0aGlzLCBjb2RlQmxvY2spOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGNvZGVCbG9jayA9IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmNyZWF0ZSh2
bSwgd2FzbUNvZGVCbG9jay5jb3B5UmVmKCksIG1fbW9kdWxlLT5tb2R1bGUoKS5tb2R1bGVJbmZv
cm1hdGlvbigpKTsKKyAgICAgICAgY29kZUJsb2NrID0gSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6
Y3JlYXRlKHZtLCB3YXNtQ29kZUJsb2NrLmNvcHlSZWYoKSwgbV9tb2R1bGUuZ2V0KCkpOwogICAg
ICAgICBtX2NvZGVCbG9jay5zZXQodm0sIHRoaXMsIGNvZGVCbG9jayk7CiAgICAgICAgIG1vZHVs
ZSgpLT5zZXRDb2RlQmxvY2sodm0sIG1lbW9yeU1vZGUoKSwgY29kZUJsb2NrKTsKICAgICB9Cklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMTYwNTYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMiBAQAorMjAxNy0wNS0wMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBIb3cgd2UgYnVpbGQgcG9seW1vcnBoaWMgY2FzZXMgaXMgd3Jvbmcgd2hlbiBtYWtp
bmcgYSBjYWxsIGZyb20gV2FzbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcxNTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorCiAyMDE3LTA1LTAx
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2lu
ZyBzcHJpbnRmKCkgaW4gSmF2YVNjcmlwdENvcmUgZGVidWdnZXIKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4t
anNjLXN0cmVzcy10ZXN0cwkocmV2aXNpb24gMjE2MDU1KQorKysgVG9vbHMvU2NyaXB0cy9ydW4t
anNjLXN0cmVzcy10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMTIwMCw2ICsxMjAwLDggQEAgZGVm
IHJ1bldlYkFzc2VtYmx5CiAgICAgcHJlcGFyZUV4dHJhUmVsYXRpdmVGaWxlcyhtb2R1bGVzLm1h
cCB7IHxmfCAiLi4vIiArIGYgfSwgJGNvbGxlY3Rpb24pCiAgICAgcnVuKCJkZWZhdWx0LXdhc20i
LCAiLW0iLCAqRlRMX09QVElPTlMpCiAgICAgcnVuKCJ3YXNtLW5vLWNqaXQiLCAiLW0iLCAqKEZU
TF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJT05TKSkKKyAgICBydW4oIndhc20tZWFnZXItamV0dGlz
b24iLCAiLW0iLCAiLS1mb3JjZUNvZGVCbG9ja1RvSmV0dGlzb25EdWVUb09sZEFnZT10cnVlIiwg
KkZUTF9PUFRJT05TKQorICAgIHJ1bigid2FzbS1uby1jYWxsLWljIiwgIi1tIiwgIi0tdXNlQ2Fs
bElDc0ZvcldlYkFzc2VtYmx5VG9KU0NhbGxzPWZhbHNlIiwgKkZUTF9PUFRJT05TKQogZW5kCiAK
IGRlZiBydW5XZWJBc3NlbWJseUVtc2NyaXB0ZW4obW9kZSkKQEAgLTEyMTMsNiArMTIxNSw4IEBA
IGRlZiBydW5XZWJBc3NlbWJseUVtc2NyaXB0ZW4obW9kZSkKICAgICBwcmVwYXJlRXh0cmFSZWxh
dGl2ZUZpbGVzKFtQYXRobmFtZSgnLi4nKSArIHdhc21dLCAkY29sbGVjdGlvbikKICAgICBydW4o
ImRlZmF1bHQtd2FzbSIsICpGVExfT1BUSU9OUykKICAgICBydW4oIndhc20tbm8tY2ppdCIsICoo
RlRMX09QVElPTlMgKyBOT19DSklUX09QVElPTlMpKQorICAgIHJ1bigid2FzbS1lYWdlci1qZXR0
aXNvbiIsICItLWZvcmNlQ29kZUJsb2NrVG9KZXR0aXNvbkR1ZVRvT2xkQWdlPXRydWUiLCAqRlRM
X09QVElPTlMpCisgICAgcnVuKCJ3YXNtLW5vLWNhbGwtaWMiLCAiLS11c2VDYWxsSUNzRm9yV2Vi
QXNzZW1ibHlUb0pTQ2FsbHM9ZmFsc2UiLCAqRlRMX09QVElPTlMpCiBlbmQKIAogZGVmIHJ1bldl
YkFzc2VtYmx5U3BlY1Rlc3QobW9kZSkKQEAgLTEyMzMsNiArMTIzNyw4IEBAIGRlZiBydW5XZWJB
c3NlbWJseVNwZWNUZXN0KG1vZGUpCiAKICAgICBydW5XaXRoT3V0cHV0SGFuZGxlcigiZGVmYXVs
dC13YXNtIiwgbm9pc3lPdXRwdXRIYW5kbGVyLCAiLi4vc3BlYy1oYXJuZXNzLmpzIiwgKkZUTF9P
UFRJT05TKQogICAgIHJ1bldpdGhPdXRwdXRIYW5kbGVyKCJ3YXNtLW5vLWNqaXQiLCBub2lzeU91
dHB1dEhhbmRsZXIsICIuLi9zcGVjLWhhcm5lc3MuanMiLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJ
VF9PUFRJT05TKSkKKyAgICBydW5XaXRoT3V0cHV0SGFuZGxlcigid2FzbS1lYWdlci1qZXR0aXNv
biIsIG5vaXN5T3V0cHV0SGFuZGxlciwgIi4uL3NwZWMtaGFybmVzcy5qcyIsICItLWZvcmNlQ29k
ZUJsb2NrVG9KZXR0aXNvbkR1ZVRvT2xkQWdlPXRydWUiLCAqRlRMX09QVElPTlMpCisgICAgcnVu
V2l0aE91dHB1dEhhbmRsZXIoIndhc20tbm8tY2FsbC1pYyIsIG5vaXN5T3V0cHV0SGFuZGxlciwg
Ii4uL3NwZWMtaGFybmVzcy5qcyIsICItLXVzZUNhbGxJQ3NGb3JXZWJBc3NlbWJseVRvSlNDYWxs
cz1mYWxzZSIsICpGVExfT1BUSU9OUykKIGVuZAogCiBkZWYgcnVuQ2hha3JhKG1vZGUsIGV4Y2Vw
dGlvbiwgYmFzZWxpbmVGaWxlLCBleHRyYUZpbGVzKQo=
</data>
<flag name="review"
          id="329954"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309003</attachid>
            <date>2017-05-03 19:18:24 -0700</date>
            <delta_ts>2017-05-03 19:51:10 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>18584</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2MTY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE3LTA1LTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEhvdyB3ZSBidWlsZCBwb2x5bW9ycGhpYyBjYXNlcyBpcyB3cm9uZyB3aGVuIG1ha2luZyBhIGNh
bGwgZnJvbSBXYXNtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzE1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBKRiBCYXN0aWVuLgorCisgICAgICAg
IFRoaXMgcGF0Y2hlcyBmaXhlcyBhIGJ1ZyB3aGVuIHdlIGVtaXQgYSBwb2x5bW9ycGhpYyBjYWxs
IElDIGZyb20KKyAgICAgICAgV2FzbS4gV2Ugd2VyZSBpbmNvcnJlY3RseSBhc3N1bWluZyB0aGF0
IGlmIHdlIG1hZGUgYSBjYWxsICpmcm9tIHdhc20qLAorICAgICAgICB0aGVuIHRoZSB0aGluZyB3
ZSBhcmUgKmNhbGxpbmcgdG8qIGRvZXMgbm90IGhhdmUgYSBDb2RlQmxvY2suIFRoaXMKKyAgICAg
ICAgaXMgb2J2aW91c2x5IHdyb25nLiBUaGlzIHBhdGNoIGZpeGVzIHRoZSBpbmNvcnJlY3QgYXNz
dW1wdGlvbi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkb2VzIHR3byBtb3Jl
IHRoaW5nczoKKyAgICAgICAgMS4gQWRkIGEgbmV3IG9wdGlvbiB0aGF0IG1ha2VzIHVzIG1ha2Ug
Y2FsbHMgdG8gSlMgdXNpbmcgYQorICAgICAgICBzbG93IHBhdGggaW5zdGVhZCBvZiB1c2luZyBh
IGNhbGwgSUMuCisgICAgICAgIDIuIEZpeGVzIGEgcG90ZW50aWFsIEdDIGJ1ZyB3aGVyZSB3ZSBk
aWRuJ3QgcG9wdWxhdGUgSlNXZWJBc3NlbWJseUNvZGVCbG9jaydzCisgICAgICAgIEpTV2ViQXNz
ZW1ibHlNb2R1bGUgcG9pbnRlci4KKworICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAg
ICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
Lmg6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAgICAgIChKU0M6Oldhc206
Ondhc21Ub0pzKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmg6CisgICAgICAgICogd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmZpbmFsaXplQ3JlYXRpb24pOgorCiAyMDE3LTA1LTAzICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgdGhlIENMb29wIGZvciBDUFUoQVJNNjRFKS4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMjE2MTY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAvLyBG
aWd1cmUgb3V0IHdoYXQgb3VyIGNhc2VzIGFyZS4KICAgICBmb3IgKENhbGxWYXJpYW50IHZhcmlh
bnQgOiBsaXN0KSB7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrOwotICAgICAgICBpZiAo
aXNXZWJBc3NlbWJseSB8fCB2YXJpYW50LmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24oKSkK
KyAgICAgICAgaWYgKHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpKQogICAg
ICAgICAgICAgY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHZhcmlhbnQuZXhlY3V0YWJsZSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjE2MTY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NDYsNyArNDQ2LDggQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7
CiAgICAgdih1bnNpZ25lZCwgd2ViQXNzZW1ibHlGYXN0TWVtb3J5UmVkem9uZVBhZ2VzLCAxMjgs
IE5vcm1hbCwgIldlYkFzc2VtYmx5IGZhc3QgbWVtb3JpZXMgdXNlIDRHaUIgdmlydHVhbCBhbGxv
Y2F0aW9ucywgcGx1cyBhIHJlZHpvbmUgKGNvdW50ZWQgYXMgbXVsdGlwbGUgb2YgNjRLaUIgV2Vi
QXNzZW1ibHkgcGFnZXMpIGF0IHRoZSBlbmQgdG8gY2F0Y2ggcmVnK2ltbSBhY2Nlc3NlcyB3aGlj
aCBleGNlZWQgMzItYml0LCBhbnl0aGluZyBiZXlvbmQgdGhlIHJlZHpvbmUgaXMgZXhwbGljaXRs
eSBib3VuZHMtY2hlY2tlZCIpIFwKICAgICB2KGJvb2wsIGNyYXNoSWZXZWJBc3NlbWJseUNhbnRG
YXN0TWVtb3J5LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBjcmFzaCBpZiB3ZSBj
YW4ndCBvYnRhaW4gZmFzdCBtZW1vcnkgZm9yIHdhc20uIikgXAogICAgIHYodW5zaWduZWQsIHdl
YkFzc2VtYmx5RmFzdE1lbW9yeVByZWFsbG9jYXRlQ291bnQsIDAsIE5vcm1hbCwgIldlYkFzc2Vt
Ymx5IGZhc3QgbWVtb3JpZXMgY2FuIGJlIHByZS1hbGxvY2F0ZWQgYXQgcHJvZ3JhbSBzdGFydHVw
IGFuZCByZW1haW4gY2FjaGVkIHRvIGF2b2lkIGZyYWdtZW50YXRpb24gbGVhZGluZyB0byBib3Vu
ZHMtY2hlY2tlZCBtZW1vcnkuIFRoaXMgbnVtYmVyIGlzIGFuIHVwcGVyIGJvdW5kIG9uIGluaXRp
YWwgYWxsb2NhdGlvbiBhcyB3ZWxsIGFzIHRvdGFsIGNvdW50IG9mIGZhc3QgbWVtb3JpZXMuIFpl
cm8gbWVhbnMgbm8gcHJlLWFsbG9jYXRpb24sIG5vIGNhY2hpbmcsIGFuZCBubyBsaW1pdCB0byB0
aGUgbnVtYmVyIG9mIHJ1bnRpbWUgYWxsb2NhdGlvbnMuIikgXAotICAgIHYoYm9vbCwgdXNlV2Vi
QXNzZW1ibHlGYXN0VExTLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHRyeSB0byB1
c2UgZmFzdCB0aHJlYWQtbG9jYWwgc3RvcmFnZSBpZiBhdmFpbGFibGUgb24gdGhlIGN1cnJlbnQg
cGxhdGZvcm0uIikKKyAgICB2KGJvb2wsIHVzZVdlYkFzc2VtYmx5RmFzdFRMUywgdHJ1ZSwgTm9y
bWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB0cnkgdG8gdXNlIGZhc3QgdGhyZWFkLWxvY2FsIHN0b3Jh
Z2UgaWYgYXZhaWxhYmxlIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtLiIpIFwKKyAgICB2KGJvb2ws
IHVzZUNhbGxJQ3NGb3JXZWJBc3NlbWJseVRvSlNDYWxscywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1
ZSwgd2Ugd2lsbCB1c2UgQ2FsbExpbmtJbmZvIHRvIGlubGluZSBjYWNoZSBXYXNtIHRvIEpTIGNh
bGxzLiIpCiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCShyZXZpc2lvbiAyMTYxNjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyNSw2ICsxMjUsMTg2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9KcyhWTSogdm0s
IEIKICAgICBtaXNzaW5nQ2FsbGVlU2F2ZXMuZXhjbHVkZShqc0NDLm1fY2FsbGVlU2F2ZVJlZ2lz
dGVycyk7CiAgICAgQVNTRVJUKG1pc3NpbmdDYWxsZWVTYXZlcy5pc0VtcHR5KCkpOwogCisgICAg
aWYgKCFPcHRpb25zOjp1c2VDYWxsSUNzRm9yV2ViQXNzZW1ibHlUb0pTQ2FsbHMoKSkgeworICAg
ICAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0tPnNjcmF0Y2hCdWZmZXJGb3JT
aXplKGFyZ0NvdW50ICogc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgIGNoYXIqIGJ1ZmZlciA9
IGFyZ0NvdW50ID8gc3RhdGljX2Nhc3Q8Y2hhcio+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIo
KSkgOiBudWxscHRyOworICAgICAgICB1bnNpZ25lZCBtYXJzaGFsbGVkR1BScyA9IDA7CisgICAg
ICAgIHVuc2lnbmVkIG1hcnNoYWxsZWRGUFJzID0gMDsKKyAgICAgICAgdW5zaWduZWQgYnVmZmVy
T2Zmc2V0ID0gMDsKKyAgICAgICAgdW5zaWduZWQgZnJPZmZzZXQgPSBDYWxsRnJhbWU6OmhlYWRl
clNpemVJblJlZ2lzdGVycyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7Cisg
ICAgICAgIGNvbnN0IEdQUlJlZyBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnQ1MwOworICAgICAg
ICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgc2l6ZW9mKFJlZ2lzdGVyKSkpLCBNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBqaXQuc3RvcmVQdHIo
c2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdOdW0gPSAwOyBh
cmdOdW0gPCBhcmdDb3VudDsgKythcmdOdW0pIHsKKyAgICAgICAgICAgIFR5cGUgYXJnVHlwZSA9
IHNpZ25hdHVyZS5hcmd1bWVudChhcmdOdW0pOworICAgICAgICAgICAgc3dpdGNoIChhcmdUeXBl
KSB7CisgICAgICAgICAgICBjYXNlIFZvaWQ6CisgICAgICAgICAgICBjYXNlIEZ1bmM6CisgICAg
ICAgICAgICBjYXNlIEFueWZ1bmM6CisgICAgICAgICAgICBjYXNlIEk2NDoKKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgY2FzZSBJMzI6
IHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZ3ByUmVnOworICAgICAgICAgICAgICAgIGlmICht
YXJzaGFsbGVkR1BScyA8IHdhc21DQy5tX2dwckFyZ3Muc2l6ZSgpKQorICAgICAgICAgICAgICAg
ICAgICBncHJSZWcgPSB3YXNtQ0MubV9ncHJBcmdzW21hcnNoYWxsZWRHUFJzXS5ncHIoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFk
eSBzcGlsbGVkIGFsbCBhcmd1bWVudHMsIHRoZXNlIHJlZ2lzdGVycyBhcmUgYXZhaWxhYmxlIGFz
IHNjcmF0Y2guCisgICAgICAgICAgICAgICAgICAgIGdwclJlZyA9IEdQUkluZm86OmFyZ3VtZW50
R1BSMDsKKyAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChKSVQ6OkFkZHJlc3MoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGZyT2Zmc2V0KSwgZ3ByUmVnKTsKKyAgICAgICAgICAgICAg
ICAgICAgZnJPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwclJlZywgZ3ByUmVnKTsKKyAg
ICAgICAgICAgICAgICBqaXQuc3RvcmU2NChncHJSZWcsIGJ1ZmZlciArIGJ1ZmZlck9mZnNldCk7
CisgICAgICAgICAgICAgICAgKyttYXJzaGFsbGVkR1BSczsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgRjMyOiB7CisgICAgICAgICAgICAg
ICAgRlBSUmVnIGZwclJlZzsKKyAgICAgICAgICAgICAgICBpZiAobWFyc2hhbGxlZEZQUnMgPCB3
YXNtQ0MubV9mcHJBcmdzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgZnByUmVnID0gd2Fz
bUNDLm1fZnByQXJnc1ttYXJzaGFsbGVkRlBSc10uZnByKCk7CisgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgc3BpbGxlZCBhbGwgYXJn
dW1lbnRzLCB0aGVzZSByZWdpc3RlcnMgYXJlIGF2YWlsYWJsZSBhcyBzY3JhdGNoLgorICAgICAg
ICAgICAgICAgICAgICBmcHJSZWcgPSBGUFJJbmZvOjphcmd1bWVudEZQUjA7CisgICAgICAgICAg
ICAgICAgICAgIGppdC5sb2FkRmxvYXQoSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBmck9mZnNldCksIGZwclJlZyk7CisgICAgICAgICAgICAgICAgICAgIGZyT2Zmc2V0
ICs9IHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGppdC5jb252ZXJ0RmxvYXRUb0RvdWJsZShmcHJSZWcsIGZwclJlZyk7CisgICAgICAgICAgICAg
ICAgaml0Lm1vdmVEb3VibGVUbzY0KGZwclJlZywgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAg
ICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUiwgYnVmZmVyICsgYnVmZmVyT2Zmc2V0KTsKKyAgICAg
ICAgICAgICAgICArK21hcnNoYWxsZWRGUFJzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBGNjQ6IHsKKyAgICAgICAgICAgICAgICBGUFJS
ZWcgZnByUmVnOworICAgICAgICAgICAgICAgIGlmIChtYXJzaGFsbGVkRlBScyA8IHdhc21DQy5t
X2ZwckFyZ3Muc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICBmcHJSZWcgPSB3YXNtQ0MubV9m
cHJBcmdzW21hcnNoYWxsZWRGUFJzXS5mcHIoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBzcGlsbGVkIGFsbCBhcmd1bWVudHMs
IHRoZXNlIHJlZ2lzdGVycyBhcmUgYXZhaWxhYmxlIGFzIHNjcmF0Y2guCisgICAgICAgICAgICAg
ICAgICAgIGZwclJlZyA9IEZQUkluZm86OmFyZ3VtZW50RlBSMDsKKyAgICAgICAgICAgICAgICAg
ICAgaml0LmxvYWREb3VibGUoSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBmck9mZnNldCksIGZwclJlZyk7CisgICAgICAgICAgICAgICAgICAgIGZyT2Zmc2V0ICs9IHNp
emVvZihSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGppdC5t
b3ZlRG91YmxlVG82NChmcHJSZWcsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIGppdC5z
dG9yZTY0KHNjcmF0Y2hHUFIsIGJ1ZmZlciArIGJ1ZmZlck9mZnNldCk7CisgICAgICAgICAgICAg
ICAgKyttYXJzaGFsbGVkRlBSczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
fQorICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJ1ZmZlck9mZnNldCArPSBzaXplb2YoUmVn
aXN0ZXIpOworICAgICAgICB9CisgICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciksIHNjcmF0Y2hHUFIp
OworICAgICAgICBpZiAoYXJnQ291bnQpIHsKKyAgICAgICAgICAgIC8vIFRoZSBHQyBzaG91bGQg
bm90IGxvb2sgYXQgdGhpcyBidWZmZXIgYXQgYWxsLCB0aGVzZSBhcmVuJ3QgSlNWYWx1ZXMuCisg
ICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1
ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAg
ICAgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigwKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQ2NF90ICgqY2FsbEZ1
bmMpKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU2lnbmF0dXJlSW5kZXgsIHVpbnQ2NF90KikgPQor
ICAgICAgICAgICAgW10gKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGNhbGxlZSwgU2lnbmF0
dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgsIHVpbnQ2NF90KiBidWZmZXIpIC0+IHVpbnQ2NF90IHsg
CisgICAgICAgICAgICAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgICAgICAgICAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgICAgICAgICAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworICAgICAgICAgICAg
ICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246Omdl
dChzaWduYXR1cmVJbmRleCk7CisgICAgICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJnczsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ051bSA9IDA7IGFyZ051bSA8
IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7ICsrYXJnTnVtKSB7CisgICAgICAgICAgICAgICAg
ICAgIFR5cGUgYXJnVHlwZSA9IHNpZ25hdHVyZS5hcmd1bWVudChhcmdOdW0pOworICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlIGFyZzsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhcmdU
eXBlKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVm9pZDoKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBGdW5jOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFueWZ1bmM6CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgSTY0OgorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJMzI6CisgICAg
ICAgICAgICAgICAgICAgICAgICBhcmcgPSBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pihi
dWZmZXJbYXJnTnVtXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgRjMyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEY2NDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGpzTnVtYmVyKGJpdHdpc2VfY2FzdDxkb3VibGU+
KGJ1ZmZlclthcmdOdW1dKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZChhcmcpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwor
ICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gY2FsbGVlLT5tZXRob2RUYWJsZSgq
dm0pLT5nZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgICAgICAgICAgICAg
SlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGNhbGxlZSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBq
c1VuZGVmaW5lZCgpLCBhcmdzKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIDApOworCisgICAgICAgICAgICAgICAgdWludDY0X3QgcmVhbFJlc3VsdDsK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5yZXR1cm5UeXBlKCkpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIEZ1bmM6CisgICAgICAgICAgICAgICAgY2FzZSBBbnlmdW5jOgorICAg
ICAgICAgICAgICAgIGNhc2UgSTY0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIFZvaWQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgSTMyOiB7CisgICAgICAgICAgICAgICAgICAgIHJlYWxSZXN1bHQgPSBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc3VsdC50b0ludDMyKGV4ZWMp
KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBjYXNlIEY2NDoKKyAgICAgICAgICAgICAgICBjYXNlIEYzMjogeworICAgICAg
ICAgICAgICAgICAgICByZWFsUmVzdWx0ID0gYml0d2lzZV9jYXN0PHVpbnQ2NF90PihyZXN1bHQu
dG9OdW1iZXIoZXhlYykpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVhbFJlc3Vs
dDsKKyAgICAgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0
KEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6
b2Zmc2V0T2ZDYWxsZWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIGppdC5z
dG9yZVB0cihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSkpOworICAgICAgICAKKyAgICAgICAgbWF0ZXJpYWxpemVJbXBvcnRK
U0NlbGwoaml0LCBpbXBvcnRJbmRleCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID49IDQsICJX
ZSByZWx5IG9uIHRoaXMgd2l0aCB0aGUgY2FsbCBiZWxvdy4iKTsKKyAgICAgICAgaml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJJbmZvOjphcmd1bWVudEdQUjEsIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKHNpZ25hdHVyZUluZGV4KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGJ1ZmZlcikpOworICAgICAgICBhdXRvIGNhbGwgPSBqaXQuY2FsbCgpOworICAgICAgICBh
dXRvIG5vRXhjZXB0aW9uID0gaml0LmVtaXRFeGNlcHRpb25DaGVjaygqdm0sIEFzc2VtYmx5SGVs
cGVyczo6SW52ZXJ0ZWRFeGNlcHRpb25DaGVjayk7CisKKyAgICAgICAgLy8gZXhjZXB0aW9uIGhl
cmUuCisgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVz
QnVmZmVyKCp2bSk7CisgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICB2b2lkICgqZG9VbndpbmRpbmcpKEV4
ZWNTdGF0ZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYykgLT4gdm9pZCB7CisgICAgICAgICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOworICAgICAgICAgICAgZ2VuZXJpY1Vud2luZCh2bSwgZXhlYyk7Cisg
ICAgICAgICAgICBBU1NFUlQoISF2bS0+Y2FsbEZyYW1lRm9yQ2F0Y2gpOworICAgICAgICB9Owor
ICAgICAgICBhdXRvIGV4Y2VwdGlvbkNhbGwgPSBqaXQuY2FsbCgpOworICAgICAgICBqaXQuanVt
cFRvRXhjZXB0aW9uSGFuZGxlcigqdm0pOworCisgICAgICAgIG5vRXhjZXB0aW9uLmxpbmsoJmpp
dCk7CisgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLnJldHVyblR5cGUoKSkgeworICAgICAgICBj
YXNlIEY2NDogeworICAgICAgICAgICAgaml0Lm1vdmU2NFRvRG91YmxlKEdQUkluZm86OnJldHVy
blZhbHVlR1BSLCBGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEYzMjogeworICAgICAgICAgICAgaml0Lm1vdmU2NFRv
RG91YmxlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7
CisgICAgICAgICAgICBqaXQuY29udmVydERvdWJsZVRvRmxvYXQoRlBSSW5mbzo6cmV0dXJuVmFs
dWVGUFIsIEZQUkluZm86OnJldHVyblZhbHVlRlBSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBqaXQucmV0KCk7
CisKKyAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsK
KyAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIGNhbGxGdW5jKTsKKyAgICAgICAgbGlua0J1
ZmZlci5saW5rKGV4Y2VwdGlvbkNhbGwsIGRvVW53aW5kaW5nKTsKKworICAgICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAoIldlYkFzc2VtYmx5LT5KYXZhU2NyaXB0IGltcG9y
dFslaV0gJXMiLCBpbXBvcnRJbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRh
KCkpKTsKKyAgICB9CisKICAgICAvLyBGSVhNRSBwZXJmb3JtIGEgc3RhY2sgY2hlY2sgYmVmb3Jl
IHVwZGF0aW5nIFNQLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1
NTQ2CiAKICAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlBhcmFtZXRlcnMgPSBhcmdDb3VudCAr
IDE7IC8vIFRoZXJlIGlzIGEgInRoaXMiIGFyZ3VtZW50LgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAJ
KHJldmlzaW9uIDIxNjE2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMCArNDEsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
OjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseUNvZGVCbG9jayIsIG51bGxwdHIsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgfTsKIAotSlNXZWJBc3NlbWJseUNv
ZGVCbG9jayogSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlKFZNJiB2bSwgUmVmPFdhc206
OkNvZGVCbG9jaz4gY29kZUJsb2NrLCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9k
dWxlSW5mb3JtYXRpb24pCitKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiBKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrOjpjcmVhdGUoVk0mIHZtLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiBjb2RlQmxvY2ssIEpT
V2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSkKIHsKKyAgICBjb25zdCBXYXNtOjpNb2R1bGVJbmZv
cm1hdGlvbiYgbW9kdWxlSW5mb3JtYXRpb24gPSBtb2R1bGUtPm1vZHVsZSgpLm1vZHVsZUluZm9y
bWF0aW9uKCk7CiAgICAgYXV0byogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4odm0uaGVhcCwgYWxsb2NhdGlvblNpemUobW9kdWxlSW5m
b3JtYXRpb24uaW1wb3J0RnVuY3Rpb25Db3VudCgpKSkpIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2so
dm0sIFdURk1vdmUoY29kZUJsb2NrKSwgbW9kdWxlSW5mb3JtYXRpb24pOwotICAgIHJlc3VsdC0+
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIG1vZHVs
ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNjIsNiArNjMsMTIgQEAgSlNXZWJBc3Nl
bWJseUNvZGVCbG9jazo6SlNXZWJBc3NlbWJseUNvZAogICAgIH0KIH0KIAordm9pZCBKU1dlYkFz
c2VtYmx5Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTV2ViQXNzZW1ibHlNb2R1
bGUqIG1vZHVsZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgbV9tb2R1
bGUuc2V0KHZtLCB0aGlzLCBtb2R1bGUpOworfQorCiB2b2lkIEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2s6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewogICAgIHN0YXRpY19jYXN0PEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2sqPihjZWxsKS0+SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6fkpTV2ViQXNzZW1i
bHlDb2RlQmxvY2soKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgJKHJldmlzaW9uIDIxNjE2OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwg
QmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgSlNXZWJB
c3NlbWJseUNvZGVCbG9jayogY3JlYXRlKFZNJiwgUmVmPFdhc206OkNvZGVCbG9jaz4sIGNvbnN0
IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJik7CisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2sqIGNyZWF0ZShWTSYsIFJlZjxXYXNtOjpDb2RlQmxvY2s+LCBKU1dlYkFzc2VtYmx5TW9k
dWxlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwpAQCAtNjIsNiAr
NjIsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU2FmZVRvUnVuKEpTV2ViQXNzZW1ibHlNZW1v
cnkqKSBjb25zdDsKIAorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1dlYkFzc2VtYmx5
TW9kdWxlKik7CisKICAgICAvLyBUaGVzZSB0d28gY2FsbGVlIGdldHRlcnMgYXJlIG9ubHkgdmFs
aWQgb25jZSB0aGUgY2FsbGVlcyBoYXZlIGJlZW4gcG9wdWxhdGVkLgogCiAgICAgV2FzbTo6Q2Fs
bGVlJiBqc0VudHJ5cG9pbnRDYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKHVuc2lnbmVkIGZ1
bmN0aW9uSW5kZXhTcGFjZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAkocmV2aXNpb24gMjE2MTY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgSlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpmaW5hbGl6ZUNyZWEKICAgICAgICAgQVNTRVJUKCZjb2RlQmxvY2stPmNvZGVCbG9j
aygpID09IHdhc21Db2RlQmxvY2sucHRyKCkpOwogICAgICAgICBtX2NvZGVCbG9jay5zZXQodm0s
IHRoaXMsIGNvZGVCbG9jayk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY29kZUJsb2NrID0gSlNX
ZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlKHZtLCB3YXNtQ29kZUJsb2NrLmNvcHlSZWYoKSwg
bV9tb2R1bGUtPm1vZHVsZSgpLm1vZHVsZUluZm9ybWF0aW9uKCkpOworICAgICAgICBjb2RlQmxv
Y2sgPSBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpjcmVhdGUodm0sIHdhc21Db2RlQmxvY2suY29w
eVJlZigpLCBtX21vZHVsZS5nZXQoKSk7CiAgICAgICAgIG1fY29kZUJsb2NrLnNldCh2bSwgdGhp
cywgY29kZUJsb2NrKTsKICAgICAgICAgbW9kdWxlKCktPnNldENvZGVCbG9jayh2bSwgbWVtb3J5
TW9kZSgpLCBjb2RlQmxvY2spOwogICAgIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjE2OCkKKysrIFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE3LTA1LTAzICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEhvdyB3ZSBidWlsZCBwb2x5bW9y
cGhpYyBjYXNlcyBpcyB3cm9uZyB3aGVuIG1ha2luZyBhIGNhbGwgZnJvbSBXYXNtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE1MjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBKRiBCYXN0aWVuLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0czoKKwogMjAxNy0wNS0wMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxNjE2MCBhbmQg
cjIxNjE2MS4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkocmV2aXNpb24gMjE2
MTY4KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkod29ya2luZyBjb3B5
KQpAQCAtMTIwMCw2ICsxMjAwLDggQEAgZGVmIHJ1bldlYkFzc2VtYmx5CiAgICAgcHJlcGFyZUV4
dHJhUmVsYXRpdmVGaWxlcyhtb2R1bGVzLm1hcCB7IHxmfCAiLi4vIiArIGYgfSwgJGNvbGxlY3Rp
b24pCiAgICAgcnVuKCJkZWZhdWx0LXdhc20iLCAiLW0iLCAqRlRMX09QVElPTlMpCiAgICAgcnVu
KCJ3YXNtLW5vLWNqaXQiLCAiLW0iLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJT05TKSkK
KyAgICBydW4oIndhc20tZWFnZXItamV0dGlzb24iLCAiLW0iLCAiLS1mb3JjZUNvZGVCbG9ja1Rv
SmV0dGlzb25EdWVUb09sZEFnZT10cnVlIiwgKkZUTF9PUFRJT05TKQorICAgIHJ1bigid2FzbS1u
by1jYWxsLWljIiwgIi1tIiwgIi0tdXNlQ2FsbElDc0ZvcldlYkFzc2VtYmx5VG9KU0NhbGxzPWZh
bHNlIiwgKkZUTF9PUFRJT05TKQogZW5kCiAKIGRlZiBydW5XZWJBc3NlbWJseUVtc2NyaXB0ZW4o
bW9kZSkKQEAgLTEyMTMsNiArMTIxNSw4IEBAIGRlZiBydW5XZWJBc3NlbWJseUVtc2NyaXB0ZW4o
bW9kZSkKICAgICBwcmVwYXJlRXh0cmFSZWxhdGl2ZUZpbGVzKFtQYXRobmFtZSgnLi4nKSArIHdh
c21dLCAkY29sbGVjdGlvbikKICAgICBydW4oImRlZmF1bHQtd2FzbSIsICpGVExfT1BUSU9OUykK
ICAgICBydW4oIndhc20tbm8tY2ppdCIsICooRlRMX09QVElPTlMgKyBOT19DSklUX09QVElPTlMp
KQorICAgIHJ1bigid2FzbS1lYWdlci1qZXR0aXNvbiIsICItLWZvcmNlQ29kZUJsb2NrVG9KZXR0
aXNvbkR1ZVRvT2xkQWdlPXRydWUiLCAqRlRMX09QVElPTlMpCisgICAgcnVuKCJ3YXNtLW5vLWNh
bGwtaWMiLCAiLS11c2VDYWxsSUNzRm9yV2ViQXNzZW1ibHlUb0pTQ2FsbHM9ZmFsc2UiLCAqRlRM
X09QVElPTlMpCiBlbmQKIAogZGVmIHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QobW9kZSkKQEAgLTEy
MzMsNiArMTIzNyw4IEBAIGRlZiBydW5XZWJBc3NlbWJseVNwZWNUZXN0KG1vZGUpCiAKICAgICBy
dW5XaXRoT3V0cHV0SGFuZGxlcigiZGVmYXVsdC13YXNtIiwgbm9pc3lPdXRwdXRIYW5kbGVyLCAi
Li4vc3BlYy1oYXJuZXNzLmpzIiwgKkZUTF9PUFRJT05TKQogICAgIHJ1bldpdGhPdXRwdXRIYW5k
bGVyKCJ3YXNtLW5vLWNqaXQiLCBub2lzeU91dHB1dEhhbmRsZXIsICIuLi9zcGVjLWhhcm5lc3Mu
anMiLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJT05TKSkKKyAgICBydW5XaXRoT3V0cHV0
SGFuZGxlcigid2FzbS1lYWdlci1qZXR0aXNvbiIsIG5vaXN5T3V0cHV0SGFuZGxlciwgIi4uL3Nw
ZWMtaGFybmVzcy5qcyIsICItLWZvcmNlQ29kZUJsb2NrVG9KZXR0aXNvbkR1ZVRvT2xkQWdlPXRy
dWUiLCAqRlRMX09QVElPTlMpCisgICAgcnVuV2l0aE91dHB1dEhhbmRsZXIoIndhc20tbm8tY2Fs
bC1pYyIsIG5vaXN5T3V0cHV0SGFuZGxlciwgIi4uL3NwZWMtaGFybmVzcy5qcyIsICItLXVzZUNh
bGxJQ3NGb3JXZWJBc3NlbWJseVRvSlNDYWxscz1mYWxzZSIsICpGVExfT1BUSU9OUykKIGVuZAog
CiBkZWYgcnVuQ2hha3JhKG1vZGUsIGV4Y2VwdGlvbiwgYmFzZWxpbmVGaWxlLCBleHRyYUZpbGVz
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309005</attachid>
            <date>2017-05-03 19:51:01 -0700</date>
            <delta_ts>2017-05-03 22:50:05 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>18586</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2MTY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE3LTA1LTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEhvdyB3ZSBidWlsZCBwb2x5bW9ycGhpYyBjYXNlcyBpcyB3cm9uZyB3aGVuIG1ha2luZyBhIGNh
bGwgZnJvbSBXYXNtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzE1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBKRiBCYXN0aWVuLgorCisgICAgICAg
IFRoaXMgcGF0Y2hlcyBmaXhlcyBhIGJ1ZyB3aGVuIHdlIGVtaXQgYSBwb2x5bW9ycGhpYyBjYWxs
IElDIGZyb20KKyAgICAgICAgV2FzbS4gV2Ugd2VyZSBpbmNvcnJlY3RseSBhc3N1bWluZyB0aGF0
IGlmIHdlIG1hZGUgYSBjYWxsICpmcm9tIHdhc20qLAorICAgICAgICB0aGVuIHRoZSB0aGluZyB3
ZSBhcmUgKmNhbGxpbmcgdG8qIGRvZXMgbm90IGhhdmUgYSBDb2RlQmxvY2suIFRoaXMKKyAgICAg
ICAgaXMgb2J2aW91c2x5IHdyb25nLiBUaGlzIHBhdGNoIGZpeGVzIHRoZSBpbmNvcnJlY3QgYXNz
dW1wdGlvbi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkb2VzIHR3byBtb3Jl
IHRoaW5nczoKKyAgICAgICAgMS4gQWRkIGEgbmV3IG9wdGlvbiB0aGF0IG1ha2VzIHVzIG1ha2Ug
Y2FsbHMgdG8gSlMgdXNpbmcgYQorICAgICAgICBzbG93IHBhdGggaW5zdGVhZCBvZiB1c2luZyBh
IGNhbGwgSUMuCisgICAgICAgIDIuIEZpeGVzIGEgcG90ZW50aWFsIEdDIGJ1ZyB3aGVyZSB3ZSBk
aWRuJ3QgcG9wdWxhdGUgSlNXZWJBc3NlbWJseUNvZGVCbG9jaydzCisgICAgICAgIEpTV2ViQXNz
ZW1ibHlNb2R1bGUgcG9pbnRlci4KKworICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAg
ICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
Lmg6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAgICAgIChKU0M6Oldhc206
Ondhc21Ub0pzKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmg6CisgICAgICAgICogd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmZpbmFsaXplQ3JlYXRpb24pOgorCiAyMDE3LTA1LTAzICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgdGhlIENMb29wIGZvciBDUFUoQVJNNjRFKS4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMjE2MTY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAvLyBG
aWd1cmUgb3V0IHdoYXQgb3VyIGNhc2VzIGFyZS4KICAgICBmb3IgKENhbGxWYXJpYW50IHZhcmlh
bnQgOiBsaXN0KSB7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrOwotICAgICAgICBpZiAo
aXNXZWJBc3NlbWJseSB8fCB2YXJpYW50LmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24oKSkK
KyAgICAgICAgaWYgKHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpKQogICAg
ICAgICAgICAgY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHZhcmlhbnQuZXhlY3V0YWJsZSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjE2MTY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NDYsNyArNDQ2LDggQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7
CiAgICAgdih1bnNpZ25lZCwgd2ViQXNzZW1ibHlGYXN0TWVtb3J5UmVkem9uZVBhZ2VzLCAxMjgs
IE5vcm1hbCwgIldlYkFzc2VtYmx5IGZhc3QgbWVtb3JpZXMgdXNlIDRHaUIgdmlydHVhbCBhbGxv
Y2F0aW9ucywgcGx1cyBhIHJlZHpvbmUgKGNvdW50ZWQgYXMgbXVsdGlwbGUgb2YgNjRLaUIgV2Vi
QXNzZW1ibHkgcGFnZXMpIGF0IHRoZSBlbmQgdG8gY2F0Y2ggcmVnK2ltbSBhY2Nlc3NlcyB3aGlj
aCBleGNlZWQgMzItYml0LCBhbnl0aGluZyBiZXlvbmQgdGhlIHJlZHpvbmUgaXMgZXhwbGljaXRs
eSBib3VuZHMtY2hlY2tlZCIpIFwKICAgICB2KGJvb2wsIGNyYXNoSWZXZWJBc3NlbWJseUNhbnRG
YXN0TWVtb3J5LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBjcmFzaCBpZiB3ZSBj
YW4ndCBvYnRhaW4gZmFzdCBtZW1vcnkgZm9yIHdhc20uIikgXAogICAgIHYodW5zaWduZWQsIHdl
YkFzc2VtYmx5RmFzdE1lbW9yeVByZWFsbG9jYXRlQ291bnQsIDAsIE5vcm1hbCwgIldlYkFzc2Vt
Ymx5IGZhc3QgbWVtb3JpZXMgY2FuIGJlIHByZS1hbGxvY2F0ZWQgYXQgcHJvZ3JhbSBzdGFydHVw
IGFuZCByZW1haW4gY2FjaGVkIHRvIGF2b2lkIGZyYWdtZW50YXRpb24gbGVhZGluZyB0byBib3Vu
ZHMtY2hlY2tlZCBtZW1vcnkuIFRoaXMgbnVtYmVyIGlzIGFuIHVwcGVyIGJvdW5kIG9uIGluaXRp
YWwgYWxsb2NhdGlvbiBhcyB3ZWxsIGFzIHRvdGFsIGNvdW50IG9mIGZhc3QgbWVtb3JpZXMuIFpl
cm8gbWVhbnMgbm8gcHJlLWFsbG9jYXRpb24sIG5vIGNhY2hpbmcsIGFuZCBubyBsaW1pdCB0byB0
aGUgbnVtYmVyIG9mIHJ1bnRpbWUgYWxsb2NhdGlvbnMuIikgXAotICAgIHYoYm9vbCwgdXNlV2Vi
QXNzZW1ibHlGYXN0VExTLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHRyeSB0byB1
c2UgZmFzdCB0aHJlYWQtbG9jYWwgc3RvcmFnZSBpZiBhdmFpbGFibGUgb24gdGhlIGN1cnJlbnQg
cGxhdGZvcm0uIikKKyAgICB2KGJvb2wsIHVzZVdlYkFzc2VtYmx5RmFzdFRMUywgdHJ1ZSwgTm9y
bWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB0cnkgdG8gdXNlIGZhc3QgdGhyZWFkLWxvY2FsIHN0b3Jh
Z2UgaWYgYXZhaWxhYmxlIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtLiIpIFwKKyAgICB2KGJvb2ws
IHVzZUNhbGxJQ3NGb3JXZWJBc3NlbWJseVRvSlNDYWxscywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1
ZSwgd2Ugd2lsbCB1c2UgQ2FsbExpbmtJbmZvIHRvIGlubGluZSBjYWNoZSBXYXNtIHRvIEpTIGNh
bGxzLiIpCiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCShyZXZpc2lvbiAyMTYxNjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyNSw2ICsxMjUsMTg2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9KcyhWTSogdm0s
IEIKICAgICBtaXNzaW5nQ2FsbGVlU2F2ZXMuZXhjbHVkZShqc0NDLm1fY2FsbGVlU2F2ZVJlZ2lz
dGVycyk7CiAgICAgQVNTRVJUKG1pc3NpbmdDYWxsZWVTYXZlcy5pc0VtcHR5KCkpOwogCisgICAg
aWYgKCFPcHRpb25zOjp1c2VDYWxsSUNzRm9yV2ViQXNzZW1ibHlUb0pTQ2FsbHMoKSkgeworICAg
ICAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0tPnNjcmF0Y2hCdWZmZXJGb3JT
aXplKGFyZ0NvdW50ICogc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgIGNoYXIqIGJ1ZmZlciA9
IGFyZ0NvdW50ID8gc3RhdGljX2Nhc3Q8Y2hhcio+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIo
KSkgOiBudWxscHRyOworICAgICAgICB1bnNpZ25lZCBtYXJzaGFsbGVkR1BScyA9IDA7CisgICAg
ICAgIHVuc2lnbmVkIG1hcnNoYWxsZWRGUFJzID0gMDsKKyAgICAgICAgdW5zaWduZWQgYnVmZmVy
T2Zmc2V0ID0gMDsKKyAgICAgICAgdW5zaWduZWQgZnJPZmZzZXQgPSBDYWxsRnJhbWU6OmhlYWRl
clNpemVJblJlZ2lzdGVycyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7Cisg
ICAgICAgIGNvbnN0IEdQUlJlZyBzY3JhdGNoR1BSID0gR1BSSW5mbzo6cmVnQ1MwOworICAgICAg
ICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgc2l6ZW9mKFJlZ2lzdGVyKSkpLCBNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBqaXQuc3RvcmVQdHIo
c2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdOdW0gPSAwOyBh
cmdOdW0gPCBhcmdDb3VudDsgKythcmdOdW0pIHsKKyAgICAgICAgICAgIFR5cGUgYXJnVHlwZSA9
IHNpZ25hdHVyZS5hcmd1bWVudChhcmdOdW0pOworICAgICAgICAgICAgc3dpdGNoIChhcmdUeXBl
KSB7CisgICAgICAgICAgICBjYXNlIFZvaWQ6CisgICAgICAgICAgICBjYXNlIEZ1bmM6CisgICAg
ICAgICAgICBjYXNlIEFueWZ1bmM6CisgICAgICAgICAgICBjYXNlIEk2NDoKKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgY2FzZSBJMzI6
IHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZ3ByUmVnOworICAgICAgICAgICAgICAgIGlmICht
YXJzaGFsbGVkR1BScyA8IHdhc21DQy5tX2dwckFyZ3Muc2l6ZSgpKQorICAgICAgICAgICAgICAg
ICAgICBncHJSZWcgPSB3YXNtQ0MubV9ncHJBcmdzW21hcnNoYWxsZWRHUFJzXS5ncHIoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFk
eSBzcGlsbGVkIGFsbCBhcmd1bWVudHMsIHRoZXNlIHJlZ2lzdGVycyBhcmUgYXZhaWxhYmxlIGFz
IHNjcmF0Y2guCisgICAgICAgICAgICAgICAgICAgIGdwclJlZyA9IEdQUkluZm86OmFyZ3VtZW50
R1BSMDsKKyAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChKSVQ6OkFkZHJlc3MoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGZyT2Zmc2V0KSwgZ3ByUmVnKTsKKyAgICAgICAgICAgICAg
ICAgICAgZnJPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwclJlZywgZ3ByUmVnKTsKKyAg
ICAgICAgICAgICAgICBqaXQuc3RvcmU2NChncHJSZWcsIGJ1ZmZlciArIGJ1ZmZlck9mZnNldCk7
CisgICAgICAgICAgICAgICAgKyttYXJzaGFsbGVkR1BSczsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgRjMyOiB7CisgICAgICAgICAgICAg
ICAgRlBSUmVnIGZwclJlZzsKKyAgICAgICAgICAgICAgICBpZiAobWFyc2hhbGxlZEZQUnMgPCB3
YXNtQ0MubV9mcHJBcmdzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgZnByUmVnID0gd2Fz
bUNDLm1fZnByQXJnc1ttYXJzaGFsbGVkRlBSc10uZnByKCk7CisgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgc3BpbGxlZCBhbGwgYXJn
dW1lbnRzLCB0aGVzZSByZWdpc3RlcnMgYXJlIGF2YWlsYWJsZSBhcyBzY3JhdGNoLgorICAgICAg
ICAgICAgICAgICAgICBmcHJSZWcgPSBGUFJJbmZvOjphcmd1bWVudEZQUjA7CisgICAgICAgICAg
ICAgICAgICAgIGppdC5sb2FkRmxvYXQoSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBmck9mZnNldCksIGZwclJlZyk7CisgICAgICAgICAgICAgICAgICAgIGZyT2Zmc2V0
ICs9IHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGppdC5jb252ZXJ0RmxvYXRUb0RvdWJsZShmcHJSZWcsIGZwclJlZyk7CisgICAgICAgICAgICAg
ICAgaml0Lm1vdmVEb3VibGVUbzY0KGZwclJlZywgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAg
ICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUiwgYnVmZmVyICsgYnVmZmVyT2Zmc2V0KTsKKyAgICAg
ICAgICAgICAgICArK21hcnNoYWxsZWRGUFJzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBGNjQ6IHsKKyAgICAgICAgICAgICAgICBGUFJS
ZWcgZnByUmVnOworICAgICAgICAgICAgICAgIGlmIChtYXJzaGFsbGVkRlBScyA8IHdhc21DQy5t
X2ZwckFyZ3Muc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICBmcHJSZWcgPSB3YXNtQ0MubV9m
cHJBcmdzW21hcnNoYWxsZWRGUFJzXS5mcHIoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBzcGlsbGVkIGFsbCBhcmd1bWVudHMs
IHRoZXNlIHJlZ2lzdGVycyBhcmUgYXZhaWxhYmxlIGFzIHNjcmF0Y2guCisgICAgICAgICAgICAg
ICAgICAgIGZwclJlZyA9IEZQUkluZm86OmFyZ3VtZW50RlBSMDsKKyAgICAgICAgICAgICAgICAg
ICAgaml0LmxvYWREb3VibGUoSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBmck9mZnNldCksIGZwclJlZyk7CisgICAgICAgICAgICAgICAgICAgIGZyT2Zmc2V0ICs9IHNp
emVvZihSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGppdC5t
b3ZlRG91YmxlVG82NChmcHJSZWcsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIGppdC5z
dG9yZTY0KHNjcmF0Y2hHUFIsIGJ1ZmZlciArIGJ1ZmZlck9mZnNldCk7CisgICAgICAgICAgICAg
ICAgKyttYXJzaGFsbGVkRlBSczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnVmZmVyT2Zmc2V0ICs9IHNpemVvZihS
ZWdpc3Rlcik7CisgICAgICAgIH0KKyAgICAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKSwgc2NyYXRjaEdQ
Uik7CisgICAgICAgIGlmIChhcmdDb3VudCkgeworICAgICAgICAgICAgLy8gVGhlIEdDIHNob3Vs
ZCBub3QgbG9vayBhdCB0aGlzIGJ1ZmZlciBhdCBhbGwsIHRoZXNlIGFyZW4ndCBKU1ZhbHVlcy4K
KyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNo
QnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgICAgICBqaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKDApLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgICAgICB9CisKKyAgICAgICAgdWludDY0X3QgKCpjYWxs
RnVuYykoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTaWduYXR1cmVJbmRleCwgdWludDY0X3QqKSA9
CisgICAgICAgICAgICBbXSAoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY2FsbGVlLCBTaWdu
YXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCwgdWludDY0X3QqIGJ1ZmZlcikgLT4gdWludDY0X3Qg
eyAKKyAgICAgICAgICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICAgICAgICAgICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CisgICAgICAgICAg
ICAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6
Z2V0KHNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmdzOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJnTnVtID0gMDsgYXJnTnVt
IDwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsgKythcmdOdW0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgVHlwZSBhcmdUeXBlID0gc2lnbmF0dXJlLmFyZ3VtZW50KGFyZ051bSk7CisgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWUgYXJnOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFy
Z1R5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBWb2lkOgorICAgICAgICAgICAgICAg
ICAgICBjYXNlIEZ1bmM6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQW55ZnVuYzoKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBJNjQ6CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIEkzMjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KGJ1ZmZlclthcmdOdW1dKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBGMzI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRjY0Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0ganNOdW1iZXIoYml0d2lzZV9jYXN0PGRvdWJs
ZT4oYnVmZmVyW2FyZ051bV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGFyZyk7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7
CisgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBjYWxsZWUtPm1ldGhvZFRhYmxl
KCp2bSktPmdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKKyAgICAgICAgICAgICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZXhlYywgY2FsbGVlLCBjYWxsVHlwZSwgY2FsbERhdGEs
IGpzVW5kZWZpbmVkKCksIGFyZ3MpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgMCk7CisKKyAgICAgICAgICAgICAgICB1aW50NjRfdCByZWFsUmVzdWx0
OworICAgICAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLnJldHVyblR5cGUoKSkgeworICAg
ICAgICAgICAgICAgIGNhc2UgRnVuYzoKKyAgICAgICAgICAgICAgICBjYXNlIEFueWZ1bmM6Cisg
ICAgICAgICAgICAgICAgY2FzZSBJNjQ6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgVm9pZDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBJMzI6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVhbFJlc3VsdCA9IHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVzdWx0LnRvSW50MzIoZXhl
YykpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGNhc2UgRjY0OgorICAgICAgICAgICAgICAgIGNhc2UgRjMyOiB7CisgICAg
ICAgICAgICAgICAgICAgIHJlYWxSZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHJlc3Vs
dC50b051bWJlcihleGVjKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIDApOworICAgICAgICAgICAgICAgIHJldHVybiByZWFsUmVz
dWx0OworICAgICAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGppdC5sb2FkV2FzbUNvbnRl
eHQoR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSlNXZWJBc3NlbWJseUluc3RhbmNl
OjpvZmZzZXRPZkNhbGxlZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgaml0
LnN0b3JlUHRyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpKSk7CisgICAgICAgIAorICAgICAgICBtYXRlcmlhbGl6ZUltcG9y
dEpTQ2VsbChqaXQsIGltcG9ydEluZGV4LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPj0gNCwg
IldlIHJlbHkgb24gdGhpcyB3aXRoIHRoZSBjYWxsIGJlbG93LiIpOworICAgICAgICBqaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoc2lnbmF0dXJlSW5kZXgpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoYnVmZmVyKSk7CisgICAgICAgIGF1dG8gY2FsbCA9IGppdC5jYWxsKCk7CisgICAgICAg
IGF1dG8gbm9FeGNlcHRpb24gPSBqaXQuZW1pdEV4Y2VwdGlvbkNoZWNrKCp2bSwgQXNzZW1ibHlI
ZWxwZXJzOjpJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrKTsKKworICAgICAgICAvLyBleGNlcHRpb24g
aGVyZS4KKyAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2
ZXNCdWZmZXIoKnZtKTsKKyAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHZvaWQgKCpkb1Vud2luZGluZyko
RXhlY1N0YXRlKikgPSBbXSAoRXhlY1N0YXRlKiBleGVjKSAtPiB2b2lkIHsKKyAgICAgICAgICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgZXhlYyk7CisgICAgICAgICAgICBnZW5lcmljVW53aW5kKHZtLCBleGVjKTsK
KyAgICAgICAgICAgIEFTU0VSVCghIXZtLT5jYWxsRnJhbWVGb3JDYXRjaCk7CisgICAgICAgIH07
CisgICAgICAgIGF1dG8gZXhjZXB0aW9uQ2FsbCA9IGppdC5jYWxsKCk7CisgICAgICAgIGppdC5q
dW1wVG9FeGNlcHRpb25IYW5kbGVyKCp2bSk7CisKKyAgICAgICAgbm9FeGNlcHRpb24ubGluaygm
aml0KTsKKyAgICAgICAgc3dpdGNoIChzaWduYXR1cmUucmV0dXJuVHlwZSgpKSB7CisgICAgICAg
IGNhc2UgRjY0OiB7CisgICAgICAgICAgICBqaXQubW92ZTY0VG9Eb3VibGUoR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIsIEZQUkluZm86OnJldHVyblZhbHVlRlBSKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRjMyOiB7CisgICAgICAgICAgICBqaXQubW92ZTY0
VG9Eb3VibGUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEZQUkluZm86OnJldHVyblZhbHVlRlBS
KTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0RG91YmxlVG9GbG9hdChGUFJJbmZvOjpyZXR1cm5W
YWx1ZUZQUiwgRlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGppdC5yZXQo
KTsKKworICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQp
OworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgY2FsbEZ1bmMpOworICAgICAgICBsaW5r
QnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2FsbCwgZG9VbndpbmRpbmcpOworCisgICAgICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICgiV2ViQXNzZW1ibHktPkphdmFTY3JpcHQgaW1w
b3J0WyVpXSAlcyIsIGltcG9ydEluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSkpOworICAgIH0KKwogICAgIC8vIEZJWE1FIHBlcmZvcm0gYSBzdGFjayBjaGVjayBiZWZv
cmUgdXBkYXRpbmcgU1AuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjU1NDYKIAogICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUGFyYW1ldGVycyA9IGFyZ0NvdW50
ICsgMTsgLy8gVGhlcmUgaXMgYSAidGhpcyIgYXJndW1lbnQuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNw
cAkocmV2aXNpb24gMjE2MTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUNvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2s6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5Q29kZUJsb2NrIiwgbnVsbHB0ciwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKSB9OwogCi1KU1dlYkFzc2VtYmx5
Q29kZUJsb2NrKiBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpjcmVhdGUoVk0mIHZtLCBSZWY8V2Fz
bTo6Q29kZUJsb2NrPiBjb2RlQmxvY2ssIGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJiBt
b2R1bGVJbmZvcm1hdGlvbikKK0pTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2s6OmNyZWF0ZShWTSYgdm0sIFJlZjxXYXNtOjpDb2RlQmxvY2s+IGNvZGVCbG9jaywg
SlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlKQogeworICAgIGNvbnN0IFdhc206Ok1vZHVsZUlu
Zm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbiA9IG1vZHVsZS0+bW9kdWxlKCkubW9kdWxlSW5m
b3JtYXRpb24oKTsKICAgICBhdXRvKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZShtb2R1bGVJ
bmZvcm1hdGlvbi5pbXBvcnRGdW5jdGlvbkNvdW50KCkpKSkgSlNXZWJBc3NlbWJseUNvZGVCbG9j
ayh2bSwgV1RGTW92ZShjb2RlQmxvY2spLCBtb2R1bGVJbmZvcm1hdGlvbik7Ci0gICAgcmVzdWx0
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgbW9k
dWxlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC02Miw2ICs2MywxMiBAQCBKU1dlYkFz
c2VtYmx5Q29kZUJsb2NrOjpKU1dlYkFzc2VtYmx5Q29kCiAgICAgfQogfQogCit2b2lkIEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNXZWJBc3NlbWJseU1v
ZHVsZSogbW9kdWxlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBtX21v
ZHVsZS5zZXQodm0sIHRoaXMsIG1vZHVsZSk7Cit9CisKIHZvaWQgSlNXZWJBc3NlbWJseUNvZGVC
bG9jazo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CiAgICAgc3RhdGljX2Nhc3Q8SlNXZWJBc3Nl
bWJseUNvZGVCbG9jayo+KGNlbGwpLT5KU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjp+SlNXZWJBc3Nl
bWJseUNvZGVCbG9jaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAkocmV2aXNpb24gMjE2MTY4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2Vs
bCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAotICAgIHN0YXRpYyBKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrKiBjcmVhdGUoVk0mLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiwgY29u
c3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKKyAgICBzdGF0aWMgSlNXZWJBc3NlbWJseUNv
ZGVCbG9jayogY3JlYXRlKFZNJiwgUmVmPFdhc206OkNvZGVCbG9jaz4sIEpTV2ViQXNzZW1ibHlN
b2R1bGUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CkBAIC02Miw2
ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNTYWZlVG9SdW4oSlNXZWJBc3NlbWJseU1l
bW9yeSopIGNvbnN0OwogCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTV2ViQXNzZW1i
bHlNb2R1bGUqKTsKKwogICAgIC8vIFRoZXNlIHR3byBjYWxsZWUgZ2V0dGVycyBhcmUgb25seSB2
YWxpZCBvbmNlIHRoZSBjYWxsZWVzIGhhdmUgYmVlbiBwb3B1bGF0ZWQuCiAKICAgICBXYXNtOjpD
YWxsZWUmIGpzRW50cnlwb2ludENhbGxlZUZyb21GdW5jdGlvbkluZGV4U3BhY2UodW5zaWduZWQg
ZnVuY3Rpb25JbmRleFNwYWNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCShyZXZpc2lvbiAyMTYxNjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5
SW5zdGFuY2U6OmZpbmFsaXplQ3JlYQogICAgICAgICBBU1NFUlQoJmNvZGVCbG9jay0+Y29kZUJs
b2NrKCkgPT0gd2FzbUNvZGVCbG9jay5wdHIoKSk7CiAgICAgICAgIG1fY29kZUJsb2NrLnNldCh2
bSwgdGhpcywgY29kZUJsb2NrKTsKICAgICB9IGVsc2UgewotICAgICAgICBjb2RlQmxvY2sgPSBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpjcmVhdGUodm0sIHdhc21Db2RlQmxvY2suY29weVJlZigp
LCBtX21vZHVsZS0+bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKSk7CisgICAgICAgIGNvZGVC
bG9jayA9IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmNyZWF0ZSh2bSwgd2FzbUNvZGVCbG9jay5j
b3B5UmVmKCksIG1fbW9kdWxlLmdldCgpKTsKICAgICAgICAgbV9jb2RlQmxvY2suc2V0KHZtLCB0
aGlzLCBjb2RlQmxvY2spOwogICAgICAgICBtb2R1bGUoKS0+c2V0Q29kZUJsb2NrKHZtLCBtZW1v
cnlNb2RlKCksIGNvZGVCbG9jayk7CiAgICAgfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2MTY4KQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDUtMDMgIFNhYW0g
QmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgSG93IHdlIGJ1aWxkIHBvbHlt
b3JwaGljIGNhc2VzIGlzIHdyb25nIHdoZW4gbWFraW5nIGEgY2FsbCBmcm9tIFdhc20KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTUyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IEpGIEJhc3RpZW4uCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mt
c3RyZXNzLXRlc3RzOgorCiAyMDE3LTA1LTAzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE2MTYwIGFu
ZCByMjE2MTYxLgpJbmRleDogVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCShyZXZpc2lvbiAy
MTYxNjgpCisrKyBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjAwLDYgKzEyMDAsOCBAQCBkZWYgcnVuV2ViQXNzZW1ibHkKICAgICBwcmVwYXJl
RXh0cmFSZWxhdGl2ZUZpbGVzKG1vZHVsZXMubWFwIHsgfGZ8ICIuLi8iICsgZiB9LCAkY29sbGVj
dGlvbikKICAgICBydW4oImRlZmF1bHQtd2FzbSIsICItbSIsICpGVExfT1BUSU9OUykKICAgICBy
dW4oIndhc20tbm8tY2ppdCIsICItbSIsICooRlRMX09QVElPTlMgKyBOT19DSklUX09QVElPTlMp
KQorICAgIHJ1bigid2FzbS1lYWdlci1qZXR0aXNvbiIsICItbSIsICItLWZvcmNlQ29kZUJsb2Nr
VG9KZXR0aXNvbkR1ZVRvT2xkQWdlPXRydWUiLCAqRlRMX09QVElPTlMpCisgICAgcnVuKCJ3YXNt
LW5vLWNhbGwtaWMiLCAiLW0iLCAiLS11c2VDYWxsSUNzRm9yV2ViQXNzZW1ibHlUb0pTQ2FsbHM9
ZmFsc2UiLCAqRlRMX09QVElPTlMpCiBlbmQKIAogZGVmIHJ1bldlYkFzc2VtYmx5RW1zY3JpcHRl
bihtb2RlKQpAQCAtMTIxMyw2ICsxMjE1LDggQEAgZGVmIHJ1bldlYkFzc2VtYmx5RW1zY3JpcHRl
bihtb2RlKQogICAgIHByZXBhcmVFeHRyYVJlbGF0aXZlRmlsZXMoW1BhdGhuYW1lKCcuLicpICsg
d2FzbV0sICRjb2xsZWN0aW9uKQogICAgIHJ1bigiZGVmYXVsdC13YXNtIiwgKkZUTF9PUFRJT05T
KQogICAgIHJ1bigid2FzbS1uby1jaml0IiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9O
UykpCisgICAgcnVuKCJ3YXNtLWVhZ2VyLWpldHRpc29uIiwgIi0tZm9yY2VDb2RlQmxvY2tUb0pl
dHRpc29uRHVlVG9PbGRBZ2U9dHJ1ZSIsICpGVExfT1BUSU9OUykKKyAgICBydW4oIndhc20tbm8t
Y2FsbC1pYyIsICItLXVzZUNhbGxJQ3NGb3JXZWJBc3NlbWJseVRvSlNDYWxscz1mYWxzZSIsICpG
VExfT1BUSU9OUykKIGVuZAogCiBkZWYgcnVuV2ViQXNzZW1ibHlTcGVjVGVzdChtb2RlKQpAQCAt
MTIzMyw2ICsxMjM3LDggQEAgZGVmIHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QobW9kZSkKIAogICAg
IHJ1bldpdGhPdXRwdXRIYW5kbGVyKCJkZWZhdWx0LXdhc20iLCBub2lzeU91dHB1dEhhbmRsZXIs
ICIuLi9zcGVjLWhhcm5lc3MuanMiLCAqRlRMX09QVElPTlMpCiAgICAgcnVuV2l0aE91dHB1dEhh
bmRsZXIoIndhc20tbm8tY2ppdCIsIG5vaXN5T3V0cHV0SGFuZGxlciwgIi4uL3NwZWMtaGFybmVz
cy5qcyIsICooRlRMX09QVElPTlMgKyBOT19DSklUX09QVElPTlMpKQorICAgIHJ1bldpdGhPdXRw
dXRIYW5kbGVyKCJ3YXNtLWVhZ2VyLWpldHRpc29uIiwgbm9pc3lPdXRwdXRIYW5kbGVyLCAiLi4v
c3BlYy1oYXJuZXNzLmpzIiwgIi0tZm9yY2VDb2RlQmxvY2tUb0pldHRpc29uRHVlVG9PbGRBZ2U9
dHJ1ZSIsICpGVExfT1BUSU9OUykKKyAgICBydW5XaXRoT3V0cHV0SGFuZGxlcigid2FzbS1uby1j
YWxsLWljIiwgbm9pc3lPdXRwdXRIYW5kbGVyLCAiLi4vc3BlYy1oYXJuZXNzLmpzIiwgIi0tdXNl
Q2FsbElDc0ZvcldlYkFzc2VtYmx5VG9KU0NhbGxzPWZhbHNlIiwgKkZUTF9PUFRJT05TKQogZW5k
CiAKIGRlZiBydW5DaGFrcmEobW9kZSwgZXhjZXB0aW9uLCBiYXNlbGluZUZpbGUsIGV4dHJhRmls
ZXMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>