<?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>124208</bug_id>
          
          <creation_ts>2013-11-12 09:07:02 -0800</creation_ts>
          <short_desc>Begin cleaning up handling of ImmutableArray vectors</short_desc>
          <delta_ts>2013-11-12 09:38:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>949690</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-12 09:07:02 -0800</bug_when>
    <thetext>Begin cleaning up handling of ImmutableArray vectors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949691</commentid>
    <comment_count>1</comment_count>
      <attachid>216683</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-12 09:08:52 -0800</bug_when>
    <thetext>Created attachment 216683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949697</commentid>
    <comment_count>2</comment_count>
      <attachid>216683</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-11-12 09:20:39 -0800</bug_when>
    <thetext>Comment on attachment 216683
Patch

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

r=me

&gt; Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:122
&gt; +        hostnameStrings.append(WebString::create(hostname));

I thought this was supposed to be uncheckedAppend(). Is this intentional? Why aren&apos;t you using uncheckedAppend() here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949710</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-12 09:38:43 -0800</bug_when>
    <thetext>Committed r159117: &lt;http://trac.webkit.org/changeset/159117&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216683</attachid>
            <date>2013-11-12 09:08:52 -0800</date>
            <delta_ts>2013-11-12 09:20:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124208-20131112090852.patch</filename>
            <type>text/plain</type>
            <size>32995</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWVjOTA5MjVjZGNkZTll
MTFmMGNkMTM4NGJiYzg4ZTIzYWJlZjFlOC4uYzUwMzI4ZmYwYzRlMDA4YzYwNDg4YmQ1ODEyZWVl
OTQzZWFlNTRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU2IEBACiAyMDEzLTExLTEyICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgQmVnaW4gY2xlYW5p
bmcgdXAgaGFuZGxpbmcgb2YgSW1tdXRhYmxlQXJyYXkgdmVjdG9ycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MjA4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHJhbmdlIGJhc2VkIGZvciB0byBp
dGVyYXRlIHRoZSBsb29wcy4gVXNlIHJlc2VydmVJbml0aWFsQ2FwYWNpdHkgKyB1bmNoZWNrZWRB
cHBlbmQKKyAgICAgICAgd2hlbiBhcHBlbmRpbmcgdmVjdG9yIGVsZW1lbnRzLgorCisgICAgICAg
ICogU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBlcmZv
cm1BUElDYWxsYmFja1dpdGhTZWN1cml0eU9yaWdpbkRhdGFWZWN0b3IpOgorICAgICAgICAqIFNo
YXJlZC9XZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZTo6c3VicmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZTo6c3ViZnJhbWVBcmNoaXZlcyk6
CisgICAgICAgICogU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHRNZW51SXRlbTo6c3VibWVudUl0ZW1zQXNJbW11dGFibGVBcnJheSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjphY2NlcHRNSU1FVHlwZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpzZWxlY3RlZEZpbGVOYW1lcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOgorICAgICAg
ICAoV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QbHVnaW5zL1dlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjo6ZGlkR2V0U2l0ZXNXaXRoRGF0YSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U3RhdGlzdGljc1JlcXVlc3Q6OmNvbXBsZXRlZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGx1Z2luSW5m
b1N0b3JlRGlkTG9hZFBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRGF0YWJh
c2VNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXJQ
cm94eTo6ZGlkR2V0RGF0YWJhc2VzQnlPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRh
YmFzZU1hbmFnZXJQcm94eTo6ZGlkR2V0RGF0YWJhc2VPcmlnaW5zKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhNZWRpYUNhY2hlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlbGF0ZWRQYWdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkRmluZFN0cmluZ01hdGNoZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZTo6b3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y2hpbGRyZW4p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
Rm9ybUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZvcm1D
bGllbnQ6OmRpZEFzc29jaWF0ZUZvcm1Db250cm9scyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmZlYXR1cmVzVXNlZElu
UGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjp0cmFja2VkUmVwYWludFJlY3RzKToKKworMjAxMy0xMS0xMiAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAgIE1vdmUgU3Ry
aW5nUmVmZXJlbmNlIHRvIFBsYXRmb3JtL0lQQwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MjAzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggODc4ODJmMzU0NzE2ZTViMjdiZWVmNDIxZjRkNjMz
MDViZWQ4YTMwZS4uOGM3OWIxODUwNWUwMzQ1ZTg4MzFmNjVmN2M0MDg1NDFlZDU1ZTI2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTc3LDE2
ICs3NywxNCBAQCB2b2lkIHBlcmZvcm1BUElDYWxsYmFja1dpdGhTZWN1cml0eU9yaWdpbkRhdGFW
ZWN0b3IoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRAogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAotICAgIHNpemVfdCBvcmlnaW5EYXRhQ291bnQgPSBvcmlnaW5EYXRhcy5zaXplKCk7
CiAgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7Ci0gICAgc2Vj
dXJpdHlPcmlnaW5zLnJlc2VydmVDYXBhY2l0eShvcmlnaW5EYXRhQ291bnQpOworICAgIHNlY3Vy
aXR5T3JpZ2lucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG9yaWdpbkRhdGFzLnNpemUoKSk7CiAK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdpbkRhdGFDb3VudDsgKytpKSB7Ci0gICAg
ICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW5EYXRhID0gb3JpZ2luRGF0YXNbaV07CisgICAg
Zm9yIChjb25zdCBhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpIHsKICAgICAgICAgUmVm
UHRyPEFQSU9iamVjdD4gb3JpZ2luID0gV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW5E
YXRhLnByb3RvY29sLCBvcmlnaW5EYXRhLmhvc3QsIG9yaWdpbkRhdGEucG9ydCk7CiAgICAgICAg
IGlmICghb3JpZ2luKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHNlY3VyaXR5T3Jp
Z2lucy51bmNoZWNrZWRBcHBlbmQob3JpZ2luKTsKKyAgICAgICAgc2VjdXJpdHlPcmlnaW5zLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1vdmUob3JpZ2luKSk7CiAgICAgfQogCiAgICAgY2FsbGJhY2st
PnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShJbW11dGFibGVBcnJheTo6YWRvcHQoc2Vj
dXJpdHlPcmlnaW5zKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZS5jcHAKaW5k
ZXggYmM5YWFlODEyMWM2ZGZmMWY0ZTQwM2VlOTZhOGYyNTZiMjZiODNhZC4uMmJiOGVhM2U1MmZi
YWYxMzM5OTI3MDcxMWJlY2ZkN2E1YWMxNzVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNo
aXZlLmNwcApAQCAtMTA4LDkgKzEwOCwxMCBAQCBJbW11dGFibGVBcnJheSogV2ViQXJjaGl2ZTo6
c3VicmVzb3VyY2VzKCkKIHsKICAgICBpZiAoIW1fY2FjaGVkU3VicmVzb3VyY2VzKSB7CiAgICAg
ICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gc3VicmVzb3VyY2VzOwotICAgICAgICBzdWJy
ZXNvdXJjZXMucmVzZXJ2ZUNhcGFjaXR5KG1fbGVnYWN5V2ViQXJjaGl2ZS0+c3VicmVzb3VyY2Vz
KCkuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVnYWN5V2Vi
QXJjaGl2ZS0+c3VicmVzb3VyY2VzKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBzdWJyZXNv
dXJjZXMuYXBwZW5kKFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKG1fbGVnYWN5V2ViQXJjaGl2
ZS0+c3VicmVzb3VyY2VzKClbaV0uZ2V0KCkpKTsKKyAgICAgICAgc3VicmVzb3VyY2VzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobV9sZWdhY3lXZWJBcmNoaXZlLT5zdWJyZXNvdXJjZXMoKS5zaXpl
KCkpOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3VicmVzb3VyY2UgOiBtX2xlZ2FjeVdl
YkFyY2hpdmUtPnN1YnJlc291cmNlcygpKQorICAgICAgICAgICAgc3VicmVzb3VyY2VzLnVuY2hl
Y2tlZEFwcGVuZChXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShzdWJyZXNvdXJjZSkpOwogCiAg
ICAgICAgIG1fY2FjaGVkU3VicmVzb3VyY2VzID0gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHN1YnJl
c291cmNlcyk7CiAgICAgfQpAQCAtMTIyLDkgKzEyMywxMCBAQCBJbW11dGFibGVBcnJheSogV2Vi
QXJjaGl2ZTo6c3ViZnJhbWVBcmNoaXZlcygpCiB7CiAgICAgaWYgKCFtX2NhY2hlZFN1YmZyYW1l
QXJjaGl2ZXMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBzdWJmcmFtZVdl
YkFyY2hpdmVzOwotICAgICAgICBzdWJmcmFtZVdlYkFyY2hpdmVzLnJlc2VydmVDYXBhY2l0eSht
X2xlZ2FjeVdlYkFyY2hpdmUtPnN1YmZyYW1lQXJjaGl2ZXMoKS5zaXplKCkpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZWdhY3lXZWJBcmNoaXZlLT5zdWJmcmFtZUFyY2hp
dmVzKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBzdWJmcmFtZVdlYkFyY2hpdmVzLmFwcGVu
ZChXZWJBcmNoaXZlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8TGVnYWN5V2ViQXJjaGl2ZSo+KG1fbGVn
YWN5V2ViQXJjaGl2ZS0+c3ViZnJhbWVBcmNoaXZlcygpW2ldLmdldCgpKSkpOworICAgICAgICBz
dWJmcmFtZVdlYkFyY2hpdmVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9sZWdhY3lXZWJBcmNo
aXZlLT5zdWJmcmFtZUFyY2hpdmVzKCkuc2l6ZSgpKTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHN1YmZyYW1lQXJjaGl2ZSA6IG1fbGVnYWN5V2ViQXJjaGl2ZS0+c3ViZnJhbWVBcmNoaXZl
cygpKQorICAgICAgICAgICAgc3ViZnJhbWVXZWJBcmNoaXZlcy51bmNoZWNrZWRBcHBlbmQoV2Vi
QXJjaGl2ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PExlZ2FjeVdlYkFyY2hpdmUqPihzdWJmcmFtZUFy
Y2hpdmUuZ2V0KCkpKSk7CiAKICAgICAgICAgbV9jYWNoZWRTdWJmcmFtZUFyY2hpdmVzID0gSW1t
dXRhYmxlQXJyYXk6OmFkb3B0KHN1YmZyYW1lV2ViQXJjaGl2ZXMpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggMWMwYzNjN2M1OTI3
OTA1ZTgxMTkxMzJkZDNmNTU5MWVhN2ZhMjM1Mi4uNDZhNmQyYzEzMjczMjkyMTI4OGE4ODc1ODVj
ODk4NjVkYTNkMTA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRl
eHRNZW51SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51
SXRlbS5jcHAKQEAgLTY2LDE2ICs2NiwxMyBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBX
ZWJDb250ZXh0TWVudUl0ZW06OnN1Ym1lbnVJdGVtc0FzSW1tdXRhYmxlQXJyYXkoKSBjbwogICAg
IGlmIChtX3dlYkNvbnRleHRNZW51SXRlbURhdGEudHlwZSgpICE9IFdlYkNvcmU6OlN1Ym1lbnVU
eXBlKQogICAgICAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZSgpOwogCi0gICAgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBzdWJtZW51VmVjdG9yKG1fd2ViQ29u
dGV4dE1lbnVJdGVtRGF0YS5zdWJtZW51KCkpOwotICAgIHVuc2lnbmVkIHNpemUgPSBzdWJtZW51
VmVjdG9yLnNpemUoKTsKLSAgICAKLSAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+IHJlc3Vs
dDsKLSAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KHNpemUpOwotICAgIAotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoV2ViQ29u
dGV4dE1lbnVJdGVtOjpjcmVhdGUoc3VibWVudVZlY3RvcltpXSkpOwotICAgIAotICAgIHJldHVy
biBJbW11dGFibGVBcnJheTo6YWRvcHQocmVzdWx0KTsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSU9i
amVjdD4+IHN1Ym1lbnVJdGVtczsKKyAgICBzdWJtZW51SXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShtX3dlYkNvbnRleHRNZW51SXRlbURhdGEuc3VibWVudSgpLnNpemUoKSk7CisKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBtX3dlYkNvbnRleHRNZW51SXRlbURhdGEuc3VibWVudSgp
KQorICAgICAgICBzdWJtZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkNvbnRleHRNZW51SXRl
bTo6Y3JlYXRlKGl0ZW0pKTsKKworICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6YWRvcHQoc3Vi
bWVudUl0ZW1zKTsKIH0KIAogQVBJT2JqZWN0KiBXZWJDb250ZXh0TWVudUl0ZW06OnVzZXJEYXRh
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQ
YXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0
ZXJzLmNwcAppbmRleCA0ODJmMzZjMzMwZGNhOGQyYjk5M2EwMGRjMWIzZDdhZGE3ZmRhZjJhLi45
Y2RmNzIwMmM2NGFlZGEwODE5ZTU4Y2QzODNiZDI5Zjg5NjE3MzNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCkBAIC01MSwxMyArNTEs
MTIgQEAgV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6fldlYk9wZW5QYW5lbFBhcmFtZXRlcnMoKQog
CiBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjphY2Nl
cHRNSU1FVHlwZXMoKSBjb25zdAogewotICAgIHNpemVfdCBzaXplID0gbV9zZXR0aW5ncy5hY2Nl
cHRNSU1FVHlwZXMuc2l6ZSgpOwotCiAgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiB2ZWN0
b3I7Ci0gICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7Ci0gICAgCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZlY3Rvci51bmNoZWNr
ZWRBcHBlbmQoV2ViU3RyaW5nOjpjcmVhdGUobV9zZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXNbaV0p
KTsKKyAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NldHRpbmdzLmFjY2VwdE1J
TUVUeXBlcy5zaXplKCkpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBtaW1lVHlwZSA6IG1fc2V0
dGluZ3MuYWNjZXB0TUlNRVR5cGVzKQorICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKFdl
YlN0cmluZzo6Y3JlYXRlKG1pbWVUeXBlKSk7CisKICAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6
OmFkb3B0KHZlY3Rvcik7CiB9CiAKQEAgLTcwLDE1ICs2OSwxMyBAQCBTdHJpbmcgV2ViT3BlblBh
bmVsUGFyYW1ldGVyczo6Y2FwdHVyZSgpIGNvbnN0CiAKIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJy
YXk+IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OnNlbGVjdGVkRmlsZU5hbWVzKCkgY29uc3QKIHsg
ICAgCi0gICAgc2l6ZV90IHNpemUgPSBtX3NldHRpbmdzLnNlbGVjdGVkRmlsZXMuc2l6ZSgpOwot
CiAgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiB2ZWN0b3I7Ci0gICAgdmVjdG9yLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisgICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9zZXR0aW5ncy5zZWxlY3RlZEZpbGVzLnNpemUoKSk7CisKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIHNlbGVjdGVkRmlsZSA6IG1fc2V0dGluZ3Muc2VsZWN0ZWRGaWxlcykKKyAgICAgICAgdmVj
dG9yLnVuY2hlY2tlZEFwcGVuZChXZWJTdHJpbmc6OmNyZWF0ZShzZWxlY3RlZEZpbGUpKTsKIAot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2ZWN0b3IudW5j
aGVja2VkQXBwZW5kKFdlYlN0cmluZzo6Y3JlYXRlKG1fc2V0dGluZ3Muc2VsZWN0ZWRGaWxlc1tp
XSkpOwogICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6YWRvcHQodmVjdG9yKTsKIH0KIAotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0KaW5kZXggOWZiOGEyYWQ4MzU3
MjVmMjkxNmMwYzk2YTIzMDNkMGExZTEyNGE4Zi4uNjEzNjNmMTM1MjM0OWM0MzE1NzQxMzkzNzBk
MjM0MDZjOGI5NWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQpAQCAtNzQsOCArNzQsMTAgQEAgdm9p
ZCBXS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0lucyhXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgV0tDb250ZXh0R2V0SW4KICAgICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2lu
cyA9IHRvSW1wbChjb250ZXh0UmVmKS0+cGx1Z2luSW5mb1N0b3JlKCkucGx1Z2lucygpOwogCiAg
ICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBwbHVnaW5JbmZvRGljdGlvbmFyaWVzOworICAg
IHBsdWdpbkluZm9EaWN0aW9uYXJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwbHVnaW5zLnNp
emUoKSk7CisKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBsdWdpbjogcGx1Z2lucykKLSAgICAgICAg
cGx1Z2luSW5mb0RpY3Rpb25hcmllcy5hcHBlbmQoY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0
aW9uYXJ5KHBsdWdpbikpOworICAgICAgICBwbHVnaW5JbmZvRGljdGlvbmFyaWVzLnVuY2hlY2tl
ZEFwcGVuZChjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2luKSk7CiAKICAg
ICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGFycmF5ID0gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHBs
dWdpbkluZm9EaWN0aW9uYXJpZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcAppbmRleCBm
YTczZmRkNDE4NDEyYzQwZjQ0NWQzNGVlOGMwN2I3NWM0OWQzYWY0Li44MmE0NTg0MGRkZjc4YmMy
OGQxNDFlYTBjM2VjMjM1NjI3YzM3ZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5jcHAKQEAg
LTE2NSwxMyArMTY1LDEzIEBAIHZvaWQgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyOjpkaWRHZXRT
aXRlc1dpdGhEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gc2l0ZXNXSyhzaXRlcy5z
aXplKCkpOworICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gc2l0ZXNBcnJheTsKKyAgICBz
aXRlc0FycmF5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l0ZXMuc2l6ZSgpKTsKIAotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l0ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHNpdGVzV0tb
aV0gPSBXZWJTdHJpbmc6OmNyZWF0ZShzaXRlc1tpXSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBz
aXRlIDogc2l0ZXMpCisgICAgICAgIHNpdGVzQXJyYXkudW5jaGVja2VkQXBwZW5kKFdlYlN0cmlu
Zzo6Y3JlYXRlKHNpdGUpKTsKIAotICAgIFJlZlB0cjxJbW11dGFibGVBcnJheT4gcmVzdWx0QXJy
YXkgPSBJbW11dGFibGVBcnJheTo6YWRvcHQoc2l0ZXNXSyk7Ci0gICAgY2FsbGJhY2stPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShyZXN1bHRBcnJheS5nZXQoKSk7CisgICAgY2FsbGJh
Y2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShJbW11dGFibGVBcnJheTo6YWRvcHQo
c2l0ZXNBcnJheSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjo6
Y2xlYXJTaXRlRGF0YShJbW11dGFibGVBcnJheSogc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1aW50
NjRfdCBtYXhBZ2VJblNlY29uZHMsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBwcnBDYWxsYmFj
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RhdGlzdGljc1JlcXVlc3QuY3BwCmlu
ZGV4IGQyYjIyZmE1YjE4Yjg2ODM5NjhiODQ4ZmFkNjcyY2I0Nzc0NmNhYmUuLjQxZmIwMmNmMjFj
ZTc4ZWUxM2E3ZmEzZTlkNzhjMTk0MTZkOTFjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcApAQCAtODMsMTMgKzgzLDE1IEBAIHZvaWQgU3Rh
dGlzdGljc1JlcXVlc3Q6OmNvbXBsZXRlZFJlcXVlc3QodWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBTdGF0aXN0aWNzRGF0CiAgICAgICAgIG1fcmVzcG9uc2VEaWN0aW9uYXJ5LT5zZXQoIkphdmFT
Y3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzIiwgY3JlYXRlRGljdGlvbmFyeUZyb21IYXNo
TWFwKGRhdGEuamF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMpLmdldCgpKTsKICAg
ICBpZiAoIWRhdGEuamF2YVNjcmlwdE9iamVjdFR5cGVDb3VudHMuaXNFbXB0eSgpKQogICAgICAg
ICBtX3Jlc3BvbnNlRGljdGlvbmFyeS0+c2V0KCJKYXZhU2NyaXB0T2JqZWN0VHlwZUNvdW50cyIs
IGNyZWF0ZURpY3Rpb25hcnlGcm9tSGFzaE1hcChkYXRhLmphdmFTY3JpcHRPYmplY3RUeXBlQ291
bnRzKS5nZXQoKSk7Ci0gICAgCi0gICAgc2l6ZV90IGNhY2hlU3RhdGlzdGljc0NvdW50ID0gZGF0
YS53ZWJDb3JlQ2FjaGVTdGF0aXN0aWNzLnNpemUoKTsKLSAgICBpZiAoY2FjaGVTdGF0aXN0aWNz
Q291bnQpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBjYWNoZVN0YXRpc3Rp
Y3NWZWN0b3IoY2FjaGVTdGF0aXN0aWNzQ291bnQpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNhY2hlU3RhdGlzdGljc0NvdW50OyArK2kpCi0gICAgICAgICAgICBjYWNoZVN0YXRp
c3RpY3NWZWN0b3JbaV0gPSBjcmVhdGVEaWN0aW9uYXJ5RnJvbUhhc2hNYXAoZGF0YS53ZWJDb3Jl
Q2FjaGVTdGF0aXN0aWNzW2ldKTsKLSAgICAgICAgbV9yZXNwb25zZURpY3Rpb25hcnktPnNldCgi
V2ViQ29yZUNhY2hlU3RhdGlzdGljcyIsIEltbXV0YWJsZUFycmF5OjphZG9wdChjYWNoZVN0YXRp
c3RpY3NWZWN0b3IpLmdldCgpKTsKKworICAgIGlmICghZGF0YS53ZWJDb3JlQ2FjaGVTdGF0aXN0
aWNzLmlzRW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+IGNhY2hl
U3RhdGlzdGljczsKKyAgICAgICAgY2FjaGVTdGF0aXN0aWNzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoZGF0YS53ZWJDb3JlQ2FjaGVTdGF0aXN0aWNzLnNpemUoKSk7CisKKyAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBzdGF0aXN0aWMgOiBkYXRhLndlYkNvcmVDYWNoZVN0YXRpc3RpY3MpCisgICAg
ICAgICAgICBjYWNoZVN0YXRpc3RpY3MudW5jaGVja2VkQXBwZW5kKGNyZWF0ZURpY3Rpb25hcnlG
cm9tSGFzaE1hcChzdGF0aXN0aWMpKTsKKworICAgICAgICBtX3Jlc3BvbnNlRGljdGlvbmFyeS0+
c2V0KCJXZWJDb3JlQ2FjaGVTdGF0aXN0aWNzIiwgSW1tdXRhYmxlQXJyYXk6OmFkb3B0KGNhY2hl
U3RhdGlzdGljcykuZ2V0KCkpOwogICAgIH0KIAogICAgIGlmIChtX291dHN0YW5kaW5nUmVxdWVz
dHMuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5k
ZXggZWQ2MjZhZGQ3ZTFlYzQ5NDIzNmU3Y2FhYzQ0N2M5OTlhM2MyZDY2Zi4uZWMyMGMyZDlkZGI2
ZGJjZjQwNGUwMWJiMzMyOWRkNTg5ZDMzYmUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcApAQCAtMTI1NiwyOSArMTI1NiwzMyBAQCB2b2lkIFdlYkNvbnRleHQ6OnBs
dWdpbkluZm9TdG9yZURpZExvYWRQbHVnaW5zKFBsdWdpbkluZm9TdG9yZSogc3RvcmUpCiAjZW5k
aWYKICAgICBBU1NFUlQoc3RvcmUgPT0gJm1fcGx1Z2luSW5mb1N0b3JlKTsKIAotICAgIFZlY3Rv
cjxSZWZQdHI8QVBJT2JqZWN0Pj4gcGx1Z2luQXJyYXk7CisgICAgVmVjdG9yPFBsdWdpbk1vZHVs
ZUluZm8+IHBsdWdpbk1vZHVsZXMgPSBtX3BsdWdpbkluZm9TdG9yZS5wbHVnaW5zKCk7CiAKLSAg
ICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2lucyA9IG1fcGx1Z2luSW5mb1N0b3JlLnBs
dWdpbnMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luID0gcGx1Z2luc1tpXTsKKyAgICBW
ZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+IHBsdWdpbnM7CisgICAgcGx1Z2lucy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHBsdWdpbk1vZHVsZXMuc2l6ZSgpKTsKKworICAgIGZvciAoY29uc3QgYXV0
byYgcGx1Z2luTW9kdWxlIDogcGx1Z2luTW9kdWxlcykgewogICAgICAgICBJbW11dGFibGVEaWN0
aW9uYXJ5OjpNYXBUeXBlIG1hcDsKLSAgICAgICAgbWFwLnNldChBU0NJSUxpdGVyYWwoInBhdGgi
KSwgV2ViU3RyaW5nOjpjcmVhdGUocGx1Z2luLnBhdGgpKTsKLSAgICAgICAgbWFwLnNldChBU0NJ
SUxpdGVyYWwoIm5hbWUiKSwgV2ViU3RyaW5nOjpjcmVhdGUocGx1Z2luLmluZm8ubmFtZSkpOwot
ICAgICAgICBtYXAuc2V0KEFTQ0lJTGl0ZXJhbCgiZmlsZSIpLCBXZWJTdHJpbmc6OmNyZWF0ZShw
bHVnaW4uaW5mby5maWxlKSk7Ci0gICAgICAgIG1hcC5zZXQoQVNDSUlMaXRlcmFsKCJkZXNjIiks
IFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdpbi5pbmZvLmRlc2MpKTsKLSAgICAgICAgVmVjdG9yPFJl
ZlB0cjxBUElPYmplY3Q+PiBtaW1lQXJyYXk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBq
IDwgIHBsdWdpbi5pbmZvLm1pbWVzLnNpemUoKTsgKytqKQotICAgICAgICAgICAgbWltZUFycmF5
LmFwcGVuZChXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW4uaW5mby5taW1lc1tqXS50eXBlKSk7Ci0g
ICAgICAgIG1hcC5zZXQoQVNDSUlMaXRlcmFsKCJtaW1lcyIpLCBJbW11dGFibGVBcnJheTo6YWRv
cHQobWltZUFycmF5KSk7CisgICAgICAgIG1hcC5zZXQoQVNDSUlMaXRlcmFsKCJwYXRoIiksIFdl
YlN0cmluZzo6Y3JlYXRlKHBsdWdpbk1vZHVsZS5wYXRoKSk7CisgICAgICAgIG1hcC5zZXQoQVND
SUlMaXRlcmFsKCJuYW1lIiksIFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdpbk1vZHVsZS5pbmZvLm5h
bWUpKTsKKyAgICAgICAgbWFwLnNldChBU0NJSUxpdGVyYWwoImZpbGUiKSwgV2ViU3RyaW5nOjpj
cmVhdGUocGx1Z2luTW9kdWxlLmluZm8uZmlsZSkpOworICAgICAgICBtYXAuc2V0KEFTQ0lJTGl0
ZXJhbCgiZGVzYyIpLCBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5Nb2R1bGUuaW5mby5kZXNjKSk7
CisKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBtaW1lVHlwZXM7CisgICAgICAg
IG1pbWVUeXBlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBsdWdpbk1vZHVsZS5pbmZvLm1pbWVz
LnNpemUoKSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgbWltZUNsYXNzSW5mbyA6IHBsdWdp
bk1vZHVsZS5pbmZvLm1pbWVzKQorICAgICAgICAgICAgbWltZVR5cGVzLnVuY2hlY2tlZEFwcGVu
ZChXZWJTdHJpbmc6OmNyZWF0ZShtaW1lQ2xhc3NJbmZvLnR5cGUpKTsKKyAgICAgICAgbWFwLnNl
dChBU0NJSUxpdGVyYWwoIm1pbWVzIiksIEltbXV0YWJsZUFycmF5OjphZG9wdChtaW1lVHlwZXMp
KTsKKwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgbWFwLnNldChBU0NJSUxpdGVyYWwoImJ1
bmRsZUlkIiksIFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdpbi5idW5kbGVJZGVudGlmaWVyKSk7Ci0g
ICAgICAgIG1hcC5zZXQoQVNDSUlMaXRlcmFsKCJ2ZXJzaW9uIiksIFdlYlN0cmluZzo6Y3JlYXRl
KHBsdWdpbi52ZXJzaW9uU3RyaW5nKSk7CisgICAgICAgIG1hcC5zZXQoQVNDSUlMaXRlcmFsKCJi
dW5kbGVJZCIpLCBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5Nb2R1bGUuYnVuZGxlSWRlbnRpZmll
cikpOworICAgICAgICBtYXAuc2V0KEFTQ0lJTGl0ZXJhbCgidmVyc2lvbiIpLCBXZWJTdHJpbmc6
OmNyZWF0ZShwbHVnaW5Nb2R1bGUudmVyc2lvblN0cmluZykpOwogI2VuZGlmCiAKLSAgICAgICAg
cGx1Z2luQXJyYXkuYXBwZW5kKEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1hcCkpOworICAg
ICAgICBwbHVnaW5zLnVuY2hlY2tlZEFwcGVuZChJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdCht
YXApKTsKICAgICB9CiAKLSAgICBtX2NsaWVudC5wbHVnSW5JbmZvcm1hdGlvbkJlY2FtZUF2YWls
YWJsZSh0aGlzLCBJbW11dGFibGVBcnJheTo6YWRvcHQocGx1Z2luQXJyYXkpLmdldCgpKTsKKyAg
ICBtX2NsaWVudC5wbHVnSW5JbmZvcm1hdGlvbkJlY2FtZUF2YWlsYWJsZSh0aGlzLCBJbW11dGFi
bGVBcnJheTo6YWRvcHQocGx1Z2lucykuZ2V0KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggYjc5
ODYyMjFkOGM5NzY4ZGU0ZGZhZTVmMmM2ZWU3MzYzNDhhNWY1Ni4uMmY5Y2RmYTE5MjE4ZDEwMjlm
OGU4YmFlZTFjMTJjMWMxNjZjMzRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoUGFzc1JlZlB0cjxB
cnJheUNhbGxiYWNrPiBwcgogICAgIGNvbnRleHQoKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NS
ZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhjYWxsYmFja0lEKSk7CiB9CiAgICAgCi12b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGhvc3RuYW1lTGlzdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaG9zdG5hbWVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFJlZlB0cjxBcnJheUNh
bGxiYWNrPiBjYWxsYmFjayA9IG1fYXJyYXlDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKICAg
ICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xMTUsMTMgKzExNSwxMyBAQCB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGhvcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2l6ZV90IGhvc3RuYW1lQ291
bnQgPSBob3N0bmFtZUxpc3Quc2l6ZSgpOwotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4g
aG9zdG5hbWVzKGhvc3RuYW1lQ291bnQpOworICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4g
aG9zdG5hbWVTdHJpbmdzOworICAgIGhvc3RuYW1lU3RyaW5ncy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGhvc3RuYW1lcy5zaXplKCkpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBob3N0
bmFtZUNvdW50OyArK2kpCi0gICAgICAgIGhvc3RuYW1lc1tpXSA9IFdlYlN0cmluZzo6Y3JlYXRl
KGhvc3RuYW1lTGlzdFtpXSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBob3N0bmFtZSA6IGhvc3Ru
YW1lcykKKyAgICAgICAgaG9zdG5hbWVTdHJpbmdzLmFwcGVuZChXZWJTdHJpbmc6OmNyZWF0ZSho
b3N0bmFtZSkpOwogCi0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1
ZShJbW11dGFibGVBcnJheTo6YWRvcHQoaG9zdG5hbWVzKS5nZXQoKSk7CisgICAgY2FsbGJhY2st
PnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShJbW11dGFibGVBcnJheTo6YWRvcHQoaG9z
dG5hbWVTdHJpbmdzKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwCmlu
ZGV4IDk1OWNiNWYyNDVmMzkwOWMwNjJkOTFlM2ZjOWUxMjQ1YTA2YTUzNWIuLjhhOGNmOTlmODc4
YmIxNzQ2ZDQ4MTdjMTJhYzU0ZjViMzlkNjgyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmNwcApAQCAtMTU2LDI2ICsxNTYs
MjQgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGlkR2V0RGF0YWJhc2VzQnlPcmln
aW4oY29uc3QgVmVjdG9yPE9yaWdpbkFuZERhdGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHNpemVfdCBvcmlnaW5BbmREYXRhYmFzZXNDb3VudCA9IG9yaWdpbkFuZERhdGFiYXNlc1Zl
Y3Rvci5zaXplKCk7Ci0gICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiByZXN1bHQob3JpZ2lu
QW5kRGF0YWJhc2VzQ291bnQpOworICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gcmVzdWx0
OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG9yaWdpbkFuZERhdGFiYXNlc1Zl
Y3Rvci5zaXplKCkpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcmlnaW5BbmREYXRh
YmFzZXNDb3VudDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IE9yaWdpbkFuZERhdGFiYXNlcyYgb3Jp
Z2luQW5kRGF0YWJhc2VzID0gb3JpZ2luQW5kRGF0YWJhc2VzVmVjdG9yW2ldOwotICAgIAorICAg
IGZvciAoY29uc3QgYXV0byYgb3JpZ2luQW5kRGF0YWJhc2VzIDogb3JpZ2luQW5kRGF0YWJhc2Vz
VmVjdG9yKSB7CiAgICAgICAgIFJlZlB0cjxBUElPYmplY3Q+IG9yaWdpbiA9IFdlYlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbkFuZERhdGFiYXNlcy5v
cmlnaW5JZGVudGlmaWVyKTsKLSAgICAKLSAgICAgICAgc2l6ZV90IGRhdGFiYXNlc0NvdW50ID0g
b3JpZ2luQW5kRGF0YWJhc2VzLmRhdGFiYXNlcy5zaXplKCk7Ci0gICAgICAgIFZlY3RvcjxSZWZQ
dHI8QVBJT2JqZWN0Pj4gZGF0YWJhc2VzKGRhdGFiYXNlc0NvdW50KTsKLSAgICAKLSAgICAgICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogPCBkYXRhYmFzZXNDb3VudDsgKytqKSB7Ci0gICAgICAgICAg
ICBjb25zdCBEYXRhYmFzZURldGFpbHMmIGRldGFpbHMgPSBvcmlnaW5BbmREYXRhYmFzZXMuZGF0
YWJhc2VzW2ldOworCisgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gZGF0YWJhc2Vz
OworICAgICAgICBkYXRhYmFzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvcmlnaW5BbmREYXRh
YmFzZXMuZGF0YWJhc2VzLnNpemUoKSk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRh
YmFzZURldGFpbHMgOiBvcmlnaW5BbmREYXRhYmFzZXMuZGF0YWJhc2VzKSB7CiAgICAgICAgICAg
ICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSU9iamVjdD4+IGRldGFpbHNNYXA7CiAKLSAgICAg
ICAgICAgIGRldGFpbHNNYXAuc2V0KGRhdGFiYXNlRGV0YWlsc05hbWVLZXkoKSwgV2ViU3RyaW5n
OjpjcmVhdGUoZGV0YWlscy5uYW1lKCkpKTsKLSAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KGRh
dGFiYXNlRGV0YWlsc0Rpc3BsYXlOYW1lS2V5KCksIFdlYlN0cmluZzo6Y3JlYXRlKGRldGFpbHMu
ZGlzcGxheU5hbWUoKSkpOwotICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQoZGF0YWJhc2VEZXRh
aWxzRXhwZWN0ZWRVc2FnZUtleSgpLCBXZWJVSW50NjQ6OmNyZWF0ZShkZXRhaWxzLmV4cGVjdGVk
VXNhZ2UoKSkpOwotICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQoZGF0YWJhc2VEZXRhaWxzQ3Vy
cmVudFVzYWdlS2V5KCksIFdlYlVJbnQ2NDo6Y3JlYXRlKGRldGFpbHMuY3VycmVudFVzYWdlKCkp
KTsKLSAgICAgICAgICAgIGRhdGFiYXNlcy5hcHBlbmQoSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRv
cHQoZGV0YWlsc01hcCkpOworICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQoZGF0YWJhc2VEZXRh
aWxzTmFtZUtleSgpLCBXZWJTdHJpbmc6OmNyZWF0ZShkYXRhYmFzZURldGFpbHMubmFtZSgpKSk7
CisgICAgICAgICAgICBkZXRhaWxzTWFwLnNldChkYXRhYmFzZURldGFpbHNEaXNwbGF5TmFtZUtl
eSgpLCBXZWJTdHJpbmc6OmNyZWF0ZShkYXRhYmFzZURldGFpbHMuZGlzcGxheU5hbWUoKSkpOwor
ICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQoZGF0YWJhc2VEZXRhaWxzRXhwZWN0ZWRVc2FnZUtl
eSgpLCBXZWJVSW50NjQ6OmNyZWF0ZShkYXRhYmFzZURldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKSk7
CisgICAgICAgICAgICBkZXRhaWxzTWFwLnNldChkYXRhYmFzZURldGFpbHNDdXJyZW50VXNhZ2VL
ZXkoKSwgV2ViVUludDY0OjpjcmVhdGUoZGF0YWJhc2VEZXRhaWxzLmN1cnJlbnRVc2FnZSgpKSk7
CisKKyAgICAgICAgICAgIGRhdGFiYXNlcy51bmNoZWNrZWRBcHBlbmQoSW1tdXRhYmxlRGljdGlv
bmFyeTo6YWRvcHQoZGV0YWlsc01hcCkpOwogICAgICAgICB9CiAKICAgICAgICAgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxBUElPYmplY3Q+PiBvcmlnaW5BbmREYXRhYmFzZXNNYXA7CkBAIC0xODQs
MTEgKzE4MiwxMCBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkaWRHZXREYXRhYmFz
ZXNCeU9yaWdpbihjb25zdCBWZWN0b3I8T3JpZ2luQW5kRGF0YQogICAgICAgICBvcmlnaW5BbmRE
YXRhYmFzZXNNYXAuc2V0KG9yaWdpblVzYWdlS2V5KCksIFdlYlVJbnQ2NDo6Y3JlYXRlKG9yaWdp
bkFuZERhdGFiYXNlcy5vcmlnaW5Vc2FnZSkpOwogICAgICAgICBvcmlnaW5BbmREYXRhYmFzZXNN
YXAuc2V0KGRhdGFiYXNlRGV0YWlsc0tleSgpLCBJbW11dGFibGVBcnJheTo6YWRvcHQoZGF0YWJh
c2VzKSk7CiAKLSAgICAgICAgcmVzdWx0LmFwcGVuZChJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9w
dChvcmlnaW5BbmREYXRhYmFzZXNNYXApKTsKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVu
ZChJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChvcmlnaW5BbmREYXRhYmFzZXNNYXApKTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHJlc3VsdEFycmF5ID0gSW1tdXRhYmxl
QXJyYXk6OmFkb3B0KHJlc3VsdCk7Ci0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhS
ZXR1cm5WYWx1ZShyZXN1bHRBcnJheS5nZXQoKSk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxs
YmFja1dpdGhSZXR1cm5WYWx1ZShJbW11dGFibGVBcnJheTo6YWRvcHQocmVzdWx0KS5nZXQoKSk7
CiB9CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmdldERhdGFiYXNlT3JpZ2lucyhQ
YXNzUmVmUHRyPEFycmF5Q2FsbGJhY2s+IHBycENhbGxiYWNrKQpAQCAtMjA4LDExICsyMDUsMTEg
QEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGlkR2V0RGF0YWJhc2VPcmlnaW5zKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBvcmlnaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHNpemVfdCBvcmlnaW5JZGVudGlmaWVyc0NvdW50ID0gb3JpZ2luSWRlbnRpZmllcnMuc2l6ZSgp
OwotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gc2VjdXJpdHlPcmlnaW5zKG9yaWdpbklk
ZW50aWZpZXJzQ291bnQpOworICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gc2VjdXJpdHlP
cmlnaW5zOworICAgIHNlY3VyaXR5T3JpZ2lucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG9yaWdp
bklkZW50aWZpZXJzLnNpemUoKSk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdp
bklkZW50aWZpZXJzQ291bnQ7ICsraSkKLSAgICAgICAgc2VjdXJpdHlPcmlnaW5zW2ldID0gV2Vi
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRp
ZmllcnNbaV0pOworICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luSWRlbnRpZmllciA6IG9yaWdp
bklkZW50aWZpZXJzKQorICAgICAgICBzZWN1cml0eU9yaWdpbnMudW5jaGVja2VkQXBwZW5kKFdl
YlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50
aWZpZXIpKTsKIAogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUo
SW1tdXRhYmxlQXJyYXk6OmFkb3B0KHNlY3VyaXR5T3JpZ2lucykuZ2V0KCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHku
Y3BwCmluZGV4IGI4ZDZmZmQ4ZjFhN2Y4YzlmZDZhZTc3MDE1NWYxZjg0YTgzYjVjNjguLjY4YTY4
ZDI4ZTA3MTdkYzM2MzA3MmZkMTA1OGYwMzM1ZmFmNjFkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAKQEAgLTkw
LDcgKzkwLDcgQEAgdm9pZCBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNX
aXRoTWVkaWFDYWNoZShQYXNzUmVmUHRyPEFycmF5Q2FsbGIKICAgICBjb250ZXh0KCktPnNlbmRU
b0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJNZWRp
YUNhY2hlTWFuYWdlcjo6R2V0SG9zdG5hbWVzV2l0aE1lZGlhQ2FjaGUoY2FsbGJhY2tJRCkpOwog
fQogICAgIAotdm9pZCBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OjpkaWRHZXRIb3N0bmFtZXNX
aXRoTWVkaWFDYWNoZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVMaXN0LCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OjpkaWRHZXRIb3N0
bmFtZXNXaXRoTWVkaWFDYWNoZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQogewogICAgIFJlZlB0cjxBcnJheUNhbGxiYWNrPiBjYWxsYmFjayA9
IG1fYXJyYXlDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7
CkBAIC05OCwxMyArOTgsMTMgQEAgdm9pZCBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OjpkaWRH
ZXRIb3N0bmFtZXNXaXRoTWVkaWFDYWNoZShjb25zdCBWZWN0b3I8U3RyaW4KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHNpemVfdCBob3N0bmFtZUNvdW50ID0gaG9zdG5hbWVMaXN0LnNp
emUoKTsKLSAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+IGhvc3RuYW1lcyhob3N0bmFtZUNv
dW50KTsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+IGhvc3RuYW1lc0FycmF5OworICAg
IGhvc3RuYW1lc0FycmF5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaG9zdG5hbWVzLnNpemUoKSk7
CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhvc3RuYW1lQ291bnQ7ICsraSkKLSAgICAg
ICAgaG9zdG5hbWVzW2ldID0gV2ViU3RyaW5nOjpjcmVhdGUoaG9zdG5hbWVMaXN0W2ldKTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGhvc3RuYW1lIDogaG9zdG5hbWVzKQorICAgICAgICBob3N0bmFt
ZXNBcnJheS51bmNoZWNrZWRBcHBlbmQoV2ViU3RyaW5nOjpjcmVhdGUoaG9zdG5hbWUpKTsKIAot
ICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoSW1tdXRhYmxlQXJy
YXk6OmFkb3B0KGhvc3RuYW1lcykuZ2V0KCkpOworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJh
Y2tXaXRoUmV0dXJuVmFsdWUoSW1tdXRhYmxlQXJyYXk6OmFkb3B0KGhvc3RuYW1lc0FycmF5KS5n
ZXQoKSk7CiB9CiAKIHZvaWQgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6Y2xlYXJDYWNoZUZv
ckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IGY4MWRmM2E1
NzRhNjI0MzI1NjZjMGM3NTk5ZjJlYWRjOGIzYzJkMTMuLmU3N2ZjOWNhYzA0MDVmMDk3ZTc2MjBj
ZTRkOTdlOGI0NjIzNDZlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC05OCwxMyArOTgsMTEgQEAgYm9vbCBX
ZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6OnNob3dDb250ZXh0TWVudShXZWJQYWdlUHJveHkqIHBh
Z2UsIGNvbnN0IFdlYkNvcmUKICAgICBpZiAoIW1fY2xpZW50LnNob3dDb250ZXh0TWVudSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgc2l6ZSA9IG1lbnVJdGVtc1ZlY3Rv
ci5zaXplKCk7Ci0KICAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+IG1lbnVJdGVtczsKLSAg
ICBtZW51SXRlbXMucmVzZXJ2ZUNhcGFjaXR5KHNpemUpOworICAgIG1lbnVJdGVtcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1lbnVJdGVtc1ZlY3Rvci5zaXplKCkpOwogCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgbWVudUl0ZW1zLnVuY2hlY2tlZEFw
cGVuZChXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShtZW51SXRlbXNWZWN0b3JbaV0pLmdldCgp
KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDogbWVudUl0ZW1zVmVjdG9yKQorICAg
ICAgICBtZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRl
KG1lbnVJdGVtKSk7CiAKICAgICBtX2NsaWVudC5zaG93Q29udGV4dE1lbnUodG9BUEkocGFnZSks
IHRvQVBJKG1lbnVMb2NhdGlvbiksIHRvQVBJKEltbXV0YWJsZUFycmF5OjphZG9wdChtZW51SXRl
bXMpLmdldCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYmMxYTk4MWU2ODI1OTc5ODk1NjcyOTJlMWI4MTEx
ZDg1MGM1NjdlZS4uN2M2NTEzYjU1ODEzM2FlYjNmZWFlZWM2Y2ZlMGNkODlhMTI1NTJkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM5MywxMCArMzkz
LDExIEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IFdlYlBhZ2VQcm94eTo6cmVsYXRlZFBh
Z2VzKCkgY29uc3QKICAgICBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gcGFnZXMgPSBtX3Byb2Nlc3Mt
PnBhZ2VzKCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4+IHJlc3VsdDsKLSAgICBy
ZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KHBhZ2VzLnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwYWdlcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAocGFnZXNbaV0gIT0gdGhp
cykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocGFnZXNbaV0pOworICAgIHJlc3VsdC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHBhZ2VzLnNpemUoKSk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IHBhZ2UgOiBwYWdlcykgeworICAgICAgICBpZiAocGFnZSAhPSB0aGlzKQorICAgICAgICAgICAg
cmVzdWx0LnVuY2hlY2tlZEFwcGVuZChwYWdlKTsKICAgICB9CiAKICAgICByZXR1cm4gSW1tdXRh
YmxlQXJyYXk6OmFkb3B0KHJlc3VsdCk7CkBAIC0zMDM5LDE2ICszMDQwLDE2IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRGaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgVmVj
dG9yPFZlY3RvcjxXZWJDCiAgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBtYXRjaGVzOwog
ICAgIG1hdGNoZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtYXRjaFJlY3RzLnNpemUoKSk7CiAK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdGNoUmVjdHMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZWN0cyA9IG1hdGNoUmVjdHNb
aV07Ci0gICAgICAgIHNpemVfdCBudW1SZWN0cyA9IG1hdGNoUmVjdHNbaV0uc2l6ZSgpOworICAg
IGZvciAoY29uc3QgYXV0byYgcmVjdHMgOiBtYXRjaFJlY3RzKSB7CiAgICAgICAgIFZlY3RvcjxS
ZWZQdHI8QVBJT2JqZWN0Pj4gYXBpUmVjdHM7Ci0gICAgICAgIGFwaVJlY3RzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobnVtUmVjdHMpOworICAgICAgICBhcGlSZWN0cy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHJlY3RzLnNpemUoKSk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDog
cmVjdHMpCisgICAgICAgICAgICBhcGlSZWN0cy51bmNoZWNrZWRBcHBlbmQoV2ViUmVjdDo6Y3Jl
YXRlKHRvQVBJKHJlY3QpKSk7CiAKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1S
ZWN0czsgKytpKQotICAgICAgICAgICAgYXBpUmVjdHMudW5jaGVja2VkQXBwZW5kKFdlYlJlY3Q6
OmNyZWF0ZSh0b0FQSShyZWN0c1tpXSkpKTsKICAgICAgICAgbWF0Y2hlcy51bmNoZWNrZWRBcHBl
bmQoSW1tdXRhYmxlQXJyYXk6OmFkb3B0KGFwaVJlY3RzKSk7CiAgICAgfQorCiAgICAgbV9maW5k
TWF0Y2hlc0NsaWVudC5kaWRGaW5kU3RyaW5nTWF0Y2hlcyh0aGlzLCBzdHJpbmcsIEltbXV0YWJs
ZUFycmF5OjphZG9wdChtYXRjaGVzKS5nZXQoKSwgZmlyc3RJbmRleEFmdGVyU2VsZWN0aW9uKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA5ZDU1NjRlYTg3MmFkZTFjMWU4ZTQ1NDY4
M2M5ODM2YTJhYzZkZWZkLi42MmE4Mjc0MGNkMjEzZTFiODM1NTNlMzZlYTQyMjU0YjUwYzllOTM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDA3LDE0ICs0MDcsMTQgQEAgUGFzc1JlZlB0
cjxJbW11dGFibGVBcnJheT4gSW5qZWN0ZWRCdW5kbGU6Om9yaWdpbnNXaXRoQXBwbGljYXRpb25D
YWNoZSgpCiB7CiAgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwog
ICAgIGNhY2hlU3RvcmFnZSgpLmdldE9yaWdpbnNXaXRoQ2FjaGUob3JpZ2lucyk7Ci0gICAgVmVj
dG9yPCBSZWZQdHI8QVBJT2JqZWN0Pj4gb3JpZ2luc1ZlY3RvcjsKIAotICAgIEhhc2hTZXQ8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPj46Oml0ZXJhdG9yIGl0ID0gb3JpZ2lucy5iZWdpbigpOwotICAg
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj46Oml0ZXJhdG9yIGVuZCA9IG9yaWdpbnMu
ZW5kKCk7Ci0gICAgZm9yICggOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIG9yaWdpbnNWZWN0
b3IuYXBwZW5kKFdlYlN0cmluZzo6Y3JlYXRlKCgqaXQpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSkp
OworICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gb3JpZ2luSWRlbnRpZmllcnM7CisgICAg
b3JpZ2luSWRlbnRpZmllcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvcmlnaW5zLnNpemUoKSk7
CiAKLSAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KG9yaWdpbnNWZWN0b3IpOworICAg
IGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lucykKKyAgICAgICAgb3JpZ2luSWRlbnRp
ZmllcnMudW5jaGVja2VkQXBwZW5kKFdlYlN0cmluZzo6Y3JlYXRlKG9yaWdpbi0+ZGF0YWJhc2VJ
ZGVudGlmaWVyKCkpKTsKKworICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6YWRvcHQob3JpZ2lu
SWRlbnRpZmllcnMpOwogfQogCiBpbnQgSW5qZWN0ZWRCdW5kbGU6Om51bWJlck9mUGFnZXMoV2Vi
RnJhbWUqIGZyYW1lLCBkb3VibGUgcGFnZVdpZHRoSW5QaXhlbHMsIGRvdWJsZSBwYWdlSGVpZ2h0
SW5QaXhlbHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbS5jcHAKaW5kZXggYjRjNWYwZjRjNTIzYWQyNTg2YjRiZWY3YTk0NDk2ZWI3MzQ2MmY0
YS4uNGFiYmQ0ZGJiMjUyN2I0NGY0NzE0ZjdhYmM0MDEzMDlhODgzZmRiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMzQs
MTIgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBQYXNzUmVmUHRyPEltbXV0YWJsZUFy
cmF5PiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNoaWxkcmVuKCkgY29uc3QK
IHsKLSAgICBjb25zdCBIaXN0b3J5SXRlbVZlY3RvciYgY2hpbGRyZW4gPSBtX2l0ZW0tPmNoaWxk
cmVuKCk7Ci0gICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxBUElPYmplY3Q+PiB2ZWN0b3Ioc2l6ZSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgIHZlY3RvcltpXSA9IEluamVjdGVkQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbTo6Y3JlYXRlKGNoaWxkcmVuW2ldKTsKLSAgICByZXR1cm4gSW1tdXRhYmxlQXJy
YXk6OmFkb3B0KHZlY3Rvcik7CisgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBjaGlsZHJl
bjsKKyAgICBjaGlsZHJlbi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1faXRlbS0+Y2hpbGRyZW4o
KS5zaXplKCkpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IG1faXRlbS0+Y2hpbGRy
ZW4oKSkKKyAgICAgICAgY2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKEluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKGNoaWxkKSk7CisKKyAgICByZXR1cm4gSW1tdXRhYmxl
QXJyYXk6OmFkb3B0KGNoaWxkcmVuKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUZvcm1DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmNwcAppbmRleCAzYWY2Y2Y0
OWE1MTkyMmY5MGZlNmJiYmI4NGEzMTM3YmU5ODAzYTQyLi42NDljZjI1ZmFlODI2YWUwZjA2ZjBk
MDg3NWY5NzViZDdkZTU5Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
Rm9ybUNsaWVudC5jcHAKQEAgLTEzMCwxMyArMTMwLDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlRm9ybUNsaWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzKFdlYlBhZ2UqIHBhZ2UsIGNv
bnN0CiAgICAgaWYgKCFtX2NsaWVudC5kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHNpemVfdCBzaXplID0gZWxlbWVudHMuc2l6ZSgpOwotCiAgICAgVmVj
dG9yPFJlZlB0cjxBUElPYmplY3Q+PiBlbGVtZW50SGFuZGxlczsKLSAgICBlbGVtZW50SGFuZGxl
cy5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CisgICAgZWxlbWVudEhhbmRsZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShlbGVtZW50cy5zaXplKCkpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgIGVsZW1lbnRIYW5kbGVzLnVuY2hlY2tlZEFwcGVuZChJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKGVsZW1lbnRzW2ldLmdldCgpKS5nZXQo
KSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpCisgICAgICAgIGVs
ZW1lbnRIYW5kbGVzLnVuY2hlY2tlZEFwcGVuZChJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omdl
dE9yQ3JlYXRlKGVsZW1lbnQuZ2V0KCkpKTsKIAogICAgIG1fY2xpZW50LmRpZEFzc29jaWF0ZUZv
cm1Db250cm9scyh0b0FQSShwYWdlKSwgdG9BUEkoSW1tdXRhYmxlQXJyYXk6OmFkb3B0KGVsZW1l
bnRIYW5kbGVzKS5nZXQoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDNiZmU5NzdkZDBh
Y2E5ZjcwMDA3ZTVhZGE4OGM4ZWU3ZWE4YjVhNTQuLjFjZDhlODU3ZjkzZTE4NTI3ZWNlN2YxZmUw
YmU5ZjE1YzE5Y2JkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5jcHAKQEAgLTM0MSwxNSArMzQxLDEzIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50OjpmZWF0dXJlc1VzZWRJblBhZ2UoV2ViUGFnZSogcGFnZSwgY29uc3Qg
VmVjCiAgICAgaWYgKCFtX2NsaWVudC5mZWF0dXJlc1VzZWRJblBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gZmVhdHVyZVN0cmluZ09iamVjdHNW
ZWN0b3I7CisgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBmZWF0dXJlU3RyaW5nczsKKyAg
ICBmZWF0dXJlU3RyaW5ncy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZlYXR1cmVzLnNpemUoKSk7
CiAKLSAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZmVhdHVyZXMuZW5k
KCk7Ci0gICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBmZWF0dXJl
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGZlYXR1cmVTdHJpbmdPYmplY3Rz
VmVjdG9yLmFwcGVuZChXZWJTdHJpbmc6OmNyZWF0ZSgoKml0KSkpOworICAgIGZvciAoY29uc3Qg
YXV0byYgZmVhdHVyZSA6IGZlYXR1cmVzKQorICAgICAgICBmZWF0dXJlU3RyaW5ncy51bmNoZWNr
ZWRBcHBlbmQoV2ViU3RyaW5nOjpjcmVhdGUoZmVhdHVyZSkpOwogCi0gICAgUmVmUHRyPEltbXV0
YWJsZUFycmF5PiBmZWF0dXJlU3RyaW5nT2JqZWN0c0FycmF5ID0gSW1tdXRhYmxlQXJyYXk6OmFk
b3B0KGZlYXR1cmVTdHJpbmdPYmplY3RzVmVjdG9yKTsKLQotICAgIHJldHVybiBtX2NsaWVudC5m
ZWF0dXJlc1VzZWRJblBhZ2UodG9BUEkocGFnZSksIHRvQVBJKGZlYXR1cmVTdHJpbmdPYmplY3Rz
QXJyYXkuZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICByZXR1cm4gbV9jbGllbnQu
ZmVhdHVyZXNVc2VkSW5QYWdlKHRvQVBJKHBhZ2UpLCB0b0FQSShJbW11dGFibGVBcnJheTo6YWRv
cHQoZmVhdHVyZVN0cmluZ3MpLmdldCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsRGVzdHJveUZyYW1lKFdlYlBh
Z2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkM2ZlMDVkOGEzOWFkYmY1NTQyYTRmNWRlNjE3MjBm
MzRkMDUwZjYxLi4zMDEyODVhZDkxMDFlNDllM2QxNmE2MzcyOWJkYjcyMGM4MDc4ODE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02NjIs
MTggKzY2MiwxMyBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJQYWdlOjp0cmFja2Vk
UmVwYWludFJlY3RzKCkKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBJbW11dGFibGVB
cnJheTo6Y3JlYXRlKCk7CiAKLSAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzID0gdmll
dy0+dHJhY2tlZFJlcGFpbnRSZWN0cygpOwotICAgIHNpemVfdCBzaXplID0gcmVjdHMuc2l6ZSgp
OwotICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjpjcmVhdGUo
KTsKLQotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0Pj4gdmVjdG9yOwotICAgIHZlY3Rvci5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0
Pj4gcmVwYWludFJlY3RzOworICAgIHJlcGFpbnRSZWN0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHZpZXctPnRyYWNrZWRSZXBhaW50UmVjdHMoKS5zaXplKCkpOwogCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQoV2Vi
UmVjdDo6Y3JlYXRlKHRvQVBJKHJlY3RzW2ldKSkpOworICAgIGZvciAoY29uc3QgYXV0byYgcmVw
YWludFJlY3QgOiB2aWV3LT50cmFja2VkUmVwYWludFJlY3RzKCkpCisgICAgICAgIHJlcGFpbnRS
ZWN0cy51bmNoZWNrZWRBcHBlbmQoV2ViUmVjdDo6Y3JlYXRlKHRvQVBJKHJlcGFpbnRSZWN0KSkp
OwogCi0gICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdCh2ZWN0b3IpOworICAgIHJldHVy
biBJbW11dGFibGVBcnJheTo6YWRvcHQocmVwYWludFJlY3RzKTsKIH0KIAogUGx1Z2luVmlldyog
V2ViUGFnZTo6Zm9jdXNlZFBsdWdpblZpZXdGb3JGcmFtZShGcmFtZSYgZnJhbWUpCg==
</data>
<flag name="review"
          id="239702"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>