<?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>45837</bug_id>
          
          <creation_ts>2010-09-15 14:20:19 -0700</creation_ts>
          <short_desc>Use free variable analysis to improve activation performance</short_desc>
          <delta_ts>2010-09-15 17:05:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>279712</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-09-15 14:20:19 -0700</bug_when>
    <thetext>Use free variable analysis to improve activation performance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279719</commentid>
    <comment_count>1</comment_count>
      <attachid>67715</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-09-15 14:24:54 -0700</bug_when>
    <thetext>Created attachment 67715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279744</commentid>
    <comment_count>2</comment_count>
      <attachid>67715</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-09-15 14:52:54 -0700</bug_when>
    <thetext>Comment on attachment 67715
Patch

 214         void useVariable(const Identifier* ident, bool isEval)

Since there&apos;s only one caller to this function, and it just compares the property name to the global eval property name, I think you could remove the isEval flag and have this function compute it automatically.

 220         void collectFreeVariables(Scope* oldScope, bool shouldTrackCapturedVariables)

I think this would be clearer if you named &quot;oldScope&quot; &quot;nestedScope&quot; instead.

Might be worth a comment defining what a &quot;captured&quot; variable is.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279834</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-09-15 17:05:33 -0700</bug_when>
    <thetext>Committed r67583: &lt;http://trac.webkit.org/changeset/67583&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67715</attachid>
            <date>2010-09-15 14:24:54 -0700</date>
            <delta_ts>2010-09-15 14:52:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45837-20100915142453.patch</filename>
            <type>text/plain</type>
            <size>30995</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBhNDU5ZTNmMDZlNGVmNjA4NTQ2YmY2ZTYyYzVjMTQxNmNjYzk0NDY3Li40
ZDgxMTdhZDkzMDIyNGUyMDg3M2I1ZmU4YzkyOGFmYjMyOTRiM2JjIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjIgQEAKKzIwMTAtMDktMTUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgZnJl
ZSB2YXJpYWJsZSBhbmFseXNpcyB0byBpbXByb3ZlIGFjdGl2YXRpb24gcGVyZm9ybWFuY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1ODM3CisKKyAg
ICAgICAgQWRkcyBmcmVlIGFuZCBjYXB0dXJlZCB2YXJpYWJsZSB0cmFja2luZyB0byB0aGUgSlMg
cGFyc2VyLiAgVGhpcworICAgICAgICBhbGxvd3MgdXMgdG8gYXZvaWQgY29uc3RydWN0aW9uIG9m
IGFuIGFjdGl2YXRpb24gb2JqZWN0IGluIHNvbWUKKyAgICAgICAgY2FzZXMuICBGdXR1cmUgcGF0
Y2hlcyB3aWxsIG1ha2UgbW9yZSB1c2Ugb2YgdGhpcyBpbmZvcm1hdGlvbiB0bworICAgICAgICBp
bXByb3ZlIHRob3NlIGNhc2VzIHdoZXJlIGFjdGl2YXRpb25zIGFyZSBzdGlsbCBuZWVkZWQuCisK
KyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAqIHBhcnNlci9KU1BhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAo
SlNDOjpKU1BhcnNlcjo6U2NvcGU6OmRlY2xhcmVWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OkpT
UGFyc2VyOjpTY29wZTo6dXNlVmFyaWFibGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2Nv
cGU6OmNvbGxlY3RGcmVlVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3Bl
OjpjYXB0dXJlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZVJlZjo6
U2NvcGVSZWYpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGVSZWY6Om9wZXJhdG9yLT4p
OgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGVSZWY6OmluZGV4KToKKyAgICAgICAgKEpT
Qzo6SlNQYXJzZXI6OmN1cnJlbnRTY29wZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwdXNo
U2NvcGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cG9wU2NvcGUpOgorICAgICAgICAoSlND
OjpKU1BhcnNlcjo6cGFyc2VQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNl
VmFyRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlQ29uc3RE
ZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VUcnlTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6
SlNQYXJzZXI6OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OkpTUGFy
c2VyOjpwYXJzZVByaW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpTY29wZU5vZGVEYXRhOjpTY29wZU5vZGVEYXRhKToKKyAgICAgICAg
KEpTQzo6U2NvcGVOb2RlOjpTY29wZU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6
UHJvZ3JhbU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6RXZhbE5vZGU6OkV2YWxOb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6Om5lZWRzQWN0aXZhdGlvbik6
CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6aGFzQ2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmRpZEZpbmlzaFBh
cnNpbmcpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29t
cGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJ
bnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNh
bGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZv
ckNvbnN0cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmVlZHNBY3RpdmF0aW9uKToKKyAgICAgICAg
KEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6cmVjb3JkUGFyc2UpOgorCiAyMDEwLTA5LTE0ICBIeXVu
ZyBTb25nICA8YmVlcmd1bkBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBL
ZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGRiZjNjMDdlOTQz
OWIyZDU4NDEzMjNmMzcyOGRmM2I5ZTgyZDRmM2QuLjQwMDIzZjhiNjlkNzI2YzU0MDNkYzc5NmM4
NmIxYzc3OWVkODIzYjEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMTAwLDYg
KzEwMCw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSos
IEJpbmFyeU9wSW5mbz4gQmluYXJ5T3BlcmFuZDsKICAgICAKICAgICBzdGF0aWMgY29uc3QgYm9v
bCBDcmVhdGVzQVNUID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBOZWVkc0ZyZWVWYXJp
YWJsZUluZm8gPSB0cnVlOwogCiAgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaW5hcnlOb2RlKGlu
dCB0b2tlbiwgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiwgc3RkOjpw
YWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPik7CiAgICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VGdW5jdGlvbkNhbGxOb2RlKEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2Rl
KiBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pT
UGFyc2VyLmNwcAppbmRleCA4MjA4MTFlNGViMDM2ZmFiNmRiNDc0ZjBiZmE4YzBjNGFhOTk2NTg1
Li42YWJiYTlmYzlmMjA5NDExMjRhMzhkYzFkZTc5YjJlN2Y1NDhiOWEwIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9KU1BhcnNlci5jcHAKQEAgLTE5OSw2ICsxOTksODEgQEAgcHJpdmF0ZToKICAgICBpbnQg
bV9hc3NpZ25tZW50Q291bnQ7CiAgICAgaW50IG1fbm9uTEhTQ291bnQ7CiAgICAgYm9vbCBtX3N5
bnRheEFscmVhZHlWYWxpZGF0ZWQ7CisKKyAgICBzdHJ1Y3QgU2NvcGUgeworICAgICAgICBTY29w
ZSgpCisgICAgICAgICAgICA6IG1fdXNlc0V2YWwoZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgdm9pZCBkZWNsYXJlVmFyaWFibGUoY29uc3QgSWRlbnRpZmll
ciogaWRlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fZGVjbGFyZWRWYXJpYWJsZXMuYWRk
KGlkZW50LT51c3RyaW5nKCkuaW1wbCgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dm9pZCB1c2VWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0V2YWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fdXNlc0V2YWwgfD0gaXNFdmFsOworICAgICAgICAgICAg
bV91c2VkVmFyaWFibGVzLmFkZChpZGVudC0+dXN0cmluZygpLmltcGwoKSk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHZvaWQgY29sbGVjdEZyZWVWYXJpYWJsZXMoU2NvcGUqIG9sZFNj
b3BlLCBib29sIHNob3VsZFRyYWNrQ2FwdHVyZWRWYXJpYWJsZXMpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChvbGRTY29wZS0+bV91c2VzRXZhbCkKKyAgICAgICAgICAgICAgICBtX3VzZXNF
dmFsID0gdHJ1ZTsKKyAgICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIGVuZCA9IG9s
ZFNjb3BlLT5tX3VzZWRWYXJpYWJsZXMuZW5kKCk7CisgICAgICAgICAgICBmb3IgKElkZW50aWZp
ZXJTZXQ6Oml0ZXJhdG9yIHB0ciA9IG9sZFNjb3BlLT5tX3VzZWRWYXJpYWJsZXMuYmVnaW4oKTsg
cHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICAgICAgICAgICAgICBpZiAob2xkU2NvcGUtPm1fZGVj
bGFyZWRWYXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQoKnB0cik7CisgICAgICAg
ICAgICAgICAgaWYgKHNob3VsZFRyYWNrQ2FwdHVyZWRWYXJpYWJsZXMpCisgICAgICAgICAgICAg
ICAgICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMuYWRkKCpwdHIpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMoKSB7IHJl
dHVybiBtX2NhcHR1cmVkVmFyaWFibGVzOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBt
X3VzZXNFdmFsOworICAgICAgICBJZGVudGlmaWVyU2V0IG1fZGVjbGFyZWRWYXJpYWJsZXM7Cisg
ICAgICAgIElkZW50aWZpZXJTZXQgbV91c2VkVmFyaWFibGVzOworICAgICAgICBJZGVudGlmaWVy
U2V0IG1fY2FwdHVyZWRWYXJpYWJsZXM7CisgICAgfTsKKyAgICAKKyAgICB0eXBlZGVmIFZlY3Rv
cjxTY29wZSwgMTA+IFNjb3BlU3RhY2s7CisKKyAgICBzdHJ1Y3QgU2NvcGVSZWYgeworICAgICAg
ICBTY29wZVJlZihTY29wZVN0YWNrKiBzY29wZVN0YWNrLCB1bnNpZ25lZCBpbmRleCkKKyAgICAg
ICAgICAgIDogbV9zY29wZVN0YWNrKHNjb3BlU3RhY2spCisgICAgICAgICAgICAsIG1faW5kZXgo
aW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBTY29wZSogb3BlcmF0b3ItPigp
IHsgcmV0dXJuICZtX3Njb3BlU3RhY2stPmF0KG1faW5kZXgpOyB9CisgICAgICAgIHVuc2lnbmVk
IGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIHByaXZhdGU6CisgICAgICAg
IFNjb3BlU3RhY2sqIG1fc2NvcGVTdGFjazsKKyAgICAgICAgdW5zaWduZWQgbV9pbmRleDsKKyAg
ICB9OworICAgIAorICAgIFNjb3BlUmVmIGN1cnJlbnRTY29wZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgbV9zY29wZVN0YWNrLnNpemUoKSAtIDEpOwor
ICAgIH0KKyAgICAKKyAgICBTY29wZVJlZiBwdXNoU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9z
Y29wZVN0YWNrLmFwcGVuZChTY29wZSgpKTsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRTY29wZSgp
OworICAgIH0KKworICAgIHZvaWQgcG9wU2NvcGUoU2NvcGVSZWYgc2NvcGUsIGJvb2wgc2hvdWxk
VHJhY2tDYXB0dXJlZFZhcmlhYmxlcykKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2Nv
cGUsIHNjb3BlLmluZGV4KCkgPT0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDEpOworICAgICAgICBB
U1NFUlQobV9zY29wZVN0YWNrLnNpemUoKSA+IDEpOworICAgICAgICBtX3Njb3BlU3RhY2tbbV9z
Y29wZVN0YWNrLnNpemUoKSAtIDJdLmNvbGxlY3RGcmVlVmFyaWFibGVzKCZtX3Njb3BlU3RhY2su
bGFzdCgpLCBzaG91bGRUcmFja0NhcHR1cmVkVmFyaWFibGVzKTsKKyAgICAgICAgbV9zY29wZVN0
YWNrLnJlbW92ZUxhc3QoKTsKKyAgICB9CisKKyAgICBTY29wZVN0YWNrIG1fc2NvcGVTdGFjazsK
IH07CiAKIGludCBqc1BhcnNlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgU291cmNl
Q29kZSogc291cmNlKQpAQCAtMjI4LDExICszMDMsMTIgQEAgSlNQYXJzZXI6OkpTUGFyc2VyKExl
eGVyKiBsZXhlciwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VQcm92aWRlciogcHJv
dmkKIGJvb2wgSlNQYXJzZXI6OnBhcnNlUHJvZ3JhbSgpCiB7CiAgICAgQVNUQnVpbGRlciBjb250
ZXh0KG1fZ2xvYmFsRGF0YSwgbV9sZXhlcik7CisgICAgU2NvcGVSZWYgc2NvcGUgPSBwdXNoU2Nv
cGUoKTsKICAgICBTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVs
ZW1lbnRzPEFTVEJ1aWxkZXI+KGNvbnRleHQpOwogICAgIGlmICghc291cmNlRWxlbWVudHMgfHwg
IWNvbnN1bWUoRU9GVE9LKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgbV9nbG9iYWxEYXRh
LT5wYXJzZXItPmRpZEZpbmlzaFBhcnNpbmcoc291cmNlRWxlbWVudHMsIGNvbnRleHQudmFyRGVj
bGFyYXRpb25zKCksIGNvbnRleHQuZnVuY0RlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZlYXR1cmVz
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhc3RMaW5l
LCBjb250ZXh0Lm51bUNvbnN0YW50cygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbGFzdExpbmUsIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIHNjb3BlLT5j
YXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTMyNyw2ICs0
MDMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFy
c2VyOjpwYXJzZVZhckRlY2xhcmF0aW9uTGlzdChUcgogICAgICAgICBsYXN0SWRlbnQgPSBuYW1l
OwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBtYXRjaChF
UVVBTCk7CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5kZWNsYXJlVmFyaWFibGUobmFtZSk7CiAg
ICAgICAgIGNvbnRleHQuYWRkVmFyKG5hbWUsIChoYXNJbml0aWFsaXplciB8fCAoIW1fYWxsb3dz
SW4gJiYgbWF0Y2goSU5UT0tFTikpKSA/IERlY2xhcmF0aW9uU3RhY2tzOjpIYXNJbml0aWFsaXpl
ciA6IDApOwogICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZXIpIHsKICAgICAgICAgICAgIGludCB2
YXJEaXZvdCA9IHRva2VuU3RhcnQoKSArIDE7CkBAIC0zNTgsNiArNDM1LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ29uc3REZWNsTGlzdCBKU1BhcnNlcjo6cGFyc2VDb25z
dERlY2xhcmF0aW9uTGkKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbmFtZSA9IG1fdG9rZW4u
bV9kYXRhLmlkZW50OwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6
ZXIgPSBtYXRjaChFUVVBTCk7CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5kZWNsYXJlVmFyaWFi
bGUobmFtZSk7CiAgICAgICAgIGNvbnRleHQuYWRkVmFyKG5hbWUsIERlY2xhcmF0aW9uU3RhY2tz
OjpJc0NvbnN0YW50IHwgKGhhc0luaXRpYWxpemVyID8gRGVjbGFyYXRpb25TdGFja3M6Okhhc0lu
aXRpYWxpemVyIDogMCkpOwogICAgICAgICBUcmVlRXhwcmVzc2lvbiBpbml0aWFsaXplciA9IDA7
CiAgICAgICAgIGlmIChoYXNJbml0aWFsaXplcikgewpAQCAtNjU1LDEyICs3MzMsMTUgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZVRy
eVN0YXRlbWVudChUcmVlQnVpbGQKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgICAg
ICBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBuZXh0KCk7CisgICAgICAg
IFNjb3BlUmVmIGNhdGNoU2NvcGUgPSBwdXNoU2NvcGUoKTsKKyAgICAgICAgY2F0Y2hTY29wZS0+
ZGVjbGFyZVZhcmlhYmxlKGlkZW50KTsKICAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVO
KTsKICAgICAgICAgbWF0Y2hPckZhaWwoT1BFTkJSQUNFKTsKICAgICAgICAgaW50IGluaXRpYWxF
dmFsQ291bnQgPSBjb250ZXh0LmV2YWxDb3VudCgpOwogICAgICAgICBjYXRjaEJsb2NrID0gcGFy
c2VCbG9ja1N0YXRlbWVudChjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoY2F0Y2hCbG9j
ayk7CiAgICAgICAgIGNhdGNoSGFzRXZhbCA9IGluaXRpYWxFdmFsQ291bnQgIT0gY29udGV4dC5l
dmFsQ291bnQoKTsKKyAgICAgICAgcG9wU2NvcGUoY2F0Y2hTY29wZSwgVHJlZUJ1aWxkZXI6Ok5l
ZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgfQogCiAgICAgaWYgKG1hdGNoKEZJTkFMTFkpKSB7
CkBAIC03NTcsNiArODM4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRm9y
bWFsUGFyYW1ldGVyTGlzdCBKU1BhcnNlcjo6cGFyc2VGb3JtYWxQYXJhbWUKIHsKICAgICBtYXRj
aE9yRmFpbChJREVOVCk7CiAgICAgdXNlc0FyZ3VtZW50cyA9IG1fZ2xvYmFsRGF0YS0+cHJvcGVy
dHlOYW1lcy0+YXJndW1lbnRzID09ICptX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICBjdXJyZW50
U2NvcGUoKS0+ZGVjbGFyZVZhcmlhYmxlKG1fdG9rZW4ubV9kYXRhLmlkZW50KTsKICAgICBUcmVl
Rm9ybWFsUGFyYW1ldGVyTGlzdCBsaXN0ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJM
aXN0KCptX3Rva2VuLm1fZGF0YS5pZGVudCk7CiAgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3Qg
dGFpbCA9IGxpc3Q7CiAgICAgbmV4dCgpOwpAQCAtNzY0LDYgKzg0Niw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgSlNQYXJzZXI6OnBhcnNl
Rm9ybWFsUGFyYW1lCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQp
OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50
OworICAgICAgICBjdXJyZW50U2NvcGUoKS0+ZGVjbGFyZVZhcmlhYmxlKGlkZW50KTsKICAgICAg
ICAgbmV4dCgpOwogICAgICAgICB1c2VzQXJndW1lbnRzID0gdXNlc0FyZ3VtZW50cyB8fCBtX2ds
b2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaWRlbnQ7CiAgICAgICAgIHRh
aWwgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QodGFpbCwgKmlkZW50KTsKQEAg
LTc4Miw5ICs4NjUsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rp
b25Cb2R5IEpTUGFyc2VyOjpwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnUKIAogdGVtcGxhdGUgPEpT
UGFyc2VyOjpGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIGNsYXNzIFRyZWVCdWls
ZGVyPiBib29sIEpTUGFyc2VyOjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4
dCwgY29uc3QgSWRlbnRpZmllciomIG5hbWUsIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0JiBwYXJh
bWV0ZXJzLCBUcmVlRnVuY3Rpb25Cb2R5JiBib2R5LCBpbnQmIG9wZW5CcmFjZVBvcywgaW50JiBj
bG9zZUJyYWNlUG9zLCBpbnQmIGJvZHlTdGFydExpbmUpCiB7CisgICAgU2NvcGVSZWYgZnVuY3Rp
b25TY29wZSA9IHB1c2hTY29wZSgpOwogICAgIGlmIChtYXRjaChJREVOVCkpIHsKICAgICAgICAg
bmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBuZXh0KCk7CisgICAgICAgIGZ1
bmN0aW9uU2NvcGUtPmRlY2xhcmVWYXJpYWJsZShuYW1lKTsKICAgICB9IGVsc2UgaWYgKHJlcXVp
cmVtZW50cyA9PSBGdW5jdGlvbk5lZWRzTmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTgwNCw3ICs4ODksNyBAQCB0ZW1wbGF0ZSA8
SlNQYXJzZXI6OkZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgY2xhc3MgVHJlZUJ1
aWxkZXI+IGJvb2wgSgogICAgIGZhaWxJZkZhbHNlKGJvZHkpOwogICAgIGlmICh1c2VzQXJndW1l
bnRzKQogICAgICAgICBjb250ZXh0LnNldFVzZXNBcmd1bWVudHMoYm9keSk7Ci0KKyAgICBwb3BT
Y29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsK
ICAgICBtYXRjaE9yRmFpbChDTE9TRUJSQUNFKTsKICAgICBjbG9zZUJyYWNlUG9zID0gbV90b2tl
bi5tX2RhdGEuaW50VmFsdWU7CiAgICAgbmV4dCgpOwpAQCAtODIzLDYgKzkwOCw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VGdW5j
dGlvbkRlY2xhcmF0aW9uKFRyCiAgICAgaW50IGJvZHlTdGFydExpbmUgPSAwOwogICAgIGZhaWxJ
ZkZhbHNlKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTmVlZHNOYW1lPihjb250ZXh0LCBuYW1l
LCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFy
dExpbmUpKTsKICAgICBmYWlsSWZGYWxzZShuYW1lKTsKKyAgICBjdXJyZW50U2NvcGUoKS0+ZGVj
bGFyZVZhcmlhYmxlKG5hbWUpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNsU3Rh
dGVtZW50KG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBv
cywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiB9CiAKQEAgLTEyODEsNiArMTM2Nyw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBh
cnNlUHJpbWFyeUV4cHJlc3Npb24oVHJlCiAgICAgICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQo
KTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVu
dDsKICAgICAgICAgbmV4dCgpOworICAgICAgICBjdXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUo
aWRlbnQsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqaWRlbnQpOwogICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXNvbHZlKGlkZW50LCBzdGFydCk7CiAgICAgfQog
ICAgIGNhc2UgU1RSSU5HOiB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBjNDFkNzM1Y2Q2
MWU1ZjNjZTUzYzJjYzhjODEzZjQ2MjllNmY1ZjFmLi41MzRlMjhhZTE0ZmRkNmZiYmQ0MmFiN2Q2
ZDIyNGQ2NmNkZGVmMTFiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
Y3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTc1LDcgKzc1LDcg
QEAgU3RhdGVtZW50Tm9kZSogU291cmNlRWxlbWVudHM6OnNpbmdsZVN0YXRlbWVudCgpIGNvbnN0
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU2NvcGVOb2RlRGF0YSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU2NvcGVOb2RlRGF0YTo6U2NvcGVOb2RlRGF0YShQYXJz
ZXJBcmVuYSYgYXJlbmEsIFNvdXJjZUVsZW1lbnRzKiBzdGF0ZW1lbnRzLCBWYXJTdGFjayogdmFy
U3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgaW50IG51bUNvbnN0YW50cykKK1Njb3Bl
Tm9kZURhdGE6OlNjb3BlTm9kZURhdGEoUGFyc2VyQXJlbmEmIGFyZW5hLCBTb3VyY2VFbGVtZW50
cyogc3RhdGVtZW50cywgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3Rh
Y2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBpbnQgbnVtQ29uc3RhbnRzKQog
ICAgIDogbV9udW1Db25zdGFudHMobnVtQ29uc3RhbnRzKQogICAgICwgbV9zdGF0ZW1lbnRzKHN0
YXRlbWVudHMpCiB7CkBAIC04NCw2ICs4NCw3IEBAIFNjb3BlTm9kZURhdGE6OlNjb3BlTm9kZURh
dGEoUGFyc2VyQXJlbmEmIGFyZW5hLCBTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50cywgVmFyCiAg
ICAgICAgIG1fdmFyU3RhY2suc3dhcCgqdmFyU3RhY2spOwogICAgIGlmIChmdW5jU3RhY2spCiAg
ICAgICAgIG1fZnVuY3Rpb25TdGFjay5zd2FwKCpmdW5jU3RhY2spOworICAgIG1fY2FwdHVyZWRW
YXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcmlhYmxlcyk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBTY29wZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
QEAgLTk1LDEwICs5NiwxMCBAQCBTY29wZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEpCiB7CiB9CiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VFbGVtZW50cyogY2hpbGRy
ZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBDb2RlRmVh
dHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitTY29wZU5vZGU6OlNjb3BlTm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNl
RWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIENvZGVGZWF0dXJlcyBm
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKICAgICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFsRGF0
YSkKICAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRlZChnbG9iYWxEYXRhKQotICAgICwgbV9kYXRh
KGFkb3B0UHRyKG5ldyBTY29wZU5vZGVEYXRhKGdsb2JhbERhdGEtPnBhcnNlci0+YXJlbmEoKSwg
Y2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIG51bUNvbnN0YW50cykpKQorICAgICwgbV9k
YXRhKGFkb3B0UHRyKG5ldyBTY29wZU5vZGVEYXRhKGdsb2JhbERhdGEtPnBhcnNlci0+YXJlbmEo
KSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBudW1D
b25zdGFudHMpKSkKICAgICAsIG1fZmVhdHVyZXMoZmVhdHVyZXMpCiAgICAgLCBtX3NvdXJjZShz
b3VyY2UpCiB7CkBAIC0xMTEsMTQgKzExMiwxNCBAQCBTdGF0ZW1lbnROb2RlKiBTY29wZU5vZGU6
OnNpbmdsZVN0YXRlbWVudCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUg
UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU291cmNl
RWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgc291cmNlLCBj
aGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKK2lu
bGluZSBQcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBT
b3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFj
ayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMp
CisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ss
IGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiB7
CiB9CiAKLVBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2
YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Bhc3NSZWZQdHI8
UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25T
dGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpCiB7Ci0gICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBub2RlID0gbmV3IFByb2dyYW1Ob2RlKGds
b2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBzb3VyY2UsIGZlYXR1cmVz
LCBudW1Db25zdGFudHMpOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gbm9kZSA9IG5ldyBQcm9n
cmFtTm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVy
ZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAgICBBU1NF
UlQobm9kZS0+ZGF0YSgpLT5tX2FyZW5hLmxhc3QoKSA9PSBub2RlKTsKICAgICBub2RlLT5kYXRh
KCktPm1fYXJlbmEucmVtb3ZlTGFzdCgpOwpAQCAtMTI5LDE0ICsxMzAsMTQgQEAgUGFzc1JlZlB0
cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIFNvdXJjZUVsZW0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBFdmFsTm9kZTo6RXZh
bE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4s
IFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykK
LSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFjaywg
ZnVuY1N0YWNrLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQoraW5saW5lIEV2YWxOb2RlOjpFdmFs
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwg
VmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJT
ZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxE
YXRhLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlh
YmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKIHsKIH0KIAotUGFzc1JlZlB0cjxFdmFsTm9k
ZT4gRXZhbE5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1l
bnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3Rh
Y2ssIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKQorUGFzc1JlZlB0cjxFdmFsTm9kZT4gRXZhbE5vZGU6OmNyZWF0ZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sq
IHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cykKIHsKLSAgICBSZWZQdHI8RXZhbE5vZGU+IG5vZGUgPSBu
ZXcgRXZhbE5vZGUoZ2xvYmFsRGF0YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIHNv
dXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgUmVmUHRyPEV2YWxOb2RlPiBub2Rl
ID0gbmV3IEV2YWxOb2RlKGdsb2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNr
LCBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAog
ICAgIEFTU0VSVChub2RlLT5kYXRhKCktPm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwogICAgIG5v
ZGUtPmRhdGEoKS0+bV9hcmVuYS5yZW1vdmVMYXN0KCk7CkBAIC0xNTgsOCArMTU5LDggQEAgaW5s
aW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQogewogfQogCi1pbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFy
U3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykK
LSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3Rh
Y2ssIGZ1bmNTdGFjaywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKK2lubGluZSBGdW5jdGlvbkJv
ZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU291cmNl
RWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykK
KyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3Rh
Y2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMp
CiB7CiB9CiAKQEAgLTE4MSw5ICsxODIsOSBAQCBGdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJv
ZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgIHJldHVybiBuZXcg
RnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhKTsKIH0KIAotUGFzc1JlZlB0cjxGdW5jdGlvbkJv
ZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25T
dGFjayogZnVuY1N0YWNrLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVy
ZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5v
ZGU+IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNv
dXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNr
KiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpCiB7Ci0gICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IG5vZGUgPSBuZXcgRnVuY3Rpb25C
b2R5Tm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgc291cmNl
Q29kZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5v
ZGU+IG5vZGUgPSBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFy
U3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZUNvZGUsIGZlYXR1cmVz
LCBudW1Db25zdGFudHMpOwogCiAgICAgQVNTRVJUKG5vZGUtPmRhdGEoKS0+bV9hcmVuYS5sYXN0
KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+ZGF0YSgpLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKaW5kZXggZDI1MDc5YjVkZWYzMTIxY2Q4MmU4NmU2NmYwZTY0ZDZkNTgz
YTMwYy4uMmQ4NDQ4YzNmNDIyZWZmMjRjNDUyNjljMDdkNzg5YzA0Njk2MTQ4YyAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKQEAgLTgxLDYgKzgxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9w
TG9naWNhbE9yCiAgICAgfTsKIAorICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8U3RyaW5nSW1w
bD4sIElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU2V0OworCiAgICAgbmFtZXNwYWNlIERl
Y2xhcmF0aW9uU3RhY2tzIHsKICAgICAgICAgZW51bSBWYXJBdHRycyB7IElzQ29uc3RhbnQgPSAx
LCBIYXNJbml0aWFsaXplciA9IDIgfTsKICAgICAgICAgdHlwZWRlZiBWZWN0b3I8c3RkOjpwYWly
PGNvbnN0IElkZW50aWZpZXIqLCB1bnNpZ25lZD4gPiBWYXJTdGFjazsKQEAgLTEzNzYsMTMgKzEz
NzgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFj
a3M6OlZhclN0YWNrIFZhclN0YWNrOwogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tz
OjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgU2NvcGVOb2RlRGF0YShQ
YXJzZXJBcmVuYSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwg
aW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIFNjb3BlTm9kZURhdGEoUGFyc2VyQXJlbmEmLCBT
b3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQm
LCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBQYXJzZXJBcmVuYSBtX2FyZW5hOwogICAg
ICAgICBWYXJTdGFjayBtX3ZhclN0YWNrOwogICAgICAgICBGdW5jdGlvblN0YWNrIG1fZnVuY3Rp
b25TdGFjazsKICAgICAgICAgaW50IG1fbnVtQ29uc3RhbnRzOwogICAgICAgICBTb3VyY2VFbGVt
ZW50cyogbV9zdGF0ZW1lbnRzOworICAgICAgICBJZGVudGlmaWVyU2V0IG1fY2FwdHVyZWRWYXJp
YWJsZXM7CiAgICAgfTsKIAogICAgIGNsYXNzIFNjb3BlTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnRO
b2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFSZWZDb3VudGVkIHsKQEAgLTEzOTEsNyArMTM5NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5j
dGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKICAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0
YSopOwotICAgICAgICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgU291cmNlQ29kZSYs
IFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGNv
bnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFj
ayosIElkZW50aWZpZXJTZXQmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAg
ICAgICAgIHVzaW5nIFBhcnNlckFyZW5hUmVmQ291bnRlZDo6b3BlcmF0b3IgbmV3OwogCkBAIC0x
NDA5LDcgKzE0MTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCB1c2VzQXJndW1l
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmU7IH0KICAg
ICAgICAgdm9pZCBzZXRVc2VzQXJndW1lbnRzKCkgeyBtX2ZlYXR1cmVzIHw9IEFyZ3VtZW50c0Zl
YXR1cmU7IH0KICAgICAgICAgYm9vbCB1c2VzVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVy
ZXMgJiBUaGlzRmVhdHVyZTsgfQotICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBDbG9zdXJlRmVhdHVyZSB8IFdp
dGhGZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKTsgfQorICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlv
bigpIGNvbnN0IHsgQVNTRVJUKG1fZGF0YSk7IHJldHVybiAoaGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSkgfHwgKG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVh
dHVyZSkpOyB9CisgICAgICAgIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJl
dHVybiAhIW1fZGF0YS0+bV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KIAogICAgICAgICBW
YXJTdGFjayYgdmFyU3RhY2soKSB7IEFTU0VSVChtX2RhdGEpOyByZXR1cm4gbV9kYXRhLT5tX3Zh
clN0YWNrOyB9CiAgICAgICAgIEZ1bmN0aW9uU3RhY2smIGZ1bmN0aW9uU3RhY2soKSB7IEFTU0VS
VChtX2RhdGEpOyByZXR1cm4gbV9kYXRhLT5tX2Z1bmN0aW9uU3RhY2s7IH0KQEAgLTE0MzcsMjQg
KzE0NDEsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcm9ncmFtTm9kZSA6IHB1
YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
UHJvZ3JhbU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0
YWNrKiwgRnVuY3Rpb25TdGFjayosIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGlu
dCBudW1Db25zdGFudHMpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4g
Y3JlYXRlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlv
blN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNG
dW5jdGlvbiA9IGZhbHNlOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUHJvZ3JhbU5vZGUoSlNH
bG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBj
b25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAg
ICAgUHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayos
IEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVG
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAg
IH07CiAKICAgICBjbGFzcyBFdmFsTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbE5vZGU+IGNyZWF0ZShKU0dsb2JhbERh
dGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIGNvbnN0IFNv
dXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxFdmFsTm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1l
bnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNv
dXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHN0
YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgRXZhbE5vZGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFj
ayosIEZ1bmN0aW9uU3RhY2sqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRXZhbE5vZGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxl
bWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3Qg
U291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwogICAgIH07CkBAIC0xNDcwLDcgKzE0NzQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBjbGFzcyBGdW5jdGlvbkJvZHlOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKEpTR2xvYmFs
RGF0YSopOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBjcmVh
dGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3Rh
Y2sqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsK
KyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gY3JlYXRlKEpTR2xv
YmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRl
bnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMpOwogCiAgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5nZXQoKTsgfQogICAgICAgICBzaXplX3QgcGFyYW1ldGVy
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMtPnNpemUoKTsgfQpAQCAtMTQ4Niw3
ICsxNDkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBGdW5j
dGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSopOwotICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpT
R2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAg
ICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJT
dGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYs
IENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgSWRlbnRpZmllciBt
X2lkZW50OwogICAgICAgICBSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDNiZDM1MmRjOGUwNTEyZDc3OGVlMGQ4Y2Ri
MDdiYzMyY2MxODI0ZDEuLjRkNzJmZjc1ZjE5ZWFiOGE3NjZjMTNmNWE5NjUxNDNjMzM5NTkyMWIg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC02NiwxMSArNjYsMTIgQEAgdm9pZCBQYXJz
ZXI6OnBhcnNlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50KiBlcnJMaW5lLCBVU3RyaW5n
KiBlcnJNc2cpCiB9CiAKIHZvaWQgUGFyc2VyOjpkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1l
bnRzKiBzb3VyY2VFbGVtZW50cywgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpW
YXJTdGFjaz4qIHZhclN0YWNrLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnNl
ckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbGFzdExpbmUsIGludCBudW1Db25zdGFudHMpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25T
dGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywg
aW50IGxhc3RMaW5lLCBpbnQgbnVtQ29uc3RhbnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cnMpCiB7CiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1lbnRzOwogICAgIG1fdmFy
RGVjbGFyYXRpb25zID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFyYXRpb25zID0gZnVuY1N0
YWNrOworICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcnMpOwogICAgIG1f
ZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7CiAgICAgbV9u
dW1Db25zdGFudHMgPSBudW1Db25zdGFudHM7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYzE2
Nzk4MGY2NWFkYzQ0ZGUyNGRhNmFmZTlhMTg0MzljYzJhZGNkYS4uMGY4YWNjYmY5OGM3N2U2MDU4
YTZmYzQxZDY2MTFkZGFlMzI4NDE0ZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNTEsNyAr
NTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBw
YXJzZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBEZWJ1Z2dlciosIEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogCiAgICAgICAgIHZvaWQgZGlkRmluaXNoUGFyc2lu
ZyhTb3VyY2VFbGVtZW50cyosIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFy
U3RhY2s+KiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZXJBcmVuYURhdGE8
RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzIGZlYXR1cmVz
LCBpbnQgbGFzdExpbmUsIGludCBudW1Db25zdGFudHMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNr
PiosIENvZGVGZWF0dXJlcyBmZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBsYXN0TGluZSwgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNldCYpOwogCiAgICAg
ICAgIFBhcnNlckFyZW5hJiBhcmVuYSgpIHsgcmV0dXJuIG1fYXJlbmE7IH0KIApAQCAtNjcsNiAr
NjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU291cmNlRWxlbWVudHMqIG1fc291cmNl
RWxlbWVudHM7CiAgICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFy
U3RhY2s+KiBtX3ZhckRlY2xhcmF0aW9uczsKICAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xh
cmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogbV9mdW5jRGVjbGFyYXRpb25zOworICAgICAg
ICBJZGVudGlmaWVyU2V0IG1fY2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgICAgIENvZGVGZWF0dXJl
cyBtX2ZlYXR1cmVzOwogICAgICAgICBpbnQgbV9sYXN0TGluZTsKICAgICAgICAgaW50IG1fbnVt
Q29uc3RhbnRzOwpAQCAtODcsMTIgKzg5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgICAgICBpZiAobV9zb3VyY2VFbGVtZW50cykg
ewogICAgICAgICAgICAgcmVzdWx0ID0gUGFyc2VkTm9kZTo6Y3JlYXRlKGdsb2JhbERhdGEsCi0g
ICAgICAgICAgICBtX3NvdXJjZUVsZW1lbnRzLAotICAgICAgICAgICAgbV92YXJEZWNsYXJhdGlv
bnMgPyAmbV92YXJEZWNsYXJhdGlvbnMtPmRhdGEgOiAwLAotICAgICAgICAgICAgbV9mdW5jRGVj
bGFyYXRpb25zID8gJm1fZnVuY0RlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCi0gICAgICAgICAgICBz
b3VyY2UsCi0gICAgICAgICAgICBtX2ZlYXR1cmVzLAotICAgICAgICAgICAgbV9udW1Db25zdGFu
dHMpOworICAgICAgICAgICAgICAgIG1fc291cmNlRWxlbWVudHMsCisgICAgICAgICAgICAgICAg
bV92YXJEZWNsYXJhdGlvbnMgPyAmbV92YXJEZWNsYXJhdGlvbnMtPmRhdGEgOiAwLAorICAgICAg
ICAgICAgICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA/ICZtX2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEg
OiAwLAorICAgICAgICAgICAgICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMsCisgICAgICAgICAgICAg
ICAgc291cmNlLAorICAgICAgICAgICAgICAgIG1fZmVhdHVyZXMsCisgICAgICAgICAgICAgICAg
bV9udW1Db25zdGFudHMpOwogICAgICAgICAgICAgcmVzdWx0LT5zZXRMb2MobV9zb3VyY2UtPmZp
cnN0TGluZSgpLCBtX2xhc3RMaW5lKTsKICAgICAgICAgfSBlbHNlIGlmIChsZXhpY2FsR2xvYmFs
T2JqZWN0KSB7CiAgICAgICAgICAgICAvLyBXZSBjYW4gbmV2ZXIgc2VlIGEgc3ludGF4IGVycm9y
IHdoZW4gcmVwYXJzaW5nIGEgZnVuY3Rpb24sIHNpbmNlIHdlIHNob3VsZCBoYXZlCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCBlMDVmYWNkZTZkYzJlMDBiNDg3MjhhOTM2
NDdhZjY0MTg0ZGVmYTk2Li5jZTNhYjYxMTY2YjEyNWIzMDEyNzMwN2U0M2VjYmQ0NDk3M2FmMTIz
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTcwLDYgKzcwLDcgQEAg
cHVibGljOgogICAgIHR5cGVkZWYgaW50IEJpbmFyeU9wZXJhbmQ7CiAgICAgCiAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgQ3JlYXRlc0FTVCA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdCBib29sIE5l
ZWRzRnJlZVZhcmlhYmxlSW5mbyA9IGZhbHNlOwogCiAgICAgaW50IGNyZWF0ZVNvdXJjZUVsZW1l
bnRzKCkgeyByZXR1cm4gMTsgfQogICAgIGludCBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAKaW5kZXggNDFiNWYxZmI0OTVkMTdmNGM3ZjkzMDljZDllZTFhYTQ4YjFlOWRkYS4u
YjQxZDkxMWE3N2Y2MzA2MGEyZGVhZmY3YWU1YjRlNzc1ODJmNWVlZiAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgSlNPYmplY3QqIEV2YWxF
eGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9k
ZSogc2NvcGUKICAgICAgICAgQVNTRVJUKGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBleGNl
cHRpb247CiAgICAgfQotICAgIHJlY29yZFBhcnNlKGV2YWxOb2RlLT5mZWF0dXJlcygpLCBldmFs
Tm9kZS0+bGluZU5vKCksIGV2YWxOb2RlLT5sYXN0TGluZSgpKTsKKyAgICByZWNvcmRQYXJzZShl
dmFsTm9kZS0+ZmVhdHVyZXMoKSwgZXZhbE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGV2
YWxOb2RlLT5saW5lTm8oKSwgZXZhbE5vZGUtPmxhc3RMaW5lKCkpOwogCiAgICAgU2NvcGVDaGFp
biBzY29wZUNoYWluKHNjb3BlQ2hhaW5Ob2RlKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gc2NvcGVDaGFpbi5nbG9iYWxPYmplY3QoKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBK
U09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4
ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzYwogICAgICAgICBBU1NFUlQoZXhjZXB0aW9uKTsKICAgICAg
ICAgcmV0dXJuIGV4Y2VwdGlvbjsKICAgICB9Ci0gICAgcmVjb3JkUGFyc2UocHJvZ3JhbU5vZGUt
PmZlYXR1cmVzKCksIHByb2dyYW1Ob2RlLT5saW5lTm8oKSwgcHJvZ3JhbU5vZGUtPmxhc3RMaW5l
KCkpOworICAgIHJlY29yZFBhcnNlKHByb2dyYW1Ob2RlLT5mZWF0dXJlcygpLCBwcm9ncmFtTm9k
ZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgcHJvZ3JhbU5vZGUtPmxpbmVObygpLCBwcm9ncmFt
Tm9kZS0+bGFzdExpbmUoKSk7CiAKICAgICBTY29wZUNoYWluIHNjb3BlQ2hhaW4oc2NvcGVDaGFp
bk5vZGUpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZUNoYWluLmds
b2JhbE9iamVjdCgpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1
dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWlu
CiAgICAgaWYgKG1fZm9yY2VVc2VzQXJndW1lbnRzKQogICAgICAgICBib2R5LT5zZXRVc2VzQXJn
dW1lbnRzKCk7CiAgICAgYm9keS0+ZmluaXNoUGFyc2luZyhtX3BhcmFtZXRlcnMsIG1fbmFtZSk7
Ci0gICAgcmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVyZXMoKSwgYm9keS0+bGluZU5vKCksIGJvZHkt
Pmxhc3RMaW5lKCkpOworICAgIHJlY29yZFBhcnNlKGJvZHktPmZlYXR1cmVzKCksIGJvZHktPmhh
c0NhcHR1cmVkVmFyaWFibGVzKCksIGJvZHktPmxpbmVObygpLCBib2R5LT5sYXN0TGluZSgpKTsK
IAogICAgIFNjb3BlQ2hhaW4gc2NvcGVDaGFpbihzY29wZUNoYWluTm9kZSk7CiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlQ2hhaW4uZ2xvYmFsT2JqZWN0KCk7CkBAIC0y
MjcsNyArMjI3LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNv
bnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGUKICAgICBpZiAobV9mb3JjZVVz
ZXNBcmd1bWVudHMpCiAgICAgICAgIGJvZHktPnNldFVzZXNBcmd1bWVudHMoKTsKICAgICBib2R5
LT5maW5pc2hQYXJzaW5nKG1fcGFyYW1ldGVycywgbV9uYW1lKTsKLSAgICByZWNvcmRQYXJzZShi
b2R5LT5mZWF0dXJlcygpLCBib2R5LT5saW5lTm8oKSwgYm9keS0+bGFzdExpbmUoKSk7CisgICAg
cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVyZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSwgYm9keS0+bGluZU5vKCksIGJvZHktPmxhc3RMaW5lKCkpOwogCiAgICAgU2NvcGVDaGFpbiBz
Y29wZUNoYWluKHNjb3BlQ2hhaW5Ob2RlKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gc2NvcGVDaGFpbi5nbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKaW5kZXggMTBkZmIzNDA1Y2M5OGE2YTFmYWZmMjNlZjkyZWZmYzY1NGQ0OWRjOC4uYzE2
OGFjODRiZWUwOTRiY2NkNTc2Zjk3OWQxMmQ4NWNhMTNhZGVmOCAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKQEAgLTE3MiwyMCArMTcyLDIyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgRXZhbEZl
YXR1cmU7IH0KICAgICAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9m
ZWF0dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmU7IH0KLSAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgKEV2YWxGZWF0dXJlIHwgQ2xvc3VyZUZl
YXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSk7IH0KKyAgICAgICAgYm9vbCBuZWVk
c0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIHx8IG1f
ZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSk7IH0K
IAogICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gcmVwYXJzZUV4Y2Vw
dGlvbkluZm8oSlNHbG9iYWxEYXRhKiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKSA9IDA7
CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVz
IGZlYXR1cmVzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCisgICAgICAgIHZvaWQgcmVj
b3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVz
LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1f
ZmVhdHVyZXMgPSBmZWF0dXJlczsKKyAgICAgICAgICAgIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMg
PSBoYXNDYXB0dXJlZFZhcmlhYmxlczsKICAgICAgICAgICAgIG1fZmlyc3RMaW5lID0gZmlyc3RM
aW5lOwogICAgICAgICAgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOwogICAgICAgICB9CiAKICAg
ICAgICAgU291cmNlQ29kZSBtX3NvdXJjZTsKICAgICAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVy
ZXM7CisgICAgICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlczsKICAgICAgICAgaW50IG1f
Zmlyc3RMaW5lOwogICAgICAgICBpbnQgbV9sYXN0TGluZTsKICAgICB9Owo=
</data>
<flag name="review"
          id="57098"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>