<?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>126939</bug_id>
          
          <creation_ts>2014-01-13 15:40:55 -0800</creation_ts>
          <short_desc>[WebGL2] Instancing draw calls</short_desc>
          <delta_ts>2015-03-16 16:48:07 -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>WebGL</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>
          <dependson>127257</dependson>
          <blocked>126404</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>967502</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-01-13 15:40:55 -0800</bug_when>
    <thetext>Implement the new instanced draw calls.

I expect there already is a bug for implementing the  ANGLE_instanced_arrays extension for WebGL 1.0, which provides similar functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967503</commentid>
    <comment_count>1</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-01-13 15:41:56 -0800</bug_when>
    <thetext>&lt;rdar://problem/15002379&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077611</commentid>
    <comment_count>2</comment_count>
      <attachid>248762</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-03-16 15:51:11 -0700</bug_when>
    <thetext>Created attachment 248762
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077633</commentid>
    <comment_count>3</comment_count>
      <attachid>248762</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-03-16 16:25:28 -0700</bug_when>
    <thetext>Comment on attachment 248762
patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        These tests will be landed along with other modified extension conformance tests
&gt; +        once approval from Khronos is received.

I think we should last at least some tests that exercise this new feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077639</commentid>
    <comment_count>4</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-03-16 16:48:07 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/181596</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248762</attachid>
            <date>2015-03-16 15:51:11 -0700</date>
            <delta_ts>2015-03-16 16:25:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>25463</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE1LTAzLTE2ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMMl0gSW5zdGFuY2lu
ZyBkcmF3IGNhbGxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2OTM5LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTUwMDIzNzk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIGJ5IGEgbW9k
aWZpZWQgdmVyc2lvbiBvZiB0aGUgMS4wLjMgY29uZm9ybWFuY2UgdGVzdHM6CisgICAgICAgIGNv
bmZvcm1hbmNlL2V4dGVuc2lvbnMvYW5nbGUtaW5zdGFuY2VkLWFycmF5cy5odG1sCisgICAgICAg
IGNvbmZvcm1hbmNlL2V4dGVuc2lvbnMvYW5nbGUtaW5zdGFuY2VkLWFycmF5cy1vdXQtb2YtYm91
bmRzLmh0bWwKKworICAgICAgICBUaGVzZSB0ZXN0cyB3aWxsIGJlIGxhbmRlZCBhbG9uZyB3aXRo
IG90aGVyIG1vZGlmaWVkIGV4dGVuc2lvbiBjb25mb3JtYW5jZSB0ZXN0cworICAgICAgICBvbmNl
IGFwcHJvdmFsIGZyb20gS2hyb25vcyBpcyByZWNlaXZlZC4KKworICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIpOiBHZW5lcmF0ZSBlcnJvciBpZiBjbGVhcmluZyBhbiBp
bnRlZ2VyIGNvbG9yIGJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnZlcnRleEF0dHJpYkRpdmlzb3IpOiBDYWxsIG1ldGhvZCBmcm9tIGJhc2UgY2xhc3Mu
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkcmF3QXJyYXlzSW5z
dGFuY2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmlzSW50ZWdlckZvcm1hdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVEcmF3RWxlbWVudHMpOiBEZWxl
dGVkLiBNb3ZlIGJhY2sgdG8gYmFzZSBjbGFzcy4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5pZGw6IEFkZCBhIG1pc3NpbmcgZW51bS4KKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpjbGVhcik6IENvcGllZCBmcm9tIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlRHJh
d0VsZW1lbnRzKTogRGVsZXRlZC4gTW92ZSBiYWNrIHRvIGJhc2UgY2xhc3MuCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2xlYXIpOiBEZWxldGVkLiBNb3ZlZCB0byBXZWJHTFJl
bmRlcmluZ0NvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRWZXJ0ZXhBdHRyaWIpOiBDaGVjayBmb3IgV2ViR0wyIGNvbnRleHQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlRHJhd0VsZW1lbnRzKTog
RGl0dG8uCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
OgorCiAyMDE1LTAzLTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFrZSBEYXRhYmFzZUNvbnRleHQgc3VzcGVuZGFibGUgaWYgdGhlcmUgaXMgbm8gcGVuZGlu
ZyBkYXRhYmFzZSBhY3Rpdml0eQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDE4MTU3MykKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NDksMjggKzQ0OSw1MCBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnZlcnRleEF0dHJpCiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiB9CiAKK3ZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spCit7CisgICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICht
YXNrICYgfihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVCB8IEdyYXBoaWNzQ29u
dGV4dDNEOjpERVBUSF9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVG
RkVSX0JJVCkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfVkFMVUUsICJjbGVhciIsICJpbnZhbGlkIG1hc2siKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgKG1hc2sgJiBHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVCkgJiYgaXNJbnRlZ2VyRm9ybWF0KG1fZnJhbWVi
dWZmZXJCaW5kaW5nLT5nZXRDb2xvckJ1ZmZlckZvcm1hdCgpKSkgeworICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJjbGVhciIs
ICJjYW5ub3QgY2xlYXIgYW4gaW50ZWdlciBidWZmZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBjb25zdCBjaGFyKiByZWFzb24gPSAiZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7Cisg
ICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25B
Y2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwgIWlzUmVzb3VyY2VTYWZlKCksICZyZWFzb24pKSB7
CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0ZS
QU1FQlVGRkVSX09QRVJBVElPTiwgImNsZWFyIiwgcmVhc29uKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAoIWNsZWFySWZDb21wb3NpdGVkKG1hc2spKQorICAgICAgICBtX2NvbnRl
eHQtPmNsZWFyKG1hc2spOworICAgIG1hcmtDb250ZXh0Q2hhbmdlZCgpOworfQogCiB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0MzRHVpbnQgaW5kZXgs
IEdDM0R1aW50IGRpdmlzb3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBVTlVT
RURfUEFSQU0oZGl2aXNvcik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRl
eEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJz
dCwgR0MzRHNpemVpIGNvdW50LCBHQzNEc2l6ZWkgaW5zdGFuY2VDb3VudCkKIHsKLSAgICBVTlVT
RURfUEFSQU0obW9kZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0KTsKLSAgICBVTlVTRURfUEFS
QU0oY291bnQpOwotICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZUNvdW50KTsKKyAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpkcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwg
aW5zdGFuY2VDb3VudCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0g
dHlwZSwgR0MzRGludDY0IG9mZnNldCwgR0MzRHNpemVpIGluc3RhbmNlQ291bnQpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKG1vZGUpOwotICAgIFVOVVNFRF9QQVJBTShjb3VudCk7Ci0gICAgVU5VU0VE
X1BBUkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJB
TShpbnN0YW5jZUNvdW50KTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3RWxlbWVu
dHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgaW5zdGFuY2VDb3VudCk7CiB9
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1JhbmdlRWxlbWVudHMoR0MzRGVu
dW0gbW9kZSwgR0MzRHVpbnQgc3RhcnQsIEdDM0R1aW50IGVuZCwgR0MzRHNpemVpIGNvdW50LCBH
QzNEZW51bSB0eXBlLCBHQzNEaW50NjQgb2Zmc2V0KQpAQCAtMjA0Myw2ICsyMDY1LDE4IEBAIEdD
M0RlbnVtIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJhc2VJbnQKICAgICB9CiB9CiAKK2Jvb2wg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNJbnRlZ2VyRm9ybWF0KEdDM0RlbnVtIGludGVybmFs
Zm9ybWF0KQoreworICAgIHN3aXRjaCAoYmFzZUludGVybmFsRm9ybWF0RnJvbUludGVybmFsRm9y
bWF0KGludGVybmFsZm9ybWF0KSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFRF9J
TlRFR0VSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHX0lOVEVHRVI6CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCX0lOVEVHRVI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQV9JTlRFR0VSOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCiBXZWJHTEdldEluZm8gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVT
RURfUEFSQU0oZWMpOwpAQCAtMjQzNSw4MyArMjQ2OSw2IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dmFsaWRhdGVJbmQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVEcmF3RWxlbWVudHMoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIGxv
bmcgbG9uZyBvZmZzZXQsIHVuc2lnbmVkJiBudW1FbGVtZW50cywgR0MzRHNpemVpIHByaW1pdGl2
ZUNvdW50KQotewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
RHJhd01vZGUoZnVuY3Rpb25OYW1lLCBtb2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IAotICAgIGlmICghdmFsaWRhdGVTdGVuY2lsU2V0dGluZ3MoZnVuY3Rpb25OYW1lKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEU6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfU0hPUlQ6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0lOVDoKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVu
Y3Rpb25OYW1lLCAiaW52YWxpZCB0eXBlIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgCi0gICAgaWYgKGNvdW50IDwgMCB8fCBvZmZzZXQgPCAwKSB7Ci0gICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5h
bWUsICJjb3VudCBvciBvZmZzZXQgPCAwIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgCi0gICAgaWYgKCFjb3VudCkgewotICAgICAgICBtYXJrQ29udGV4dENoYW5nZWQoKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBpZiAocHJpbWl0aXZlQ291
bnQgPCAwKSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJwcmltY291bnQgPCAwIik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCFtX2JvdW5kVmVydGV4QXJyYXlPYmpl
Y3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpKSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAibm8g
RUxFTUVOVF9BUlJBWV9CVUZGRVIgYm91bmQiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICAKLSAgICBpZiAoIWlzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRzQWNjZXNzZXMo
KSkgewotICAgICAgICAvLyBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIHJlbmRlcmluZyBzdGF0ZQot
ICAgICAgICBpZiAoIXZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZShjb3VudCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8R0MzRGludHB0cj4ob2Zmc2V0KSkpIHsKLSAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAi
cmVxdWVzdCBvdXQgb2YgYm91bmRzIGZvciBjdXJyZW50IEVMRU1FTlRfQVJSQVlfQlVGRkVSIik7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFjb3Vu
dCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIENoZWNrZWQ8
R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRDb3VudChjb3VudCk7Ci0gICAgICAgIENo
ZWNrZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRQcmltaXRpdmVDb3VudChwcmlt
aXRpdmVDb3VudCk7Ci0gICAgICAgIGlmIChjaGVja2VkQ291bnQuaGFzT3ZlcmZsb3dlZCgpIHx8
IGNoZWNrZWRQcmltaXRpdmVDb3VudC5oYXNPdmVyZmxvd2VkKCkpIHsKLSAgICAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVu
Y3Rpb25OYW1lLCAiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBhcnJheXMiKTsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYg
KCF2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUodHlwZSwgbnVtRWxlbWVudHMpIHx8ICF2
YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMobnVtRWxlbWVudHMsIGNoZWNrZWRQcmltaXRpdmVDb3Vu
dC51bnNhZmVHZXQoKSkpIHsKLSAgICAgICAgICAgIGlmICghdmFsaWRhdGVJbmRleEFycmF5UHJl
Y2lzZShjaGVja2VkQ291bnQudW5zYWZlR2V0KCksIHR5cGUsIHN0YXRpY19jYXN0PEdDM0RpbnRw
dHI+KG9mZnNldCksIG51bUVsZW1lbnRzKSB8fCAhdmFsaWRhdGVWZXJ0ZXhBdHRyaWJ1dGVzKG51
bUVsZW1lbnRzLCBjaGVja2VkUHJpbWl0aXZlQ291bnQudW5zYWZlR2V0KCkpKSB7Ci0gICAgICAg
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BF
UkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0IHRvIGFjY2VzcyBvdXQgb2YgYm91bmRzIGFy
cmF5cyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghdmFsaWRhdGVWZXJ0ZXhBdHRyaWJ1
dGVzKDApKSB7Ci0gICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dHJpYnMgbm90IHNldHVwIGNv
cnJlY3RseSIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQot
ICAgIAotICAgIGNvbnN0IGNoYXIqIHJlYXNvbiA9ICJmcmFtZWJ1ZmZlciBpbmNvbXBsZXRlIjsK
LSAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5kaW5nLT5v
bkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAhaXNSZXNvdXJjZVNhZmUoKSwgJnJlYXNvbikp
IHsKLSAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
RlJBTUVCVUZGRVJfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsIHJlYXNvbik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVCbGVuZEVxdWF0aW9uKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0MzRGVudW0gbW9kZSkKIHsKICAgICBzd2l0Y2ggKG1vZGUpIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmgJKHJldmlzaW9uIDE4MTU3MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQzNEdWludCBpbmRleCwgR0Mz
RGludCBzaXplLCBHQzNEZW51bSB0eXBlLCBHQzNEc2l6ZWkgc3RyaWRlLCBHQzNEaW50NjQgb2Zm
c2V0KTsKICAgICAKICAgICAvKiBXcml0aW5nIHRvIHRoZSBkcmF3aW5nIGJ1ZmZlciAqLworICAg
IHZpcnR1YWwgdm9pZCBjbGVhcihHQzNEYml0ZmllbGQgbWFzaykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDM0R1aW50IGluZGV4LCBHQzNEdWludCBkaXZpc29yKTsK
ICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJz
dCwgR0MzRHNpemVpIGNvdW50LCBHQzNEc2l6ZWkgaW5zdGFuY2VDb3VudCk7CiAgICAgdm9pZCBk
cmF3RWxlbWVudHNJbnN0YW5jZWQoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNE
ZW51bSB0eXBlLCBHQzNEaW50NjQgb2Zmc2V0LCBHQzNEc2l6ZWkgaW5zdGFuY2VDb3VudCk7CkBA
IC0xOTMsNyArMTk0LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgR0MzRGludCBnZXRNYXhE
cmF3QnVmZmVycygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgR0MzRGludCBnZXRNYXhDb2xvckF0
dGFjaG1lbnRzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHZhbGlkYXRlSW5kZXhBcnJh
eUNvbnNlcnZhdGl2ZShHQzNEZW51bSB0eXBlLCB1bnNpZ25lZCYgbnVtRWxlbWVudHNSZXF1aXJl
ZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHZhbGlkYXRlRHJhd0VsZW1lbnRzKGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNE
ZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCYgbnVtRWxlbWVudHMsIEdDM0Rz
aXplaSBwcmltaXRpdmVDb3VudCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHZhbGlkYXRl
QmxlbmRFcXVhdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIG1vZGUpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RlbnVt
IGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRGludCBsZXZlbCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIHZhbGlkYXRlVGV4RnVuY1BhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLApAQCAtMjEyLDYgKzIxMiw3IEBAIHByb3RlY3RlZDoKICAgICAKIHByaXZhdGU6CiAgICAg
R0MzRGVudW0gYmFzZUludGVybmFsRm9ybWF0RnJvbUludGVybmFsRm9ybWF0KEdDM0RlbnVtIGlu
dGVybmFsZm9ybWF0KTsKKyAgICBib29sIGlzSW50ZWdlckZvcm1hdChHQzNEZW51bSBpbnRlcm5h
bGZvcm1hdCk7CiAgICAgdm9pZCBpbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucygpOwogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDE4MTUwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYs
NiArMzI2LDcgQEAgdHlwZWRlZiB1bnJlc3RyaWN0ZWQgZmxvYXQgR0xjbGFtcGY7CiAgICAgY29u
c3QgR0xlbnVtIE1BWF9FTEVNRU5UX0lOREVYICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IDB4OEQ2QjsKICAgICBjb25zdCBHTGVudW0gTlVNX1NBTVBMRV9DT1VOVFMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMHg5MzgwOwogICAgIGNvbnN0IEdMZW51bSBURVhUVVJFX0lNTVVU
QUJMRV9MRVZFTFMgICAgICAgICAgICAgICAgICAgICAgPSAweDgyREY7CisgICAgY29uc3QgR0xl
bnVtIFZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUl9BTkdMRSAgICAgICAgICAgICA9IDB4ODhG
RTsKIAogICAgIGNvbnN0IEdMdWludDY0IFRJTUVPVVRfSUdOT1JFRCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAweEZGRkZGRkZGRkZGRkZGRkY7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNp
b24gMTgxNTczKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDYgKzQ0OCwyNCBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6aGludChHQzNEZW51CiAgICAgfQogICAgIG1fY29udGV4dC0+aGlu
dCh0YXJnZXQsIG1vZGUpOwogfQorICAgIAordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNs
ZWFyKEdDM0RiaXRmaWVsZCBtYXNrKQoreworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobWFzayAmIH4oR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX0JVRkZFUl9CSVQgfCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVCB8
IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQpKSB7CisgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY2xlYXIiLCAi
aW52YWxpZCBtYXNrIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29uc3QgY2hhciog
cmVhc29uID0gImZyYW1lYnVmZmVyIGluY29tcGxldGUiOworICAgIGlmIChtX2ZyYW1lYnVmZmVy
QmluZGluZyAmJiAhbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4
dDNEKCksICFpc1Jlc291cmNlU2FmZSgpLCAmcmVhc29uKSkgeworICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04s
ICJjbGVhciIsIHJlYXNvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFjbGVh
cklmQ29tcG9zaXRlZChtYXNrKSkKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhcihtYXNrKTsKKyAg
ICBtYXJrQ29udGV4dENoYW5nZWQoKTsKK30KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQogewpAQCAtMTIxOSw4NiArMTIzNyw2IEBA
IGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGUKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZURyYXdFbGVtZW50
cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3Vu
dCwgR0MzRGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgdW5zaWduZWQmIG51bUVsZW1lbnRz
LCBHQzNEc2l6ZWkgcHJpbWl0aXZlQ291bnQpCi17Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVEcmF3TW9kZShmdW5jdGlvbk5hbWUsIG1vZGUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYgKCF2YWxpZGF0ZVN0ZW5jaWxTZXR0aW5ncyhm
dW5jdGlvbk5hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgc3dpdGNoICh0
eXBlKSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURToKLSAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVDoKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfSU5UOgotICAgICAgICBpZiAobV9v
ZXNFbGVtZW50SW5kZXhVaW50KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwg
ImludmFsaWQgdHlwZSIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwg
ZnVuY3Rpb25OYW1lLCAiaW52YWxpZCB0eXBlIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgCi0gICAgaWYgKGNvdW50IDwgMCB8fCBvZmZzZXQgPCAwKSB7Ci0gICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlv
bk5hbWUsICJjb3VudCBvciBvZmZzZXQgPCAwIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgCi0gICAgaWYgKCFjb3VudCkgewotICAgICAgICBtYXJrQ29udGV4dENoYW5nZWQo
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBpZiAocHJpbWl0aXZl
Q291bnQgPCAwKSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJwcmltY291bnQgPCAwIik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCFtX2JvdW5kVmVydGV4QXJyYXlP
YmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpKSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAi
bm8gRUxFTUVOVF9BUlJBWV9CVUZGRVIgYm91bmQiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICAKLSAgICBpZiAoIWlzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRzQWNjZXNz
ZXMoKSkgewotICAgICAgICAvLyBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIHJlbmRlcmluZyBzdGF0
ZQotICAgICAgICBpZiAoIXZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZShjb3VudCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8R0MzRGludHB0cj4ob2Zmc2V0KSkpIHsKLSAgICAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1l
LCAicmVxdWVzdCBvdXQgb2YgYm91bmRzIGZvciBjdXJyZW50IEVMRU1FTlRfQVJSQVlfQlVGRkVS
Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFj
b3VudCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIENoZWNr
ZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRDb3VudChjb3VudCk7Ci0gICAgICAg
IENoZWNrZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRQcmltaXRpdmVDb3VudChw
cmltaXRpdmVDb3VudCk7Ci0gICAgICAgIGlmIChjaGVja2VkQ291bnQuaGFzT3ZlcmZsb3dlZCgp
IHx8IGNoZWNrZWRQcmltaXRpdmVDb3VudC5oYXNPdmVyZmxvd2VkKCkpIHsKLSAgICAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwg
ZnVuY3Rpb25OYW1lLCAiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBhcnJheXMiKTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
aWYgKCF2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUodHlwZSwgbnVtRWxlbWVudHMpIHx8
ICF2YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMobnVtRWxlbWVudHMsIGNoZWNrZWRQcmltaXRpdmVD
b3VudC51bnNhZmVHZXQoKSkpIHsKLSAgICAgICAgICAgIGlmICghdmFsaWRhdGVJbmRleEFycmF5
UHJlY2lzZShjaGVja2VkQ291bnQudW5zYWZlR2V0KCksIHR5cGUsIHN0YXRpY19jYXN0PEdDM0Rp
bnRwdHI+KG9mZnNldCksIG51bUVsZW1lbnRzKSB8fCAhdmFsaWRhdGVWZXJ0ZXhBdHRyaWJ1dGVz
KG51bUVsZW1lbnRzLCBjaGVja2VkUHJpbWl0aXZlQ291bnQudW5zYWZlR2V0KCkpKSB7Ci0gICAg
ICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0IHRvIGFjY2VzcyBvdXQgb2YgYm91bmRz
IGFycmF5cyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghdmFsaWRhdGVWZXJ0ZXhBdHRy
aWJ1dGVzKDApKSB7Ci0gICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dHJpYnMgbm90IHNldHVw
IGNvcnJlY3RseSIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
fQotICAgIAotICAgIGNvbnN0IGNoYXIqIHJlYXNvbiA9ICJmcmFtZWJ1ZmZlciBpbmNvbXBsZXRl
IjsKLSAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5kaW5n
LT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAhaXNSZXNvdXJjZVNhZmUoKSwgJnJlYXNv
bikpIHsKLSAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsIHJlYXNvbik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUJsZW5kRXF1YXRpb24oY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBtb2RlKQogewogICAgIHN3aXRjaCAobW9kZSkgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmgJKHJldmlzaW9uIDE4MTU3MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJn
ZXQsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBo
ZWlnaHQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZUZyYW1lYnVmZmVyRnVu
Y1BhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBoaW50KEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudW0gbW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNs
ZWFyKEdDM0RiaXRmaWVsZCBtYXNrKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29weVRl
eEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGludCBib3JkZXIpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhT
dWJJbWFnZTJEQmFzZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9m
ZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQs
IEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUs
IGNvbnN0IHZvaWQqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCB0ZXhTdWJJbWFnZTJESW1wbChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0Rl
bnVtIHR5cGUsIEltYWdlKiwgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlSHRtbERvbVNvdXJjZSwg
Ym9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJp
ZGU7CkBAIC02Niw3ICs2Nyw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEdDM0RpbnQgZ2V0
TWF4Q29sb3JBdHRhY2htZW50cygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplVmVydGV4QXJyYXlPYmplY3RzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHZhbGlk
YXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShHQzNEZW51bSB0eXBlLCB1bnNpZ25lZCYgbnVtRWxl
bWVudHNSZXF1aXJlZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHZhbGlkYXRlRHJhd0Vs
ZW1lbnRzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gbW9kZSwgR0MzRHNpemVp
IGNvdW50LCBHQzNEZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCYgbnVtRWxl
bWVudHMsIEdDM0RzaXplaSBwcmltaXRpdmVDb3VudCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIHZhbGlkYXRlQmxlbmRFcXVhdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0Rl
bnVtIG1vZGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZVRleEZ1bmNQYXJh
bWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKICAgICAgICAgVGV4RnVuY1ZhbGlkYXRp
b25GdW5jdGlvblR5cGUsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAkocmV2aXNpb24gMTgxNTczKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNzAsMjQgKzExNzAsNiBAQCBHQzNEZW51bSBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpjaGVjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjbGVhcihHQzNEYml0ZmllbGQgbWFzaykKLXsKLSAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYg
KG1hc2sgJiB+KEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUIHwgR3JhcGhpY3ND
b250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQgfCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9C
VUZGRVJfQklUKSkgewotICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSwgImNsZWFyIiwgImludmFsaWQgbWFzayIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNvbnN0IGNoYXIqIHJlYXNvbiA9ICJmcmFtZWJ1ZmZlciBpbmNvbXBs
ZXRlIjsKLSAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5k
aW5nLT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAhaXNSZXNvdXJjZVNhZmUoKSwgJnJl
YXNvbikpIHsKLSAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCAiY2xlYXIiLCByZWFzb24pOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGlmICghY2xlYXJJZkNvbXBvc2l0ZWQobWFzaykpCi0gICAgICAg
IG1fY29udGV4dC0+Y2xlYXIobWFzayk7Ci0gICAgbWFya0NvbnRleHRDaGFuZ2VkKCk7Ci19Ci0K
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2xlYXJDb2xvcihHQzNEZmxvYXQgciwg
R0MzRGZsb2F0IGcsIEdDM0RmbG9hdCBiLCBHQzNEZmxvYXQgYSkKIHsKICAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpKQpAQCAtMTgwOSw2ICsxNzkxLDg2IEBAIGJvb2wgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZURyYXdFbGVtZW50cyhjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0g
dHlwZSwgbG9uZyBsb25nIG9mZnNldCwgdW5zaWduZWQmIG51bUVsZW1lbnRzLCBHQzNEc2l6ZWkg
cHJpbWl0aXZlQ291bnQpCit7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVEcmF3TW9kZShmdW5jdGlvbk5hbWUsIG1vZGUpKQorICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBpZiAoIXZhbGlkYXRlU3RlbmNpbFNldHRpbmdzKGZ1bmN0aW9uTmFtZSkpCisg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfU0hPUlQ6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0lOVDoKKyAgICAgICAgaWYgKG1fb2VzRWxlbWVudEluZGV4VWludCAm
JiAhaXNXZWJHTDIoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZh
bGlkIHR5cGUiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0
aW9uTmFtZSwgImludmFsaWQgdHlwZSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIAorICAgIGlmIChjb3VudCA8IDAgfHwgb2Zmc2V0IDwgMCkgeworICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1l
LCAiY291bnQgb3Igb2Zmc2V0IDwgMCIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIAorICAgIGlmICghY291bnQpIHsKKyAgICAgICAgbWFya0NvbnRleHRDaGFuZ2VkKCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKHByaW1pdGl2ZUNvdW50
IDwgMCkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAicHJpbWNvdW50IDwgMCIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmICghbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0
LT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIm5vIEVM
RU1FTlRfQVJSQVlfQlVGRkVSIGJvdW5kIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgCisgICAgaWYgKCFpc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzKCkp
IHsKKyAgICAgICAgLy8gRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCByZW5kZXJpbmcgc3RhdGUKKyAg
ICAgICAgaWYgKCF2YWxpZGF0ZUVsZW1lbnRBcnJheVNpemUoY291bnQsIHR5cGUsIHN0YXRpY19j
YXN0PEdDM0RpbnRwdHI+KG9mZnNldCkpKSB7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgInJl
cXVlc3Qgb3V0IG9mIGJvdW5kcyBmb3IgY3VycmVudCBFTEVNRU5UX0FSUkFZX0JVRkZFUiIpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmICghY291bnQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBDaGVja2VkPEdD
M0RpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkQ291bnQoY291bnQpOworICAgICAgICBDaGVj
a2VkPEdDM0RpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkUHJpbWl0aXZlQ291bnQocHJpbWl0
aXZlQ291bnQpOworICAgICAgICBpZiAoY2hlY2tlZENvdW50Lmhhc092ZXJmbG93ZWQoKSB8fCBj
aGVja2VkUHJpbWl0aXZlQ291bnQuaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0
aW9uTmFtZSwgImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMgYXJyYXlzIik7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICgh
dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKHR5cGUsIG51bUVsZW1lbnRzKSB8fCAhdmFs
aWRhdGVWZXJ0ZXhBdHRyaWJ1dGVzKG51bUVsZW1lbnRzLCBjaGVja2VkUHJpbWl0aXZlQ291bnQu
dW5zYWZlR2V0KCkpKSB7CisgICAgICAgICAgICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheVByZWNp
c2UoY2hlY2tlZENvdW50LnVuc2FmZUdldCgpLCB0eXBlLCBzdGF0aWNfY2FzdDxHQzNEaW50cHRy
PihvZmZzZXQpLCBudW1FbGVtZW50cykgfHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhudW1F
bGVtZW50cywgY2hlY2tlZFByaW1pdGl2ZUNvdW50LnVuc2FmZUdldCgpKSkgeworICAgICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJB
VElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBhcnJh
eXMiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXZhbGlkYXRlVmVydGV4QXR0cmlidXRl
cygwKSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRyaWJzIG5vdCBzZXR1cCBjb3Jy
ZWN0bHkiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICBjb25zdCBjaGFyKiByZWFzb24gPSAiZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7Cisg
ICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25B
Y2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwgIWlzUmVzb3VyY2VTYWZlKCksICZyZWFzb24pKSB7
CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0ZS
QU1FQlVGRkVSX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCByZWFzb24pOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBm
aXJzdCwgR0MzRHNpemVpIGNvdW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURf
UEFSQU0oZWMpOwpAQCAtMjUxNSw3ICsyNTc3LDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OgogCiAgICAgY29uc3QgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2U6
OlZlcnRleEF0dHJpYlN0YXRlJiBzdGF0ZSA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0
VmVydGV4QXR0cmliU3RhdGUoaW5kZXgpOwogCi0gICAgaWYgKG1fYW5nbGVJbnN0YW5jZWRBcnJh
eXMgJiYgcG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfRElW
SVNPUl9BTkdMRSkKKyAgICBpZiAoKGlzV2ViR0wyKCkgfHwgbV9hbmdsZUluc3RhbmNlZEFycmF5
cykgJiYgcG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfRElW
SVNPUl9BTkdMRSkKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0ZS5kaXZpc29yKTsK
IAogICAgIHN3aXRjaCAocG5hbWUpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgJKHJldmlzaW9uIDE4MTU3
MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBBcnJheUJ1
ZmZlclZpZXcqIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIEdDM0RlbnVtIGNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KTsKLSAgICB2b2lkIGNsZWFyKEdDM0RiaXRm
aWVsZCBtYXNrKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spID0g
MDsKICAgICB2b2lkIGNsZWFyQ29sb3IoR0MzRGZsb2F0IHJlZCwgR0MzRGZsb2F0IGdyZWVuLCBH
QzNEZmxvYXQgYmx1ZSwgR0MzRGZsb2F0IGFscGhhKTsKICAgICB2b2lkIGNsZWFyRGVwdGgoR0Mz
RGZsb2F0KTsKICAgICB2b2lkIGNsZWFyU3RlbmNpbChHQzNEaW50KTsKQEAgLTM1NCw3ICszNTQs
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdW5zaWduZWQgZ2V0TWF4VmVydGV4QXR0cmlicygpIGNv
bnN0IHsgcmV0dXJuIG1fbWF4VmVydGV4QXR0cmliczsgfQogCi0gICAgLy8gQU5HTEVfaW5zdGFu
Y2VkX2FycmF5cyBleHRlbnNpb24gZnVuY3Rpb25zLgorICAgIC8vIEluc3RhbmNlZCBBcnJheSBo
ZWxwZXIgZnVuY3Rpb25zLgogICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQzNEZW51bSBt
b2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQsIEdDM0RzaXplaSBwcmltY291bnQp
OwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXpl
aSBjb3VudCwgR0MzRGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0MzRHNpemVpIHByaW1j
b3VudCk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDM0R1aW50IGluZGV4LCBHQzNE
dWludCBkaXZpc29yKTsKQEAgLTQyMSw3ICs0MjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCB2
YWxpZGF0ZVdlYkdMT2JqZWN0KGNvbnN0IGNoYXIqLCBXZWJHTE9iamVjdCopOwogCiAgICAgYm9v
bCB2YWxpZGF0ZURyYXdBcnJheXMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBt
b2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQsIEdDM0RzaXplaSBwcmltY291bnQp
OwotICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZURyYXdFbGVtZW50cyhjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwg
bG9uZyBsb25nIG9mZnNldCwgdW5zaWduZWQmIG51bUVsZW1lbnRzLCBHQzNEc2l6ZWkgcHJpbWNv
dW50KSA9IDA7CisgICAgYm9vbCB2YWxpZGF0ZURyYXdFbGVtZW50cyhjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwg
bG9uZyBsb25nIG9mZnNldCwgdW5zaWduZWQmIG51bUVsZW1lbnRzLCBHQzNEc2l6ZWkgcHJpbWNv
dW50KTsKIAogICAgIC8vIEFkZHMgYSBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0LgogICAgIHZv
aWQgYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR0MzRGVudW0pOwo=
</data>
<flag name="review"
          id="273638"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>