<?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>107996</bug_id>
          
          <creation_ts>2013-01-25 17:54:55 -0800</creation_ts>
          <short_desc>DFG variable event stream shouldn&apos;t use NodeIndex</short_desc>
          <delta_ts>2013-01-25 22:10:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>106868</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>817098</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-25 17:54:55 -0800</bug_when>
    <thetext>It should use something opaque instead, so that the DFG can change its mind about how to refer to nodes.  Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817099</commentid>
    <comment_count>1</comment_count>
      <attachid>184847</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-25 17:56:17 -0800</bug_when>
    <thetext>Created attachment 184847
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817124</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-25 22:10:10 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/140904</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184847</attachid>
            <date>2013-01-25 17:56:17 -0800</date>
            <delta_ts>2013-01-25 18:01:55 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>41960</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwODk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBA
CisyMDEzLTAxLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHZhcmlhYmxlIGV2ZW50IHN0cmVhbSBzaG91bGRuJ3QgdXNlIE5vZGVJbmRleAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3OTk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHR2VuZXJh
dGlvbkluZm8uaDoKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0aW9uSW5mbzo6R2VuZXJhdGlv
bkluZm8pOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25JbmZvOjppbml0Q29uc3RhbnQp
OgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25JbmZvOjppbml0SW50ZWdlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6R2VuZXJhdGlvbkluZm86OmluaXRKU1ZhbHVlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpHZW5lcmF0aW9uSW5mbzo6aW5pdENlbGwpOgorICAgICAgICAoSlNDOjpERkc6Okdl
bmVyYXRpb25JbmZvOjppbml0Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdGlv
bkluZm86OmluaXREb3VibGUpOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25JbmZvOjpp
bml0U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdGlvbkluZm86Om5vdGljZU9T
UkJpcnRoKToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0aW9uSW5mbzo6dXNlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHZW5lcmF0aW9uSW5mbzo6YXBwZW5kRmlsbCk6CisgICAgICAgIChKU0M6
OkRGRzo6R2VuZXJhdGlvbkluZm86OmFwcGVuZFNwaWxsKToKKyAgICAgICAgKEdlbmVyYXRpb25J
bmZvKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHTWluaWZpZWRHcmFwaC5o
OgorICAgICAgICAoSlNDOjpERkc6Ok1pbmlmaWVkR3JhcGg6OmF0KToKKyAgICAgICAgKE1pbmlm
aWVkR3JhcGgpOgorICAgICAgICAqIGRmZy9ERkdNaW5pZmllZElELmg6IEFkZGVkLgorICAgICAg
ICAoREZHKToKKyAgICAgICAgKE1pbmlmaWVkSUQpOgorICAgICAgICAoSlNDOjpERkc6Ok1pbmlm
aWVkSUQ6Ok1pbmlmaWVkSUQpOgorICAgICAgICAoSlNDOjpERkc6Ok1pbmlmaWVkSUQ6Om9wZXJh
dG9yISk6CisgICAgICAgIChKU0M6OkRGRzo6TWluaWZpZWRJRDo6bm9kZUluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpNaW5pZmllZElEOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6REZH
OjpNaW5pZmllZElEOjpvcGVyYXRvciE9KToKKyAgICAgICAgKEpTQzo6REZHOjpNaW5pZmllZElE
OjpvcGVyYXRvcjwpOgorICAgICAgICAoSlNDOjpERkc6Ok1pbmlmaWVkSUQ6Om9wZXJhdG9yPik6
CisgICAgICAgIChKU0M6OkRGRzo6TWluaWZpZWRJRDo6b3BlcmF0b3I8PSk6CisgICAgICAgIChK
U0M6OkRGRzo6TWluaWZpZWRJRDo6b3BlcmF0b3I+PSk6CisgICAgICAgIChKU0M6OkRGRzo6TWlu
aWZpZWRJRDo6aGFzaCk6CisgICAgICAgIChKU0M6OkRGRzo6TWluaWZpZWRJRDo6ZHVtcCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6TWluaWZpZWRJRDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgor
ICAgICAgICAoSlNDOjpERkc6Ok1pbmlmaWVkSUQ6OmludmFsaWRJRCk6CisgICAgICAgIChKU0M6
OkRGRzo6TWluaWZpZWRJRDo6b3RoZXJJbnZhbGlkSUQpOgorICAgICAgICAoSlNDOjpERkc6Ok1p
bmlmaWVkSUQ6OmZyb21CaXRzKToKKyAgICAgICAgKEpTQzo6REZHOjpNaW5pZmllZElESGFzaDo6
aGFzaCk6CisgICAgICAgIChKU0M6OkRGRzo6TWluaWZpZWRJREhhc2g6OmVxdWFsKToKKyAgICAg
ICAgKE1pbmlmaWVkSURIYXNoKToKKyAgICAgICAgKFdURik6CisgICAgICAgICogZGZnL0RGR01p
bmlmaWVkTm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TWluaWZpZWROb2RlOjpmcm9tTm9k
ZSk6CisgICAgICAgICogZGZnL0RGR01pbmlmaWVkTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6
Ok1pbmlmaWVkTm9kZTo6aWQpOgorICAgICAgICAoSlNDOjpERkc6Ok1pbmlmaWVkTm9kZTo6Y2hp
bGQxKToKKyAgICAgICAgKEpTQzo6REZHOjpNaW5pZmllZE5vZGU6OmdldElEKToKKyAgICAgICAg
KEpTQzo6REZHOjpNaW5pZmllZE5vZGU6OmNvbXBhcmVCeU5vZGVJbmRleCk6CisgICAgICAgIChN
aW5pZmllZE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNb3ZIaW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpzZXROb2RlSW5kZXhGb3JPcGVyYW5kKToKKyAgICAgICAgKiBkZmcvREZHVmFs
dWVTb3VyY2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbHVlU291cmNlOjpkdW1wKToKKyAg
ICAgICAgKiBkZmcvREZHVmFsdWVTb3VyY2UuaDoKKyAgICAgICAgKEpTQzo6REZHOjpWYWx1ZVNv
dXJjZTo6VmFsdWVTb3VyY2UpOgorICAgICAgICAoSlNDOjpERkc6OlZhbHVlU291cmNlOjppc1Nl
dCk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OmtpbmQpOgorICAgICAgICAoSlND
OjpERkc6OlZhbHVlU291cmNlOjppZCk6CisgICAgICAgIChWYWx1ZVNvdXJjZSk6CisgICAgICAg
IChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OmlkRnJvbUtpbmQpOgorICAgICAgICAoSlNDOjpERkc6
OlZhbHVlU291cmNlOjpraW5kRnJvbUlEKToKKyAgICAgICAgKiBkZmcvREZHVmFyaWFibGVFdmVu
dC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVFdmVudDo6ZHVtcCk6CisgICAgICAg
IChKU0M6OkRGRzo6VmFyaWFibGVFdmVudDo6ZHVtcEZpbGxJbmZvKToKKyAgICAgICAgKEpTQzo6
REZHOjpWYXJpYWJsZUV2ZW50OjpkdW1wU3BpbGxJbmZvKToKKyAgICAgICAgKiBkZmcvREZHVmFy
aWFibGVFdmVudC5oOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmZpbGxHUFIp
OgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmZpbGxQYWlyKToKKyAgICAgICAg
KEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpmaWxsRlBSKToKKyAgICAgICAgKEpTQzo6REZHOjpW
YXJpYWJsZUV2ZW50OjpzcGlsbCk6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVFdmVudDo6
ZGVhdGgpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6Om1vdkhpbnQpOgorICAg
ICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmlkKToKKyAgICAgICAgKFZhcmlhYmxlRXZl
bnQpOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDoKKyAgICAgICAg
KERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVFdmVudFN0cmVhbTo6dHJ5VG9TZXRD
b25zdGFudFJlY292ZXJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50U3RyZWFt
OjpyZWNvbnN0cnVjdCk6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaDoK
KyAgICAgICAgKFZhcmlhYmxlRXZlbnRTdHJlYW0pOgorCiAyMDEzLTAxLTI0ICBSb2dlciBGb25n
ICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVlMyMDEwIEphdmFzY3JpcHRDb3Jl
OiBDbGVhbiB1cCBwcm9wZXJ0eSBzaGVldHMsIGFkZCBhIEpTQyBzb2x1dGlvbiwgYWRkIHRlc3RS
ZWdFeHAgYW5kIHRlc3RBUEkgcHJvamVjdHMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCShyZXZpc2lvbiAxNDA4ODMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw1IEBACi0KIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzAsNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHSklUQ29t
cGlsZXIuaCIKKyNpbmNsdWRlICJERkdNaW5pZmllZElELmgiCiAjaW5jbHVkZSAiREZHVmFyaWFi
bGVFdmVudC5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaCIKICNpbmNsdWRl
ICJEYXRhRm9ybWF0LmgiCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3Nw
aWxsRm9ybWF0KERhdGFGb3JtYXROb25lKQogICAgICAgICAsIG1fY2FuRmlsbChmYWxzZSkKICAg
ICAgICAgLCBtX2Jvcm5Gb3JPU1IoZmFsc2UpCisgICAgICAgICwgbV9pc0NvbnN0YW50KGZhbHNl
KQogICAgIHsKICAgICB9CiAKQEAgLTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgICAgICBtX3Nw
aWxsRm9ybWF0ID0gRGF0YUZvcm1hdE5vbmU7CiAgICAgICAgIG1fY2FuRmlsbCA9IHRydWU7CiAg
ICAgICAgIG1fYm9ybkZvck9TUiA9IGZhbHNlOworICAgICAgICBtX2lzQ29uc3RhbnQgPSB0cnVl
OwogICAgICAgICBBU1NFUlQobV91c2VDb3VudCk7CiAgICAgfQogICAgIHZvaWQgaW5pdEludGVn
ZXIoTm9kZUluZGV4IG5vZGVJbmRleCwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyBncHIpCkBA
IC03Niw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jYW5GaWxsID0gZmFsc2U7CiAgICAg
ICAgIHUuZ3ByID0gZ3ByOwogICAgICAgICBtX2Jvcm5Gb3JPU1IgPSBmYWxzZTsKKyAgICAgICAg
bV9pc0NvbnN0YW50ID0gZmFsc2U7CiAgICAgICAgIEFTU0VSVChtX3VzZUNvdW50KTsKICAgICB9
CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTkwLDYgKzkzLDcgQEAgcHVibGljOgogICAgICAgICBt
X2NhbkZpbGwgPSBmYWxzZTsKICAgICAgICAgdS5ncHIgPSBncHI7CiAgICAgICAgIG1fYm9ybkZv
ck9TUiA9IGZhbHNlOworICAgICAgICBtX2lzQ29uc3RhbnQgPSBmYWxzZTsKICAgICAgICAgQVNT
RVJUKG1fdXNlQ291bnQpOwogICAgIH0KICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0xMDUs
NiArMTA5LDcgQEAgcHVibGljOgogICAgICAgICB1LnYudGFnR1BSID0gdGFnR1BSOwogICAgICAg
ICB1LnYucGF5bG9hZEdQUiA9IHBheWxvYWRHUFI7CiAgICAgICAgIG1fYm9ybkZvck9TUiA9IGZh
bHNlOworICAgICAgICBtX2lzQ29uc3RhbnQgPSBmYWxzZTsKICAgICAgICAgQVNTRVJUKG1fdXNl
Q291bnQpOwogICAgIH0KICNlbmRpZgpAQCAtMTE3LDYgKzEyMiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9jYW5GaWxsID0gZmFsc2U7CiAgICAgICAgIHUuZ3ByID0gZ3ByOwogICAgICAgICBtX2Jv
cm5Gb3JPU1IgPSBmYWxzZTsKKyAgICAgICAgbV9pc0NvbnN0YW50ID0gZmFsc2U7CiAgICAgICAg
IEFTU0VSVChtX3VzZUNvdW50KTsKICAgICB9CiAgICAgdm9pZCBpbml0Qm9vbGVhbihOb2RlSW5k
ZXggbm9kZUluZGV4LCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIGdwcikKQEAgLTEyOCw2ICsx
MzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY2FuRmlsbCA9IGZhbHNlOwogICAgICAgICB1Lmdw
ciA9IGdwcjsKICAgICAgICAgbV9ib3JuRm9yT1NSID0gZmFsc2U7CisgICAgICAgIG1faXNDb25z
dGFudCA9IGZhbHNlOwogICAgICAgICBBU1NFUlQobV91c2VDb3VudCk7CiAgICAgfQogICAgIHZv
aWQgaW5pdERvdWJsZShOb2RlSW5kZXggbm9kZUluZGV4LCB1aW50MzJfdCB1c2VDb3VudCwgRlBS
UmVnIGZwcikKQEAgLTE0MCw2ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY2FuRmlsbCA9
IGZhbHNlOwogICAgICAgICB1LmZwciA9IGZwcjsKICAgICAgICAgbV9ib3JuRm9yT1NSID0gZmFs
c2U7CisgICAgICAgIG1faXNDb25zdGFudCA9IGZhbHNlOwogICAgICAgICBBU1NFUlQobV91c2VD
b3VudCk7CiAgICAgfQogICAgIHZvaWQgaW5pdFN0b3JhZ2UoTm9kZUluZGV4IG5vZGVJbmRleCwg
dWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyBncHIpCkBAIC0xNTEsNiArMTU5LDcgQEAgcHVibGlj
OgogICAgICAgICBtX2NhbkZpbGwgPSBmYWxzZTsKICAgICAgICAgdS5ncHIgPSBncHI7CiAgICAg
ICAgIG1fYm9ybkZvck9TUiA9IGZhbHNlOworICAgICAgICBtX2lzQ29uc3RhbnQgPSBmYWxzZTsK
ICAgICAgICAgQVNTRVJUKG1fdXNlQ291bnQpOwogICAgIH0KIApAQCAtMTU5LDYgKzE2OCw4IEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIG5vdGljZU9TUkJpcnRoKFZhcmlhYmxlRXZlbnRTdHJl
YW0mIHN0cmVhbSwgTm9kZUluZGV4IG5vZGVJbmRleCwgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWdpc3RlcikKICAgICB7CisgICAgICAgIGlmIChtX2lzQ29uc3RhbnQpCisgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGlmIChtX25vZGVJbmRleCAhPSBub2RlSW5kZXgpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGlmICghYWxpdmUoKSkKQEAgLTE4NCw3ICsxOTUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIAogICAgICAgICBpZiAocmVzdWx0ICYmIG1fYm9ybkZvck9TUikgewogICAg
ICAgICAgICAgQVNTRVJUKG1fbm9kZUluZGV4ICE9IE5vTm9kZSk7Ci0gICAgICAgICAgICBzdHJl
YW0uYXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OmRlYXRoKG1fbm9kZUluZGV4KSk7CisgICAg
ICAgICAgICBzdHJlYW0uYXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OmRlYXRoKE1pbmlmaWVk
SUQobV9ub2RlSW5kZXgpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0zNjgsMjIgKzM3OSwyNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQg
YXBwZW5kRmlsbChWYXJpYWJsZUV2ZW50S2luZCBraW5kLCBWYXJpYWJsZUV2ZW50U3RyZWFtJiBz
dHJlYW0pCiAgICAgeworICAgICAgICBBU1NFUlQobV9ib3JuRm9yT1NSKTsKKyAgICAgICAgCiAg
ICAgICAgIGlmIChtX3JlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXREb3VibGUpIHsKLSAgICAg
ICAgICAgIHN0cmVhbS5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6ZmlsbEZQUihraW5kLCBt
X25vZGVJbmRleCwgdS5mcHIpKTsKKyAgICAgICAgICAgIHN0cmVhbS5hcHBlbmRBbmRMb2coVmFy
aWFibGVFdmVudDo6ZmlsbEZQUihraW5kLCBNaW5pZmllZElEKG1fbm9kZUluZGV4KSwgdS5mcHIp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CiAgICAgICAgIGlmIChtX3JlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB7Ci0gICAgICAg
ICAgICBzdHJlYW0uYXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OmZpbGxQYWlyKGtpbmQsIG1f
bm9kZUluZGV4LCB1LnYudGFnR1BSLCB1LnYucGF5bG9hZEdQUikpOworICAgICAgICAgICAgc3Ry
ZWFtLmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpmaWxsUGFpcihraW5kLCBNaW5pZmllZElE
KG1fbm9kZUluZGV4KSwgdS52LnRhZ0dQUiwgdS52LnBheWxvYWRHUFIpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIHN0cmVhbS5hcHBlbmRBbmRMb2co
VmFyaWFibGVFdmVudDo6ZmlsbEdQUihraW5kLCBtX25vZGVJbmRleCwgdS5ncHIsIG1fcmVnaXN0
ZXJGb3JtYXQpKTsKKyAgICAgICAgc3RyZWFtLmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50Ojpm
aWxsR1BSKGtpbmQsIE1pbmlmaWVkSUQobV9ub2RlSW5kZXgpLCB1LmdwciwgbV9yZWdpc3RlckZv
cm1hdCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGFwcGVuZFNwaWxsKFZhcmlhYmxlRXZlbnRL
aW5kIGtpbmQsIFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVhbSwgVmlydHVhbFJlZ2lzdGVyIHZp
cnR1YWxSZWdpc3RlcikKICAgICB7Ci0gICAgICAgIHN0cmVhbS5hcHBlbmRBbmRMb2coVmFyaWFi
bGVFdmVudDo6c3BpbGwoa2luZCwgbV9ub2RlSW5kZXgsIHZpcnR1YWxSZWdpc3RlciwgbV9zcGls
bEZvcm1hdCkpOworICAgICAgICBzdHJlYW0uYXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnNw
aWxsKGtpbmQsIE1pbmlmaWVkSUQobV9ub2RlSW5kZXgpLCB2aXJ0dWFsUmVnaXN0ZXIsIG1fc3Bp
bGxGb3JtYXQpKTsKICAgICB9CiAgICAgCiAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBub2RlIHdo
b3NlIHJlc3VsdCBpcyBzdG9yZWQgaW4gdGhpcyB2aXJ0dWFsIHJlZ2lzdGVyLgpAQCAtMzkzLDYg
KzQwNiw3IEBAIHByaXZhdGU6CiAgICAgRGF0YUZvcm1hdCBtX3NwaWxsRm9ybWF0OwogICAgIGJv
b2wgbV9jYW5GaWxsOwogICAgIGJvb2wgbV9ib3JuRm9yT1NSOworICAgIGJvb2wgbV9pc0NvbnN0
YW50OwogICAgIHVuaW9uIHsKICAgICAgICAgR1BSUmVnIGdwcjsKICAgICAgICAgRlBSUmVnIGZw
cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CShyZXZpc2lvbiAxNDA4ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM3LDcgKzIzNyw2IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAKICAgICBjb2RlQmxvY2soKS0+c2F2
ZUNvbXBpbGF0aW9uKG1fZ3JhcGgubV9jb21waWxhdGlvbik7CiAgICAgCi0gICAgY29kZUJsb2Nr
KCktPm1pbmlmaWVkREZHKCkuc2V0T3JpZ2luYWxHcmFwaFNpemUobV9ncmFwaC5zaXplKCkpOwog
ICAgIGNvZGVCbG9jaygpLT5zaHJpbmtUb0ZpdChDb2RlQmxvY2s6OkxhdGVTaHJpbmspOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkR3JhcGguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkR3JhcGguaAko
cmV2aXNpb24gMTQwODgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmll
ZEdyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSwxMCBAQCBjbGFzcyBNaW5pZmll
ZEdyYXBoIHsKIHB1YmxpYzoKICAgICBNaW5pZmllZEdyYXBoKCkgeyB9CiAKLSAgICBNaW5pZmll
ZE5vZGUqIGF0KE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgTWluaWZpZWROb2RlKiBhdChNaW5p
ZmllZElEIGlkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRyeUJpbmFyeVNlYXJjaDxNaW5pZmll
ZE5vZGUsIE5vZGVJbmRleD4oCi0gICAgICAgICAgICBtX2xpc3QsIG1fbGlzdC5zaXplKCksIG5v
ZGVJbmRleCwgTWluaWZpZWROb2RlOjpnZXRJbmRleCk7CisgICAgICAgIHJldHVybiB0cnlCaW5h
cnlTZWFyY2g8TWluaWZpZWROb2RlLCBNaW5pZmllZElEPigKKyAgICAgICAgICAgIG1fbGlzdCwg
bV9saXN0LnNpemUoKSwgaWQsIE1pbmlmaWVkTm9kZTo6Z2V0SUQpOwogICAgIH0KICAgICAKICAg
ICB2b2lkIGFwcGVuZChjb25zdCBNaW5pZmllZE5vZGUmIG5vZGUpCkBAIC01OCwxMyArNTgsOCBA
QCBwdWJsaWM6CiAgICAgICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgpOwogICAgIH0KICAgICAKLSAg
ICB2b2lkIHNldE9yaWdpbmFsR3JhcGhTaXplKHNpemVfdCBzaXplKSB7IG1fc2l6ZSA9IHNpemU7
IH0KLSAgICAKLSAgICBzaXplX3Qgb3JpZ2luYWxHcmFwaFNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KLQogcHJpdmF0ZToKICAgICBWZWN0b3I8TWluaWZpZWROb2RlPiBtX2xpc3Q7Ci0g
ICAgc2l6ZV90IG1fc2l6ZTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWRJRC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWRJRC5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZElELmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgREZHTWluaWZpZWRJRF9oCisjZGVmaW5lIERGR01pbmlmaWVkSURf
aAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKwor
I2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
KworY2xhc3MgR3JhcGg7CitjbGFzcyBNaW5pZmllZE5vZGU7CitjbGFzcyBWYWx1ZVNvdXJjZTsK
KworY2xhc3MgTWluaWZpZWRJRCB7CitwdWJsaWM6CisgICAgTWluaWZpZWRJRCgpIDogbV9pZChp
bnZhbGlkSUQoKSkgeyB9CisgICAgTWluaWZpZWRJRChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVR5cGUpIDogbV9pZChvdGhlckludmFsaWRJRCgpKSB7IH0KKyAgICBleHBsaWNpdCBNaW5pZmll
ZElEKE5vZGVJbmRleCBub2RlSW5kZXgpIDogbV9pZChub2RlSW5kZXgpIHsgfQorICAgIAorICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9pZCA9PSBpbnZhbGlkSUQoKTsgfQor
ICAgIAorICAgIC8vIFRoaXMgdGFrZXMgR3JhcGgmIHRvIHJlbWluZCB5b3UsIHRoYXQgeW91IHNo
b3VsZCBvbmx5IGJlIGNhbGxpbmcgdGhpcyBtZXRob2QKKyAgICAvLyB3aGVuIHlvdSdyZSBpbiB0
aGUgbWFpbiBjb21waWxhdGlvbiBwYXNzIChpLmUuIHlvdSBoYXZlIGEgZ3JhcGgpIGFuZCBub3Qg
bGF0ZXIsCisgICAgLy8gbGlrZSBkdXJpbmcgT1NSIGV4aXQgY29tcGlsYXRpb24uCisgICAgTm9k
ZUluZGV4IG5vZGVJbmRleChjb25zdCBHcmFwaCYpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PE5vZGVJbmRleD4obV9pZCk7IH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWlu
aWZpZWRJRCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faWQgPT0gb3RoZXIubV9pZDsgfQorICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBNaW5pZmllZElEJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9pZCAhPSBvdGhlci5tX2lkOyB9CisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgTWluaWZpZWRJ
RCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faWQgPCBvdGhlci5tX2lkOyB9CisgICAgYm9vbCBv
cGVyYXRvcj4oY29uc3QgTWluaWZpZWRJRCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faWQgPiBv
dGhlci5tX2lkOyB9CisgICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IE1pbmlmaWVkSUQmIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX2lkIDw9IG90aGVyLm1faWQ7IH0KKyAgICBib29sIG9wZXJhdG9y
Pj0oY29uc3QgTWluaWZpZWRJRCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faWQgPj0gb3RoZXIu
bV9pZDsgfQorICAgIAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBXVEY6Oklu
dEhhc2g8dWludHB0cl90Pjo6aGFzaChtX2lkKTsgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdCB7IG91dC5wcmludChSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KG1faWQpKSk7IH0KKyAgICAKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9pZCA9PSBvdGhlckludmFsaWRJRCgpOyB9CisgICAgCitw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNaW5pZmllZE5vZGU7CisgICAgZnJpZW5kIGNsYXNz
IFZhbHVlU291cmNlOworICAgIAorICAgIHN0YXRpYyB1aW50cHRyX3QgaW52YWxpZElEKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTEpKTsg
fQorICAgIHN0YXRpYyB1aW50cHRyX3Qgb3RoZXJJbnZhbGlkSUQoKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KHN0YXRpY19jYXN0PGludHB0cl90PigtMikpOyB9CisgICAgCisgICAg
c3RhdGljIE1pbmlmaWVkSUQgZnJvbUJpdHModWludHB0cl90IHZhbHVlKQorICAgIHsKKyAgICAg
ICAgTWluaWZpZWRJRCByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2lkID0gdmFsdWU7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdWludHB0cl90IG1faWQ7Cit9OworCitz
dHJ1Y3QgTWluaWZpZWRJREhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IE1p
bmlmaWVkSUQmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IE1pbmlmaWVkSUQmIGEsIGNvbnN0IE1pbmlmaWVkSUQmIGIpIHsgcmV0dXJuIGEg
PT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxl
dGVkID0gdHJ1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6REZHOjpNaW5pZmllZElEPiB7CisgICAgdHlw
ZWRlZiBKU0M6OkRGRzo6TWluaWZpZWRJREhhc2ggSGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxK
U0M6OkRGRzo6TWluaWZpZWRJRD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpERkc6Ok1p
bmlmaWVkSUQ+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKKworI2VuZGlmIC8vIERGR01pbmlmaWVkSURfaAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUuY3BwCShyZXZpc2lvbiAxNDA4ODMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM2LDcgKzM2LDcgQEAgTWluaWZpZWROb2RlIE1pbmlmaWVkTm9kZTo6ZnJvbU5v
ZGUoTm9kZQogewogICAgIEFTU0VSVChiZWxvbmdzSW5NaW5pZmllZEdyYXBoKG5vZGUub3AoKSkp
OwogICAgIE1pbmlmaWVkTm9kZSByZXN1bHQ7Ci0gICAgcmVzdWx0Lm1faW5kZXggPSBub2RlSW5k
ZXg7CisgICAgcmVzdWx0Lm1faWQgPSBNaW5pZmllZElEKG5vZGVJbmRleCk7CiAgICAgcmVzdWx0
Lm1fb3AgPSBub2RlLm9wKCk7CiAgICAgaWYgKGhhc0NoaWxkKG5vZGUub3AoKSkpCiAgICAgICAg
IHJlc3VsdC5tX2NoaWxkT3JJbmZvID0gbm9kZS5jaGlsZDEoKS5pbmRleCgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCShyZXZpc2lvbiAxNDA4
ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNs
dWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJERkdNaW5pZmllZElELmgiCiAjaW5jbHVkZSAi
REZHTm9kZVR5cGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtNTks
MTUgKzYwLDE1IEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgTWluaWZpZWROb2RlIGZyb21O
b2RlKE5vZGVJbmRleCwgTm9kZSYpOwogICAgIAotICAgIE5vZGVJbmRleCBpbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICBNaW5pZmllZElEIGlkKCkgY29uc3QgeyByZXR1cm4g
bV9pZDsgfQogICAgIE5vZGVUeXBlIG9wKCkgY29uc3QgeyByZXR1cm4gbV9vcDsgfQogICAgIAog
ICAgIGJvb2wgaGFzQ2hpbGQxKCkgY29uc3QgeyByZXR1cm4gaGFzQ2hpbGQobV9vcCk7IH0KICAg
ICAKLSAgICBOb2RlSW5kZXggY2hpbGQxKCkgY29uc3QKKyAgICBNaW5pZmllZElEIGNoaWxkMSgp
IGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaGFzQ2hpbGQobV9vcCkpOwotICAgICAgICBy
ZXR1cm4gbV9jaGlsZE9ySW5mbzsKKyAgICAgICAgcmV0dXJuIE1pbmlmaWVkSUQ6OmZyb21CaXRz
KG1fY2hpbGRPckluZm8pOwogICAgIH0KICAgICAKICAgICBib29sIGhhc0NvbnN0YW50KCkgY29u
c3QgeyByZXR1cm4gaGFzQ29uc3RhbnROdW1iZXIoKSB8fCBoYXNXZWFrQ29uc3RhbnQoKTsgfQpA
QCAtODgsMTAgKzg5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxK
U0NlbGwqPihtX2NoaWxkT3JJbmZvKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIE5vZGVJbmRl
eCBnZXRJbmRleChNaW5pZmllZE5vZGUqIG5vZGUpIHsgcmV0dXJuIG5vZGUtPmluZGV4KCk7IH0K
KyAgICBzdGF0aWMgTWluaWZpZWRJRCBnZXRJRChNaW5pZmllZE5vZGUqIG5vZGUpIHsgcmV0dXJu
IG5vZGUtPmlkKCk7IH0KICAgICBzdGF0aWMgYm9vbCBjb21wYXJlQnlOb2RlSW5kZXgoY29uc3Qg
TWluaWZpZWROb2RlJiBhLCBjb25zdCBNaW5pZmllZE5vZGUmIGIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYS5tX2luZGV4IDwgYi5tX2luZGV4OworICAgICAgICByZXR1cm4gYS5tX2lkIDwgYi5t
X2lkOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC0xMTYsOSArMTE3LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIHR5cGUgPT0gV2Vha0pTQ29uc3RhbnQ7CiAgICAgfQogICAgIAotICAg
IE5vZGVJbmRleCBtX2luZGV4OwotICAgIE5vZGVUeXBlIG1fb3A7CisgICAgTWluaWZpZWRJRCBt
X2lkOwogICAgIHVpbnRwdHJfdCBtX2NoaWxkT3JJbmZvOyAvLyBOb2RlcyBpbiB0aGUgbWluaWZp
ZWQgZ3JhcGggaGF2ZSBvbmx5IG9uZSBjaGlsZCBlYWNoLgorICAgIE5vZGVUeXBlIG1fb3A7CiB9
OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTQwODgzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3NTAsNyArMTc1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVN
b3ZIaW50KE5vZGUKICAgICBpZiAoY2hpbGQub3AoKSA9PSBVSW50MzJUb051bWJlcikKICAgICAg
ICAgbm90aWNlT1NSQmlydGgoY2hpbGQuY2hpbGQxKCkuaW5kZXgoKSwgYXQoY2hpbGQuY2hpbGQx
KCkpKTsKICAgICAKLSAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6Om1v
dkhpbnQobm9kZS5jaGlsZDEoKS5pbmRleCgpLCBub2RlLmxvY2FsKCkpKTsKKyAgICBtX3N0cmVh
bS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6Om1vdkhpbnQoTWluaWZpZWRJRChub2RlLmNo
aWxkMSgpLmluZGV4KCkpLCBub2RlLmxvY2FsKCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShCYXNpY0Jsb2NrJiBibG9jaykKQEAgLTIwNzEsOCArMjA3MSw5IEBAIFZhbHVl
UmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWwKICAgICAgICAgcmV0dXJuIHZhbHVl
U291cmNlLnZhbHVlUmVjb3ZlcnkoKTsKICAgICAgICAgCiAgICAgQVNTRVJUKHZhbHVlU291cmNl
LmtpbmQoKSA9PSBIYXZlTm9kZSk7Ci0gICAgaWYgKGlzQ29uc3RhbnQodmFsdWVTb3VyY2Uubm9k
ZUluZGV4KCkpKQotICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6Y29uc3RhbnQodmFsdWVP
ZkpTQ29uc3RhbnQodmFsdWVTb3VyY2Uubm9kZUluZGV4KCkpKTsKKyAgICBOb2RlSW5kZXggbm9k
ZUluZGV4ID0gdmFsdWVTb3VyY2UuaWQoKS5ub2RlSW5kZXgobV9qaXQuZ3JhcGgoKSk7CisgICAg
aWYgKGlzQ29uc3RhbnQobm9kZUluZGV4KSkKKyAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6
OmNvbnN0YW50KHZhbHVlT2ZKU0NvbnN0YW50KG5vZGVJbmRleCkpOwogICAgIAogICAgIHJldHVy
biBWYWx1ZVJlY292ZXJ5KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNDA4ODMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNDYs
NyArMjI0Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldE5vZGVJbmRleEZvck9wZXJh
bmQoTm9kZUluZGV4IG5vZGVJbmRleCwgaW50IG9wZXJhbmQpCiAgICAgewotICAgICAgICB2YWx1
ZVNvdXJjZVJlZmVyZW5jZUZvck9wZXJhbmQob3BlcmFuZCkgPSBWYWx1ZVNvdXJjZShub2RlSW5k
ZXgpOworICAgICAgICB2YWx1ZVNvdXJjZVJlZmVyZW5jZUZvck9wZXJhbmQob3BlcmFuZCkgPSBW
YWx1ZVNvdXJjZShNaW5pZmllZElEKG5vZGVJbmRleCkpOwogICAgIH0KICAgICAKICAgICAvLyBD
YWxsIHRoaXMgd2l0aCBjYXJlLCBzaW5jZSBpdCBib3RoIHJldHVybnMgYSByZWZlcmVuY2UgaW50
byBhbiBhcnJheQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNv
dXJjZS5jcHAJKHJldmlzaW9uIDE0MDg4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsdWVTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwzNSArMzAsMzUgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi12b2lkIFZhbHVlU291cmNlOjpkdW1w
KEZJTEUqIG91dCkgY29uc3QKK3ZvaWQgVmFsdWVTb3VyY2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGtpbmQoKSkgewogICAgIGNhc2UgU291cmNlTm90U2V0
OgotICAgICAgICBmcHJpbnRmKG91dCwgIk5vdFNldCIpOworICAgICAgICBvdXQucHJpbnQoIk5v
dFNldCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNvdXJjZUlzRGVhZDoKLSAgICAgICAg
ZnByaW50ZihvdXQsICJJc0RlYWQiKTsKKyAgICAgICAgb3V0LnByaW50KCJJc0RlYWQiKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBWYWx1ZUluSlNTdGFjazoKLSAgICAgICAgZnByaW50Zihv
dXQsICJJblN0YWNrIik7CisgICAgICAgIG91dC5wcmludCgiSW5TdGFjayIpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEludDMySW5KU1N0YWNrOgotICAgICAgICBmcHJpbnRmKG91dCwgIklu
dDMyIik7CisgICAgICAgIG91dC5wcmludCgiSW50MzIiKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDZWxsSW5KU1N0YWNrOgotICAgICAgICBmcHJpbnRmKG91dCwgIkNlbGwiKTsKKyAgICAg
ICAgb3V0LnByaW50KCJDZWxsIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQm9vbGVhbklu
SlNTdGFjazoKLSAgICAgICAgZnByaW50ZihvdXQsICJCb29sIik7CisgICAgICAgIG91dC5wcmlu
dCgiQm9vbCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvdWJsZUluSlNTdGFjazoKLSAg
ICAgICAgZnByaW50ZihvdXQsICJEb3VibGUiKTsKKyAgICAgICAgb3V0LnByaW50KCJEb3VibGUi
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcmd1bWVudHNTb3VyY2U6Ci0gICAgICAgIGZw
cmludGYob3V0LCAiQXJndW1lbnRzIik7CisgICAgICAgIG91dC5wcmludCgiQXJndW1lbnRzIik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSGF2ZU5vZGU6Ci0gICAgICAgIGZwcmludGYob3V0
LCAiTm9kZSglZCkiLCBtX25vZGVJbmRleCk7CisgICAgICAgIG91dC5wcmludCgiTm9kZSgiLCBt
X3ZhbHVlLCAiKSIpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5oCShyZXZpc2lvbiAxNDA4ODMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMxLDYgKzMxLDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkRGR0NvbW1v
bi5oIgorI2luY2x1ZGUgIkRGR01pbmlmaWVkSUQuaCIKICNpbmNsdWRlICJEYXRhRm9ybWF0Lmgi
CiAjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJWYWx1ZVJlY292ZXJ5Lmgi
CkBAIC0xMDgsMjEgKzEwOSwyMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNUcml2aWFsbHlSZWNv
dmVyYWJsCiBjbGFzcyBWYWx1ZVNvdXJjZSB7CiBwdWJsaWM6CiAgICAgVmFsdWVTb3VyY2UoKQot
ICAgICAgICA6IG1fbm9kZUluZGV4KG5vZGVJbmRleEZyb21LaW5kKFNvdXJjZU5vdFNldCkpCisg
ICAgICAgIDogbV92YWx1ZShpZEZyb21LaW5kKFNvdXJjZU5vdFNldCkpCiAgICAgewogICAgIH0K
ICAgICAKICAgICBleHBsaWNpdCBWYWx1ZVNvdXJjZShWYWx1ZVNvdXJjZUtpbmQgdmFsdWVTb3Vy
Y2VLaW5kKQotICAgICAgICA6IG1fbm9kZUluZGV4KG5vZGVJbmRleEZyb21LaW5kKHZhbHVlU291
cmNlS2luZCkpCisgICAgICAgIDogbV92YWx1ZShpZEZyb21LaW5kKHZhbHVlU291cmNlS2luZCkp
CiAgICAgewogICAgICAgICBBU1NFUlQoa2luZCgpICE9IFNvdXJjZU5vdFNldCk7CiAgICAgICAg
IEFTU0VSVChraW5kKCkgIT0gSGF2ZU5vZGUpOwogICAgIH0KICAgICAKLSAgICBleHBsaWNpdCBW
YWx1ZVNvdXJjZShOb2RlSW5kZXggbm9kZUluZGV4KQotICAgICAgICA6IG1fbm9kZUluZGV4KG5v
ZGVJbmRleCkKKyAgICBleHBsaWNpdCBWYWx1ZVNvdXJjZShNaW5pZmllZElEIGlkKQorICAgICAg
ICA6IG1fdmFsdWUoaWQubV9pZCkKICAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGVJ
bmRleCAhPSBOb05vZGUpOworICAgICAgICBBU1NFUlQoISFpZCk7CiAgICAgICAgIEFTU0VSVChr
aW5kKCkgPT0gSGF2ZU5vZGUpOwogICAgIH0KICAgICAKQEAgLTE0NCwxMiArMTQ1LDEyIEBAIHB1
YmxpYzoKICAgICAKICAgICBib29sIGlzU2V0KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBraW5kRnJvbU5vZGVJbmRleChtX25vZGVJbmRleCkgIT0gU291cmNlTm90U2V0OworICAgICAg
ICByZXR1cm4ga2luZEZyb21JRChtX3ZhbHVlKSAhPSBTb3VyY2VOb3RTZXQ7CiAgICAgfQogICAg
IAogICAgIFZhbHVlU291cmNlS2luZCBraW5kKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBraW5kRnJvbU5vZGVJbmRleChtX25vZGVJbmRleCk7CisgICAgICAgIHJldHVybiBraW5kRnJv
bUlEKG1fdmFsdWUpOwogICAgIH0KICAgICAKICAgICBib29sIGlzSW5KU1N0YWNrKCkgY29uc3Qg
eyByZXR1cm4gSlNDOjpERkc6OmlzSW5KU1N0YWNrKGtpbmQoKSk7IH0KQEAgLTE5MSwzMCArMTky
LDMwIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBOb2RlSW5kZXggbm9k
ZUluZGV4KCkgY29uc3QKKyAgICBNaW5pZmllZElEIGlkKCkgY29uc3QKICAgICB7CiAgICAgICAg
IEFTU0VSVChraW5kKCkgPT0gSGF2ZU5vZGUpOwotICAgICAgICByZXR1cm4gbV9ub2RlSW5kZXg7
CisgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgIH0KICAgICAKLSAgICB2b2lkIGR1bXAoRklM
RSogb3V0KSBjb25zdDsKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAK
IHByaXZhdGU6Ci0gICAgc3RhdGljIE5vZGVJbmRleCBub2RlSW5kZXhGcm9tS2luZChWYWx1ZVNv
dXJjZUtpbmQga2luZCkKKyAgICBzdGF0aWMgTWluaWZpZWRJRCBpZEZyb21LaW5kKFZhbHVlU291
cmNlS2luZCBraW5kKQogICAgIHsKICAgICAgICAgQVNTRVJUKGtpbmQgPj0gU291cmNlTm90U2V0
ICYmIGtpbmQgPCBIYXZlTm9kZSk7Ci0gICAgICAgIHJldHVybiBOb05vZGUgLSBraW5kOworICAg
ICAgICByZXR1cm4gTWluaWZpZWRJRDo6ZnJvbUJpdHMoTWluaWZpZWRJRDo6aW52YWxpZElEKCkg
LSBraW5kKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFZhbHVlU291cmNlS2luZCBraW5kRnJv
bU5vZGVJbmRleChOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIHN0YXRpYyBWYWx1ZVNvdXJjZUtp
bmQga2luZEZyb21JRChNaW5pZmllZElEIGlkKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQga2lu
ZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihOb05vZGUgLSBub2RlSW5kZXgpOwotICAgICAgICBp
ZiAoa2luZCA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSGF2ZU5vZGUpKQorICAgICAgICB1aW50
cHRyX3Qga2luZCA9IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oTWluaWZpZWRJRDo6aW52YWxpZElE
KCkgLSBpZC5tX2lkKTsKKyAgICAgICAgaWYgKGtpbmQgPj0gc3RhdGljX2Nhc3Q8dWludHB0cl90
PihIYXZlTm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gSGF2ZU5vZGU7CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxWYWx1ZVNvdXJjZUtpbmQ+KGtpbmQpOwogICAgIH0KICAgICAKLSAgICBO
b2RlSW5kZXggbV9ub2RlSW5kZXg7CisgICAgTWluaWZpZWRJRCBtX3ZhbHVlOwogfTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYXJpYWJsZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwCShyZXZpc2lvbiAxNDA4ODMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MiwxMCArNTIsMTAgQEAgdm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1wKFByaW50U3RyZWFtJiBvdQog
ICAgICAgICBkdW1wU3BpbGxJbmZvKCJTcGlsbCIsIG91dCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgRGVhdGg6Ci0gICAgICAgIG91dC5wcmludGYoIkRlYXRoKEAldSkiLCBub2RlSW5kZXgo
KSk7CisgICAgICAgIG91dC5wcmludCgiRGVhdGgoIiwgaWQoKSwgIikiKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNb3ZIaW50OgotICAgICAgICBvdXQucHJpbnRmKCJNb3ZIaW50KEAldSwg
ciVkKSIsIG5vZGVJbmRleCgpLCBvcGVyYW5kKCkpOworICAgICAgICBvdXQucHJpbnQoIk1vdkhp
bnQoIiwgaWQoKSwgIiwgciIsIG9wZXJhbmQoKSwgIikiKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBTZXRMb2NhbEV2ZW50OgogICAgICAgICBvdXQucHJpbnRmKCJTZXRMb2NhbChyJWQsICVz
KSIsIG9wZXJhbmQoKSwgZGF0YUZvcm1hdFRvU3RyaW5nKGRhdGFGb3JtYXQoKSkpOwpAQCAtNjgs
NyArNjgsNyBAQCB2b2lkIFZhcmlhYmxlRXZlbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91CiAKIHZv
aWQgVmFyaWFibGVFdmVudDo6ZHVtcEZpbGxJbmZvKGNvbnN0IGNoYXIqIG5hbWUsIFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50ZigiJXMoQCV1LCAiLCBuYW1lLCBub2Rl
SW5kZXgoKSk7CisgICAgb3V0LnByaW50KG5hbWUsICIoIiwgaWQoKSwgIiwgIik7CiAgICAgaWYg
KGRhdGFGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKQogICAgICAgICBvdXQucHJpbnRmKCIl
cyIsIEZQUkluZm86OmRlYnVnTmFtZShmcHIoKSkpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBA
IC04Miw3ICs4Miw3IEBAIHZvaWQgVmFyaWFibGVFdmVudDo6ZHVtcEZpbGxJbmZvKGNvbnN0IGMK
IAogdm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1wU3BpbGxJbmZvKGNvbnN0IGNoYXIqIG5hbWUsIFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50ZigiJXMoQCV1LCByJWQsICVz
KSIsIG5hbWUsIG5vZGVJbmRleCgpLCB2aXJ0dWFsUmVnaXN0ZXIoKSwgZGF0YUZvcm1hdFRvU3Ry
aW5nKGRhdGFGb3JtYXQoKSkpOworICAgIG91dC5wcmludChuYW1lLCAiKCIsIGlkKCksICIsIHIi
LCB2aXJ0dWFsUmVnaXN0ZXIoKSwgIiwgIiwgZGF0YUZvcm1hdFRvU3RyaW5nKGRhdGFGb3JtYXQo
KSksICIpIik7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCShyZXZpc2lvbiAxNDA4ODMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVk
ZSAiREZHQ29tbW9uLmgiCisjaW5jbHVkZSAiREZHTWluaWZpZWRJRC5oIgogI2luY2x1ZGUgIkRh
dGFGb3JtYXQuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHN0ZGlv
Lmg+CkBAIC05NSw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGV2ZW50OwogICAg
IH0KICAgICAKLSAgICBzdGF0aWMgVmFyaWFibGVFdmVudCBmaWxsR1BSKFZhcmlhYmxlRXZlbnRL
aW5kIGtpbmQsIE5vZGVJbmRleCBub2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklE
IGdwciwgRGF0YUZvcm1hdCBkYXRhRm9ybWF0KQorICAgIHN0YXRpYyBWYXJpYWJsZUV2ZW50IGZp
bGxHUFIoVmFyaWFibGVFdmVudEtpbmQga2luZCwgTWluaWZpZWRJRCBpZCwgTWFjcm9Bc3NlbWJs
ZXI6OlJlZ2lzdGVySUQgZ3ByLCBEYXRhRm9ybWF0IGRhdGFGb3JtYXQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoa2luZCA9PSBCaXJ0aFRvRmlsbCB8fCBraW5kID09IEZpbGwpOwogICAgICAgICBB
U1NFUlQoZGF0YUZvcm1hdCAhPSBEYXRhRm9ybWF0RG91YmxlKTsKQEAgLTEwMyw3ICsxMDQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghKGRhdGFGb3JtYXQgJiBEYXRhRm9ybWF0SlMpKTsK
ICNlbmRpZgogICAgICAgICBWYXJpYWJsZUV2ZW50IGV2ZW50OwotICAgICAgICBldmVudC5tX2lu
ZGV4ID0gbm9kZUluZGV4OworICAgICAgICBldmVudC5tX2lkID0gaWQ7CiAgICAgICAgIGV2ZW50
LnUuZ3ByID0gZ3ByOwogICAgICAgICBldmVudC5tX2tpbmQgPSBraW5kOwogICAgICAgICBldmVu
dC5tX2RhdGFGb3JtYXQgPSBkYXRhRm9ybWF0OwpAQCAtMTExLDExICsxMTIsMTEgQEAgcHVibGlj
OgogICAgIH0KICAgICAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIHN0YXRpYyBWYXJpYWJs
ZUV2ZW50IGZpbGxQYWlyKFZhcmlhYmxlRXZlbnRLaW5kIGtpbmQsIE5vZGVJbmRleCBub2RlSW5k
ZXgsIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OlJl
Z2lzdGVySUQgcGF5bG9hZEdQUikKKyAgICBzdGF0aWMgVmFyaWFibGVFdmVudCBmaWxsUGFpcihW
YXJpYWJsZUV2ZW50S2luZCBraW5kLCBNaW5pZmllZElEIGlkLCBNYWNyb0Fzc2VtYmxlcjo6UmVn
aXN0ZXJJRCB0YWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHBheWxvYWRHUFIpCiAg
ICAgewogICAgICAgICBBU1NFUlQoa2luZCA9PSBCaXJ0aFRvRmlsbCB8fCBraW5kID09IEZpbGwp
OwogICAgICAgICBWYXJpYWJsZUV2ZW50IGV2ZW50OwotICAgICAgICBldmVudC5tX2luZGV4ID0g
bm9kZUluZGV4OworICAgICAgICBldmVudC5tX2lkID0gaWQ7CiAgICAgICAgIGV2ZW50LnUucGFp
ci50YWdHUFIgPSB0YWdHUFI7CiAgICAgICAgIGV2ZW50LnUucGFpci5wYXlsb2FkR1BSID0gcGF5
bG9hZEdQUjsKICAgICAgICAgZXZlbnQubV9raW5kID0ga2luZDsKQEAgLTEyNCwzMiArMTI1LDMy
IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKICAgICAKLSAg
ICBzdGF0aWMgVmFyaWFibGVFdmVudCBmaWxsRlBSKFZhcmlhYmxlRXZlbnRLaW5kIGtpbmQsIE5v
ZGVJbmRleCBub2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgZnByKQorICAg
IHN0YXRpYyBWYXJpYWJsZUV2ZW50IGZpbGxGUFIoVmFyaWFibGVFdmVudEtpbmQga2luZCwgTWlu
aWZpZWRJRCBpZCwgTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCBmcHIpCiAgICAgewogICAg
ICAgICBBU1NFUlQoa2luZCA9PSBCaXJ0aFRvRmlsbCB8fCBraW5kID09IEZpbGwpOwogICAgICAg
ICBWYXJpYWJsZUV2ZW50IGV2ZW50OwotICAgICAgICBldmVudC5tX2luZGV4ID0gbm9kZUluZGV4
OworICAgICAgICBldmVudC5tX2lkID0gaWQ7CiAgICAgICAgIGV2ZW50LnUuZnByID0gZnByOwog
ICAgICAgICBldmVudC5tX2tpbmQgPSBraW5kOwogICAgICAgICBldmVudC5tX2RhdGFGb3JtYXQg
PSBEYXRhRm9ybWF0RG91YmxlOwogICAgICAgICByZXR1cm4gZXZlbnQ7CiAgICAgfQogICAgIAot
ICAgIHN0YXRpYyBWYXJpYWJsZUV2ZW50IHNwaWxsKFZhcmlhYmxlRXZlbnRLaW5kIGtpbmQsIE5v
ZGVJbmRleCBub2RlSW5kZXgsIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIsIERhdGFG
b3JtYXQgZm9ybWF0KQorICAgIHN0YXRpYyBWYXJpYWJsZUV2ZW50IHNwaWxsKFZhcmlhYmxlRXZl
bnRLaW5kIGtpbmQsIE1pbmlmaWVkSUQgaWQsIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIsIERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQmly
dGhUb1NwaWxsIHx8IGtpbmQgPT0gU3BpbGwpOwogICAgICAgICBWYXJpYWJsZUV2ZW50IGV2ZW50
OwotICAgICAgICBldmVudC5tX2luZGV4ID0gbm9kZUluZGV4OworICAgICAgICBldmVudC5tX2lk
ID0gaWQ7CiAgICAgICAgIGV2ZW50LnUudmlydHVhbFJlZyA9IHZpcnR1YWxSZWdpc3RlcjsKICAg
ICAgICAgZXZlbnQubV9raW5kID0ga2luZDsKICAgICAgICAgZXZlbnQubV9kYXRhRm9ybWF0ID0g
Zm9ybWF0OwogICAgICAgICByZXR1cm4gZXZlbnQ7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBW
YXJpYWJsZUV2ZW50IGRlYXRoKE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgc3RhdGljIFZhcmlh
YmxlRXZlbnQgZGVhdGgoTWluaWZpZWRJRCBpZCkKICAgICB7CiAgICAgICAgIFZhcmlhYmxlRXZl
bnQgZXZlbnQ7Ci0gICAgICAgIGV2ZW50Lm1faW5kZXggPSBub2RlSW5kZXg7CisgICAgICAgIGV2
ZW50Lm1faWQgPSBpZDsKICAgICAgICAgZXZlbnQubV9raW5kID0gRGVhdGg7CiAgICAgICAgIHJl
dHVybiBldmVudDsKICAgICB9CkBAIC0xNjMsMTAgKzE2NCwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBldmVudDsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFZhcmlhYmxlRXZlbnQgbW92
SGludChOb2RlSW5kZXggbm9kZUluZGV4LCBpbnQgb3BlcmFuZCkKKyAgICBzdGF0aWMgVmFyaWFi
bGVFdmVudCBtb3ZIaW50KE1pbmlmaWVkSUQgaWQsIGludCBvcGVyYW5kKQogICAgIHsKICAgICAg
ICAgVmFyaWFibGVFdmVudCBldmVudDsKLSAgICAgICAgZXZlbnQubV9pbmRleCA9IG5vZGVJbmRl
eDsKKyAgICAgICAgZXZlbnQubV9pZCA9IGlkOwogICAgICAgICBldmVudC51LnZpcnR1YWxSZWcg
PSBvcGVyYW5kOwogICAgICAgICBldmVudC5tX2tpbmQgPSBNb3ZIaW50OwogICAgICAgICByZXR1
cm4gZXZlbnQ7CkBAIC0xNzcsMTIgKzE3OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxWYXJpYWJsZUV2ZW50S2luZD4obV9raW5kKTsKICAgICB9CiAgICAgCi0gICAg
Tm9kZUluZGV4IG5vZGVJbmRleCgpIGNvbnN0CisgICAgTWluaWZpZWRJRCBpZCgpIGNvbnN0CiAg
ICAgewogICAgICAgICBBU1NFUlQobV9raW5kID09IEJpcnRoVG9GaWxsIHx8IG1fa2luZCA9PSBG
aWxsCiAgICAgICAgICAgICAgICB8fCBtX2tpbmQgPT0gQmlydGhUb1NwaWxsIHx8IG1fa2luZCA9
PSBTcGlsbAogICAgICAgICAgICAgICAgfHwgbV9raW5kID09IERlYXRoIHx8IG1fa2luZCA9PSBN
b3ZIaW50KTsKLSAgICAgICAgcmV0dXJuIG1faW5kZXg7CisgICAgICAgIHJldHVybiBtX2lkOwog
ICAgIH0KICAgICAKICAgICBEYXRhRm9ybWF0IGRhdGFGb3JtYXQoKSBjb25zdApAQCAtMjQ2LDcg
KzI0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFt
ZSwgUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBTcGlsbEluZm8oY29uc3QgY2hh
ciogbmFtZSwgUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKLSAgICBOb2RlSW5kZXggbV9pbmRl
eDsKKyAgICBNaW5pZmllZElEIG1faWQ7CiAgICAgCiAgICAgLy8gRm9yIEJpcnRoVG9GaWxsLCBG
aWxsOgogICAgIC8vICAgLSBUaGUgR1BSIG9yIEZQUiwgb3IgYSBHUFIgcGFpci4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFt
LmNwcAkocmV2aXNpb24gMTQwODgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YXJpYWJsZUV2ZW50U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkRGR1ZhbHVlU291cmNlLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC00Miw2ICs0Myw4IEBAIHZvaWQgVmFyaWFibGVF
dmVudFN0cmVhbTo6bG9nRXZlbnQoY29uc3QKICAgICBkYXRhTG9nRigiICIpOwogfQogCituYW1l
c3BhY2UgeworCiBzdHJ1Y3QgTWluaWZpZWRHZW5lcmF0aW9uSW5mbyB7CiAgICAgYm9vbCBmaWxs
ZWQ7IC8vIHRydWUgLT4gaW4gZ3ByL2Zwci9wYWlyLCBmYWxzZSAtPiBzcGlsbGVkCiAgICAgVmFy
aWFibGVSZXByZXNlbnRhdGlvbiB1OwpAQCAtNzUsNiArNzgsMzMgQEAgc3RydWN0IE1pbmlmaWVk
R2VuZXJhdGlvbkluZm8gewogICAgIH0KIH07CiAKK30gLy8gbmFtZXNwYWNlCisKK2Jvb2wgVmFy
aWFibGVFdmVudFN0cmVhbTo6dHJ5VG9TZXRDb25zdGFudFJlY292ZXJ5KFZhbHVlUmVjb3Zlcnkm
IHJlY292ZXJ5LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgTWluaWZpZWROb2RlKiBub2RlKSBjb25z
dAoreworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlm
IChub2RlLT5oYXNDb25zdGFudE51bWJlcigpKSB7CisgICAgICAgIHJlY292ZXJ5ID0gVmFsdWVS
ZWNvdmVyeTo6Y29uc3RhbnQoCisgICAgICAgICAgICBjb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0
ZXIoCisgICAgICAgICAgICAgICAgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBub2RlLT5j
b25zdGFudE51bWJlcigpKS5nZXQoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAKKyAgICBpZiAobm9kZS0+aGFzV2Vha0NvbnN0YW50KCkpIHsKKyAgICAgICAgcmVjb3Zlcnkg
PSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudChub2RlLT53ZWFrQ29uc3RhbnQoKSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAobm9kZS0+b3AoKSA9PSBQaGFudG9t
QXJndW1lbnRzKSB7CisgICAgICAgIHJlY292ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6YXJndW1lbnRz
VGhhdFdlcmVOb3RDcmVhdGVkKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25z
dHJ1Y3QoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
TWluaWZpZWRHcmFwaCYgZ3JhcGgsCiAgICAgdW5zaWduZWQgaW5kZXgsIE9wZXJhbmRzPFZhbHVl
UmVjb3Zlcnk+JiB2YWx1ZVJlY292ZXJpZXMpIGNvbnN0CkBAIC0xMDksNyArMTM5LDcgQEAgdm9p
ZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKIAogICAgIC8vIFN0ZXAgMjogQ3Jl
YXRlIGEgbW9jay11cCBvZiB0aGUgREZHJ3Mgc3RhdGUgYW5kIGV4ZWN1dGUgdGhlIGV2ZW50cy4K
ICAgICBPcGVyYW5kczxWYWx1ZVNvdXJjZT4gb3BlcmFuZFNvdXJjZXMoY29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCksIG51bVZhcmlhYmxlcyk7Ci0gICAgVmVjdG9yPE1pbmlmaWVkR2VuZXJhdGlv
bkluZm8sIDMyPiBnZW5lcmF0aW9uSW5mb3MoZ3JhcGgub3JpZ2luYWxHcmFwaFNpemUoKSk7Cisg
ICAgSGFzaE1hcDxNaW5pZmllZElELCBNaW5pZmllZEdlbmVyYXRpb25JbmZvPiBnZW5lcmF0aW9u
SW5mb3M7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gc3RhcnRJbmRleDsgaSA8IGluZGV4OyArK2kp
IHsKICAgICAgICAgY29uc3QgVmFyaWFibGVFdmVudCYgZXZlbnQgPSBhdChpKTsKICAgICAgICAg
c3dpdGNoIChldmVudC5raW5kKCkpIHsKQEAgLTExNywxNSArMTQ3LDIzIEBAIHZvaWQgVmFyaWFi
bGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgICAgICAgICAvLyBub3RoaW5nIHRvIGRv
LgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQmlydGhUb0ZpbGw6Ci0gICAgICAg
IGNhc2UgQmlydGhUb1NwaWxsOgorICAgICAgICBjYXNlIEJpcnRoVG9TcGlsbDogeworICAgICAg
ICAgICAgTWluaWZpZWRHZW5lcmF0aW9uSW5mbyBpbmZvOworICAgICAgICAgICAgaW5mby51cGRh
dGUoZXZlbnQpOworICAgICAgICAgICAgZ2VuZXJhdGlvbkluZm9zLmFkZChldmVudC5pZCgpLCBp
bmZvKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsbDoK
ICAgICAgICAgY2FzZSBTcGlsbDoKLSAgICAgICAgY2FzZSBEZWF0aDoKLSAgICAgICAgICAgIGdl
bmVyYXRpb25JbmZvc1tldmVudC5ub2RlSW5kZXgoKV0udXBkYXRlKGV2ZW50KTsKKyAgICAgICAg
Y2FzZSBEZWF0aDogeworICAgICAgICAgICAgSGFzaE1hcDxNaW5pZmllZElELCBNaW5pZmllZEdl
bmVyYXRpb25JbmZvPjo6aXRlcmF0b3IgaXRlciA9IGdlbmVyYXRpb25JbmZvcy5maW5kKGV2ZW50
LmlkKCkpOworICAgICAgICAgICAgQVNTRVJUKGl0ZXIgIT0gZ2VuZXJhdGlvbkluZm9zLmVuZCgp
KTsKKyAgICAgICAgICAgIGl0ZXItPnZhbHVlLnVwZGF0ZShldmVudCk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgICAgICBpZiAo
b3BlcmFuZFNvdXJjZXMuaGFzT3BlcmFuZChldmVudC5vcGVyYW5kKCkpKQotICAgICAgICAgICAg
ICAgIG9wZXJhbmRTb3VyY2VzLnNldE9wZXJhbmQoZXZlbnQub3BlcmFuZCgpLCBWYWx1ZVNvdXJj
ZShldmVudC5ub2RlSW5kZXgoKSkpOworICAgICAgICAgICAgICAgIG9wZXJhbmRTb3VyY2VzLnNl
dE9wZXJhbmQoZXZlbnQub3BlcmFuZCgpLCBWYWx1ZVNvdXJjZShldmVudC5pZCgpKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTZXRMb2NhbEV2ZW50OgogICAgICAgICAgICAg
aWYgKG9wZXJhbmRTb3VyY2VzLmhhc09wZXJhbmQoZXZlbnQub3BlcmFuZCgpKSkKQEAgLTEzNywx
NCArMTc1LDcgQEAgdm9pZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKICAgICAg
ICAgfQogICAgIH0KICAgICAKLSAgICAvLyBTdGVwIDM6IFJlY29yZCB0aGUgdGhpbmdzIHRoYXQg
YXJlIGxpdmUsIHNvIHdlIGNhbiBnZXQgdG8gdGhlbSBtb3JlIHF1aWNrbHkuCi0gICAgVmVjdG9y
PHVuc2lnbmVkLCAxNj4gaW5kaWNlc09mTGl2ZVRoaW5nczsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZ2VuZXJhdGlvbkluZm9zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChnZW5l
cmF0aW9uSW5mb3NbaV0uZm9ybWF0ICE9IERhdGFGb3JtYXROb25lKQotICAgICAgICAgICAgaW5k
aWNlc09mTGl2ZVRoaW5ncy5hcHBlbmQoaSk7Ci0gICAgfQotICAgIAotICAgIC8vIFN0ZXAgNDog
Q29tcHV0ZSB2YWx1ZSByZWNvdmVyaWVzIQorICAgIC8vIFN0ZXAgMzogQ29tcHV0ZSB2YWx1ZSBy
ZWNvdmVyaWVzIQogICAgIHZhbHVlUmVjb3ZlcmllcyA9IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBudW1WYXJpYWJsZXMpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBvcGVyYW5kU291cmNlcy5zaXplKCk7ICsraSkgewogICAgICAgICBW
YWx1ZVNvdXJjZSYgc291cmNlID0gb3BlcmFuZFNvdXJjZXNbaV07CkBAIC0xNTQsMjYgKzE4NSwx
MiBAQCB2b2lkIFZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KAogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBBU1NFUlQoc291cmNlLmtpbmQoKSA9PSBIYXZlTm9kZSk7Ci0gICAg
ICAgIE1pbmlmaWVkTm9kZSogbm9kZSA9IGdyYXBoLmF0KHNvdXJjZS5ub2RlSW5kZXgoKSk7Ci0g
ICAgICAgIGlmIChub2RlKSB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnROdW1i
ZXIoKSkgewotICAgICAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9IFZhbHVlUmVjb3Zl
cnk6OmNvbnN0YW50KAotICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmNvbnN0YW50UmVn
aXN0ZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCArIG5vZGUtPmNvbnN0YW50TnVtYmVyKCkpLmdldCgpKTsKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5oYXNXZWFrQ29uc3Rh
bnQoKSkgewotICAgICAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9IFZhbHVlUmVjb3Zl
cnk6OmNvbnN0YW50KG5vZGUtPndlYWtDb25zdGFudCgpKTsKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFBoYW50
b21Bcmd1bWVudHMpIHsKLSAgICAgICAgICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBWYWx1
ZVJlY292ZXJ5Ojphcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQoKTsKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBNaW5pZmllZE5v
ZGUqIG5vZGUgPSBncmFwaC5hdChzb3VyY2UuaWQoKSk7CisgICAgICAgIGlmICh0cnlUb1NldENv
bnN0YW50UmVjb3ZlcnkodmFsdWVSZWNvdmVyaWVzW2ldLCBjb2RlQmxvY2ssIG5vZGUpKQorICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBNaW5pZmllZEdlbmVyYXRpb25J
bmZvKiBpbmZvID0gJmdlbmVyYXRpb25JbmZvc1tzb3VyY2Uubm9kZUluZGV4KCldOwotICAgICAg
ICBpZiAoaW5mby0+Zm9ybWF0ID09IERhdGFGb3JtYXROb25lKSB7CisgICAgICAgIE1pbmlmaWVk
R2VuZXJhdGlvbkluZm8gaW5mbyA9IGdlbmVyYXRpb25JbmZvcy5nZXQoc291cmNlLmlkKCkpOwor
ICAgICAgICBpZiAoaW5mby5mb3JtYXQgPT0gRGF0YUZvcm1hdE5vbmUpIHsKICAgICAgICAgICAg
IC8vIFRyeSB0byBzZWUgaWYgdGhlcmUgaXMgYW4gYWx0ZXJuYXRlIG5vZGUgdGhhdCB3b3VsZCBj
b250YWluIHRoZSB2YWx1ZSB3ZSB3YW50LgogICAgICAgICAgICAgLy8gVGhlcmUgYXJlIGZvdXIg
cG9zc2liaWxpdGllczoKICAgICAgICAgICAgIC8vCkBAIC0xOTcsNjIgKzIxNCw2NCBAQCB2b2lk
IFZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KAogICAgICAgICAgICAgYm9vbCBmb3Vu
ZCA9IGZhbHNlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5v
cCgpID09IFVJbnQzMlRvTnVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgTm9kZUluZGV4IG5vZGVJ
bmRleCA9IG5vZGUtPmNoaWxkMSgpOwotICAgICAgICAgICAgICAgIG5vZGUgPSBncmFwaC5hdChu
b2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGluZm8gPSAmZ2VuZXJhdGlvbkluZm9zW25vZGVJ
bmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKGluZm8tPmZvcm1hdCAhPSBEYXRhRm9ybWF0Tm9u
ZSkKKyAgICAgICAgICAgICAgICBNaW5pZmllZElEIGlkID0gbm9kZS0+Y2hpbGQxKCk7CisgICAg
ICAgICAgICAgICAgaWYgKHRyeVRvU2V0Q29uc3RhbnRSZWNvdmVyeSh2YWx1ZVJlY292ZXJpZXNb
aV0sIGNvZGVCbG9jaywgZ3JhcGguYXQoaWQpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgaW5mbyA9IGdlbmVyYXRpb25JbmZvcy5nZXQoaWQpOworICAg
ICAgICAgICAgICAgIGlmIChpbmZvLmZvcm1hdCAhPSBEYXRhRm9ybWF0Tm9uZSkKICAgICAgICAg
ICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAoIWZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgTm9kZUluZGV4IGludDMy
VG9Eb3VibGVJbmRleCA9IE5vTm9kZTsKLSAgICAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWVU
b0ludDMySW5kZXggPSBOb05vZGU7Ci0gICAgICAgICAgICAgICAgTm9kZUluZGV4IHVpbnQzMlRv
TnVtYmVySW5kZXggPSBOb05vZGU7Ci0gICAgICAgICAgICAgICAgTm9kZUluZGV4IGRvdWJsZUFz
SW50MzJJbmRleCA9IE5vTm9kZTsKKyAgICAgICAgICAgICAgICBNaW5pZmllZElEIGludDMyVG9E
b3VibGVJRDsKKyAgICAgICAgICAgICAgICBNaW5pZmllZElEIHZhbHVlVG9JbnQzMklEOworICAg
ICAgICAgICAgICAgIE1pbmlmaWVkSUQgdWludDMyVG9OdW1iZXJJRDsKKyAgICAgICAgICAgICAg
ICBNaW5pZmllZElEIGRvdWJsZUFzSW50MzJJRDsKICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5kaWNlc09mTGl2ZVRoaW5ncy5zaXpl
KCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gaW5k
aWNlc09mTGl2ZVRoaW5nc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGdyYXBoLmF0
KG5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgSGFzaE1hcDxNaW5pZmllZElELCBNaW5pZmll
ZEdlbmVyYXRpb25JbmZvPjo6aXRlcmF0b3IgaXRlciA9IGdlbmVyYXRpb25JbmZvcy5iZWdpbigp
OworICAgICAgICAgICAgICAgIEhhc2hNYXA8TWluaWZpZWRJRCwgTWluaWZpZWRHZW5lcmF0aW9u
SW5mbz46Oml0ZXJhdG9yIGVuZCA9IGdlbmVyYXRpb25JbmZvcy5lbmQoKTsKKyAgICAgICAgICAg
ICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICAgICAgICAgICAgICBN
aW5pZmllZElEIGlkID0gaXRlci0+a2V5OworICAgICAgICAgICAgICAgICAgICBub2RlID0gZ3Jh
cGguYXQoaWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5oYXND
aGlsZDEoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgIT0gc291cmNlLm5vZGVJbmRleCgpKQorICAgICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgIT0gc291cmNlLmlkKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIt
PnZhbHVlLmZvcm1hdCA9PSBEYXRhRm9ybWF0Tm9uZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdGlvbkluZm9zW25v
ZGVJbmRleF0uZm9ybWF0ICE9IERhdGFGb3JtYXROb25lKTsKICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW50MzJUb0Rv
dWJsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGludDMyVG9Eb3VibGVJbmRleCA9IG5vZGVJ
bmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDMyVG9Eb3VibGVJRCA9IGlkOwogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmFs
dWVUb0ludDMyOgotICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVUb0ludDMySW5kZXggPSBu
b2RlSW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVRvSW50MzJJRCA9IGlkOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
VUludDMyVG9OdW1iZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJUb051bWJlcklu
ZGV4ID0gbm9kZUluZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyVG9OdW1iZXJJ
RCA9IGlkOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZUFz
SW50MzJJbmRleCA9IG5vZGVJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZUFz
SW50MzJJRCA9IGlkOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4VG9Vc2U7Ci0gICAgICAgICAgICAgICAg
aWYgKGRvdWJsZUFzSW50MzJJbmRleCAhPSBOb05vZGUpCi0gICAgICAgICAgICAgICAgICAgIG5v
ZGVJbmRleFRvVXNlID0gZG91YmxlQXNJbnQzMkluZGV4OwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGludDMyVG9Eb3VibGVJbmRleCAhPSBOb05vZGUpCi0gICAgICAgICAgICAgICAgICAgIG5v
ZGVJbmRleFRvVXNlID0gaW50MzJUb0RvdWJsZUluZGV4OwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKHZhbHVlVG9JbnQzMkluZGV4ICE9IE5vTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgbm9k
ZUluZGV4VG9Vc2UgPSB2YWx1ZVRvSW50MzJJbmRleDsKLSAgICAgICAgICAgICAgICBlbHNlIGlm
ICh1aW50MzJUb051bWJlckluZGV4ICE9IE5vTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgbm9k
ZUluZGV4VG9Vc2UgPSB1aW50MzJUb051bWJlckluZGV4OwotICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4VG9Vc2UgPSBOb05vZGU7CisgICAgICAgICAg
ICAgICAgTWluaWZpZWRJRCBpZFRvVXNlOworICAgICAgICAgICAgICAgIGlmICghIWRvdWJsZUFz
SW50MzJJRCkKKyAgICAgICAgICAgICAgICAgICAgaWRUb1VzZSA9IGRvdWJsZUFzSW50MzJJRDsK
KyAgICAgICAgICAgICAgICBlbHNlIGlmICghIWludDMyVG9Eb3VibGVJRCkKKyAgICAgICAgICAg
ICAgICAgICAgaWRUb1VzZSA9IGludDMyVG9Eb3VibGVJRDsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmICghIXZhbHVlVG9JbnQzMklEKQorICAgICAgICAgICAgICAgICAgICBpZFRvVXNlID0gdmFs
dWVUb0ludDMySUQ7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoISF1aW50MzJUb051bWJlcklE
KQorICAgICAgICAgICAgICAgICAgICBpZFRvVXNlID0gdWludDMyVG9OdW1iZXJJRDsKICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobm9kZUluZGV4VG9Vc2UgIT0gTm9Ob2Rl
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm8gPSAmZ2VuZXJhdGlvbkluZm9zW25vZGVJbmRl
eFRvVXNlXTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGluZm8tPmZvcm1hdCAhPSBEYXRh
Rm9ybWF0Tm9uZSk7CisgICAgICAgICAgICAgICAgaWYgKCEhaWRUb1VzZSkgeworICAgICAgICAg
ICAgICAgICAgICBpbmZvID0gZ2VuZXJhdGlvbkluZm9zLmdldChpZFRvVXNlKTsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGluZm8uZm9ybWF0ICE9IERhdGFGb3JtYXROb25lKTsKICAgICAg
ICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KQEAgLTI2MywyOCArMjgyLDI4IEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVj
b25zdHJ1Y3QoCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEFT
U0VSVChpbmZvLT5mb3JtYXQgIT0gRGF0YUZvcm1hdE5vbmUpOworICAgICAgICBBU1NFUlQoaW5m
by5mb3JtYXQgIT0gRGF0YUZvcm1hdE5vbmUpOwogICAgICAgICAKLSAgICAgICAgaWYgKGluZm8t
PmZpbGxlZCkgewotICAgICAgICAgICAgaWYgKGluZm8tPmZvcm1hdCA9PSBEYXRhRm9ybWF0RG91
YmxlKSB7Ci0gICAgICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gVmFsdWVSZWNvdmVy
eTo6aW5GUFIoaW5mby0+dS5mcHIpOworICAgICAgICBpZiAoaW5mby5maWxsZWQpIHsKKyAgICAg
ICAgICAgIGlmIChpbmZvLmZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAgICAgICAg
ICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gVmFsdWVSZWNvdmVyeTo6aW5GUFIoaW5mby51LmZw
cik7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSAgICAgICAgICAgIGlmIChpbmZvLT5mb3JtYXQgJiBEYXRhRm9ybWF0SlMp
IHsKLSAgICAgICAgICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0gPSBWYWx1ZVJlY292ZXJ5Ojpp
blBhaXIoaW5mby0+dS5wYWlyLnRhZ0dQUiwgaW5mby0+dS5wYWlyLnBheWxvYWRHUFIpOworICAg
ICAgICAgICAgaWYgKGluZm8uZm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB7CisgICAgICAgICAgICAg
ICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gVmFsdWVSZWNvdmVyeTo6aW5QYWlyKGluZm8udS5wYWly
LnRhZ0dQUiwgaW5mby51LnBhaXIucGF5bG9hZEdQUik7CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tp
XSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKGluZm8tPnUuZ3ByLCBpbmZvLT5mb3JtYXQpOworICAg
ICAgICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoaW5mby51
LmdwciwgaW5mby5mb3JtYXQpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9Ci0gICAgICAgICAgICBWYWx1ZVJl
Y292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihp
bmZvLT51LnZpcnR1YWxSZWcpLCBpbmZvLT5mb3JtYXQpOworICAgICAgICAgICAgVmFsdWVSZWNv
dmVyeTo6ZGlzcGxhY2VkSW5KU1N0YWNrKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oaW5m
by51LnZpcnR1YWxSZWcpLCBpbmZvLmZvcm1hdCk7CiAgICAgfQogICAgIAotICAgIC8vIFN0ZXAg
NTogTWFrZSBzdXJlIHRoYXQgZm9yIGxvY2FscyB0aGF0IGNvaW5jaWRlIHdpdGggdHJ1ZSBjYWxs
IGZyYW1lIGhlYWRlcnMsIHRoZSBleGl0IGNvbXBpbGVyIGtub3dzCisgICAgLy8gU3RlcCA0OiBN
YWtlIHN1cmUgdGhhdCBmb3IgbG9jYWxzIHRoYXQgY29pbmNpZGUgd2l0aCB0cnVlIGNhbGwgZnJh
bWUgaGVhZGVycywgdGhlIGV4aXQgY29tcGlsZXIga25vd3MKICAgICAvLyB0aGF0IHRob3NlIHZh
bHVlcyBkb24ndCBoYXZlIHRvIGJlIHJlY292ZXJlZC4gU2lnbmFsIHRoaXMgYnkgdXNpbmcgVmFs
dWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFjaygpCiAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxs
RnJhbWU7IGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGluZUNh
bGxGcmFtZSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplOyBpLS07KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJp
YWJsZUV2ZW50U3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmgJKHJldmlzaW9uIDE0MDg4MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgaW5kZXgsIE9wZXJh
bmRzPFZhbHVlUmVjb3Zlcnk+JikgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgYm9vbCB0cnlUb1Nl
dENvbnN0YW50UmVjb3ZlcnkoVmFsdWVSZWNvdmVyeSYsIENvZGVCbG9jayosIE1pbmlmaWVkTm9k
ZSopIGNvbnN0OworICAgIAogICAgIHZvaWQgbG9nRXZlbnQoY29uc3QgVmFyaWFibGVFdmVudCYp
OwogfTsKIAo=
</data>
<flag name="review"
          id="203721"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>