<?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>142883</bug_id>
          
          <creation_ts>2015-03-19 15:52:07 -0700</creation_ts>
          <short_desc>eval(&quot;this.foo&quot;) causes a crash if this had not been initialized in a derived class&apos;s constructor</short_desc>
          <delta_ts>2015-04-01 03:07:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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>
          
          <blocked>140491</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1078665</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-19 15:52:07 -0700</bug_when>
    <thetext>new (class extends class {} {
    constructor() {
        eval(&quot;this.foo&quot;);
        super();
    }
}

new B;
print(&quot;PASS&quot;);

results in a crash because we fail to emit a TDZ check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080917</commentid>
    <comment_count>1</comment_count>
      <attachid>249655</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-28 01:21:52 -0700</bug_when>
    <thetext>Created attachment 249655
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081556</commentid>
    <comment_count>2</comment_count>
      <attachid>249795</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-30 21:15:46 -0700</bug_when>
    <thetext>Created attachment 249795
Fixes the crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081557</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-30 21:18:03 -0700</bug_when>
    <thetext>Attachment 249795 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:212:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 21 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>1081724</commentid>
    <comment_count>4</comment_count>
      <attachid>249795</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-31 12:09:49 -0700</bug_when>
    <thetext>Comment on attachment 249795
Fixes the crash

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081748</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-31 12:43:41 -0700</bug_when>
    <thetext>Committed r182198: &lt;http://trac.webkit.org/changeset/182198&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081919</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-31 23:57:06 -0700</bug_when>
    <thetext>Did this patch cause the below failures on Windows? The bot was broken due to r182200 at first, so the range is somewhat long - but I don&apos;t see anything else related checked in recently.

https://build.webkit.org/results/Apple%20Win%207%20Debug%20(Tests)/r182213%20(65485)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081957</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-01 03:07:44 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Did this patch cause the below failures on Windows? The bot was broken due
&gt; to r182200 at first, so the range is somewhat long - but I don&apos;t see
&gt; anything else related checked in recently.
&gt; 
&gt; https://build.webkit.org/results/Apple%20Win%207%20Debug%20(Tests)/
&gt; r182213%20(65485)/results.html

Seems unlikely as the code only runs when class syntax is used.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249655</attachid>
            <date>2015-03-28 01:21:52 -0700</date>
            <delta_ts>2015-03-30 21:15:43 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-142883-20150328012112.patch</filename>
            <type>text/plain</type>
            <size>25039</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
OGNhOTA5NTA3MDE3YzZjOTQwNGM4ZmNiOTczOGRiOTMyMDc5YzdhLi5iNjViZDA1MGMxM2ZiODVk
YTYxMDM3NGY2Y2UwYTM5N2I4YmQ4ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxNS0wMy0yOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBldmFsKCJ0aGlzLmZvbyIpIGNhdXNlcyBhIGNyYXNoIGlmIHRoaXMgaGFkIG5v
dCBiZWVuIGluaXRpYWxpemVkIGluIGEgZGVyaXZlZCBjbGFzcydzIGNvbnN0cnVjdG9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI4ODMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0V2
YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlRo
aXNOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZy
YW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwp
OgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OnRoaXNFeHByKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAg
ICAgICAoSlNDOjpUaGlzTm9kZTo6VGhpc05vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5o
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNl
UHJpbWFyeUV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAq
IHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OnRo
aXNFeHByKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hl
OjpnZXRQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRFdmFs
Q29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5oOgorICAgICAgICAoSlND
OjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1
dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxv
Y2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVu
Y0V2YWwpOgorCiAyMDE1LTAzLTI3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIHBhcnNlIGRvZXNuJ3QgaW5pdGlhbGl6ZSB0aGUgMTYtYml0IHZlcnNpb24gb2Yg
dGhlIEpTQyBwYXJzZXIgd2l0aCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAppbmRleCBlYTE3ZGZjNjQ0ODZk
NTU1MWViNDc0YmEzZTIyYzRkNTI3ZjFhYzBhLi5iMGU1YWFjOThkOGYyZTcwMmU3MWZlZTQ5OGUz
YTMzMWNmMTAzZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXZhbENvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFs
Q29kZUNhY2hlLmgKQEAgLTUwLDkgKzUwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUq
IGdldFNsb3coRXhlY1N0YXRlKiBleGVjLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lciwgYm9vbCBp
blN0cmljdENvbnRleHQsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUp
CisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlz
VERaTW9kZSwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKICAgICAg
ICAgewotICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKGV2YWxTb3VyY2UpLCBpblN0cmljdENv
bnRleHQpOworICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKGV2YWxTb3VyY2UpLCBpblN0cmlj
dENvbnRleHQsIHRoaXNURFpNb2RlKTsKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1dGFibGUp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA2MTU5Yzc5Yzk5MzFlY2Q0
NTg1ZjFhN2RlZmIxYTc2MTE1NzNlOGEzLi42N2U0ODYxOGRiYjIzM2ZhMTk1MjA1OTc3MWZmYTky
MDA1YzAwMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xNDQsNyArMTQ0LDggQEAgUmVnaXN0ZXJJRCogUmVnRXhw
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGQKIAogUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgaWYgKGdlbmVyYXRvci5j
b25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgV1RGUmVw
b3J0QmFja3RyYWNlKCk7CisgICAgaWYgKG1fc2hvdWxkQ2hlY2tURFogfHwgZ2VuZXJhdG9yLmNv
bnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAgICAgaWYg
KGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5kZXggZTMxZTdmMzdm
NDc3MWI5NDFkMDMyMTQzZjU4OGEyNjRhNzk3MGJjOS4uOGY4YmVhYzQxNDVhYzkyZWU5ZGZmYWY3
MTFiNTU2NWExYzU4NjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0xOTAsNyArMTkwLDkgQEAgSlNWYWx1ZSBE
ZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTVmFsdWUm
IGV4Y2VwdGlvbikKICAgICAKICAgICBEZWJ1Z2dlckV2YWxFbmFibGVyIGV2YWxFbmFibGVyKGNh
bGxGcmFtZSk7CiAgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOwotICAgIEV2YWxFeGVjdXRh
YmxlKiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShjYWxsRnJhbWUsIG1ha2VTb3VyY2Uo
c2NyaXB0KSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGF1
dG8mIGNvZGVCbG9jayA9ICpjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIFRoaXNURFpNb2Rl
IHRoaXNURFpNb2RlID0gY29kZUJsb2NrLnVubGlua2VkQ29kZUJsb2NrKCktPmNvbnN0cnVjdG9y
S2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA/IFRoaXNURFpNb2RlOjpDaGVjayA6
IFRoaXNURFpNb2RlOjpEb05vdENoZWNrOworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gRXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZShjYWxsRnJhbWUsIG1ha2VTb3VyY2Uoc2NyaXB0KSwgY29kZUJs
b2NrLmlzU3RyaWN0TW9kZSgpLCB0aGlzVERaTW9kZSk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigp
KSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IHZtLmV4Y2VwdGlvbigpOwogICAgICAgICB2bS5jbGVh
ckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggNTBlMDE1YjIyMjQyMWEwYzJhYmI4NDU3ZWQ1YmE3MDg3N2Y0
NDgyNS4uNDQ0MDc0OWVhMWVjN2I2N2NkOTIzYWU0M2Y1MTVkYTJhZTYwOTBlZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0x
MjYsNyArMTI2LDggQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAg
ICAvLyBJZiB0aGUgbGl0ZXJhbCBwYXJzZXIgYmFpbGVkLCBpdCBzaG91bGQgbm90IGhhdmUgdGhy
b3duIGV4Y2VwdGlvbnMuCiAgICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT52bSgpLmV4Y2VwdGlv
bigpKTsKIAotICAgICAgICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCku
Z2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNh
bGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHByb2dyYW1Tb3VyY2UsIGNhbGxlclNjb3Bl
Q2hhaW4pOworICAgICAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IGNhbGxlckNvZGVCbG9j
ay0+dW5saW5rZWRDb2RlQmxvY2soKS0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JL
aW5kOjpEZXJpdmVkID8gVGhpc1REWk1vZGU6OkNoZWNrIDogVGhpc1REWk1vZGU6OkRvTm90Q2hl
Y2s7CisgICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRT
bG93KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVy
Q29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHByb2dyYW1Tb3VyY2UsIGNh
bGxlclNjb3BlQ2hhaW4pOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCmluZGV4IGM0OGU0MWM1ODY1ZGZkNTAwNzRmNDlkYmExM2RjNzQ2Mjk2NjNlZDEuLjNh
ZTI4M2RjMjljNjIxNjdiNTgxN2U4MDNjM2QxODA4YzMzNGNkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0xNjQsMTAgKzE2NCwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIGluY0NvbnN0YW50cygpOwogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBWb2lkTm9kZShsb2NhdGlvbiwgZXhwcik7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2Rl
KiB0aGlzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAgIEV4cHJlc3Np
b25Ob2RlKiB0aGlzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBUaGlzVERa
TW9kZSB0aGlzVERaTW9kZSkKICAgICB7CiAgICAgICAgIHVzZXNUaGlzKCk7Ci0gICAgICAgIHJl
dHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFRoaXNOb2RlKGxvY2F0aW9uKTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgVGhpc05vZGUobG9jYXRpb24sIHRoaXNURFpNb2RlKTsK
ICAgICB9CiAgICAgRXhwcmVzc2lvbk5vZGUqIHN1cGVyRXhwcihjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2RlQ29uc3RydWN0b3JzLmgKaW5kZXggMDU3YmMzZDkyODA5ZjQ2YjA2MjcxYWMwMTJhYmVjZDZj
ODhhNjg0YS4uZjYxNjliMjA2MTEzMDc2M2Y4ZDA5ZTAzOTFhYzFlMjgwZjA2NDI2OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAgLTEw
Nyw4ICsxMDcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IFRoaXNOb2RlOjpUaGlzTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAg
IGlubGluZSBUaGlzTm9kZTo6VGhpc05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9j
YXRpb24pCisgICAgICAgICwgbV9zaG91bGRDaGVja1REWih0aGlzVERaTW9kZSA9PSBUaGlzVERa
TW9kZTo6Q2hlY2spCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCmluZGV4IDljNTE0MTZlMDgzOGQzZmUxODQ5MmRlODY0ZmZhMWM1Y2U4Mzc4ZGYuLjNjMzA0
YmVjNjlmZjNhMjdkYmU0ZDJhMjUxZGJlM2U4ZjUwNGVhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKQEAgLTQ0MCwxMCArNDQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgVGhpc05vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgVGhpc05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CisgICAgICAgIFRoaXNO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFRoaXNURFpNb2RlKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKworICAgICAgICBib29sIG1fc2hvdWxk
Q2hlY2tURFo7CiAgICAgfTsKIAogICAgIGNsYXNzIFN1cGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5k
ZXggNWY1MWRhMjRiNDM4NTM5YjdkNWIwZjQ5NTQxNDkwOTU0NjI3MjcyNi4uNDAzMTBiYzRlMmI1
NDM5ZjA5NTE2ZGEzMDU3MTcxM2M4YTI4MjA3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJz
ZXIoCiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1l
dGVycyogcGFyYW1ldGVycywgCiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJC
dWlsdGluTW9kZSBidWlsdGluTW9kZSwgCiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1v
ZGUsIEpTUGFyc2VyQ29kZVR5cGUgY29kZVR5cGUsIAotICAgIENvbnN0cnVjdG9yS2luZCBkZWZh
dWx0Q29uc3RydWN0b3JLaW5kKQorICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0
b3JLaW5kLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSkKICAgICA6IG1fdm0odm0pCiAgICAgLCBt
X3NvdXJjZSgmc291cmNlKQogICAgICwgbV9oYXNTdGFja092ZXJmbG93KGZhbHNlKQpAQCAtMjA5
LDYgKzIwOSw3IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoCiAgICAgLCBtX3NvdXJjZUVs
ZW1lbnRzKDApCiAgICAgLCBtX3BhcnNpbmdCdWlsdGluKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2Vy
QnVpbHRpbk1vZGU6OkJ1aWx0aW4pCiAgICAgLCBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQoZGVm
YXVsdENvbnN0cnVjdG9yS2luZCkKKyAgICAsIG1fdGhpc1REWk1vZGUodGhpc1REWk1vZGUpCiB7
CiAgICAgbV9sZXhlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGV4ZXJUeXBlPih2bSwgYnVpbHRpbk1v
ZGUpOwogICAgIG1fbGV4ZXItPnNldENvZGUoc291cmNlLCAmbV9wYXJzZXJBcmVuYSk7CkBAIC0y
MjkzLDcgKzIyOTQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgIGNhc2UgVEhJU1RP
S0VOOiB7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LnRoaXNFeHByKGxvY2F0
aW9uKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQudGhpc0V4cHIobG9jYXRpb24sIG1fdGhpc1RE
Wk1vZGUpOwogICAgIH0KICAgICBjYXNlIElERU5UOiB7CiAgICAgICAgIEpTVGV4dFBvc2l0aW9u
IHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAppbmRleCBkY2VjNTBhZjYwZjFlZjcxZjFhYTllNGY4OGQ4ZmM3ZDdmNTZhNzRhLi44
NTk5OGJmODc4MmU1MTZkNDUxMzY5MzI1OGZhMThmN2JlMzUzZjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTQyOSw3ICs0MjksNyBAQCBwdWJsaWM6CiAgICAgUGFy
c2VyKAogICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvblBhcmFtZXRlcnMq
LCBjb25zdCBJZGVudGlmaWVyJiwgCiAgICAgICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFy
c2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSwKLSAgICAgICAgQ29uc3RydWN0b3JLaW5k
IGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOworICAgICAg
ICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgVGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6RG9Ob3RDaGVjayk7CiAgICAgflBh
cnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+CkBAIC04NzYsNiArODc2
LDcgQEAgcHJpdmF0ZToKICAgICBTb3VyY2VFbGVtZW50cyogbV9zb3VyY2VFbGVtZW50czsKICAg
ICBib29sIG1fcGFyc2luZ0J1aWx0aW47CiAgICAgQ29uc3RydWN0b3JLaW5kIG1fZGVmYXVsdENv
bnN0cnVjdG9yS2luZDsKKyAgICBUaGlzVERaTW9kZSBtX3RoaXNURFpNb2RlOwogICAgIERlY2xh
cmF0aW9uU3RhY2tzOjpWYXJTdGFjayBtX3ZhckRlY2xhcmF0aW9uczsKICAgICBEZWNsYXJhdGlv
blN0YWNrczo6RnVuY3Rpb25TdGFjayBtX2Z1bmNEZWNsYXJhdGlvbnM7CiAgICAgSWRlbnRpZmll
clNldCBtX2NhcHR1cmVkVmFyaWFibGVzOwpAQCAtOTg4LDEzICs5ODksMTMgQEAgc3RkOjp1bmlx
dWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpT
UGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsCiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGUgY29kZVR5cGUsCiAgICAgUGFyc2VyRXJyb3ImIGVy
cm9yLCBKU1RleHRQb3NpdGlvbiogcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IDAsCi0gICAg
Q29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUpCisgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6
OkRvTm90Q2hlY2spCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIlBhcnNp
bmciKTsKIAogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgp
KTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7Ci0gICAg
ICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBu
YW1lLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3Rv
cktpbmQpOworICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwg
cGFyYW1ldGVycywgbmFtZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZh
dWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IpOwog
ICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUo
KTsKQEAgLTEwMDcsNyArMTAwOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJz
ZSgKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShkZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yIHNob3VsZCBhbHdheXMgdXNl
IGEgOC1iaXQgc3RyaW5nIik7Ci0gICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBz
b3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBjb2RlVHlw
ZSk7CisgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRl
cnMsIG5hbWUsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBjb2RlVHlwZSwgZGVmYXVsdENvbnN0
cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IpOwogICAgIGlmIChwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggM2E1NmIwMGNmZjZlZmMzN2Y5MWRjYmQ4
ZjIyNTNhNzE1YzMxNDQ2Ni4uMzFlZGU1YzY0MDdjN2Y5MGE0NDhjNTI0MmE2ZmZiMGRhMmU2ZGJm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMzcs
NiArMzcsNyBAQCBlbnVtIGNsYXNzIEpTUGFyc2VyQ29kZVR5cGUgeyBQcm9ncmFtLCBGdW5jdGlv
biB9OwogCiBlbnVtIGNsYXNzIENvbnN0cnVjdG9yS2luZCB7IE5vbmUsIEJhc2UsIERlcml2ZWQg
fTsKIGVudW0gY2xhc3MgU3VwZXJCaW5kaW5nIHsgTmVlZGVkLCBOb3ROZWVkZWQgfTsKK2VudW0g
Y2xhc3MgVGhpc1REWk1vZGUgeyBDaGVjaywgRG9Ob3RDaGVjayB9OwogCiBlbnVtIFByb2ZpbGVy
TW9kZSB7IFByb2ZpbGVyT2ZmLCBQcm9maWxlck9uIH07CiBlbnVtIERlYnVnZ2VyTW9kZSB7IERl
YnVnZ2VyT2ZmLCBEZWJ1Z2dlck9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCmluZGV4IDhiNDc1ODRiYTdiN2E0ZjI5YzBmMGUwZWFkNTdlMDczNGZh
YmZlMmYuLjhlNGY2MWI5NDk4OTBiOWJmNTQwMjllOTY2NjFlZWY1M2ExN2I1ODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xNDUsNyArMTQ1
LDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUxvZ2ljYWxOb3QoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVVuYXJ5UGx1cyhjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlVm9pZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyBy
ZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgdGhpc0V4cHIoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJikgeyByZXR1cm4gVGhpc0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSB0
aGlzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBUaGlzVERaTW9kZSkgeyByZXR1cm4gVGhp
c0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBzdXBlckV4cHIoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJikgeyByZXR1cm4gU3VwZXJFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVz
b2x2ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJl
dHVybiBSZXNvbHZlRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVy
YWwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gT2JqZWN0TGl0ZXJhbEV4cHI7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDA1MjY0
YmRhMDIxYTMxODNjMGMxMmQxMjU2N2E1YzNlZGU2NTY0NTcuLjMzNTQ3YWMxODUxNDJmZGUwN2Nj
ZWQwNWE4NTFkMjAzNmYxM2U1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmNwcApAQCAtNzUsOSArNzUsMTAgQEAgdGVtcGxhdGUgPD4gc3RydWN0IENhY2hl
VHlwZXM8VW5saW5rZWRFdmFsQ29kZUJsb2NrPiB7CiB9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5s
aW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4KLVVubGlua2VkQ29kZUJs
b2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBFeGVjdXRhYmxl
VHlwZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgRGVidWdn
ZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJy
b3ImIGVycm9yKQorVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsb2JhbENv
ZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsCisgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBEZWJ1Z2dl
ck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJv
ciYgZXJyb3IpCiB7Ci0gICAgU291cmNlQ29kZUtleSBrZXkgPSBTb3VyY2VDb2RlS2V5KHNvdXJj
ZSwgU3RyaW5nKCksIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Y29kZVR5cGUs
IGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlKTsKKyAgICBTb3VyY2VDb2RlS2V5IGtleSA9IFNvdXJj
ZUNvZGVLZXkoc291cmNlLCBTdHJpbmcoKSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5
cGU+Ojpjb2RlVHlwZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHRoaXNURFpNb2RlKTsKICAg
ICBTb3VyY2VDb2RlVmFsdWUqIGNhY2hlID0gbV9zb3VyY2VDb2RlLmZpbmRDYWNoZUFuZFVwZGF0
ZUFnZShrZXkpOwogICAgIGJvb2wgY2FuQ2FjaGUgPSBkZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJP
ZmYgJiYgcHJvZmlsZXJNb2RlID09IFByb2ZpbGVyT2ZmICYmICF2bS50eXBlUHJvZmlsZXIoKSAm
JiAhdm0uY29udHJvbEZsb3dQcm9maWxlcigpOwogICAgIGlmIChjYWNoZSAmJiBjYW5DYWNoZSkg
ewpAQCAtOTQsNyArOTUsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0
R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQogICAgIHR5cGVkZWYg
dHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290
Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9v
dE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBidWlsdGluTW9k
ZSwgc3RyaWN0TW9kZSwgCi0gICAgICAgIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9y
KTsKKyAgICAgICAgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJyb3IsIDAsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOwogICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkBAIC0xMjIsMTIgKzEyMywxMiBAQCBVbmxpbmtlZENvZGVCbG9j
a1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5
cGUqIGV4ZQogCiBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIENvZGVDYWNoZTo6Z2V0UHJvZ3Jh
bUNvZGVCbG9jayhWTSYgdm0sIFByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFy
c2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7Ci0gICAgcmV0dXJu
IGdldEdsb2JhbENvZGVCbG9jazxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+KHZtLCBleGVjdXRh
YmxlLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBkZWJ1Z2dlck1vZGUsIHByb2Zp
bGVyTW9kZSwgZXJyb3IpOworICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBidWlsdGluTW9kZSwgc3Ry
aWN0TW9kZSwgVGhpc1REWk1vZGU6OkRvTm90Q2hlY2ssIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJN
b2RlLCBlcnJvcik7CiB9CiAKLVVubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRF
dmFsQ29kZUJsb2NrKFZNJiB2bSwgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgSlNQYXJz
ZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2Zp
bGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK1VubGlua2VkRXZhbENv
ZGVCbG9jayogQ29kZUNhY2hlOjpnZXRFdmFsQ29kZUJsb2NrKFZNJiB2bSwgRXZhbEV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGlu
TW9kZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpN
b2RlIHRoaXNURFpNb2RlLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUg
cHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7Ci0gICAgcmV0dXJuIGdldEdsb2Jh
bENvZGVCbG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2Us
IGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJy
b3IpOworICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5saW5rZWRFdmFsQ29kZUJsb2Nr
Pih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgdGhpc1RE
Wk1vZGUsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CiB9CiAKIC8vIEZJWE1F
OiBUaGVyZSdzIG5vIG5lZWQgdG8gYWRkIHRoZSBmdW5jdGlvbidzIG5hbWUgdG8gdGhlIGtleSBo
ZXJlLiBJdCdzIGFscmVhZHkgaW4gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCBkOWJjY2I2NjNjNzA4NzMyMzc4ODNiZmFmZjBi
YTA0ZmM2NGI2ZjViLi43NzUyODgxMzg2OGQ5ZmYxOWU0NDA1ZmZlZDNmNTQzZjBmYWExMGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtNjEsMTMgKzYx
LDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgU291cmNlQ29kZUtleShjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVUeXBlIGNvZGVU
eXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSkKKyAgICBTb3VyY2VDb2RlS2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRp
bk1vZGUgYnVpbHRpbk1vZGUsCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2Rl
LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpEb05vdENoZWNrKQogICAg
ICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQogICAgICAgICAsIG1fbmFtZShuYW1lKQog
ICAgICAgICAsIG1fZmxhZ3MoCi0gICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
ZGVUeXBlKSA8PCAyKSAKLSAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWls
dGluTW9kZSkgPDwgMSkgCi0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdHJp
Y3RNb2RlKSkKKyAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpIDw8
IDMpCisgICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8
IDIpCisgICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwg
MSkKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRoaXNURFpNb2RlKSkKICAg
ICAgICAgLCBtX2hhc2goc3RyaW5nKCkuaW1wbCgpLT5oYXNoKCkpCiAgICAgewogICAgIH0KQEAg
LTI1Myw3ICsyNTUsNyBAQCBwdWJsaWM6CiAgICAgfkNvZGVDYWNoZSgpOwogCiAgICAgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKiBnZXRQcm9ncmFtQ29kZUJsb2NrKFZNJiwgUHJvZ3JhbUV4ZWN1
dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJT
dHJpY3RNb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKLSAg
ICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdldEV2YWxDb2RlQmxvY2soVk0mLCBFdmFsRXhlY3V0
YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0
cmljdE1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOworICAg
IFVubGlua2VkRXZhbENvZGVCbG9jayogZ2V0RXZhbENvZGVCbG9jayhWTSYsIEV2YWxFeGVjdXRh
YmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3Ry
aWN0TW9kZSwgVGhpc1REWk1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJF
cnJvciYpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBnZXRGdW5jdGlvbkV4ZWN1
dGFibGVGcm9tR2xvYmFsQ29kZShWTSYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VD
b2RlJiwgUGFyc2VyRXJyb3ImKTsKIAogICAgIHZvaWQgY2xlYXIoKQpAQCAtMjYzLDcgKzI2NSw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4gCi0gICAgVW5saW5rZWRDb2RlQmxvY2tU
eXBlKiBnZXRHbG9iYWxDb2RlQmxvY2soVk0mLCBFeGVjdXRhYmxlVHlwZSosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIERlYnVnZ2Vy
TW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOworICAgIFVubGlua2VkQ29kZUJsb2Nr
VHlwZSogZ2V0R2xvYmFsQ29kZUJsb2NrKFZNJiwgRXhlY3V0YWJsZVR5cGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBUaGlzVERa
TW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJik7CiAKICAgICBD
b2RlQ2FjaGVNYXAgbV9zb3VyY2VDb2RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggOTU1ZDgyZTNkM2ExYmRjYjYyNmQ2NTIzZGM0Yjg3
ZDFmNjNlYzkzOC4uN2YxZjRlYWE5ZjkwMzY0YzMwMjU2ZDdkODIzMDZkY2ZmNDk1MjExOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTM0Nyw3
ICszNDcsNyBAQCBKU09iamVjdCogU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlv
bkltcGwoCiAKIGNvbnN0IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRXZh
bEV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEV2YWxFeGVjdXRhYmxlKSB9OwogCi1FdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCkgCitFdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0lu
U3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUpCiB7CiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBp
ZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkgewpAQCAtMzU4LDcgKzM1OCw3IEBAIEV2
YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlCiAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkp
IEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQpOwogICAgIGV4
ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOwogCi0gICAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2xvYmFsT2JqZWN0LT5jcmVhdGVFdmFsQ29k
ZUJsb2NrKGV4ZWMsIGV4ZWN1dGFibGUpOworICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5s
aW5rZWRFdmFsQ29kZSA9IGdsb2JhbE9iamVjdC0+Y3JlYXRlRXZhbENvZGVCbG9jayhleGVjLCBl
eGVjdXRhYmxlLCB0aGlzVERaTW9kZSA9PSBUaGlzVERaTW9kZTo6Q2hlY2spOwogICAgIGlmICgh
dW5saW5rZWRFdmFsQ29kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCA5ZGNkMGEwZTg3MjJlMzEyOTQ1NzU3YmI5
YzE3YzZhNWE5YTIwNzk3Li40ODEwNGU0OGFjNTRlZGEzNmMxODc2MDdkZjExMjUwM2RhZjk3NmRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00NTMs
NyArNDUzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9ldmFsQ29kZUJsb2NrLmdldCgp
OwogICAgIH0KIAotICAgIHN0YXRpYyBFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSos
IGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0KTsKKyAgICBzdGF0aWMg
RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUpOwogCiAgICAgUGFzc1JlZlB0cjxKSVRD
b2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYTVlYWFmYjFiZTdjY2RmYjJkZmJm
MThjYWEzMmNkZTIyODI0YTBmNC4uNzZhMDQ1ZmIyYWRkMjJjYzExYWY2ZWM3YzYyMDE0ZTAzNGFi
ODZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtODIyLDE0ICs4MjIsMTUgQEAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUHJvZ3JhbUNvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGwKICAg
ICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7CiB9CiAKLVVubGlua2VkRXZhbENvZGVCbG9jayog
SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlKQorVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0ds
b2JhbE9iamVjdDo6Y3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRXZh
bEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGJvb2wgYWx3YXlzRW1pdFRoaXNURFpDaGVjaykKIHsK
KyAgICBmcHJpbnRmKHN0ZGVyciwgIkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJsb2Nr
IGV4ZWN1dGFibGU9JXBcbiIsIGV4ZWN1dGFibGUpOwogICAgIFBhcnNlckVycm9yIGVycm9yOwog
ICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNTdHJpY3RN
b2RlKCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6
Tm90U3RyaWN0OwogICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNEZWJ1Z2dlcigp
ID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOwogICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1v
ZGUgPSBoYXNQcm9maWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwogICAgIFVubGlu
a2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bSgpLmNvZGVDYWNoZSgpLT5n
ZXRFdmFsQ29kZUJsb2NrKAotICAgICAgICB2bSgpLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5z
b3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgCisg
ICAgICAgIHZtKCksIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBhbHdheXNFbWl0VGhpc1REWkNoZWNr
ID8gVGhpc1REWk1vZGU6OkNoZWNrIDogVGhpc1REWk1vZGU6OkRvTm90Q2hlY2ssCiAgICAgICAg
IGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CiAKICAgICBpZiAoaGFzRGVidWdn
ZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CmluZGV4IDVmMDhmZTQ4YThmYWNmNTU3YWVmZDE1ZmM2MDM1NzFkYzAwZDJhNDguLjUxNmY0ZWEy
YTVlYzMzNTVmNzFjMDAwOGI2ZmEwMzQyMjJjMjdlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNTk5LDcgKzU5OSw3IEBAIHB1Ymxp
YzoKICAgICB1bnNpZ25lZCB3ZWFrUmFuZG9tSW50ZWdlcigpIHsgcmV0dXJuIG1fd2Vha1JhbmRv
bS5nZXRVaW50MzIoKTsgfQogCiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVQ
cm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSosIFByb2dyYW1FeGVjdXRhYmxlKiwgSlNPYmplY3Qq
KiBleGNlcHRpb24pOwotICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogY3JlYXRlRXZhbENvZGVC
bG9jayhDYWxsRnJhbWUqLCBFdmFsRXhlY3V0YWJsZSopOworICAgIFVubGlua2VkRXZhbENvZGVC
bG9jayogY3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqLCBFdmFsRXhlY3V0YWJsZSosIGJv
b2wgYWx3YXlzRW1pdFRoaXNURFpDaGVjayk7CiAKIHByb3RlY3RlZDoKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
Y3BwCmluZGV4IGFkOTc2Y2M5NDE4MGQwNzhhOWNhMzc1ZTMzNWU5OTljMWZmMzVlZTguLmZhMmNm
MjZkMmZkZWU1ZmViYWZmMWE5ZGY4YzQwMWExYzFiNDEwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAK
QEAgLTU3MSw3ICs1NzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNFdmFsKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICBKU0dsb2JhbE9iamVjdCogY2Fs
bGVlR2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwotICAgIEV2
YWxFeGVjdXRhYmxlKiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291
cmNlKHMpLCBmYWxzZSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UocyksIGZhbHNlLCBUaGlzVERaTW9kZTo6RG9Ob3RD
aGVjayk7CiAgICAgaWYgKCFldmFsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249795</attachid>
            <date>2015-03-30 21:15:46 -0700</date>
            <delta_ts>2015-03-31 12:09:49 -0700</delta_ts>
            <desc>Fixes the crash</desc>
            <filename>bug-142883-20150330211504.patch</filename>
            <type>text/plain</type>
            <size>25680</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyMTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBA
CisyMDE1LTAzLTMwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IGV2YWwoInRoaXMuZm9vIikgY2F1c2VzIGEgY3Jhc2ggaWYgdGhpcyBoYWQgbm90IGJlZW4gaW5p
dGlhbGl6ZWQgaW4gYSBkZXJpdmVkIGNsYXNzJ3MgY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjg4MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjcmFzaCB3YXMgY2F1c2VkIGJ5
IGV2YWwgaW5zaWRlIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3Mgbm90IGNoZWNr
aW5nIFREWi4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IGFkZGluZyBhIHBhcnNlciBmbGFn
IHRoYXQgZm9yY2VzIHRoZSBURFogY2hlY2sgdG8gYmUgYWx3YXlzIGVtaXR0ZWQgd2hlbiBhY2Nl
c3NpbmcgInRoaXMiCisgICAgICAgIGluIGV2YWwgaW5zaWRlIGEgZGVyaXZlZCBjbGFzcycgY29u
c3RydWN0b3IuCisKKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUNhY2hlLmg6CisgICAgICAg
IChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldFNsb3cpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6
OkRlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKiBwYXJzZXIvQVNU
QnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjp0aGlzRXhwcik6CisgICAgICAg
ICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OlRo
aXNOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZXNzaW9uKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyTW9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5o
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjp0aGlzRXhwcik6CisgICAgICAgICogcnVu
dGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENv
ZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0UHJvZ3JhbUNvZGVCbG9jayk6
CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RXZhbENvZGVCbG9jayk6CisgICAgICAgICog
cnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6U291cmNl
Q29kZUtleSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxl
Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvY2xhc3Mtc3ludGF4LW5vLXRkei1pbi1ldmFsLmpzOiBBZGRlZC4KKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvY2xhc3Mtc3ludGF4LXRkei1pbi1ldmFsLmpzOiBBZGRlZC4KKwogMjAx
NS0wMy0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBFeHRl
bmRpbmcgbnVsbCBzaG91bGQgc2V0IF9fcHJvdG9fXyB0byBudWxsCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgJKHJldmlzaW9uIDE4MjE3
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDkgKzUwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUq
IGdldFNsb3coRXhlY1N0YXRlKiBleGVjLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lciwgYm9vbCBp
blN0cmljdENvbnRleHQsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUp
CisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlz
VERaTW9kZSwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKICAgICAg
ICAgewotICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKGV2YWxTb3VyY2UpLCBpblN0cmljdENv
bnRleHQpOworICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKGV2YWxTb3VyY2UpLCBpblN0cmlj
dENvbnRleHQsIHRoaXNURFpNb2RlKTsKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1dGFibGUp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE4MjE3
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIFJlZ2lzdGVySUQqIFJlZ0V4cE5v
ZGU6OmVtaXRCeXRlY29kZShCeXQKIAogUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAg
aWYgKGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2
ZWQpCisgICAgaWYgKG1fc2hvdWxkQ2hlY2tURFogfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRU
RFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAgICAgaWYgKGRzdCA9PSBnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAxODIxNzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDkgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFt
ZTo6ZXZhbHVhdGUoY29ucwogICAgIAogICAgIERlYnVnZ2VyRXZhbEVuYWJsZXIgZXZhbEVuYWJs
ZXIoY2FsbEZyYW1lKTsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7Ci0gICAgRXZhbEV4
ZWN1dGFibGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwgbWFrZVNv
dXJjZShzY3JpcHQpLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7Cisg
ICAgYXV0byYgY29kZUJsb2NrID0gKmNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgVGhpc1RE
Wk1vZGUgdGhpc1REWk1vZGUgPSBjb2RlQmxvY2sudW5saW5rZWRDb2RlQmxvY2soKS0+Y29uc3Ry
dWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkID8gVGhpc1REWk1vZGU6OkFs
d2F5c0NoZWNrIDogVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQ7CisgICAgRXZhbEV4ZWN1dGFi
bGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwgbWFrZVNvdXJjZShz
Y3JpcHQpLCBjb2RlQmxvY2suaXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlKTsKICAgICBpZiAo
dm0uZXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXhjZXB0aW9uID0gdm0uZXhjZXB0aW9uKCk7CiAg
ICAgICAgIHZtLmNsZWFyRXhjZXB0aW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE4MjE3MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyNiw3ICsxMjYsOCBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiAgICAgICAgIC8vIElmIHRoZSBsaXRlcmFsIHBhcnNlciBiYWlsZWQsIGl0IHNob3Vs
ZCBub3QgaGF2ZSB0aHJvd24gZXhjZXB0aW9ucy4KICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUt
PnZtKCkuZXhjZXB0aW9uKCkpOwogCi0gICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2
YWxDb2RlQ2FjaGUoKS5nZXRTbG93KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgcHJvZ3JhbVNvdXJj
ZSwgY2FsbGVyU2NvcGVDaGFpbik7CisgICAgICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0g
Y2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5jb25zdHJ1Y3RvcktpbmQoKSA9
PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgPyBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2sgOiBU
aGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZDsKKyAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9j
ay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCB0aGlzVERa
TW9kZSwgcHJvZ3JhbVNvdXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAgICAgICAgIGlmICghZXZh
bCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCShyZXZpc2lvbiAxODIxNzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTY0LDEwICsxNjQsMTAgQEAgcHVibGljOgogICAgICAgICBpbmNDb25zdGFudHMoKTsK
ICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgVm9pZE5vZGUobG9jYXRpb24sIGV4
cHIpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogdGhpc0V4cHIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbikKKyAgICBFeHByZXNzaW9uTm9kZSogdGhpc0V4cHIoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUpCiAgICAgewog
ICAgICAgICB1c2VzVGhpcygpOwotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBU
aGlzTm9kZShsb2NhdGlvbik7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFRo
aXNOb2RlKGxvY2F0aW9uLCB0aGlzVERaTW9kZSk7CiAgICAgfQogICAgIEV4cHJlc3Npb25Ob2Rl
KiBzdXBlckV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAko
cmV2aXNpb24gMTgyMTcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw4ICsxMDcsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRoaXNOb2RlOjpUaGlzTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAgIGlubGluZSBUaGlzTm9kZTo6VGhpc05v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgVGhpc1REWk1vZGUgdGhpc1REWk1v
ZGUpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgICAgICwgbV9zaG91
bGRDaGVja1REWih0aGlzVERaTW9kZSA9PSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2spCiAgICAg
ewogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNp
b24gMTgyMTcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NDAsMTAgKzQ0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIFRoaXNOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFRoaXNOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOworICAgICAgICBUaGlzTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBUaGlzVERaTW9kZSk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisKKyAgICAgICAgYm9vbCBtX3Nob3VsZENoZWNr
VERaOwogICAgIH07CiAKICAgICBjbGFzcyBTdXBlck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAko
cmV2aXNpb24gMTgyMTcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDcgQEAgUGFyc2VyPExleGVyVHlwZT46
OlBhcnNlcigKICAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCAKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3Ry
aWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBjb2RlVHlwZSwgCi0gICAgQ29uc3RydWN0b3JLaW5k
IGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQpCisgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25z
dHJ1Y3RvcktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQogICAgIDogbV92bSh2bSkKICAg
ICAsIG1fc291cmNlKCZzb3VyY2UpCiAgICAgLCBtX2hhc1N0YWNrT3ZlcmZsb3coZmFsc2UpCkBA
IC0yMDksNiArMjA5LDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcigKICAgICAsIG1fc291
cmNlRWxlbWVudHMoMCkKICAgICAsIG1fcGFyc2luZ0J1aWx0aW4oYnVpbHRpbk1vZGUgPT0gSlNQ
YXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikKICAgICAsIG1fZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZChkZWZhdWx0Q29uc3RydWN0b3JLaW5kKQorICAgICwgbV90aGlzVERaTW9kZSh0aGlzVERaTW9k
ZSkKIHsKICAgICBtX2xleGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWls
dGluTW9kZSk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsICZtX3BhcnNlckFyZW5hKTsK
QEAgLTIyOTMsNyArMjI5NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3MKICAgICBjYXNlIFRISVNUT0tFTjogewogICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9j
YXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4g
Y29udGV4dC50aGlzRXhwcihsb2NhdGlvbik7CisgICAgICAgIHJldHVybiBjb250ZXh0LnRoaXNF
eHByKGxvY2F0aW9uLCBtX3RoaXNURFpNb2RlKTsKICAgICB9CiAgICAgY2FzZSBJREVOVDogewog
ICAgICAgICBKU1RleHRQb3NpdGlvbiBzdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCShyZXZpc2lvbiAxODIxNzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MjksNyArNDI5LDcgQEAgcHVibGljOgogICAgIFBhcnNlcigKICAgICAgICAgVk0qLCBjb25z
dCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgSWRlbnRpZmllciYsIAog
ICAgICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2Vy
Q29kZVR5cGUsCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5k
ID0gQ29uc3RydWN0b3JLaW5kOjpOb25lKTsKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlID0g
VGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpOwogICAgIH5QYXJzZXIoKTsKIAogICAgIHRlbXBs
YXRlIDxjbGFzcyBQYXJzZWROb2RlPgpAQCAtODc2LDYgKzg3Niw3IEBAIHByaXZhdGU6CiAgICAg
U291cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CiAgICAgYm9vbCBtX3BhcnNpbmdCdWls
dGluOwogICAgIENvbnN0cnVjdG9yS2luZCBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQ7CisgICAg
VGhpc1REWk1vZGUgbV90aGlzVERaTW9kZTsKICAgICBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3Rh
Y2sgbV92YXJEZWNsYXJhdGlvbnM7CiAgICAgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3Rh
Y2sgbV9mdW5jRGVjbGFyYXRpb25zOwogICAgIElkZW50aWZpZXJTZXQgbV9jYXB0dXJlZFZhcmlh
YmxlczsKQEAgLTk4OCwxMyArOTg5LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBw
YXJzZSgKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1
aWx0aW5Nb2RlLAogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlckNv
ZGVUeXBlIGNvZGVUeXBlLAogICAgIFBhcnNlckVycm9yJiBlcnJvciwgSlNUZXh0UG9zaXRpb24q
IHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSAwLAotICAgIENvbnN0cnVjdG9yS2luZCBkZWZh
dWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lKQorICAgIENvbnN0cnVj
dG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCBU
aGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQogewog
ICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJQYXJzaW5nIik7CiAKICAgICBBU1NF
UlQoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJj
ZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewotICAgICAgICBQYXJzZXI8TGV4ZXI8
TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgYnVpbHRpbk1vZGUs
IHN0cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kKTsKKyAgICAgICAg
UGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUs
IGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBjb2RlVHlwZSwgZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZCwgdGhpc1REWk1vZGUpOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVz
dWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKICAgICAgICAgaWYgKHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CkBAIC0xMDA3LDcgKzEw
MDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVj
dG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXM6OmNy
ZWF0ZURlZmF1bHRDb25zdHJ1Y3RvciBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIp
OwotICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJz
LCBuYW1lLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUpOworICAgIFBhcnNlcjxM
ZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBidWlsdGlu
TW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNU
RFpNb2RlKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2Vy
LnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSkKICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJNb2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyTW9kZXMuaAkocmV2aXNpb24gMTgyMTcxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBA
IGVudW0gY2xhc3MgSlNQYXJzZXJDb2RlVHlwZSB7IFByb2dyYW0sIEYKIAogZW51bSBjbGFzcyBD
b25zdHJ1Y3RvcktpbmQgeyBOb25lLCBCYXNlLCBEZXJpdmVkIH07CiBlbnVtIGNsYXNzIFN1cGVy
QmluZGluZyB7IE5lZWRlZCwgTm90TmVlZGVkIH07CitlbnVtIGNsYXNzIFRoaXNURFpNb2RlIHsg
QWx3YXlzQ2hlY2ssIENoZWNrSWZOZWVkZWQgfTsKIAogZW51bSBQcm9maWxlck1vZGUgeyBQcm9m
aWxlck9mZiwgUHJvZmlsZXJPbiB9OwogZW51bSBEZWJ1Z2dlck1vZGUgeyBEZWJ1Z2dlck9mZiwg
RGVidWdnZXJPbiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50
YXhDaGVja2VyLmgJKHJldmlzaW9uIDE4MjE3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAg
cHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUxvZ2ljYWxOb3QoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZVVuYXJ5UGx1cyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlVm9pZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4g
VW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgdGhpc0V4cHIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJikgeyByZXR1cm4gVGhpc0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSB0aGlzRXhw
cihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBUaGlzVERaTW9kZSkgeyByZXR1cm4gVGhpc0V4cHI7
IH0KICAgICBFeHByZXNzaW9uVHlwZSBzdXBlckV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikg
eyByZXR1cm4gU3VwZXJFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVzb2x2ZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiBS
ZXNvbHZlRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gT2JqZWN0TGl0ZXJhbEV4cHI7IH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkocmV2aXNpb24g
MTgyMTcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzUsOSArNzUsMTAgQEAgdGVtcGxhdGUgPD4gc3RydWN0IENhY2hl
VHlwZXM8VW5saW5rZWRFdgogfTsKIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
VHlwZSwgY2xhc3MgRXhlY3V0YWJsZVR5cGU+Ci1VbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVD
YWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFi
bGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGlu
TW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dl
ck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK1Vu
bGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZt
LCBFeGVjdXRhYmxlVHlwZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAorICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBz
dHJpY3RNb2RlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgRGVidWdnZXJNb2RlIGRlYnVnZ2Vy
TW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewot
ICAgIFNvdXJjZUNvZGVLZXkga2V5ID0gU291cmNlQ29kZUtleShzb3VyY2UsIFN0cmluZygpLCBD
YWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OmNvZGVUeXBlLCBidWlsdGluTW9kZSwg
c3RyaWN0TW9kZSk7CisgICAgU291cmNlQ29kZUtleSBrZXkgPSBTb3VyY2VDb2RlS2V5KHNvdXJj
ZSwgU3RyaW5nKCksIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Y29kZVR5cGUs
IGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCB0aGlzVERaTW9kZSk7CiAgICAgU291cmNlQ29kZVZh
bHVlKiBjYWNoZSA9IG1fc291cmNlQ29kZS5maW5kQ2FjaGVBbmRVcGRhdGVBZ2Uoa2V5KTsKICAg
ICBib29sIGNhbkNhY2hlID0gZGVidWdnZXJNb2RlID09IERlYnVnZ2VyT2ZmICYmIHByb2ZpbGVy
TW9kZSA9PSBQcm9maWxlck9mZiAmJiAhdm0udHlwZVByb2ZpbGVyKCkgJiYgIXZtLmNvbnRyb2xG
bG93UHJvZmlsZXIoKTsKICAgICBpZiAoY2FjaGUgJiYgY2FuQ2FjaGUpIHsKQEAgLTk0LDcgKzk1
LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsbwogICAgIHR5cGVk
ZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBS
b290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8
Um9vdE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBidWlsdGlu
TW9kZSwgc3RyaWN0TW9kZSwgCi0gICAgICAgIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVy
cm9yKTsKKyAgICAgICAgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJyb3IsIDAsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOwogICAgIGlmICghcm9vdE5vZGUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMjIsMTIgKzEyMywxMiBAQCBVbmxpbmtlZENvZGVC
bG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvCiAKIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayog
Q29kZUNhY2hlOjpnZXRQcm9ncmFtQ29kZUJsb2NrKFZNJiB2bSwgUHJvZ3JhbUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9k
ZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIERlYnVnZ2VyTW9k
ZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBl
cnJvcikKIHsKLSAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkUHJvZ3JhbUNv
ZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgcmV0dXJuIGdldEdsb2Jh
bENvZGVCbG9jazxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3Vy
Y2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwg
ZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKIH0KIAotVW5saW5rZWRFdmFsQ29k
ZUJsb2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2soVk0mIHZtLCBFdmFsRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5N
b2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgRGVidWdnZXJN
b2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3Im
IGVycm9yKQorVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxv
Y2soVk0mIHZtLCBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1v
ZGUgc3RyaWN0TW9kZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIERlYnVnZ2VyTW9kZSBkZWJ1
Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikK
IHsKLSAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkRXZhbENvZGVCbG9jaz4o
dm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGRlYnVnZ2Vy
TW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgcmV0dXJuIGdldEdsb2JhbENvZGVCbG9j
azxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIGJ1aWx0aW5N
b2RlLCBzdHJpY3RNb2RlLCB0aGlzVERaTW9kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUs
IGVycm9yKTsKIH0KIAogLy8gRklYTUU6IFRoZXJlJ3Mgbm8gbmVlZCB0byBhZGQgdGhlIGZ1bmN0
aW9uJ3MgbmFtZSB0byB0aGUga2V5IGhlcmUuIEl0J3MgYWxyZWFkeSBpbiB0aGUgc291cmNlIGNv
ZGUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAkocmV2
aXNpb24gMTgyMTcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEzICs2MSwxNSBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIFNvdXJjZUNvZGVLZXkoY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBi
dWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUpCisgICAgU291cmNlQ29k
ZUtleShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIENv
ZGVUeXBlIGNvZGVUeXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAorICAgICAg
ICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUg
PSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKICAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291
cmNlQ29kZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgLCBtX2ZsYWdzKAotICAg
ICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkgPDwgMikgCi0gICAgICAg
ICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDEpIAotICAgICAg
ICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkpCisgICAgICAgICAgICAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVUeXBlKSA8PCAzKQorICAgICAgICAgICAgfCAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0aW5Nb2RlKSA8PCAyKQorICAgICAgICAgICAgfCAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0cmljdE1vZGUpIDw8IDEpCisgICAgICAgICAgICB8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPih0aGlzVERaTW9kZSkpCiAgICAgICAgICwgbV9oYXNoKHN0cmluZygp
LmltcGwoKS0+aGFzaCgpKQogICAgIHsKICAgICB9CkBAIC0yNTMsNyArMjU1LDcgQEAgcHVibGlj
OgogICAgIH5Db2RlQ2FjaGUoKTsKIAogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogZ2V0
UHJvZ3JhbUNvZGVCbG9jayhWTSYsIFByb2dyYW1FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29k
ZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgRGVidWdnZXJNb2Rl
LCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJik7Ci0gICAgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiBnZXRFdmFsQ29kZUJsb2NrKFZNJiwgRXZhbEV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2Rl
JiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBEZWJ1Z2dlck1vZGUs
IFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKKyAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sq
IGdldEV2YWxDb2RlQmxvY2soVk0mLCBFdmFsRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUm
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIFRoaXNURFpNb2RlLCBE
ZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKICAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZ2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0m
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiAK
ICAgICB2b2lkIGNsZWFyKCkKQEAgLTI2Myw3ICsyNjUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3MgRXhlY3V0
YWJsZVR5cGU+IAotICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2V0R2xvYmFsQ29kZUJsb2Nr
KFZNJiwgRXhlY3V0YWJsZVR5cGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGlu
TW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFy
c2VyRXJyb3ImKTsKKyAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdldEdsb2JhbENvZGVCbG9j
ayhWTSYsIEV4ZWN1dGFibGVUeXBlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRp
bk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgVGhpc1REWk1vZGUsIERlYnVnZ2VyTW9kZSwgUHJv
ZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwogCiAgICAgQ29kZUNhY2hlTWFwIG1fc291cmNlQ29k
ZTsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAkocmV2aXNpb24gMTgyMTcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw3ICszNDcsNyBAQCBKU09iamVj
dCogU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4CiAKIGNvbnN0IENsYXNzSW5mbyBFdmFs
RXhlY3V0YWJsZTo6c19pbmZvID0geyAiRXZhbEV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJs
ZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEV2YWxFeGVjdXRhYmxlKSB9OwogCi1F
dmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCkgCitFdmFsRXhl
Y3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhp
c1REWk1vZGUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQo
KSkgewpAQCAtMzU4LDcgKzM1OCw3IEBAIEV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKEUKICAgICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEV2YWxFeGVjdXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgRXZhbEV4ZWN1dGFi
bGUoZXhlYywgc291cmNlLCBpc0luU3RyaWN0Q29udGV4dCk7CiAgICAgZXhlY3V0YWJsZS0+Zmlu
aXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CiAKLSAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVu
bGlua2VkRXZhbENvZGUgPSBnbG9iYWxPYmplY3QtPmNyZWF0ZUV2YWxDb2RlQmxvY2soZXhlYywg
ZXhlY3V0YWJsZSk7CisgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2Rl
ID0gZ2xvYmFsT2JqZWN0LT5jcmVhdGVFdmFsQ29kZUJsb2NrKGV4ZWMsIGV4ZWN1dGFibGUsIHRo
aXNURFpNb2RlKTsKICAgICBpZiAoIXVubGlua2VkRXZhbENvZGUpCiAgICAgICAgIHJldHVybiAw
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShy
ZXZpc2lvbiAxODIxNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Myw3ICs0NTMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX2V2YWxDb2RlQmxvY2suZ2V0KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEV2YWxF
eGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaXNJ
blN0cmljdENvbnRleHQpOworICAgIHN0YXRpYyBFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNT
dGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBUaGlzVERa
TW9kZSk7CiAKICAgICBQYXNzUmVmUHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQogICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAJKHJldmlzaW9uIDE4MjE3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIyLDE1ICs4MjIsMTQg
QEAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdAogICAgIHJldHVybiB1
bmxpbmtlZENvZGVCbG9jazsKIH0KIAotVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9i
amVjdDo6Y3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRXZhbEV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUpCitVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0
OjpjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFdmFsRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUpCiB7CiAgICAgUGFyc2VyRXJy
b3IgZXJyb3I7CiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxl
LT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJT
dHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGhh
c0RlYnVnZ2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAgUHJvZmlsZXJNb2Rl
IHByb2ZpbGVyTW9kZSA9IGhhc1Byb2ZpbGVyKCkgPyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7
CiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29k
ZUNhY2hlKCktPmdldEV2YWxDb2RlQmxvY2soCi0gICAgICAgIHZtKCksIGV4ZWN1dGFibGUsIGV4
ZWN1dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJp
Y3RNb2RlLCAKLSAgICAgICAgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAg
ICAgICAgdm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVp
bHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHRoaXNURFpNb2RlLCBkZWJ1Z2dlck1v
ZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOwogCiAgICAgaWYgKGhhc0RlYnVnZ2VyKCkpCiAgICAg
ICAgIGRlYnVnZ2VyKCktPnNvdXJjZVBhcnNlZChjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJj
ZSgpLnByb3ZpZGVyKCksIGVycm9yLmxpbmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNp
b24gMTgyMTcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBjbGFzcyBSZWdFeHBQcm90b3R5
cGU7CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgTnVsbEdldHRlckZ1bmN0aW9uOwogY2xhc3Mg
TnVsbFNldHRlckZ1bmN0aW9uOworZW51bSBjbGFzcyBUaGlzVERaTW9kZTsKIHN0cnVjdCBBY3Rp
dmF0aW9uU3RhY2tOb2RlOwogc3RydWN0IEhhc2hUYWJsZTsKIApAQCAtNTk5LDcgKzYwMCw3IEBA
IHB1YmxpYzoKICAgICB1bnNpZ25lZCB3ZWFrUmFuZG9tSW50ZWdlcigpIHsgcmV0dXJuIG1fd2Vh
a1JhbmRvbS5nZXRVaW50MzIoKTsgfQogCiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBj
cmVhdGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSosIFByb2dyYW1FeGVjdXRhYmxlKiwgSlNP
YmplY3QqKiBleGNlcHRpb24pOwotICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogY3JlYXRlRXZh
bENvZGVCbG9jayhDYWxsRnJhbWUqLCBFdmFsRXhlY3V0YWJsZSopOworICAgIFVubGlua2VkRXZh
bENvZGVCbG9jayogY3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqLCBFdmFsRXhlY3V0YWJs
ZSosIFRoaXNURFpNb2RlKTsKIAogcHJvdGVjdGVkOgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
CShyZXZpc2lvbiAxODIxNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3MSw3ICs1NzEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFCiAgICAgfQogCiAgICAg
SlNHbG9iYWxPYmplY3QqIGNhbGxlZUdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKTsKLSAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpj
cmVhdGUoZXhlYywgbWFrZVNvdXJjZShzKSwgZmFsc2UpOworICAgIEV2YWxFeGVjdXRhYmxlKiBl
dmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKHMpLCBmYWxzZSwg
VGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpOwogICAgIGlmICghZXZhbCkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9jbGFzcy1zeW50YXgtbm8tdGR6LWluLWV2YWwuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9jbGFzcy1zeW50
YXgtbm8tdGR6LWluLWV2YWwuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2NsYXNzLXN5bnRheC1uby10ZHotaW4tZXZhbC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE4IEBACisKK2NsYXNzIEEgeworICAgIGNvbnN0cnVjdG9yKCkgeyB9
Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBjb25zdHJ1Y3RvcihzaG91bGRBY2Nlc3NU
aGlzKSB7CisgICAgICAgIHZhciBldmFsRnVuY3Rpb24gPSBldmFsOworICAgICAgICBldmFsRnVu
Y3Rpb24oInRoaXMiKTsKKyAgICAgICAgZXZhbCgic2hvdWxkQWNjZXNzVGhpcyA/IHRoaXMgOiBu
dWxsIik7CisgICAgICAgIHN1cGVyKCk7CisgICAgfQorfQorCitub0lubGluZShCKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICBuZXcgQihmYWxzZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2NsYXNzLXN5bnRheC10ZHotaW4tZXZhbC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2NsYXNz
LXN5bnRheC10ZHotaW4tZXZhbC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvY2xhc3Mtc3ludGF4LXRkei1pbi1ldmFsLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjYgQEAKKworY2xhc3MgQSB7CisgICAgY29uc3RydWN0b3IoKSB7IH0K
K30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICBl
dmFsKCJ0aGlzIik7CisgICAgICAgIHN1cGVyKCk7CisgICAgfQorfQorCitub0lubGluZShCKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHZhciBleGNlcHRpb247Cisg
ICAgdHJ5IHsKKyAgICAgICAgbmV3IEIoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGV4
Y2VwdGlvbiA9IGU7CisgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcikp
CisgICAgICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIHRocm93biBpbiBpdGVyYXRpb24gIiArIGkg
KyAiIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3IiOworICAgIH0KKyAgICBpZiAoIWV4Y2VwdGlv
bikKKyAgICAgICAgdGhyb3cgIkV4Y2VwdGlvbiBub3QgdGhyb3duIGZvciBhbiB1bml0aWFsaXpl
ZCB0aGlzIGF0IGl0ZXJhdGlvbiAiICsgaTsKK30K
</data>
<flag name="review"
          id="274630"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>