<?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>123784</bug_id>
          
          <creation_ts>2013-11-04 20:35:54 -0800</creation_ts>
          <short_desc>FTL should support PutById</short_desc>
          <delta_ts>2013-11-05 10:54:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>946991</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-04 20:35:54 -0800</bug_when>
    <thetext>Obviously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947010</commentid>
    <comment_count>1</comment_count>
      <attachid>215999</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-04 21:32:33 -0800</bug_when>
    <thetext>Created attachment 215999
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947043</commentid>
    <comment_count>2</comment_count>
      <attachid>216008</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-04 23:37:36 -0800</bug_when>
    <thetext>Created attachment 216008
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947044</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-04 23:40:01 -0800</bug_when>
    <thetext>Attachment 216008 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/ftl/FTLAbbreviations.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCapabilities.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCompile.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLInlineCacheDescriptor.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLIntrinsicRepository.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLOutput.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLSlowPathCall.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLSlowPathCall.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLState.h&apos;, u&apos;Source/JavaScriptCore/jit/CCallHelpers.h&apos;, u&apos;Source/JavaScriptCore/runtime/Executable.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/ftl/FTLSlowPathCall.h:64:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/ftl/FTLCompile.cpp:121:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/JavaScriptCore/ftl/FTLCompile.cpp:134:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 3 in 13 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>947214</commentid>
    <comment_count>4</comment_count>
      <attachid>216044</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-05 09:08:35 -0800</bug_when>
    <thetext>Created attachment 216044
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947217</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-05 09:10:02 -0800</bug_when>
    <thetext>Attachment 216044 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/ftl/FTLAbbreviations.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCapabilities.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCompile.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLInlineCacheDescriptor.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLIntrinsicRepository.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLOutput.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLSlowPathCall.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLSlowPathCall.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLState.h&apos;, u&apos;Source/JavaScriptCore/jit/CCallHelpers.h&apos;, u&apos;Source/JavaScriptCore/runtime/Executable.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/ftl/FTLSlowPathCall.h:64:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 13 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>947250</commentid>
    <comment_count>6</comment_count>
      <attachid>216044</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-05 10:42:24 -0800</bug_when>
    <thetext>Comment on attachment 216044
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947257</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-05 10:54:49 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/158681</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215999</attachid>
            <date>2013-11-04 21:32:33 -0800</date>
            <delta_ts>2013-11-04 23:37:36 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18002</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9ucy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9ucy5oCShy
ZXZpc2lvbiAxNTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDYgKzI1OSwxNiBAQCBzdGF0aWMgaW5saW5l
IExWYWx1ZSBidWlsZENhbGwoTEJ1aWxkZXIgCiAgICAgTFZhbHVlIGFyZ3NbXSA9IHsgYXJnMSwg
YXJnMiwgYXJnMywgYXJnNCwgYXJnNSwgYXJnNiB9OwogICAgIHJldHVybiBidWlsZENhbGwoYnVp
bGRlciwgZnVuY3Rpb24sIGFyZ3MsIDYpOwogfQorc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRD
YWxsKExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIExWYWx1
ZSBhcmcyLCBMVmFsdWUgYXJnMywgTFZhbHVlIGFyZzQsIExWYWx1ZSBhcmc1LCBMVmFsdWUgYXJn
NiwgTFZhbHVlIGFyZzcpCit7CisgICAgTFZhbHVlIGFyZ3NbXSA9IHsgYXJnMSwgYXJnMiwgYXJn
MywgYXJnNCwgYXJnNSwgYXJnNiwgYXJnNyB9OworICAgIHJldHVybiBidWlsZENhbGwoYnVpbGRl
ciwgZnVuY3Rpb24sIGFyZ3MsIDcpOworfQorc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRDYWxs
KExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIExWYWx1ZSBh
cmcyLCBMVmFsdWUgYXJnMywgTFZhbHVlIGFyZzQsIExWYWx1ZSBhcmc1LCBMVmFsdWUgYXJnNiwg
TFZhbHVlIGFyZzcsIExWYWx1ZSBhcmc4KQoreworICAgIExWYWx1ZSBhcmdzW10gPSB7IGFyZzEs
IGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUsIGFyZzYsIGFyZzcsIGFyZzggfTsKKyAgICByZXR1cm4g
YnVpbGRDYWxsKGJ1aWxkZXIsIGZ1bmN0aW9uLCBhcmdzLCA4KTsKK30KIGVudW0gVGFpbENhbGxN
b2RlIHsgSXNOb3RUYWlsQ2FsbCwgSXNUYWlsQ2FsbCB9Owogc3RhdGljIGlubGluZSB2b2lkIHNl
dFRhaWxDYWxsKExWYWx1ZSBjYWxsLCBUYWlsQ2FsbE1vZGUgbW9kZSkgeyBsbHZtLT5TZXRUYWls
Q2FsbChjYWxsLCBtb2RlID09IElzVGFpbENhbGwpOyB9CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBi
dWlsZEV4dHJhY3RWYWx1ZShMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgYWdnVmFsLCB1bnNpZ25l
ZCBpbmRleCkgeyByZXR1cm4gbGx2bS0+QnVpbGRFeHRyYWN0VmFsdWUoYnVpbGRlciwgYWdnVmFs
LCBpbmRleCwgIiIpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgICAgICAvLyBU
aGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0QnlJZDoKKyAgICBjYXNl
IFB1dEJ5SWQ6CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVz
ZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMTU4
NjM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw0MiBAQCBzdGF0aWMgdm9pZCBkdW1wRGF0YVNlY3Rpb24o
UmVmQ291bnRlZEFyCiAgICAgfQogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXNjcmlwdG9yVHlw
ZT4KK3ZvaWQgZ2VuZXJhdGVJQ0Zhc3RQYXRoKAorICAgIFN0YXRlJiBzdGF0ZSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEdlbmVyYXRlZEZ1bmN0aW9uIGdlbmVyYXRlZEZ1bmN0aW9uLAorICAgIFN0
YWNrTWFwczo6UmVjb3JkTWFwJiByZWNvcmRNYXAsIERlc2NyaXB0b3JUeXBlJiBpYywgc2l6ZV90
IHNpemVPZklDKQoreworICAgIFZNJiB2bSA9IHN0YXRlLmdyYXBoLm1fdm07CisKKyAgICBTdGFj
a01hcHM6OlJlY29yZE1hcDo6aXRlcmF0b3IgaXRlciA9IHJlY29yZE1hcC5maW5kKGljLnN0YWNr
bWFwSUQoKSk7CisgICAgaWYgKGl0ZXIgPT0gcmVjb3JkTWFwLmVuZCgpKSB7CisgICAgICAgIC8v
IEl0IHdhcyBvcHRpbWl6ZWQgb3V0LgorICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAg
ICAgCisgICAgU3RhY2tNYXBzOjpSZWNvcmQmIHJlY29yZCA9IGl0ZXItPnZhbHVlOworCisgICAg
Q0NhbGxIZWxwZXJzIGZhc3RQYXRoSklUKCZ2bSwgY29kZUJsb2NrKTsKKyAgICBpYy5tX2dlbmVy
YXRvci5nZW5lcmF0ZUZhc3RQYXRoKGZhc3RQYXRoSklUKTsKKworICAgIGNoYXIqIHN0YXJ0T2ZJ
QyA9CisgICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oZ2VuZXJhdGVkRnVuY3Rpb24pICsgcmVj
b3JkLmluc3RydWN0aW9uT2Zmc2V0OworICAgICAgICAgICAgCisgICAgTGlua0J1ZmZlciBsaW5r
QnVmZmVyKHZtLCAmZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMpOworICAgIC8vIE5v
dGU6IHdlIGNvdWxkIGhhbmRsZSB0aGUgIWlzVmFsaWQoKSBjYXNlLiBXZSBqdXN0IGRvbid0IGFw
cGVhciB0byBoYXZlIGEKKyAgICAvLyByZWFzb24gdG8gZG8gc28sIHlldC4KKyAgICBSRUxFQVNF
X0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisgICAgICAgICAgICAKKyAgICBzdGF0ZS5m
aW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlci0+bGluaygKKyAgICAgICAgaWMubV9zbG93UGF0
aERvbmUsIENvZGVMb2NhdGlvbkxhYmVsKHN0YXJ0T2ZJQyArIHNpemVPZklDKSk7CisgICAgICAg
ICAgICAKKyAgICBsaW5rQnVmZmVyLmxpbmsoCisgICAgICAgIGljLm1fZ2VuZXJhdG9yLnNsb3dQ
YXRoSnVtcCgpLAorICAgICAgICBzdGF0ZS5maW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlci0+
bG9jYXRpb25PZihpYy5tX2dlbmVyYXRvci5zbG93UGF0aEJlZ2luKCkpKTsKKyAgICAgICAgICAg
IAorICAgIGljLm1fZ2VuZXJhdG9yLmZpbmFsaXplKGxpbmtCdWZmZXIsICpzdGF0ZS5maW5hbGl6
ZXItPnNpZGVDb2RlTGlua0J1ZmZlcik7Cit9CisKIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFz
ZWRPblN0YWNrTWFwcygKICAgICBTdGF0ZSYgc3RhdGUsIENvZGVCbG9jayogY29kZUJsb2NrLCBK
SVRDb2RlKiBqaXRDb2RlLCBHZW5lcmF0ZWRGdW5jdGlvbiBnZW5lcmF0ZWRGdW5jdGlvbiwKICAg
ICBTdGFja01hcHM6OlJlY29yZE1hcCYgcmVjb3JkTWFwKQpAQCAtMTM4LDcgKzE3NCw3IEBAIHN0
YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgc3RhdGUuZmlu
YWxpemVyLT5leGl0VGh1bmtzTGlua0J1ZmZlciA9IGxpbmtCdWZmZXIucmVsZWFzZSgpOwogICAg
IH0KIAotICAgIGlmICghc3RhdGUuZ2V0QnlJZHMuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFzdGF0
ZS5nZXRCeUlkcy5pc0VtcHR5KCkgfHwgIXN0YXRlLnB1dEJ5SWRzLmlzRW1wdHkoKSkgewogICAg
ICAgICBDQ2FsbEhlbHBlcnMgc2xvd1BhdGhKSVQoJnZtLCBjb2RlQmxvY2spOwogICAgICAgICAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc3RhdGUuZ2V0QnlJZHMuc2l6ZSgpOyBpLS07KSB7
CkBAIC0xNzcsNDAgKzIxMyw1NSBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFj
a01hcHMoCiAgICAgICAgICAgICBnZXRCeUlkLm1fZ2VuZXJhdG9yID0gZ2VuOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBzdGF0ZS5maW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlciA9
IGFkb3B0UHRyKAotICAgICAgICAgICAgbmV3IExpbmtCdWZmZXIodm0sICZzbG93UGF0aEpJVCwg
Y29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKSk7Ci0gICAgICAgIAotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBzdGF0ZS5nZXRCeUlkcy5zaXplKCk7IGktLTspIHsKLSAgICAg
ICAgICAgIEdldEJ5SWREZXNjcmlwdG9yJiBnZXRCeUlkID0gc3RhdGUuZ2V0QnlJZHNbaV07Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXRlLnB1dEJ5SWRzLnNpemUoKTsgaS0tOykgewor
ICAgICAgICAgICAgUHV0QnlJZERlc2NyaXB0b3ImIHB1dEJ5SWQgPSBzdGF0ZS5wdXRCeUlkc1tp
XTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgU3RhY2tNYXBzOjpSZWNvcmRNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSByZWNvcmRNYXAuZmluZChnZXRCeUlkLnN0YWNrbWFwSUQoKSk7CisgICAgICAg
ICAgICBTdGFja01hcHM6OlJlY29yZE1hcDo6aXRlcmF0b3IgaXRlciA9IHJlY29yZE1hcC5maW5k
KHB1dEJ5SWQuc3RhY2ttYXBJRCgpKTsKICAgICAgICAgICAgIGlmIChpdGVyID09IHJlY29yZE1h
cC5lbmQoKSkgewogICAgICAgICAgICAgICAgIC8vIEl0IHdhcyBvcHRpbWl6ZWQgb3V0LgogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBTdGFja01hcHM6OlJlY29yZCYgcmVjb3JkID0gaXRlci0+dmFsdWU7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShyZWNvcmQpOyAvLyBGSVhNRTogdXNlIEFu
eVJlZ3MuCiAKLSAgICAgICAgICAgIENDYWxsSGVscGVycyBmYXN0UGF0aEpJVCgmdm0sIGNvZGVC
bG9jayk7Ci0gICAgICAgICAgICBnZXRCeUlkLm1fZ2VuZXJhdG9yLmdlbmVyYXRlRmFzdFBhdGgo
ZmFzdFBhdGhKSVQpOwotCi0gICAgICAgICAgICBjaGFyKiBzdGFydE9mSUMgPQotICAgICAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oZ2VuZXJhdGVkRnVuY3Rpb24pICsgcmVjb3JkLmlu
c3RydWN0aW9uT2Zmc2V0OwotICAgICAgICAgICAgc2l6ZV90IHNpemVPZklDID0gc2l6ZU9mR2V0
QnlJZCgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIo
dm0sICZmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQyk7Ci0gICAgICAgICAgICAvLyBO
b3RlOiB3ZSBjb3VsZCBoYW5kbGUgdGhlICFpc1ZhbGlkKCkgY2FzZS4gV2UganVzdCBkb24ndCBh
cHBlYXIgdG8gaGF2ZSBhCi0gICAgICAgICAgICAvLyByZWFzb24gdG8gZG8gc28sIHlldC4KLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgc3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXItPmxp
bmsoCi0gICAgICAgICAgICAgICAgZ2V0QnlJZC5tX3Nsb3dQYXRoRG9uZSwgQ29kZUxvY2F0aW9u
TGFiZWwoc3RhcnRPZklDICsgc2l6ZU9mSUMpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKAotICAgICAgICAgICAgICAgIGdldEJ5SWQubV9nZW5lcmF0b3Iuc2xv
d1BhdGhKdW1wKCksCi0gICAgICAgICAgICAgICAgc3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxp
bmtCdWZmZXItPmxvY2F0aW9uT2YoZ2V0QnlJZC5tX2dlbmVyYXRvci5zbG93UGF0aEJlZ2luKCkp
KTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBMTFZNIHNob3VsZCB0ZWxsIHVzIHdoaWNoIHJlZ2lz
dGVycyBhcmUgbGl2ZS4KKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBS
ZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEdQ
UlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKKyAgICAgICAg
ICAgIEdQUlJlZyBiYXNlID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgICAgICAgICAgR1BS
UmVnIHZhbHVlID0gR1BSSW5mbzo6YXJndW1lbnRHUFIyOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2ss
IHB1dEJ5SWQuY29kZU9yaWdpbigpLCB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyhiYXNlKSwK
KyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZSksIEdQUkluZm86OmFyZ3VtZW50R1BS
MywgZmFsc2UsIHB1dEJ5SWQuZWNtYU1vZGUoKSwKKyAgICAgICAgICAgICAgICBwdXRCeUlkLnB1
dEtpbmQoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBiZWdpbiA9IHNsb3dQYXRoSklULmxhYmVsKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgIHN0YXRlLCB1c2VkUmVnaXN0ZXJzLCBzbG93UGF0aEpJVCwgZ2VuLnNsb3dQYXRoRnVuY3Rp
b24oKSwgY2FsbEZyYW1lUmVnaXN0ZXIsCisgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCks
IHZhbHVlLCBiYXNlLCBwdXRCeUlkLnVpZCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChiZWdpbiwgY2FsbCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGdldEJ5SWQubV9nZW5lcmF0b3IuZmluYWxpemUobGlua0J1ZmZlciwgKnN0YXRlLmZp
bmFsaXplci0+c2lkZUNvZGVMaW5rQnVmZmVyKTsKKyAgICAgICAgICAgIHB1dEJ5SWQubV9zbG93
UGF0aERvbmUgPSBzbG93UGF0aEpJVC5qdW1wKCk7CisgICAgICAgICAgICBwdXRCeUlkLm1fZ2Vu
ZXJhdG9yID0gZ2VuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0ZS5maW5hbGl6
ZXItPnNpZGVDb2RlTGlua0J1ZmZlciA9IGFkb3B0UHRyKAorICAgICAgICAgICAgbmV3IExpbmtC
dWZmZXIodm0sICZzbG93UGF0aEpJVCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RTdWNj
ZWVkKSk7CisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGF0ZS5nZXRCeUlk
cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGdlbmVyYXRlSUNGYXN0UGF0aCgKKyAgICAg
ICAgICAgICAgICBzdGF0ZSwgY29kZUJsb2NrLCBnZW5lcmF0ZWRGdW5jdGlvbiwgcmVjb3JkTWFw
LCBzdGF0ZS5nZXRCeUlkc1tpXSwKKyAgICAgICAgICAgICAgICBzaXplT2ZHZXRCeUlkKCkpOwor
ICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXRlLnB1dEJ5SWRzLnNpemUo
KTsgaS0tOykgeworICAgICAgICAgICAgZ2VuZXJhdGVJQ0Zhc3RQYXRoKAorICAgICAgICAgICAg
ICAgIHN0YXRlLCBjb2RlQmxvY2ssIGdlbmVyYXRlZEZ1bmN0aW9uLCByZWNvcmRNYXAsIHN0YXRl
LnB1dEJ5SWRzW2ldLAorICAgICAgICAgICAgICAgIHNpemVPZlB1dEJ5SWQoKSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTElubGlu
ZUNhY2hlRGVzY3JpcHRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmgJKHJldmlzaW9uIDE1ODYzOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDE0ICszOSw3IEBAIGNsYXNzIElubGluZUNhY2hlRGVzY3JpcHRvciB7CiBw
dWJsaWM6CiAgICAgSW5saW5lQ2FjaGVEZXNjcmlwdG9yKCkgeyB9CiAgICAgCi0gICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgbV9zbG93UGF0aERvbmU7Ci19OwotCi1jbGFzcyBHZXRCeUlkRGVzY3Jp
cHRvciA6IHB1YmxpYyBJbmxpbmVDYWNoZURlc2NyaXB0b3IgewotcHVibGljOgotICAgIEdldEJ5
SWREZXNjcmlwdG9yKCkgeyB9Ci0gICAgCi0gICAgR2V0QnlJZERlc2NyaXB0b3IodW5zaWduZWQg
c3RhY2ttYXBJRCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBTdHJpbmdJbXBsKiB1aWQpCisgICAg
SW5saW5lQ2FjaGVEZXNjcmlwdG9yKHVuc2lnbmVkIHN0YWNrbWFwSUQsIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgU3RyaW5nSW1wbCogdWlkKQogICAgICAgICA6IG1fc3RhY2ttYXBJRChzdGFja21h
cElEKQogICAgICAgICAsIG1fY29kZU9yaWdpbihjb2RlT3JpZ2luKQogICAgICAgICAsIG1fdWlk
KHVpZCkKQEAgLTYxLDExICs1NCw0NiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc3RhY2tt
YXBJRDsKICAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdpbjsKICAgICBTdHJpbmdJbXBsKiBtX3Vp
ZDsKKyAgICAKK3B1YmxpYzoKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBtX3Nsb3dQYXRoRG9u
ZTsKK307CiAKK2NsYXNzIEdldEJ5SWREZXNjcmlwdG9yIDogcHVibGljIElubGluZUNhY2hlRGVz
Y3JpcHRvciB7CiBwdWJsaWM6CisgICAgR2V0QnlJZERlc2NyaXB0b3IoKSB7IH0KKyAgICAKKyAg
ICBHZXRCeUlkRGVzY3JpcHRvcih1bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIFN0cmluZ0ltcGwqIHVpZCkKKyAgICAgICAgOiBJbmxpbmVDYWNoZURlc2NyaXB0b3Io
c3RhY2ttYXBJRCwgY29kZU9yaWdpbiwgdWlkKQorICAgIHsKKyAgICB9CisgICAgCiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBtX2dlbmVyYXRvcjsKIH07CiAKK2NsYXNzIFB1dEJ5SWREZXNjcmlw
dG9yIDogcHVibGljIElubGluZUNhY2hlRGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgUHV0QnlJ
ZERlc2NyaXB0b3IoKSB7IH0KKyAgICAKKyAgICBQdXRCeUlkRGVzY3JpcHRvcigKKyAgICAgICAg
dW5zaWduZWQgc3RhY2ttYXBJRCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBTdHJpbmdJbXBsKiB1
aWQsCisgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCisgICAgICAg
IDogSW5saW5lQ2FjaGVEZXNjcmlwdG9yKHN0YWNrbWFwSUQsIGNvZGVPcmlnaW4sIHVpZCkKKyAg
ICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5k
KQorICAgIHsKKyAgICB9CisgICAgCisgICAgSklUUHV0QnlJZEdlbmVyYXRvciBtX2dlbmVyYXRv
cjsKKyAgICAKKyAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1v
ZGU7IH0KKyAgICBQdXRLaW5kIHB1dEtpbmQoKSBjb25zdCB7IHJldHVybiBtX3B1dEtpbmQ7IH0K
KworcHJpdmF0ZToKKyAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOworICAgIFB1dEtpbmQgbV9wdXRL
aW5kOworfTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5BQkxF
KEZUTF9KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1Jl
cG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTElu
dHJpbnNpY1JlcG9zaXRvcnkuaAkocmV2aXNpb24gMTU4NjM5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKHN1
YldpdGhPdmVyZmxvdzMyLCAibGx2bS5zc3ViLndpdGgub3ZlcmZsb3cuaTMyIiwgZnVuY3Rpb25U
eXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQzMiwgYm9vbGVhbiksIGludDMyLCBpbnQzMikp
IFwKICAgICBtYWNybyhzdWJXaXRoT3ZlcmZsb3c2NCwgImxsdm0uc3N1Yi53aXRoLm92ZXJmbG93
Lmk2NCIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50NjQsIGJvb2xlYW4p
LCBpbnQ2NCwgaW50NjQpKSBcCiAgICAgbWFjcm8ocGF0Y2hwb2ludEludDY0LCAibGx2bS5leHBl
cmltZW50YWwucGF0Y2hwb2ludC5pNjQiLCBmdW5jdGlvblR5cGUoaW50NjQsIGludDMyLCBpbnQz
MiwgcmVmOCwgaW50MzIsIFZhcmlhZGljKSkgXAorICAgIG1hY3JvKHBhdGNocG9pbnRWb2lkLCAi
bGx2bS5leHBlcmltZW50YWwucGF0Y2hwb2ludC52b2lkIiwgZnVuY3Rpb25UeXBlKHZvaWRUeXBl
LCBpbnQzMiwgaW50MzIsIHJlZjgsIGludDMyLCBWYXJpYWRpYykpIFwKICAgICBtYWNybyhzdGFj
a21hcCwgImxsdm0uZXhwZXJpbWVudGFsLnN0YWNrbWFwIiwgZnVuY3Rpb25UeXBlKHZvaWRUeXBl
LCBpbnQzMiwgaW50MzIsIFZhcmlhZGljKSkgXAogICAgIG1hY3JvKHRyYXAsICJsbHZtLnRyYXAi
LCBmdW5jdGlvblR5cGUodm9pZFR5cGUpKSBcCiAgICAgbWFjcm8ob3NyRXhpdCwgIndlYmtpdF9v
c3JfZXhpdCIsIGZ1bmN0aW9uVHlwZSh2b2lkVHlwZSwgYm9vbGVhbiwgaW50MzIsIFZhcmlhZGlj
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCShyZXZpc2lvbiAxNTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQzLDYgKzM0Myw5IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlk
KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAgICAg
ICAgY29tcGlsZVB1dEJ5SWQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdl
dEJ1dHRlcmZseToKICAgICAgICAgICAgIGNvbXBpbGVHZXRCdXR0ZXJmbHkoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTI1OSw2ICsxMjYyLDI4IEBAIHByaXZhdGU6CiAgICAgICAgIG1fZnRs
U3RhdGUuZ2V0QnlJZHMuYXBwZW5kKEdldEJ5SWREZXNjcmlwdG9yKHN0YWNrbWFwSUQsIG1fbm9k
ZS0+Y29kZU9yaWdpbiwgdWlkKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZVB1dEJ5
SWQoKQorICAgIHsKKyAgICAgICAgLy8gU2VlIGFib3ZlOyBDZWxsVXNlIGlzIGVhc2llciBzbyB3
ZSBkbyBvbmx5IHRoYXQgZm9yIG5vdy4KKyAgICAgICAgQVNTRVJUKG1fbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IENlbGxVc2UpOworCisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlm
aWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKKworICAgICAgICAvLyBBcmd1bWVu
dHM6IGlkLCBieXRlcywgdGFyZ2V0LCBudW1BcmdzLCBhcmdzLi4uCisgICAgICAgIHVuc2lnbmVk
IHN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CisgICAgICAgIG1fb3V0LmNhbGwoCisgICAg
ICAgICAgICBtX291dC5wYXRjaHBvaW50Vm9pZEludHJpbnNpYygpLAorICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQzMihzdGFja21hcElEKSwgbV9vdXQuY29uc3RJbnQzMihzaXplT2ZQdXRCeUlk
KCkpLAorICAgICAgICAgICAgY29uc3ROdWxsKG1fb3V0LnJlZjgpLCBtX291dC5jb25zdEludDMy
KDIpLCBtX2NhbGxGcmFtZSwgYmFzZSwgdmFsdWUpOworICAgICAgICAKKyAgICAgICAgbV9mdGxT
dGF0ZS5wdXRCeUlkcy5hcHBlbmQoUHV0QnlJZERlc2NyaXB0b3IoCisgICAgICAgICAgICBzdGFj
a21hcElELCBtX25vZGUtPmNvZGVPcmlnaW4sIHVpZCwKKyAgICAgICAgICAgIG1fZ3JhcGguZXhl
Y3V0YWJsZUZvcihtX25vZGUtPmNvZGVPcmlnaW4pLT5lY21hTW9kZSgpLAorICAgICAgICAgICAg
bV9ub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpKTsKKyAg
ICB9CisgICAgCiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KCkKICAgICB7CiAgICAgICAg
IHNldFN0b3JhZ2UobV9vdXQubG9hZFB0cihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hl
YXBzLkpTT2JqZWN0X2J1dHRlcmZseSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPdXRwdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5oCShyZXZpc2lvbiAxNTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsNiArMzUwLDggQEAgcHVibGljOgog
ICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIExWYWx1ZSBhcmcy
LCBMVmFsdWUgYXJnMywgTFZhbHVlIGFyZzQpIHsgcmV0dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIs
IGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsgfQogICAgIExWYWx1ZSBjYWxsKExW
YWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIExWYWx1ZSBhcmcyLCBMVmFsdWUgYXJnMywgTFZh
bHVlIGFyZzQsIExWYWx1ZSBhcmc1KSB7IHJldHVybiBidWlsZENhbGwobV9idWlsZGVyLCBmdW5j
dGlvbiwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7IH0KICAgICBMVmFsdWUgY2FsbChM
VmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxLCBMVmFsdWUgYXJnMiwgTFZhbHVlIGFyZzMsIExW
YWx1ZSBhcmc0LCBMVmFsdWUgYXJnNSwgTFZhbHVlIGFyZzYpIHsgcmV0dXJuIGJ1aWxkQ2FsbCht
X2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1LCBhcmc2KTsg
fQorICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIExWYWx1ZSBh
cmcyLCBMVmFsdWUgYXJnMywgTFZhbHVlIGFyZzQsIExWYWx1ZSBhcmc1LCBMVmFsdWUgYXJnNiwg
TFZhbHVlIGFyZzcpIHsgcmV0dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcx
LCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1LCBhcmc2LCBhcmc3KTsgfQorICAgIExWYWx1ZSBjYWxs
KExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIExWYWx1ZSBhcmcyLCBMVmFsdWUgYXJnMywg
TFZhbHVlIGFyZzQsIExWYWx1ZSBhcmc1LCBMVmFsdWUgYXJnNiwgTFZhbHVlIGFyZzcsIExWYWx1
ZSBhcmc4KSB7IHJldHVybiBidWlsZENhbGwobV9idWlsZGVyLCBmdW5jdGlvbiwgYXJnMSwgYXJn
MiwgYXJnMywgYXJnNCwgYXJnNSwgYXJnNiwgYXJnNywgYXJnOCk7IH0KICAgICAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGU+CiAgICAgTFZhbHVlIG9wZXJhdGlvbihGdW5jdGlv
blR5cGUgZnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQ
YXRoQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGwuY3BwCShyZXZpc2lvbiAxNTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAs
OCBAQCBwdWJsaWM6CiAgICAgCiAgICAgfkNhbGxDb250ZXh0KCkKICAgICB7Ci0gICAgICAgIG1f
aml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIG1fcmV0dXJuUmVnaXN0ZXIpOworICAg
ICAgICBpZiAobV9yZXR1cm5SZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
bV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgbV9yZXR1cm5SZWdpc3Rlcik7CiAg
ICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGQ6Om1pbihOVU1CRVJfT0ZfQVJH
VU1FTlRfUkVHSVNURVJTLCBtX251bUFyZ3MpOyBpLS07KSB7CiAgICAgICAgICAgICBpZiAoIW1f
dXNlZFJlZ2lzdGVycy5nZXQoR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKGkpKSkKQEAgLTE2
Myw2ICsxNjQsMjAgQEAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbigKICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjIyCiB9CiAKK01h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgU3RhdGUmIHN0YXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIAorICAgIFZf
SklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIs
CisgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBv
YmplY3QsIFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBDYWxsQ29udGV4dCBjb250ZXh0KHN0YXRl
LCB1c2VkUmVnaXN0ZXJzLCBqaXQsIDUsIEludmFsaWRHUFJSZWcpOworICAgIGppdC5zZXR1cEFy
Z3VtZW50cygKKyAgICAgICAgY2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdHViSW5mbyksIHZhbHVlLCBvYmplY3QsCisgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICByZXR1cm4gY29udGV4dC5tYWtlQ2FsbChiaXR3aXNl
X2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbikpOworICAgIC8vIEZJWE1FOiBGVEwgc2hvdWxkIHN1cHBv
cnQgZXhjZXB0aW9ucy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEzNjIyCit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKIAogI2VuZGlmIC8v
IEVOQUJMRShGVExfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNs
b3dQYXRoQ2FsbC5oCShyZXZpc2lvbiAxNTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSwxMCBAQCBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKAogICAgIFN0YXRlJiwgY29uc3QgUmVn
aXN0ZXJTZXQmLCBDQ2FsbEhlbHBlcnMmLCBKX0pJVE9wZXJhdGlvbl9FU3NpSkksCiAgICAgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEdQUlJlZyBvYmplY3QsCiAgICAgU3RyaW5nSW1wbCogdWlkKTsKK01hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oCisgICAgU3RhdGUmLCBjb25zdCBSZWdpc3RlclNldCYsIENDYWxs
SGVscGVycyYsIFZfSklUT3BlcmF0aW9uX0VTc2lKSkksCisgICAgR1BSUmVnIGNhbGxGcmFtZVJl
Z2lzdGVyLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIG9iamVjdCwK
KyAgICBTdHJpbmdJbXBsKiB1aWQpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgJKHJldmlzaW9uIDE1ODYzOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTgsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgR2VuZXJhdGVkRnVuY3Rpb24gZ2VuZXJhdGVkRnVu
Y3Rpb247CiAgICAgSklURmluYWxpemVyKiBmaW5hbGl6ZXI7CiAgICAgU2VnbWVudGVkVmVjdG9y
PEdldEJ5SWREZXNjcmlwdG9yPiBnZXRCeUlkczsKKyAgICBTZWdtZW50ZWRWZWN0b3I8UHV0QnlJ
ZERlc2NyaXB0b3I+IHB1dEJ5SWRzOwogICAgIFZlY3RvcjxDU3RyaW5nPiBjb2RlU2VjdGlvbk5h
bWVzOwogICAgIFZlY3RvcjxDU3RyaW5nPiBkYXRhU2VjdGlvbk5hbWVzOwogICAgIFJlZkNvdW50
ZWRBcnJheTxMU2VjdGlvbldvcmQ+IHN0YWNrbWFwc1NlY3Rpb247CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDE1ODYzOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkx
Myw2ICs5MTMsMTMgQEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzQsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMyk7CiAgICAgfQogICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50cyhHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVn
IGFyZzQsIFRydXN0ZWRJbW1QdHIgYXJnNSkKKyAgICB7CisgICAgICAgIHNldHVwVGhyZWVTdHVi
QXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczLCBhcmc0KTsKKyAgICAgICAgbW92ZShhcmcy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFyZzUsIEdQUkluZm86OmFy
Z3VtZW50R1BSNCk7CisgICAgfQorICAgIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50cyhUcnVzdGVkSW1tUHRyIGFyZzEpCiAgICAgewogICAgICAgICBtb3ZlKGFyZzEsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxNTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4Myw2ICszODMsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0
dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmU7IH0KICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgfHwgbV9mZWF0dXJlcyAmIChFdmFs
RmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKTsgfQogICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9
CisgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBpc1N0cmljdE1vZGUoKSA/
IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9CiAgICAgICAgIAogICAgIHZvaWQgc2V0TmV2
ZXJJbmxpbmUoYm9vbCB2YWx1ZSkgeyBtX25ldmVySW5saW5lID0gdmFsdWU7IH0KICAgICBib29s
IG5ldmVySW5saW5lKCkgY29uc3QgeyByZXR1cm4gbV9uZXZlcklubGluZTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216008</attachid>
            <date>2013-11-04 23:37:36 -0800</date>
            <delta_ts>2013-11-05 09:08:35 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>19785</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4NjUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEzLTExLTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBzdXBwb3J0IFB1dEJ5SWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMzc4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZnRsL0ZUTEFiYnJldmlhdGlvbnMuaDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpidWlsZENhbGwpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDb21waWxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmF0ZUlDRmFzdFBhdGgpOgorICAgICAgICAo
SlNDOjpGVEw6OmZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcyk6CisgICAgICAgICogZnRsL0ZU
TElubGluZUNhY2hlRGVzY3JpcHRvci5oOgorICAgICAgICAoSlNDOjpGVEw6OklubGluZUNhY2hl
RGVzY3JpcHRvcjo6SW5saW5lQ2FjaGVEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpH
ZXRCeUlkRGVzY3JpcHRvcjo6R2V0QnlJZERlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpGVEw6
OlB1dEJ5SWREZXNjcmlwdG9yOjpQdXRCeUlkRGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkZU
TDo6UHV0QnlJZERlc2NyaXB0b3I6OmVjbWFNb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpQdXRC
eUlkRGVzY3JpcHRvcjo6cHV0S2luZCk6CisgICAgICAgICogZnRsL0ZUTEludHJpbnNpY1JlcG9z
aXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKiBmdGwvRlRMT3V0
cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpjYWxsKToKKyAgICAgICAgKiBmdGwv
RlRMU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYWxsT3BlcmF0aW9uKToK
KyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmg6CisgICAgICAgICogZnRsL0ZUTFN0YXRl
Lmg6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhl
bHBlcnM6OnNldHVwQXJndW1lbnRzKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6ZWNtYU1vZGUpOgorCiAyMDEzLTExLTA0
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgaW50ZXJuYWwtanMt
dGVzdHMueWFtbC9PY3RhbmUvc3RyZXNzLXRlc3RzL3BkZmpzLmpzLmRlZmF1bHQ6IEFTU0VSVElP
TiBGQUlMRUQ6IG1fc3RhdGUuZm9yTm9kZShjaGlsZCkubV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVy
ZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKSBhdCBERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHA6MjQ5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJl
dmlhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
YnJldmlhdGlvbnMuaAkocmV2aXNpb24gMTU4NjM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExBYmJyZXZpYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OSw2ICsyNTksMTYg
QEAgc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRDYWxsKExCdWlsZGVyIAogICAgIExWYWx1ZSBh
cmdzW10gPSB7IGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUsIGFyZzYgfTsKICAgICByZXR1
cm4gYnVpbGRDYWxsKGJ1aWxkZXIsIGZ1bmN0aW9uLCBhcmdzLCA2KTsKIH0KK3N0YXRpYyBpbmxp
bmUgTFZhbHVlIGJ1aWxkQ2FsbChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgZnVuY3Rpb24sIExW
YWx1ZSBhcmcxLCBMVmFsdWUgYXJnMiwgTFZhbHVlIGFyZzMsIExWYWx1ZSBhcmc0LCBMVmFsdWUg
YXJnNSwgTFZhbHVlIGFyZzYsIExWYWx1ZSBhcmc3KQoreworICAgIExWYWx1ZSBhcmdzW10gPSB7
IGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUsIGFyZzYsIGFyZzcgfTsKKyAgICByZXR1cm4g
YnVpbGRDYWxsKGJ1aWxkZXIsIGZ1bmN0aW9uLCBhcmdzLCA3KTsKK30KK3N0YXRpYyBpbmxpbmUg
TFZhbHVlIGJ1aWxkQ2FsbChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgZnVuY3Rpb24sIExWYWx1
ZSBhcmcxLCBMVmFsdWUgYXJnMiwgTFZhbHVlIGFyZzMsIExWYWx1ZSBhcmc0LCBMVmFsdWUgYXJn
NSwgTFZhbHVlIGFyZzYsIExWYWx1ZSBhcmc3LCBMVmFsdWUgYXJnOCkKK3sKKyAgICBMVmFsdWUg
YXJnc1tdID0geyBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1LCBhcmc2LCBhcmc3LCBhcmc4
IH07CisgICAgcmV0dXJuIGJ1aWxkQ2FsbChidWlsZGVyLCBmdW5jdGlvbiwgYXJncywgOCk7Cit9
CiBlbnVtIFRhaWxDYWxsTW9kZSB7IElzTm90VGFpbENhbGwsIElzVGFpbENhbGwgfTsKIHN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRUYWlsQ2FsbChMVmFsdWUgY2FsbCwgVGFpbENhbGxNb2RlIG1vZGUp
IHsgbGx2bS0+U2V0VGFpbENhbGwoY2FsbCwgbW9kZSA9PSBJc1RhaWxDYWxsKTsgfQogc3RhdGlj
IGlubGluZSBMVmFsdWUgYnVpbGRFeHRyYWN0VmFsdWUoTEJ1aWxkZXIgYnVpbGRlciwgTFZhbHVl
IGFnZ1ZhbCwgdW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIGxsdm0tPkJ1aWxkRXh0cmFjdFZhbHVl
KGJ1aWxkZXIsIGFnZ1ZhbCwgaW5kZXgsICIiKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTU4NjM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05OSw2ICs5OSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiAKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKICAgICBjYXNlIEdl
dEJ5SWQ6CisgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IENlbGxVc2UpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcmV0dXJuIENh
bm5vdENvbXBpbGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5j
cHAJKHJldmlzaW9uIDE1ODYzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
cGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNDIgQEAgc3RhdGljIHZvaWQg
ZHVtcERhdGFTZWN0aW9uKFJlZkNvdW50ZWRBcgogICAgIH0KIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgRGVzY3JpcHRvclR5cGU+Cit2b2lkIGdlbmVyYXRlSUNGYXN0UGF0aCgKKyAgICBTdGF0ZSYg
c3RhdGUsIENvZGVCbG9jayogY29kZUJsb2NrLCBHZW5lcmF0ZWRGdW5jdGlvbiBnZW5lcmF0ZWRG
dW5jdGlvbiwKKyAgICBTdGFja01hcHM6OlJlY29yZE1hcCYgcmVjb3JkTWFwLCBEZXNjcmlwdG9y
VHlwZSYgaWMsIHNpemVfdCBzaXplT2ZJQykKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS5ncmFwaC5t
X3ZtOworCisgICAgU3RhY2tNYXBzOjpSZWNvcmRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSByZWNvcmRN
YXAuZmluZChpYy5zdGFja21hcElEKCkpOworICAgIGlmIChpdGVyID09IHJlY29yZE1hcC5lbmQo
KSkgeworICAgICAgICAvLyBJdCB3YXMgb3B0aW1pemVkIG91dC4KKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAgICAgICAgIAorICAgIFN0YWNrTWFwczo6UmVjb3JkJiByZWNvcmQgPSBpdGVy
LT52YWx1ZTsKKworICAgIENDYWxsSGVscGVycyBmYXN0UGF0aEpJVCgmdm0sIGNvZGVCbG9jayk7
CisgICAgaWMubV9nZW5lcmF0b3IuZ2VuZXJhdGVGYXN0UGF0aChmYXN0UGF0aEpJVCk7CisKKyAg
ICBjaGFyKiBzdGFydE9mSUMgPQorICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGdlbmVyYXRl
ZEZ1bmN0aW9uKSArIHJlY29yZC5pbnN0cnVjdGlvbk9mZnNldDsKKyAgICAgICAgICAgIAorICAg
IExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwgJmZhc3RQYXRoSklULCBzdGFydE9mSUMsIHNpemVP
ZklDKTsKKyAgICAvLyBOb3RlOiB3ZSBjb3VsZCBoYW5kbGUgdGhlICFpc1ZhbGlkKCkgY2FzZS4g
V2UganVzdCBkb24ndCBhcHBlYXIgdG8gaGF2ZSBhCisgICAgLy8gcmVhc29uIHRvIGRvIHNvLCB5
ZXQuCisgICAgUkVMRUFTRV9BU1NFUlQobGlua0J1ZmZlci5pc1ZhbGlkKCkpOworICAgICAgICAg
ICAgCisgICAgc3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXItPmxpbmsoCisgICAg
ICAgIGljLm1fc2xvd1BhdGhEb25lLCBDb2RlTG9jYXRpb25MYWJlbChzdGFydE9mSUMgKyBzaXpl
T2ZJQykpOworICAgICAgICAgICAgCisgICAgbGlua0J1ZmZlci5saW5rKAorICAgICAgICBpYy5t
X2dlbmVyYXRvci5zbG93UGF0aEp1bXAoKSwKKyAgICAgICAgc3RhdGUuZmluYWxpemVyLT5zaWRl
Q29kZUxpbmtCdWZmZXItPmxvY2F0aW9uT2YoaWMubV9nZW5lcmF0b3Iuc2xvd1BhdGhCZWdpbigp
KSk7CisgICAgICAgICAgICAKKyAgICBpYy5tX2dlbmVyYXRvci5maW5hbGl6ZShsaW5rQnVmZmVy
LCAqc3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXIpOworfQorCiBzdGF0aWMgdm9p
ZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgU3RhdGUmIHN0YXRlLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSklUQ29kZSogaml0Q29kZSwgR2VuZXJhdGVkRnVuY3Rpb24gZ2VuZXJh
dGVkRnVuY3Rpb24sCiAgICAgU3RhY2tNYXBzOjpSZWNvcmRNYXAmIHJlY29yZE1hcCkKQEAgLTEz
OCw3ICsxNzQsNyBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAg
ICAgICAgIHN0YXRlLmZpbmFsaXplci0+ZXhpdFRodW5rc0xpbmtCdWZmZXIgPSBsaW5rQnVmZmVy
LnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICBpZiAoIXN0YXRlLmdldEJ5SWRzLmlzRW1wdHkoKSkg
eworICAgIGlmICghc3RhdGUuZ2V0QnlJZHMuaXNFbXB0eSgpIHx8ICFzdGF0ZS5wdXRCeUlkcy5p
c0VtcHR5KCkpIHsKICAgICAgICAgQ0NhbGxIZWxwZXJzIHNsb3dQYXRoSklUKCZ2bSwgY29kZUJs
b2NrKTsKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXRlLmdldEJ5SWRz
LnNpemUoKTsgaS0tOykgewpAQCAtMTc3LDQwICsyMTMsNTUgQEAgc3RhdGljIHZvaWQgZml4RnVu
Y3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAgICAgICAgICAgZ2V0QnlJZC5tX2dlbmVyYXRvciA9
IGdlbjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgc3RhdGUuZmluYWxpemVyLT5zaWRl
Q29kZUxpbmtCdWZmZXIgPSBhZG9wdFB0cigKLSAgICAgICAgICAgIG5ldyBMaW5rQnVmZmVyKHZt
LCAmc2xvd1BhdGhKSVQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkpOwot
ICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc3RhdGUuZ2V0QnlJZHMuc2l6ZSgp
OyBpLS07KSB7Ci0gICAgICAgICAgICBHZXRCeUlkRGVzY3JpcHRvciYgZ2V0QnlJZCA9IHN0YXRl
LmdldEJ5SWRzW2ldOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGF0ZS5wdXRCeUlkcy5z
aXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIFB1dEJ5SWREZXNjcmlwdG9yJiBwdXRCeUlkID0g
c3RhdGUucHV0QnlJZHNbaV07CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFN0YWNrTWFwczo6
UmVjb3JkTWFwOjppdGVyYXRvciBpdGVyID0gcmVjb3JkTWFwLmZpbmQoZ2V0QnlJZC5zdGFja21h
cElEKCkpOworICAgICAgICAgICAgU3RhY2tNYXBzOjpSZWNvcmRNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSByZWNvcmRNYXAuZmluZChwdXRCeUlkLnN0YWNrbWFwSUQoKSk7CiAgICAgICAgICAgICBpZiAo
aXRlciA9PSByZWNvcmRNYXAuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCB3YXMgb3B0
aW1pemVkIG91dC4KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgU3RhY2tNYXBzOjpSZWNvcmQmIHJlY29yZCA9IGl0ZXIt
PnZhbHVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBVTlVTRURfUEFSQU0ocmVjb3JkKTsg
Ly8gRklYTUU6IHVzZSBBbnlSZWdzLgogCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnMgZmFzdFBh
dGhKSVQoJnZtLCBjb2RlQmxvY2spOwotICAgICAgICAgICAgZ2V0QnlJZC5tX2dlbmVyYXRvci5n
ZW5lcmF0ZUZhc3RQYXRoKGZhc3RQYXRoSklUKTsKLQotICAgICAgICAgICAgY2hhciogc3RhcnRP
ZklDID0KLSAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGdlbmVyYXRlZEZ1bmN0
aW9uKSArIHJlY29yZC5pbnN0cnVjdGlvbk9mZnNldDsKLSAgICAgICAgICAgIHNpemVfdCBzaXpl
T2ZJQyA9IHNpemVPZkdldEJ5SWQoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTGlua0J1
ZmZlciBsaW5rQnVmZmVyKHZtLCAmZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMpOwot
ICAgICAgICAgICAgLy8gTm90ZTogd2UgY291bGQgaGFuZGxlIHRoZSAhaXNWYWxpZCgpIGNhc2Uu
IFdlIGp1c3QgZG9uJ3QgYXBwZWFyIHRvIGhhdmUgYQotICAgICAgICAgICAgLy8gcmVhc29uIHRv
IGRvIHNvLCB5ZXQuCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFs
aWQoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN0YXRlLmZpbmFsaXplci0+c2lkZUNv
ZGVMaW5rQnVmZmVyLT5saW5rKAotICAgICAgICAgICAgICAgIGdldEJ5SWQubV9zbG93UGF0aERv
bmUsIENvZGVMb2NhdGlvbkxhYmVsKHN0YXJ0T2ZJQyArIHNpemVPZklDKSk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGxpbmtCdWZmZXIubGluaygKLSAgICAgICAgICAgICAgICBnZXRCeUlk
Lm1fZ2VuZXJhdG9yLnNsb3dQYXRoSnVtcCgpLAotICAgICAgICAgICAgICAgIHN0YXRlLmZpbmFs
aXplci0+c2lkZUNvZGVMaW5rQnVmZmVyLT5sb2NhdGlvbk9mKGdldEJ5SWQubV9nZW5lcmF0b3Iu
c2xvd1BhdGhCZWdpbigpKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogTExWTSBzaG91bGQgdGVs
bCB1cyB3aGljaCByZWdpc3RlcnMgYXJlIGxpdmUuCisgICAgICAgICAgICBSZWdpc3RlclNldCB1
c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBHUFJJbmZvOjphcmd1bWVu
dEdQUjA7CisgICAgICAgICAgICBHUFJSZWcgYmFzZSA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsK
KyAgICAgICAgICAgIEdQUlJlZyB2YWx1ZSA9IEdQUkluZm86OmFyZ3VtZW50R1BSMjsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgICAg
ICAgICAgY29kZUJsb2NrLCBwdXRCeUlkLmNvZGVPcmlnaW4oKSwgdXNlZFJlZ2lzdGVycywgSlNW
YWx1ZVJlZ3MoYmFzZSksCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWUpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMsIGZhbHNlLCBwdXRCeUlkLmVjbWFNb2RlKCksCisgICAgICAgICAg
ICAgICAgcHV0QnlJZC5wdXRLaW5kKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgYmVnaW4gPSBzbG93UGF0aEpJVC5sYWJlbCgpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgICAgICAgICBzdGF0ZSwgdXNlZFJlZ2lzdGVycywgc2xvd1BhdGhKSVQsIGdl
bi5zbG93UGF0aEZ1bmN0aW9uKCksIGNhbGxGcmFtZVJlZ2lzdGVyLAorICAgICAgICAgICAgICAg
IGdlbi5zdHViSW5mbygpLCB2YWx1ZSwgYmFzZSwgcHV0QnlJZC51aWQoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoYmVnaW4sIGNhbGwpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBnZXRCeUlkLm1fZ2VuZXJhdG9yLmZpbmFsaXplKGxpbmtC
dWZmZXIsICpzdGF0ZS5maW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlcik7CisgICAgICAgICAg
ICBwdXRCeUlkLm1fc2xvd1BhdGhEb25lID0gc2xvd1BhdGhKSVQuanVtcCgpOworICAgICAgICAg
ICAgcHV0QnlJZC5tX2dlbmVyYXRvciA9IGdlbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgc3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXIgPSBhZG9wdFB0cigKKyAgICAg
ICAgICAgIG5ldyBMaW5rQnVmZmVyKHZtLCAmc2xvd1BhdGhKSVQsIGNvZGVCbG9jaywgSklUQ29t
cGlsYXRpb25NdXN0U3VjY2VlZCkpOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gc3RhdGUuZ2V0QnlJZHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBnZW5lcmF0ZUlD
RmFzdFBhdGgoCisgICAgICAgICAgICAgICAgc3RhdGUsIGNvZGVCbG9jaywgZ2VuZXJhdGVkRnVu
Y3Rpb24sIHJlY29yZE1hcCwgc3RhdGUuZ2V0QnlJZHNbaV0sCisgICAgICAgICAgICAgICAgc2l6
ZU9mR2V0QnlJZCgpKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGF0
ZS5wdXRCeUlkcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGdlbmVyYXRlSUNGYXN0UGF0
aCgKKyAgICAgICAgICAgICAgICBzdGF0ZSwgY29kZUJsb2NrLCBnZW5lcmF0ZWRGdW5jdGlvbiwg
cmVjb3JkTWFwLCBzdGF0ZS5wdXRCeUlkc1tpXSwKKyAgICAgICAgICAgICAgICBzaXplT2ZQdXRC
eUlkKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExJbmxpbmVDYWNoZURlc2NyaXB0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTElubGluZUNhY2hlRGVzY3JpcHRvci5oCShyZXZpc2lvbiAx
NTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTElubGluZUNhY2hlRGVzY3Jp
cHRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNCArMzksNyBAQCBjbGFzcyBJbmxpbmVDYWNo
ZURlc2NyaXB0b3IgewogcHVibGljOgogICAgIElubGluZUNhY2hlRGVzY3JpcHRvcigpIHsgfQog
ICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG1fc2xvd1BhdGhEb25lOwotfTsKLQotY2xh
c3MgR2V0QnlJZERlc2NyaXB0b3IgOiBwdWJsaWMgSW5saW5lQ2FjaGVEZXNjcmlwdG9yIHsKLXB1
YmxpYzoKLSAgICBHZXRCeUlkRGVzY3JpcHRvcigpIHsgfQotICAgIAotICAgIEdldEJ5SWREZXNj
cmlwdG9yKHVuc2lnbmVkIHN0YWNrbWFwSUQsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgU3RyaW5n
SW1wbCogdWlkKQorICAgIElubGluZUNhY2hlRGVzY3JpcHRvcih1bnNpZ25lZCBzdGFja21hcElE
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIFN0cmluZ0ltcGwqIHVpZCkKICAgICAgICAgOiBtX3N0
YWNrbWFwSUQoc3RhY2ttYXBJRCkKICAgICAgICAgLCBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikK
ICAgICAgICAgLCBtX3VpZCh1aWQpCkBAIC02MSwxMSArNTQsNDYgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX3N0YWNrbWFwSUQ7CiAgICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW47CiAgICAg
U3RyaW5nSW1wbCogbV91aWQ7CisgICAgCitwdWJsaWM6CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgbV9zbG93UGF0aERvbmU7Cit9OwogCitjbGFzcyBHZXRCeUlkRGVzY3JpcHRvciA6IHB1Ymxp
YyBJbmxpbmVDYWNoZURlc2NyaXB0b3IgewogcHVibGljOgorICAgIEdldEJ5SWREZXNjcmlwdG9y
KCkgeyB9CisgICAgCisgICAgR2V0QnlJZERlc2NyaXB0b3IodW5zaWduZWQgc3RhY2ttYXBJRCwg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBTdHJpbmdJbXBsKiB1aWQpCisgICAgICAgIDogSW5saW5l
Q2FjaGVEZXNjcmlwdG9yKHN0YWNrbWFwSUQsIGNvZGVPcmlnaW4sIHVpZCkKKyAgICB7CisgICAg
fQorICAgIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgbV9nZW5lcmF0b3I7CiB9OwogCitjbGFz
cyBQdXRCeUlkRGVzY3JpcHRvciA6IHB1YmxpYyBJbmxpbmVDYWNoZURlc2NyaXB0b3IgeworcHVi
bGljOgorICAgIFB1dEJ5SWREZXNjcmlwdG9yKCkgeyB9CisgICAgCisgICAgUHV0QnlJZERlc2Ny
aXB0b3IoCisgICAgICAgIHVuc2lnbmVkIHN0YWNrbWFwSUQsIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgU3RyaW5nSW1wbCogdWlkLAorICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBw
dXRLaW5kKQorICAgICAgICA6IElubGluZUNhY2hlRGVzY3JpcHRvcihzdGFja21hcElELCBjb2Rl
T3JpZ2luLCB1aWQpCisgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICAgICAgLCBt
X3B1dEtpbmQocHV0S2luZCkKKyAgICB7CisgICAgfQorICAgIAorICAgIEpJVFB1dEJ5SWRHZW5l
cmF0b3IgbV9nZW5lcmF0b3I7CisgICAgCisgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2VjbWFNb2RlOyB9CisgICAgUHV0S2luZCBwdXRLaW5kKCkgY29uc3QgeyByZXR1
cm4gbV9wdXRLaW5kOyB9CisKK3ByaXZhdGU6CisgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKKyAg
ICBQdXRLaW5kIG1fcHV0S2luZDsKK307CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKIAog
I2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDE1ODYzOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRM
IHsKICAgICBtYWNybyhzdWJXaXRoT3ZlcmZsb3czMiwgImxsdm0uc3N1Yi53aXRoLm92ZXJmbG93
LmkzMiIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50MzIsIGJvb2xlYW4p
LCBpbnQzMiwgaW50MzIpKSBcCiAgICAgbWFjcm8oc3ViV2l0aE92ZXJmbG93NjQsICJsbHZtLnNz
dWIud2l0aC5vdmVyZmxvdy5pNjQiLCBmdW5jdGlvblR5cGUoc3RydWN0VHlwZShtX2NvbnRleHQs
IGludDY0LCBib29sZWFuKSwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKHBhdGNocG9pbnRJ
bnQ2NCwgImxsdm0uZXhwZXJpbWVudGFsLnBhdGNocG9pbnQuaTY0IiwgZnVuY3Rpb25UeXBlKGlu
dDY0LCBpbnQzMiwgaW50MzIsIHJlZjgsIGludDMyLCBWYXJpYWRpYykpIFwKKyAgICBtYWNybyhw
YXRjaHBvaW50Vm9pZCwgImxsdm0uZXhwZXJpbWVudGFsLnBhdGNocG9pbnQudm9pZCIsIGZ1bmN0
aW9uVHlwZSh2b2lkVHlwZSwgaW50MzIsIGludDMyLCByZWY4LCBpbnQzMiwgVmFyaWFkaWMpKSBc
CiAgICAgbWFjcm8oc3RhY2ttYXAsICJsbHZtLmV4cGVyaW1lbnRhbC5zdGFja21hcCIsIGZ1bmN0
aW9uVHlwZSh2b2lkVHlwZSwgaW50MzIsIGludDMyLCBWYXJpYWRpYykpIFwKICAgICBtYWNybyh0
cmFwLCAibGx2bS50cmFwIiwgZnVuY3Rpb25UeXBlKHZvaWRUeXBlKSkgXAogICAgIG1hY3JvKG9z
ckV4aXQsICJ3ZWJraXRfb3NyX2V4aXQiLCBmdW5jdGlvblR5cGUodm9pZFR5cGUsIGJvb2xlYW4s
IGludDMyLCBWYXJpYWRpYykpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTU4NjM5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
Myw2ICszNDMsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAgICAg
ICBjb21waWxlR2V0QnlJZCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHV0
QnlJZDoKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeUlkKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgICAgICAgICBjb21waWxlR2V0QnV0dGVy
Zmx5KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyNTksNiArMTI2MiwyOCBAQCBwcml2YXRl
OgogICAgICAgICBtX2Z0bFN0YXRlLmdldEJ5SWRzLmFwcGVuZChHZXRCeUlkRGVzY3JpcHRvcihz
dGFja21hcElELCBtX25vZGUtPmNvZGVPcmlnaW4sIHVpZCkpOwogICAgIH0KICAgICAKKyAgICB2
b2lkIGNvbXBpbGVQdXRCeUlkKCkKKyAgICB7CisgICAgICAgIC8vIFNlZSBhYm92ZTsgQ2VsbFVz
ZSBpcyBlYXNpZXIgc28gd2UgZG8gb25seSB0aGF0IGZvciBub3cuCisgICAgICAgIEFTU0VSVCht
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKworICAgICAgICBMVmFsdWUg
YmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07CisKKyAg
ICAgICAgLy8gQXJndW1lbnRzOiBpZCwgYnl0ZXMsIHRhcmdldCwgbnVtQXJncywgYXJncy4uLgor
ICAgICAgICB1bnNpZ25lZCBzdGFja21hcElEID0gbV9zdGFja21hcElEcysrOworICAgICAgICBt
X291dC5jYWxsKAorICAgICAgICAgICAgbV9vdXQucGF0Y2hwb2ludFZvaWRJbnRyaW5zaWMoKSwK
KyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoc3RhY2ttYXBJRCksIG1fb3V0LmNvbnN0SW50
MzIoc2l6ZU9mUHV0QnlJZCgpKSwKKyAgICAgICAgICAgIGNvbnN0TnVsbChtX291dC5yZWY4KSwg
bV9vdXQuY29uc3RJbnQzMigzKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHZhbHVlKTsKKyAgICAgICAg
CisgICAgICAgIG1fZnRsU3RhdGUucHV0QnlJZHMuYXBwZW5kKFB1dEJ5SWREZXNjcmlwdG9yKAor
ICAgICAgICAgICAgc3RhY2ttYXBJRCwgbV9ub2RlLT5jb2RlT3JpZ2luLCB1aWQsCisgICAgICAg
ICAgICBtX2dyYXBoLmV4ZWN1dGFibGVGb3IobV9ub2RlLT5jb2RlT3JpZ2luKS0+ZWNtYU1vZGUo
KSwKKyAgICAgICAgICAgIG1fbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDog
Tm90RGlyZWN0KSk7CisgICAgfQorICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ1dHRlcmZseSgp
CiAgICAgewogICAgICAgICBzZXRTdG9yYWdlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKSwgbV9oZWFwcy5KU09iamVjdF9idXR0ZXJmbHkpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMTU4NjM5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUwLDYgKzM1
MCw4IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgY2FsbChMVmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBh
cmcxLCBMVmFsdWUgYXJnMiwgTFZhbHVlIGFyZzMsIExWYWx1ZSBhcmc0KSB7IHJldHVybiBidWls
ZENhbGwobV9idWlsZGVyLCBmdW5jdGlvbiwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7IH0KICAg
ICBMVmFsdWUgY2FsbChMVmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxLCBMVmFsdWUgYXJnMiwg
TFZhbHVlIGFyZzMsIExWYWx1ZSBhcmc0LCBMVmFsdWUgYXJnNSkgeyByZXR1cm4gYnVpbGRDYWxs
KG1fYnVpbGRlciwgZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOyB9CiAg
ICAgTFZhbHVlIGNhbGwoTFZhbHVlIGZ1bmN0aW9uLCBMVmFsdWUgYXJnMSwgTFZhbHVlIGFyZzIs
IExWYWx1ZSBhcmczLCBMVmFsdWUgYXJnNCwgTFZhbHVlIGFyZzUsIExWYWx1ZSBhcmc2KSB7IHJl
dHVybiBidWlsZENhbGwobV9idWlsZGVyLCBmdW5jdGlvbiwgYXJnMSwgYXJnMiwgYXJnMywgYXJn
NCwgYXJnNSwgYXJnNik7IH0KKyAgICBMVmFsdWUgY2FsbChMVmFsdWUgZnVuY3Rpb24sIExWYWx1
ZSBhcmcxLCBMVmFsdWUgYXJnMiwgTFZhbHVlIGFyZzMsIExWYWx1ZSBhcmc0LCBMVmFsdWUgYXJn
NSwgTFZhbHVlIGFyZzYsIExWYWx1ZSBhcmc3KSB7IHJldHVybiBidWlsZENhbGwobV9idWlsZGVy
LCBmdW5jdGlvbiwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSwgYXJnNiwgYXJnNyk7IH0K
KyAgICBMVmFsdWUgY2FsbChMVmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxLCBMVmFsdWUgYXJn
MiwgTFZhbHVlIGFyZzMsIExWYWx1ZSBhcmc0LCBMVmFsdWUgYXJnNSwgTFZhbHVlIGFyZzYsIExW
YWx1ZSBhcmc3LCBMVmFsdWUgYXJnOCkgeyByZXR1cm4gYnVpbGRDYWxsKG1fYnVpbGRlciwgZnVu
Y3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUsIGFyZzYsIGFyZzcsIGFyZzgpOyB9
CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlPgogICAgIExWYWx1ZSBv
cGVyYXRpb24oRnVuY3Rpb25UeXBlIGZ1bmN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAkocmV2aXNpb24gMTU4NjM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDAsNyArMTAwLDggQEAgcHVibGljOgogICAgIAogICAgIH5DYWxsQ29udGV4dCgpCiAg
ICAgewotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBtX3JldHVy
blJlZ2lzdGVyKTsKKyAgICAgICAgaWYgKG1fcmV0dXJuUmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJl
ZykKKyAgICAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIG1fcmV0
dXJuUmVnaXN0ZXIpOwogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc3RkOjpt
aW4oTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUywgbV9udW1BcmdzKTsgaS0tOykgewogICAg
ICAgICAgICAgaWYgKCFtX3VzZWRSZWdpc3RlcnMuZ2V0KEdQUkluZm86OnRvQXJndW1lbnRSZWdp
c3RlcihpKSkpCkBAIC0xNjMsNiArMTY0LDIwIEBAIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMzYyMgogfQogCitNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFN0
YXRlJiBzdGF0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVy
cyYgaml0LCAKKyAgICBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgR1BSUmVnIGNh
bGxGcmFtZVJlZ2lzdGVyLAorICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVn
IHZhbHVlLCBHUFJSZWcgb2JqZWN0LCBTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgQ2FsbENvbnRl
eHQgY29udGV4dChzdGF0ZSwgdXNlZFJlZ2lzdGVycywgaml0LCA1LCBJbnZhbGlkR1BSUmVnKTsK
KyAgICBqaXQuc2V0dXBBcmd1bWVudHMoCisgICAgICAgIGNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCB2YWx1ZSwgb2JqZWN0LAorICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgcmV0dXJuIGNvbnRleHQu
bWFrZUNhbGwoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb24pKTsKKyAgICAvLyBGSVhNRTog
RlRMIHNob3VsZCBzdXBwb3J0IGV4Y2VwdGlvbnMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzYyMgorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
RlRMCiAKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAkocmV2aXNpb24gMTU4NjM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAt
NTksNiArNTksMTAgQEAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbigKICAgICBT
dGF0ZSYsIGNvbnN0IFJlZ2lzdGVyU2V0JiwgQ0NhbGxIZWxwZXJzJiwgSl9KSVRPcGVyYXRpb25f
RVNzaUpJLAogICAgIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBHUFJSZWcgb2JqZWN0LAogICAgIFN0cmluZ0ltcGwqIHVpZCk7CitN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFN0YXRlJiwgY29uc3QgUmVn
aXN0ZXJTZXQmLCBDQ2FsbEhlbHBlcnMmLCBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJLAorICAgIEdQ
UlJlZyBjYWxsRnJhbWVSZWdpc3RlciwgU3RydWN0dXJlU3R1YkluZm8qLCBHUFJSZWcgdmFsdWUs
IEdQUlJlZyBvYmplY3QsCisgICAgU3RyaW5nSW1wbCogdWlkKTsKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkZUTAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCShyZXZp
c2lvbiAxNTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgIEdlbmVyYXRlZEZ1bmN0
aW9uIGdlbmVyYXRlZEZ1bmN0aW9uOwogICAgIEpJVEZpbmFsaXplciogZmluYWxpemVyOwogICAg
IFNlZ21lbnRlZFZlY3RvcjxHZXRCeUlkRGVzY3JpcHRvcj4gZ2V0QnlJZHM7CisgICAgU2VnbWVu
dGVkVmVjdG9yPFB1dEJ5SWREZXNjcmlwdG9yPiBwdXRCeUlkczsKICAgICBWZWN0b3I8Q1N0cmlu
Zz4gY29kZVNlY3Rpb25OYW1lczsKICAgICBWZWN0b3I8Q1N0cmluZz4gZGF0YVNlY3Rpb25OYW1l
czsKICAgICBSZWZDb3VudGVkQXJyYXk8TFNlY3Rpb25Xb3JkPiBzdGFja21hcHNTZWN0aW9uOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAx
NTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MTMsNiArOTEzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShhcmc0
LCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwogICAgIH0KICAgICAKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BS
UmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCisgICAgeworICAgICAg
ICBzZXR1cFRocmVlU3R1YkFyZ3NHUFI8R1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwgYXJnMywgYXJnNCk7Cisg
ICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShh
cmc1LCBHUFJJbmZvOjphcmd1bWVudEdQUjQpOworICAgIH0KKyAgICAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0ciBhcmcxKQogICAgIHsKICAgICAg
ICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTU4NjM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zODMsNiArMzgzLDcgQEAgcHVibGljOgogICAgIGJvb2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0
IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBBcmd1bWVudHNGZWF0dXJlOyB9CiAgICAgYm9vbCBuZWVk
c0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIHx8IG1f
ZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSk7IH0K
ICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBTdHJp
Y3RNb2RlRmVhdHVyZTsgfQorICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4g
aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsgfQogICAgICAgICAK
ICAgICB2b2lkIHNldE5ldmVySW5saW5lKGJvb2wgdmFsdWUpIHsgbV9uZXZlcklubGluZSA9IHZh
bHVlOyB9CiAgICAgYm9vbCBuZXZlcklubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV2ZXJJbmxp
bmU7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216044</attachid>
            <date>2013-11-05 09:08:35 -0800</date>
            <delta_ts>2013-11-05 10:42:24 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>19769</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4NjUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEzLTExLTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBzdXBwb3J0IFB1dEJ5SWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMzc4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZnRsL0ZUTEFiYnJldmlhdGlvbnMuaDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpidWlsZENhbGwpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDb21waWxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmF0ZUlDRmFzdFBhdGgpOgorICAgICAgICAo
SlNDOjpGVEw6OmZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcyk6CisgICAgICAgICogZnRsL0ZU
TElubGluZUNhY2hlRGVzY3JpcHRvci5oOgorICAgICAgICAoSlNDOjpGVEw6OklubGluZUNhY2hl
RGVzY3JpcHRvcjo6SW5saW5lQ2FjaGVEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpH
ZXRCeUlkRGVzY3JpcHRvcjo6R2V0QnlJZERlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpGVEw6
OlB1dEJ5SWREZXNjcmlwdG9yOjpQdXRCeUlkRGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkZU
TDo6UHV0QnlJZERlc2NyaXB0b3I6OmVjbWFNb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpQdXRC
eUlkRGVzY3JpcHRvcjo6cHV0S2luZCk6CisgICAgICAgICogZnRsL0ZUTEludHJpbnNpY1JlcG9z
aXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKiBmdGwvRlRMT3V0
cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpjYWxsKToKKyAgICAgICAgKiBmdGwv
RlRMU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYWxsT3BlcmF0aW9uKToK
KyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmg6CisgICAgICAgICogZnRsL0ZUTFN0YXRl
Lmg6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhl
bHBlcnM6OnNldHVwQXJndW1lbnRzKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6ZWNtYU1vZGUpOgorCiAyMDEzLTExLTA0
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgaW50ZXJuYWwtanMt
dGVzdHMueWFtbC9PY3RhbmUvc3RyZXNzLXRlc3RzL3BkZmpzLmpzLmRlZmF1bHQ6IEFTU0VSVElP
TiBGQUlMRUQ6IG1fc3RhdGUuZm9yTm9kZShjaGlsZCkubV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVy
ZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKSBhdCBERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHA6MjQ5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJl
dmlhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
YnJldmlhdGlvbnMuaAkocmV2aXNpb24gMTU4NjM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExBYmJyZXZpYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OSw2ICsyNTksMTYg
QEAgc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRDYWxsKExCdWlsZGVyIAogICAgIExWYWx1ZSBh
cmdzW10gPSB7IGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUsIGFyZzYgfTsKICAgICByZXR1
cm4gYnVpbGRDYWxsKGJ1aWxkZXIsIGZ1bmN0aW9uLCBhcmdzLCA2KTsKIH0KK3N0YXRpYyBpbmxp
bmUgTFZhbHVlIGJ1aWxkQ2FsbChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgZnVuY3Rpb24sIExW
YWx1ZSBhcmcxLCBMVmFsdWUgYXJnMiwgTFZhbHVlIGFyZzMsIExWYWx1ZSBhcmc0LCBMVmFsdWUg
YXJnNSwgTFZhbHVlIGFyZzYsIExWYWx1ZSBhcmc3KQoreworICAgIExWYWx1ZSBhcmdzW10gPSB7
IGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUsIGFyZzYsIGFyZzcgfTsKKyAgICByZXR1cm4g
YnVpbGRDYWxsKGJ1aWxkZXIsIGZ1bmN0aW9uLCBhcmdzLCA3KTsKK30KK3N0YXRpYyBpbmxpbmUg
TFZhbHVlIGJ1aWxkQ2FsbChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgZnVuY3Rpb24sIExWYWx1
ZSBhcmcxLCBMVmFsdWUgYXJnMiwgTFZhbHVlIGFyZzMsIExWYWx1ZSBhcmc0LCBMVmFsdWUgYXJn
NSwgTFZhbHVlIGFyZzYsIExWYWx1ZSBhcmc3LCBMVmFsdWUgYXJnOCkKK3sKKyAgICBMVmFsdWUg
YXJnc1tdID0geyBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1LCBhcmc2LCBhcmc3LCBhcmc4
IH07CisgICAgcmV0dXJuIGJ1aWxkQ2FsbChidWlsZGVyLCBmdW5jdGlvbiwgYXJncywgOCk7Cit9
CiBlbnVtIFRhaWxDYWxsTW9kZSB7IElzTm90VGFpbENhbGwsIElzVGFpbENhbGwgfTsKIHN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRUYWlsQ2FsbChMVmFsdWUgY2FsbCwgVGFpbENhbGxNb2RlIG1vZGUp
IHsgbGx2bS0+U2V0VGFpbENhbGwoY2FsbCwgbW9kZSA9PSBJc1RhaWxDYWxsKTsgfQogc3RhdGlj
IGlubGluZSBMVmFsdWUgYnVpbGRFeHRyYWN0VmFsdWUoTEJ1aWxkZXIgYnVpbGRlciwgTFZhbHVl
IGFnZ1ZhbCwgdW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIGxsdm0tPkJ1aWxkRXh0cmFjdFZhbHVl
KGJ1aWxkZXIsIGFnZ1ZhbCwgaW5kZXgsICIiKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTU4NjM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05OSw2ICs5OSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiAKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKICAgICBjYXNlIEdl
dEJ5SWQ6CisgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IENlbGxVc2UpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcmV0dXJuIENh
bm5vdENvbXBpbGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5j
cHAJKHJldmlzaW9uIDE1ODYzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
cGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNDIgQEAgc3RhdGljIHZvaWQg
ZHVtcERhdGFTZWN0aW9uKFJlZkNvdW50ZWRBcgogICAgIH0KIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgRGVzY3JpcHRvclR5cGU+Cit2b2lkIGdlbmVyYXRlSUNGYXN0UGF0aCgKKyAgICBTdGF0ZSYg
c3RhdGUsIENvZGVCbG9jayogY29kZUJsb2NrLCBHZW5lcmF0ZWRGdW5jdGlvbiBnZW5lcmF0ZWRG
dW5jdGlvbiwKKyAgICBTdGFja01hcHM6OlJlY29yZE1hcCYgcmVjb3JkTWFwLCBEZXNjcmlwdG9y
VHlwZSYgaWMsIHNpemVfdCBzaXplT2ZJQykKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS5ncmFwaC5t
X3ZtOworCisgICAgU3RhY2tNYXBzOjpSZWNvcmRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSByZWNvcmRN
YXAuZmluZChpYy5zdGFja21hcElEKCkpOworICAgIGlmIChpdGVyID09IHJlY29yZE1hcC5lbmQo
KSkgeworICAgICAgICAvLyBJdCB3YXMgb3B0aW1pemVkIG91dC4KKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBTdGFja01hcHM6OlJlY29yZCYgcmVjb3JkID0gaXRlci0+dmFsdWU7
CisKKyAgICBDQ2FsbEhlbHBlcnMgZmFzdFBhdGhKSVQoJnZtLCBjb2RlQmxvY2spOworICAgIGlj
Lm1fZ2VuZXJhdG9yLmdlbmVyYXRlRmFzdFBhdGgoZmFzdFBhdGhKSVQpOworCisgICAgY2hhciog
c3RhcnRPZklDID0KKyAgICAgICAgYml0d2lzZV9jYXN0PGNoYXIqPihnZW5lcmF0ZWRGdW5jdGlv
bikgKyByZWNvcmQuaW5zdHJ1Y3Rpb25PZmZzZXQ7CisgICAgICAgICAgICAKKyAgICBMaW5rQnVm
ZmVyIGxpbmtCdWZmZXIodm0sICZmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQyk7Cisg
ICAgLy8gTm90ZTogd2UgY291bGQgaGFuZGxlIHRoZSAhaXNWYWxpZCgpIGNhc2UuIFdlIGp1c3Qg
ZG9uJ3QgYXBwZWFyIHRvIGhhdmUgYQorICAgIC8vIHJlYXNvbiB0byBkbyBzbywgeWV0LgorICAg
IFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKKyAgICAKKyAgICBzdGF0ZS5m
aW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlci0+bGluaygKKyAgICAgICAgaWMubV9zbG93UGF0
aERvbmUsIENvZGVMb2NhdGlvbkxhYmVsKHN0YXJ0T2ZJQyArIHNpemVPZklDKSk7CisgICAgICAg
ICAgICAKKyAgICBsaW5rQnVmZmVyLmxpbmsoCisgICAgICAgIGljLm1fZ2VuZXJhdG9yLnNsb3dQ
YXRoSnVtcCgpLAorICAgICAgICBzdGF0ZS5maW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlci0+
bG9jYXRpb25PZihpYy5tX2dlbmVyYXRvci5zbG93UGF0aEJlZ2luKCkpKTsKKyAgICAgICAgICAg
IAorICAgIGljLm1fZ2VuZXJhdG9yLmZpbmFsaXplKGxpbmtCdWZmZXIsICpzdGF0ZS5maW5hbGl6
ZXItPnNpZGVDb2RlTGlua0J1ZmZlcik7Cit9CisKIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFz
ZWRPblN0YWNrTWFwcygKICAgICBTdGF0ZSYgc3RhdGUsIENvZGVCbG9jayogY29kZUJsb2NrLCBK
SVRDb2RlKiBqaXRDb2RlLCBHZW5lcmF0ZWRGdW5jdGlvbiBnZW5lcmF0ZWRGdW5jdGlvbiwKICAg
ICBTdGFja01hcHM6OlJlY29yZE1hcCYgcmVjb3JkTWFwKQpAQCAtMTM4LDcgKzE3NCw3IEBAIHN0
YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgc3RhdGUuZmlu
YWxpemVyLT5leGl0VGh1bmtzTGlua0J1ZmZlciA9IGxpbmtCdWZmZXIucmVsZWFzZSgpOwogICAg
IH0KIAotICAgIGlmICghc3RhdGUuZ2V0QnlJZHMuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFzdGF0
ZS5nZXRCeUlkcy5pc0VtcHR5KCkgfHwgIXN0YXRlLnB1dEJ5SWRzLmlzRW1wdHkoKSkgewogICAg
ICAgICBDQ2FsbEhlbHBlcnMgc2xvd1BhdGhKSVQoJnZtLCBjb2RlQmxvY2spOwogICAgICAgICAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc3RhdGUuZ2V0QnlJZHMuc2l6ZSgpOyBpLS07KSB7
CkBAIC0xNzcsNDAgKzIxMyw1NSBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFj
a01hcHMoCiAgICAgICAgICAgICBnZXRCeUlkLm1fZ2VuZXJhdG9yID0gZ2VuOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBzdGF0ZS5maW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlciA9
IGFkb3B0UHRyKAotICAgICAgICAgICAgbmV3IExpbmtCdWZmZXIodm0sICZzbG93UGF0aEpJVCwg
Y29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKSk7Ci0gICAgICAgIAotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBzdGF0ZS5nZXRCeUlkcy5zaXplKCk7IGktLTspIHsKLSAgICAg
ICAgICAgIEdldEJ5SWREZXNjcmlwdG9yJiBnZXRCeUlkID0gc3RhdGUuZ2V0QnlJZHNbaV07Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXRlLnB1dEJ5SWRzLnNpemUoKTsgaS0tOykgewor
ICAgICAgICAgICAgUHV0QnlJZERlc2NyaXB0b3ImIHB1dEJ5SWQgPSBzdGF0ZS5wdXRCeUlkc1tp
XTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgU3RhY2tNYXBzOjpSZWNvcmRNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSByZWNvcmRNYXAuZmluZChnZXRCeUlkLnN0YWNrbWFwSUQoKSk7CisgICAgICAg
ICAgICBTdGFja01hcHM6OlJlY29yZE1hcDo6aXRlcmF0b3IgaXRlciA9IHJlY29yZE1hcC5maW5k
KHB1dEJ5SWQuc3RhY2ttYXBJRCgpKTsKICAgICAgICAgICAgIGlmIChpdGVyID09IHJlY29yZE1h
cC5lbmQoKSkgewogICAgICAgICAgICAgICAgIC8vIEl0IHdhcyBvcHRpbWl6ZWQgb3V0LgogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBTdGFja01hcHM6OlJlY29yZCYgcmVjb3JkID0gaXRlci0+dmFsdWU7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShyZWNvcmQpOyAvLyBGSVhNRTogdXNlIEFu
eVJlZ3MuCiAKLSAgICAgICAgICAgIENDYWxsSGVscGVycyBmYXN0UGF0aEpJVCgmdm0sIGNvZGVC
bG9jayk7Ci0gICAgICAgICAgICBnZXRCeUlkLm1fZ2VuZXJhdG9yLmdlbmVyYXRlRmFzdFBhdGgo
ZmFzdFBhdGhKSVQpOwotCi0gICAgICAgICAgICBjaGFyKiBzdGFydE9mSUMgPQotICAgICAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oZ2VuZXJhdGVkRnVuY3Rpb24pICsgcmVjb3JkLmlu
c3RydWN0aW9uT2Zmc2V0OwotICAgICAgICAgICAgc2l6ZV90IHNpemVPZklDID0gc2l6ZU9mR2V0
QnlJZCgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIo
dm0sICZmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQyk7Ci0gICAgICAgICAgICAvLyBO
b3RlOiB3ZSBjb3VsZCBoYW5kbGUgdGhlICFpc1ZhbGlkKCkgY2FzZS4gV2UganVzdCBkb24ndCBh
cHBlYXIgdG8gaGF2ZSBhCi0gICAgICAgICAgICAvLyByZWFzb24gdG8gZG8gc28sIHlldC4KLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgc3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXItPmxp
bmsoCi0gICAgICAgICAgICAgICAgZ2V0QnlJZC5tX3Nsb3dQYXRoRG9uZSwgQ29kZUxvY2F0aW9u
TGFiZWwoc3RhcnRPZklDICsgc2l6ZU9mSUMpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKAotICAgICAgICAgICAgICAgIGdldEJ5SWQubV9nZW5lcmF0b3Iuc2xv
d1BhdGhKdW1wKCksCi0gICAgICAgICAgICAgICAgc3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxp
bmtCdWZmZXItPmxvY2F0aW9uT2YoZ2V0QnlJZC5tX2dlbmVyYXRvci5zbG93UGF0aEJlZ2luKCkp
KTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBMTFZNIHNob3VsZCB0ZWxsIHVzIHdoaWNoIHJlZ2lz
dGVycyBhcmUgbGl2ZS4KKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBS
ZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEdQ
UlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKKyAgICAgICAg
ICAgIEdQUlJlZyBiYXNlID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgICAgICAgICAgR1BS
UmVnIHZhbHVlID0gR1BSSW5mbzo6YXJndW1lbnRHUFIyOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2ss
IHB1dEJ5SWQuY29kZU9yaWdpbigpLCB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyhiYXNlKSwK
KyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZSksIEdQUkluZm86OmFyZ3VtZW50R1BS
MywgZmFsc2UsIHB1dEJ5SWQuZWNtYU1vZGUoKSwKKyAgICAgICAgICAgICAgICBwdXRCeUlkLnB1
dEtpbmQoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBiZWdpbiA9IHNsb3dQYXRoSklULmxhYmVsKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgIHN0YXRlLCB1c2VkUmVnaXN0ZXJzLCBzbG93UGF0aEpJVCwgZ2VuLnNsb3dQYXRoRnVuY3Rp
b24oKSwgY2FsbEZyYW1lUmVnaXN0ZXIsCisgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCks
IHZhbHVlLCBiYXNlLCBwdXRCeUlkLnVpZCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChiZWdpbiwgY2FsbCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGdldEJ5SWQubV9nZW5lcmF0b3IuZmluYWxpemUobGlua0J1ZmZlciwgKnN0YXRlLmZp
bmFsaXplci0+c2lkZUNvZGVMaW5rQnVmZmVyKTsKKyAgICAgICAgICAgIHB1dEJ5SWQubV9zbG93
UGF0aERvbmUgPSBzbG93UGF0aEpJVC5qdW1wKCk7CisgICAgICAgICAgICBwdXRCeUlkLm1fZ2Vu
ZXJhdG9yID0gZ2VuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0ZS5maW5hbGl6
ZXItPnNpZGVDb2RlTGlua0J1ZmZlciA9IGFkb3B0UHRyKAorICAgICAgICAgICAgbmV3IExpbmtC
dWZmZXIodm0sICZzbG93UGF0aEpJVCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RTdWNj
ZWVkKSk7CisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGF0ZS5nZXRCeUlk
cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGdlbmVyYXRlSUNGYXN0UGF0aCgKKyAgICAg
ICAgICAgICAgICBzdGF0ZSwgY29kZUJsb2NrLCBnZW5lcmF0ZWRGdW5jdGlvbiwgcmVjb3JkTWFw
LCBzdGF0ZS5nZXRCeUlkc1tpXSwKKyAgICAgICAgICAgICAgICBzaXplT2ZHZXRCeUlkKCkpOwor
ICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXRlLnB1dEJ5SWRzLnNpemUo
KTsgaS0tOykgeworICAgICAgICAgICAgZ2VuZXJhdGVJQ0Zhc3RQYXRoKAorICAgICAgICAgICAg
ICAgIHN0YXRlLCBjb2RlQmxvY2ssIGdlbmVyYXRlZEZ1bmN0aW9uLCByZWNvcmRNYXAsIHN0YXRl
LnB1dEJ5SWRzW2ldLAorICAgICAgICAgICAgICAgIHNpemVPZlB1dEJ5SWQoKSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTElubGlu
ZUNhY2hlRGVzY3JpcHRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmgJKHJldmlzaW9uIDE1ODYzOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDE0ICszOSw3IEBAIGNsYXNzIElubGluZUNhY2hlRGVzY3JpcHRvciB7CiBw
dWJsaWM6CiAgICAgSW5saW5lQ2FjaGVEZXNjcmlwdG9yKCkgeyB9CiAgICAgCi0gICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgbV9zbG93UGF0aERvbmU7Ci19OwotCi1jbGFzcyBHZXRCeUlkRGVzY3Jp
cHRvciA6IHB1YmxpYyBJbmxpbmVDYWNoZURlc2NyaXB0b3IgewotcHVibGljOgotICAgIEdldEJ5
SWREZXNjcmlwdG9yKCkgeyB9Ci0gICAgCi0gICAgR2V0QnlJZERlc2NyaXB0b3IodW5zaWduZWQg
c3RhY2ttYXBJRCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBTdHJpbmdJbXBsKiB1aWQpCisgICAg
SW5saW5lQ2FjaGVEZXNjcmlwdG9yKHVuc2lnbmVkIHN0YWNrbWFwSUQsIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgU3RyaW5nSW1wbCogdWlkKQogICAgICAgICA6IG1fc3RhY2ttYXBJRChzdGFja21h
cElEKQogICAgICAgICAsIG1fY29kZU9yaWdpbihjb2RlT3JpZ2luKQogICAgICAgICAsIG1fdWlk
KHVpZCkKQEAgLTYxLDExICs1NCw0NiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc3RhY2tt
YXBJRDsKICAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdpbjsKICAgICBTdHJpbmdJbXBsKiBtX3Vp
ZDsKKyAgICAKK3B1YmxpYzoKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBtX3Nsb3dQYXRoRG9u
ZTsKK307CiAKK2NsYXNzIEdldEJ5SWREZXNjcmlwdG9yIDogcHVibGljIElubGluZUNhY2hlRGVz
Y3JpcHRvciB7CiBwdWJsaWM6CisgICAgR2V0QnlJZERlc2NyaXB0b3IoKSB7IH0KKyAgICAKKyAg
ICBHZXRCeUlkRGVzY3JpcHRvcih1bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIFN0cmluZ0ltcGwqIHVpZCkKKyAgICAgICAgOiBJbmxpbmVDYWNoZURlc2NyaXB0b3Io
c3RhY2ttYXBJRCwgY29kZU9yaWdpbiwgdWlkKQorICAgIHsKKyAgICB9CisgICAgCiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBtX2dlbmVyYXRvcjsKIH07CiAKK2NsYXNzIFB1dEJ5SWREZXNjcmlw
dG9yIDogcHVibGljIElubGluZUNhY2hlRGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgUHV0QnlJ
ZERlc2NyaXB0b3IoKSB7IH0KKyAgICAKKyAgICBQdXRCeUlkRGVzY3JpcHRvcigKKyAgICAgICAg
dW5zaWduZWQgc3RhY2ttYXBJRCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBTdHJpbmdJbXBsKiB1
aWQsCisgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCisgICAgICAg
IDogSW5saW5lQ2FjaGVEZXNjcmlwdG9yKHN0YWNrbWFwSUQsIGNvZGVPcmlnaW4sIHVpZCkKKyAg
ICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5k
KQorICAgIHsKKyAgICB9CisgICAgCisgICAgSklUUHV0QnlJZEdlbmVyYXRvciBtX2dlbmVyYXRv
cjsKKyAgICAKKyAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1v
ZGU7IH0KKyAgICBQdXRLaW5kIHB1dEtpbmQoKSBjb25zdCB7IHJldHVybiBtX3B1dEtpbmQ7IH0K
KworcHJpdmF0ZToKKyAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOworICAgIFB1dEtpbmQgbV9wdXRL
aW5kOworfTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5BQkxF
KEZUTF9KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1Jl
cG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTElu
dHJpbnNpY1JlcG9zaXRvcnkuaAkocmV2aXNpb24gMTU4NjM5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKHN1
YldpdGhPdmVyZmxvdzMyLCAibGx2bS5zc3ViLndpdGgub3ZlcmZsb3cuaTMyIiwgZnVuY3Rpb25U
eXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQzMiwgYm9vbGVhbiksIGludDMyLCBpbnQzMikp
IFwKICAgICBtYWNybyhzdWJXaXRoT3ZlcmZsb3c2NCwgImxsdm0uc3N1Yi53aXRoLm92ZXJmbG93
Lmk2NCIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50NjQsIGJvb2xlYW4p
LCBpbnQ2NCwgaW50NjQpKSBcCiAgICAgbWFjcm8ocGF0Y2hwb2ludEludDY0LCAibGx2bS5leHBl
cmltZW50YWwucGF0Y2hwb2ludC5pNjQiLCBmdW5jdGlvblR5cGUoaW50NjQsIGludDMyLCBpbnQz
MiwgcmVmOCwgaW50MzIsIFZhcmlhZGljKSkgXAorICAgIG1hY3JvKHBhdGNocG9pbnRWb2lkLCAi
bGx2bS5leHBlcmltZW50YWwucGF0Y2hwb2ludC52b2lkIiwgZnVuY3Rpb25UeXBlKHZvaWRUeXBl
LCBpbnQzMiwgaW50MzIsIHJlZjgsIGludDMyLCBWYXJpYWRpYykpIFwKICAgICBtYWNybyhzdGFj
a21hcCwgImxsdm0uZXhwZXJpbWVudGFsLnN0YWNrbWFwIiwgZnVuY3Rpb25UeXBlKHZvaWRUeXBl
LCBpbnQzMiwgaW50MzIsIFZhcmlhZGljKSkgXAogICAgIG1hY3JvKHRyYXAsICJsbHZtLnRyYXAi
LCBmdW5jdGlvblR5cGUodm9pZFR5cGUpKSBcCiAgICAgbWFjcm8ob3NyRXhpdCwgIndlYmtpdF9v
c3JfZXhpdCIsIGZ1bmN0aW9uVHlwZSh2b2lkVHlwZSwgYm9vbGVhbiwgaW50MzIsIFZhcmlhZGlj
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCShyZXZpc2lvbiAxNTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQzLDYgKzM0Myw5IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlk
KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAgICAg
ICAgY29tcGlsZVB1dEJ5SWQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdl
dEJ1dHRlcmZseToKICAgICAgICAgICAgIGNvbXBpbGVHZXRCdXR0ZXJmbHkoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTI1OSw2ICsxMjYyLDI4IEBAIHByaXZhdGU6CiAgICAgICAgIG1fZnRs
U3RhdGUuZ2V0QnlJZHMuYXBwZW5kKEdldEJ5SWREZXNjcmlwdG9yKHN0YWNrbWFwSUQsIG1fbm9k
ZS0+Y29kZU9yaWdpbiwgdWlkKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZVB1dEJ5
SWQoKQorICAgIHsKKyAgICAgICAgLy8gU2VlIGFib3ZlOyBDZWxsVXNlIGlzIGVhc2llciBzbyB3
ZSBkbyBvbmx5IHRoYXQgZm9yIG5vdy4KKyAgICAgICAgQVNTRVJUKG1fbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IENlbGxVc2UpOworCisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlm
aWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKKworICAgICAgICAvLyBBcmd1bWVu
dHM6IGlkLCBieXRlcywgdGFyZ2V0LCBudW1BcmdzLCBhcmdzLi4uCisgICAgICAgIHVuc2lnbmVk
IHN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CisgICAgICAgIG1fb3V0LmNhbGwoCisgICAg
ICAgICAgICBtX291dC5wYXRjaHBvaW50Vm9pZEludHJpbnNpYygpLAorICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQzMihzdGFja21hcElEKSwgbV9vdXQuY29uc3RJbnQzMihzaXplT2ZQdXRCeUlk
KCkpLAorICAgICAgICAgICAgY29uc3ROdWxsKG1fb3V0LnJlZjgpLCBtX291dC5jb25zdEludDMy
KDMpLCBtX2NhbGxGcmFtZSwgYmFzZSwgdmFsdWUpOworICAgICAgICAKKyAgICAgICAgbV9mdGxT
dGF0ZS5wdXRCeUlkcy5hcHBlbmQoUHV0QnlJZERlc2NyaXB0b3IoCisgICAgICAgICAgICBzdGFj
a21hcElELCBtX25vZGUtPmNvZGVPcmlnaW4sIHVpZCwKKyAgICAgICAgICAgIG1fZ3JhcGguZXhl
Y3V0YWJsZUZvcihtX25vZGUtPmNvZGVPcmlnaW4pLT5lY21hTW9kZSgpLAorICAgICAgICAgICAg
bV9ub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpKTsKKyAg
ICB9CisgICAgCiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KCkKICAgICB7CiAgICAgICAg
IHNldFN0b3JhZ2UobV9vdXQubG9hZFB0cihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hl
YXBzLkpTT2JqZWN0X2J1dHRlcmZseSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPdXRwdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5oCShyZXZpc2lvbiAxNTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsNiArMzUwLDggQEAgcHVibGljOgog
ICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIExWYWx1ZSBhcmcy
LCBMVmFsdWUgYXJnMywgTFZhbHVlIGFyZzQpIHsgcmV0dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIs
IGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsgfQogICAgIExWYWx1ZSBjYWxsKExW
YWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIExWYWx1ZSBhcmcyLCBMVmFsdWUgYXJnMywgTFZh
bHVlIGFyZzQsIExWYWx1ZSBhcmc1KSB7IHJldHVybiBidWlsZENhbGwobV9idWlsZGVyLCBmdW5j
dGlvbiwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7IH0KICAgICBMVmFsdWUgY2FsbChM
VmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxLCBMVmFsdWUgYXJnMiwgTFZhbHVlIGFyZzMsIExW
YWx1ZSBhcmc0LCBMVmFsdWUgYXJnNSwgTFZhbHVlIGFyZzYpIHsgcmV0dXJuIGJ1aWxkQ2FsbCht
X2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1LCBhcmc2KTsg
fQorICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIExWYWx1ZSBh
cmcyLCBMVmFsdWUgYXJnMywgTFZhbHVlIGFyZzQsIExWYWx1ZSBhcmc1LCBMVmFsdWUgYXJnNiwg
TFZhbHVlIGFyZzcpIHsgcmV0dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcx
LCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1LCBhcmc2LCBhcmc3KTsgfQorICAgIExWYWx1ZSBjYWxs
KExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIExWYWx1ZSBhcmcyLCBMVmFsdWUgYXJnMywg
TFZhbHVlIGFyZzQsIExWYWx1ZSBhcmc1LCBMVmFsdWUgYXJnNiwgTFZhbHVlIGFyZzcsIExWYWx1
ZSBhcmc4KSB7IHJldHVybiBidWlsZENhbGwobV9idWlsZGVyLCBmdW5jdGlvbiwgYXJnMSwgYXJn
MiwgYXJnMywgYXJnNCwgYXJnNSwgYXJnNiwgYXJnNywgYXJnOCk7IH0KICAgICAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGU+CiAgICAgTFZhbHVlIG9wZXJhdGlvbihGdW5jdGlv
blR5cGUgZnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQ
YXRoQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGwuY3BwCShyZXZpc2lvbiAxNTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAs
OCBAQCBwdWJsaWM6CiAgICAgCiAgICAgfkNhbGxDb250ZXh0KCkKICAgICB7Ci0gICAgICAgIG1f
aml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIG1fcmV0dXJuUmVnaXN0ZXIpOworICAg
ICAgICBpZiAobV9yZXR1cm5SZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
bV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgbV9yZXR1cm5SZWdpc3Rlcik7CiAg
ICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGQ6Om1pbihOVU1CRVJfT0ZfQVJH
VU1FTlRfUkVHSVNURVJTLCBtX251bUFyZ3MpOyBpLS07KSB7CiAgICAgICAgICAgICBpZiAoIW1f
dXNlZFJlZ2lzdGVycy5nZXQoR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKGkpKSkKQEAgLTE2
Myw2ICsxNjQsMjAgQEAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbigKICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjIyCiB9CiAKK01h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgU3RhdGUmIHN0YXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIAorICAgIFZf
SklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIs
CisgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBv
YmplY3QsIFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBDYWxsQ29udGV4dCBjb250ZXh0KHN0YXRl
LCB1c2VkUmVnaXN0ZXJzLCBqaXQsIDUsIEludmFsaWRHUFJSZWcpOworICAgIGppdC5zZXR1cEFy
Z3VtZW50cygKKyAgICAgICAgY2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdHViSW5mbyksIHZhbHVlLCBvYmplY3QsCisgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICByZXR1cm4gY29udGV4dC5tYWtlQ2FsbChiaXR3aXNl
X2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbikpOworICAgIC8vIEZJWE1FOiBGVEwgc2hvdWxkIHN1cHBv
cnQgZXhjZXB0aW9ucy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEzNjIyCit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKIAogI2VuZGlmIC8v
IEVOQUJMRShGVExfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNs
b3dQYXRoQ2FsbC5oCShyZXZpc2lvbiAxNTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSwxMCBAQCBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKAogICAgIFN0YXRlJiwgY29uc3QgUmVn
aXN0ZXJTZXQmLCBDQ2FsbEhlbHBlcnMmLCBKX0pJVE9wZXJhdGlvbl9FU3NpSkksCiAgICAgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEdQUlJlZyBvYmplY3QsCiAgICAgU3RyaW5nSW1wbCogdWlkKTsKK01hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oCisgICAgU3RhdGUmLCBjb25zdCBSZWdpc3RlclNldCYsIENDYWxs
SGVscGVycyYsIFZfSklUT3BlcmF0aW9uX0VTc2lKSkksCisgICAgR1BSUmVnIGNhbGxGcmFtZVJl
Z2lzdGVyLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIG9iamVjdCwK
KyAgICBTdHJpbmdJbXBsKiB1aWQpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgJKHJldmlzaW9uIDE1ODYzOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTgsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgR2VuZXJhdGVkRnVuY3Rpb24gZ2VuZXJhdGVkRnVu
Y3Rpb247CiAgICAgSklURmluYWxpemVyKiBmaW5hbGl6ZXI7CiAgICAgU2VnbWVudGVkVmVjdG9y
PEdldEJ5SWREZXNjcmlwdG9yPiBnZXRCeUlkczsKKyAgICBTZWdtZW50ZWRWZWN0b3I8UHV0QnlJ
ZERlc2NyaXB0b3I+IHB1dEJ5SWRzOwogICAgIFZlY3RvcjxDU3RyaW5nPiBjb2RlU2VjdGlvbk5h
bWVzOwogICAgIFZlY3RvcjxDU3RyaW5nPiBkYXRhU2VjdGlvbk5hbWVzOwogICAgIFJlZkNvdW50
ZWRBcnJheTxMU2VjdGlvbldvcmQ+IHN0YWNrbWFwc1NlY3Rpb247CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDE1ODYzOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkx
Myw2ICs5MTMsMTMgQEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzQsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMyk7CiAgICAgfQogICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50cyhHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVn
IGFyZzQsIFRydXN0ZWRJbW1QdHIgYXJnNSkKKyAgICB7CisgICAgICAgIHNldHVwVGhyZWVTdHVi
QXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczLCBhcmc0KTsKKyAgICAgICAgbW92ZShhcmcy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFyZzUsIEdQUkluZm86OmFy
Z3VtZW50R1BSNCk7CisgICAgfQorICAgIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50cyhUcnVzdGVkSW1tUHRyIGFyZzEpCiAgICAgewogICAgICAgICBtb3ZlKGFyZzEsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxNTg2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4Myw2ICszODMsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0
dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmU7IH0KICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgfHwgbV9mZWF0dXJlcyAmIChFdmFs
RmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKTsgfQogICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9
CisgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBpc1N0cmljdE1vZGUoKSA/
IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9CiAgICAgICAgIAogICAgIHZvaWQgc2V0TmV2
ZXJJbmxpbmUoYm9vbCB2YWx1ZSkgeyBtX25ldmVySW5saW5lID0gdmFsdWU7IH0KICAgICBib29s
IG5ldmVySW5saW5lKCkgY29uc3QgeyByZXR1cm4gbV9uZXZlcklubGluZTsgfQo=
</data>
<flag name="review"
          id="238935"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>