<?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>156746</bug_id>
          
          <creation_ts>2016-04-19 08:56:18 -0700</creation_ts>
          <short_desc>Clean up the ParkingLot uparking API a bit</short_desc>
          <delta_ts>2016-04-19 21:25:33 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1185027</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-19 08:56:18 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185028</commentid>
    <comment_count>1</comment_count>
      <attachid>276726</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-19 08:59:27 -0700</bug_when>
    <thetext>Created attachment 276726
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185029</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-19 09:01:27 -0700</bug_when>
    <thetext>Attachment 276726 did not pass style-queue:


ERROR: Source/WTF/wtf/Condition.h:183:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Lock.cpp:97:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/benchmarks/LockSpeedTest.cpp:82:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 7 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>1185079</commentid>
    <comment_count>3</comment_count>
      <attachid>276726</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-19 11:13:17 -0700</bug_when>
    <thetext>Comment on attachment 276726
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185259</commentid>
    <comment_count>4</comment_count>
      <attachid>276784</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-19 17:40:02 -0700</bug_when>
    <thetext>Created attachment 276784
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185260</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-19 17:40:21 -0700</bug_when>
    <thetext>I put this up for re-review because I added a lot of stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185261</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-19 17:41:03 -0700</bug_when>
    <thetext>Attachment 276784 did not pass style-queue:


ERROR: Source/WTF/wtf/Condition.h:183:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Lock.cpp:97:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/benchmarks/LockSpeedTest.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/benchmarks/LockSpeedTest.cpp:172:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/benchmarks/LockSpeedTest.cpp:445:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 7 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>1185278</commentid>
    <comment_count>7</comment_count>
      <attachid>276784</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-04-19 19:03:03 -0700</bug_when>
    <thetext>Comment on attachment 276784
the patch

r=me for the API change.
I think that the LockSpeedTest changes should go in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185280</commentid>
    <comment_count>8</comment_count>
      <attachid>276789</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-19 19:05:55 -0700</bug_when>
    <thetext>Created attachment 276789
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185283</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-19 19:08:32 -0700</bug_when>
    <thetext>Attachment 276789 did not pass style-queue:


ERROR: Source/WTF/wtf/Condition.h:183:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Lock.cpp:97:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 6 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>1185331</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-19 21:25:33 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/199760</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276726</attachid>
            <date>2016-04-19 08:59:27 -0700</date>
            <delta_ts>2016-04-19 17:40:02 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>15463</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxOTk3MjgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA0LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgdGhlIFBhcmtpbmdMb3QgdXBhcmtpbmcg
QVBJIGEgYml0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTY3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIFByZXZpb3VzbHksIHVucGFya09uZSgpIHdvdWxkIGVpdGhlciByZXR1cm4gYSBi
b29sZWFuIHRvIHRlbGwgeW91IGlmIHRoZXJlIGFyZSBhbnkgbW9yZSB0aHJlYWRzIG9uCisgICAg
ICAgIHRoZSBxdWV1ZSBvciBpdCB3b3VsZCBwYXNzIHlvdXIgY2FsbGJhY2sgYSBwYWlyIG9mIGJv
b2xlYW5zIC0gb25lIHRvIHRlbGwgaWYgYSB0aHJlYWQgd2FzIHVucGFya2VkCisgICAgICAgIGFu
ZCBhbm90aGVyIHRvIHRlbGwgaWYgdGhlcmUgYXJlIGFueSBtb3JlIHRocmVhZHMuIFRoaXMgd2Fz
IGFuIGFubm95aW5nIGluY29uc2lzdGVuY3kuIFdoYXQgaWYgeW91CisgICAgICAgIHdhbnRlZCB0
byBrbm93IGlmIHVucGFya09uZSgpIHVucGFya2VkIGEgdGhyZWFkIGJ1dCB5b3UgZG9uJ3QgY2Fy
ZSB0byB1c2UgY2FsbGJhY2tzPworCisgICAgICAgIFRoaXMgZml4ZXMgdW5wYXJrT25lKCkgdG8g
dXNlIGEgc3RydWN0IGNhbGxlZCBVbnBhcmtSZXN1bHQgZm9yIGJvdGggb2YgaXRzIHZhcmlhbnRz
LiBUaGlzIG1ha2VzIHRoZQorICAgICAgICBjb2RlIGEgYml0IGNsZWFuZXIuCisKKyAgICAgICAg
KiBiZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwOiBBZGQgc29tZSBtb3JlIHRlc3RzLgorICAg
ICAgICAqIHd0Zi9BdG9taWNzLmg6CisgICAgICAgIChXVEY6OkF0b21pYzo6Y29tcGFyZUV4Y2hh
bmdlU3Ryb25nKToKKyAgICAgICAgKFdURjo6QXRvbWljOjpleGNoYW5nZUFuZEFkZCk6CisgICAg
ICAgICogd3RmL0NvbmRpdGlvbi5oOgorICAgICAgICAoV1RGOjpDb25kaXRpb25CYXNlOjpub3Rp
ZnlPbmUpOgorICAgICAgICAqIHd0Zi9Mb2NrLmNwcDoKKyAgICAgICAgKFdURjo6TG9ja0Jhc2U6
OnVubG9ja1Nsb3cpOgorICAgICAgICAqIHd0Zi9QYXJraW5nTG90LmNwcDoKKyAgICAgICAgKFdU
Rjo6UGFya2luZ0xvdDo6cGFya0NvbmRpdGlvbmFsbHkpOgorICAgICAgICAoV1RGOjpQYXJraW5n
TG90Ojp1bnBhcmtPbmUpOgorICAgICAgICAqIHd0Zi9QYXJraW5nTG90Lmg6CisKIDIwMTYtMDQt
MTkgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgaVR1bmVz
IGNyYXNoaW5nIEphdmFTY3JpcHRDb3JlLmRsbApJbmRleDogU291cmNlL1dURi9iZW5jaG1hcmtz
L0xvY2tTcGVlZFRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvYmVuY2htYXJrcy9M
b2NrU3BlZWRUZXN0LmNwcAkocmV2aXNpb24gMTk5NzA1KQorKysgU291cmNlL1dURi9iZW5jaG1h
cmtzL0xvY2tTcGVlZFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCwxMSBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlIDx0aHJlYWQ+CiAjaW5jbHVkZSA8dW5p
c3RkLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2su
aD4KKyNpbmNsdWRlIDx3dGYvUGFya2luZ0xvdC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaD4KQEAgLTQwLDkgKzQyLDkgQEAgbmFtZXNwYWNlIHsKIAogLy8gVGhpcyBp
cyB0aGUgb2xkIFdURjo6U3BpbkxvY2sgY2xhc3MsIGluY2x1ZGVkIGhlcmUgc28gdGhhdCB3ZSBj
YW4gc3RpbGwgY29tcGFyZSBvdXIgbmV3IGxvY2tzIHRvIGEKIC8vIHNwaW5sb2NrIGJhc2VsaW5l
LgotY2xhc3MgU3BpbkxvY2sgeworY2xhc3MgWWllbGRTcGluTG9jayB7CiBwdWJsaWM6Ci0gICAg
U3BpbkxvY2soKQorICAgIFlpZWxkU3BpbkxvY2soKQogICAgIHsKICAgICAgICAgbV9sb2NrLnN0
b3JlKDAsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogICAgIH0KQEAgLTY3LDYgKzY5LDEx
MCBAQCBwcml2YXRlOgogICAgIEF0b21pYzx1bnNpZ25lZD4gbV9sb2NrOwogfTsKIAorY2xhc3Mg
UGF1c2VTcGluTG9jayB7CitwdWJsaWM6CisgICAgUGF1c2VTcGluTG9jaygpCisgICAgeworICAg
ICAgICBtX2xvY2suc3RvcmUoMCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgICAgfQor
CisgICAgdm9pZCBsb2NrKCkKKyAgICB7CisgICAgICAgIHdoaWxlICghbV9sb2NrLmNvbXBhcmVF
eGNoYW5nZVdlYWsoMCwgMSwgc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkpCisgICAgICAgICAg
ICBhc20gdm9sYXRpbGUgKCJwYXVzZSIpOworICAgIH0KKworICAgIHZvaWQgdW5sb2NrKCkKKyAg
ICB7CisgICAgICAgIG1fbG9jay5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsK
KyAgICB9CisKKyAgICBib29sIGlzTG9ja2VkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2xvY2subG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgQXRvbWljPHVuc2lnbmVkPiBtX2xvY2s7Cit9OworCitjbGFzcyBIYW5kb2ZmTG9j
ayB7CitwdWJsaWM6CisgICAgSGFuZG9mZkxvY2soKQorICAgIHsKKyAgICAgICAgbV9zdGF0ZS5z
dG9yZSgwKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2NrKCkKKyAgICB7CisgICAgICAgIGlm
IChMSUtFTFkobV9zdGF0ZS5jb21wYXJlRXhjaGFuZ2VXZWFrKDAsIGlzTG9ja2VkQml0LCBzdGQ6
Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAor
ICAgICAgICBsb2NrU2xvdygpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVubG9jaygpCisgICAg
eworICAgICAgICBpZiAoTElLRUxZKG1fc3RhdGUuY29tcGFyZUV4Y2hhbmdlV2Vhayhpc0xvY2tl
ZEJpdCwgMCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSkpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAKKyAgICAgICAgdW5sb2NrU2xvdygpOworICAgIH0KKyAgICAKKyAgICBib29s
IGlzTG9ja2VkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0YXRlLmxvYWQoc3Rk
OjptZW1vcnlfb3JkZXJfYWNxdWlyZSkgJiBpc0xvY2tlZEJpdDsKKyAgICB9CisgICAgCitwcml2
YXRlOgorICAgIE5FVkVSX0lOTElORSB2b2lkIGxvY2tTbG93KCkKKyAgICB7CisgICAgICAgIGZv
ciAoOzspIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHN0YXRlID0gbV9zdGF0ZS5sb2FkKCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghKHN0YXRlICYgaXNMb2NrZWRCaXQpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUuY29tcGFyZUV4Y2hhbmdlV2VhayhzdGF0ZSwgc3Rh
dGUgfCBpc0xvY2tlZEJpdCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKG1fc3RhdGUuY29tcGFyZUV4Y2hhbmdlV2VhayhzdGF0ZSwgc3RhdGUgKyBwYXJrZWRD
b3VudFVuaXQpKSB7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBQYXJraW5nTG90Ojpj
b21wYXJlQW5kUGFyaygmbV9zdGF0ZSwgc3RhdGUgKyBwYXJrZWRDb3VudFVuaXQpOworICAgICAg
ICAgICAgICAgIG1fc3RhdGUuZXhjaGFuZ2VBbmRBZGQoLXBhcmtlZENvdW50VW5pdCk7CisgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIE5FVkVSX0lOTElORSB2b2lk
IHVubG9ja1Nsb3coKQorICAgIHsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgdW5z
aWduZWQgc3RhdGUgPSBtX3N0YXRlLmxvYWQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
aWYgKCEoc3RhdGUgPj4gcGFya2VkQ291bnRTaGlmdCkpIHsKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChzdGF0ZSA9PSBpc0xvY2tlZEJpdCk7CisgICAgICAgICAgICAgICAgaWYgKG1f
c3RhdGUuY29tcGFyZUV4Y2hhbmdlV2Vhayhpc0xvY2tlZEJpdCwgMCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKFBhcmtpbmdMb3Q6OnVucGFya09uZSgmbV9z
dGF0ZSkuZGlkVW5wYXJrVGhyZWFkKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgdW5wYXJrZWQg
c29tZW9uZS4gVGhlcmUgYXJlIG5vdyBydW5uaW5nIGFuZCB0aGV5IGhvbGQgdGhlIGxvY2suCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICAvLyBOb2JvZHkgdW5wYXJrZWQuIE1heWJlIHRoZXJlIGlzbid0IGFueW9uZSB3YWl0
aW5nLiBKdXN0IHRyeSBhZ2Fpbi4KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaXNMb2NrZWRCaXQgPSAxOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBwYXJrZWRDb3VudFNoaWZ0ID0gMTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcGFya2Vk
Q291bnRVbml0ID0gMSA8PCBwYXJrZWRDb3VudFNoaWZ0OworICAgIAorICAgIEF0b21pYzx1bnNp
Z25lZD4gbV9zdGF0ZTsKK307CisKIHVuc2lnbmVkIG51bVRocmVhZEdyb3VwczsKIHVuc2lnbmVk
IG51bVRocmVhZHNQZXJHcm91cDsKIHVuc2lnbmVkIHdvcmtQZXJDcml0aWNhbFNlY3Rpb247CkBA
IC03NSwxNSArMTgxLDIxIEBAIHVuc2lnbmVkIG51bUl0ZXJhdGlvbnM7CiAgICAgCiBOT19SRVRV
Uk4gdm9pZCB1c2FnZSgpCiB7Ci0gICAgcHJpbnRmKCJVc2FnZTogTG9ja1NwZWVkVGVzdCBzcGlu
bG9ja3x3b3JkbG9ja3xsb2NrfG11dGV4fGFsbCA8bnVtIHRocmVhZCBncm91cHM+IDxudW0gdGhy
ZWFkcyBwZXIgZ3JvdXA+IDx3b3JrIHBlciBjcml0aWNhbCBzZWN0aW9uPiA8bnVtIG5vaXNlIHRo
cmVhZHM+IDxudW0gaXRlcmF0aW9ucz5cbiIpOworICAgIHByaW50ZigiVXNhZ2U6IExvY2tTcGVl
ZFRlc3QgeWllbGRzcGlubG9ja3xwYXVzZXNwaW5sb2NrfHdvcmRsb2NrfGxvY2t8aGFuZG9mZmxv
Y2t8bXV0ZXh8YWxsIDxudW0gdGhyZWFkIGdyb3Vwcz4gPG51bSB0aHJlYWRzIHBlciBncm91cD4g
PHdvcmsgcGVyIGNyaXRpY2FsIHNlY3Rpb24+IDxudW0gbm9pc2UgdGhyZWFkcz4gPG51bSBpdGVy
YXRpb25zPlxuIik7CiAgICAgZXhpdCgxKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4K
K3N0cnVjdCBXaXRoUGFkZGluZyB7CisgICAgVHlwZSB2YWx1ZTsKKyAgICBjaGFyIGJ1ZlszMDBd
OyAvLyBJdCdzIGJlc3QgaWYgdGhpcyBpc24ndCBwZXJmZWN0IHRvIGF2b2lkIGZhbHNlIHNoYXJp
bmcuCit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZT4KIHZvaWQgcnVuQmVuY2htYXJr
KGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExvY2tUeXBlW10+IGxv
Y2tzID0gc3RkOjptYWtlX3VuaXF1ZTxMb2NrVHlwZVtdPihudW1UaHJlYWRHcm91cHMpOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxkb3VibGVbXT4gd29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGRvdWJs
ZVtdPihudW1UaHJlYWRHcm91cHMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxM
b2NrVHlwZT5bXT4gbG9ja3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFdpdGhQYWRkaW5nPExvY2tUeXBl
PltdPihudW1UaHJlYWRHcm91cHMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxk
b3VibGU+W10+IHdvcmRzID0gc3RkOjptYWtlX3VuaXF1ZTxXaXRoUGFkZGluZzxkb3VibGU+W10+
KG51bVRocmVhZEdyb3Vwcyk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZElkZW50aWZpZXJb
XT4gdGhyZWFkcyA9IHN0ZDo6bWFrZV91bmlxdWU8VGhyZWFkSWRlbnRpZmllcltdPihudW1UaHJl
YWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJl
YWRJZGVudGlmaWVyW10+IG5vaXNlVGhyZWFkcyA9IHN0ZDo6bWFrZV91bmlxdWU8VGhyZWFkSWRl
bnRpZmllcltdPihudW1Ob2lzZVRocmVhZHMpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxkb3VibGVb
XT4gbm9pc2VDb3VudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGRvdWJsZVtdPihudW1Ob2lzZVRocmVh
ZHMpOwpAQCAtMTAyLDE5ICsyMTQsMTkgQEAgdm9pZCBydW5CZW5jaG1hcmsoY29uc3QgY2hhciog
bmFtZSkKICAgICBkb3VibGUgYmVmb3JlID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lTVMo
KTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIHRocmVhZEdyb3VwSW5kZXggPSBudW1UaHJlYWRH
cm91cHM7IHRocmVhZEdyb3VwSW5kZXgtLTspIHsKLSAgICAgICAgd29yZHNbdGhyZWFkR3JvdXBJ
bmRleF0gPSAwOworICAgICAgICB3b3Jkc1t0aHJlYWRHcm91cEluZGV4XS52YWx1ZSA9IDA7CiAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCB0aHJlYWRJbmRleCA9IG51bVRocmVhZHNQZXJHcm91cDsg
dGhyZWFkSW5kZXgtLTspIHsKICAgICAgICAgICAgIHRocmVhZHNbdGhyZWFkR3JvdXBJbmRleCAq
IG51bVRocmVhZHNQZXJHcm91cCArIHRocmVhZEluZGV4XSA9IGNyZWF0ZVRocmVhZCgKICAgICAg
ICAgICAgICAgICAiQmVuY2htYXJrIHRocmVhZCIsCiAgICAgICAgICAgICAgICAgW3RocmVhZEdy
b3VwSW5kZXgsICZsb2NrcywgJndvcmRzXSAoKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG51bUl0ZXJhdGlvbnM7IGktLTspIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxvY2tzW3RocmVhZEdyb3VwSW5kZXhdLmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxvY2tzW3RocmVhZEdyb3VwSW5kZXhdLnZhbHVlLmxvY2soKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IHdvcmtQZXJDcml0aWNhbFNlY3Rpb247IGotLTsp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jkc1t0aHJlYWRHcm91cEluZGV4XSsr
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRzW3RocmVhZEdyb3VwSW5kZXhdICo9
IDEuMDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZHNbdGhyZWFkR3JvdXBJbmRl
eF0udmFsdWUrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jkc1t0aHJlYWRHcm91
cEluZGV4XS52YWx1ZSAqPSAxLjAxOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgbG9ja3NbdGhyZWFkR3JvdXBJbmRleF0udW5sb2NrKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2Nrc1t0aHJlYWRHcm91cEluZGV4XS52YWx1ZS51bmxvY2so
KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9
CkBAIC0xNDksOCArMjYxLDEyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAg
ICAgICAgdXNhZ2UoKTsKIAogICAgIGJvb2wgZGlkUnVuID0gZmFsc2U7Ci0gICAgaWYgKCFzdHJj
bXAoYXJndlsxXSwgInNwaW5sb2NrIikgfHwgIXN0cmNtcChhcmd2WzFdLCAiYWxsIikpIHsKLSAg
ICAgICAgcnVuQmVuY2htYXJrPFNwaW5Mb2NrPigiU3BpbkxvY2siKTsKKyAgICBpZiAoIXN0cmNt
cChhcmd2WzFdLCAieWllbGRzcGlubG9jayIpIHx8ICFzdHJjbXAoYXJndlsxXSwgImFsbCIpKSB7
CisgICAgICAgIHJ1bkJlbmNobWFyazxZaWVsZFNwaW5Mb2NrPigiWWllbGRTcGluTG9jayIpOwor
ICAgICAgICBkaWRSdW4gPSB0cnVlOworICAgIH0KKyAgICBpZiAoIXN0cmNtcChhcmd2WzFdLCAi
cGF1c2VzcGlubG9jayIpIHx8ICFzdHJjbXAoYXJndlsxXSwgImFsbCIpKSB7CisgICAgICAgIHJ1
bkJlbmNobWFyazxQYXVzZVNwaW5Mb2NrPigiUGF1c2VTcGluTG9jayIpOwogICAgICAgICBkaWRS
dW4gPSB0cnVlOwogICAgIH0KICAgICBpZiAoIXN0cmNtcChhcmd2WzFdLCAid29yZGxvY2siKSB8
fCAhc3RyY21wKGFyZ3ZbMV0sICJhbGwiKSkgewpAQCAtMTYxLDYgKzI3NywxMCBAQCBpbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgIHJ1bkJlbmNobWFyazxMb2NrPigiV1RG
IExvY2siKTsKICAgICAgICAgZGlkUnVuID0gdHJ1ZTsKICAgICB9CisgICAgaWYgKCFzdHJjbXAo
YXJndlsxXSwgImhhbmRvZmZsb2NrIikgfHwgIXN0cmNtcChhcmd2WzFdLCAiYWxsIikpIHsKKyAg
ICAgICAgcnVuQmVuY2htYXJrPEhhbmRvZmZMb2NrPigiSGFuZG9mZkxvY2siKTsKKyAgICAgICAg
ZGlkUnVuID0gdHJ1ZTsKKyAgICB9CiAgICAgaWYgKCFzdHJjbXAoYXJndlsxXSwgIm11dGV4Iikg
fHwgIXN0cmNtcChhcmd2WzFdLCAiYWxsIikpIHsKICAgICAgICAgcnVuQmVuY2htYXJrPE11dGV4
PigiUGxhdGZvcm0gTXV0ZXgiKTsKICAgICAgICAgZGlkUnVuID0gdHJ1ZTsKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0F0b21pY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9BdG9taWNz
LmgJKHJldmlzaW9uIDE5OTcwNSkKKysrIFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzYsNiArNzYsMTYgQEAgc3RydWN0IEF0b21pYyB7CiAgICAgICAgIFQgZXhw
ZWN0ZWRPckFjdHVhbCA9IGV4cGVjdGVkOwogICAgICAgICByZXR1cm4gdmFsdWUuY29tcGFyZV9l
eGNoYW5nZV9zdHJvbmcoZXhwZWN0ZWRPckFjdHVhbCwgZGVzaXJlZCwgb3JkZXIpOwogICAgIH0K
KyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIFQgZXhjaGFuZ2VBbmRBZGQoVSBh
ZGRlbmQsIHN0ZDo6bWVtb3J5X29yZGVyIG9yZGVyID0gc3RkOjptZW1vcnlfb3JkZXJfc2VxX2Nz
dCkKKyAgICB7CisjaWYgT1MoV0lORE9XUykKKyAgICAgICAgLy8gU2VlIGFib3ZlLgorICAgICAg
ICBvcmRlciA9IHN0ZDo6bWVtb3J5X29yZGVyX3NlcV9jc3Q7CisjZW5kaWYKKyAgICAgICAgcmV0
dXJuIHZhbHVlLmZldGNoX2FkZChhZGRlbmQsIG9yZGVyKTsKKyAgICB9CiAKICAgICBzdGQ6OmF0
b21pYzxUPiB2YWx1ZTsKIH07CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Db25kaXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Db25kaXRpb24uaAkocmV2aXNpb24gMTk5NzA1KQor
KysgU291cmNlL1dURi93dGYvQ29uZGl0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw4ICsx
ODAsOCBAQCBzdHJ1Y3QgQ29uZGl0aW9uQmFzZSB7CiAgICAgICAgIAogICAgICAgICBQYXJraW5n
TG90Ojp1bnBhcmtPbmUoCiAgICAgICAgICAgICAmbV9oYXNXYWl0ZXJzLAotICAgICAgICAgICAg
W3RoaXNdIChib29sLCBib29sIG1heUhhdmVNb3JlVGhyZWFkcykgewotICAgICAgICAgICAgICAg
IGlmICghbWF5SGF2ZU1vcmVUaHJlYWRzKQorICAgICAgICAgICAgW3RoaXNdIChQYXJraW5nTG90
OjpVbnBhcmtSZXN1bHQgcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQubWF5
SGF2ZU1vcmVUaHJlYWRzKQogICAgICAgICAgICAgICAgICAgICBtX2hhc1dhaXRlcnMuc3RvcmUo
ZmFsc2UpOwogICAgICAgICAgICAgfSk7CiAgICAgfQpJbmRleDogU291cmNlL1dURi93dGYvTG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTG9jay5jcHAJKHJldmlzaW9uIDE5
OTcwNSkKKysrIFNvdXJjZS9XVEYvd3RmL0xvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwx
MiArOTQsMTIgQEAgTkVWRVJfSU5MSU5FIHZvaWQgTG9ja0Jhc2U6OnVubG9ja1Nsb3coKQogICAg
ICAgICBBU1NFUlQob2xkQnl0ZVZhbHVlID09IChpc0hlbGRCaXQgfCBoYXNQYXJrZWRCaXQpKTsK
ICAgICAgICAgUGFya2luZ0xvdDo6dW5wYXJrT25lKAogICAgICAgICAgICAgJm1fYnl0ZSwKLSAg
ICAgICAgICAgIFt0aGlzXSAoYm9vbCwgYm9vbCBtYXlIYXZlTW9yZVRocmVhZHMpIHsKKyAgICAg
ICAgICAgIFt0aGlzXSAoUGFya2luZ0xvdDo6VW5wYXJrUmVzdWx0IHJlc3VsdCkgewogICAgICAg
ICAgICAgICAgIC8vIFdlIGFyZSB0aGUgb25seSBvbmVzIHRoYXQgY2FuIGNsZWFyIGVpdGhlciB0
aGUgaXNIZWxkQml0IG9yIHRoZSBoYXNQYXJrZWRCaXQsCiAgICAgICAgICAgICAgICAgLy8gc28g
d2Ugc2hvdWxkIHN0aWxsIHNlZSBib3RoIGJpdHMgc2V0IHJpZ2h0IG5vdy4KICAgICAgICAgICAg
ICAgICBBU1NFUlQobV9ieXRlLmxvYWQoKSA9PSAoaXNIZWxkQml0IHwgaGFzUGFya2VkQml0KSk7
CiAKLSAgICAgICAgICAgICAgICBpZiAobWF5SGF2ZU1vcmVUaHJlYWRzKQorICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHQubWF5SGF2ZU1vcmVUaHJlYWRzKQogICAgICAgICAgICAgICAgICAgICBt
X2J5dGUuc3RvcmUoaGFzUGFya2VkQml0KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIG1fYnl0ZS5zdG9yZSgwKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Bhcmtp
bmdMb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuY3BwCShy
ZXZpc2lvbiAxOTk3MDUpCisrKyBTb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTkxLDE0ICs1OTEsMTEgQEAgTkVWRVJfSU5MSU5FIGJvb2wgUGFya2luZ0xv
dDo6cGFya0NvbmRpdAogICAgIC8vIHByb2JhYmx5IHdvcnRod2hpbGUgdG8gZGV0ZWN0IHdoZW4g
dGhpcyBoYXBwZW5zLCBhbmQgcmV0dXJuIHRydWUgaW4gdGhhdCBjYXNlLCB0byBlbnN1cmUKICAg
ICAvLyB0aGF0IHdoZW4gd2UgcmV0dXJuIGZhbHNlIGl0IHJlYWxseSBtZWFucyB0aGF0IG5vIHVu
cGFyayBjb3VsZCBoYXZlIGJlZW4gcmVzcG9uc2libGUgZm9yIHVzCiAgICAgLy8gd2FraW5nIHVw
LCBhbmQgdGhhdCBpZiBhbiB1bnBhcmsgY2FsbCBkaWQgaGFwcGVuLCBpdCB3b2tlIHNvbWVvbmUg
ZWxzZSB1cC4KLSAgICBib29sIGRpZEZpbmQgPSBmYWxzZTsKICAgICBkZXF1ZXVlKAogICAgICAg
ICBhZGRyZXNzLCBCdWNrZXRNb2RlOjpJZ25vcmVFbXB0eSwKICAgICAgICAgWyZdIChUaHJlYWRE
YXRhKiBlbGVtZW50KSB7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBtZSkgewotICAgICAg
ICAgICAgICAgIGRpZEZpbmQgPSB0cnVlOworICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gbWUp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIERlcXVldWVSZXN1bHQ6OlJlbW92ZUFuZFN0b3A7Ci0g
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gRGVxdWV1ZVJlc3VsdDo6SWdub3JlOwog
ICAgICAgICB9LAogICAgICAgICBbXSAoYm9vbCkgeyB9KTsKQEAgLTYxMiwyOSArNjA5LDM1IEBA
IE5FVkVSX0lOTElORSBib29sIFBhcmtpbmdMb3Q6OnBhcmtDb25kaXQKICAgICB9CiAKICAgICAv
LyBJZiB3ZSB3ZXJlIG5vdCBmb3VuZCBpbiB0aGUgc2VhcmNoIGFib3ZlLCB0aGVuIHdlIGtub3cg
dGhhdCBzb21lb25lIHVucGFya2VkIHVzLgotICAgIHJldHVybiAhZGlkRmluZDsKKyAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLU5FVkVSX0lOTElORSBib29sIFBhcmtpbmdMb3Q6OnVucGFya09uZShj
b25zdCB2b2lkKiBhZGRyZXNzKQorTkVWRVJfSU5MSU5FIFBhcmtpbmdMb3Q6OlVucGFya1Jlc3Vs
dCBQYXJraW5nTG90Ojp1bnBhcmtPbmUoY29uc3Qgdm9pZCogYWRkcmVzcykKIHsKICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IHVu
cGFya2luZyBvbmUuXG4iKSk7CisgICAgCisgICAgVW5wYXJrUmVzdWx0IHJlc3VsdDsKIAogICAg
IFRocmVhZERhdGEqIHRocmVhZERhdGEgPSBudWxscHRyOwotICAgIGJvb2wgcmVzdWx0ID0gZGVx
dWV1ZSgKKyAgICByZXN1bHQubWF5SGF2ZU1vcmVUaHJlYWRzID0gZGVxdWV1ZSgKICAgICAgICAg
YWRkcmVzcywKLSAgICAgICAgQnVja2V0TW9kZTo6SWdub3JlRW1wdHksCisgICAgICAgIEJ1Y2tl
dE1vZGU6OkVuc3VyZU5vbkVtcHR5LAogICAgICAgICBbJl0gKFRocmVhZERhdGEqIGVsZW1lbnQp
IHsKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5hZGRyZXNzICE9IGFkZHJlc3MpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIERlcXVldWVSZXN1bHQ6Oklnbm9yZTsKICAgICAgICAgICAgIHRocmVh
ZERhdGEgPSBlbGVtZW50OworICAgICAgICAgICAgcmVzdWx0LmRpZFVucGFya1RocmVhZCA9IHRy
dWU7CiAgICAgICAgICAgICByZXR1cm4gRGVxdWV1ZVJlc3VsdDo6UmVtb3ZlQW5kU3RvcDsKICAg
ICAgICAgfSwKICAgICAgICAgW10gKGJvb2wpIHsgfSk7CiAKLSAgICBpZiAoIXRocmVhZERhdGEp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQorICAgIGlmICghdGhyZWFkRGF0YSkgeworICAgICAg
ICBBU1NFUlQoIXJlc3VsdC5kaWRVbnBhcmtUaHJlYWQpOworICAgICAgICByZXN1bHQubWF5SGF2
ZU1vcmVUaHJlYWRzID0gZmFsc2U7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAg
IAogICAgIEFTU0VSVCh0aHJlYWREYXRhLT5hZGRyZXNzKTsKICAgICAKICAgICB7CkBAIC02NDgs
NyArNjUxLDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgUGFya2luZ0xvdDo6dW5wYXJrT25lKAogCiBO
RVZFUl9JTkxJTkUgdm9pZCBQYXJraW5nTG90Ojp1bnBhcmtPbmUoCiAgICAgY29uc3Qgdm9pZCog
YWRkcmVzcywKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBkaWRVbnBhcmtUaHJlYWQsIGJv
b2wgbWF5SGF2ZU1vcmVUaHJlYWRzKT4gY2FsbGJhY2spCisgICAgc3RkOjpmdW5jdGlvbjx2b2lk
KFBhcmtpbmdMb3Q6OlVucGFya1Jlc3VsdCk+IGNhbGxiYWNrKQogewogICAgIGlmICh2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogdW5wYXJraW5n
IG9uZSB0aGUgaGFyZCB3YXkuXG4iKSk7CkBAIC02NjQsNyArNjY3LDEwIEBAIE5FVkVSX0lOTElO
RSB2b2lkIFBhcmtpbmdMb3Q6OnVucGFya09uZSgKICAgICAgICAgICAgIHJldHVybiBEZXF1ZXVl
UmVzdWx0OjpSZW1vdmVBbmRTdG9wOwogICAgICAgICB9LAogICAgICAgICBbJl0gKGJvb2wgbWF5
SGF2ZU1vcmVUaHJlYWRzKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayghIXRocmVhZERhdGEsIHRo
cmVhZERhdGEgJiYgbWF5SGF2ZU1vcmVUaHJlYWRzKTsKKyAgICAgICAgICAgIFVucGFya1Jlc3Vs
dCByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQuZGlkVW5wYXJrVGhyZWFkID0gISF0aHJlYWRE
YXRhOworICAgICAgICAgICAgcmVzdWx0Lm1heUhhdmVNb3JlVGhyZWFkcyA9IHJlc3VsdC5kaWRV
bnBhcmtUaHJlYWQgJiYgbWF5SGF2ZU1vcmVUaHJlYWRzOworICAgICAgICAgICAgY2FsbGJhY2so
cmVzdWx0KTsKICAgICAgICAgfSk7CiAKICAgICBpZiAoIXRocmVhZERhdGEpCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9QYXJraW5nTG90LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGFy
a2luZ0xvdC5oCShyZXZpc2lvbiAxOTk3MDUpCisrKyBTb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDExIEBAIHB1YmxpYzoKICAgICAvLyBVbnBh
cmtzIG9uZSB0aHJlYWQgZnJvbSB0aGUgcXVldWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBh
ZGRyZXNzLCB3aGljaCBjYW5ub3QgYmUgbnVsbC4KICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
cmUgbWF5IHN0aWxsIGJlIG90aGVyIHRocmVhZHMgb24gdGhhdCBxdWV1ZSwgb3IgZmFsc2UgaWYg
dGhlcmUgZGVmaW5pdGVseQogICAgIC8vIGFyZSBubyBtb3JlIHRocmVhZHMgb24gdGhlIHF1ZXVl
LgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCB1bnBhcmtPbmUoY29uc3Qgdm9p
ZCogYWRkcmVzcyk7CisgICAgc3RydWN0IFVucGFya1Jlc3VsdCB7CisgICAgICAgIGJvb2wgZGlk
VW5wYXJrVGhyZWFkIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtYXlIYXZlTW9yZVRocmVhZHMg
eyBmYWxzZSB9OworICAgIH07CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBVbnBhcmtS
ZXN1bHQgdW5wYXJrT25lKGNvbnN0IHZvaWQqIGFkZHJlc3MpOwogCiAgICAgLy8gVW5wYXJrcyBv
bmUgdGhyZWFkIGZyb20gdGhlIHF1ZXVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gYWRkcmVz
cywgYW5kIGNhbGxzIHRoZSBnaXZlbgogICAgIC8vIGZ1bmN0b3Igd2hpbGUgdGhlIGFkZHJlc3Mg
aXMgbG9ja2VkLiBSZXBvcnRzIHRvIHRoZSBjYWxsYmFjayB3aGV0aGVyIGFueSB0aHJlYWQgZ290
IHVucGFya2VkCkBAIC04OSw4ICs5Myw3IEBAIHB1YmxpYzoKICAgICAvLyBhbGxvd3MgdGhhdCBy
YWNlIHRvIGJlIGNvbXBsZXRlbHkgYXZvaWRlZCwgc2luY2UgdGhlcmUgaXMgbm8gd2F5IHRoYXQg
YSB0aHJlYWQgY2FuIGJlIHBhcmtlZAogICAgIC8vIHdoaWxlIHRoZSBjYWxsYmFjayBpcyBydW5u
aW5nLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1bnBhcmtPbmUoCi0gICAg
ICAgIGNvbnN0IHZvaWQqIGFkZHJlc3MsCi0gICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChib29s
IGRpZFVucGFya1RocmVhZCwgYm9vbCBtYXlIYXZlTW9yZVRocmVhZHMpPiBjYWxsYmFjayk7Cisg
ICAgICAgIGNvbnN0IHZvaWQqIGFkZHJlc3MsIHN0ZDo6ZnVuY3Rpb248dm9pZChVbnBhcmtSZXN1
bHQpPiBjYWxsYmFjayk7CiAKICAgICAvLyBVbnBhcmtzIGV2ZXJ5IHRocmVhZCBmcm9tIHRoZSBx
dWV1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGFkZHJlc3MsIHdoaWNoIGNhbm5vdCBiZSBu
dWxsLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1bnBhcmtBbGwoY29uc3Qg
dm9pZCogYWRkcmVzcyk7Cg==
</data>
<flag name="review"
          id="300995"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276784</attachid>
            <date>2016-04-19 17:40:02 -0700</date>
            <delta_ts>2016-04-19 19:05:55 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>31472</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxOTk3NDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA0LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgdGhlIFBhcmtpbmdMb3QgdXBhcmtpbmcg
QVBJIGEgYml0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTY3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIFByZXZpb3VzbHksIHVucGFya09uZSgpIHdvdWxkIGVpdGhlciByZXR1cm4gYSBi
b29sZWFuIHRvIHRlbGwgeW91IGlmIHRoZXJlIGFyZSBhbnkgbW9yZSB0aHJlYWRzIG9uCisgICAg
ICAgIHRoZSBxdWV1ZSBvciBpdCB3b3VsZCBwYXNzIHlvdXIgY2FsbGJhY2sgYSBwYWlyIG9mIGJv
b2xlYW5zIC0gb25lIHRvIHRlbGwgaWYgYSB0aHJlYWQgd2FzIHVucGFya2VkCisgICAgICAgIGFu
ZCBhbm90aGVyIHRvIHRlbGwgaWYgdGhlcmUgYXJlIGFueSBtb3JlIHRocmVhZHMuIFRoaXMgd2Fz
IGFuIGFubm95aW5nIGluY29uc2lzdGVuY3kuIFdoYXQgaWYgeW91CisgICAgICAgIHdhbnRlZCB0
byBrbm93IGlmIHVucGFya09uZSgpIHVucGFya2VkIGEgdGhyZWFkIGJ1dCB5b3UgZG9uJ3QgY2Fy
ZSB0byB1c2UgY2FsbGJhY2tzPworCisgICAgICAgIFRoaXMgZml4ZXMgdW5wYXJrT25lKCkgdG8g
dXNlIGEgc3RydWN0IGNhbGxlZCBVbnBhcmtSZXN1bHQgZm9yIGJvdGggb2YgaXRzIHZhcmlhbnRz
LiBUaGlzIG1ha2VzIHRoZQorICAgICAgICBjb2RlIGEgYml0IGNsZWFuZXIuCisKKyAgICAgICAg
KiBiZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwOiBBZGQgc29tZSBtb3JlIGxvY2sgaW1wbGVt
ZW50YXRpb25zIHRvIHRoZSB0ZXN0LgorICAgICAgICAqIHd0Zi9BdG9taWNzLmg6IEFkZCBzb21l
IG1vcmUgYXRvbWljIG9wcy4KKyAgICAgICAgKFdURjo6QXRvbWljOjpleGNoYW5nZUFuZEFkZCk6
CisgICAgICAgIChXVEY6OkF0b21pYzo6ZXhjaGFuZ2UpOgorICAgICAgICAqIHd0Zi9Db25kaXRp
b24uaDogQ2hhbmdlIGNhbGxzIHRvIHVucGFya09uZSgpLgorICAgICAgICAoV1RGOjpDb25kaXRp
b25CYXNlOjpub3RpZnlPbmUpOgorICAgICAgICAqIHd0Zi9Mb2NrLmNwcDogQ2hhbmdlIGNhbGxz
IHRvIHVucGFya09uZSgpLgorICAgICAgICAoV1RGOjpMb2NrQmFzZTo6dW5sb2NrU2xvdyk6Cisg
ICAgICAgICogd3RmL1BhcmtpbmdMb3QuY3BwOgorICAgICAgICAoV1RGOjpQYXJraW5nTG90Ojpw
YXJrQ29uZGl0aW9uYWxseSk6CisgICAgICAgIChXVEY6OlBhcmtpbmdMb3Q6OnVucGFya09uZSk6
CisgICAgICAgICogd3RmL1BhcmtpbmdMb3QuaDogU3dpdGNoIHRvIHVzaW5nIFNjb3BlZExhbWJk
YSBhbmQgaW50cm9kdWNlIFVucGFya1Jlc3VsdC4KKwogMjAxNi0wNC0xOSAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjE5OTcyNi4KSW5kZXg6IFNvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5j
cHAJKHJldmlzaW9uIDE5OTc0OCkKKysrIFNvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRU
ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwyMSArMjgsMzQgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogCisjaW5jbHVkZSA8dGhyZWFkPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9QYXJr
aW5nTG90Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV29yZExvY2suaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSB7CiAKK3Vuc2lnbmVkIG51bVRocmVhZEdy
b3VwczsKK3Vuc2lnbmVkIG51bVRocmVhZHNQZXJHcm91cDsKK3Vuc2lnbmVkIHdvcmtQZXJDcml0
aWNhbFNlY3Rpb247Cit1bnNpZ25lZCB3b3JrQmV0d2VlbkNyaXRpY2FsU2VjdGlvbnM7Cit1bnNp
Z25lZCBzcGluTGltaXQ7Citkb3VibGUgc2Vjb25kc1BlclRlc3Q7CisgICAgCiAvLyBUaGlzIGlz
IHRoZSBvbGQgV1RGOjpTcGluTG9jayBjbGFzcywgaW5jbHVkZWQgaGVyZSBzbyB0aGF0IHdlIGNh
biBzdGlsbCBjb21wYXJlIG91ciBuZXcgbG9ja3MgdG8gYQogLy8gc3BpbmxvY2sgYmFzZWxpbmUu
Ci1jbGFzcyBTcGluTG9jayB7CitjbGFzcyBZaWVsZFNwaW5Mb2NrIHsKIHB1YmxpYzoKLSAgICBT
cGluTG9jaygpCisgICAgWWllbGRTcGluTG9jaygpCiAgICAgewogICAgICAgICBtX2xvY2suc3Rv
cmUoMCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CiAgICAgfQpAQCAtNjcsNzEgKzgwLDQ2
MyBAQCBwcml2YXRlOgogICAgIEF0b21pYzx1bnNpZ25lZD4gbV9sb2NrOwogfTsKIAotdW5zaWdu
ZWQgbnVtVGhyZWFkR3JvdXBzOwotdW5zaWduZWQgbnVtVGhyZWFkc1Blckdyb3VwOwotdW5zaWdu
ZWQgd29ya1BlckNyaXRpY2FsU2VjdGlvbjsKLXVuc2lnbmVkIG51bU5vaXNlVGhyZWFkczsKLXVu
c2lnbmVkIG51bUl0ZXJhdGlvbnM7CitjbGFzcyBQYXVzZVNwaW5Mb2NrIHsKK3B1YmxpYzoKKyAg
ICBQYXVzZVNwaW5Mb2NrKCkKKyAgICB7CisgICAgICAgIG1fbG9jay5zdG9yZSgwLCBzdGQ6Om1l
bW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgICB9CisKKyAgICB2b2lkIGxvY2soKQorICAgIHsKKyAg
ICAgICAgd2hpbGUgKCFtX2xvY2suY29tcGFyZUV4Y2hhbmdlV2VhaygwLCAxLCBzdGQ6Om1lbW9y
eV9vcmRlcl9hY3F1aXJlKSkKKyAgICAgICAgICAgIGFzbSB2b2xhdGlsZSAoInBhdXNlIik7Cisg
ICAgfQorCisgICAgdm9pZCB1bmxvY2soKQorICAgIHsKKyAgICAgICAgbV9sb2NrLnN0b3JlKDAs
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOworICAgIH0KKworICAgIGJvb2wgaXNMb2NrZWQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbG9jay5sb2FkKHN0ZDo6bWVtb3J5X29y
ZGVyX2FjcXVpcmUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBdG9taWM8dW5zaWduZWQ+IG1f
bG9jazsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0YXRlVHlwZT4KK2NsYXNzIEJhcmdpbmdM
b2NrIHsKK3B1YmxpYzoKKyAgICBCYXJnaW5nTG9jaygpCisgICAgeworICAgICAgICBtX3N0YXRl
LnN0b3JlKDApOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvY2soKQorICAgIHsKKyAgICAgICAg
aWYgKExJS0VMWShtX3N0YXRlLmNvbXBhcmVFeGNoYW5nZVdlYWsoMCwgaXNMb2NrZWRCaXQsIHN0
ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
CisgICAgICAgIGxvY2tTbG93KCk7CisgICAgfQorICAgIAorICAgIHZvaWQgdW5sb2NrKCkKKyAg
ICB7CisgICAgICAgIGlmIChMSUtFTFkobV9zdGF0ZS5jb21wYXJlRXhjaGFuZ2VXZWFrKGlzTG9j
a2VkQml0LCAwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKSkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgICAgICB1bmxvY2tTbG93KCk7CisgICAgfQorICAgIAorICAgIGJv
b2wgaXNMb2NrZWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RhdGUubG9hZChz
dGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSAmIGlzTG9ja2VkQml0OworICAgIH0KICAgICAKK3By
aXZhdGU6CisgICAgTkVWRVJfSU5MSU5FIHZvaWQgbG9ja1Nsb3coKQorICAgIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gc3BpbkxpbWl0OyBpLS07KSB7CisgICAgICAgICAgICBTdGF0ZVR5
cGUgY3VycmVudFN0YXRlID0gbV9zdGF0ZS5sb2FkKCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGlmICghKGN1cnJlbnRTdGF0ZSAmIGlzTG9ja2VkQml0KQorICAgICAgICAgICAgICAgICYm
IG1fc3RhdGUuY29tcGFyZUV4Y2hhbmdlV2VhayhjdXJyZW50U3RhdGUsIGN1cnJlbnRTdGF0ZSB8
IGlzTG9ja2VkQml0KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUgJiBoYXNQYXJrZWRCaXQpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6Onlp
ZWxkKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAg
ICAgIFN0YXRlVHlwZSBjdXJyZW50U3RhdGUgPSBtX3N0YXRlLmxvYWQoKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKCEoY3VycmVudFN0YXRlICYgaXNMb2NrZWRCaXQpCisgICAgICAg
ICAgICAgICAgJiYgbV9zdGF0ZS5jb21wYXJlRXhjaGFuZ2VXZWFrKGN1cnJlbnRTdGF0ZSwgY3Vy
cmVudFN0YXRlIHwgaXNMb2NrZWRCaXQpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgbV9zdGF0ZS5jb21wYXJlRXhjaGFuZ2VXZWFrKGlzTG9ja2Vk
Qml0LCBpc0xvY2tlZEJpdCB8IGhhc1BhcmtlZEJpdCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIFBhcmtpbmdMb3Q6OmNvbXBhcmVBbmRQYXJrKCZtX3N0YXRlLCBpc0xvY2tlZEJpdCB8IGhh
c1BhcmtlZEJpdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgTkVWRVJfSU5MSU5FIHZv
aWQgdW5sb2NrU2xvdygpCisgICAgeworICAgICAgICBQYXJraW5nTG90Ojp1bnBhcmtPbmUoCisg
ICAgICAgICAgICAmbV9zdGF0ZSwKKyAgICAgICAgICAgIFt0aGlzXSAoUGFya2luZ0xvdDo6VW5w
YXJrUmVzdWx0IHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubWF5SGF2ZU1v
cmVUaHJlYWRzKQorICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnN0b3JlKGhhc1BhcmtlZEJp
dCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnN0
b3JlKDApOworICAgICAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBjb25zdCBT
dGF0ZVR5cGUgaXNMb2NrZWRCaXQgPSAxOworICAgIHN0YXRpYyBjb25zdCBTdGF0ZVR5cGUgaGFz
UGFya2VkQml0ID0gMjsKKyAgICAKKyAgICBBdG9taWM8U3RhdGVUeXBlPiBtX3N0YXRlOworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgU3RhdGVUeXBlPgorY2xhc3MgVGh1bmRlckxvY2sgeworcHVi
bGljOgorICAgIFRodW5kZXJMb2NrKCkKKyAgICB7CisgICAgICAgIG1fc3RhdGUuc3RvcmUoVW5s
b2NrZWQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvY2soKQorICAgIHsKKyAgICAgICAgaWYg
KExJS0VMWShtX3N0YXRlLmNvbXBhcmVFeGNoYW5nZVdlYWsoVW5sb2NrZWQsIExvY2tlZCwgc3Rk
OjptZW1vcnlfb3JkZXJfYWNxdWlyZSkpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAK
KyAgICAgICAgbG9ja1Nsb3coKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB1bmxvY2soKQorICAg
IHsKKyAgICAgICAgaWYgKExJS0VMWShtX3N0YXRlLmNvbXBhcmVFeGNoYW5nZVdlYWsoTG9ja2Vk
LCBVbmxvY2tlZCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSkpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAKKyAgICAgICAgdW5sb2NrU2xvdygpOworICAgIH0KKyAgICAKKyAgICBi
b29sIGlzTG9ja2VkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0YXRlLmxvYWQo
c3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkgIT0gVW5sb2NrZWQ7CisgICAgfQorICAgIAorcHJp
dmF0ZToKKyAgICBORVZFUl9JTkxJTkUgdm9pZCBsb2NrU2xvdygpCisgICAgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBzcGluTGltaXQ7IGktLTspIHsKKyAgICAgICAgICAgIFN0YXRlIGN1
cnJlbnRTdGF0ZSA9IG1fc3RhdGUubG9hZCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoY3VycmVudFN0YXRlID09IFVubG9ja2VkCisgICAgICAgICAgICAgICAgJiYgbV9zdGF0ZS5j
b21wYXJlRXhjaGFuZ2VXZWFrKFVubG9ja2VkLCBMb2NrZWQpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZSA9PSBMb2Nr
ZWRBbmRQYXJrZWQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnlpZWxkKCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIGlmIChtX3N0YXRlLmNvbXBhcmVFeGNoYW5n
ZVdlYWsoVW5sb2NrZWQsIExvY2tlZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBtX3N0YXRlLmNvbXBhcmVFeGNoYW5nZVdlYWsoTG9ja2VkLCBM
b2NrZWRBbmRQYXJrZWQpOworICAgICAgICAgICAgUGFya2luZ0xvdDo6Y29tcGFyZUFuZFBhcmso
Jm1fc3RhdGUsIExvY2tlZEFuZFBhcmtlZCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAg
TkVWRVJfSU5MSU5FIHZvaWQgdW5sb2NrU2xvdygpCisgICAgeworICAgICAgICBpZiAobV9zdGF0
ZS5leGNoYW5nZShVbmxvY2tlZCkgPT0gTG9ja2VkQW5kUGFya2VkKQorICAgICAgICAgICAgUGFy
a2luZ0xvdDo6dW5wYXJrQWxsKCZtX3N0YXRlKTsKKyAgICB9CisgICAgCisgICAgZW51bSBTdGF0
ZSA6IFN0YXRlVHlwZSB7CisgICAgICAgIFVubG9ja2VkLAorICAgICAgICBMb2NrZWQsCisgICAg
ICAgIExvY2tlZEFuZFBhcmtlZAorICAgIH07CisgICAgCisgICAgQXRvbWljPFN0YXRlPiBtX3N0
YXRlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgU3RhdGVUeXBlPgorY2xhc3MgQ2FzY2FkZUxv
Y2sgeworcHVibGljOgorICAgIENhc2NhZGVMb2NrKCkKKyAgICB7CisgICAgICAgIG1fc3RhdGUu
c3RvcmUoVW5sb2NrZWQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvY2soKQorICAgIHsKKyAg
ICAgICAgaWYgKExJS0VMWShtX3N0YXRlLmNvbXBhcmVFeGNoYW5nZVdlYWsoVW5sb2NrZWQsIExv
Y2tlZCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAKKyAgICAgICAgbG9ja1Nsb3coKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB1bmxv
Y2soKQorICAgIHsKKyAgICAgICAgaWYgKExJS0VMWShtX3N0YXRlLmNvbXBhcmVFeGNoYW5nZVdl
YWsoTG9ja2VkLCBVbmxvY2tlZCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSkpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgdW5sb2NrU2xvdygpOworICAgIH0KKyAg
ICAKKyAgICBib29sIGlzTG9ja2VkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0
YXRlLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkgIT0gVW5sb2NrZWQ7CisgICAgfQor
ICAgIAorcHJpdmF0ZToKKyAgICBORVZFUl9JTkxJTkUgdm9pZCBsb2NrU2xvdygpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzcGluTGltaXQ7IGktLTspIHsKKyAgICAgICAgICAg
IFN0YXRlIGN1cnJlbnRTdGF0ZSA9IG1fc3RhdGUubG9hZCgpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAoY3VycmVudFN0YXRlID09IFVubG9ja2VkCisgICAgICAgICAgICAgICAgJiYg
bV9zdGF0ZS5jb21wYXJlRXhjaGFuZ2VXZWFrKFVubG9ja2VkLCBMb2NrZWQpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGF0
ZSA9PSBMb2NrZWRBbmRQYXJrZWQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnlpZWxkKCk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIFN0YXRlIGRlc2lyZWRTdGF0ZSA9IExvY2tlZDsKKyAgICAgICAgZm9y
ICg7OykgeworICAgICAgICAgICAgaWYgKG1fc3RhdGUuY29tcGFyZUV4Y2hhbmdlV2VhayhVbmxv
Y2tlZCwgZGVzaXJlZFN0YXRlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGRlc2lyZWRTdGF0ZSA9IExvY2tlZEFuZFBhcmtlZDsKKyAgICAgICAg
ICAgIG1fc3RhdGUuY29tcGFyZUV4Y2hhbmdlV2VhayhMb2NrZWQsIExvY2tlZEFuZFBhcmtlZCk7
CisgICAgICAgICAgICBQYXJraW5nTG90Ojpjb21wYXJlQW5kUGFyaygmbV9zdGF0ZSwgTG9ja2Vk
QW5kUGFya2VkKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBORVZFUl9JTkxJTkUgdm9p
ZCB1bmxvY2tTbG93KCkKKyAgICB7CisgICAgICAgIGlmIChtX3N0YXRlLmV4Y2hhbmdlKFVubG9j
a2VkKSA9PSBMb2NrZWRBbmRQYXJrZWQpCisgICAgICAgICAgICBQYXJraW5nTG90Ojp1bnBhcmtP
bmUoJm1fc3RhdGUpOworICAgIH0KKyAgICAKKyAgICBlbnVtIFN0YXRlIDogU3RhdGVUeXBlIHsK
KyAgICAgICAgVW5sb2NrZWQsCisgICAgICAgIExvY2tlZCwKKyAgICAgICAgTG9ja2VkQW5kUGFy
a2VkCisgICAgfTsKKyAgICAKKyAgICBBdG9taWM8U3RhdGU+IG1fc3RhdGU7Cit9OworCitjbGFz
cyBIYW5kb2ZmTG9jayB7CitwdWJsaWM6CisgICAgSGFuZG9mZkxvY2soKQorICAgIHsKKyAgICAg
ICAgbV9zdGF0ZS5zdG9yZSgwKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2NrKCkKKyAgICB7
CisgICAgICAgIGlmIChMSUtFTFkobV9zdGF0ZS5jb21wYXJlRXhjaGFuZ2VXZWFrKDAsIGlzTG9j
a2VkQml0LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgbG9ja1Nsb3coKTsKKyAgICB9CisKKyAgICB2b2lkIHVubG9jaygpCisgICAg
eworICAgICAgICBpZiAoTElLRUxZKG1fc3RhdGUuY29tcGFyZUV4Y2hhbmdlV2Vhayhpc0xvY2tl
ZEJpdCwgMCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSkpKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHVubG9ja1Nsb3coKTsKKyAgICB9CisKKyAgICBib29sIGlzTG9ja2VkKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0YXRlLmxvYWQoc3RkOjptZW1vcnlfb3Jk
ZXJfYWNxdWlyZSkgJiBpc0xvY2tlZEJpdDsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIE5F
VkVSX0lOTElORSB2b2lkIGxvY2tTbG93KCkKKyAgICB7CisgICAgICAgIGZvciAoOzspIHsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHN0YXRlID0gbV9zdGF0ZS5sb2FkKCk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmICghKHN0YXRlICYgaXNMb2NrZWRCaXQpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG1fc3RhdGUuY29tcGFyZUV4Y2hhbmdlV2VhayhzdGF0ZSwgc3RhdGUgfCBpc0xvY2tl
ZEJpdCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1fc3Rh
dGUuY29tcGFyZUV4Y2hhbmdlV2VhayhzdGF0ZSwgc3RhdGUgKyBwYXJrZWRDb3VudFVuaXQpKSB7
CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBQYXJraW5nTG90Ojpjb21wYXJlQW5kUGFy
aygmbV9zdGF0ZSwgc3RhdGUgKyBwYXJrZWRDb3VudFVuaXQpOworICAgICAgICAgICAgICAgIG1f
c3RhdGUuZXhjaGFuZ2VBbmRBZGQoLXBhcmtlZENvdW50VW5pdCk7CisgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIE5FVkVSX0lOTElORSB2b2lkIHVubG9ja1Nsb3co
KQorICAgIHsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgdW5zaWduZWQgc3RhdGUg
PSBtX3N0YXRlLmxvYWQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCEoc3RhdGUg
Pj4gcGFya2VkQ291bnRTaGlmdCkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChz
dGF0ZSA9PSBpc0xvY2tlZEJpdCk7CisgICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUuY29tcGFy
ZUV4Y2hhbmdlV2Vhayhpc0xvY2tlZEJpdCwgMCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKFBhcmtpbmdMb3Q6OnVucGFya09uZSgmbV9zdGF0ZSkuZGlkVW5w
YXJrVGhyZWFkKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgdW5wYXJrZWQgc29tZW9uZS4gVGhl
cmUgYXJlIG5vdyBydW5uaW5nIGFuZCB0aGV5IGhvbGQgdGhlIGxvY2suCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBO
b2JvZHkgdW5wYXJrZWQuIE1heWJlIHRoZXJlIGlzbid0IGFueW9uZSB3YWl0aW5nLiBKdXN0IHRy
eSBhZ2Fpbi4KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgaXNMb2NrZWRCaXQgPSAxOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwYXJrZWRDb3Vu
dFNoaWZ0ID0gMTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcGFya2VkQ291bnRVbml0ID0g
MSA8PCBwYXJrZWRDb3VudFNoaWZ0OworICAgIAorICAgIEF0b21pYzx1bnNpZ25lZD4gbV9zdGF0
ZTsKK307CisKIE5PX1JFVFVSTiB2b2lkIHVzYWdlKCkKIHsKLSAgICBwcmludGYoIlVzYWdlOiBM
b2NrU3BlZWRUZXN0IHNwaW5sb2NrfHdvcmRsb2NrfGxvY2t8bXV0ZXh8YWxsIDxudW0gdGhyZWFk
IGdyb3Vwcz4gPG51bSB0aHJlYWRzIHBlciBncm91cD4gPHdvcmsgcGVyIGNyaXRpY2FsIHNlY3Rp
b24+IDxudW0gbm9pc2UgdGhyZWFkcz4gPG51bSBpdGVyYXRpb25zPlxuIik7CisgICAgcHJpbnRm
KCJVc2FnZTogTG9ja1NwZWVkVGVzdCB5aWVsZHNwaW5sb2NrfHBhdXNlc3BpbmxvY2t8d29yZGxv
Y2t8bG9ja3xiYXJnaW5nbG9ja3xiYXJnaW5nd29yZGxvY2t8dGh1bmRlcmxvY2t8dGh1bmRlcndv
cmRsb2NrfGNhc2NhZGVsb2NrfGNhc2NhZGV3b3JkbG9ja2hhbmRvZmZsb2NrfG11dGV4fGFsbCA8
bnVtIHRocmVhZCBncm91cHM+IDxudW0gdGhyZWFkcyBwZXIgZ3JvdXA+IDx3b3JrIHBlciBjcml0
aWNhbCBzZWN0aW9uPiA8d29yayBiZXR3ZWVuIGNyaXRpY2FsIHNlY3Rpb25zPiA8c3BpbiBsaW1p
dD4gPHNlY29uZHMgcGVyIHRlc3Q+XG4iKTsKICAgICBleGl0KDEpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUeXBlPgorc3RydWN0IFdpdGhQYWRkaW5nIHsKKyAgICBUeXBlIHZhbHVlOworICAg
IGNoYXIgYnVmWzMwMF07IC8vIEl0J3MgYmVzdCBpZiB0aGlzIGlzbid0IHBlcmZlY3QgdG8gYXZv
aWQgZmFsc2Ugc2hhcmluZy4KK307CisKK0hhc2hNYXA8Q1N0cmluZywgVmVjdG9yPGRvdWJsZT4+
IHJlc3VsdHM7CisKK3ZvaWQgcmVwb3J0UmVzdWx0KGNvbnN0IGNoYXIqIG5hbWUsIGRvdWJsZSB2
YWx1ZSkKK3sKKyAgICBkYXRhTG9nRigiJXM6ICUuM2xmIEtIelxuIiwgbmFtZSwgdmFsdWUpOwor
ICAgIHJlc3VsdHMuYWRkKG5hbWUsIFZlY3Rvcjxkb3VibGU+KCkpLml0ZXJhdG9yLT52YWx1ZS5h
cHBlbmQodmFsdWUpOworfQorCitib29sIGRpZFJ1bjsKKwogdGVtcGxhdGU8dHlwZW5hbWUgTG9j
a1R5cGU+CiB2b2lkIHJ1bkJlbmNobWFyayhjb25zdCBjaGFyKiBuYW1lKQogewotICAgIHN0ZDo6
dW5pcXVlX3B0cjxMb2NrVHlwZVtdPiBsb2NrcyA9IHN0ZDo6bWFrZV91bmlxdWU8TG9ja1R5cGVb
XT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8ZG91YmxlW10+IHdvcmRz
ID0gc3RkOjptYWtlX3VuaXF1ZTxkb3VibGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+IGxvY2tzID0gc3RkOjptYWtlX3Vu
aXF1ZTxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8ZG91YmxlPltdPiB3b3JkcyA9IHN0ZDo6bWFrZV91bmlx
dWU8V2l0aFBhZGRpbmc8ZG91YmxlPltdPihudW1UaHJlYWRHcm91cHMpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxUaHJlYWRJZGVudGlmaWVyW10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFRo
cmVhZElkZW50aWZpZXJbXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdyb3VwKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkSWRlbnRpZmllcltdPiBub2lzZVRocmVhZHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRocmVhZElkZW50aWZpZXJbXT4obnVtTm9pc2VUaHJlYWRzKTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8ZG91YmxlW10+IG5vaXNlQ291bnRzID0gc3RkOjptYWtlX3VuaXF1
ZTxkb3VibGVbXT4obnVtTm9pc2VUaHJlYWRzKTsKIAotICAgIHZvbGF0aWxlIGJvb2wgc2hvdWxk
U3RvcCA9IGZhbHNlOwotICAgIGZvciAodW5zaWduZWQgdGhyZWFkSW5kZXggPSBudW1Ob2lzZVRo
cmVhZHM7IHRocmVhZEluZGV4LS07KSB7Ci0gICAgICAgIG5vaXNlQ291bnRzW3RocmVhZEluZGV4
XSA9IDA7Ci0gICAgICAgIG5vaXNlVGhyZWFkc1t0aHJlYWRJbmRleF0gPSBjcmVhdGVUaHJlYWQo
Ci0gICAgICAgICAgICAiTm9pc2UgVGhyZWFkIiwKLSAgICAgICAgICAgIFsmc2hvdWxkU3RvcCwg
Jm5vaXNlQ291bnRzLCB0aHJlYWRJbmRleF0gKCkgewotICAgICAgICAgICAgICAgIHdoaWxlICgh
c2hvdWxkU3RvcCkKLSAgICAgICAgICAgICAgICAgICAgbm9pc2VDb3VudHNbdGhyZWFkSW5kZXhd
Kys7Ci0gICAgICAgICAgICB9KTsKLSAgICB9CisgICAgdm9sYXRpbGUgYm9vbCBrZWVwR29pbmcg
PSB0cnVlOwogCi0gICAgZG91YmxlIGJlZm9yZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZU1TKCk7CisgICAgZG91YmxlIGJlZm9yZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
OworICAgIAorICAgIExvY2sgbnVtSXRlcmF0aW9uc0xvY2s7CisgICAgdWludDY0X3QgbnVtSXRl
cmF0aW9ucyA9IDA7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCB0aHJlYWRHcm91cEluZGV4ID0g
bnVtVGhyZWFkR3JvdXBzOyB0aHJlYWRHcm91cEluZGV4LS07KSB7Ci0gICAgICAgIHdvcmRzW3Ro
cmVhZEdyb3VwSW5kZXhdID0gMDsKKyAgICAgICAgd29yZHNbdGhyZWFkR3JvdXBJbmRleF0udmFs
dWUgPSAwOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgdGhyZWFkSW5kZXggPSBudW1UaHJlYWRz
UGVyR3JvdXA7IHRocmVhZEluZGV4LS07KSB7CiAgICAgICAgICAgICB0aHJlYWRzW3RocmVhZEdy
b3VwSW5kZXggKiBudW1UaHJlYWRzUGVyR3JvdXAgKyB0aHJlYWRJbmRleF0gPSBjcmVhdGVUaHJl
YWQoCiAgICAgICAgICAgICAgICAgIkJlbmNobWFyayB0aHJlYWQiLAotICAgICAgICAgICAgICAg
IFt0aHJlYWRHcm91cEluZGV4LCAmbG9ja3MsICZ3b3Jkc10gKCkgewotICAgICAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1JdGVyYXRpb25zOyBpLS07KSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBsb2Nrc1t0aHJlYWRHcm91cEluZGV4XS5sb2NrKCk7CisgICAgICAgICAg
ICAgICAgW3RocmVhZEdyb3VwSW5kZXgsICZsb2NrcywgJndvcmRzLCAma2VlcEdvaW5nLCAmbnVt
SXRlcmF0aW9uc0xvY2ssICZudW1JdGVyYXRpb25zXSAoKSB7CisgICAgICAgICAgICAgICAgICAg
IGRvdWJsZSBsb2NhbFdvcmQgPSAwOworICAgICAgICAgICAgICAgICAgICBkb3VibGUgdmFsdWUg
PSAxOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBteU51bUl0ZXJhdGlvbnMgPSAwOwor
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoa2VlcEdvaW5nKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBsb2Nrc1t0aHJlYWRHcm91cEluZGV4XS52YWx1ZS5sb2NrKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSB3b3JrUGVyQ3JpdGljYWxTZWN0aW9uOyBq
LS07KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZHNbdGhyZWFkR3JvdXBJbmRl
eF0rKzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jkc1t0aHJlYWRHcm91cEluZGV4
XSAqPSAxLjAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRzW3RocmVhZEdyb3Vw
SW5kZXhdLnZhbHVlICs9IHZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRz
W3RocmVhZEdyb3VwSW5kZXhdLnZhbHVlICo9IDEuMDE7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgPSB3b3Jkc1t0aHJlYWRHcm91cEluZGV4XS52YWx1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tzW3RocmVhZEdyb3Vw
SW5kZXhdLnZhbHVlLnVubG9jaygpOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gd29ya0JldHdlZW5Dcml0aWNhbFNlY3Rpb25zOyBqLS07KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9jYWxXb3JkICs9IHZhbHVlOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2FsV29yZCAqPSAxLjAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gbG9jYWxXb3JkOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9ja3NbdGhyZWFkR3JvdXBJbmRleF0udW5sb2NrKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBteU51bUl0ZXJhdGlvbnMrKzsKICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihudW1JdGVyYXRpb25zTG9j
ayk7CisgICAgICAgICAgICAgICAgICAgIG51bUl0ZXJhdGlvbnMgKz0gbXlOdW1JdGVyYXRpb25z
OwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQogCisgICAgc2xlZXAoc2Vj
b25kc1BlclRlc3QpOworICAgIGtlZXBHb2luZyA9IGZhbHNlOworICAgIAogICAgIGZvciAodW5z
aWduZWQgdGhyZWFkSW5kZXggPSBudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXA7
IHRocmVhZEluZGV4LS07KQogICAgICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbih0aHJlYWRz
W3RocmVhZEluZGV4XSk7Ci0gICAgc2hvdWxkU3RvcCA9IHRydWU7Ci0gICAgZG91YmxlIG5vaXNl
Q291bnQgPSAwOwotICAgIGZvciAodW5zaWduZWQgdGhyZWFkSW5kZXggPSBudW1Ob2lzZVRocmVh
ZHM7IHRocmVhZEluZGV4LS07KSB7Ci0gICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG5v
aXNlVGhyZWFkc1t0aHJlYWRJbmRleF0pOwotICAgICAgICBub2lzZUNvdW50ICs9IG5vaXNlQ291
bnRzW3RocmVhZEluZGV4XTsKKworICAgIGRvdWJsZSBhZnRlciA9IG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpOworICAgIAorICAgIHJlcG9ydFJlc3VsdChuYW1lLCBudW1JdGVyYXRpb25z
IC8gKGFmdGVyIC0gYmVmb3JlKSAvIDEwMDApOworICAgIGRpZFJ1biA9IHRydWU7Cit9CisKK3Vu
c2lnbmVkIHJhbmdlTWluOwordW5zaWduZWQgcmFuZ2VNYXg7Cit1bnNpZ25lZCByYW5nZVN0ZXA7
Cit1bnNpZ25lZCogcmFuZ2VWYXJpYWJsZTsKKworYm9vbCBwYXJzZVZhbHVlKGNvbnN0IGNoYXIq
IHN0cmluZywgdW5zaWduZWQqIHZhcmlhYmxlKQoreworICAgIHVuc2lnbmVkIG15UmFuZ2VNaW47
CisgICAgdW5zaWduZWQgbXlSYW5nZU1heDsKKyAgICB1bnNpZ25lZCBteVJhbmdlU3RlcDsKKyAg
ICBpZiAoc3NjYW5mKHN0cmluZywgIiV1LSV1OiV1IiwgJm15UmFuZ2VNaW4sICZteVJhbmdlTWF4
LCAmbXlSYW5nZVN0ZXApID09IDMpIHsKKyAgICAgICAgaWYgKHJhbmdlVmFyaWFibGUpIHsKKyAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuIG9ubHkgaGF2ZSBvbmUgdmFyaWFibGUgd2l0
aCBhIHJhbmdlLlxuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHJhbmdlTWluID0gbXlSYW5nZU1pbjsKKyAgICAgICAgcmFuZ2VNYXgg
PSBteVJhbmdlTWF4OworICAgICAgICByYW5nZVN0ZXAgPSBteVJhbmdlU3RlcDsKKyAgICAgICAg
cmFuZ2VWYXJpYWJsZSA9IHZhcmlhYmxlOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Cisg
ICAgCisgICAgaWYgKHNzY2FuZihzdHJpbmcsICIldSIsIHZhcmlhYmxlKSA9PSAxKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAKLSAgICBkb3VibGUg
YWZ0ZXIgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNUygpOwordm9pZCBydW5FdmVyeXRo
aW5nKGNvbnN0IGNoYXIqIHdoYXQpCit7CisgICAgaWYgKCFzdHJjbXAod2hhdCwgInlpZWxkc3Bp
bmxvY2siKSB8fCAhc3RyY21wKHdoYXQsICJhbGwiKSkKKyAgICAgICAgcnVuQmVuY2htYXJrPFlp
ZWxkU3BpbkxvY2s+KCJZaWVsZFNwaW5Mb2NrIik7CisgICAgaWYgKCFzdHJjbXAod2hhdCwgInBh
dXNlc3BpbmxvY2siKSB8fCAhc3RyY21wKHdoYXQsICJhbGwiKSkKKyAgICAgICAgcnVuQmVuY2ht
YXJrPFBhdXNlU3BpbkxvY2s+KCJQYXVzZVNwaW5Mb2NrIik7CisgICAgaWYgKCFzdHJjbXAod2hh
dCwgIndvcmRsb2NrIikgfHwgIXN0cmNtcCh3aGF0LCAiYWxsIikpCisgICAgICAgIHJ1bkJlbmNo
bWFyazxXb3JkTG9jaz4oIldURldvcmRMb2NrIik7CisgICAgaWYgKCFzdHJjbXAod2hhdCwgImxv
Y2siKSB8fCAhc3RyY21wKHdoYXQsICJhbGwiKSkKKyAgICAgICAgcnVuQmVuY2htYXJrPExvY2s+
KCJXVEZMb2NrIik7CisgICAgaWYgKCFzdHJjbXAod2hhdCwgImJhcmdpbmdsb2NrIikgfHwgIXN0
cmNtcCh3aGF0LCAiYWxsIikpCisgICAgICAgIHJ1bkJlbmNobWFyazxCYXJnaW5nTG9jazx1aW50
OF90Pj4oIkJ5dGVCYXJnaW5nTG9jayIpOworICAgIGlmICghc3RyY21wKHdoYXQsICJiYXJnaW5n
d29yZGxvY2siKSB8fCAhc3RyY21wKHdoYXQsICJhbGwiKSkKKyAgICAgICAgcnVuQmVuY2htYXJr
PEJhcmdpbmdMb2NrPHVpbnQzMl90Pj4oIldvcmRCYXJnaW5nTG9jayIpOworICAgIGlmICghc3Ry
Y21wKHdoYXQsICJ0aHVuZGVybG9jayIpIHx8ICFzdHJjbXAod2hhdCwgImFsbCIpKQorICAgICAg
ICBydW5CZW5jaG1hcms8VGh1bmRlckxvY2s8dWludDhfdD4+KCJCeXRlVGh1bmRlckxvY2siKTsK
KyAgICBpZiAoIXN0cmNtcCh3aGF0LCAidGh1bmRlcndvcmRsb2NrIikgfHwgIXN0cmNtcCh3aGF0
LCAiYWxsIikpCisgICAgICAgIHJ1bkJlbmNobWFyazxUaHVuZGVyTG9jazx1aW50MzJfdD4+KCJX
b3JkVGh1bmRlckxvY2siKTsKKyAgICBpZiAoIXN0cmNtcCh3aGF0LCAiY2FzY2FkZWxvY2siKSB8
fCAhc3RyY21wKHdoYXQsICJhbGwiKSkKKyAgICAgICAgcnVuQmVuY2htYXJrPENhc2NhZGVMb2Nr
PHVpbnQ4X3Q+PigiQnl0ZUNhc2NhZGVMb2NrIik7CisgICAgaWYgKCFzdHJjbXAod2hhdCwgImNh
c2NhZGV3b3JkbG9jayIpIHx8ICFzdHJjbXAod2hhdCwgImFsbCIpKQorICAgICAgICBydW5CZW5j
aG1hcms8Q2FzY2FkZUxvY2s8dWludDMyX3Q+PigiV29yZENhc2NhZGVMb2NrIik7CisgICAgaWYg
KCFzdHJjbXAod2hhdCwgImhhbmRvZmZsb2NrIikgfHwgIXN0cmNtcCh3aGF0LCAiYWxsIikpCisg
ICAgICAgIHJ1bkJlbmNobWFyazxIYW5kb2ZmTG9jaz4oIkhhbmRvZmZMb2NrIik7CisgICAgaWYg
KCFzdHJjbXAod2hhdCwgIm11dGV4IikgfHwgIXN0cmNtcCh3aGF0LCAiYWxsIikpCisgICAgICAg
IHJ1bkJlbmNobWFyazxNdXRleD4oIlBsYXRmb3JtTXV0ZXgiKTsKIAotICAgIHByaW50ZigiJXM6
ICUuM2xmIG1zLCAlLjBsZiBub2lzZS5cbiIsIG5hbWUsIGFmdGVyIC0gYmVmb3JlLCBub2lzZUNv
dW50KTsKKyAgICBpZiAoIWRpZFJ1bikKKyAgICAgICAgdXNhZ2UoKTsKIH0KIAogfSAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCkBAIC0xNDAsMzQgKzU0NSwzNyBAQCBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiB7CiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgCi0g
ICAgaWYgKGFyZ2MgIT0gNwotICAgICAgICB8fCBzc2NhbmYoYXJndlsyXSwgIiV1IiwgJm51bVRo
cmVhZEdyb3VwcykgIT0gMQotICAgICAgICB8fCBzc2NhbmYoYXJndlszXSwgIiV1IiwgJm51bVRo
cmVhZHNQZXJHcm91cCkgIT0gMQotICAgICAgICB8fCBzc2NhbmYoYXJndls0XSwgIiV1IiwgJndv
cmtQZXJDcml0aWNhbFNlY3Rpb24pICE9IDEKLSAgICAgICAgfHwgc3NjYW5mKGFyZ3ZbNV0sICIl
dSIsICZudW1Ob2lzZVRocmVhZHMpICE9IDEKLSAgICAgICAgfHwgc3NjYW5mKGFyZ3ZbNl0sICIl
dSIsICZudW1JdGVyYXRpb25zKSAhPSAxKQorICAgIGlmIChhcmdjICE9IDgKKyAgICAgICAgfHwg
IXBhcnNlVmFsdWUoYXJndlsyXSwgJm51bVRocmVhZEdyb3VwcykKKyAgICAgICAgfHwgIXBhcnNl
VmFsdWUoYXJndlszXSwgJm51bVRocmVhZHNQZXJHcm91cCkKKyAgICAgICAgfHwgIXBhcnNlVmFs
dWUoYXJndls0XSwgJndvcmtQZXJDcml0aWNhbFNlY3Rpb24pCisgICAgICAgIHx8ICFwYXJzZVZh
bHVlKGFyZ3ZbNV0sICZ3b3JrQmV0d2VlbkNyaXRpY2FsU2VjdGlvbnMpCisgICAgICAgIHx8ICFw
YXJzZVZhbHVlKGFyZ3ZbNl0sICZzcGluTGltaXQpCisgICAgICAgIHx8IHNzY2FuZihhcmd2Wzdd
LCAiJWxmIiwgJnNlY29uZHNQZXJUZXN0KSAhPSAxKQogICAgICAgICB1c2FnZSgpOwotCi0gICAg
Ym9vbCBkaWRSdW4gPSBmYWxzZTsKLSAgICBpZiAoIXN0cmNtcChhcmd2WzFdLCAic3BpbmxvY2si
KSB8fCAhc3RyY21wKGFyZ3ZbMV0sICJhbGwiKSkgewotICAgICAgICBydW5CZW5jaG1hcms8U3Bp
bkxvY2s+KCJTcGluTG9jayIpOwotICAgICAgICBkaWRSdW4gPSB0cnVlOwotICAgIH0KLSAgICBp
ZiAoIXN0cmNtcChhcmd2WzFdLCAid29yZGxvY2siKSB8fCAhc3RyY21wKGFyZ3ZbMV0sICJhbGwi
KSkgewotICAgICAgICBydW5CZW5jaG1hcms8V29yZExvY2s+KCJXVEYgV29yZExvY2siKTsKLSAg
ICAgICAgZGlkUnVuID0gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKCFzdHJjbXAoYXJndlsxXSwgImxv
Y2siKSB8fCAhc3RyY21wKGFyZ3ZbMV0sICJhbGwiKSkgewotICAgICAgICBydW5CZW5jaG1hcms8
TG9jaz4oIldURiBMb2NrIik7Ci0gICAgICAgIGRpZFJ1biA9IHRydWU7Ci0gICAgfQotICAgIGlm
ICghc3RyY21wKGFyZ3ZbMV0sICJtdXRleCIpIHx8ICFzdHJjbXAoYXJndlsxXSwgImFsbCIpKSB7
Ci0gICAgICAgIHJ1bkJlbmNobWFyazxNdXRleD4oIlBsYXRmb3JtIE11dGV4Iik7Ci0gICAgICAg
IGRpZFJ1biA9IHRydWU7CisgICAgCisgICAgaWYgKHJhbmdlVmFyaWFibGUpIHsKKyAgICAgICAg
ZGF0YUxvZygiUnVubmluZyB3aXRoIHJhbmdlTWluID0gIiwgcmFuZ2VNaW4sICIsIHJhbmdlTWF4
ID0gIiwgcmFuZ2VNYXgsICIsIHJhbmdlU3RlcCA9ICIsIHJhbmdlU3RlcCwgIlxuIik7CisgICAg
ICAgIGZvciAodW5zaWduZWQgdmFsdWUgPSByYW5nZU1pbjsgdmFsdWUgPD0gcmFuZ2VNYXg7IHZh
bHVlICs9IHJhbmdlU3RlcCkgeworICAgICAgICAgICAgZGF0YUxvZygiUnVubmluZyB3aXRoIHZh
bHVlID0gIiwgdmFsdWUsICJcbiIpOworICAgICAgICAgICAgKnJhbmdlVmFyaWFibGUgPSB2YWx1
ZTsKKyAgICAgICAgICAgIHJ1bkV2ZXJ5dGhpbmcoYXJndlsxXSk7CisgICAgICAgIH0KKyAgICB9
IGVsc2UKKyAgICAgICAgcnVuRXZlcnl0aGluZyhhcmd2WzFdKTsKKyAgICAKKyAgICBmb3IgKGF1
dG8mIGVudHJ5IDogcmVzdWx0cykgeworICAgICAgICBwcmludGYoIiVzID0geyIsIGVudHJ5Lmtl
eS5kYXRhKCkpOworICAgICAgICBib29sIGZpcnN0ID0gdHJ1ZTsKKyAgICAgICAgZm9yIChkb3Vi
bGUgdmFsdWUgOiBlbnRyeS52YWx1ZSkgeworICAgICAgICAgICAgaWYgKGZpcnN0KQorICAgICAg
ICAgICAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgcHJpbnRmKCIsICIpOworICAgICAgICAgICAgcHJpbnRmKCIlLjNsZiIsIHZhbHVlKTsKKyAg
ICAgICAgfQorICAgICAgICBwcmludGYoIn07XG4iKTsKICAgICB9CiAKLSAgICBpZiAoIWRpZFJ1
bikKLSAgICAgICAgdXNhZ2UoKTsKLQogICAgIHJldHVybiAwOwogfQpJbmRleDogU291cmNlL1dU
Ri93dGYvQXRvbWljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAko
cmV2aXNpb24gMTk5NzQ4KQorKysgU291cmNlL1dURi93dGYvQXRvbWljcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Niw2ICs3NiwyNSBAQCBzdHJ1Y3QgQXRvbWljIHsKICAgICAgICAgVCBleHBlY3Rl
ZE9yQWN0dWFsID0gZXhwZWN0ZWQ7CiAgICAgICAgIHJldHVybiB2YWx1ZS5jb21wYXJlX2V4Y2hh
bmdlX3N0cm9uZyhleHBlY3RlZE9yQWN0dWFsLCBkZXNpcmVkLCBvcmRlcik7CiAgICAgfQorICAg
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgVCBleGNoYW5nZUFuZEFkZChVIGFkZGVu
ZCwgc3RkOjptZW1vcnlfb3JkZXIgb3JkZXIgPSBzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KQor
ICAgIHsKKyNpZiBPUyhXSU5ET1dTKQorICAgICAgICAvLyBTZWUgYWJvdmUuCisgICAgICAgIG9y
ZGVyID0gc3RkOjptZW1vcnlfb3JkZXJfc2VxX2NzdDsKKyNlbmRpZgorICAgICAgICByZXR1cm4g
dmFsdWUuZmV0Y2hfYWRkKGFkZGVuZCwgb3JkZXIpOworICAgIH0KKyAgICAKKyAgICBUIGV4Y2hh
bmdlKFQgbmV3VmFsdWUsIHN0ZDo6bWVtb3J5X29yZGVyIG9yZGVyID0gc3RkOjptZW1vcnlfb3Jk
ZXJfc2VxX2NzdCkKKyAgICB7CisjaWYgT1MoV0lORE9XUykKKyAgICAgICAgLy8gU2VlIGFib3Zl
LgorICAgICAgICBvcmRlciA9IHN0ZDo6bWVtb3J5X29yZGVyX3NlcV9jc3Q7CisjZW5kaWYKKyAg
ICAgICAgcmV0dXJuIHZhbHVlLmV4Y2hhbmdlKG5ld1ZhbHVlLCBvcmRlcik7CisgICAgfQogCiAg
ICAgc3RkOjphdG9taWM8VD4gdmFsdWU7CiB9OwpJbmRleDogU291cmNlL1dURi93dGYvQ29uZGl0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ29uZGl0aW9uLmgJKHJldmlzaW9u
IDE5OTc0OCkKKysrIFNvdXJjZS9XVEYvd3RmL0NvbmRpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xODAsOCArMTgwLDggQEAgc3RydWN0IENvbmRpdGlvbkJhc2UgewogICAgICAgICAKICAgICAg
ICAgUGFya2luZ0xvdDo6dW5wYXJrT25lKAogICAgICAgICAgICAgJm1faGFzV2FpdGVycywKLSAg
ICAgICAgICAgIFt0aGlzXSAoYm9vbCwgYm9vbCBtYXlIYXZlTW9yZVRocmVhZHMpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIW1heUhhdmVNb3JlVGhyZWFkcykKKyAgICAgICAgICAgIFt0aGlzXSAo
UGFya2luZ0xvdDo6VW5wYXJrUmVzdWx0IHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGlmICgh
cmVzdWx0Lm1heUhhdmVNb3JlVGhyZWFkcykKICAgICAgICAgICAgICAgICAgICAgbV9oYXNXYWl0
ZXJzLnN0b3JlKGZhbHNlKTsKICAgICAgICAgICAgIH0pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0xvY2suY3BwCShy
ZXZpc2lvbiAxOTk3NDgpCisrKyBTb3VyY2UvV1RGL3d0Zi9Mb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTQsMTIgKzk0LDEyIEBAIE5FVkVSX0lOTElORSB2b2lkIExvY2tCYXNlOjp1bmxvY2tT
bG93KCkKICAgICAgICAgQVNTRVJUKG9sZEJ5dGVWYWx1ZSA9PSAoaXNIZWxkQml0IHwgaGFzUGFy
a2VkQml0KSk7CiAgICAgICAgIFBhcmtpbmdMb3Q6OnVucGFya09uZSgKICAgICAgICAgICAgICZt
X2J5dGUsCi0gICAgICAgICAgICBbdGhpc10gKGJvb2wsIGJvb2wgbWF5SGF2ZU1vcmVUaHJlYWRz
KSB7CisgICAgICAgICAgICBbdGhpc10gKFBhcmtpbmdMb3Q6OlVucGFya1Jlc3VsdCByZXN1bHQp
IHsKICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IGNhbiBjbGVh
ciBlaXRoZXIgdGhlIGlzSGVsZEJpdCBvciB0aGUgaGFzUGFya2VkQml0LAogICAgICAgICAgICAg
ICAgIC8vIHNvIHdlIHNob3VsZCBzdGlsbCBzZWUgYm90aCBiaXRzIHNldCByaWdodCBub3cuCiAg
ICAgICAgICAgICAgICAgQVNTRVJUKG1fYnl0ZS5sb2FkKCkgPT0gKGlzSGVsZEJpdCB8IGhhc1Bh
cmtlZEJpdCkpOwogCi0gICAgICAgICAgICAgICAgaWYgKG1heUhhdmVNb3JlVGhyZWFkcykKKyAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0Lm1heUhhdmVNb3JlVGhyZWFkcykKICAgICAgICAgICAg
ICAgICAgICAgbV9ieXRlLnN0b3JlKGhhc1BhcmtlZEJpdCk7CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBtX2J5dGUuc3RvcmUoMCk7CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9QYXJraW5nTG90LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QYXJraW5n
TG90LmNwcAkocmV2aXNpb24gMTk5NzQ4KQorKysgU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMCwxMCArNTMwLDEwIEBAIGJvb2wgZGVxdWV1ZSgKIAog
fSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLU5FVkVSX0lOTElORSBib29sIFBhcmtpbmdMb3Q6
OnBhcmtDb25kaXRpb25hbGx5KAorTkVWRVJfSU5MSU5FIGJvb2wgUGFya2luZ0xvdDo6cGFya0Nv
bmRpdGlvbmFsbHlJbXBsKAogICAgIGNvbnN0IHZvaWQqIGFkZHJlc3MsCi0gICAgc3RkOjpmdW5j
dGlvbjxib29sKCk+IHZhbGlkYXRpb24sCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGJlZm9y
ZVNsZWVwLAorICAgIGNvbnN0IFNjb3BlZExhbWJkYTxib29sKCk+JiB2YWxpZGF0aW9uLAorICAg
IGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKCk+JiBiZWZvcmVTbGVlcCwKICAgICBDbG9jazo6dGlt
ZV9wb2ludCB0aW1lb3V0KQogewogICAgIGlmICh2ZXJib3NlKQpAQCAtNTkxLDE0ICs1OTEsMTEg
QEAgTkVWRVJfSU5MSU5FIGJvb2wgUGFya2luZ0xvdDo6cGFya0NvbmRpdAogICAgIC8vIHByb2Jh
Ymx5IHdvcnRod2hpbGUgdG8gZGV0ZWN0IHdoZW4gdGhpcyBoYXBwZW5zLCBhbmQgcmV0dXJuIHRy
dWUgaW4gdGhhdCBjYXNlLCB0byBlbnN1cmUKICAgICAvLyB0aGF0IHdoZW4gd2UgcmV0dXJuIGZh
bHNlIGl0IHJlYWxseSBtZWFucyB0aGF0IG5vIHVucGFyayBjb3VsZCBoYXZlIGJlZW4gcmVzcG9u
c2libGUgZm9yIHVzCiAgICAgLy8gd2FraW5nIHVwLCBhbmQgdGhhdCBpZiBhbiB1bnBhcmsgY2Fs
bCBkaWQgaGFwcGVuLCBpdCB3b2tlIHNvbWVvbmUgZWxzZSB1cC4KLSAgICBib29sIGRpZEZpbmQg
PSBmYWxzZTsKICAgICBkZXF1ZXVlKAogICAgICAgICBhZGRyZXNzLCBCdWNrZXRNb2RlOjpJZ25v
cmVFbXB0eSwKICAgICAgICAgWyZdIChUaHJlYWREYXRhKiBlbGVtZW50KSB7Ci0gICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBtZSkgewotICAgICAgICAgICAgICAgIGRpZEZpbmQgPSB0cnVlOwor
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIERl
cXVldWVSZXN1bHQ6OlJlbW92ZUFuZFN0b3A7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gRGVxdWV1ZVJlc3VsdDo6SWdub3JlOwogICAgICAgICB9LAogICAgICAgICBbXSAoYm9v
bCkgeyB9KTsKQEAgLTYxMiwyOSArNjA5LDM1IEBAIE5FVkVSX0lOTElORSBib29sIFBhcmtpbmdM
b3Q6OnBhcmtDb25kaXQKICAgICB9CiAKICAgICAvLyBJZiB3ZSB3ZXJlIG5vdCBmb3VuZCBpbiB0
aGUgc2VhcmNoIGFib3ZlLCB0aGVuIHdlIGtub3cgdGhhdCBzb21lb25lIHVucGFya2VkIHVzLgot
ICAgIHJldHVybiAhZGlkRmluZDsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU5FVkVSX0lOTElO
RSBib29sIFBhcmtpbmdMb3Q6OnVucGFya09uZShjb25zdCB2b2lkKiBhZGRyZXNzKQorTkVWRVJf
SU5MSU5FIFBhcmtpbmdMb3Q6OlVucGFya1Jlc3VsdCBQYXJraW5nTG90Ojp1bnBhcmtPbmUoY29u
c3Qgdm9pZCogYWRkcmVzcykKIHsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyh0
b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IHVucGFya2luZyBvbmUuXG4iKSk7CisgICAgCisg
ICAgVW5wYXJrUmVzdWx0IHJlc3VsdDsKIAogICAgIFRocmVhZERhdGEqIHRocmVhZERhdGEgPSBu
dWxscHRyOwotICAgIGJvb2wgcmVzdWx0ID0gZGVxdWV1ZSgKKyAgICByZXN1bHQubWF5SGF2ZU1v
cmVUaHJlYWRzID0gZGVxdWV1ZSgKICAgICAgICAgYWRkcmVzcywKLSAgICAgICAgQnVja2V0TW9k
ZTo6SWdub3JlRW1wdHksCisgICAgICAgIEJ1Y2tldE1vZGU6OkVuc3VyZU5vbkVtcHR5LAogICAg
ICAgICBbJl0gKFRocmVhZERhdGEqIGVsZW1lbnQpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50
LT5hZGRyZXNzICE9IGFkZHJlc3MpCiAgICAgICAgICAgICAgICAgcmV0dXJuIERlcXVldWVSZXN1
bHQ6Oklnbm9yZTsKICAgICAgICAgICAgIHRocmVhZERhdGEgPSBlbGVtZW50OworICAgICAgICAg
ICAgcmVzdWx0LmRpZFVucGFya1RocmVhZCA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gRGVx
dWV1ZVJlc3VsdDo6UmVtb3ZlQW5kU3RvcDsKICAgICAgICAgfSwKICAgICAgICAgW10gKGJvb2wp
IHsgfSk7CiAKLSAgICBpZiAoIXRocmVhZERhdGEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQor
ICAgIGlmICghdGhyZWFkRGF0YSkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5kaWRVbnBhcmtU
aHJlYWQpOworICAgICAgICByZXN1bHQubWF5SGF2ZU1vcmVUaHJlYWRzID0gZmFsc2U7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIEFTU0VSVCh0aHJlYWREYXRhLT5h
ZGRyZXNzKTsKICAgICAKICAgICB7CkBAIC02NDYsOSArNjQ5LDkgQEAgTkVWRVJfSU5MSU5FIGJv
b2wgUGFya2luZ0xvdDo6dW5wYXJrT25lKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU5FVkVS
X0lOTElORSB2b2lkIFBhcmtpbmdMb3Q6OnVucGFya09uZSgKK05FVkVSX0lOTElORSB2b2lkIFBh
cmtpbmdMb3Q6OnVucGFya09uZUltcGwoCiAgICAgY29uc3Qgdm9pZCogYWRkcmVzcywKLSAgICBz
dGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBkaWRVbnBhcmtUaHJlYWQsIGJvb2wgbWF5SGF2ZU1vcmVU
aHJlYWRzKT4gY2FsbGJhY2spCisgICAgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoUGFya2luZ0xv
dDo6VW5wYXJrUmVzdWx0KT4mIGNhbGxiYWNrKQogewogICAgIGlmICh2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogdW5wYXJraW5nIG9uZSB0aGUg
aGFyZCB3YXkuXG4iKSk7CkBAIC02NjQsNyArNjY3LDEwIEBAIE5FVkVSX0lOTElORSB2b2lkIFBh
cmtpbmdMb3Q6OnVucGFya09uZSgKICAgICAgICAgICAgIHJldHVybiBEZXF1ZXVlUmVzdWx0OjpS
ZW1vdmVBbmRTdG9wOwogICAgICAgICB9LAogICAgICAgICBbJl0gKGJvb2wgbWF5SGF2ZU1vcmVU
aHJlYWRzKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayghIXRocmVhZERhdGEsIHRocmVhZERhdGEg
JiYgbWF5SGF2ZU1vcmVUaHJlYWRzKTsKKyAgICAgICAgICAgIFVucGFya1Jlc3VsdCByZXN1bHQ7
CisgICAgICAgICAgICByZXN1bHQuZGlkVW5wYXJrVGhyZWFkID0gISF0aHJlYWREYXRhOworICAg
ICAgICAgICAgcmVzdWx0Lm1heUhhdmVNb3JlVGhyZWFkcyA9IHJlc3VsdC5kaWRVbnBhcmtUaHJl
YWQgJiYgbWF5SGF2ZU1vcmVUaHJlYWRzOworICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsK
ICAgICAgICAgfSk7CiAKICAgICBpZiAoIXRocmVhZERhdGEpCkBAIC03MTMsNyArNzE5LDcgQEAg
TkVWRVJfSU5MSU5FIHZvaWQgUGFya2luZ0xvdDo6dW5wYXJrQWxsKAogICAgICAgICBkYXRhTG9n
KHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogZG9uZSB1bnBhcmtpbmcuXG4iKSk7CiB9CiAK
LU5FVkVSX0lOTElORSB2b2lkIFBhcmtpbmdMb3Q6OmZvckVhY2goc3RkOjpmdW5jdGlvbjx2b2lk
KFRocmVhZElkZW50aWZpZXIsIGNvbnN0IHZvaWQqKT4gY2FsbGJhY2spCitORVZFUl9JTkxJTkUg
dm9pZCBQYXJraW5nTG90Ojpmb3JFYWNoSW1wbChjb25zdCBTY29wZWRMYW1iZGE8dm9pZChUaHJl
YWRJZGVudGlmaWVyLCBjb25zdCB2b2lkKik+JiBjYWxsYmFjaykKIHsKICAgICBWZWN0b3I8QnVj
a2V0Kj4gYnVja2V0c1RvVW5sb2NrID0gbG9ja0hhc2h0YWJsZSgpOwogCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9QYXJraW5nTG90LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGFya2lu
Z0xvdC5oCShyZXZpc2lvbiAxOTk3NDgpCisrKyBTb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPGNocm9ubz4KICNpbmNsdWRl
IDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL1Nj
b3BlZExhbWJkYS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdU
RiB7CkBAIC01MSwxMSArNTIsMTkgQEAgcHVibGljOgogICAgIC8vIHlvdSBkb24ndCByZWN1cnNp
dmVseSBjYWxsIHBhcmtDb25kaXRpb25hbGx5KCkuIFlvdSBjYW4gY2FsbCB1bnBhcmtPbmUoKS91
bnBhcmtBbGwoKSB0aG91Z2guCiAgICAgLy8gSXQncyB1c2VmdWwgdG8gdXNlIGJlZm9yZVNsZWVw
KCkgdG8gdW5sb2NrIHNvbWUgbXV0ZXggaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mCiAgICAgLy8g
Q29uZGl0aW9uOjp3YWl0KCkuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHBh
cmtDb25kaXRpb25hbGx5KAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbGlkYXRpb25GdW5jdG9y
LCB0eXBlbmFtZSBCZWZvcmVTbGVlcEZ1bmN0b3I+CisgICAgc3RhdGljIGJvb2wgcGFya0NvbmRp
dGlvbmFsbHkoCiAgICAgICAgIGNvbnN0IHZvaWQqIGFkZHJlc3MsCi0gICAgICAgIHN0ZDo6ZnVu
Y3Rpb248Ym9vbCgpPiB2YWxpZGF0aW9uLAotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
YmVmb3JlU2xlZXAsCi0gICAgICAgIENsb2NrOjp0aW1lX3BvaW50IHRpbWVvdXQpOworICAgICAg
ICBWYWxpZGF0aW9uRnVuY3RvciYmIHZhbGlkYXRpb24sCisgICAgICAgIEJlZm9yZVNsZWVwRnVu
Y3RvciYmIGJlZm9yZVNsZWVwLAorICAgICAgICBDbG9jazo6dGltZV9wb2ludCB0aW1lb3V0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHBhcmtDb25kaXRpb25hbGx5SW1wbCgKKyAgICAgICAgICAg
IGFkZHJlc3MsCisgICAgICAgICAgICBzY29wZWRMYW1iZGE8Ym9vbCgpPihzdGQ6OmZvcndhcmQ8
VmFsaWRhdGlvbkZ1bmN0b3I+KHZhbGlkYXRpb24pKSwKKyAgICAgICAgICAgIHNjb3BlZExhbWJk
YTx2b2lkKCk+KHN0ZDo6Zm9yd2FyZDxCZWZvcmVTbGVlcEZ1bmN0b3I+KGJlZm9yZVNsZWVwKSks
CisgICAgICAgICAgICB0aW1lb3V0KTsKKyAgICB9CiAKICAgICAvLyBTaW1wbGUgdmVyc2lvbiBv
ZiBwYXJrQ29uZGl0aW9uYWxseSgpIHRoYXQgY292ZXJzIHRoZSBtb3N0IGNvbW1vbiBjYXNlOiB5
b3Ugd2FudCB0byBwYXJrCiAgICAgLy8gaW5kZWZpbml0ZWx5IHNvIGxvbmcgYXMgdGhlIHZhbHVl
IGF0IHRoZSBnaXZlbiBhZGRyZXNzIGhhc24ndCBjaGFuZ2VkLgpAQCAtNzUsNyArODQsMTEgQEAg
cHVibGljOgogICAgIC8vIFVucGFya3Mgb25lIHRocmVhZCBmcm9tIHRoZSBxdWV1ZSBhc3NvY2lh
dGVkIHdpdGggdGhlIGdpdmVuIGFkZHJlc3MsIHdoaWNoIGNhbm5vdCBiZSBudWxsLgogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBtYXkgc3RpbGwgYmUgb3RoZXIgdGhyZWFkcyBvbiB0aGF0
IHF1ZXVlLCBvciBmYWxzZSBpZiB0aGVyZSBkZWZpbml0ZWx5CiAgICAgLy8gYXJlIG5vIG1vcmUg
dGhyZWFkcyBvbiB0aGUgcXVldWUuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IHVucGFya09uZShjb25zdCB2b2lkKiBhZGRyZXNzKTsKKyAgICBzdHJ1Y3QgVW5wYXJrUmVzdWx0
IHsKKyAgICAgICAgYm9vbCBkaWRVbnBhcmtUaHJlYWQgeyBmYWxzZSB9OworICAgICAgICBib29s
IG1heUhhdmVNb3JlVGhyZWFkcyB7IGZhbHNlIH07CisgICAgfTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFVucGFya1Jlc3VsdCB1bnBhcmtPbmUoY29uc3Qgdm9pZCogYWRkcmVzcyk7
CiAKICAgICAvLyBVbnBhcmtzIG9uZSB0aHJlYWQgZnJvbSB0aGUgcXVldWUgYXNzb2NpYXRlZCB3
aXRoIHRoZSBnaXZlbiBhZGRyZXNzLCBhbmQgY2FsbHMgdGhlIGdpdmVuCiAgICAgLy8gZnVuY3Rv
ciB3aGlsZSB0aGUgYWRkcmVzcyBpcyBsb2NrZWQuIFJlcG9ydHMgdG8gdGhlIGNhbGxiYWNrIHdo
ZXRoZXIgYW55IHRocmVhZCBnb3QgdW5wYXJrZWQKQEAgLTg4LDkgKzEwMSwxMSBAQCBwdWJsaWM6
CiAgICAgLy8gdGhhdCByYWNlIC0gc2VlIFJ1c3R5IFJ1c3NlbCdzIHdlbGwta25vd24gdXNlcnNl
bSBsaWJyYXJ5IC0gYnV0IGl0J3Mgbm90IHByZXR0eS4gVGhpcyBmb3JtCiAgICAgLy8gYWxsb3dz
IHRoYXQgcmFjZSB0byBiZSBjb21wbGV0ZWx5IGF2b2lkZWQsIHNpbmNlIHRoZXJlIGlzIG5vIHdh
eSB0aGF0IGEgdGhyZWFkIGNhbiBiZSBwYXJrZWQKICAgICAvLyB3aGlsZSB0aGUgY2FsbGJhY2sg
aXMgcnVubmluZy4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdW5wYXJrT25l
KAotICAgICAgICBjb25zdCB2b2lkKiBhZGRyZXNzLAotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQoYm9vbCBkaWRVbnBhcmtUaHJlYWQsIGJvb2wgbWF5SGF2ZU1vcmVUaHJlYWRzKT4gY2FsbGJh
Y2spOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrRnVuY3Rvcj4KKyAgICBzdGF0aWMg
dm9pZCB1bnBhcmtPbmUoY29uc3Qgdm9pZCogYWRkcmVzcywgQ2FsbGJhY2tGdW5jdG9yJiYgY2Fs
bGJhY2spCisgICAgeworICAgICAgICB1bnBhcmtPbmVJbXBsKGFkZHJlc3MsIHNjb3BlZExhbWJk
YTx2b2lkKFVucGFya1Jlc3VsdCk+KHN0ZDo6Zm9yd2FyZDxDYWxsYmFja0Z1bmN0b3I+KGNhbGxi
YWNrKSkpOworICAgIH0KIAogICAgIC8vIFVucGFya3MgZXZlcnkgdGhyZWFkIGZyb20gdGhlIHF1
ZXVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gYWRkcmVzcywgd2hpY2ggY2Fubm90IGJlIG51
bGwuCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHVucGFya0FsbChjb25zdCB2
b2lkKiBhZGRyZXNzKTsKQEAgLTEwOCw3ICsxMjMsMjMgQEAgcHVibGljOgogICAgIC8vIEFzIHdl
bGwgYXMgbWFueSBvdGhlciBwb3NzaWJsZSBpbnRlcmxlYXZpbmdzIHRoYXQgYWxsIGhhdmUgVDEg
YmVmb3JlIFQyIGFuZCBUMyBiZWZvcmUgVDQgYnV0IGFyZQogICAgIC8vIG90aGVyd2lzZSB1bmNv
bnN0cmFpbmVkLiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgcHJpbWFyaWx5IGZvciBkZWJ1Z2dpbmcu
IEl0J3MgYWxzbyB1c2VkIGJ5IHVuaXQKICAgICAvLyB0ZXN0cy4KLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZm9yRWFjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoVGhyZWFkSWRlbnRp
ZmllciwgY29uc3Qgdm9pZCopPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2tGdW5j
dG9yPgorICAgIHN0YXRpYyB2b2lkIGZvckVhY2goQ2FsbGJhY2tGdW5jdG9yJiYgY2FsbGJhY2sp
CisgICAgeworICAgICAgICBmb3JFYWNoKHNjb3BlZExhbWJkYTx2b2lkKFRocmVhZElkZW50aWZp
ZXIsIGNvbnN0IHZvaWQqKT4oc3RkOjpmb3J3YXJkPENhbGxiYWNrRnVuY3Rvcj4oY2FsbGJhY2sp
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBwYXJrQ29uZGl0aW9uYWxseUltcGwoCisgICAgICAgIGNvbnN0IHZvaWQqIGFkZHJlc3MsCisg
ICAgICAgIGNvbnN0IFNjb3BlZExhbWJkYTxib29sKCk+JiB2YWxpZGF0aW9uLAorICAgICAgICBj
b25zdCBTY29wZWRMYW1iZGE8dm9pZCgpPiYgYmVmb3JlU2xlZXAsCisgICAgICAgIENsb2NrOjp0
aW1lX3BvaW50IHRpbWVvdXQpOworICAgIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCB1bnBhcmtPbmVJbXBsKAorICAgICAgICBjb25zdCB2b2lkKiBhZGRyZXNzLCBjb25zdCBT
Y29wZWRMYW1iZGE8dm9pZChVbnBhcmtSZXN1bHQpPiYgY2FsbGJhY2spOworCisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGZvckVhY2hJbXBsKGNvbnN0IFNjb3BlZExhbWJkYTx2
b2lkKFRocmVhZElkZW50aWZpZXIsIGNvbnN0IHZvaWQqKT4mKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgo=
</data>
<flag name="review"
          id="301056"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276789</attachid>
            <date>2016-04-19 19:05:55 -0700</date>
            <delta_ts>2016-04-19 19:05:55 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>12282</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxOTk3NTMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE2LTA0LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgdGhlIFBhcmtpbmdMb3QgdXBhcmtpbmcg
QVBJIGEgYml0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTY3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aSBhbmQgR2VvZmZyZXkg
R2FyZW4uCisgICAgICAgIAorICAgICAgICBQcmV2aW91c2x5LCB1bnBhcmtPbmUoKSB3b3VsZCBl
aXRoZXIgcmV0dXJuIGEgYm9vbGVhbiB0byB0ZWxsIHlvdSBpZiB0aGVyZSBhcmUgYW55IG1vcmUg
dGhyZWFkcyBvbgorICAgICAgICB0aGUgcXVldWUgb3IgaXQgd291bGQgcGFzcyB5b3VyIGNhbGxi
YWNrIGEgcGFpciBvZiBib29sZWFucyAtIG9uZSB0byB0ZWxsIGlmIGEgdGhyZWFkIHdhcyB1bnBh
cmtlZAorICAgICAgICBhbmQgYW5vdGhlciB0byB0ZWxsIGlmIHRoZXJlIGFyZSBhbnkgbW9yZSB0
aHJlYWRzLiBUaGlzIHdhcyBhbiBhbm5veWluZyBpbmNvbnNpc3RlbmN5LiBXaGF0IGlmIHlvdQor
ICAgICAgICB3YW50ZWQgdG8ga25vdyBpZiB1bnBhcmtPbmUoKSB1bnBhcmtlZCBhIHRocmVhZCBi
dXQgeW91IGRvbid0IGNhcmUgdG8gdXNlIGNhbGxiYWNrcz8KKworICAgICAgICBUaGlzIGZpeGVz
IHVucGFya09uZSgpIHRvIHVzZSBhIHN0cnVjdCBjYWxsZWQgVW5wYXJrUmVzdWx0IGZvciBib3Ro
IG9mIGl0cyB2YXJpYW50cy4gVGhpcyBtYWtlcyB0aGUKKyAgICAgICAgY29kZSBhIGJpdCBjbGVh
bmVyLgorCisgICAgICAgICogd3RmL0F0b21pY3MuaDogQWRkIHNvbWUgbW9yZSBhdG9taWMgb3Bz
LgorICAgICAgICAoV1RGOjpBdG9taWM6OmV4Y2hhbmdlQW5kQWRkKToKKyAgICAgICAgKFdURjo6
QXRvbWljOjpleGNoYW5nZSk6CisgICAgICAgICogd3RmL0NvbmRpdGlvbi5oOiBDaGFuZ2UgY2Fs
bHMgdG8gdW5wYXJrT25lKCkuCisgICAgICAgIChXVEY6OkNvbmRpdGlvbkJhc2U6Om5vdGlmeU9u
ZSk6CisgICAgICAgICogd3RmL0xvY2suY3BwOiBDaGFuZ2UgY2FsbHMgdG8gdW5wYXJrT25lKCku
CisgICAgICAgIChXVEY6OkxvY2tCYXNlOjp1bmxvY2tTbG93KToKKyAgICAgICAgKiB3dGYvUGFy
a2luZ0xvdC5jcHA6CisgICAgICAgIChXVEY6OlBhcmtpbmdMb3Q6OnBhcmtDb25kaXRpb25hbGx5
KToKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6dW5wYXJrT25lKToKKyAgICAgICAgKiB3dGYv
UGFya2luZ0xvdC5oOiBTd2l0Y2ggdG8gdXNpbmcgU2NvcGVkTGFtYmRhIGFuZCBpbnRyb2R1Y2Ug
VW5wYXJrUmVzdWx0LgorCiAyMDE2LTA0LTE5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTk5NzI2LgpJ
bmRleDogU291cmNlL1dURi93dGYvQXRvbWljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0F0b21pY3MuaAkocmV2aXNpb24gMTk5NzUzKQorKysgU291cmNlL1dURi93dGYvQXRvbWlj
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3NiwyNSBAQCBzdHJ1Y3QgQXRvbWljIHsKICAg
ICAgICAgVCBleHBlY3RlZE9yQWN0dWFsID0gZXhwZWN0ZWQ7CiAgICAgICAgIHJldHVybiB2YWx1
ZS5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhleHBlY3RlZE9yQWN0dWFsLCBkZXNpcmVkLCBvcmRl
cik7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgVCBleGNoYW5n
ZUFuZEFkZChVIGFkZGVuZCwgc3RkOjptZW1vcnlfb3JkZXIgb3JkZXIgPSBzdGQ6Om1lbW9yeV9v
cmRlcl9zZXFfY3N0KQorICAgIHsKKyNpZiBPUyhXSU5ET1dTKQorICAgICAgICAvLyBTZWUgYWJv
dmUuCisgICAgICAgIG9yZGVyID0gc3RkOjptZW1vcnlfb3JkZXJfc2VxX2NzdDsKKyNlbmRpZgor
ICAgICAgICByZXR1cm4gdmFsdWUuZmV0Y2hfYWRkKGFkZGVuZCwgb3JkZXIpOworICAgIH0KKyAg
ICAKKyAgICBUIGV4Y2hhbmdlKFQgbmV3VmFsdWUsIHN0ZDo6bWVtb3J5X29yZGVyIG9yZGVyID0g
c3RkOjptZW1vcnlfb3JkZXJfc2VxX2NzdCkKKyAgICB7CisjaWYgT1MoV0lORE9XUykKKyAgICAg
ICAgLy8gU2VlIGFib3ZlLgorICAgICAgICBvcmRlciA9IHN0ZDo6bWVtb3J5X29yZGVyX3NlcV9j
c3Q7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHZhbHVlLmV4Y2hhbmdlKG5ld1ZhbHVlLCBvcmRl
cik7CisgICAgfQogCiAgICAgc3RkOjphdG9taWM8VD4gdmFsdWU7CiB9OwpJbmRleDogU291cmNl
L1dURi93dGYvQ29uZGl0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ29uZGl0
aW9uLmgJKHJldmlzaW9uIDE5OTc1MykKKysrIFNvdXJjZS9XVEYvd3RmL0NvbmRpdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODAsOCArMTgwLDggQEAgc3RydWN0IENvbmRpdGlvbkJhc2Ugewog
ICAgICAgICAKICAgICAgICAgUGFya2luZ0xvdDo6dW5wYXJrT25lKAogICAgICAgICAgICAgJm1f
aGFzV2FpdGVycywKLSAgICAgICAgICAgIFt0aGlzXSAoYm9vbCwgYm9vbCBtYXlIYXZlTW9yZVRo
cmVhZHMpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1heUhhdmVNb3JlVGhyZWFkcykKKyAgICAg
ICAgICAgIFt0aGlzXSAoUGFya2luZ0xvdDo6VW5wYXJrUmVzdWx0IHJlc3VsdCkgeworICAgICAg
ICAgICAgICAgIGlmICghcmVzdWx0Lm1heUhhdmVNb3JlVGhyZWFkcykKICAgICAgICAgICAgICAg
ICAgICAgbV9oYXNXYWl0ZXJzLnN0b3JlKGZhbHNlKTsKICAgICAgICAgICAgIH0pOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0xvY2suY3BwCShyZXZpc2lvbiAxOTk3NTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9Mb2NrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTQsMTIgKzk0LDEyIEBAIE5FVkVSX0lOTElORSB2b2lkIExv
Y2tCYXNlOjp1bmxvY2tTbG93KCkKICAgICAgICAgQVNTRVJUKG9sZEJ5dGVWYWx1ZSA9PSAoaXNI
ZWxkQml0IHwgaGFzUGFya2VkQml0KSk7CiAgICAgICAgIFBhcmtpbmdMb3Q6OnVucGFya09uZSgK
ICAgICAgICAgICAgICZtX2J5dGUsCi0gICAgICAgICAgICBbdGhpc10gKGJvb2wsIGJvb2wgbWF5
SGF2ZU1vcmVUaHJlYWRzKSB7CisgICAgICAgICAgICBbdGhpc10gKFBhcmtpbmdMb3Q6OlVucGFy
a1Jlc3VsdCByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgdGhlIG9ubHkgb25l
cyB0aGF0IGNhbiBjbGVhciBlaXRoZXIgdGhlIGlzSGVsZEJpdCBvciB0aGUgaGFzUGFya2VkQml0
LAogICAgICAgICAgICAgICAgIC8vIHNvIHdlIHNob3VsZCBzdGlsbCBzZWUgYm90aCBiaXRzIHNl
dCByaWdodCBub3cuCiAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnl0ZS5sb2FkKCkgPT0gKGlz
SGVsZEJpdCB8IGhhc1BhcmtlZEJpdCkpOwogCi0gICAgICAgICAgICAgICAgaWYgKG1heUhhdmVN
b3JlVGhyZWFkcykKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lm1heUhhdmVNb3JlVGhyZWFk
cykKICAgICAgICAgICAgICAgICAgICAgbV9ieXRlLnN0b3JlKGhhc1BhcmtlZEJpdCk7CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBtX2J5dGUuc3RvcmUoMCk7Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9QYXJraW5nTG90LmNwcAkocmV2aXNpb24gMTk5NzUzKQorKysgU291cmNlL1dURi93
dGYvUGFya2luZ0xvdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMCwxMCArNTMwLDEwIEBAIGJv
b2wgZGVxdWV1ZSgKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLU5FVkVSX0lOTElORSBi
b29sIFBhcmtpbmdMb3Q6OnBhcmtDb25kaXRpb25hbGx5KAorTkVWRVJfSU5MSU5FIGJvb2wgUGFy
a2luZ0xvdDo6cGFya0NvbmRpdGlvbmFsbHlJbXBsKAogICAgIGNvbnN0IHZvaWQqIGFkZHJlc3Ms
Ci0gICAgc3RkOjpmdW5jdGlvbjxib29sKCk+IHZhbGlkYXRpb24sCi0gICAgc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IGJlZm9yZVNsZWVwLAorICAgIGNvbnN0IFNjb3BlZExhbWJkYTxib29sKCk+JiB2
YWxpZGF0aW9uLAorICAgIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKCk+JiBiZWZvcmVTbGVlcCwK
ICAgICBDbG9jazo6dGltZV9wb2ludCB0aW1lb3V0KQogewogICAgIGlmICh2ZXJib3NlKQpAQCAt
NTkxLDE0ICs1OTEsMTEgQEAgTkVWRVJfSU5MSU5FIGJvb2wgUGFya2luZ0xvdDo6cGFya0NvbmRp
dAogICAgIC8vIHByb2JhYmx5IHdvcnRod2hpbGUgdG8gZGV0ZWN0IHdoZW4gdGhpcyBoYXBwZW5z
LCBhbmQgcmV0dXJuIHRydWUgaW4gdGhhdCBjYXNlLCB0byBlbnN1cmUKICAgICAvLyB0aGF0IHdo
ZW4gd2UgcmV0dXJuIGZhbHNlIGl0IHJlYWxseSBtZWFucyB0aGF0IG5vIHVucGFyayBjb3VsZCBo
YXZlIGJlZW4gcmVzcG9uc2libGUgZm9yIHVzCiAgICAgLy8gd2FraW5nIHVwLCBhbmQgdGhhdCBp
ZiBhbiB1bnBhcmsgY2FsbCBkaWQgaGFwcGVuLCBpdCB3b2tlIHNvbWVvbmUgZWxzZSB1cC4KLSAg
ICBib29sIGRpZEZpbmQgPSBmYWxzZTsKICAgICBkZXF1ZXVlKAogICAgICAgICBhZGRyZXNzLCBC
dWNrZXRNb2RlOjpJZ25vcmVFbXB0eSwKICAgICAgICAgWyZdIChUaHJlYWREYXRhKiBlbGVtZW50
KSB7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBtZSkgewotICAgICAgICAgICAgICAgIGRp
ZEZpbmQgPSB0cnVlOworICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gbWUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIERlcXVldWVSZXN1bHQ6OlJlbW92ZUFuZFN0b3A7Ci0gICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm4gRGVxdWV1ZVJlc3VsdDo6SWdub3JlOwogICAgICAgICB9LAog
ICAgICAgICBbXSAoYm9vbCkgeyB9KTsKQEAgLTYxMiwyOSArNjA5LDM1IEBAIE5FVkVSX0lOTElO
RSBib29sIFBhcmtpbmdMb3Q6OnBhcmtDb25kaXQKICAgICB9CiAKICAgICAvLyBJZiB3ZSB3ZXJl
IG5vdCBmb3VuZCBpbiB0aGUgc2VhcmNoIGFib3ZlLCB0aGVuIHdlIGtub3cgdGhhdCBzb21lb25l
IHVucGFya2VkIHVzLgotICAgIHJldHVybiAhZGlkRmluZDsKKyAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLU5FVkVSX0lOTElORSBib29sIFBhcmtpbmdMb3Q6OnVucGFya09uZShjb25zdCB2b2lkKiBh
ZGRyZXNzKQorTkVWRVJfSU5MSU5FIFBhcmtpbmdMb3Q6OlVucGFya1Jlc3VsdCBQYXJraW5nTG90
Ojp1bnBhcmtPbmUoY29uc3Qgdm9pZCogYWRkcmVzcykKIHsKICAgICBpZiAodmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IHVucGFya2luZyBvbmUu
XG4iKSk7CisgICAgCisgICAgVW5wYXJrUmVzdWx0IHJlc3VsdDsKIAogICAgIFRocmVhZERhdGEq
IHRocmVhZERhdGEgPSBudWxscHRyOwotICAgIGJvb2wgcmVzdWx0ID0gZGVxdWV1ZSgKKyAgICBy
ZXN1bHQubWF5SGF2ZU1vcmVUaHJlYWRzID0gZGVxdWV1ZSgKICAgICAgICAgYWRkcmVzcywKLSAg
ICAgICAgQnVja2V0TW9kZTo6SWdub3JlRW1wdHksCisgICAgICAgIEJ1Y2tldE1vZGU6OkVuc3Vy
ZU5vbkVtcHR5LAogICAgICAgICBbJl0gKFRocmVhZERhdGEqIGVsZW1lbnQpIHsKICAgICAgICAg
ICAgIGlmIChlbGVtZW50LT5hZGRyZXNzICE9IGFkZHJlc3MpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIERlcXVldWVSZXN1bHQ6Oklnbm9yZTsKICAgICAgICAgICAgIHRocmVhZERhdGEgPSBlbGVt
ZW50OworICAgICAgICAgICAgcmVzdWx0LmRpZFVucGFya1RocmVhZCA9IHRydWU7CiAgICAgICAg
ICAgICByZXR1cm4gRGVxdWV1ZVJlc3VsdDo6UmVtb3ZlQW5kU3RvcDsKICAgICAgICAgfSwKICAg
ICAgICAgW10gKGJvb2wpIHsgfSk7CiAKLSAgICBpZiAoIXRocmVhZERhdGEpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQorICAgIGlmICghdGhyZWFkRGF0YSkgeworICAgICAgICBBU1NFUlQoIXJl
c3VsdC5kaWRVbnBhcmtUaHJlYWQpOworICAgICAgICByZXN1bHQubWF5SGF2ZU1vcmVUaHJlYWRz
ID0gZmFsc2U7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIEFTU0VS
VCh0aHJlYWREYXRhLT5hZGRyZXNzKTsKICAgICAKICAgICB7CkBAIC02NDYsOSArNjQ5LDkgQEAg
TkVWRVJfSU5MSU5FIGJvb2wgUGFya2luZ0xvdDo6dW5wYXJrT25lKAogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIFBhcmtpbmdMb3Q6OnVucGFya09uZSgKK05FVkVS
X0lOTElORSB2b2lkIFBhcmtpbmdMb3Q6OnVucGFya09uZUltcGwoCiAgICAgY29uc3Qgdm9pZCog
YWRkcmVzcywKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBkaWRVbnBhcmtUaHJlYWQsIGJv
b2wgbWF5SGF2ZU1vcmVUaHJlYWRzKT4gY2FsbGJhY2spCisgICAgY29uc3QgU2NvcGVkTGFtYmRh
PHZvaWQoUGFya2luZ0xvdDo6VW5wYXJrUmVzdWx0KT4mIGNhbGxiYWNrKQogewogICAgIGlmICh2
ZXJib3NlKQogICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogdW5w
YXJraW5nIG9uZSB0aGUgaGFyZCB3YXkuXG4iKSk7CkBAIC02NjQsNyArNjY3LDEwIEBAIE5FVkVS
X0lOTElORSB2b2lkIFBhcmtpbmdMb3Q6OnVucGFya09uZSgKICAgICAgICAgICAgIHJldHVybiBE
ZXF1ZXVlUmVzdWx0OjpSZW1vdmVBbmRTdG9wOwogICAgICAgICB9LAogICAgICAgICBbJl0gKGJv
b2wgbWF5SGF2ZU1vcmVUaHJlYWRzKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayghIXRocmVhZERh
dGEsIHRocmVhZERhdGEgJiYgbWF5SGF2ZU1vcmVUaHJlYWRzKTsKKyAgICAgICAgICAgIFVucGFy
a1Jlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQuZGlkVW5wYXJrVGhyZWFkID0gISF0
aHJlYWREYXRhOworICAgICAgICAgICAgcmVzdWx0Lm1heUhhdmVNb3JlVGhyZWFkcyA9IHJlc3Vs
dC5kaWRVbnBhcmtUaHJlYWQgJiYgbWF5SGF2ZU1vcmVUaHJlYWRzOworICAgICAgICAgICAgY2Fs
bGJhY2socmVzdWx0KTsKICAgICAgICAgfSk7CiAKICAgICBpZiAoIXRocmVhZERhdGEpCkBAIC03
MTMsNyArNzE5LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgUGFya2luZ0xvdDo6dW5wYXJrQWxsKAog
ICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogZG9uZSB1bnBhcmtp
bmcuXG4iKSk7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIFBhcmtpbmdMb3Q6OmZvckVhY2goc3Rk
OjpmdW5jdGlvbjx2b2lkKFRocmVhZElkZW50aWZpZXIsIGNvbnN0IHZvaWQqKT4gY2FsbGJhY2sp
CitORVZFUl9JTkxJTkUgdm9pZCBQYXJraW5nTG90Ojpmb3JFYWNoSW1wbChjb25zdCBTY29wZWRM
YW1iZGE8dm9pZChUaHJlYWRJZGVudGlmaWVyLCBjb25zdCB2b2lkKik+JiBjYWxsYmFjaykKIHsK
ICAgICBWZWN0b3I8QnVja2V0Kj4gYnVja2V0c1RvVW5sb2NrID0gbG9ja0hhc2h0YWJsZSgpOwog
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGFya2luZ0xvdC5oCShyZXZpc2lvbiAxOTk3NTMpCisrKyBTb3VyY2UvV1RGL3d0
Zi9QYXJraW5nTG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPGNo
cm9ubz4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+Cisj
aW5jbHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
IAogbmFtZXNwYWNlIFdURiB7CkBAIC01MSwxMSArNTIsMTkgQEAgcHVibGljOgogICAgIC8vIHlv
dSBkb24ndCByZWN1cnNpdmVseSBjYWxsIHBhcmtDb25kaXRpb25hbGx5KCkuIFlvdSBjYW4gY2Fs
bCB1bnBhcmtPbmUoKS91bnBhcmtBbGwoKSB0aG91Z2guCiAgICAgLy8gSXQncyB1c2VmdWwgdG8g
dXNlIGJlZm9yZVNsZWVwKCkgdG8gdW5sb2NrIHNvbWUgbXV0ZXggaW4gdGhlIGltcGxlbWVudGF0
aW9uIG9mCiAgICAgLy8gQ29uZGl0aW9uOjp3YWl0KCkuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIHBhcmtDb25kaXRpb25hbGx5KAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bGlkYXRpb25GdW5jdG9yLCB0eXBlbmFtZSBCZWZvcmVTbGVlcEZ1bmN0b3I+CisgICAgc3RhdGlj
IGJvb2wgcGFya0NvbmRpdGlvbmFsbHkoCiAgICAgICAgIGNvbnN0IHZvaWQqIGFkZHJlc3MsCi0g
ICAgICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbCgpPiB2YWxpZGF0aW9uLAotICAgICAgICBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gYmVmb3JlU2xlZXAsCi0gICAgICAgIENsb2NrOjp0aW1lX3BvaW50IHRp
bWVvdXQpOworICAgICAgICBWYWxpZGF0aW9uRnVuY3RvciYmIHZhbGlkYXRpb24sCisgICAgICAg
IEJlZm9yZVNsZWVwRnVuY3RvciYmIGJlZm9yZVNsZWVwLAorICAgICAgICBDbG9jazo6dGltZV9w
b2ludCB0aW1lb3V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBhcmtDb25kaXRpb25hbGx5SW1w
bCgKKyAgICAgICAgICAgIGFkZHJlc3MsCisgICAgICAgICAgICBzY29wZWRMYW1iZGE8Ym9vbCgp
PihzdGQ6OmZvcndhcmQ8VmFsaWRhdGlvbkZ1bmN0b3I+KHZhbGlkYXRpb24pKSwKKyAgICAgICAg
ICAgIHNjb3BlZExhbWJkYTx2b2lkKCk+KHN0ZDo6Zm9yd2FyZDxCZWZvcmVTbGVlcEZ1bmN0b3I+
KGJlZm9yZVNsZWVwKSksCisgICAgICAgICAgICB0aW1lb3V0KTsKKyAgICB9CiAKICAgICAvLyBT
aW1wbGUgdmVyc2lvbiBvZiBwYXJrQ29uZGl0aW9uYWxseSgpIHRoYXQgY292ZXJzIHRoZSBtb3N0
IGNvbW1vbiBjYXNlOiB5b3Ugd2FudCB0byBwYXJrCiAgICAgLy8gaW5kZWZpbml0ZWx5IHNvIGxv
bmcgYXMgdGhlIHZhbHVlIGF0IHRoZSBnaXZlbiBhZGRyZXNzIGhhc24ndCBjaGFuZ2VkLgpAQCAt
NzUsNyArODQsMTEgQEAgcHVibGljOgogICAgIC8vIFVucGFya3Mgb25lIHRocmVhZCBmcm9tIHRo
ZSBxdWV1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGFkZHJlc3MsIHdoaWNoIGNhbm5vdCBi
ZSBudWxsLgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBtYXkgc3RpbGwgYmUgb3RoZXIg
dGhyZWFkcyBvbiB0aGF0IHF1ZXVlLCBvciBmYWxzZSBpZiB0aGVyZSBkZWZpbml0ZWx5CiAgICAg
Ly8gYXJlIG5vIG1vcmUgdGhyZWFkcyBvbiB0aGUgcXVldWUuCi0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIHVucGFya09uZShjb25zdCB2b2lkKiBhZGRyZXNzKTsKKyAgICBzdHJ1
Y3QgVW5wYXJrUmVzdWx0IHsKKyAgICAgICAgYm9vbCBkaWRVbnBhcmtUaHJlYWQgeyBmYWxzZSB9
OworICAgICAgICBib29sIG1heUhhdmVNb3JlVGhyZWFkcyB7IGZhbHNlIH07CisgICAgfTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVucGFya1Jlc3VsdCB1bnBhcmtPbmUoY29uc3Qg
dm9pZCogYWRkcmVzcyk7CiAKICAgICAvLyBVbnBhcmtzIG9uZSB0aHJlYWQgZnJvbSB0aGUgcXVl
dWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBhZGRyZXNzLCBhbmQgY2FsbHMgdGhlIGdpdmVu
CiAgICAgLy8gZnVuY3RvciB3aGlsZSB0aGUgYWRkcmVzcyBpcyBsb2NrZWQuIFJlcG9ydHMgdG8g
dGhlIGNhbGxiYWNrIHdoZXRoZXIgYW55IHRocmVhZCBnb3QgdW5wYXJrZWQKQEAgLTg4LDkgKzEw
MSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gdGhhdCByYWNlIC0gc2VlIFJ1c3R5IFJ1c3NlbCdzIHdl
bGwta25vd24gdXNlcnNlbSBsaWJyYXJ5IC0gYnV0IGl0J3Mgbm90IHByZXR0eS4gVGhpcyBmb3Jt
CiAgICAgLy8gYWxsb3dzIHRoYXQgcmFjZSB0byBiZSBjb21wbGV0ZWx5IGF2b2lkZWQsIHNpbmNl
IHRoZXJlIGlzIG5vIHdheSB0aGF0IGEgdGhyZWFkIGNhbiBiZSBwYXJrZWQKICAgICAvLyB3aGls
ZSB0aGUgY2FsbGJhY2sgaXMgcnVubmluZy4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgdW5wYXJrT25lKAotICAgICAgICBjb25zdCB2b2lkKiBhZGRyZXNzLAotICAgICAgICBz
dGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBkaWRVbnBhcmtUaHJlYWQsIGJvb2wgbWF5SGF2ZU1vcmVU
aHJlYWRzKT4gY2FsbGJhY2spOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrRnVuY3Rv
cj4KKyAgICBzdGF0aWMgdm9pZCB1bnBhcmtPbmUoY29uc3Qgdm9pZCogYWRkcmVzcywgQ2FsbGJh
Y2tGdW5jdG9yJiYgY2FsbGJhY2spCisgICAgeworICAgICAgICB1bnBhcmtPbmVJbXBsKGFkZHJl
c3MsIHNjb3BlZExhbWJkYTx2b2lkKFVucGFya1Jlc3VsdCk+KHN0ZDo6Zm9yd2FyZDxDYWxsYmFj
a0Z1bmN0b3I+KGNhbGxiYWNrKSkpOworICAgIH0KIAogICAgIC8vIFVucGFya3MgZXZlcnkgdGhy
ZWFkIGZyb20gdGhlIHF1ZXVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gYWRkcmVzcywgd2hp
Y2ggY2Fubm90IGJlIG51bGwuCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHVu
cGFya0FsbChjb25zdCB2b2lkKiBhZGRyZXNzKTsKQEAgLTEwOCw3ICsxMjMsMjMgQEAgcHVibGlj
OgogICAgIC8vIEFzIHdlbGwgYXMgbWFueSBvdGhlciBwb3NzaWJsZSBpbnRlcmxlYXZpbmdzIHRo
YXQgYWxsIGhhdmUgVDEgYmVmb3JlIFQyIGFuZCBUMyBiZWZvcmUgVDQgYnV0IGFyZQogICAgIC8v
IG90aGVyd2lzZSB1bmNvbnN0cmFpbmVkLiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgcHJpbWFyaWx5
IGZvciBkZWJ1Z2dpbmcuIEl0J3MgYWxzbyB1c2VkIGJ5IHVuaXQKICAgICAvLyB0ZXN0cy4KLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZm9yRWFjaChzdGQ6OmZ1bmN0aW9uPHZv
aWQoVGhyZWFkSWRlbnRpZmllciwgY29uc3Qgdm9pZCopPik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2FsbGJhY2tGdW5jdG9yPgorICAgIHN0YXRpYyB2b2lkIGZvckVhY2goQ2FsbGJhY2tGdW5j
dG9yJiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBmb3JFYWNoSW1wbChzY29wZWRMYW1iZGE8
dm9pZChUaHJlYWRJZGVudGlmaWVyLCBjb25zdCB2b2lkKik+KHN0ZDo6Zm9yd2FyZDxDYWxsYmFj
a0Z1bmN0b3I+KGNhbGxiYWNrKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgcGFya0NvbmRpdGlvbmFsbHlJbXBsKAorICAgICAgICBjb25z
dCB2b2lkKiBhZGRyZXNzLAorICAgICAgICBjb25zdCBTY29wZWRMYW1iZGE8Ym9vbCgpPiYgdmFs
aWRhdGlvbiwKKyAgICAgICAgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoKT4mIGJlZm9yZVNsZWVw
LAorICAgICAgICBDbG9jazo6dGltZV9wb2ludCB0aW1lb3V0KTsKKyAgICAKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdW5wYXJrT25lSW1wbCgKKyAgICAgICAgY29uc3Qgdm9p
ZCogYWRkcmVzcywgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVW5wYXJrUmVzdWx0KT4mIGNhbGxi
YWNrKTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBmb3JFYWNoSW1wbChj
b25zdCBTY29wZWRMYW1iZGE8dm9pZChUaHJlYWRJZGVudGlmaWVyLCBjb25zdCB2b2lkKik+Jik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
      

    </bug>

</bugzilla>