<?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>129650</bug_id>
          
          <creation_ts>2014-03-03 19:18:35 -0800</creation_ts>
          <short_desc>Merge API shims and JSLock</short_desc>
          <delta_ts>2014-03-04 13:32:39 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>alecflett</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>986642</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-03 19:18:35 -0800</bug_when>
    <thetext>There can be only one!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986869</commentid>
    <comment_count>1</comment_count>
      <attachid>225790</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-04 10:41:47 -0800</bug_when>
    <thetext>Created attachment 225790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986870</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-04 10:42:57 -0800</bug_when>
    <thetext>Attachment 225790 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSLock.cpp:260:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/JSLock.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 33 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>986881</commentid>
    <comment_count>3</comment_count>
      <attachid>225790</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-03-04 11:10:33 -0800</bug_when>
    <thetext>Comment on attachment 225790
Patch

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

Nice.  r=me with minor fix.

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:142
&gt; +    m_entryIdentifierTable = wtfThreadData().setCurrentIdentifierTable(m_vm-&gt;identifierTable);

&quot;wtfThreadData()&quot; ==&gt; &quot;threadData&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986951</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-04 13:32:39 -0800</bug_when>
    <thetext>Committed r165074: &lt;http://trac.webkit.org/changeset/165074&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225790</attachid>
            <date>2014-03-04 10:41:47 -0800</date>
            <delta_ts>2014-03-04 11:10:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129650-20140304103848.patch</filename>
            <type>text/plain</type>
            <size>80542</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1MDYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1NyBA
QAorMjAxNC0wMy0wNCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1lcmdlIEFQSSBzaGltcyBhbmQgSlNMb2NrCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk2NTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKU0xvY2sgaXMgbm93IHRha2luZyBvbiBhbGwg
b2YgQVBJRW50cnlTaGltJ3MgcmVzcG9uc2liaWxpdGllcyBzaW5jZSB0aGVyZSBpcyBuZXZlciBh
IHJlYXNvbiAKKyAgICAgICAgdG8gdGFrZSBqdXN0IHRoZSBKU0xvY2suIERpdHRvIGZvciBEcm9w
QWxsTG9ja3MgYW5kIEFQSUNhbGxiYWNrU2hpbS4KKworICAgICAgICAqIEFQSS9BUElDYWxsYmFj
a0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrRnVuY3Rpb246OmNhbGwpOgor
ICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QpOgorICAgICAgICAq
IEFQSS9BUElTaGltcy5oOiBSZW1vdmVkLgorICAgICAgICAqIEFQSS9KU0Jhc2UuY3BwOgorICAg
ICAgICAoSlNFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChKU0NoZWNrU2NyaXB0U3ludGF4KToK
KyAgICAgICAgKEpTR2FyYmFnZUNvbGxlY3QpOgorICAgICAgICAoSlNSZXBvcnRFeHRyYU1lbW9y
eUNvc3QpOgorICAgICAgICAoSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5n
KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46Omlu
aXQpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y29uc3RydWN0KToKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjdXN0b21IYXNJbnN0YW5jZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbCk6CisgICAgICAgIChK
U0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1
ZSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0
ZXIpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29udGV4dCBz
ZXRFeGNlcHRpb246XSk6CisgICAgICAgICgtW0pTQ29udGV4dCB3cmFwcGVyRm9yT2JqQ09iamVj
dDpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHdyYXBwZXJGb3JKU09iamVjdDpdKToKKyAgICAg
ICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dEdyb3VwUmVsZWFz
ZSk6CisgICAgICAgIChKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdCk6CisgICAg
ICAgIChKU0NvbnRleHRHcm91cENsZWFyRXhlY3V0aW9uVGltZUxpbWl0KToKKyAgICAgICAgKEpT
R2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXApOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0UmV0
YWluKToKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dFJlbGVhc2UpOgorICAgICAgICAoSlNDb250
ZXh0R2V0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQp
OgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0Q29weU5hbWUpOgorICAgICAgICAoSlNHbG9iYWxD
b250ZXh0U2V0TmFtZSk6CisgICAgICAgICogQVBJL0pTTWFuYWdlZFZhbHVlLm1tOgorICAgICAg
ICAoLVtKU01hbmFnZWRWYWx1ZSB2YWx1ZV0pOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5j
cHA6CisgICAgICAgIChKU09iamVjdE1ha2UpOgorICAgICAgICAoSlNPYmplY3RNYWtlRnVuY3Rp
b25XaXRoQ2FsbGJhY2spOgorICAgICAgICAoSlNPYmplY3RNYWtlQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNPYmplY3RNYWtlRnVuY3Rpb24pOgorICAgICAgICAoSlNPYmplY3RNYWtlQXJyYXkp
OgorICAgICAgICAoSlNPYmplY3RNYWtlRGF0ZSk6CisgICAgICAgIChKU09iamVjdE1ha2VFcnJv
cik6CisgICAgICAgIChKU09iamVjdE1ha2VSZWdFeHApOgorICAgICAgICAoSlNPYmplY3RHZXRQ
cm90b3R5cGUpOgorICAgICAgICAoSlNPYmplY3RTZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNP
YmplY3RIYXNQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdEdldFByb3BlcnR5KToKKyAgICAg
ICAgKEpTT2JqZWN0U2V0UHJvcGVydHkpOgorICAgICAgICAoSlNPYmplY3RHZXRQcm9wZXJ0eUF0
SW5kZXgpOgorICAgICAgICAoSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgpOgorICAgICAgICAo
SlNPYmplY3REZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdEdldFByaXZhdGVQcm9w
ZXJ0eSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChK
U09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdElzRnVuY3Rp
b24pOgorICAgICAgICAoSlNPYmplY3RDYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChKU09iamVj
dENhbGxBc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNQcm9wZXJ0eU5hbWVBcnJheVJlbGVhc2UpOgorICAgICAgICAoSlNQcm9w
ZXJ0eU5hbWVBY2N1bXVsYXRvckFkZE5hbWUpOgorICAgICAgICAqIEFQSS9KU1NjcmlwdFJlZi5j
cHA6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChpc0RhdGUpOgorICAgICAg
ICAoaXNBcnJheSk6CisgICAgICAgIChjb250YWluZXJWYWx1ZVRvT2JqZWN0KToKKyAgICAgICAg
KHZhbHVlVG9BcnJheSk6CisgICAgICAgICh2YWx1ZVRvRGljdGlvbmFyeSk6CisgICAgICAgIChv
YmplY3RUb1ZhbHVlKToKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAgIChK
U1ZhbHVlR2V0VHlwZSk6CisgICAgICAgIChKU1ZhbHVlSXNVbmRlZmluZWQpOgorICAgICAgICAo
SlNWYWx1ZUlzTnVsbCk6CisgICAgICAgIChKU1ZhbHVlSXNCb29sZWFuKToKKyAgICAgICAgKEpT
VmFsdWVJc051bWJlcik6CisgICAgICAgIChKU1ZhbHVlSXNTdHJpbmcpOgorICAgICAgICAoSlNW
YWx1ZUlzT2JqZWN0KToKKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9mQ2xhc3MpOgorICAgICAg
ICAoSlNWYWx1ZUlzRXF1YWwpOgorICAgICAgICAoSlNWYWx1ZUlzU3RyaWN0RXF1YWwpOgorICAg
ICAgICAoSlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTVmFsdWVN
YWtlVW5kZWZpbmVkKToKKyAgICAgICAgKEpTVmFsdWVNYWtlTnVsbCk6CisgICAgICAgIChKU1Zh
bHVlTWFrZUJvb2xlYW4pOgorICAgICAgICAoSlNWYWx1ZU1ha2VOdW1iZXIpOgorICAgICAgICAo
SlNWYWx1ZU1ha2VTdHJpbmcpOgorICAgICAgICAoSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyk6
CisgICAgICAgIChKU1ZhbHVlQ3JlYXRlSlNPTlN0cmluZyk6CisgICAgICAgIChKU1ZhbHVlVG9C
b29sZWFuKToKKyAgICAgICAgKEpTVmFsdWVUb051bWJlcik6CisgICAgICAgIChKU1ZhbHVlVG9T
dHJpbmdDb3B5KToKKyAgICAgICAgKEpTVmFsdWVUb09iamVjdCk6CisgICAgICAgIChKU1ZhbHVl
UHJvdGVjdCk6CisgICAgICAgIChKU1ZhbHVlVW5wcm90ZWN0KToKKyAgICAgICAgKiBBUEkvSlNW
aXJ0dWFsTWFjaGluZS5tbToKKyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2Vk
UmVmZXJlbmNlOndpdGhPd25lcjpdKToKKyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSByZW1v
dmVNYW5hZ2VkUmVmZXJlbmNlOndpdGhPd25lcjpdKToKKyAgICAgICAgKiBBUEkvSlNXZWFrT2Jq
ZWN0TWFwUmVmUHJpdmF0ZS5jcHA6CisgICAgICAgICogQVBJL0pTV3JhcHBlck1hcC5tbToKKyAg
ICAgICAgKGNvbnN0cnVjdG9ySGFzSW5zdGFuY2UpOgorICAgICAgICAobWFrZVdyYXBwZXIpOgor
ICAgICAgICAodHJ5VW53cmFwT2JqY09iamVjdCk6CisgICAgICAgICogQVBJL09iakNDYWxsYmFj
a0Z1bmN0aW9uLm1tOgorICAgICAgICAoSlNDOjpvYmpDQ2FsbGJhY2tGdW5jdGlvbkNhbGxBc0Z1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6b2JqQ0NhbGxiYWNrRnVuY3Rpb25DYWxsQXNDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24pOgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL0phdmFT
Y3JpcHRDb3JlL0FQSVNoaW1zLmg6IFJlbW92ZWQuCisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAgICogaGVhcC9EZWxheWVk
UmVsZWFzZVNjb3BlLmg6CisgICAgICAgIChKU0M6OkRlbGF5ZWRSZWxlYXNlU2NvcGU6On5EZWxh
eWVkUmVsZWFzZVNjb3BlKToKKyAgICAgICAgKiBoZWFwL0hlYXBUaW1lci5jcHA6CisgICAgICAg
IChKU0M6OkhlYXBUaW1lcjo6dGltZXJEaWRGaXJlKToKKyAgICAgICAgKEpTQzo6SGVhcFRpbWVy
Ojp0aW1lckV2ZW50KToKKyAgICAgICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKToKKyAgICAgICAg
KiBqc2MuY3BwOgorICAgICAgICAoanNjbWFpbik6CisgICAgICAgICogcnVudGltZS9HQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNr
Ojpkb1dvcmspOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpjb25uZWN0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVt
b3RlRnJvbnRlbmQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNMb2NrOjpsb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkaWRBY3F1aXJlTG9jayk6
CisgICAgICAgIChKU0M6OkpTTG9jazo6dW5sb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjp3
aWxsUmVsZWFzZUxvY2spOgorICAgICAgICAoSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJv
cEFsbExvY2tzKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3M6On5Ecm9wQWxs
TG9ja3MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6CisgICAgICAgICogdGVzdFJlZ0V4
cC5jcHA6CisgICAgICAgIChyZWFsTWFpbik6CisKIDIwMTQtMDMtMDQgIEFuZHJlYXMgS2xpbmcg
IDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIE1pY3JvLW9wdGltaXplIFN0cmluZ3MgaW4g
SlMgYmluZGluZ3MuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxNjUwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTc2OSw3ICs3NjksNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfRk9SV0FS
RElOR19IRUFERVJTX0RJCiAKIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJESU5HX0hFQURFUlNf
RklMRVMKICAgICBBUEkvQVBJQ2FzdC5oCi0gICAgQVBJL0FQSVNoaW1zLmgKICAgICBBUEkvSlNC
YXNlLmgKICAgICBBUEkvSlNDVGVzdFJ1bm5lclV0aWxzLmgKICAgICBBUEkvSlNDb250ZXh0UmVm
LmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZp
c2lvbiAxNjUwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdGlu
c19qc19ub3NvdXJjZXMgKz0gCiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9BUElDYXN0LmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJ
U2hpbXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3Qu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQmFzZVByaXZhdGUuaCBcCkBAIC02MjcsNyArNjI2LDYgQEAgamF2
YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBy
aW1pdGl2ZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL0ph
dmFTY3JpcHRDb3JlL0FQSUNhc3QuaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0FQSVNoaW1zLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0LmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9KU0Jh
c2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3Jp
cHRDb3JlL0pTQ29udGV4dFJlZi5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lv
biAxNjUwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIsNyArMjIsNiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpbmNsdWRlICJB
UElTaGltcy5oIgogI2luY2x1ZGUgIkJ1dHRlcmZseUlubGluZXMuaCIKICNpbmNsdWRlICJCeXRl
Y29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgpAQCAtMTA5Niw3ICsxMDk1
LDcgQEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIFZNKiB2bSA9IFZN
OjpjcmVhdGUoTGFyZ2VIZWFwKS5sZWFrUmVmKCk7CiAgICAgaW50IHJlc3VsdDsKICAgICB7Ci0g
ICAgICAgIEFQSUVudHJ5U2hpbSBzaGltKHZtKTsKKyAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tl
cih2bSk7CiAKICAgICAgICAgaWYgKG9wdGlvbnMubV9wcm9maWxlICYmICF2bS0+bV9wZXJCeXRl
Y29kZVByb2ZpbGVyKQogICAgICAgICAgICAgdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IGFk
b3B0UHRyKG5ldyBQcm9maWxlcjo6RGF0YWJhc2UoKnZtKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RSZWdFeHAuY3BwCShyZXZpc2lvbiAxNjUwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdFJlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZWdFeHAuaCIKIAotI2luY2x1ZGUgIkFQSVNo
aW1zLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSAiSW5pdGlhbGl6
ZVRocmVhZGluZy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTQ5MCw3ICs0ODksNyBA
QCBzdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhCiBpbnQgcmVhbE1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewogICAgIFZNKiB2bSA9IFZNOjpjcmVhdGUoTGFyZ2VI
ZWFwKS5sZWFrUmVmKCk7Ci0gICAgQVBJRW50cnlTaGltIHNoaW0odm0pOworICAgIEpTTG9ja0hv
bGRlciBsb2NrZXIodm0pOwogCiAgICAgQ29tbWFuZExpbmUgb3B0aW9uczsKICAgICBwYXJzZUFy
Z3VtZW50cyhhcmdjLCBhcmd2LCBvcHRpb25zKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAxNjUwNTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsOSArMjcsOSBAQAogI2RlZmluZSBBUElDYWxsYmFja0Z1bmN0aW9uX2gKIAog
I2luY2x1ZGUgIkFQSUNhc3QuaCIKLSNpbmNsdWRlICJBUElTaGltcy5oIgogI2luY2x1ZGUgIkVy
cm9yLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNM
b2NrLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU3
LDcgKzU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFjawogICAg
IEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICBKU1ZhbHVlUmVmIHJlc3VsdDsKICAgICB7
Ci0gICAgICAgIEFQSUNhbGxiYWNrU2hpbSBjYWxsYmFja1NoaW0oZXhlYyk7CisgICAgICAgIEpT
TG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKICAgICAgICAgcmVzdWx0ID0g
anNDYXN0PFQqPih0b0pTKGZ1bmN0aW9uUmVmKSktPmZ1bmN0aW9uQ2FsbGJhY2soKShleGVjUmVm
LCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLmRhdGEo
KSwgJmV4Y2VwdGlvbik7CiAgICAgfQogICAgIGlmIChleGNlcHRpb24pCkBAIC04OCw3ICs4OCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2sKICAgICAgICAgSlNW
YWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICBKU09iamVjdFJlZiByZXN1bHQ7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFQSUNhbGxiYWNrU2hpbSBjYWxsYmFja1NoaW0oZXhlYyk7Cisg
ICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7CiAgICAg
ICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhjdHgsIGNvbnN0cnVjdG9yUmVmLCBhcmd1bWVudENv
dW50LCBhcmd1bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoZXhjZXB0aW9uKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSVNoaW1z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElTaGltcy5oCShy
ZXZpc2lvbiAxNjUwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSVNoaW1zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTIwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEFQSVNo
aW1zX2gKLSNkZWZpbmUgQVBJU2hpbXNfaAotCi0jaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0jaW5j
bHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVy
LmgiCi0jaW5jbHVkZSAiSlNMb2NrLmgiCi0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4K
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrIHsKLXBy
b3RlY3RlZDoKLSAgICBBUElFbnRyeVNoaW1XaXRob3V0TG9jayhWTSogdm0sIGJvb2wgcmVnaXN0
ZXJUaHJlYWQpCi0gICAgICAgIDogbV92bSh2bSkKLSAgICAgICAgLCBtX2VudHJ5SWRlbnRpZmll
clRhYmxlKHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKHZtLT5pZGVu
dGlmaWVyVGFibGUpKQotICAgIHsKLSAgICAgICAgaWYgKHJlZ2lzdGVyVGhyZWFkKQotICAgICAg
ICAgICAgdm0tPmhlYXAubWFjaGluZVRocmVhZHMoKS5hZGRDdXJyZW50VGhyZWFkKCk7Ci0gICAg
fQotCi0gICAgfkFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrKCkKLSAgICB7Ci0gICAgICAgIHd0ZlRo
cmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKG1fZW50cnlJZGVudGlmaWVyVGFi
bGUpOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIFJlZlB0cjxWTT4gbV92bTsKLSAgICBJZGVu
dGlmaWVyVGFibGUqIG1fZW50cnlJZGVudGlmaWVyVGFibGU7Ci19OwotCi1jbGFzcyBBUElFbnRy
eVNoaW0gOiBwdWJsaWMgQVBJRW50cnlTaGltV2l0aG91dExvY2sgewotcHVibGljOgotICAgIEFQ
SUVudHJ5U2hpbShFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgcmVnaXN0ZXJUaHJlYWQgPSB0cnVlKQot
ICAgICAgICA6IEFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrKCZleGVjLT52bSgpLCByZWdpc3RlclRo
cmVhZCkKLSAgICAgICAgLCBtX2xvY2tIb2xkZXIoJmV4ZWMtPnZtKCkpCi0gICAgewotICAgIH0K
LQotICAgIEFQSUVudHJ5U2hpbShWTSogdm0sIGJvb2wgcmVnaXN0ZXJUaHJlYWQgPSB0cnVlKQot
ICAgICAgICA6IEFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrKHZtLCByZWdpc3RlclRocmVhZCkKLSAg
ICAgICAgLCBtX2xvY2tIb2xkZXIodm0pCi0gICAgewotICAgIH0KLQotICAgIH5BUElFbnRyeVNo
aW0oKQotICAgIHsKLSAgICAgICAgLy8gRGVzdHJveWluZyBvdXIgSlNMb2NrSG9sZGVyIHNob3Vs
ZCBhbHNvIGRlc3Ryb3kgdGhlIFZNLgotICAgICAgICBtX3ZtLmNsZWFyKCk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIEpTTG9ja0hvbGRlciBtX2xvY2tIb2xkZXI7Ci19OwotCi1jbGFzcyBBUElD
YWxsYmFja1NoaW0gewotcHVibGljOgotICAgIEFQSUNhbGxiYWNrU2hpbShFeGVjU3RhdGUqIGV4
ZWMpCi0gICAgICAgIDogbV9kcm9wQWxsTG9ja3Moc2hvdWxkRHJvcEFsbExvY2tzKGV4ZWMtPnZt
KCkpID8gZXhlYyA6IG51bGxwdHIpCi0gICAgICAgICwgbV92bSgmZXhlYy0+dm0oKSkKLSAgICB7
Ci0gICAgICAgIHd0ZlRocmVhZERhdGEoKS5yZXNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoKTsK
LSAgICB9Ci0KLSAgICBBUElDYWxsYmFja1NoaW0oVk0mIHZtKQotICAgICAgICA6IG1fZHJvcEFs
bExvY2tzKHNob3VsZERyb3BBbGxMb2Nrcyh2bSkgPyAmdm0gOiBudWxscHRyKQotICAgICAgICAs
IG1fdm0oJnZtKQotICAgIHsKLSAgICAgICAgd3RmVGhyZWFkRGF0YSgpLnJlc2V0Q3VycmVudElk
ZW50aWZpZXJUYWJsZSgpOwotICAgIH0KLQotICAgIH5BUElDYWxsYmFja1NoaW0oKQotICAgIHsK
LSAgICAgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUobV92bS0+
aWRlbnRpZmllclRhYmxlKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGJvb2wgc2hv
dWxkRHJvcEFsbExvY2tzKFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIC8vIElmIHRoZSBWTSBpcyBp
biB0aGUgbWlkZGxlIG9mIGJlaW5nIGRlc3Ryb3llZCB0aGVuIHdlIGRvbid0IHdhbnQgdG8gcmVz
dXJyZWN0IGl0Ci0gICAgICAgIC8vIGJ5IGFsbG93aW5nIERyb3BBbGxMb2NrcyB0byByZWYgaXQu
IEJ5IHRoaXMgcG9pbnQgdGhlIEFQSUxvY2sgaGFzIGFscmVhZHkgYmVlbiAKLSAgICAgICAgLy8g
cmVsZWFzZWQgYW55d2F5cywgc28gaXQgZG9lc24ndCBtYXR0ZXIgdGhhdCBEcm9wQWxsTG9ja3Mg
aXMgYSBuby1vcC4KLSAgICAgICAgaWYgKCF2bS5yZWZDb3VudCgpKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIEpTTG9jazo6
RHJvcEFsbExvY2tzIG1fZHJvcEFsbExvY2tzOwotICAgIFZNKiBtX3ZtOwotfTsKLQotfQotCi0j
ZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHJldmlzaW9uIDE2
NTA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkpTQmFzZVByaXZhdGUuaCIKIAogI2lu
Y2x1ZGUgIkFQSUNhc3QuaCIKLSNpbmNsdWRlICJBUElTaGltcy5oIgogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJJbml0aWFsaXplVGhy
ZWFkaW5nLmgiCkBAIC01Myw3ICs1Miw3IEBAIEpTVmFsdWVSZWYgSlNFdmFsdWF0ZVNjcmlwdChK
U0NvbnRleHRSZWYKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpT
TG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICBKU09iamVjdCoganNUaGlzT2JqZWN0ID0g
dG9KUyh0aGlzT2JqZWN0KTsKIApAQCAtOTQsNyArOTMsNyBAQCBib29sIEpTQ2hlY2tTY3JpcHRT
eW50YXgoSlNDb250ZXh0UmVmIGN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0o
ZXhlYyk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAogICAgIHN0YXJ0aW5nTGlu
ZU51bWJlciA9IHN0ZDo6bWF4KDEsIHN0YXJ0aW5nTGluZU51bWJlcik7CiAKQEAgLTEyNiw3ICsx
MjUsNyBAQCB2b2lkIEpTR2FyYmFnZUNvbGxlY3QoSlNDb250ZXh0UmVmIGN0eCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEFQSUVudHJ5
U2hpbSBlbnRyeVNoaW0oZXhlYywgZmFsc2UpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhl
Yyk7CiAKICAgICBleGVjLT52bSgpLmhlYXAucmVwb3J0QWJhbmRvbmVkT2JqZWN0R3JhcGgoKTsK
IH0KQEAgLTEzOCw3ICsxMzcsNyBAQCB2b2lkIEpTUmVwb3J0RXh0cmFNZW1vcnlDb3N0KEpTQ29u
dGV4dFJlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9K
UyhjdHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNMb2NrSG9s
ZGVyIGxvY2tlcihleGVjKTsKICAgICBleGVjLT52bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlD
b3N0KHNpemUpOwogfQogCkBAIC0xNTAsNyArMTQ5LDcgQEAgdm9pZCBKU1N5bmNocm9ub3VzR2Fy
YmFnZUNvbGxlY3RGb3JEZWJ1ZwogICAgICAgICByZXR1cm47CiAKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBK
U0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogICAgIGV4ZWMtPnZtKCkuaGVhcC5jb2xsZWN0QWxs
R2FyYmFnZSgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNjUwNTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkFQSUNhbGxiYWNrRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJBUElDYXN0LmgiCi0jaW5jbHVkZSAiQVBJU2hpbXMuaCIKICNpbmNsdWRlICJF
cnJvci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgi
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rp
b24uY3BwCShyZXZpc2lvbiAxNjUwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAog
I2luY2x1ZGUgIkFQSUNhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJBUElDYXN0LmgiCi0j
aW5jbHVkZSAiQVBJU2hpbXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJF
cnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCShy
ZXZpc2lvbiAxNjUwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCiAgKi8KIAotI2luY2x1ZGUgIkFQSVNoaW1zLmgiCiAjaW5jbHVkZSAiQVBJQ2Fz
dC5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpA
QCAtMTA0LDcgKzEwMyw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojppbml0KEV4
ZWMKICAgICAKICAgICAvLyBpbml0aWFsaXplIGZyb20gYmFzZSB0byBkZXJpdmVkCiAgICAgZm9y
IChpbnQgaSA9IHN0YXRpY19jYXN0PGludD4oaW5pdFJvdXRpbmVzLnNpemUoKSkgLSAxOyBpID49
IDA7IGktLSkgewotICAgICAgICBBUElDYWxsYmFja1NoaW0gY2FsbGJhY2tTaGltKGV4ZWMpOwor
ICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7CiAgICAgICAg
IEpTT2JqZWN0SW5pdGlhbGl6ZUNhbGxiYWNrIGluaXRpYWxpemUgPSBpbml0Um91dGluZXNbaV07
CiAgICAgICAgIGluaXRpYWxpemUodG9SZWYoZXhlYyksIHRvUmVmKHRoaXMpKTsKICAgICB9CkBA
IC0xNDIsNyArMTQxLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBy
bwogICAgICAgICAgICAgaWYgKEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjayBoYXNQcm9wZXJ0
eSA9IGpzQ2xhc3MtPmhhc1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0
eU5hbWVSZWYpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUobmFtZSk7Ci0gICAgICAgICAgICAgICAgQVBJQ2FsbGJhY2tTaGltIGNh
bGxiYWNrU2hpbShleGVjKTsKKyAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBk
cm9wQWxsTG9ja3MoZXhlYyk7CiAgICAgICAgICAgICAgICAgaWYgKGhhc1Byb3BlcnR5KGN0eCwg
dGhpc1JlZiwgcHJvcGVydHlOYW1lUmVmLmdldCgpKSkgewogICAgICAgICAgICAgICAgICAgICBz
bG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnRFbnVtLCBjYWxsYmFja0dl
dHRlcik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTUzLDcgKzE1Miw3
IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8KICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
ZiB2YWx1ZTsKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEFQSUNhbGxi
YWNrU2hpbSBjYWxsYmFja1NoaW0oZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIEpTTG9jazo6
RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKICAgICAgICAgICAgICAgICAgICAgdmFs
dWUgPSBnZXRQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSwgJmV4
Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChleGNlcHRp
b24pIHsKQEAgLTIzNiw3ICsyMzUsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
cHV0KEpTQ2VsCiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAg
ICAgICAgICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgQVBJQ2FsbGJhY2tTaGltIGNhbGxiYWNrU2hpbShleGVjKTsKKyAgICAgICAgICAg
ICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMpOwogICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgPSBzZXRQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5
TmFtZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQpAQCAtMjUzLDcgKzI1Miw3IEBAIHZvaWQg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWwKICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgcmVzdWx0OwogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFQSUNhbGxiYWNrU2hpbSBjYWxsYmFja1NoaW0oZXhlYyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGV4ZWMp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNldFByb3BlcnR5KGN0eCwg
dGhpc1JlZiwgZW50cnktPnByb3BlcnR5TmFtZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRp
b24pOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGV4Y2VwdGlvbikKQEAgLTI5NSw3ICsyOTQsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6cHV0QnlJbmRlCiAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7
CiAgICAgICAgICAgICBib29sIHJlc3VsdDsKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBBUElDYWxsYmFja1NoaW0gY2FsbGJhY2tTaGltKGV4ZWMpOworICAgICAgICAgICAgICAgIEpT
TG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBzZXRQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSwg
dmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKQEAgLTMxMiw3ICszMTEsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6cHV0QnlJbmRlCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0g
MDsKICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFQSUNhbGxiYWNrU2hpbSBjYWxsYmFja1NoaW0o
ZXhlYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9w
QWxsTG9ja3MoZXhlYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZXRQcm9w
ZXJ0eShjdHgsIHRoaXNSZWYsIGVudHJ5LT5wcm9wZXJ0eU5hbWVSZWYuZ2V0KCksIHZhbHVlUmVm
LCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICBpZiAoZXhjZXB0aW9uKQpAQCAtMzUxLDcgKzM1MCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm8KICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlv
biA9IDA7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQ7CiAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBBUElDYWxsYmFja1NoaW0gY2FsbGJhY2tTaGltKGV4ZWMpOwor
ICAgICAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhl
Yyk7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRlbGV0ZVByb3BlcnR5KGN0eCwgdGhp
c1JlZiwgcHJvcGVydHlOYW1lUmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKQEAgLTQxOCw3ICs0MTcsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAgICAgICAgICBKU1Zh
bHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBKU09iamVjdCogcmVzdWx0OwogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIEFQSUNhbGxiYWNrU2hpbSBjYWxsYmFja1NoaW0o
ZXhlYyk7CisgICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tz
KGV4ZWMpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoY2FsbEFzQ29uc3RydWN0b3Io
ZXhlY1JlZiwgY29uc3RydWN0b3JSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCks
ICZleGNlcHRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24p
CkBAIC00NDQsNyArNDQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmN1c3Rv
bUhhcwogICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAg
Ym9vbCByZXN1bHQ7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVBJQ2FsbGJhY2tT
aGltIGNhbGxiYWNrU2hpbShleGVjKTsKKyAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxM
b2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gaGFzSW5z
dGFuY2UoZXhlY1JlZiwgdGhpc1JlZiwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKQEAgLTQ4NSw3ICs0ODQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAgICAgICAgICBKU1ZhbHVl
UmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBBUElDYWxsYmFja1NoaW0gY2FsbGJhY2tTaGltKGV4ZWMp
OworICAgICAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVj
KTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhbGxBc0Z1bmN0aW9uKGV4
ZWNSZWYsIGZ1bmN0aW9uUmVmLCB0aGlzT2JqUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMu
ZGF0YSgpLCAmZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZXhj
ZXB0aW9uKQpAQCAtNTA3LDcgKzUwNiw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpnZXRPd25Ob24KICAgICAKICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmpl
Y3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykg
ewogICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0eU5hbWVzQ2FsbGJhY2sgZ2V0UHJvcGVy
dHlOYW1lcyA9IGpzQ2xhc3MtPmdldFByb3BlcnR5TmFtZXMpIHsKLSAgICAgICAgICAgIEFQSUNh
bGxiYWNrU2hpbSBjYWxsYmFja1NoaW0oZXhlYyk7CisgICAgICAgICAgICBKU0xvY2s6OkRyb3BB
bGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7CiAgICAgICAgICAgICBnZXRQcm9wZXJ0eU5hbWVz
KGV4ZWNSZWYsIHRoaXNSZWYsIHRvUmVmKCZwcm9wZXJ0eU5hbWVzKSk7CiAgICAgICAgIH0KICAg
ICAgICAgCkBAIC01NzIsNyArNTcxLDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OmdldFN0YQogICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24g
PSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUElDYWxsYmFj
a1NoaW0gY2FsbGJhY2tTaGltKGV4ZWMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpT
TG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhleGVjKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IGdldFByb3BlcnR5KHRvUmVmKGV4ZWMpLCB0aGlzUmVmLCBlbnRy
eS0+cHJvcGVydHlOYW1lUmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pIHsKQEAgLTYz
NCw3ICs2MzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBBUElDYWxsYmFja1NoaW0gY2FsbGJhY2tTaGltKGV4ZWMpOworICAgICAgICAgICAgICAgICAg
ICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZXhlYyk7CiAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gZ2V0UHJvcGVydHkodG9SZWYoZXhlYyksIHRoaXNSZWYsIHByb3BlcnR5
TmFtZVJlZi5nZXQoKSwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGlmIChleGNlcHRpb24pIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0Lm1tCShyZXZpc2lvbiAxNjUwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCiAjaW1wb3J0ICJBUElDYXN0LmgiCi0jaW1wb3J0ICJBUElTaGltcy5oIgog
I2ltcG9ydCAiSlNDb250ZXh0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW1wb3J0ICJKU1ZhbHVlSW50ZXJuYWwuaCIKQEAgLTEwMyw3ICsxMDIsNyBAQCAtIChKU1Zh
bHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopCiAKIC0gKHZvaWQpc2V0RXhjZXB0aW9u
OihKU1ZhbHVlICopdmFsdWUKIHsKLSAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9K
UyhtX2NvbnRleHQpKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9KUyhtX2NvbnRl
eHQpKTsKICAgICBpZiAodmFsdWUpCiAgICAgICAgIG1fZXhjZXB0aW9uLnNldCh0b0pTKG1fY29u
dGV4dCktPnZtKCksIHRvSlMoSlNWYWx1ZVRvT2JqZWN0KG1fY29udGV4dCwgdmFsdWVJbnRlcm5h
bFZhbHVlKHZhbHVlKSwgMCkpKTsKICAgICBlbHNlCkBAIC0yNzEsMTMgKzI3MCwxMyBAQCAtICh2
b2lkKWVuZENhbGxiYWNrV2l0aERhdGE6KENhbGxiYWNrRGF0CiAKIC0gKEpTVmFsdWUgKil3cmFw
cGVyRm9yT2JqQ09iamVjdDooaWQpb2JqZWN0CiB7Ci0gICAgSlNDOjpBUElFbnRyeVNoaW0gZW50
cnlTaGltKHRvSlMobV9jb250ZXh0KSk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHRv
SlMobV9jb250ZXh0KSk7CiAgICAgcmV0dXJuIFttX3dyYXBwZXJNYXAganNXcmFwcGVyRm9yT2Jq
ZWN0Om9iamVjdF07CiB9CiAKIC0gKEpTVmFsdWUgKil3cmFwcGVyRm9ySlNPYmplY3Q6KEpTVmFs
dWVSZWYpdmFsdWUKIHsKLSAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhtX2Nv
bnRleHQpKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9KUyhtX2NvbnRleHQpKTsK
ICAgICByZXR1cm4gW21fd3JhcHBlck1hcCBvYmpjV3JhcHBlckZvckpTVmFsdWVSZWY6dmFsdWVd
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
CShyZXZpc2lvbiAxNjUwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBKU0NvbnRleHRH
cm91cFJlbGVhc2UoSlNDb250ZXh0R3JvdQogewogICAgIFZNJiB2bSA9ICp0b0pTKGdyb3VwKTsK
IAotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oJnZtKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9j
a2VyKCZ2bSk7CiAgICAgdm0uZGVyZWYoKTsKIH0KIApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMg
Ym9vbCBpbnRlcm5hbFNjcmlwdFRpbWVvdXRDYWxsYmFjCiB2b2lkIEpTQ29udGV4dEdyb3VwU2V0
RXhlY3V0aW9uVGltZUxpbWl0KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBkb3VibGUgbGltaXQs
IEpTU2hvdWxkVGVybWluYXRlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrRGF0YSkK
IHsKICAgICBWTSYgdm0gPSAqdG9KUyhncm91cCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hp
bSgmdm0pOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoJnZtKTsKICAgICBXYXRjaGRvZyYgd2F0
Y2hkb2cgPSB2bS53YXRjaGRvZzsKICAgICBpZiAoY2FsbGJhY2spIHsKICAgICAgICAgdm9pZCog
Y2FsbGJhY2tQdHIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsYmFjayk7CkBAIC05Niw3
ICs5Niw3IEBAIHZvaWQgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQKIHZvaWQg
SlNDb250ZXh0R3JvdXBDbGVhckV4ZWN1dGlvblRpbWVMaW1pdChKU0NvbnRleHRHcm91cFJlZiBn
cm91cCkKIHsKICAgICBWTSYgdm0gPSAqdG9KUyhncm91cCk7Ci0gICAgQVBJRW50cnlTaGltIGVu
dHJ5U2hpbSgmdm0pOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoJnZtKTsKICAgICBXYXRjaGRv
ZyYgd2F0Y2hkb2cgPSB2bS53YXRjaGRvZzsKICAgICB3YXRjaGRvZy5zZXRUaW1lTGltaXQodm0s
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSk7CiB9CkBAIC0xMjQsNyAr
MTI0LDcgQEAgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZQogCiAgICAg
UmVmUHRyPFZNPiB2bSA9IGdyb3VwID8gUGFzc1JlZlB0cjxWTT4odG9KUyhncm91cCkpIDogVk06
OmNyZWF0ZUNvbnRleHRHcm91cCgpOwogCi0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbSh2bS5n
ZXQoKSwgZmFsc2UpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0uZ2V0KCkpOwogICAgIHZt
LT5tYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOwogCiAgICAgaWYgKCFnbG9iYWxPYmpl
Y3RDbGFzcykgewpAQCAtMTQ1LDcgKzE0NSw3IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2Jh
bENvbnRleHRDcmVhdGUKIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRSZXRhaW4o
SlNHbG9iYWxDb250ZXh0UmVmIGN0eCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIg
bG9ja2VyKGV4ZWMpOwogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBnY1Byb3RlY3Qo
ZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKTsKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEpT
R2xvYmFsQ29udGV4dFJlbGVhc2UoSlNHbG9iYWxDb250CiAgICAgSWRlbnRpZmllclRhYmxlKiBz
YXZlZElkZW50aWZpZXJUYWJsZTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CiAg
ICAgewotICAgICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgICAgICBKU0xv
Y2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgICAgIHNhdmVkSWRlbnRpZmllclRhYmxlID0gd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJ
ZGVudGlmaWVyVGFibGUodm0uaWRlbnRpZmllclRhYmxlKTsKQEAgLTE3OSw3ICsxNzksNyBAQCBK
U09iamVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoSlNDCiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlT
aGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAg
ICAgcmV0dXJuIHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+bWV0aG9kVGFibGUoKS0+dG9UaGlzKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
ZXhlYywgTm90U3RyaWN0TW9kZSkpKTsKIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCBKU0dsb2JhbENv
bnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFsQ29uCiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5
U2hpbShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgcmV0dXJu
IHRvR2xvYmFsUmVmKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKTsK
IH0KQEAgLTIxNCw3ICsyMTQsNyBAQCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRDb3B5TmFt
ZShKU0dsCiAgICAgfQogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEFQ
SUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVj
KTsKIAogICAgIFN0cmluZyBuYW1lID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5uYW1l
KCk7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBKU0ds
b2JhbENvbnRleHRTZXROYW1lKEpTR2xvYmFsQ29udAogICAgIH0KIAogICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAg
IEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICBleGVjLT52bUVudHJ5R2xvYmFsT2Jq
ZWN0KCktPnNldE5hbWUobmFtZSA/IG5hbWUtPnN0cmluZygpIDogU3RyaW5nKCkpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCShyZXZpc2lv
biAxNjUwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKIAogI2ltcG9ydCAiQVBJQ2FzdC5oIgotI2ltcG9ydCAiQVBJU2hpbXMuaCIKICNpbXBvcnQg
IkhlYXAuaCIKICNpbXBvcnQgIkpTQ29udGV4dEludGVybmFsLmgiCiAjaW1wb3J0ICJKU1ZhbHVl
SW50ZXJuYWwuaCIKQEAgLTI2Niw3ICsyNjUsNyBAQCAtIChKU1ZhbHVlICopdmFsdWUKICAgICBp
ZiAoIW1fbG9jay0+dm0oKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEpTQzo6QVBJRW50
cnlTaGltIHNoaW0obV9sb2NrLT52bSgpKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBhcGlMb2Nr
ZXIobV9sb2NrLT52bSgpKTsKICAgICBpZiAoIW1fZ2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1
cm4gbmlsOwogICAgIGlmIChtX3dlYWtWYWx1ZS5pc0NsZWFyKCkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkocmV2aXNpb24gMTY1MDUzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDcgKzg5LDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlKEpTQ29udGV4dFJlZiBjdAog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgp
OwotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNMb2NrSG9sZGVyIGxv
Y2tlcihleGVjKTsKIAogICAgIGlmICghanNDbGFzcykKICAgICAgICAgcmV0dXJuIHRvUmVmKGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBKU09iamVjdFJl
ZiBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsCiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5
U2hpbShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogICAgIHJldHVybiB0
b1JlZihKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lID8gbmFtZS0+c3RyaW5nKCkgOiBB
U0NJSUxpdGVyYWwoImFub255bW91cyIpKSk7CiB9CiAKQEAgLTExOSw3ICsxMTksNyBAQCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VDb25zdHJ1Y3RvcihKU0NvCiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGlt
IGVudHJ5U2hpbShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAg
SlNWYWx1ZSBqc1Byb3RvdHlwZSA9IGpzQ2xhc3MgPyBqc0NsYXNzLT5wcm90b3R5cGUoZXhlYykg
OiAwOwogICAgIGlmICghanNQcm90b3R5cGUpCkBAIC0xMzcsNyArMTM3LDcgQEAgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlRnVuY3Rpb24oSlNDb250ZQogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRy
eVNoaW0oZXhlYyk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAogICAgIHN0YXJ0
aW5nTGluZU51bWJlciA9IHN0ZDo6bWF4KDEsIHN0YXJ0aW5nTGluZU51bWJlcik7CiAgICAgSWRl
bnRpZmllciBuYW1lSUQgPSBuYW1lID8gbmFtZS0+aWRlbnRpZmllcigmZXhlYy0+dm0oKSkgOiBJ
ZGVudGlmaWVyKGV4ZWMsICJhbm9ueW1vdXMiKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBKU09iamVj
dFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRSCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGltIGVu
dHJ5U2hpbShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgSlNP
YmplY3QqIHJlc3VsdDsKICAgICBpZiAoYXJndW1lbnRDb3VudCkgewpAQCAtMjAxLDcgKzIwMSw3
IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250ZXh0UmUKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBBUElF
bnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7
CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQpAQCAtMjI5LDcgKzIyOSw3IEBAIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZUVycm9yKEpTQ29udGV4dFIKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRyeVNoaW0gZW50
cnlTaGltKGV4ZWMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICBKU1Zh
bHVlIG1lc3NhZ2UgPSBhcmd1bWVudENvdW50ID8gdG9KUyhleGVjLCBhcmd1bWVudHNbMF0pIDog
anNVbmRlZmluZWQoKTsKICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5lcnJvclN0cnVjdHVyZSgpOwpAQCAtMjU2LDcgKzI1Niw3IEBA
IEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVJlZ0V4cChKU0NvbnRleHQKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRy
eVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQpAQCAtMjg0LDcgKzI4NCw3IEBAIEpTVmFsdWVSZWYg
SlNPYmplY3RHZXRQcm90b3R5cGUoSlNDb250ZXgKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlT
aGltKGV4ZWMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICBKU09iamVj
dCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzT2Jq
ZWN0LT5wcm90b3R5cGUoKSk7CkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBKU09iamVjdFNldFBy
b3RvdHlwZShKU0NvbnRleHRSZWYgYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMp
OworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICBKU09iamVjdCoganNPYmpl
Y3QgPSB0b0pTKG9iamVjdCk7CiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1
ZSk7CkBAIC0zMTIsNyArMzEyLDcgQEAgYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5KEpTQ29udGV4
dFJlZiBjdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpT
TG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pT
KG9iamVjdCk7CiAgICAgCkBAIC0zMjYsNyArMzI2LDcgQEAgSlNWYWx1ZVJlZiBKU09iamVjdEdl
dFByb3BlcnR5KEpTQ29udGV4dAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7
CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAogICAgIEpTT2JqZWN0KiBqc09iamVj
dCA9IHRvSlMob2JqZWN0KTsKIApAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgSlNPYmplY3RTZXRQ
cm9wZXJ0eShKU0NvbnRleHRSZWYgY3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVj
KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIGpzT2Jq
ZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIElkZW50aWZpZXIgbmFtZShwcm9wZXJ0eU5hbWUtPmlk
ZW50aWZpZXIoJmV4ZWMtPnZtKCkpKTsKQEAgLTM4Miw3ICszODIsNyBAQCBKU1ZhbHVlUmVmIEpT
T2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KEpTCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hp
bShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgSlNPYmplY3Qq
IGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogCkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBKU09i
amVjdFNldFByb3BlcnR5QXRJbmRleChKU0NvbnRleAogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlT
aGltKGV4ZWMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICBKU09iamVj
dCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhl
eGVjLCB2YWx1ZSk7CkBAIC00MzEsNyArNDMxLDcgQEAgYm9vbCBKU09iamVjdERlbGV0ZVByb3Bl
cnR5KEpTQ29udGV4dFJlZgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMp
OworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICBKU09iamVjdCoganNPYmpl
Y3QgPSB0b0pTKG9iamVjdCk7CiAKQEAgLTQ4OSw3ICs0ODksNyBAQCBib29sIEpTT2JqZWN0U2V0
UHJpdmF0ZShKU09iamVjdFJlZiBvYmplCiBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJpdmF0ZVBy
b3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYg
cHJvcGVydHlOYW1lKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBB
UElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhl
Yyk7CiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTVmFsdWUg
cmVzdWx0OwogICAgIElkZW50aWZpZXIgbmFtZShwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJmV4
ZWMtPnZtKCkpKTsKQEAgLTUwNyw3ICs1MDcsNyBAQCBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJp
dmF0ZVByb3BlcnR5KEpTCiBib29sIEpTT2JqZWN0U2V0UHJpdmF0ZVByb3BlcnR5KEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlUmVmIHZhbHVlKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAg
ICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIo
ZXhlYyk7CiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTVmFs
dWUganNWYWx1ZSA9IHZhbHVlID8gdG9KUyhleGVjLCB2YWx1ZSkgOiBKU1ZhbHVlKCk7CiAgICAg
SWRlbnRpZmllciBuYW1lKHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmZXhlYy0+dm0oKSkpOwpA
QCAtNTMxLDcgKzUzMSw3IEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlUHJvcGVydHkoSlNDb250
ZXgKIGJvb2wgSlNPYmplY3REZWxldGVQcml2YXRlUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgRXhl
Y1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhl
Yyk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKICAgICBKU09iamVjdCoganNPYmpl
Y3QgPSB0b0pTKG9iamVjdCk7CiAgICAgSWRlbnRpZmllciBuYW1lKHByb3BlcnR5TmFtZS0+aWRl
bnRpZmllcigmZXhlYy0+dm0oKSkpOwogICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoSlNDYWxs
YmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmluZm8oKSkpIHsKQEAgLTU1NSw3ICs1NTUsNyBA
QCBib29sIEpTT2JqZWN0SXNGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4CiB7CiAgICAgaWYgKCFv
YmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGlt
KHRvSlMoY3R4KSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKGN0eCkpOwogICAgIENh
bGxEYXRhIGNhbGxEYXRhOwogICAgIEpTQ2VsbCogY2VsbCA9IHRvSlMob2JqZWN0KTsKICAgICBy
ZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoY2VsbCwgY2FsbERhdGEpICE9
IENhbGxUeXBlTm9uZTsKQEAgLTU2NCw3ICs1NjQsNyBAQCBib29sIEpTT2JqZWN0SXNGdW5jdGlv
bihKU0NvbnRleHRSZWYgY3R4CiBKU1ZhbHVlUmVmIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsK
LSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpTTG9ja0hvbGRlciBsb2Nr
ZXIoZXhlYyk7CiAKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC02MTAs
NyArNjEwLDcgQEAgYm9vbCBKU09iamVjdElzQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmLAogSlNP
YmplY3RSZWYgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiBvYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRlKiBleGVj
ID0gdG9KUyhjdHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNM
b2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1
cm4gMDsKQEAgLTY2MCw3ICs2NjAsNyBAQCBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIEpTT2JqZWN0
Q29weVByb3BlCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBKU0xv
Y2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAKQEAg
LTY4Niw3ICs2ODYsNyBAQCBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIEpTUHJvcGVydHlOYW1lQXJy
CiB2b2lkIEpTUHJvcGVydHlOYW1lQXJyYXlSZWxlYXNlKEpTUHJvcGVydHlOYW1lQXJyYXlSZWYg
YXJyYXkpCiB7CiAgICAgaWYgKC0tYXJyYXktPnJlZkNvdW50ID09IDApIHsKLSAgICAgICAgQVBJ
RW50cnlTaGltIGVudHJ5U2hpbShhcnJheS0+dm0sIGZhbHNlKTsKKyAgICAgICAgSlNMb2NrSG9s
ZGVyIGxvY2tlcihhcnJheS0+dm0pOwogICAgICAgICBkZWxldGUgYXJyYXk7CiAgICAgfQogfQpA
QCAtNzA0LDYgKzcwNCw2IEBAIEpTU3RyaW5nUmVmIEpTUHJvcGVydHlOYW1lQXJyYXlHZXROYW1l
QXQKIHZvaWQgSlNQcm9wZXJ0eU5hbWVBY2N1bXVsYXRvckFkZE5hbWUoSlNQcm9wZXJ0eU5hbWVB
Y2N1bXVsYXRvclJlZiBhcnJheSwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lKQogewogICAgIFBy
b3BlcnR5TmFtZUFycmF5KiBwcm9wZXJ0eU5hbWVzID0gdG9KUyhhcnJheSk7Ci0gICAgQVBJRW50
cnlTaGltIGVudHJ5U2hpbShwcm9wZXJ0eU5hbWVzLT52bSgpKTsKKyAgICBKU0xvY2tIb2xkZXIg
bG9ja2VyKHByb3BlcnR5TmFtZXMtPnZtKCkpOwogICAgIHByb3BlcnR5TmFtZXMtPmFkZChwcm9w
ZXJ0eU5hbWUtPmlkZW50aWZpZXIocHJvcGVydHlOYW1lcy0+dm0oKSkpOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAJKHJldmlzaW9uIDE2NTA1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJB
UElDYXN0LmgiCi0jaW5jbHVkZSAiQVBJU2hpbXMuaCIKICNpbmNsdWRlICJDb21wbGV0aW9uLmgi
CiAjaW5jbHVkZSAiSlNCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlZNLmgiCkBAIC03Nyw3ICs3
Niw3IEBAIGV4dGVybiAiQyIgewogSlNTY3JpcHRSZWYgSlNTY3JpcHRDcmVhdGVSZWZlcmVuY2lu
Z0ltbW9ydGFsQVNDSUlUZXh0KEpTQ29udGV4dEdyb3VwUmVmIGNvbnRleHRHcm91cCwgSlNTdHJp
bmdSZWYgdXJsLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25zdCBjaGFyKiBzb3VyY2UsIHNp
emVfdCBsZW5ndGgsIEpTU3RyaW5nUmVmKiBlcnJvck1lc3NhZ2UsIGludCogZXJyb3JMaW5lKQog
ewogICAgIFZNKiB2bSA9IHRvSlMoY29udGV4dEdyb3VwKTsKLSAgICBBUElFbnRyeVNoaW0gZW50
cnlTaGltKHZtKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIGlmICghaXNBU0NJSShzb3VyY2Vb
aV0pKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDIsNyArMTAxLDcgQEAgSlNTY3JpcHRS
ZWYgSlNTY3JpcHRDcmVhdGVSZWZlcmVuY2luZ0ltbQogSlNTY3JpcHRSZWYgSlNTY3JpcHRDcmVh
dGVGcm9tU3RyaW5nKEpTQ29udGV4dEdyb3VwUmVmIGNvbnRleHRHcm91cCwgSlNTdHJpbmdSZWYg
dXJsLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBKU1N0cmluZ1JlZiBzb3VyY2UsIEpTU3RyaW5n
UmVmKiBlcnJvck1lc3NhZ2UsIGludCogZXJyb3JMaW5lKQogewogICAgIFZNKiB2bSA9IHRvSlMo
Y29udGV4dEdyb3VwKTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKHZtKTsKKyAgICBKU0xv
Y2tIb2xkZXIgbG9ja2VyKHZtKTsKIAogICAgIHN0YXJ0aW5nTGluZU51bWJlciA9IHN0ZDo6bWF4
KDEsIHN0YXJ0aW5nTGluZU51bWJlcik7CiAKQEAgLTEyMiwyMCArMTIxLDIwIEBAIEpTU2NyaXB0
UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0MKIAogdm9pZCBKU1NjcmlwdFJldGFpbihK
U1NjcmlwdFJlZiBzY3JpcHQpCiB7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShzY3JpcHQt
PnZtKCkpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoc2NyaXB0LT52bSgpKTsKICAgICBzY3Jp
cHQtPnJlZigpOwogfQogCiB2b2lkIEpTU2NyaXB0UmVsZWFzZShKU1NjcmlwdFJlZiBzY3JpcHQp
CiB7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShzY3JpcHQtPnZtKCkpOworICAgIEpTTG9j
a0hvbGRlciBsb2NrZXIoc2NyaXB0LT52bSgpKTsKICAgICBzY3JpcHQtPmRlcmVmKCk7CiB9CiAK
IEpTVmFsdWVSZWYgSlNTY3JpcHRFdmFsdWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTY3Jp
cHRSZWYgc2NyaXB0LCBKU1ZhbHVlUmVmIHRoaXNWYWx1ZVJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7Ci0gICAgQVBJRW50
cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwog
ICAgIGlmIChzY3JpcHQtPnZtKCkgIT0gJmV4ZWMtPnZtKCkpIHsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1ZhbHVlLm1tCShyZXZpc2lvbiAxNjUwNTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKIAogI2ltcG9ydCAiQVBJQ2FzdC5oIgotI2ltcG9ydCAiQVBJ
U2hpbXMuaCIKICNpbXBvcnQgIkRhdGVJbnN0YW5jZS5oIgogI2ltcG9ydCAiRXJyb3IuaCIKICNp
bXBvcnQgIkphdmFTY3JpcHRDb3JlLmgiCkBAIC01NjMsMTMgKzU2MiwxMyBAQCAtICh2b2lkKXNl
dE9iamVjdDooaWQpb2JqZWN0IGF0SW5kZXhlZFN1CiAKIGlubGluZSBib29sIGlzRGF0ZShKU09i
amVjdFJlZiBvYmplY3QsIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0KQogewotICAgIEpTQzo6
QVBJRW50cnlTaGltIGVudHJ5U2hpbSh0b0pTKGNvbnRleHQpKTsKKyAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrZXIodG9KUyhjb250ZXh0KSk7CiAgICAgcmV0dXJuIHRvSlMob2JqZWN0KS0+aW5o
ZXJpdHMoSlNDOjpEYXRlSW5zdGFuY2U6OmluZm8oKSk7CiB9CiAKIGlubGluZSBib29sIGlzQXJy
YXkoSlNPYmplY3RSZWYgb2JqZWN0LCBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCkKIHsKLSAg
ICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhjb250ZXh0KSk7CisgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMoY29udGV4dCkpOwogICAgIHJldHVybiB0b0pTKG9iamVj
dCktPmluaGVyaXRzKEpTQzo6SlNBcnJheTo6aW5mbygpKTsKIH0KIApAQCAtNjg2LDcgKzY4NSw3
IEBAIHN0YXRpYyBKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayB2YWx1ZVQKIHN0YXRpYyBpZCBj
b250YWluZXJWYWx1ZVRvT2JqZWN0KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU0NvbnRh
aW5lckNvbnZlcnRvcjo6VGFzayB0YXNrKQogewogICAgIEFTU0VSVCh0YXNrLnR5cGUgIT0gQ29u
dGFpbmVyTm9uZSk7Ci0gICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGltKHRvSlMoY29udGV4
dCkpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKGNvbnRleHQpKTsKICAgICBK
U0NvbnRhaW5lckNvbnZlcnRvciBjb252ZXJ0b3IoY29udGV4dCk7CiAgICAgY29udmVydG9yLmFk
ZCh0YXNrKTsKICAgICBBU1NFUlQoIWNvbnZlcnRvci5pc1dvcmtMaXN0RW1wdHkoKSk7CkBAIC03
MTIsNyArNzExLDcgQEAgc3RhdGljIGlkIGNvbnRhaW5lclZhbHVlVG9PYmplY3QoSlNHbG9iYQog
ICAgICAgICAgICAgQVNTRVJUKFtjdXJyZW50Lm9iamMgaXNLaW5kT2ZDbGFzczpbTlNNdXRhYmxl
RGljdGlvbmFyeSBjbGFzc11dKTsKICAgICAgICAgICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRp
Y3Rpb25hcnkgPSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKWN1cnJlbnQub2JqYzsKIAotICAgICAg
ICAgICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGltKHRvSlMoY29udGV4dCkpOworICAgICAg
ICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMoY29udGV4dCkpOwogCiAgICAgICAg
ICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIHByb3BlcnR5TmFtZUFycmF5ID0gSlNPYmplY3RD
b3B5UHJvcGVydHlOYW1lcyhjb250ZXh0LCBqcyk7CiAgICAgICAgICAgICBzaXplX3QgbGVuZ3Ro
ID0gSlNQcm9wZXJ0eU5hbWVBcnJheUdldENvdW50KHByb3BlcnR5TmFtZUFycmF5KTsKQEAgLTc5
Niw3ICs3OTUsNyBAQCBpZCB2YWx1ZVRvQXJyYXkoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRlCiAg
ICAgaWYgKEpTVmFsdWVJc09iamVjdChjb250ZXh0LCB2YWx1ZSkpCiAgICAgICAgIHJldHVybiBj
b250YWluZXJWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIChKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFz
ayl7IHZhbHVlLCBbTlNNdXRhYmxlQXJyYXkgYXJyYXldLCBDb250YWluZXJBcnJheX0pOwogCi0g
ICAgSlNDOjpBUElFbnRyeVNoaW0gc2hpbSh0b0pTKGNvbnRleHQpKTsKKyAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrZXIodG9KUyhjb250ZXh0KSk7CiAgICAgaWYgKCEoSlNWYWx1ZUlzTnVsbChj
b250ZXh0LCB2YWx1ZSkgfHwgSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHZhbHVlKSkpIHsK
ICAgICAgICAgSlNDOjpKU09iamVjdCogZXhjZXB0aW9uT2JqZWN0ID0gSlNDOjpjcmVhdGVUeXBl
RXJyb3IodG9KUyhjb250ZXh0KSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBwcmltaXRp
dmUgdG8gTlNBcnJheSIpKTsKICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4Y2VwdGlvbk9i
amVjdCk7CkBAIC04MTgsNyArODE3LDcgQEAgaWQgdmFsdWVUb0RpY3Rpb25hcnkoSlNHbG9iYWxD
b250ZXh0UmVmIAogICAgIGlmIChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgdmFsdWUpKQogICAg
ICAgICByZXR1cm4gY29udGFpbmVyVmFsdWVUb09iamVjdChjb250ZXh0LCAoSlNDb250YWluZXJD
b252ZXJ0b3I6OlRhc2speyB2YWx1ZSwgW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV0s
IENvbnRhaW5lckRpY3Rpb25hcnl9KTsKIAotICAgIEpTQzo6QVBJRW50cnlTaGltIHNoaW0odG9K
Uyhjb250ZXh0KSk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMoY29udGV4dCkp
OwogICAgIGlmICghKEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFsdWVJc1Vu
ZGVmaW5lZChjb250ZXh0LCB2YWx1ZSkpKSB7CiAgICAgICAgIEpTQzo6SlNPYmplY3QqIGV4Y2Vw
dGlvbk9iamVjdCA9IEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29udGV4dCksIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IGNvbnZlcnQgcHJpbWl0aXZlIHRvIE5TRGljdGlvbmFyeSIpKTsKICAgICAg
ICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4Y2VwdGlvbk9iamVjdCk7CkBAIC05NTAsNyArOTQ5LDcg
QEAgSlNWYWx1ZVJlZiBvYmplY3RUb1ZhbHVlKEpTQ29udGV4dCAqY29udAogICAgIGlmICh0YXNr
LnR5cGUgPT0gQ29udGFpbmVyTm9uZSkKICAgICAgICAgcmV0dXJuIHRhc2suanM7CiAKLSAgICBK
U0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhjb250ZXh0UmVmKSk7CisgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMoY29udGV4dFJlZikpOwogICAgIE9iamNDb250YWluZXJD
b252ZXJ0b3IgY29udmVydG9yKGNvbnRleHQpOwogICAgIGNvbnZlcnRvci5hZGQodGFzayk7CiAg
ICAgQVNTRVJUKCFjb252ZXJ0b3IuaXNXb3JrTGlzdEVtcHR5KCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCShyZXZpc2lvbiAxNjUwNTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiSlNWYWx1ZVJlZi5oIgogCiAjaW5jbHVkZSAiQVBJQ2Fz
dC5oIgotI2luY2x1ZGUgIkFQSVNoaW1zLmgiCiAjaW5jbHVkZSAiSlNBUElXcmFwcGVyT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3Qu
aCIKQEAgLTcyLDcgKzcxLDcgQEAgc3RhdGljIGJvb2wgZXZlcm5vdGVIYWNrTmVlZGVkKCkKICAg
ICAgICAgcmV0dXJuIGtKU1R5cGVVbmRlZmluZWQ7CiAgICAgfQogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpT
TG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4
ZWMsIHZhbHVlKTsKIApAQCAtOTcsNyArOTYsNyBAQCBib29sIEpTVmFsdWVJc1VuZGVmaW5lZChK
U0NvbnRleHRSZWYgY3R4CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7
CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9
IHRvSlMoZXhlYywgdmFsdWUpOwogICAgIHJldHVybiBqc1ZhbHVlLmlzVW5kZWZpbmVkKCk7CkBA
IC0xMTAsNyArMTA5LDcgQEAgYm9vbCBKU1ZhbHVlSXNOdWxsKEpTQ29udGV4dFJlZiBjdHgsIEpT
VgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpTTG9ja0hv
bGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZh
bHVlKTsKICAgICByZXR1cm4ganNWYWx1ZS5pc051bGwoKTsKQEAgLTEyMyw3ICsxMjIsNyBAQCBi
b29sIEpTVmFsdWVJc0Jvb2xlYW4oSlNDb250ZXh0UmVmIGN0eCwgCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEFQSUVu
dHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsK
IAogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwogICAgIHJldHVybiBq
c1ZhbHVlLmlzQm9vbGVhbigpOwpAQCAtMTM2LDcgKzEzNSw3IEBAIGJvb2wgSlNWYWx1ZUlzTnVt
YmVyKEpTQ29udGV4dFJlZiBjdHgsIEoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hp
bShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBq
c1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1ZSk7CiAgICAgcmV0dXJuIGpzVmFsdWUuaXNOdW1iZXIo
KTsKQEAgLTE0OSw3ICsxNDgsNyBAQCBib29sIEpTVmFsdWVJc1N0cmluZyhKU0NvbnRleHRSZWYg
Y3R4LCBKCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgRXhlY1N0YXRlKiBleGVj
ID0gdG9KUyhjdHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNM
b2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhl
YywgdmFsdWUpOwogICAgIHJldHVybiBqc1ZhbHVlLmlzU3RyaW5nKCk7CkBAIC0xNjIsNyArMTYx
LDcgQEAgYm9vbCBKU1ZhbHVlSXNPYmplY3QoSlNDb250ZXh0UmVmIGN0eCwgSgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAg
ICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIo
ZXhlYyk7CiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKICAgICBy
ZXR1cm4ganNWYWx1ZS5pc09iamVjdCgpOwpAQCAtMTc1LDcgKzE3NCw3IEBAIGJvb2wgSlNWYWx1
ZUlzT2JqZWN0T2ZDbGFzcyhKU0NvbnRleHRSZWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGltIGVu
dHJ5U2hpbShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgSlNW
YWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1ZSk7CiAgICAgCkBAIC0xOTksNyArMTk4LDcg
QEAgYm9vbCBKU1ZhbHVlSXNFcXVhbChKU0NvbnRleHRSZWYgY3R4LCBKUwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBB
UElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhl
Yyk7CiAKICAgICBKU1ZhbHVlIGpzQSA9IHRvSlMoZXhlYywgYSk7CiAgICAgSlNWYWx1ZSBqc0Ig
PSB0b0pTKGV4ZWMsIGIpOwpAQCAtMjI0LDcgKzIyMyw3IEBAIGJvb2wgSlNWYWx1ZUlzU3RyaWN0
RXF1YWwoSlNDb250ZXh0UmVmIGMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShl
eGVjKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBqc0Eg
PSB0b0pTKGV4ZWMsIGEpOwogICAgIEpTVmFsdWUganNCID0gdG9KUyhleGVjLCBiKTsKQEAgLTIz
OSw3ICsyMzgsNyBAQCBib29sIEpTVmFsdWVJc0luc3RhbmNlT2ZDb25zdHJ1Y3RvcihKU0NvCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNMb2NrSG9sZGVy
IGxvY2tlcihleGVjKTsKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUp
OwogCkBAIC0yNjYsNyArMjY1LDcgQEAgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChK
U0NvbnRleAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgRXhlY1N0YXRlKiBleGVjID0g
dG9KUyhjdHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNMb2Nr
SG9sZGVyIGxvY2tlcihleGVjKTsKIAogICAgIHJldHVybiB0b1JlZihleGVjLCBqc1VuZGVmaW5l
ZCgpKTsKIH0KQEAgLTI3OCw3ICsyNzcsNyBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlTnVsbChK
U0NvbnRleHRSZWYgCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBK
U0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzTnVs
bCgpKTsKIH0KQEAgLTI5MCw3ICsyODksNyBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlQm9vbGVh
bihKU0NvbnRleHRSCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBK
U0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzQm9v
bGVhbih2YWx1ZSkpOwogfQpAQCAtMzAyLDcgKzMwMSw3IEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1h
a2VOdW1iZXIoSlNDb250ZXh0UmUKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMp
OworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICAvLyBPdXIgSlNWYWx1ZSBy
ZXByZXNlbnRhdGlvbiByZWxpZXMgb24gYSBzdGFuZGFyZCBiaXQgcGF0dGVybiBmb3IgTmFOLiBO
YU5zCiAgICAgLy8gZ2VuZXJhdGVkIGludGVybmFsbHkgdG8gSmF2YVNjcmlwdENvcmUgbmF0dXJh
bGx5IGhhdmUgdGhhdCByZXByZXNlbnRhdGlvbiwKQEAgLTMyMCw3ICszMTksNyBAQCBKU1ZhbHVl
UmVmIEpTVmFsdWVNYWtlU3RyaW5nKEpTQ29udGV4dFJlCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgQVBJRW50cnlTaGltIGVu
dHJ5U2hpbShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgcmV0
dXJuIHRvUmVmKGV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHN0cmluZy0+c3RyaW5nKCkpKTsKIH0KQEAg
LTMzMiw3ICszMzEsNyBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlND
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIg
bG9ja2VyKGV4ZWMpOwogICAgIFN0cmluZyBzdHIgPSBzdHJpbmctPnN0cmluZygpOwogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0ci5sZW5ndGgoKTsKICAgICBpZiAobGVuZ3RoICYmIHN0ci5pczhC
aXQoKSkgewpAQCAtMzUwLDcgKzM0OSw3IEBAIEpTU3RyaW5nUmVmIEpTVmFsdWVDcmVhdGVKU09O
U3RyaW5nKEpTQ28KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpT
TG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRvSlMoZXhlYywg
YXBpVmFsdWUpOwogICAgIFN0cmluZyByZXN1bHQgPSBKU09OU3RyaW5naWZ5KGV4ZWMsIHZhbHVl
LCBpbmRlbnQpOwogICAgIGlmIChleGNlcHRpb24pCkBAIC0zNzUsNyArMzc0LDcgQEAgYm9vbCBK
U1ZhbHVlVG9Cb29sZWFuKEpTQ29udGV4dFJlZiBjdHgsIAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRyeVNo
aW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAg
ICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKICAgICByZXR1cm4ganNWYWx1
ZS50b0Jvb2xlYW4oZXhlYyk7CkBAIC0zODgsNyArMzg3LDcgQEAgZG91YmxlIEpTVmFsdWVUb051
bWJlcihKU0NvbnRleHRSZWYgY3R4LAogICAgICAgICByZXR1cm4gUU5hTjsKICAgICB9CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0o
ZXhlYyk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAogICAgIEpTVmFsdWUganNW
YWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwogCkBAIC00MTMsNyArNDEyLDcgQEAgSlNTdHJpbmdS
ZWYgSlNWYWx1ZVRvU3RyaW5nQ29weShKU0NvbnRleAogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRy
eVNoaW0oZXhlYyk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAogICAgIEpTVmFs
dWUganNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwogICAgIApAQCAtNDM4LDcgKzQzNyw3IEBA
IEpTT2JqZWN0UmVmIEpTVmFsdWVUb09iamVjdChKU0NvbnRleHRSZWYKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBBUElFbnRy
eVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAK
ICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKICAgICAKQEAgLTQ2Myw3
ICs0NjIsNyBAQCB2b2lkIEpTVmFsdWVQcm90ZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAg
IEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihl
eGVjKTsKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlNGb3JHQyhleGVjLCB2YWx1ZSk7CiAg
ICAgZ2NQcm90ZWN0KGpzVmFsdWUpOwpAQCAtNDc3LDcgKzQ3Niw3IEBAIHZvaWQgSlNWYWx1ZVVu
cHJvdGVjdChKU0NvbnRleHRSZWYgY3R4LCAKICNlbmRpZgogCiAgICAgRXhlY1N0YXRlKiBleGVj
ID0gdG9KUyhjdHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNM
b2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlNGb3JH
QyhleGVjLCB2YWx1ZSk7CiAgICAgZ2NVbnByb3RlY3QoanNWYWx1ZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCShyZXZpc2lvbiAxNjUw
NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAog
CiAjaW1wb3J0ICJBUElDYXN0LmgiCi0jaW1wb3J0ICJBUElTaGltcy5oIgogI2ltcG9ydCAiSlNN
YW5hZ2VkVmFsdWVJbnRlcm5hbC5oIgogI2ltcG9ydCAiSlNWaXJ0dWFsTWFjaGluZS5oIgogI2lt
cG9ydCAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCkBAIC0xNTcsNyArMTU2LDcgQEAgLSAo
dm9pZClhZGRNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplY3QgdwogICAgIGlmICghb2JqZWN0IHx8
ICFvd25lcikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEpTQzo6QVBJRW50cnlTaGltIHNo
aW0odG9KUyhtX2dyb3VwKSk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMobV9n
cm91cCkpOwogICAgIAogICAgIE5TTWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFttX2V4dGVybmFs
T2JqZWN0R3JhcGggb2JqZWN0Rm9yS2V5Om93bmVyXTsKICAgICBpZiAoIW93bmVkT2JqZWN0cykg
ewpAQCAtMTg0LDcgKzE4Myw3IEBAIC0gKHZvaWQpcmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTooaWQp
b2JqZWMKICAgICBpZiAoIW9iamVjdCB8fCAhb3duZXIpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBKU0M6OkFQSUVudHJ5U2hpbSBzaGltKHRvSlMobV9ncm91cCkpOworICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2tlcih0b0pTKG1fZ3JvdXApKTsKICAgICAKICAgICBOU01hcFRhYmxlICpv
d25lZE9iamVjdHMgPSBbbV9leHRlcm5hbE9iamVjdEdyYXBoIG9iamVjdEZvcktleTpvd25lcl07
CiAgICAgaWYgKCFvd25lZE9iamVjdHMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAJKHJldmlzaW9uIDE2
NTA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJp
dmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJKU1dl
YWtPYmplY3RNYXBSZWZQcml2YXRlLmgiCiAKICNpbmNsdWRlICJBUElDYXN0LmgiCi0jaW5jbHVk
ZSAiQVBJU2hpbXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDYWxs
YmFja09iamVjdC5oIgogI2luY2x1ZGUgIkpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgiCkBA
IC00Niw3ICs0NSw3IEBAIGV4dGVybiAiQyIgewogSlNXZWFrT2JqZWN0TWFwUmVmIEpTV2Vha09i
amVjdE1hcENyZWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCogcHJpdmF0ZURhdGEsIEpT
V2Vha01hcERlc3Ryb3llZENhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY29udGV4dCk7Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAg
ICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogICAgIFJlZlB0cjxPcGFxdWVKU1dlYWtPYmpl
Y3RNYXA+IG1hcCA9IE9wYXF1ZUpTV2Vha09iamVjdE1hcDo6Y3JlYXRlKHByaXZhdGVEYXRhLCBj
YWxsYmFjayk7CiAgICAgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdpc3RlcldlYWtN
YXAobWFwLmdldCgpKTsKICAgICByZXR1cm4gbWFwLmdldCgpOwpAQCAtNTksNyArNTgsNyBAQCB2
b2lkIEpTV2Vha09iamVjdE1hcFNldChKU0NvbnRleHRSZWYgY3R4CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEFQSUVudHJ5U2hp
bSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKICAgICBK
U09iamVjdCogb2JqID0gdG9KUyhvYmplY3QpOwogICAgIGlmICghb2JqKQogICAgICAgICByZXR1
cm47CkBAIC03NCw3ICs3Myw3IEBAIEpTT2JqZWN0UmVmIEpTV2Vha09iamVjdE1hcEdldChKU0Nv
bnRleHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpTTG9ja0hv
bGRlciBsb2NrZXIoZXhlYyk7CiAgICAgcmV0dXJuIHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KG1h
cC0+bWFwKCkuZ2V0KGtleSkpKTsKIH0KIApAQCAtODUsNyArODQsNyBAQCB2b2lkIEpTV2Vha09i
amVjdE1hcFJlbW92ZShKU0NvbnRleHRSZWYgCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0o
ZXhlYyk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKICAgICBtYXAtPm1hcCgpLnJl
bW92ZShrZXkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBl
ck1hcC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBl
ck1hcC5tbQkocmV2aXNpb24gMTY1MDUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1dyYXBwZXJNYXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBKU0Nf
T0JKQ19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJBUElDYXN0LmgiCi0jaW1wb3J0ICJBUElTaGlt
cy5oIgogI2ltcG9ydCAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCiAjaW1wb3J0ICJKU0NhbGxiYWNr
T2JqZWN0LmgiCiAjaW1wb3J0ICJKU0NvbnRleHRJbnRlcm5hbC5oIgpAQCAtMTAxLDcgKzEwMCw3
IEBAIGRvbmU6CiBzdGF0aWMgYm9vbCBjb25zdHJ1Y3Rvckhhc0luc3RhbmNlKEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIGNvbnN0cnVjdG9yUmVmLCBKU1ZhbHVlUmVmIHBvc3NpYmxlSW5z
dGFuY2UsIEpTVmFsdWVSZWYqKQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOwotICAgIEpTQzo6QVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAKICAgICBKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3Rv
ciA9IHRvSlMoY29uc3RydWN0b3JSZWYpOwogICAgIEpTQzo6SlNWYWx1ZSBpbnN0YW5jZSA9IHRv
SlMoZXhlYywgcG9zc2libGVJbnN0YW5jZSk7CkBAIC0xMTEsNyArMTEwLDcgQEAgc3RhdGljIGJv
b2wgY29uc3RydWN0b3JIYXNJbnN0YW5jZShKU0Nvbgogc3RhdGljIEpTT2JqZWN0UmVmIG1ha2VX
cmFwcGVyKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xhc3NSZWYganNDbGFzcywgaWQgd3JhcHBlZE9i
amVjdCkKIHsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAgICBKU0M6
OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
a2VyKGV4ZWMpOwogCiAgICAgQVNTRVJUKGpzQ2xhc3MpOwogICAgIEpTQzo6SlNDYWxsYmFja09i
amVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD4qIG9iamVjdCA9IEpTQzo6SlNDYWxsYmFja09i
amVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD46OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+b2JqY1dyYXBwZXJP
YmplY3RTdHJ1Y3R1cmUoKSwganNDbGFzcywgMCk7CkBAIC02MjUsNyArNjI0LDcgQEAgaWQgdHJ5
VW53cmFwT2JqY09iamVjdChKU0dsb2JhbENvbnRleHRSZQogICAgIEpTVmFsdWVSZWYgZXhjZXB0
aW9uID0gMDsKICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4
dCwgdmFsdWUsICZleGNlcHRpb24pOwogICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKLSAgICBKU0M6
OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhjb250ZXh0KSk7CisgICAgSlNDOjpKU0xvY2tI
b2xkZXIgbG9ja2VyKHRvSlMoY29udGV4dCkpOwogICAgIGlmICh0b0pTKG9iamVjdCktPmluaGVy
aXRzKEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD46OmluZm8o
KSkpCiAgICAgICAgIHJldHVybiAoaWQpSlNDOjpqc0Nhc3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmpl
Y3QqPih0b0pTKG9iamVjdCkpLT53cmFwcGVkT2JqZWN0KCk7CiAgICAgaWYgKGlkIHRhcmdldCA9
IHRyeVVud3JhcENvbnN0cnVjdG9yKG9iamVjdCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0JKHJldmlzaW9uIDE2NTA1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2ltcG9ydCAiQVBJQ2FsbGJhY2tGdW5j
dGlvbi5oIgogI2ltcG9ydCAiQVBJQ2FzdC5oIgotI2ltcG9ydCAiQVBJU2hpbXMuaCIKICNpbXBv
cnQgIkRlbGF5ZWRSZWxlYXNlU2NvcGUuaCIKICNpbXBvcnQgIkVycm9yLmgiCiAjaW1wb3J0ICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAtNDU1LDcgKzQ1NCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IG9iakNDYWxsYmFja0Z1bmN0aW9uQ2EKICAgICAvLyAoMSkgV2UgZG9uJ3Qgd2FudCB0byBzdXBw
b3J0IHRoZSBDLUFQSSdzIGNvbmZ1c2luZyBkcm9wcy1sb2Nrcy1vbmNlIHBvbGljeSAtIHNob3Vs
ZCBvbmx5IGRyb3AgbG9ja3MgaWYgd2UgY2FuIGRvIHNvIHJlY3Vyc2l2ZWx5LgogICAgIC8vICgy
KSBXZSdyZSBjYWxsaW5nIHNvbWUgSlNDIGludGVybmFscyB0aGF0IHJlcXVpcmUgdXMgdG8gYmUg
b24gdGhlICdpbnNpZGUnIC0gZS5nLiBjcmVhdGVUeXBlRXJyb3IuCiAgICAgLy8gKDMpIFdlIG5l
ZWQgdG8gYmUgbG9ja2VkIChwZXIgY29udGV4dCB3b3VsZCBiZSBmaW5lKSBhZ2FpbnN0IGNvbmZs
aWN0aW5nIHVzYWdlIG9mIHRoZSBPYmpDQ2FsbGJhY2tGdW5jdGlvbidzIE5TSW52b2NhdGlvbi4K
LSAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhjYWxsZXJDb250ZXh0KSk7Cisg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMoY2FsbGVyQ29udGV4dCkpOwogCiAgICAg
T2JqQ0NhbGxiYWNrRnVuY3Rpb24qIGNhbGxiYWNrID0gc3RhdGljX2Nhc3Q8T2JqQ0NhbGxiYWNr
RnVuY3Rpb24qPih0b0pTKGZ1bmN0aW9uKSk7CiAgICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBs
KiBpbXBsID0gY2FsbGJhY2stPmltcGwoKTsKQEAgLTQ3NSw3ICs0NzQsNyBAQCBzdGF0aWMgSlNW
YWx1ZVJlZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkNhCiAKIHN0YXRpYyBKU09iamVjdFJlZiBvYmpD
Q2FsbGJhY2tGdW5jdGlvbkNhbGxBc0NvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjYWxsZXJDb250
ZXh0LCBKU09iamVjdFJlZiBjb25zdHJ1Y3Rvciwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKLSAgICBK
U0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhjYWxsZXJDb250ZXh0KSk7CisgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMoY2FsbGVyQ29udGV4dCkpOwogCiAgICAgT2JqQ0Nh
bGxiYWNrRnVuY3Rpb24qIGNhbGxiYWNrID0gc3RhdGljX2Nhc3Q8T2JqQ0NhbGxiYWNrRnVuY3Rp
b24qPih0b0pTKGNvbnN0cnVjdG9yKSk7CiAgICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsKiBp
bXBsID0gY2FsbGJhY2stPmltcGwoKTsKQEAgLTY3Myw3ICs2NzIsNyBAQCBzdGF0aWMgSlNPYmpl
Y3RSZWYgb2JqQ0NhbGxiYWNrRnVuY3Rpb25GCiAgICAgfQogCiAgICAgSlNDOjpFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwotICAgIEpTQzo6QVBJ
RW50cnlTaGltIHNoaW0oZXhlYyk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMp
OwogICAgIE93blB0cjxKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4gaW1wbCA9IGFkb3B0
UHRyKG5ldyBKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbChpbnZvY2F0aW9uLCB0eXBlLCBp
bnN0YW5jZUNsYXNzLCBhcmd1bWVudHMucmVsZWFzZSgpLCByZXN1bHQucmVsZWFzZSgpKSk7CiAg
ICAgcmV0dXJuIHRvUmVmKEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLT52
bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGltcGwtPm5hbWUoKSwgaW1wbC5yZWxl
YXNlKCkpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9KYXZhU2NyaXB0Q29yZS9BUElTaGltcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9BUElTaGltcy5oCShyZXZp
c2lvbiAxNjUwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
SmF2YVNjcmlwdENvcmUvQVBJU2hpbXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJL0FQSVNoaW1zLmg+CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY1MDUzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTg0NSw3ICs4NDUsNiBAQAogCQk4NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVn
RXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2Rjc1RUZCMTUxQzA2MkYwMDdDOUJBMyAvKiBSZWdFeHBDYWNoZWRSZXN1bHQu
Y3BwICovOyB9OwogCQk4NjQyQzUxMjE1MUMwODNEMDA0NkQ0RUYgLyogUmVnRXhwTWF0Y2hlc0Fy
cmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
Rjc1RUZEMTUxQzA2MkYwMDdDOUJBMyAvKiBSZWdFeHBNYXRjaGVzQXJyYXkuY3BwICovOyB9Owog
CQk4NjVBMzBGMTEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NUEzMEYwMTM1MDA3RTEw
MENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTg2NUY0MDg4MTBFN0Q1NjMwMDk0NzM2MSAvKiBBUElT
aGltcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1
RjQwODcxMEU3RDU2MzAwOTQ3MzYxIC8qIEFQSVNoaW1zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY2NzM5RDIxM0JGREU3MTAwMjNEODdDIC8q
IEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2NjczOUQwMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggKi87IH07CiAJCTg2
NjczOUQzMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NjczOUQxMTNCRkRFNzEwMDIz
RDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCAqLzsgfTsKIAkJODY3MDRCNDIxMkRCOEE4MTAw
QTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjQwMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3lu
dGF4Q2hlY2tlci5jcHAgKi87IH07CkBAIC0yMzQ5LDcgKzIzNDgsNiBAQAogCQk4NjQwOTIzQjE1
NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQVJNNjRBc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODY0MDkyM0MxNTZFRUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk02NC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlND
SlNWYWx1ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDSlNW
YWx1ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY1RjQwODcxMEU3
RDU2MzAwOTQ3MzYxIC8qIEFQSVNoaW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFQSVNoaW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NjczOUQwMTNC
RkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJpZ0ludGVnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY2NzM5
RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVaW50MTZXaXRoRnJhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODY3MDRCNDAxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVj
a2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJTeW50YXhD
aGVja2VyLmNwcDsgcGF0aCA9IHlhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMzU4Miw3ICszNTgwLDYgQEAKIAkJCWNoaWxkcmVuID0gKAog
CQkJCUMyMTFCNTc0MTc2QTIyNEQwMDBFMkEyMyAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggKi8s
CiAJCQkJMTQ4MkI3OEEwQTQzMDVBQjAwNTE3Q0ZDIC8qIEFQSUNhc3QuaCAqLywKLQkJCQk4NjVG
NDA4NzEwRTdENTYzMDA5NDczNjEgLyogQVBJU2hpbXMuaCAqLywKIAkJCQkxQ0FBOEI0QTBEMzJD
MzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdC5oICovLAogCQkJCTFDQUE4QjRCMEQzMkMzOUEwMDQx
QkNGRiAvKiBKYXZhU2NyaXB0Q29yZS5oICovLAogCQkJCUJDMDg5NEQ1MEZBRkJBMkQwMDAwMTg2
NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgKi8sCkBAIC00ODc2LDcgKzQ4NzMsNiBAQAogCQkJ
CTBGNTVGMEY1MTREMTA2M0MwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQTQ4RDE5MTE3NzIzNjVCMDBDNjVBNUYgLyogQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTUwRTE2RjVDRDAwQjM0NDYwIC8qIEFQSUNhc3QuaCBp
biBIZWFkZXJzICovLAotCQkJCTg2NUY0MDg4MTBFN0Q1NjMwMDk0NzM2MSAvKiBBUElTaGltcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGNjA1MTQwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjU3REU4MEUxRjUxQzUwMDE2QjZDOSAvKiBBcmd1bWVu
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NjE0MENFMTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1
bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCShyZXZpc2lvbiAxNjUwNTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKLSNpbmNsdWRlICJBUElT
aGltcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNp
bmNsdWRlICJERkdMb25nTGl2ZWRTdGF0ZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvRGVsYXllZFJlbGVhc2VTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0RlbGF5ZWRSZWxlYXNlU2NvcGUuaAkocmV2aXNpb24gMTY1MDUzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVsYXllZFJlbGVhc2VTY29wZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw4IEBACiAjaWZuZGVmIERlbGF5ZWRSZWxlYXNlU2NvcGVfaAog
I2RlZmluZSBEZWxheWVkUmVsZWFzZVNjb3BlX2gKIAotI2luY2x1ZGUgIkFQSVNoaW1zLmgiCisj
aW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZFNw
YWNlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHN0ZDo6c3dhcChvcGVyYXRpb25JblByb2dyZXNzLCBtX21hcmtlZFNwYWNlLm1faGVhcC0+
bV9vcGVyYXRpb25JblByb2dyZXNzKTsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBBUElDYWxs
YmFja1NoaW0gY2FsbGJhY2tTaGltKCptX21hcmtlZFNwYWNlLm1faGVhcC0+dm0oKSk7CisgICAg
ICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoKm1fbWFya2VkU3BhY2Uu
bV9oZWFwLT52bSgpKTsKICAgICAgICAgICAgIG1fZGVsYXllZFJlbGVhc2VPYmplY3RzLmNsZWFy
KCk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRp
bWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGlt
ZXIuY3BwCShyZXZpc2lvbiAxNjUwNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSGVhcFRpbWVyLmgiCiAKLSNpbmNsdWRlICJBUElTaGltcy5o
IgorI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC05Myw3
ICs5Myw3IEBAIHZvaWQgSGVhcFRpbWVyOjp0aW1lckRpZEZpcmUoQ0ZSdW5Mb29wVGkKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAogICAgIHsKLSAgICAgICAgQVBJRW50
cnlTaGltIHNoaW0odm0pOworICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKICAgICAg
ICAgaGVhcFRpbWVyLT5kb1dvcmsoKTsKICAgICB9CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29s
IEhlYXBUaW1lcjo6dGltZXJFdmVudCh2b2lkKiBpbmZvKQogewogICAgIEhlYXBUaW1lciogYWdl
bnQgPSBzdGF0aWNfY2FzdDxIZWFwVGltZXIqPihpbmZvKTsKICAgICAKLSAgICBBUElFbnRyeVNo
aW0gc2hpbShhZ2VudC0+bV92bSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihhZ2VudC0+bV92
bSk7CiAgICAgYWdlbnQtPmRvV29yaygpOwogICAgIGFnZW50LT5tX3RpbWVyID0gMDsKICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2Vl
cGVyLmNwcAkocmV2aXNpb24gMTY1MDUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SW5jcmVtZW50YWxTd2VlcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogCi0j
aW5jbHVkZSAiQVBJU2hpbXMuaCIKICNpbmNsdWRlICJEZWxheWVkUmVsZWFzZVNjb3BlLmgiCiAj
aW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxl
LmNwcAkocmV2aXNpb24gMTY1MDUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYg
QEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJBUElTaGltcy5oIgogI2lu
Y2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCkBAIC02NCw3ICs2Myw3IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGUKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gRklYTUU6IE1ha2UgdGhlIEluamVjdGVkU2NyaXB0IGEgbW9kdWxlIGl0c2VsZi4K
LSAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oaW5qZWN0ZWRTY3JpcHQuc2NyaXB0U3Rh
dGUoKSk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGluamVjdGVkU2NyaXB0LnNjcmlw
dFN0YXRlKCkpOwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihp
bmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoIm1vZHVs
ZSIpLCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVudmlyb25tZW50KCkuZnVuY3Rp
b25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwog
ICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHJldmlzaW9uIDE2
NTA1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFj
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKIAotI2luY2x1ZGUgIkFQSVNoaW1z
LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNMb2Nr
LmgiCkBAIC04Niw3ICs4NSw3IEBAIHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9X
b3JrKCkKICAgICBpZiAoIWlzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
QVBJRW50cnlTaGltIHNoaW0obV92bSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihtX3ZtKTsK
ICAgICBpZiAoaGVhcC0+aXNEZWZlcnJlZCgpKSB7CiAgICAgICAgIHNjaGVkdWxlVGltZXIoMCk7
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcAkocmV2aXNpb24gMTY1
MDUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJBUElTaGltcy5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckFnZW50QmFzZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC01MSwyMSArNTAsMjEgQEAgU3RyaW5n
IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6bmFtZSgpIAogCiB2b2lkIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCkKIHsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKCZtX2dsb2JhbE9iamVjdC52bSgp
KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKCZtX2dsb2JhbE9iamVjdC52bSgpKTsKIAogICAg
IG1fZ2xvYmFsT2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoZnJv
bnRlbmRDaGFubmVsKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc2Nv
bm5lY3QoKQogewotICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oJm1fZ2xvYmFsT2JqZWN0LnZt
KCkpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoJm1fZ2xvYmFsT2JqZWN0LnZtKCkpOwogCiAg
ICAgbV9nbG9iYWxPYmplY3QuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVu
ZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogfQogCiB2
b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlT
aGltKCZtX2dsb2JhbE9iamVjdC52bSgpKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKCZtX2ds
b2JhbE9iamVjdC52bSgpKTsKIAogICAgIG1fZ2xvYmFsT2JqZWN0Lmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHJldmlzaW9uIDE2NTA1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyMyw2ICsxMjMsMTIgQEAgdm9pZCBKU0xvY2s6OmxvY2soaW50cHRyX3QgbG9ja0NvdW50
KQogICAgIEFTU0VSVCghbV9sb2NrQ291bnQpOwogICAgIG1fbG9ja0NvdW50ID0gbG9ja0NvdW50
OwogCisgICAgZGlkQWNxdWlyZUxvY2soKTsKK30KKwordm9pZCBKU0xvY2s6OmRpZEFjcXVpcmVM
b2NrKCkKK3sKKyAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgaGFwcGVuIHRvIHRoZSBwZXItdGhy
ZWFkIGlkZW50aWZpZXIgdGFibGUgaWYgd2UgZG9uJ3QgaGF2ZSBhIFZNPwogICAgIGlmICghbV92
bSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzIsNiArMTM4LDkgQEAgdm9pZCBKU0xvY2s6Omxv
Y2soaW50cHRyX3QgbG9ja0NvdW50KQogCiAgICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9
IHd0ZlRocmVhZERhdGEoKTsKICAgICBtX3ZtLT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkRGF0YS5z
YXZlZExhc3RTdGFja1RvcCgpKTsKKworICAgIG1fZW50cnlJZGVudGlmaWVyVGFibGUgPSB3dGZU
aHJlYWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShtX3ZtLT5pZGVudGlmaWVyVGFi
bGUpOworICAgIG1fdm0tPmhlYXAubWFjaGluZVRocmVhZHMoKS5hZGRDdXJyZW50VGhyZWFkKCk7
CiB9CiAKIHZvaWQgSlNMb2NrOjp1bmxvY2soKQpAQCAtMTQ3LDggKzE1Niw3IEBAIHZvaWQgSlNM
b2NrOjp1bmxvY2soaW50cHRyX3QgdW5sb2NrQ291bnQKICAgICBtX2xvY2tDb3VudCAtPSB1bmxv
Y2tDb3VudDsKIAogICAgIGlmICghbV9sb2NrQ291bnQpIHsKLSAgICAgICAgaWYgKG1fdm0pCi0g
ICAgICAgICAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50cnkobnVsbHB0cik7CisgICAg
ICAgIHdpbGxSZWxlYXNlTG9jaygpOwogCiAgICAgICAgIGlmICghbV9oYXNFeGNsdXNpdmVUaHJl
YWQpIHsKICAgICAgICAgICAgIG1fb3duZXJUaHJlYWRJRCA9IHN0ZDo6dGhyZWFkOjppZCgpOwpA
QCAtMTU3LDYgKzE2NSwxNCBAQCB2b2lkIEpTTG9jazo6dW5sb2NrKGludHB0cl90IHVubG9ja0Nv
dW50CiAgICAgfQogfQogCit2b2lkIEpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKCkKK3sKKyAgICBp
ZiAobV92bSkKKyAgICAgICAgbV92bS0+c2V0U3RhY2tQb2ludGVyQXRWTUVudHJ5KG51bGxwdHIp
OworCisgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUobV9lbnRy
eUlkZW50aWZpZXJUYWJsZSk7Cit9CisKIHZvaWQgSlNMb2NrOjpsb2NrKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBleGVjLT52bSgpLmFwaUxvY2soKS5sb2NrKCk7CkBAIC0yMjYsMzIgKzI0Miwy
OCBAQCB2b2lkIEpTTG9jazo6Z3JhYkFsbExvY2tzKERyb3BBbGxMb2NrcyogCiAgICAgbV92bS0+
c2V0TGFzdFN0YWNrVG9wKHRocmVhZERhdGEuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7CiB9CiAKLUpT
TG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKiBleGVjKQorSlNMb2Nr
OjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhWTSogdm0pCiAgICAgOiBtX2Ryb3BwZWRMb2Nr
Q291bnQoMCkKLSAgICAsIG1fdm0oZXhlYyA/ICZleGVjLT52bSgpIDogbnVsbHB0cikKKyAgICAv
LyBJZiB0aGUgVk0gaXMgaW4gdGhlIG1pZGRsZSBvZiBiZWluZyBkZXN0cm95ZWQgdGhlbiB3ZSBk
b24ndCB3YW50IHRvIHJlc3VycmVjdCBpdAorICAgIC8vIGJ5IGFsbG93aW5nIERyb3BBbGxMb2Nr
cyB0byByZWYgaXQuIEJ5IHRoaXMgcG9pbnQgdGhlIEpTTG9jayBoYXMgYWxyZWFkeSBiZWVuIAor
ICAgIC8vIHJlbGVhc2VkIGFueXdheXMsIHNvIGl0IGRvZXNuJ3QgbWF0dGVyIHRoYXQgRHJvcEFs
bExvY2tzIGlzIGEgbm8tb3AuCisgICAgLCBtX3ZtKHZtLT5yZWZDb3VudCgpID8gdm0gOiBudWxs
cHRyKQogewogICAgIGlmICghbV92bSkKICAgICAgICAgcmV0dXJuOworICAgIHd0ZlRocmVhZERh
dGEoKS5yZXNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoKTsKICAgICBSRUxFQVNFX0FTU0VSVCgh
bV92bS0+aXNDb2xsZWN0b3JCdXN5KCkpOwogICAgIG1fZHJvcHBlZExvY2tDb3VudCA9IG1fdm0t
PmFwaUxvY2soKS5kcm9wQWxsTG9ja3ModGhpcyk7CiB9CiAKLUpTTG9jazo6RHJvcEFsbExvY2tz
OjpEcm9wQWxsTG9ja3MoVk0qIHZtKQotICAgIDogbV9kcm9wcGVkTG9ja0NvdW50KDApCi0gICAg
LCBtX3ZtKHZtKQorSlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhFeGVjU3RhdGUq
IGV4ZWMpCisgICAgOiBEcm9wQWxsTG9ja3MoZXhlYyA/ICZleGVjLT52bSgpIDogbnVsbHB0cikK
IHsKLSAgICBpZiAoIW1fdm0pCi0gICAgICAgIHJldHVybjsKLSAgICBSRUxFQVNFX0FTU0VSVCgh
bV92bS0+aXNDb2xsZWN0b3JCdXN5KCkpOwotICAgIG1fZHJvcHBlZExvY2tDb3VudCA9IG1fdm0t
PmFwaUxvY2soKS5kcm9wQWxsTG9ja3ModGhpcyk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tz
OjpEcm9wQWxsTG9ja3MoVk0mIHZtKQotICAgIDogbV9kcm9wcGVkTG9ja0NvdW50KDApCi0gICAg
LCBtX3ZtKCZ2bSkKKyAgICA6IERyb3BBbGxMb2Nrcygmdm0pCiB7Ci0gICAgUkVMRUFTRV9BU1NF
UlQoIW1fdm0tPmlzQ29sbGVjdG9yQnVzeSgpKTsKLSAgICBtX2Ryb3BwZWRMb2NrQ291bnQgPSBt
X3ZtLT5hcGlMb2NrKCkuZHJvcEFsbExvY2tzKHRoaXMpOwogfQogCiBKU0xvY2s6OkRyb3BBbGxM
b2Nrczo6fkRyb3BBbGxMb2NrcygpCkBAIC0yNTksNiArMjcxLDcgQEAgSlNMb2NrOjpEcm9wQWxs
TG9ja3M6On5Ecm9wQWxsTG9ja3MoKQogICAgIGlmICghbV92bSkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fdm0tPmFwaUxvY2soKS5ncmFiQWxsTG9ja3ModGhpcywgbV9kcm9wcGVkTG9ja0NvdW50
KTsKKyAgICB3dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShtX3ZtLT5p
ZGVudGlmaWVyVGFibGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCShyZXZpc2lvbiAxNjUwNTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiAr
NDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBEcm9wQWxsTG9ja3Mgb2JqZWN0IHRha2Vz
IGNhcmUgdG8gcmVsZWFzZSB0aGUgSlNMb2NrIG9ubHkgaWYgeW91cgogICAgIC8vIHRocmVhZCBh
Y3F1aXJlZCBpdCB0byBiZWdpbiB3aXRoLgogCisgICAgY2xhc3MgSWRlbnRpZmllclRhYmxlOwog
ICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBWTTsKIApAQCAtMTI2LDYgKzEyNyw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGxvY2soaW50cHRyX3QgbG9ja0NvdW50KTsK
ICAgICAgICAgdm9pZCB1bmxvY2soaW50cHRyX3QgdW5sb2NrQ291bnQpOwogCisgICAgICAgIHZv
aWQgZGlkQWNxdWlyZUxvY2soKTsKKyAgICAgICAgdm9pZCB3aWxsUmVsZWFzZUxvY2soKTsKKwog
ICAgICAgICB1bnNpZ25lZCBkcm9wQWxsTG9ja3MoRHJvcEFsbExvY2tzKik7CiAgICAgICAgIHZv
aWQgZ3JhYkFsbExvY2tzKERyb3BBbGxMb2NrcyosIHVuc2lnbmVkIGxvY2tDb3VudCk7CiAKQEAg
LTEzNSw2ICsxMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9sb2Nr
RHJvcERlcHRoOwogICAgICAgICBib29sIG1faGFzRXhjbHVzaXZlVGhyZWFkOwogICAgICAgICBW
TSogbV92bTsKKyAgICAgICAgSWRlbnRpZmllclRhYmxlKiBtX2VudHJ5SWRlbnRpZmllclRhYmxl
OyAKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1
MDYwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMTQtMDMtMDQgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxl
LmNvbT4KKworICAgICAgICBNZXJnZSBBUEkgc2hpbXMgYW5kIEpTTG9jaworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NjUwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAg
ICAgIEpTTG9jayBpcyBub3cgdGFraW5nIG9uIGFsbCBvZiBBUElFbnRyeVNoaW0ncyByZXNwb25z
aWJpbGl0aWVzIHNpbmNlIHRoZXJlIGlzIG5ldmVyIGEgcmVhc29uIAorICAgICAgICB0byB0YWtl
IGp1c3QgdGhlIEpTTG9jay4gRGl0dG8gZm9yIERyb3BBbGxMb2NrcyBhbmQgQVBJQ2FsbGJhY2tT
aGltLgorCisgICAgICAgICogYmluZGluZ3MvanMvRE9NUmVxdWVzdFN0YXRlLmg6CisgICAgICAg
IChXZWJDb3JlOjpET01SZXF1ZXN0U3RhdGU6OlNjb3BlOjpTY29wZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBw
ZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRXcmFwcGVyOjpyZWplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPFN0cmluZz4pOgor
ICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPGJvb2w+KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNoYXI+Pik6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6
OnJlamVjdDxTdHJpbmc+KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3Js
ZCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUpOgorCiAyMDE0LTAz
LTA0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBTaW1wbGlmeSB0aGUgR09iamVjdCBET00gYmluZGluZ3MgQVBJIGJyZWFrIGNoZWNrIGlu
dG8gb25lIHN0ZXAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVJlcXVlc3RT
dGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVJlcXVl
c3RTdGF0ZS5oCShyZXZpc2lvbiAxNjUwNTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9ET01SZXF1ZXN0U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsNiBAQAogI2lu
Y2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKIAot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSVNoaW1zLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKQEAgLTYzLDExICs2MSwxMSBAQCBw
dWJsaWM6CiAgICAgY2xhc3MgU2NvcGUgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQg
U2NvcGUoRE9NUmVxdWVzdFN0YXRlJiBzdGF0ZSkKLSAgICAgICAgICAgIDogbV9lbnRyeVNoaW0o
c3RhdGUuZXhlYygpKQorICAgICAgICAgICAgOiBtX2xvY2tlcihzdGF0ZS5leGVjKCkpCiAgICAg
ICAgIHsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTQzo6QVBJRW50cnlTaGlt
IG1fZW50cnlTaGltOworICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBtX2xvY2tlcjsKICAgICB9
OwogCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlLmgJKHJldmlzaW9uIDE2NTA1MykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw2IEBACiAjaW5jbHVkZSAiSlNDcnlwdG9LZXkuaCIKICNpbmNsdWRlICJKU0NyeXB0b0tleVBh
aXIuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BUElTaGltcy5oPgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaD4KIApAQCAtNTksNyArNTgsNyBAQCB0ZW1wbGF0
ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4KIGlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6
cmVzb2x2ZShjb25zdCBSZXNvbHZlUmVzdWx0VHlwZSYgcmVzdWx0KQogewogICAgIEpTQzo6RXhl
Y1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkFQ
SUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2Vy
KGV4ZWMpOwogICAgIHJlc29sdmUoZXhlYywgdG9KUyhleGVjLCBtX2dsb2JhbE9iamVjdC5nZXQo
KSwgcmVzdWx0KSk7CiB9CiAKQEAgLTY3LDcgKzY2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgUmVqZWN0
UmVzdWx0VHlwZT4KIGlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KGNvbnN0IFJl
amVjdFJlc3VsdFR5cGUmIHJlc3VsdCkKIHsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1f
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlT
aGltKGV4ZWMpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKICAgICByZWpl
Y3QoZXhlYywgdG9KUyhleGVjLCBtX2dsb2JhbE9iamVjdC5nZXQoKSwgcmVzdWx0KSk7CiB9CiAK
QEAgLTc1LDcgKzc0LDcgQEAgdGVtcGxhdGU8PgogaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVy
OjpyZWplY3QoY29uc3Qgc3RkOjpudWxscHRyX3QmKQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkFQSUVudHJ5U2hp
bSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwog
ICAgIHJlamVjdChleGVjLCBKU0M6OmpzTnVsbCgpKTsKIH0KIApAQCAtODMsNyArODIsNyBAQCB0
ZW1wbGF0ZTw+CiBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8U3RyaW5nPihj
b25zdCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGlt
KGV4ZWMpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKICAgICByZXNvbHZl
KGV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHJlc3VsdCkpOwogfQogCkBAIC05MSw3ICs5MCw3IEBAIHRl
bXBsYXRlPD4KIGlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZTxib29sPihjb25z
dCBib29sJiByZXN1bHQpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpOwotICAgIEpTQzo6QVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVj
KTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAgICAgcmVzb2x2ZShleGVj
LCBKU0M6OmpzQm9vbGVhbihyZXN1bHQpKTsKIH0KIApAQCAtOTksNyArOTgsNyBAQCB0ZW1wbGF0
ZTw+CiBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8VmVjdG9yPHVuc2lnbmVk
IGNoYXI+Pihjb25zdCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIHJlc3VsdCkKIHsKICAgICBKU0M6
OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgSlND
OjpBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2tlcihleGVjKTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7CiAgICAgcmVzb2x2ZShleGVj
LCB0b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCBidWZmZXIuZ2V0KCkpKTsKIH0KQEAg
LTEwOCw3ICsxMDcsNyBAQCB0ZW1wbGF0ZTw+CiBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6
OnJlamVjdDxTdHJpbmc+KGNvbnN0IFN0cmluZyYgcmVzdWx0KQogewogICAgIEpTQzo6RXhlY1N0
YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0M6OkFQSUVu
dHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4
ZWMpOwogICAgIHJlamVjdChleGVjLCBqc1N0cmluZyhleGVjLCByZXN1bHQpKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDE2NTA1MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgSlNET01XaW5k
b3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6Y3JlYQogCiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICBKU0xvY2tIb2xk
ZXIgbG9jayhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCkpOworICAgIEpTTG9ja0hvbGRlciBs
b2NrKHdvcmxkLnZtKCkpOwogCiAgICAgY29uc3QgU291cmNlQ29kZSYganNTb3VyY2VDb2RlID0g
c291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKTsKICAgICBTdHJpbmcgc291cmNlVVJMID0ganNTb3Vy
Y2VDb2RlLnByb3ZpZGVyKCktPnVybCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lvbiAxNjUwNTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9B
UElDYXN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJU2hpbXMuaD4KICNpbmNsdWRl
IDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Cb29sZWFuT2JqZWN0
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9EYXRlSW5zdGFuY2UuaD4KQEAgLTI2MTQsNyArMjYxMyw3
IEBAIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWwKIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0Nv
bnRleHRSZWYgb3JpZ2luQ29udGV4dCwgSlNWYWx1ZVJlZiBhcGlWYWx1ZSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMob3JpZ2luQ29udGV4dCk7
Ci0gICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9j
a2VyKGV4ZWMpOwogICAgIEpTVmFsdWUgdmFsdWUgPSB0b0pTKGV4ZWMsIGFwaVZhbHVlKTsKICAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCB2YWx1ZSwgbnVsbHB0ciwgbnVsbHB0cik7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CkBAIC0yNjQ1LDcgKzI2NDQsNyBAQCBKU1Zh
bHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpCiBKU1ZhbHVlUmVmIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmIGRlc3RpbmF0aW9uQ29udGV4
dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
ZGVzdGluYXRpb25Db250ZXh0KTsKLSAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwor
ICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGRlc2Vy
aWFsaXplKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbnVsbHB0cik7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNjUwNjApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMy0wNCAgTWFyayBIYWhuZW5i
ZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdlIEFQSSBzaGltcyBh
bmQgSlNMb2NrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjk2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBKU0xvY2sgaXMgbm93IHRha2luZyBvbiBhbGwgb2YgQVBJRW50cnlTaGltJ3MgcmVzcG9uc2li
aWxpdGllcyBzaW5jZSB0aGVyZSBpcyBuZXZlciBhIHJlYXNvbiAKKyAgICAgICAgdG8gdGFrZSBq
dXN0IHRoZSBKU0xvY2suIERpdHRvIGZvciBEcm9wQWxsTG9ja3MgYW5kIEFQSUNhbGxiYWNrU2hp
bS4KKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlE
QkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VW5pcXVl
SURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6On5VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdT
dG9yZVNRTGl0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0
b3JlU1FMaXRlOjpjcmVhdGVJbmRleCk6CisKIDIwMTQtMDMtMDMgIEVucmljYSBDYXN1Y2NpICA8
ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBTZWxlY3Rpb24gcmVtYWlucyBhZnRl
ciByZWxvYWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5p
cXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwCShyZXZpc2lvbiAxNjUwNTMpCisr
KyBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJ
REJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcg
KzMzLDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlSURCQ3Vyc29y
LmgiCiAjaW5jbHVkZSAiU1FMaXRlSURCVHJhbnNhY3Rpb24uaCIKLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9BUElTaGltcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSURCQmluZGluZ1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SURCRGF0YWJhc2VNZXRhZGF0YS5oPgpAQCAtNzcsNyArNzYsNyBAQCBVbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZVNRTGl0ZTo6flVuCiAgICAgbV9zcWxpdGVEQiA9IG51bGxwdHI7CiAKICAg
ICBpZiAobV92bSkgewotICAgICAgICBBUElFbnRyeVNoaW0gc2hpbShtX3ZtLmdldCgpKTsKKyAg
ICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihtX3ZtLmdldCgpKTsKICAgICAgICAgbV9nbG9iYWxP
YmplY3QuY2xlYXIoKTsKICAgICAgICAgbV92bSA9IG51bGxwdHI7CiAgICAgfQpAQCAtNjMxLDcg
KzYzMCw3IEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUKIAogICAg
IG1fY3Vyc29ycy5zZXQoY3Vyc29yLT5pZGVudGlmaWVyKCksIGN1cnNvcik7CiAKLSAgICBPd25Q
dHI8QVBJRW50cnlTaGltPiBzaGltOworICAgIE93blB0cjxKU0xvY2tIb2xkZXI+IGxvY2tlcjsK
ICAgICB3aGlsZSAoIWN1cnNvci0+Y3VycmVudEtleSgpLmlzTnVsbCkgewogICAgICAgICBjb25z
dCBJREJLZXlEYXRhJiBrZXkgPSBjdXJzb3ItPmN1cnJlbnRLZXkoKTsKICAgICAgICAgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiB2YWx1ZUJ1ZmZlciA9IGN1cnNvci0+Y3VycmVudFZhbHVlQnVmZmVy
KCk7CkBAIC02MzksMTIgKzYzOCwxMiBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0
b3JlU1FMaXRlCiAgICAgICAgIGlmICghbV9nbG9iYWxPYmplY3QpIHsKICAgICAgICAgICAgIEFT
U0VSVCghbV92bSk7CiAgICAgICAgICAgICBtX3ZtID0gVk06OmNyZWF0ZSgpOwotICAgICAgICAg
ICAgc2hpbSA9IGFkb3B0UHRyKG5ldyBBUElFbnRyeVNoaW0obV92bS5nZXQoKSkpOworICAgICAg
ICAgICAgbG9ja2VyID0gYWRvcHRQdHIobmV3IEpTTG9ja0hvbGRlcihtX3ZtLmdldCgpKSk7CiAg
ICAgICAgICAgICBtX2dsb2JhbE9iamVjdC5zZXQoKm1fdm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVh
dGUoKm1fdm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIGpzTnVsbCgp
KSkpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFzaGltKQotICAgICAgICAgICAgc2hpbSA9
IGFkb3B0UHRyKG5ldyBBUElFbnRyeVNoaW0obV92bS5nZXQoKSkpOworICAgICAgICBpZiAoIWxv
Y2tlcikKKyAgICAgICAgICAgIGxvY2tlciA9IGFkb3B0UHRyKG5ldyBKU0xvY2tIb2xkZXIobV92
bS5nZXQoKSkpOwogCiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gZGVz
ZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCB2YWx1
ZUJ1ZmZlciwgdHJ1ZSk7CiAgICAgICAgIFZlY3RvcjxJREJLZXlEYXRhPiBpbmRleEtleXM7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjUwNjApCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0wMy0wNCAg
TWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdl
IEFQSSBzaGltcyBhbmQgSlNMb2NrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjk2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBKU0xvY2sgaXMgbm93IHRha2luZyBvbiBhbGwgb2YgQVBJRW50cnlTaGlt
J3MgcmVzcG9uc2liaWxpdGllcyBzaW5jZSB0aGVyZSBpcyBuZXZlciBhIHJlYXNvbiAKKyAgICAg
ICAgdG8gdGFrZSBqdXN0IHRoZSBKU0xvY2suIERpdHRvIGZvciBEcm9wQWxsTG9ja3MgYW5kIEFQ
SUNhbGxiYWNrU2hpbS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAg
ICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3Jj
ZVVzZXJHZXN0dXJlOl0pOgorCiAyMDE0LTAzLTAyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBTb3J0IE1hYyBwbGF0Zm9ybSBleHBvcnQgZmlsZXMgc28gdGhleSBt
ZXJnZSBiZXR0ZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2
aXNpb24gMTY1MDUzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw2IEBACiAjaW1wb3J0ICJXZWJNYWlsRGVsZWdh
dGUuaCIKICNpbXBvcnQgIldlYlJlc291cmNlLmgiCiAjaW1wb3J0ICJXZWJVSUtpdERlbGVnYXRl
LmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BUElTaGltcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRWRpdG9yQ2xpZW50Lmg+CkBAIC02OTQsOSArNjkzLDcgQEAgLSAoTlNTdHJpbmcgKilfc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcgogI2lmIFBMQVRGT1JNKElPUykKICAgICBBU1NFUlQoV2Vi
VGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
X3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwotICAgIC8vIE5lZWQgdG8gdXNlIHRoZSBmdWxsIGVu
dHJ5IHNoaW0gdG8gcHJldmVudCBjcmFzaGVzIGFyaXNpbmcgZnJvbSB0aGUgVUkgdGhyZWFkIGJl
aW5nIHVua25vd24KLSAgICAvLyB0byB0aGUgSlNDIEdDOiA8cmRhcjovL3Byb2JsZW0vMTE1NTMx
NzI+IENyYXNoIHdoZW4gYnJlYWtpbmcgaW4gdGhlIFdlYiBJbnNwZWN0b3IgZHVyaW5nIHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOgotICAgIEpTQzo6QVBJRW50cnlTaGlt
IGpzY0xvY2soZXhlYyk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIganNjTG9jayhleGVjKTsKICNl
bmRpZgogCiAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQoc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlKS5qc1ZhbHVlKCk7
Cg==
</data>
<flag name="review"
          id="249962"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>