<?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>100704</bug_id>
          
          <creation_ts>2012-10-29 15:10:44 -0700</creation_ts>
          <short_desc>[CSS Exclusions] Clean up shape-inside tests&apos; subpixel snapping code</short_desc>
          <delta_ts>2012-11-02 18:22:21 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>100307</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Bear Travis">betravis</reporter>
          <assigned_to name="Bear Travis">betravis</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>753794</commentid>
    <comment_count>0</comment_count>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-10-29 15:10:44 -0700</bug_when>
    <thetext>Layout pixel snaps the position of segments for shape-inside.
Modify the rounded rectangle tests to use the same pixel snapping as the polygon tests.

In sub-pixel layout, the result may be slightly different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753797</commentid>
    <comment_count>1</comment_count>
      <attachid>171321</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-10-29 15:15:32 -0700</bug_when>
    <thetext>Created attachment 171321
initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754621</commentid>
    <comment_count>2</comment_count>
      <attachid>171511</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-10-30 13:24:12 -0700</bug_when>
    <thetext>Created attachment 171511
Factoring out subpixel test code to separate file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754639</commentid>
    <comment_count>3</comment_count>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-10-30 13:54:09 -0700</bug_when>
    <thetext>Modifying bug to cover factoring subpixel code out of polygon tests as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754652</commentid>
    <comment_count>4</comment_count>
      <attachid>171518</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-10-30 14:13:24 -0700</bug_when>
    <thetext>Created attachment 171518
Adding polygon tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754879</commentid>
    <comment_count>5</comment_count>
      <attachid>171518</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 19:09:40 -0700</bug_when>
    <thetext>Comment on attachment 171518
Adding polygon tests

Attachment 171518 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14662059

New failing tests:
fast/exclusions/shape-inside/shape-inside-rounded-rectangle-003.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755200</commentid>
    <comment_count>6</comment_count>
      <attachid>171518</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-10-31 05:59:07 -0700</bug_when>
    <thetext>Comment on attachment 171518
Adding polygon tests

Can you investigate why one of the exclusion tests is failing please? Does subPixelLayoutEnabled() not help here? Is it another problem and we need to skip it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756523</commentid>
    <comment_count>7</comment_count>
      <attachid>171905</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-11-01 12:04:35 -0700</bug_when>
    <thetext>Created attachment 171905
Updating patch

Forgot to pass along the subpixel argument when generating tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757416</commentid>
    <comment_count>8</comment_count>
      <attachid>172099</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-11-02 11:50:30 -0700</bug_when>
    <thetext>Created attachment 172099
refactoring subpixel rounding into the .js file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757807</commentid>
    <comment_count>9</comment_count>
      <attachid>172099</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-02 17:54:28 -0700</bug_when>
    <thetext>Comment on attachment 172099
refactoring subpixel rounding into the .js file

LGTM. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757829</commentid>
    <comment_count>10</comment_count>
      <attachid>172099</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 18:22:17 -0700</bug_when>
    <thetext>Comment on attachment 172099
refactoring subpixel rounding into the .js file

Clearing flags on attachment: 172099

Committed r133384: &lt;http://trac.webkit.org/changeset/133384&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757832</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 18:22:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171321</attachid>
            <date>2012-10-29 15:15:32 -0700</date>
            <delta_ts>2012-10-30 13:24:10 -0700</delta_ts>
            <desc>initial patch</desc>
            <filename>bug-100704-20121029151358.patch</filename>
            <type>text/plain</type>
            <size>3280</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODI3CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTQyMmY4MDQ2YmQ4YmVlZjQxMTY2
Mjc5NTJmNGQzZDk3NTY5Mzc1YS4uYWU2NDhjMjc5OWE2YmQ5ZmU4NTU5MWU4Y2M4MjNkNjFiYWYx
ZTFiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEwLTI5ICBCZWFyIFRyYXZpcyAgPGJl
dHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIENsZWFuIHVwIHJv
dW5kZWQgcmVjdGFuZ2xlIHRlc3RzIHRvIHVzZSBwaXhlbCBzbmFwcGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzA0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSByb3VuZGVkIHJl
Y3RhbmdsZSB0ZXN0cyB0byB1c2UgdGhlIHNhbWUgcGl4ZWwgc25hcHBpbmcgYmVoYXZpb3IKKyAg
ICAgICAgYXMgdGhlIHBvbHlnb24gdGVzdHMuIEluIHN1Yi1waXhlbCBsYXlvdXQsIHRoZSByb3Vu
ZGluZyBiZWhhdmlvciBtYXkgYmUgc2xpZ2h0bHkKKyAgICAgICAgZGlmZmVyZW50LgorCisgICAg
ICAgICogZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9yb3VuZGVkLXJlY3RhbmdsZS5qczoKKyAg
ICAgICAgKHN1YlBpeGVsTGF5b3V0RW5hYmxlZCk6IERldGVybWluZSBpZiBzdWJwaXhlbCBsYXlv
dXQgaXMgZW5hYmxlZC4KKyAgICAgICAgKHJvdW5kTGluZUxlZnQpOiBQaXhlbCBzbmFwIHRoZSBs
ZWZ0IGxpbmUgZWRnZS4KKyAgICAgICAgKHJvdW5kTGluZVJpZ2h0KTogUGl4ZWwgc25hcCB0aGUg
cmlnaHQgbGluZSBlZGdlLgorICAgICAgICAoc2ltdWxhdGVTaGFwZSk6IFVzZSB0aGUgdXBkYXRl
ZCBwaXhlbCBzbmFwcGluZyBtZXRob2RzLgorCiAyMDEyLTEwLTI5ICBaYW4gRG9iZXJzZWsgIDx6
YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVuaW5n
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9yb3Vu
ZGVkLXJlY3RhbmdsZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMv
cm91bmRlZC1yZWN0YW5nbGUuanMKaW5kZXggYzA5YjY0NDc0NjJjZDMxZjg5NWQ2OTc3ZTA3MTkz
NDNjZTlkNGM1YS4uNjg3ODQ1M2Y5MWUxYmRkYjJkY2VhNmY1OTYxNTM0Mjg4Y2E2Y2MwNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9yb3VuZGVkLXJl
Y3RhbmdsZS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3Jv
dW5kZWQtcmVjdGFuZ2xlLmpzCkBAIC0xLDMgKzEsMjggQEAKK3ZhciBfc3ViUGl4ZWxMYXlvdXQg
PSBudWxsOworZnVuY3Rpb24gc3ViUGl4ZWxMYXlvdXRFbmFibGVkKCkgeworICAgIGlmIChfc3Vi
UGl4ZWxMYXlvdXQgPT09IG51bGwpIHsKKyAgICAgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZWxlbS5zdHlsZS5zZXRQcm9wZXJ0eSgnd2lkdGgn
LCAnNC41cHgnKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtKTsKKyAg
ICAgICAgdmFyIGJvdW5kcyA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAg
IF9zdWJQaXhlbExheW91dCA9ICAoYm91bmRzLndpZHRoICE9IE1hdGguZmxvb3IoYm91bmRzLndp
ZHRoKSk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbSk7CisgICAgfQor
ICAgIHJldHVybiBfc3ViUGl4ZWxMYXlvdXQ7Cit9CisKK2Z1bmN0aW9uIHJvdW5kTGluZUxlZnQo
ZikgeworICAgIGlmICghc3ViUGl4ZWxMYXlvdXRFbmFibGVkKCkpCisgICAgICAgIHJldHVybiBN
YXRoLmZsb29yKGYpOworICAgIHJldHVybiBNYXRoLmZsb29yKChNYXRoLmZsb29yKGYgKiA2NCkg
KyAzMikgLyA2NCk7IC8vIHNlZSBGcmFjdGlvbkxheW91dFVuaXQ6OnJvdW5kKCkKK30KKworZnVu
Y3Rpb24gcm91bmRMaW5lUmlnaHQoZikgeworICAgIGlmIChzdWJQaXhlbExheW91dEVuYWJsZWQo
KSkKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoZik7CisgICAgcmV0dXJuIE1hdGguZmxvb3Io
TWF0aC5mbG9vcihmICogNjQpIC8gNjQpOyAvLyBzZWUgRnJhY3Rpb25MYXlvdXRVbml0OjpmbG9v
cigpCit9CisKIGZ1bmN0aW9uIHhGcm9tRWxsaXBzZUNlbnRlcih5RnJvbUVsbGlwc2VDZW50ZXIs
IHJhZGl1c1gsIHJhZGl1c1kpIHsKICAgICByZXR1cm4gcmFkaXVzWCAqIE1hdGguc3FydCgxIC0g
TWF0aC5wb3coeUZyb21FbGxpcHNlQ2VudGVyIC8gcmFkaXVzWSwgMikpOwogfQpAQCAtNTIsMTIg
Kzc3LDEyIEBAIGZ1bmN0aW9uIHNpbXVsYXRlU2hhcGUoZWxlbWVudElkLCBzdHlsZXNoZWV0LCBk
aW1lbnNpb25zLCBsaW5lSGVpZ2h0KSB7CiAKICAgICAgICAgdmFyIHBhZGRpbmdMZWZ0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHBhZGRpbmdMZWZ0LnNldEF0dHJp
YnV0ZSgiY2xhc3MiLCAiZmxvYXQgbGVmdCIpOwotICAgICAgICBwYWRkaW5nTGVmdC5zdHlsZS53
aWR0aCA9IGRpbWVuc2lvbnMuc2hhcGVYICsgaW5zZXQgKyAicHgiOworICAgICAgICBwYWRkaW5n
TGVmdC5zdHlsZS53aWR0aCA9IHJvdW5kTGluZUxlZnQoZGltZW5zaW9ucy5zaGFwZVggKyBpbnNl
dCkgKyAicHgiOwogICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHBhZGRpbmdMZWZ0KTsKIAog
ICAgICAgICB2YXIgcGFkZGluZ1JpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CiAgICAgICAgIHBhZGRpbmdSaWdodC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgImZsb2F0IHJpZ2h0
Iik7Ci0gICAgICAgIHBhZGRpbmdSaWdodC5zdHlsZS53aWR0aCA9IE1hdGguZmxvb3IoKGRpbWVu
c2lvbnMud2lkdGggLSBkaW1lbnNpb25zLnNoYXBlV2lkdGggLSBkaW1lbnNpb25zLnNoYXBlWCkg
KyBpbnNldCkgKyAicHgiOworICAgICAgICBwYWRkaW5nUmlnaHQuc3R5bGUud2lkdGggPSByb3Vu
ZExpbmVSaWdodCgoZGltZW5zaW9ucy53aWR0aCAtIGRpbWVuc2lvbnMuc2hhcGVXaWR0aCAtIGRp
bWVuc2lvbnMuc2hhcGVYKSArIGluc2V0KSArICJweCI7CiAgICAgICAgIGVsZW1lbnQuYXBwZW5k
Q2hpbGQocGFkZGluZ1JpZ2h0KTsKICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171511</attachid>
            <date>2012-10-30 13:24:12 -0700</date>
            <delta_ts>2012-10-30 14:13:21 -0700</delta_ts>
            <desc>Factoring out subpixel test code to separate file</desc>
            <filename>bug-100704-20121030132236.patch</filename>
            <type>text/plain</type>
            <size>13959</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyOTMzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTZiYjdhMzk2ODcxMmQ0NTQzNTNj
NmRmY2Y5YzI0NDU3Y2IzNzA1Zi4uNmYxYzFjMWQ0ZmJlMWQwOGQyMWM3ZGUwMmUxYmNlMzJjNDRm
Mzg5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEwLTMwICBCZWFyIFRyYXZpcyAgPGJl
dHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIENsZWFuIHVwIHJv
dW5kZWQgcmVjdGFuZ2xlIHRlc3RzIHRvIHVzZSBwaXhlbCBzbmFwcGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzA0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSByb3VuZGVkIHJl
Y3RhbmdsZSB0ZXN0cyB0byB1c2UgdGhlIHNhbWUgcGl4ZWwgc25hcHBpbmcgYmVoYXZpb3IKKyAg
ICAgICAgYXMgdGhlIHBvbHlnb24gdGVzdHMuIEluIHN1Yi1waXhlbCBsYXlvdXQsIHRoZSByb3Vu
ZGluZyBiZWhhdmlvciBtYXkgYmUgc2xpZ2h0bHkKKyAgICAgICAgZGlmZmVyZW50LiBUaGlzIGFk
ZHMgYSBuZXcgZmlsZSwgc3VicGl4ZWwtdXRpbHMuanMsIHdoaWNoIHRlc3RzIGZvciB0aGUgZmVh
dHVyZQorICAgICAgICBhdmFpbGFiaWxpdHkuIEkndmUgYWxzbyB0YWtlbiB0aGUgb3Bwb3J0dW5p
dHkgdG8gZmFjdG9yIHRoZSB3aW5kb3cuaW50ZXJuYWwuc2V0dGluZ3MKKyAgICAgICAgY29kZSBp
bnRvIHJvdW5kZWQtcmVjdGFuZ2xlLmpzLgorCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3Jl
c291cmNlcy9yb3VuZGVkLXJlY3RhbmdsZS5qczoKKyAgICAgICAgKHJvdW5kTGluZUxlZnQpOiBQ
aXhlbCBzbmFwIHRoZSBsZWZ0IGxpbmUgZWRnZS4KKyAgICAgICAgKHJvdW5kTGluZVJpZ2h0KTog
UGl4ZWwgc25hcCB0aGUgcmlnaHQgbGluZSBlZGdlLgorICAgICAgICAoc2ltdWxhdGVTaGFwZSk6
IEFjY2VwdCBhIG5ldyBhcmd1bWVudCBmb3Igd2hldGhlciBzdWJwaXhlbCBsYXlvdXQgaXMgZW5h
YmxlZC4KKyAgICAgICAgKGdlbmVyYXRlU2ltdWxhdGVkU2hhcGVFbGVtZW50KTogRGl0dG8uCisg
ICAgICAgICogZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9zdWJwaXhlbC11dGlscy5qczogQWRk
ZWQuCisgICAgICAgIChzdWJQaXhlbExheW91dEVuYWJsZWQpOiBEZXRlcm1pbmUgaWYgc3VicGl4
ZWwgbGF5b3V0IGlzIGVuYWJsZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAyLWV4cGVjdGVkLmh0bWw6Cisg
ICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRl
ZC1yZWN0YW5nbGUtMDAyLmh0bWw6CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAzLWV4cGVjdGVkLmh0bWw6Cisg
ICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRl
ZC1yZWN0YW5nbGUtMDAzLmh0bWw6CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDA0LWV4cGVjdGVkLmh0bWw6Cisg
ICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRl
ZC1yZWN0YW5nbGUtMDA0Lmh0bWw6CisKIDIwMTItMTAtMzAgIFJvZ2VyIEZvbmcgIDxyb2dlcl9m
b25nQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBTb21lIGZsYWt5IGh0dHAvc2Vj
dXJpdHkgdGVzdHMgdG8gYWRkIHRvIHRoZSBza2lwIGxpc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3JvdW5kZWQtcmVjdGFuZ2xlLmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9yb3VuZGVkLXJlY3RhbmdsZS5qcwpp
bmRleCBjMDliNjQ0NzQ2MmNkMzFmODk1ZDY5NzdlMDcxOTM0M2NlOWQ0YzVhLi41YTk3YjZjYWJj
YjMyNGZkM2RiODg3ZmRhMDc3OWVlZmNhMWI5NGMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3JvdW5kZWQtcmVjdGFuZ2xlLmpzCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvcm91bmRlZC1yZWN0YW5nbGUuanMKQEAg
LTEsMyArMSwxOCBAQAoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKworZnVuY3Rpb24gcm91
bmRMaW5lTGVmdChmLCBzdWJwaXhlbEVuYWJsZWQpIHsKKyAgICBpZiAoIXN1YnBpeGVsRW5hYmxl
ZCkKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoZik7CisgICAgcmV0dXJuIE1hdGguZmxvb3Io
KE1hdGguZmxvb3IoZiAqIDY0KSArIDMyKSAvIDY0KTsgLy8gc2VlIEZyYWN0aW9uTGF5b3V0VW5p
dDo6cm91bmQoKQorfQorCitmdW5jdGlvbiByb3VuZExpbmVSaWdodChmLCBzdWJwaXhlbEVuYWJs
ZWQpIHsKKyAgICBpZiAoIXN1YnBpeGVsRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIE1hdGguZmxv
b3IoZik7CisgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5mbG9vcihmICogNjQpIC8gNjQpOyAv
LyBzZWUgRnJhY3Rpb25MYXlvdXRVbml0OjpmbG9vcigpCit9CisKIGZ1bmN0aW9uIHhGcm9tRWxs
aXBzZUNlbnRlcih5RnJvbUVsbGlwc2VDZW50ZXIsIHJhZGl1c1gsIHJhZGl1c1kpIHsKICAgICBy
ZXR1cm4gcmFkaXVzWCAqIE1hdGguc3FydCgxIC0gTWF0aC5wb3coeUZyb21FbGxpcHNlQ2VudGVy
IC8gcmFkaXVzWSwgMikpOwogfQpAQCAtMjgsNyArNDMsNyBAQCBmdW5jdGlvbiBnZW5lcmF0ZVN0
cmluZyhkaW1lbnNpb25zLCBsaW5lSGVpZ2h0KSB7CiAgICAgcmV0dXJuIChuZXcgQXJyYXkoTWF0
aC5jZWlsKHJlc3VsdExlbmd0aCAvIDIpKS5qb2luKCJ4ICIpKTsKIH0KIAotZnVuY3Rpb24gc2lt
dWxhdGVTaGFwZShlbGVtZW50SWQsIHN0eWxlc2hlZXQsIGRpbWVuc2lvbnMsIGxpbmVIZWlnaHQp
IHsKK2Z1bmN0aW9uIHNpbXVsYXRlU2hhcGUoZWxlbWVudElkLCBzdHlsZXNoZWV0LCBkaW1lbnNp
b25zLCBsaW5lSGVpZ2h0LCBzdWJwaXhlbEVuYWJsZWQpIHsKICAgICB2YXIgc2ltcGxlUmVjdGFu
Z2xlID0gZGltZW5zaW9ucy5zaGFwZVJhZGl1c1ggPT0gMCB8fCBkaW1lbnNpb25zLnNoYXBlUmFk
aXVzWSA9PSAwOwogICAgIHZhciBmbG9hdEhlaWdodCA9IHNpbXBsZVJlY3RhbmdsZSA/IGRpbWVu
c2lvbnMuc2hhcGVIZWlnaHQgOiBsaW5lSGVpZ2h0OwogCkBAIC01MiwxMiArNjcsMTIgQEAgZnVu
Y3Rpb24gc2ltdWxhdGVTaGFwZShlbGVtZW50SWQsIHN0eWxlc2hlZXQsIGRpbWVuc2lvbnMsIGxp
bmVIZWlnaHQpIHsKIAogICAgICAgICB2YXIgcGFkZGluZ0xlZnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKICAgICAgICAgcGFkZGluZ0xlZnQuc2V0QXR0cmlidXRlKCJjbGFzcyIs
ICJmbG9hdCBsZWZ0Iik7Ci0gICAgICAgIHBhZGRpbmdMZWZ0LnN0eWxlLndpZHRoID0gZGltZW5z
aW9ucy5zaGFwZVggKyBpbnNldCArICJweCI7CisgICAgICAgIHBhZGRpbmdMZWZ0LnN0eWxlLndp
ZHRoID0gcm91bmRMaW5lTGVmdChkaW1lbnNpb25zLnNoYXBlWCArIGluc2V0LCBzdWJwaXhlbEVu
YWJsZWQpICsgInB4IjsKICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChwYWRkaW5nTGVmdCk7
CiAKICAgICAgICAgdmFyIHBhZGRpbmdSaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwogICAgICAgICBwYWRkaW5nUmlnaHQuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJmbG9hdCBy
aWdodCIpOwotICAgICAgICBwYWRkaW5nUmlnaHQuc3R5bGUud2lkdGggPSBNYXRoLmZsb29yKChk
aW1lbnNpb25zLndpZHRoIC0gZGltZW5zaW9ucy5zaGFwZVdpZHRoIC0gZGltZW5zaW9ucy5zaGFw
ZVgpICsgaW5zZXQpICsgInB4IjsKKyAgICAgICAgcGFkZGluZ1JpZ2h0LnN0eWxlLndpZHRoID0g
cm91bmRMaW5lUmlnaHQoKGRpbWVuc2lvbnMud2lkdGggLSBkaW1lbnNpb25zLnNoYXBlV2lkdGgg
LSBkaW1lbnNpb25zLnNoYXBlWCkgKyBpbnNldCwgc3VicGl4ZWxFbmFibGVkKSArICJweCI7CiAg
ICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQocGFkZGluZ1JpZ2h0KTsKICAgICB9CiB9CkBAIC03
Niw3ICs5MSw3IEBAIGZ1bmN0aW9uIHNpbXVsYXRlU2hhcGVPdXRsaW5lKGVsZW1lbnRJZCwgc3R5
bGVzaGVldCwgZGltZW5zaW9ucykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgImJv
cmRlci1yYWRpdXM6ICIgKyBkaW1lbnNpb25zLnNoYXBlUmFkaXVzWCArICJweCAvICIgKyBkaW1l
bnNpb25zLnNoYXBlUmFkaXVzWSArICJweDsgfSIpOwogfQogCi1mdW5jdGlvbiBnZW5lcmF0ZVNp
bXVsYXRlZFNoYXBlRWxlbWVudChlbGVtZW50SWQsIHN0eWxlc2hlZXQsIGRpbWVuc2lvbnMsIGxp
bmVIZWlnaHQpIHsKK2Z1bmN0aW9uIGdlbmVyYXRlU2ltdWxhdGVkU2hhcGVFbGVtZW50KGVsZW1l
bnRJZCwgc3R5bGVzaGVldCwgZGltZW5zaW9ucywgbGluZUhlaWdodCwgc3VicGl4ZWxFbmFibGVk
KSB7CiAgICAgc2ltdWxhdGVTaGFwZShlbGVtZW50SWQsIHN0eWxlc2hlZXQsIGRpbWVuc2lvbnMs
IGxpbmVIZWlnaHQpOwogICAgIHNpbXVsYXRlU2hhcGVPdXRsaW5lKGVsZW1lbnRJZCwgc3R5bGVz
aGVldCwgZGltZW5zaW9ucyk7CiAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShnZW5lcmF0ZVN0cmluZyhkaW1lbnNpb25zLCBsaW5lSGVpZ2h0KSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3N1YnBpeGVsLXV0aWxzLmpzIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9zdWJwaXhlbC11dGlscy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42OTY1MGRkY2M1NTgzYjFkMmNkZjU1MTQ2NTY1MTk2ODY4ZmQ0OGNkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9zdWJw
aXhlbC11dGlscy5qcwpAQCAtMCwwICsxLDEyIEBACit2YXIgX3N1YlBpeGVsTGF5b3V0ID0gbnVs
bDsKK2Z1bmN0aW9uIHN1YlBpeGVsTGF5b3V0RW5hYmxlZCgpIHsKKyAgICBpZiAoX3N1YlBpeGVs
TGF5b3V0ID09PSBudWxsKSB7CisgICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgICAgIGVsZW0uc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywgJzQu
NXB4Jyk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbSk7CisgICAgICAg
IHZhciBib3VuZHMgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBfc3Vi
UGl4ZWxMYXlvdXQgPSAgKGJvdW5kcy53aWR0aCAhPSBNYXRoLmZsb29yKGJvdW5kcy53aWR0aCkp
OworICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW0pOworICAgIH0KKyAgICBy
ZXR1cm4gX3N1YlBpeGVsTGF5b3V0OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUt
aW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5n
bGUtMDAyLWV4cGVjdGVkLmh0bWwKaW5kZXggNjhlOTYzMjk3NDRiMzg2NWJmYTRiMzVhYTliN2E4
MzMyYWE0NWZiMS4uZWExNDE1MDZiYzgzOTkxZTcyMmFiMDRkNzQzMzA5YzJjNzQyOGY2NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAyLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0
YW5nbGUtMDAyLWV4cGVjdGVkLmh0bWwKQEAgLTEsMjUgKzEsMjYgQEAKIDwhRE9DVFlQRSBodG1s
PgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3VicGl4ZWwtdXRp
bHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9yb3VuZGVkLXJlY3Rh
bmdsZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGZ1bmN0aW9uIGNyZWF0ZVNpbXVsYXRl
ZFNoYXBlRWxlbWVudCgpIHsKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAg
ICAgIHZhciBzdHlsZXNoZWV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0eWxlc2hlZXQi
KTsKICAgICAgICAgdmFyIGRpbWVuc2lvbnMgPSB7ICB3aWR0aDogMjAwLCBoZWlnaHQ6IDMwMCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZVg6IDI1LCBzaGFwZVk6IDQ1LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlV2lkdGg6IDEwMCwgc2hhcGVIZWlnaHQ6IDIw
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZVJhZGl1c1g6IDAsIHNoYXBlUmFk
aXVzWTogNTUgfTsKLSAgICAgICAgZ2VuZXJhdGVTaW11bGF0ZWRTaGFwZUVsZW1lbnQoInNoYXBl
LWluc2lkZTEiLCBzdHlsZXNoZWV0LnNoZWV0LCBkaW1lbnNpb25zLCA5KTsKKyAgICAgICAgZ2Vu
ZXJhdGVTaW11bGF0ZWRTaGFwZUVsZW1lbnQoInNoYXBlLWluc2lkZTEiLCBzdHlsZXNoZWV0LnNo
ZWV0LCBkaW1lbnNpb25zLCA5LCBzdWJQaXhlbExheW91dEVuYWJsZWQoKSk7CiAgICAgICAgIGRp
bWVuc2lvbnMuc2hhcGVSYWRpdXNYID0gNTU7CiAgICAgICAgIGRpbWVuc2lvbnMuc2hhcGVSYWRp
dXNZID0gMDsKLSAgICAgICAgZ2VuZXJhdGVTaW11bGF0ZWRTaGFwZUVsZW1lbnQoInNoYXBlLWlu
c2lkZTIiLCBzdHlsZXNoZWV0LnNoZWV0LCBkaW1lbnNpb25zLCA5KTsKKyAgICAgICAgZ2VuZXJh
dGVTaW11bGF0ZWRTaGFwZUVsZW1lbnQoInNoYXBlLWluc2lkZTIiLCBzdHlsZXNoZWV0LnNoZWV0
LCBkaW1lbnNpb25zLCA5LCBzdWJQaXhlbExheW91dEVuYWJsZWQoKSk7CiAgICAgfQogPC9zY3Jp
cHQ+CiA8c3R5bGUgaWQ9InN0eWxlc2hlZXQiPgogICAgIGJvZHkgeyBtYXJnaW46IDA7IH0KIDwv
c3R5bGU+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImNyZWF0ZVNpbXVsYXRlZFNoYXBlRWxlbWVu
dCgpIj4KKzxib2R5PgogPGRpdiBpZD0ic2hhcGUtaW5zaWRlMSIgc3R5bGU9ImRpc3BsYXk6aW5s
aW5lLWJsb2NrIj48L2Rpdj4KIDxkaXYgaWQ9InNoYXBlLWluc2lkZTIiIHN0eWxlPSJkaXNwbGF5
OmlubGluZS1ibG9jayI+PC9kaXY+CiA8ZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUt
MDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDIuaHRtbAppbmRleCBmZWQ5NDkyMjI4ZmUyM2Ex
YTNlOWUzYjFkYzEyODRhYjczMTk3NGM4Li45MTYwNWNhZTJlZTBiODJhN2VlNmJmMDc4MTBiNzVk
ODkzMDRhMzFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDIuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVk
LXJlY3RhbmdsZS0wMDIuaHRtbApAQCAtMywxMCArMyw3IEBACiA8aGVhZD4KIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvcm91bmRlZC1yZWN0YW5nbGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4K
LSAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0
aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKLQotICAgIGZ1bmN0aW9uIGNyZWF0
ZVNoYXBlRWxlbWVudCgpIHsKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAg
ICAgIHZhciBzdHlsZXNoZWV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0eWxlc2hlZXQi
KTsKICAgICAgICAgdmFyIGRpbWVuc2lvbnMgPSB7ICB3aWR0aDogMjAwLCBoZWlnaHQ6IDMwMCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZVg6IDI1LCBzaGFwZVk6IDQ1LApAQCAt
MjIsNyArMTksNyBAQAogICAgIGJvZHkgeyBtYXJnaW46IDA7IH0KIDwvc3R5bGU+CiA8L2hlYWQ+
Ci08Ym9keSBvbmxvYWQ9ImNyZWF0ZVNoYXBlRWxlbWVudCgpIj4KKzxib2R5PgogPGRpdiBpZD0i
c2hhcGUtaW5zaWRlMSIgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrIj48L2Rpdj4KIDxkaXYg
aWQ9InNoYXBlLWluc2lkZTIiIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jayI+PC9kaXY+CiA8
ZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAzLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVk
LXJlY3RhbmdsZS0wMDMtZXhwZWN0ZWQuaHRtbAppbmRleCAxNDU4ZWM1NzdkOTlkZWMyMGVhZmQ3
YzYyNDgyMTY2MWRlYTk3YTc4Li42NjQzMTFkZWE0YjRjM2E1OTMyYTZlMGE3ZTRiYjk2YTkyNTZi
ZmZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDMtZXhwZWN0ZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3Vu
ZGVkLXJlY3RhbmdsZS0wMDMtZXhwZWN0ZWQuaHRtbApAQCAtMSwyMiArMSwyMyBAQAogPCFET0NU
WVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdWJw
aXhlbC11dGlscy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JvdW5k
ZWQtcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgZnVuY3Rpb24gY3JlYXRl
U2ltdWxhdGVkU2hhcGVFbGVtZW50KCkgeworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigp
IHsKICAgICAgICAgdmFyIHN0eWxlc2hlZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3R5
bGVzaGVldCIpOwogICAgICAgICB2YXIgZGltZW5zaW9ucyA9IHsgIHdpZHRoOiA0MDAsIGhlaWdo
dDogNjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlWDogNDUsIHNoYXBlWTog
MjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGVXaWR0aDogMzAwLCBzaGFwZUhl
aWdodDogNTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlUmFkaXVzWDogNzUs
IHNoYXBlUmFkaXVzWTogNTUgfTsKLSAgICAgICAgZ2VuZXJhdGVTaW11bGF0ZWRTaGFwZUVsZW1l
bnQoInNoYXBlLWluc2lkZSIsIHN0eWxlc2hlZXQuc2hlZXQsIGRpbWVuc2lvbnMsIDIyKTsKKyAg
ICAgICAgZ2VuZXJhdGVTaW11bGF0ZWRTaGFwZUVsZW1lbnQoInNoYXBlLWluc2lkZSIsIHN0eWxl
c2hlZXQuc2hlZXQsIGRpbWVuc2lvbnMsIDIyLCBzdWJQaXhlbExheW91dEVuYWJsZWQoKSk7CiAg
ICAgfQogPC9zY3JpcHQ+CiA8c3R5bGUgaWQ9InN0eWxlc2hlZXQiPgogICAgIGJvZHkgeyBtYXJn
aW46IDA7IH0KIDwvc3R5bGU+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImNyZWF0ZVNpbXVsYXRl
ZFNoYXBlRWxlbWVudCgpIj4KKzxib2R5PgogPGRpdiBpZD0ic2hhcGUtaW5zaWRlIj48L2Rpdj4K
IDxkaXY+CiAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IGNyZWF0ZXMg
YSByb3VuZGVkIHJlY3RhbmdsZSBzaGFwZS1pbnNpZGUgYW5kIGZpbGxzIGl0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1y
b3VuZGVkLXJlY3RhbmdsZS0wMDMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9z
aGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwMy5odG1sCmluZGV4
IDkzMjgzOGNlOGM3OThiZWRjZTY5MDRhMzkzM2RhZDI5MDU3OTZkNzYuLjk3NjA4NTU5YWU4YTk4
YWY2NmM2MDZjYTY1MTYxZDcyNTczZTEzOTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAw
My5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwMy5odG1sCkBAIC0zLDEwICszLDcgQEAKIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9yb3VuZGVkLXJlY3RhbmdsZS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOwotCi0g
ICAgZnVuY3Rpb24gY3JlYXRlU2hhcGVFbGVtZW50KCkgeworICAgIHdpbmRvdy5vbmxvYWQgPSBm
dW5jdGlvbigpIHsKICAgICAgICAgdmFyIHN0eWxlc2hlZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic3R5bGVzaGVldCIpOwogICAgICAgICB2YXIgZGltZW5zaW9ucyA9IHsgIHdpZHRoOiA0
MDAsIGhlaWdodDogNjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlWDogNDUs
IHNoYXBlWTogMjUsCkBAIC0xOSw3ICsxNiw3IEBACiAgICAgYm9keSB7IG1hcmdpbjogMDsgfQog
PC9zdHlsZT4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0iY3JlYXRlU2hhcGVFbGVtZW50KCkiPgor
PGJvZHk+CiA8ZGl2IGlkPSJzaGFwZS1pbnNpZGUiPjwvZGl2PgogPGRpdj4KICAgICBUaGlzIHRl
c3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgY3JlYXRlcyBhIHJvdW5kZWQgcmVjdGFuZ2xl
IHNoYXBlLWluc2lkZSBhbmQgZmlsbHMgaXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAw
NC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDA0LWV4cGVjdGVkLmh0bWwKaW5kZXgg
MGMzZTkyYjgyYjQ1NGMzMjQ2OTY3NDA0ZDEzZjZmMGY5Y2FlNWU1YS4uZmQ2OWVlNmExMjU2YWYw
MTgzZmRlYWJjNjc3NmZiZTkyMGQ5MzQ0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDA0
LWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDA0LWV4cGVjdGVkLmh0bWwKQEAg
LTEsMjIgKzEsMjMgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvc3VicGl4ZWwtdXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9yb3VuZGVkLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgotICAgIGZ1bmN0aW9uIGNyZWF0ZVNpbXVsYXRlZFNoYXBlRWxlbWVudCgpIHsKKyAgICB3aW5k
b3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBzdHlsZXNoZWV0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInN0eWxlc2hlZXQiKTsKICAgICAgICAgdmFyIGRpbWVuc2lvbnMg
PSB7ICB3aWR0aDogNzAwLCBoZWlnaHQ6IDUwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaGFwZVg6IDI1LCBzaGFwZVk6IDQ1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo
YXBlV2lkdGg6IDYwMCwgc2hhcGVIZWlnaHQ6IDMwMCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaGFwZVJhZGl1c1g6IDEwMCwgc2hhcGVSYWRpdXNZOiAxNTAgfTsKLSAgICAgICAgZ2Vu
ZXJhdGVTaW11bGF0ZWRTaGFwZUVsZW1lbnQoInNoYXBlLWluc2lkZSIsIHN0eWxlc2hlZXQuc2hl
ZXQsIGRpbWVuc2lvbnMsIDkwKTsKKyAgICAgICAgZ2VuZXJhdGVTaW11bGF0ZWRTaGFwZUVsZW1l
bnQoInNoYXBlLWluc2lkZSIsIHN0eWxlc2hlZXQuc2hlZXQsIGRpbWVuc2lvbnMsIDkwLCBzdWJQ
aXhlbExheW91dEVuYWJsZWQoKSk7CiAgICAgfQogPC9zY3JpcHQ+CiA8c3R5bGUgaWQ9InN0eWxl
c2hlZXQiPgogICAgIGJvZHkgeyBtYXJnaW46IDA7IH0KIDwvc3R5bGU+CiA8L2hlYWQ+Ci08Ym9k
eSBvbmxvYWQ9ImNyZWF0ZVNpbXVsYXRlZFNoYXBlRWxlbWVudCgpIj4KKzxib2R5PgogPGRpdiBp
ZD0ic2hhcGUtaW5zaWRlIj48L2Rpdj4KIDxkaXY+CiAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRo
ZSBBaGVtIGZvbnQuIEl0IGNyZWF0ZXMgYSByb3VuZGVkIHJlY3RhbmdsZSBzaGFwZS1pbnNpZGUg
YW5kIGZpbGxzIGl0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQt
cmVjdGFuZ2xlLTAwNC5odG1sCmluZGV4IGRiMTAyMmM2ZDMyZTQxNmJkODFmODNiNjA5ZjdhNDNk
NTUzNzU2ZjYuLjZhMDUwNDlmMDg4MzVhYThhYzhmY2IzMmEzYTJhZDJjZTBlYTA2OWQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwNC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwNC5o
dG1sCkBAIC0zLDEwICszLDcgQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9y
b3VuZGVkLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1
c2lvbnNFbmFibGVkKHRydWUpOwotCi0gICAgZnVuY3Rpb24gY3JlYXRlU2hhcGVFbGVtZW50KCkg
eworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIHN0eWxlc2hl
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3R5bGVzaGVldCIpOwogICAgICAgICB2YXIg
ZGltZW5zaW9ucyA9IHsgIHdpZHRoOiA3MDAsIGhlaWdodDogNTAwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNoYXBlWDogMjUsIHNoYXBlWTogNDUsCkBAIC0xOSw3ICsxNiw3IEBACiAg
ICAgYm9keSB7IG1hcmdpbjogMDsgfQogPC9zdHlsZT4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
Y3JlYXRlU2hhcGVFbGVtZW50KCkiPgorPGJvZHk+CiA8ZGl2IGlkPSJzaGFwZS1pbnNpZGUiPjwv
ZGl2PgogPGRpdj4KICAgICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgY3Jl
YXRlcyBhIHJvdW5kZWQgcmVjdGFuZ2xlIHNoYXBlLWluc2lkZSBhbmQgZmlsbHMgaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171518</attachid>
            <date>2012-10-30 14:13:24 -0700</date>
            <delta_ts>2012-11-01 12:04:32 -0700</delta_ts>
            <desc>Adding polygon tests</desc>
            <filename>bug-100704-20121030141148.patch</filename>
            <type>text/plain</type>
            <size>26587</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyOTMzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTZiYjdhMzk2ODcxMmQ0NTQzNTNj
NmRmY2Y5YzI0NDU3Y2IzNzA1Zi4uM2U2OGUzNmQxZmQ1MjY2ODg0ZjhkYTE5OGUxMTQzNjMyZDk5
MjU2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEwLTMwICBCZWFyIFRyYXZpcyAgPGJl
dHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIENsZWFuIHVwIHJv
dW5kZWQgcmVjdGFuZ2xlIHRlc3RzIHRvIHVzZSBwaXhlbCBzbmFwcGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzA0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmFjdG9yIG91dCB0aGUgcGl4ZWwg
c25hcHBpbmcgYmVoYXZpb3IgZnJvbSBwb2x5Z29uIHRlc3RzIHRvIGJlIHNoYXJlZCB3aXRoCisg
ICAgICAgIHRoZSByb3VuZGVkIHJlY3RhbmdsZSB0ZXN0cy4gSW4gc3ViLXBpeGVsIGxheW91dCwg
dGhlIHJvdW5kaW5nIGJlaGF2aW9yIG1heSBiZQorICAgICAgICBzbGlnaHRseSBkaWZmZXJlbnQu
IFRoaXMgYWRkcyBhIG5ldyBmaWxlLCBzdWJwaXhlbC11dGlscy5qcywgd2hpY2ggdGVzdHMgZm9y
IHRoZSBmZWF0dXJlCisgICAgICAgIGF2YWlsYWJpbGl0eS4gSSd2ZSBhbHNvIHRha2VuIHRoZSBv
cHBvcnR1bml0eSB0byBmYWN0b3IgdGhlIHdpbmRvdy5pbnRlcm5hbC5zZXR0aW5ncworICAgICAg
ICBjb2RlIGludG8gcm91bmRlZC1yZWN0YW5nbGUuanMgYW5kIHNpbXBsZS1wb2x5Z29uLmpzLgor
CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9yb3VuZGVkLXJlY3RhbmdsZS5q
czoKKyAgICAgICAgKHJvdW5kTGluZUxlZnQpOiBQaXhlbCBzbmFwIHRoZSBsZWZ0IGxpbmUgZWRn
ZS4KKyAgICAgICAgKHJvdW5kTGluZVJpZ2h0KTogUGl4ZWwgc25hcCB0aGUgcmlnaHQgbGluZSBl
ZGdlLgorICAgICAgICAoc2ltdWxhdGVTaGFwZSk6IEFjY2VwdCBhIG5ldyBhcmd1bWVudCBmb3Ig
d2hldGhlciBzdWJwaXhlbCBsYXlvdXQgaXMgZW5hYmxlZC4KKyAgICAgICAgKGdlbmVyYXRlU2lt
dWxhdGVkU2hhcGVFbGVtZW50KTogRGl0dG8uCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3Jl
c291cmNlcy9zaW1wbGUtcG9seWdvbi5qczoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvcmVz
b3VyY2VzL3N1YnBpeGVsLXV0aWxzLmpzOiBBZGRlZC4KKyAgICAgICAgKHN1YlBpeGVsTGF5b3V0
RW5hYmxlZCk6IERldGVybWluZSBpZiBzdWJwaXhlbCBsYXlvdXQgaXMgZW5hYmxlZC4KKyAgICAg
ICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJl
Y3RhbmdsZS0wMDItZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDIuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJl
Y3RhbmdsZS0wMDMtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDMuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJl
Y3RhbmdsZS0wMDQtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDQuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9s
eWdvbi0wMDEtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDEuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0w
MDItZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDIuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDMtZXhw
ZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQtZXhwZWN0ZWQu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1zaW1wbGUtcG9seWdvbi0wMDQuaHRtbDoKKwogMjAxMi0xMC0zMCAgUm9nZXIgRm9uZyAgPHJv
Z2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFNvbWUgZmxha3kgaHR0
cC9zZWN1cml0eSB0ZXN0cyB0byBhZGQgdG8gdGhlIHNraXAgbGlzdC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvcm91bmRlZC1yZWN0YW5nbGUuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3JvdW5kZWQtcmVjdGFuZ2xl
LmpzCmluZGV4IGMwOWI2NDQ3NDYyY2QzMWY4OTVkNjk3N2UwNzE5MzQzY2U5ZDRjNWEuLjVhOTdi
NmNhYmNiMzI0ZmQzZGI4ODdmZGEwNzc5ZWVmY2ExYjk0YzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvcm91bmRlZC1yZWN0YW5nbGUuanMKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9yb3VuZGVkLXJlY3RhbmdsZS5q
cwpAQCAtMSwzICsxLDE4IEBACitpZiAod2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOworCitmdW5jdGlv
biByb3VuZExpbmVMZWZ0KGYsIHN1YnBpeGVsRW5hYmxlZCkgeworICAgIGlmICghc3VicGl4ZWxF
bmFibGVkKQorICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKKyAgICByZXR1cm4gTWF0aC5m
bG9vcigoTWF0aC5mbG9vcihmICogNjQpICsgMzIpIC8gNjQpOyAvLyBzZWUgRnJhY3Rpb25MYXlv
dXRVbml0Ojpyb3VuZCgpCit9CisKK2Z1bmN0aW9uIHJvdW5kTGluZVJpZ2h0KGYsIHN1YnBpeGVs
RW5hYmxlZCkgeworICAgIGlmICghc3VicGl4ZWxFbmFibGVkKQorICAgICAgICByZXR1cm4gTWF0
aC5mbG9vcihmKTsKKyAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmZsb29yKGYgKiA2NCkgLyA2
NCk7IC8vIHNlZSBGcmFjdGlvbkxheW91dFVuaXQ6OmZsb29yKCkKK30KKwogZnVuY3Rpb24geEZy
b21FbGxpcHNlQ2VudGVyKHlGcm9tRWxsaXBzZUNlbnRlciwgcmFkaXVzWCwgcmFkaXVzWSkgewog
ICAgIHJldHVybiByYWRpdXNYICogTWF0aC5zcXJ0KDEgLSBNYXRoLnBvdyh5RnJvbUVsbGlwc2VD
ZW50ZXIgLyByYWRpdXNZLCAyKSk7CiB9CkBAIC0yOCw3ICs0Myw3IEBAIGZ1bmN0aW9uIGdlbmVy
YXRlU3RyaW5nKGRpbWVuc2lvbnMsIGxpbmVIZWlnaHQpIHsKICAgICByZXR1cm4gKG5ldyBBcnJh
eShNYXRoLmNlaWwocmVzdWx0TGVuZ3RoIC8gMikpLmpvaW4oInggIikpOwogfQogCi1mdW5jdGlv
biBzaW11bGF0ZVNoYXBlKGVsZW1lbnRJZCwgc3R5bGVzaGVldCwgZGltZW5zaW9ucywgbGluZUhl
aWdodCkgeworZnVuY3Rpb24gc2ltdWxhdGVTaGFwZShlbGVtZW50SWQsIHN0eWxlc2hlZXQsIGRp
bWVuc2lvbnMsIGxpbmVIZWlnaHQsIHN1YnBpeGVsRW5hYmxlZCkgewogICAgIHZhciBzaW1wbGVS
ZWN0YW5nbGUgPSBkaW1lbnNpb25zLnNoYXBlUmFkaXVzWCA9PSAwIHx8IGRpbWVuc2lvbnMuc2hh
cGVSYWRpdXNZID09IDA7CiAgICAgdmFyIGZsb2F0SGVpZ2h0ID0gc2ltcGxlUmVjdGFuZ2xlID8g
ZGltZW5zaW9ucy5zaGFwZUhlaWdodCA6IGxpbmVIZWlnaHQ7CiAKQEAgLTUyLDEyICs2NywxMiBA
QCBmdW5jdGlvbiBzaW11bGF0ZVNoYXBlKGVsZW1lbnRJZCwgc3R5bGVzaGVldCwgZGltZW5zaW9u
cywgbGluZUhlaWdodCkgewogCiAgICAgICAgIHZhciBwYWRkaW5nTGVmdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBwYWRkaW5nTGVmdC5zZXRBdHRyaWJ1dGUoImNs
YXNzIiwgImZsb2F0IGxlZnQiKTsKLSAgICAgICAgcGFkZGluZ0xlZnQuc3R5bGUud2lkdGggPSBk
aW1lbnNpb25zLnNoYXBlWCArIGluc2V0ICsgInB4IjsKKyAgICAgICAgcGFkZGluZ0xlZnQuc3R5
bGUud2lkdGggPSByb3VuZExpbmVMZWZ0KGRpbWVuc2lvbnMuc2hhcGVYICsgaW5zZXQsIHN1YnBp
eGVsRW5hYmxlZCkgKyAicHgiOwogICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHBhZGRpbmdM
ZWZ0KTsKIAogICAgICAgICB2YXIgcGFkZGluZ1JpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgICAgIHBhZGRpbmdSaWdodC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgImZs
b2F0IHJpZ2h0Iik7Ci0gICAgICAgIHBhZGRpbmdSaWdodC5zdHlsZS53aWR0aCA9IE1hdGguZmxv
b3IoKGRpbWVuc2lvbnMud2lkdGggLSBkaW1lbnNpb25zLnNoYXBlV2lkdGggLSBkaW1lbnNpb25z
LnNoYXBlWCkgKyBpbnNldCkgKyAicHgiOworICAgICAgICBwYWRkaW5nUmlnaHQuc3R5bGUud2lk
dGggPSByb3VuZExpbmVSaWdodCgoZGltZW5zaW9ucy53aWR0aCAtIGRpbWVuc2lvbnMuc2hhcGVX
aWR0aCAtIGRpbWVuc2lvbnMuc2hhcGVYKSArIGluc2V0LCBzdWJwaXhlbEVuYWJsZWQpICsgInB4
IjsKICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChwYWRkaW5nUmlnaHQpOwogICAgIH0KIH0K
QEAgLTc2LDcgKzkxLDcgQEAgZnVuY3Rpb24gc2ltdWxhdGVTaGFwZU91dGxpbmUoZWxlbWVudElk
LCBzdHlsZXNoZWV0LCBkaW1lbnNpb25zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KyAiYm9yZGVyLXJhZGl1czogIiArIGRpbWVuc2lvbnMuc2hhcGVSYWRpdXNYICsgInB4IC8gIiAr
IGRpbWVuc2lvbnMuc2hhcGVSYWRpdXNZICsgInB4OyB9Iik7CiB9CiAKLWZ1bmN0aW9uIGdlbmVy
YXRlU2ltdWxhdGVkU2hhcGVFbGVtZW50KGVsZW1lbnRJZCwgc3R5bGVzaGVldCwgZGltZW5zaW9u
cywgbGluZUhlaWdodCkgeworZnVuY3Rpb24gZ2VuZXJhdGVTaW11bGF0ZWRTaGFwZUVsZW1lbnQo
ZWxlbWVudElkLCBzdHlsZXNoZWV0LCBkaW1lbnNpb25zLCBsaW5lSGVpZ2h0LCBzdWJwaXhlbEVu
YWJsZWQpIHsKICAgICBzaW11bGF0ZVNoYXBlKGVsZW1lbnRJZCwgc3R5bGVzaGVldCwgZGltZW5z
aW9ucywgbGluZUhlaWdodCk7CiAgICAgc2ltdWxhdGVTaGFwZU91dGxpbmUoZWxlbWVudElkLCBz
dHlsZXNoZWV0LCBkaW1lbnNpb25zKTsKICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGdlbmVyYXRlU3RyaW5nKGRpbWVuc2lvbnMsIGxpbmVIZWlnaHQpKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24u
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3NpbXBsZS1wb2x5Z29u
LmpzCmluZGV4IDgwNmNhY2E0YTFjYjhlZjk5ZGNkN2FiYjE3ZDIwMWI1ZGMwZjUzOTMuLmQ0YzIw
ZTU2ZjA2NDViZWYxYjM3MTUxNTJkYjZiYjU4ZThiNGJjMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24uanMKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9zaW1wbGUtcG9seWdvbi5qcwpAQCAt
MSw1ICsxLDcgQEAKIC8vIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBpbnRlbmRlZCB0
byBiZSB1c2VkIHRvIHRlc3Qgbm9uLWNvbXBsZXggcG9seWdvbnMKIC8vIHdoZXJlIGhvcml6b250
YWwgbGluZXMgdGhhdCBvdmVybGFwIHRoZSBwb2x5Z29uIG9ubHkgY3Jvc3MgdGhlIHBvbHlnb24g
dHdpY2UuCitpZiAod2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOwogCiBmdW5jdGlvbiBjcmVhdGVQb2x5
Z29uKHZlcnRpY2VzKSB7CiAgICAgdmFyIHhDb29yZGluYXRlcyA9IHZlcnRpY2VzLm1hcCggZnVu
Y3Rpb24ocCkgeyByZXR1cm4gcC54OyB9ICk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3N1YnBpeGVsLXV0aWxzLmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3Jlc291cmNlcy9zdWJwaXhlbC11dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTY1
MGRkY2M1NTgzYjFkMmNkZjU1MTQ2NTY1MTk2ODY4ZmQ0OGNkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9zdWJwaXhlbC11dGlscy5qcwpA
QCAtMCwwICsxLDEyIEBACit2YXIgX3N1YlBpeGVsTGF5b3V0ID0gbnVsbDsKK2Z1bmN0aW9uIHN1
YlBpeGVsTGF5b3V0RW5hYmxlZCgpIHsKKyAgICBpZiAoX3N1YlBpeGVsTGF5b3V0ID09PSBudWxs
KSB7CisgICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgICAgIGVsZW0uc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywgJzQuNXB4Jyk7CisgICAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbSk7CisgICAgICAgIHZhciBib3VuZHMgPSBl
bGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBfc3ViUGl4ZWxMYXlvdXQgPSAg
KGJvdW5kcy53aWR0aCAhPSBNYXRoLmZsb29yKGJvdW5kcy53aWR0aCkpOworICAgICAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW0pOworICAgIH0KKyAgICByZXR1cm4gX3N1YlBpeGVs
TGF5b3V0OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQt
cmVjdGFuZ2xlLTAwMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAyLWV4cGVjdGVk
Lmh0bWwKaW5kZXggNjhlOTYzMjk3NDRiMzg2NWJmYTRiMzVhYTliN2E4MzMyYWE0NWZiMS4uMjll
ZjEwNjc0MTEwNDExN2NmNWY4OTNjMzEzOGNkN2JhNmFhYWE4YSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1y
ZWN0YW5nbGUtMDAyLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAyLWV4cGVj
dGVkLmh0bWwKQEAgLTEsNiArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N1YnBpeGVsLXV0aWxzLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcm91bmRlZC1yZWN0YW5nbGUuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBjcmVhdGVTaW11bGF0ZWRTaGFwZUVsZW1lbnQoKSB7
CkBAIC05LDEwICsxMCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlWDog
MjUsIHNoYXBlWTogNDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGVXaWR0aDog
MTAwLCBzaGFwZUhlaWdodDogMjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBl
UmFkaXVzWDogMCwgc2hhcGVSYWRpdXNZOiA1NSB9OwotICAgICAgICBnZW5lcmF0ZVNpbXVsYXRl
ZFNoYXBlRWxlbWVudCgic2hhcGUtaW5zaWRlMSIsIHN0eWxlc2hlZXQuc2hlZXQsIGRpbWVuc2lv
bnMsIDkpOworICAgICAgICBnZW5lcmF0ZVNpbXVsYXRlZFNoYXBlRWxlbWVudCgic2hhcGUtaW5z
aWRlMSIsIHN0eWxlc2hlZXQuc2hlZXQsIGRpbWVuc2lvbnMsIDksIHN1YlBpeGVsTGF5b3V0RW5h
YmxlZCgpKTsKICAgICAgICAgZGltZW5zaW9ucy5zaGFwZVJhZGl1c1ggPSA1NTsKICAgICAgICAg
ZGltZW5zaW9ucy5zaGFwZVJhZGl1c1kgPSAwOwotICAgICAgICBnZW5lcmF0ZVNpbXVsYXRlZFNo
YXBlRWxlbWVudCgic2hhcGUtaW5zaWRlMiIsIHN0eWxlc2hlZXQuc2hlZXQsIGRpbWVuc2lvbnMs
IDkpOworICAgICAgICBnZW5lcmF0ZVNpbXVsYXRlZFNoYXBlRWxlbWVudCgic2hhcGUtaW5zaWRl
MiIsIHN0eWxlc2hlZXQuc2hlZXQsIGRpbWVuc2lvbnMsIDksIHN1YlBpeGVsTGF5b3V0RW5hYmxl
ZCgpKTsKICAgICB9CiA8L3NjcmlwdD4KIDxzdHlsZSBpZD0ic3R5bGVzaGVldCI+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwMi5odG1sCmlu
ZGV4IGZlZDk0OTIyMjhmZTIzYTFhM2U5ZTNiMWRjMTI4NGFiNzMxOTc0YzguLjVmOTAxYmJlMTk1
MmZjZjYyYTE3ZmZkZTRmOTAyNzk4ZGIxMTRiYmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xl
LTAwMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwMi5odG1sCkBAIC0zLDkgKzMsNiBAQAog
PGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JvdW5kZWQtcmVjdGFuZ2xlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7Ci0K
ICAgICBmdW5jdGlvbiBjcmVhdGVTaGFwZUVsZW1lbnQoKSB7CiAgICAgICAgIHZhciBzdHlsZXNo
ZWV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0eWxlc2hlZXQiKTsKICAgICAgICAgdmFy
IGRpbWVuc2lvbnMgPSB7ICB3aWR0aDogMjAwLCBoZWlnaHQ6IDMwMCwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5k
ZWQtcmVjdGFuZ2xlLTAwMy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAzLWV4cGVj
dGVkLmh0bWwKaW5kZXggMTQ1OGVjNTc3ZDk5ZGVjMjBlYWZkN2M2MjQ4MjE2NjFkZWE5N2E3OC4u
Y2UzODk0OGNlMDExMTZiNjdiM2E4OTIwZmY1NGQxNTQ0YzljMDQ5NCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRl
ZC1yZWN0YW5nbGUtMDAzLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAzLWV4
cGVjdGVkLmh0bWwKQEAgLTEsNiArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N1YnBpeGVsLXV0aWxzLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcm91bmRlZC1yZWN0YW5nbGUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBjcmVhdGVTaW11bGF0ZWRTaGFwZUVsZW1lbnQo
KSB7CkBAIC05LDcgKzEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZVg6
IDQ1LCBzaGFwZVk6IDI1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlV2lkdGg6
IDMwMCwgc2hhcGVIZWlnaHQ6IDUwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFw
ZVJhZGl1c1g6IDc1LCBzaGFwZVJhZGl1c1k6IDU1IH07Ci0gICAgICAgIGdlbmVyYXRlU2ltdWxh
dGVkU2hhcGVFbGVtZW50KCJzaGFwZS1pbnNpZGUiLCBzdHlsZXNoZWV0LnNoZWV0LCBkaW1lbnNp
b25zLCAyMik7CisgICAgICAgIGdlbmVyYXRlU2ltdWxhdGVkU2hhcGVFbGVtZW50KCJzaGFwZS1p
bnNpZGUiLCBzdHlsZXNoZWV0LnNoZWV0LCBkaW1lbnNpb25zLCAyMiwgc3ViUGl4ZWxMYXlvdXRF
bmFibGVkKCkpOwogICAgIH0KIDwvc2NyaXB0PgogPHN0eWxlIGlkPSJzdHlsZXNoZWV0Ij4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUt
aW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAzLmh0
bWwKaW5kZXggOTMyODM4Y2U4Yzc5OGJlZGNlNjkwNGEzOTMzZGFkMjkwNTc5NmQ3Ni4uOWZlYWE3
OTdjNTJjODk4ZjFiZjBkMWZhODdlNDEwYTNkNGQ1NTc4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0
YW5nbGUtMDAzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAzLmh0bWwKQEAgLTMsOSArMyw2
IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcm91bmRlZC1yZWN0YW5nbGUu
anMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAg
ICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVl
KTsKLQogICAgIGZ1bmN0aW9uIGNyZWF0ZVNoYXBlRWxlbWVudCgpIHsKICAgICAgICAgdmFyIHN0
eWxlc2hlZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3R5bGVzaGVldCIpOwogICAgICAg
ICB2YXIgZGltZW5zaW9ucyA9IHsgIHdpZHRoOiA0MDAsIGhlaWdodDogNjAwLApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
cm91bmRlZC1yZWN0YW5nbGUtMDA0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDQt
ZXhwZWN0ZWQuaHRtbAppbmRleCAwYzNlOTJiODJiNDU0YzMyNDY5Njc0MDRkMTNmNmYwZjljYWU1
ZTVhLi4wM2UwYjk3YzE4MTQ5ZmYzNDkzYzAwYzg5ZmNlNjdjNGQxZTU5OTlhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1y
b3VuZGVkLXJlY3RhbmdsZS0wMDQtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0w
MDQtZXhwZWN0ZWQuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+
CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3VicGl4ZWwtdXRpbHMuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9yb3VuZGVkLXJlY3RhbmdsZS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIGNyZWF0ZVNpbXVsYXRlZFNoYXBlRWxl
bWVudCgpIHsKQEAgLTksNyArMTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo
YXBlWDogMjUsIHNoYXBlWTogNDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGVX
aWR0aDogNjAwLCBzaGFwZUhlaWdodDogMzAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNoYXBlUmFkaXVzWDogMTAwLCBzaGFwZVJhZGl1c1k6IDE1MCB9OwotICAgICAgICBnZW5lcmF0
ZVNpbXVsYXRlZFNoYXBlRWxlbWVudCgic2hhcGUtaW5zaWRlIiwgc3R5bGVzaGVldC5zaGVldCwg
ZGltZW5zaW9ucywgOTApOworICAgICAgICBnZW5lcmF0ZVNpbXVsYXRlZFNoYXBlRWxlbWVudCgi
c2hhcGUtaW5zaWRlIiwgc3R5bGVzaGVldC5zaGVldCwgZGltZW5zaW9ucywgOTAsIHN1YlBpeGVs
TGF5b3V0RW5hYmxlZCgpKTsKICAgICB9CiA8L3NjcmlwdD4KIDxzdHlsZSBpZD0ic3R5bGVzaGVl
dCI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xl
LTAwNC5odG1sCmluZGV4IGRiMTAyMmM2ZDMyZTQxNmJkODFmODNiNjA5ZjdhNDNkNTUzNzU2ZjYu
LmNkZjA4NzdhYzM2MzAyMzgyZTk2M2RmMWRlNzNiZmMwOGZmOGYzNjUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5k
ZWQtcmVjdGFuZ2xlLTAwNC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9z
aGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwNC5odG1sCkBAIC0z
LDkgKzMsNiBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JvdW5kZWQtcmVj
dGFuZ2xlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
Ci0gICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJs
ZWQodHJ1ZSk7Ci0KICAgICBmdW5jdGlvbiBjcmVhdGVTaGFwZUVsZW1lbnQoKSB7CiAgICAgICAg
IHZhciBzdHlsZXNoZWV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0eWxlc2hlZXQiKTsK
ICAgICAgICAgdmFyIGRpbWVuc2lvbnMgPSB7ICB3aWR0aDogNzAwLCBoZWlnaHQ6IDUwMCwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUt
aW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwMS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAx
LWV4cGVjdGVkLmh0bWwKaW5kZXggZjRmOWI0Mjg0NDdlM2E2MjE5YjZhMmExYjM2ZTc3YmUxYTg4
MDczNS4uN2QzNmIxYjdjMzJjZmU1NzExOTNhNzIxYzcxYWZkOGQ2MTVmMzFlNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
c2ltcGxlLXBvbHlnb24tMDAxLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAxLWV4
cGVjdGVkLmh0bWwKQEAgLTEsMTkgKzEsMTYgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3VicGl4ZWwtdXRpbHMuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaW1wbGUtcG9seWdvbi5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOwotCiAgICAg
Ly8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBwb2x5Z29uIHdpdGggaG9yaXpvbnRhbCB0b3Ag
YW5kIGJvdHRvbSBlZGdlcy4gIFJvdWdobHkgYW4gaG91cmdsYXNzIHNoYXBlLgogICAgIHZhciB2
ZXJ0aWNlcyA9IFt7eDo0MCwgeTo0MH0sIHt4OjQ0MCwgeTo0MH0sIHt4OjMyMCwgeToxNjB9LCB7
eDo0ODAsIHk6MzIwfSwge3g6ODAsIHk6MzIwfSwge3g6MjAwLCB5OjIwMH1dOwogICAgIHZhciBs
aW5lSGVpZ2h0ID0gNDA7CiAgICAgdmFyIGhhc1N1YnBpeGVsU3VwcG9ydDsKIAogICAgIGZ1bmN0
aW9uIGluaXQoKSB7Ci0gICAgICAgIHZhciByZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InN1YnBpeGVsLXRlc3QiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgaGFzU3Vi
cGl4ZWxTdXBwb3J0ID0gcmVjdC53aWR0aCAhPSBNYXRoLmZsb29yKHJlY3Qud2lkdGgpOworICAg
ICAgICBoYXNTdWJwaXhlbFN1cHBvcnQgPSBzdWJQaXhlbExheW91dEVuYWJsZWQoKTsKICAgICAg
ICAgY3JlYXRlUG9seWdvblNoYXBlSW5zaWRlVGVzdENhc2VFeHBlY3RlZCgpOwogICAgIH0KIDwv
c2NyaXB0PgpAQCAtMzQsNyArMzEsNiBAQAogICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBB
aGVtIGZvbnQuIEl0IGNyZWF0ZXMgYSBwb2x5Z29uYWwgc2hhcGUtaW5zaWRlIGFuZCBhIG1hdGNo
aW5nCiAgICAgICBmaWxsZWQgU1ZHIHBvbHlnb24uIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGZp
bGwgdGhlIHNoYXBlIHdpdGggYWx0ZXJuYXRpbmcgYmxhY2sgYW5kCiAgICAgICBlbXB0eSByZWN0
YW5nbGVzIG9uIGVhY2ggbGluZS48L3A+Ci0gIDxkaXYgaWQ9InN1YnBpeGVsLXRlc3QiIHN0eWxl
PSJ3aWR0aDogNC41cHg7IGhlaWdodDogNXB4OyI+PC9kaXY+CiA8L2JvZHk+CiAKIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAxLmh0bWwK
aW5kZXggNjMyYzRjZWUyNDQyZjY1OGRmZThiM2VhM2NhMDI2MjFiMTAwNzBlNC4uNWQxNGViNzll
N2JkODkxNzY5OWNjMDMzODljOTU2OTNmN2VjYmZkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24t
MDAxLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAxLmh0bWwKQEAgLTEsMTkgKzEsMTYgQEAKIDwh
RE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c3VicGl4ZWwtdXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
aW1wbGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lv
bnNFbmFibGVkKHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBwb2x5
Z29uIHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIFJvdWdobHkgYW4gaG91
cmdsYXNzIHNoYXBlLgogICAgIHZhciB2ZXJ0aWNlcyA9IFt7eDo0MCwgeTo0MH0sIHt4OjQ0MCwg
eTo0MH0sIHt4OjMyMCwgeToxNjB9LCB7eDo0ODAsIHk6MzIwfSwge3g6ODAsIHk6MzIwfSwge3g6
MjAwLCB5OjIwMH1dOwogICAgIHZhciBsaW5lSGVpZ2h0ID0gNDA7CiAgICAgdmFyIGhhc1N1YnBp
eGVsU3VwcG9ydDsKIAogICAgIGZ1bmN0aW9uIGluaXQoKSB7Ci0gICAgICAgIHZhciByZWN0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1YnBpeGVsLXRlc3QiKS5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKTsKLSAgICAgICAgaGFzU3VicGl4ZWxTdXBwb3J0ID0gcmVjdC53aWR0aCAhPSBNYXRo
LmZsb29yKHJlY3Qud2lkdGgpOworICAgICAgICBoYXNTdWJwaXhlbFN1cHBvcnQgPSBzdWJQaXhl
bExheW91dEVuYWJsZWQoKTsKICAgICAgICAgY3JlYXRlUG9seWdvblNoYXBlSW5zaWRlVGVzdENh
c2UoKTsKICAgICB9CiA8L3NjcmlwdD4KQEAgLTM0LDcgKzMxLDYgQEAKICAgICAgIFRoaXMgdGVz
dCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCBjcmVhdGVzIGEgcG9seWdvbmFsIHNoYXBlLWlu
c2lkZSBhbmQgYSBtYXRjaGluZwogICAgICAgZmlsbGVkIFNWRyBwb2x5Z29uLiBUaGUgY29udGVu
dCBzaG91bGQganVzdCBmaWxsIHRoZSBzaGFwZSB3aXRoIGFsdGVybmF0aW5nIGJsYWNrIGFuZAog
ICAgICAgZW1wdHkgcmVjdGFuZ2xlcyBvbiBlYWNoIGxpbmUuPC9wPgotICA8ZGl2IGlkPSJzdWJw
aXhlbC10ZXN0IiBzdHlsZT0id2lkdGg6IDQuNXB4OyBoZWlnaHQ6IDVweDsiPjwvZGl2PgogPC9i
b2R5PgogCiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDItZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LXNpbXBsZS1wb2x5Z29uLTAwMi1leHBlY3RlZC5odG1sCmluZGV4IDMzNzA1MmU4NzYwYzc2NTc4
OTY4NDYyYzAwN2UzNGE0OWQ3YTlmNzQuLjdjZmU5Y2QxYzc2NTM4NDZlOGU0NTc1NTVhNTFhMDY1
NzJhNjdiZGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwMi1leHBlY3RlZC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNp
bXBsZS1wb2x5Z29uLTAwMi1leHBlY3RlZC5odG1sCkBAIC0xLDExICsxLDkgQEAKIDwhRE9DVFlQ
RSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3VicGl4
ZWwtdXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaW1wbGUt
cG9seWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFi
bGVkKHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBwb2x5Z29uIHdp
dGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIFNpbWlsYXIgdG8gdGVzdCAwMDEK
ICAgICAvLyBidXQgd2l0aCBhIHJpZ2h0IHJpZ2h0IGVkZ2UuCiAgICAgdmFyIHZlcnRpY2VzID0g
W3t4OjQwLCB5OjQwfSwge3g6NDQwLCB5OjQwfSwge3g6NDgwLCB5OjMyMH0sIHt4OjgwLCB5OjMy
MH0sIHt4OjIwMCwgeToyMDB9XTsKQEAgLTEzLDggKzExLDcgQEAKICAgICB2YXIgaGFzU3VicGl4
ZWxTdXBwb3J0OwogCiAgICAgZnVuY3Rpb24gaW5pdCgpIHsKLSAgICAgICAgdmFyIHJlY3QgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VicGl4ZWwtdGVzdCIpLmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpOwotICAgICAgICBoYXNTdWJwaXhlbFN1cHBvcnQgPSByZWN0LndpZHRoICE9IE1hdGgu
Zmxvb3IocmVjdC53aWR0aCk7CisgICAgICAgIGhhc1N1YnBpeGVsU3VwcG9ydCA9IHN1YlBpeGVs
TGF5b3V0RW5hYmxlZCgpOwogICAgICAgICBjcmVhdGVQb2x5Z29uU2hhcGVJbnNpZGVUZXN0Q2Fz
ZUV4cGVjdGVkKCk7CiAgICAgfQogPC9zY3JpcHQ+CkBAIC0zNSw3ICszMiw2IEBACiAgICAgICBU
aGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgY3JlYXRlcyBhIHBvbHlnb25hbCBz
aGFwZS1pbnNpZGUgYW5kIGEgbWF0Y2hpbmcKICAgICAgIGZpbGxlZCBTVkcgcG9seWdvbi4gVGhl
IGNvbnRlbnQgc2hvdWxkIGp1c3QgZmlsbCB0aGUgc2hhcGUgd2l0aCBhbHRlcm5hdGluZyBibGFj
ayBhbmQKICAgICAgIGVtcHR5IHJlY3RhbmdsZXMgb24gZWFjaCBsaW5lLjwvcD4KLSAgPGRpdiBp
ZD0ic3VicGl4ZWwtdGVzdCIgc3R5bGU9IndpZHRoOiA0LjVweDsgaGVpZ2h0OiA1cHg7Ij48L2Rp
dj4KIDwvYm9keT4KIAogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1z
aW1wbGUtcG9seWdvbi0wMDIuaHRtbAppbmRleCBkM2RmNzBkNGE5OGM0YjM3NzVkN2I5YWQ0MWEz
MjFjYTM0ODAzMWU5Li4wYzFiMTNlOTc1N2I2YjlmYjlkZWMxZjY0NGNmZDI2MWVjMjUwY2RjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDIuaHRt
bApAQCAtMSwxMSArMSw5IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N1YnBpeGVsLXV0aWxzLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24uanMiPjwvc2NyaXB0PgogPHNjcmlw
dD4KLSAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKLQogICAgIC8vIENvbmNhdmUg
YXNzeW1ldHJpYyBzaW1wbGUgcG9seWdvbiB3aXRoIGhvcml6b250YWwgdG9wIGFuZCBib3R0b20g
ZWRnZXMuICBTaW1pbGFyIHRvIHRlc3QgMDAxIAogICAgIC8vIGJ1dCB3aXRoIGEgc2luZ2xlIHJp
Z2h0IGVkZ2UuCiAgICAgdmFyIHZlcnRpY2VzID0gW3t4OjQwLCB5OjQwfSwge3g6NDQwLCB5OjQw
fSwge3g6NDgwLCB5OjMyMH0sIHt4OjgwLCB5OjMyMH0sIHt4OjIwMCwgeToyMDB9XTsKQEAgLTEz
LDggKzExLDcgQEAKICAgICB2YXIgaGFzU3VicGl4ZWxTdXBwb3J0OwogCiAgICAgZnVuY3Rpb24g
aW5pdCgpIHsKLSAgICAgICAgdmFyIHJlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Vi
cGl4ZWwtdGVzdCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICBoYXNTdWJwaXhl
bFN1cHBvcnQgPSByZWN0LndpZHRoICE9IE1hdGguZmxvb3IocmVjdC53aWR0aCk7CisgICAgICAg
IGhhc1N1YnBpeGVsU3VwcG9ydCA9IHN1YlBpeGVsTGF5b3V0RW5hYmxlZCgpOwogICAgICAgICBj
cmVhdGVQb2x5Z29uU2hhcGVJbnNpZGVUZXN0Q2FzZSgpOwogICAgIH0KIDwvc2NyaXB0PgpAQCAt
MzUsNyArMzIsNiBAQAogICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0
IGNyZWF0ZXMgYSBwb2x5Z29uYWwgc2hhcGUtaW5zaWRlIGFuZCBhIG1hdGNoaW5nCiAgICAgICBm
aWxsZWQgU1ZHIHBvbHlnb24uIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGZpbGwgdGhlIHNoYXBl
IHdpdGggYWx0ZXJuYXRpbmcgYmxhY2sgYW5kCiAgICAgICBlbXB0eSByZWN0YW5nbGVzIG9uIGVh
Y2ggbGluZS48L3A+Ci0gIDxkaXYgaWQ9InN1YnBpeGVsLXRlc3QiIHN0eWxlPSJ3aWR0aDogNC41
cHg7IGhlaWdodDogNXB4OyI+PC9kaXY+CiA8L2JvZHk+CiAKIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNp
bXBsZS1wb2x5Z29uLTAwMy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAzLWV4cGVjdGVk
Lmh0bWwKaW5kZXggY2E1MzE1NzExOGVlNWJjNDBlYmQ3MzA2MGUyNzE0NjU2YjA1NWI5Ny4uMGZi
NTRiZDEyOTg2Y2MyNDY0Y2UxMjk1YzgwZDA4ZGFiZTBhMmI4MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBv
bHlnb24tMDAzLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAzLWV4cGVjdGVkLmh0
bWwKQEAgLTEsMTEgKzEsOSBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdWJwaXhlbC11dGlscy5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NpbXBsZS1wb2x5Z29uLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7Ci0KICAgICAvLyBDb25jYXZl
IGFzc3ltZXRyaWMgc2ltcGxlIHBvbHlnb24gd2l0aCBob3Jpem9udGFsIHRvcCBhbmQgYm90dG9t
IGVkZ2VzLiAgU2ltaWxhciB0byB0ZXN0IDAwMQogICAgIC8vIHdpdGggYSB2ZXJ0aWNhbCBsZWZ0
IGVkZ2UuCiAgICAgdmFyIHZlcnRpY2VzID0gW3t4OjQwLCB5OjQwfSwge3g6NDQwLCB5OjQwfSwg
e3g6MzIwLCB5OjE2MH0sIHt4OjQ4MCwgeTozMjB9LCB7eDo0MCwgeTozMjB9XTsKQEAgLTEzLDgg
KzExLDcgQEAKICAgICB2YXIgaGFzU3VicGl4ZWxTdXBwb3J0OwogCiAgICAgZnVuY3Rpb24gaW5p
dCgpIHsKLSAgICAgICAgdmFyIHJlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VicGl4
ZWwtdGVzdCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICBoYXNTdWJwaXhlbFN1
cHBvcnQgPSByZWN0LndpZHRoICE9IE1hdGguZmxvb3IocmVjdC53aWR0aCk7CisgICAgICAgIGhh
c1N1YnBpeGVsU3VwcG9ydCA9IHN1YlBpeGVsTGF5b3V0RW5hYmxlZCgpOwogICAgICAgICBjcmVh
dGVQb2x5Z29uU2hhcGVJbnNpZGVUZXN0Q2FzZUV4cGVjdGVkKCk7CiAgICAgfQogPC9zY3JpcHQ+
CkBAIC0zNSw3ICszMiw2IEBACiAgICAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBm
b250LiBJdCBjcmVhdGVzIGEgcG9seWdvbmFsIHNoYXBlLWluc2lkZSBhbmQgYSBtYXRjaGluZwog
ICAgICAgICBmaWxsZWQgU1ZHIHBvbHlnb24uIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGZpbGwg
dGhlIHNoYXBlIHdpdGggYWx0ZXJuYXRpbmcgYmxhY2sgYW5kCiAgICAgICAgIGVtcHR5IHJlY3Rh
bmdsZXMgb24gZWFjaCBsaW5lLjwvcD4KLSAgICA8ZGl2IGlkPSJzdWJwaXhlbC10ZXN0IiBzdHls
ZT0id2lkdGg6IDQuNXB4OyBoZWlnaHQ6IDVweDsiPjwvZGl2PgogPC9ib2R5PgogCiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwMy5odG1s
CmluZGV4IDAyOTQ5OTdkZWQyNmQ4NWU2M2RhNjk0YWQ1NjgyMWFlZjU2M2ZhMDUuLjM4Yjk4ZmFi
MzI3MDliZDQwZmY4MzdmMjAxY2E4ZTkwZmM2NWRhNjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29u
LTAwMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwMy5odG1sCkBAIC0xLDExICsxLDkgQEAKIDwh
RE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c3VicGl4ZWwtdXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
aW1wbGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lv
bnNFbmFibGVkKHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBwb2x5
Z29uIHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIFNpbWlsYXIgdG8gdGVz
dCAwMDEKICAgICAvLyB3aXRoIGEgdmVydGljYWwgbGVmdCBlZGdlLgogICAgIHZhciB2ZXJ0aWNl
cyA9IFt7eDo0MCwgeTo0MH0sIHt4OjQ0MCwgeTo0MH0sIHt4OjMyMCwgeToxNjB9LCB7eDo0ODAs
IHk6MzIwfSwge3g6NDAsIHk6MzIwfV07CkBAIC0xMyw4ICsxMSw3IEBACiAgICAgdmFyIGhhc1N1
YnBpeGVsU3VwcG9ydDsKIAogICAgIGZ1bmN0aW9uIGluaXQoKSB7Ci0gICAgICAgIHZhciByZWN0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1YnBpeGVsLXRlc3QiKS5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKTsKLSAgICAgICAgaGFzU3VicGl4ZWxTdXBwb3J0ID0gcmVjdC53aWR0aCAhPSBN
YXRoLmZsb29yKHJlY3Qud2lkdGgpOworICAgICAgICBoYXNTdWJwaXhlbFN1cHBvcnQgPSBzdWJQ
aXhlbExheW91dEVuYWJsZWQoKTsKICAgICAgICAgY3JlYXRlUG9seWdvblNoYXBlSW5zaWRlVGVz
dENhc2UoKTsKICAgICB9CiA8L3NjcmlwdD4KQEAgLTM1LDcgKzMyLDYgQEAKICAgICAgIFRoaXMg
dGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCBjcmVhdGVzIGEgcG9seWdvbmFsIHNoYXBl
LWluc2lkZSBhbmQgYSBtYXRjaGluZwogICAgICAgZmlsbGVkIFNWRyBwb2x5Z29uLiBUaGUgY29u
dGVudCBzaG91bGQganVzdCBmaWxsIHRoZSBzaGFwZSB3aXRoIGFsdGVybmF0aW5nIGJsYWNrIGFu
ZAogICAgICAgZW1wdHkgcmVjdGFuZ2xlcyBvbiBlYWNoIGxpbmUuPC9wPgotICA8ZGl2IGlkPSJz
dWJwaXhlbC10ZXN0IiBzdHlsZT0id2lkdGg6IDQuNXB4OyBoZWlnaHQ6IDVweDsiPjwvZGl2Pgog
PC9ib2R5PgogCiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLXNpbXBsZS1wb2x5Z29uLTAwNC1leHBlY3RlZC5odG1sCmluZGV4IDU2MzhjN2M5MGY0NTM3
OTU4ZDEzOTI3YjA0ZTQxZTlkNjIxMTc2N2YuLmZhYWNkYTI3ZWZiODA5M2VlZmNmZTQyYjY0YTUz
OWY5MmIxYzY5YTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC1leHBlY3RlZC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LXNpbXBsZS1wb2x5Z29uLTAwNC1leHBlY3RlZC5odG1sCkBAIC0xLDExICsxLDkgQEAKIDwhRE9D
VFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3Vi
cGl4ZWwtdXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaW1w
bGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNF
bmFibGVkKHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBwb2x5Z29u
IHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIEEgdmVyc2lvbiBvZiB0aGUg
MDAxCiAgICAgLy8gaG91cmdsYXNzIHNoYXBlIHdpdGggdmVydGljYWwgZWRnZXMgaW4gdGhlIGNl
bnRlci4KICAgICB2YXIgdmVydGljZXMgPSBbe3g6NDAsIHk6NDB9LCB7eDo0NDAsIHk6NDB9LCB7
eDozMjAsIHk6MTYwfSwge3g6MzIwLCB5OjI0MH0sIHt4OjQ4MCwgeTo0MDB9LCB7eDo4MCwgeTo0
MDB9LCB7eDoyMDAsIHk6MjgwfSwge3g6MjAwLCB5OjIwMH1dfTsKQEAgLTEzLDggKzExLDcgQEAK
ICAgICB2YXIgaGFzU3VicGl4ZWxTdXBwb3J0OwogCiAgICAgZnVuY3Rpb24gaW5pdCgpIHsKLSAg
ICAgICAgdmFyIHJlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VicGl4ZWwtdGVzdCIp
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICBoYXNTdWJwaXhlbFN1cHBvcnQgPSBy
ZWN0LndpZHRoICE9IE1hdGguZmxvb3IocmVjdC53aWR0aCk7CisgICAgICAgIGhhc1N1YnBpeGVs
U3VwcG9ydCA9IHN1YlBpeGVsTGF5b3V0RW5hYmxlZCgpOwogICAgICAgICBjcmVhdGVQb2x5Z29u
U2hhcGVJbnNpZGVUZXN0Q2FzZUV4cGVjdGVkKCk7CiAgICAgfQogPC9zY3JpcHQ+CkBAIC0zNSw3
ICszMiw2IEBACiAgICAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCBj
cmVhdGVzIGEgcG9seWdvbmFsIHNoYXBlLWluc2lkZSBhbmQgYSBtYXRjaGluZwogICAgICAgICBm
aWxsZWQgU1ZHIHBvbHlnb24uIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGZpbGwgdGhlIHNoYXBl
IHdpdGggYWx0ZXJuYXRpbmcgYmxhY2sgYW5kCiAgICAgICAgIGVtcHR5IHJlY3RhbmdsZXMgb24g
ZWFjaCBsaW5lLjwvcD4KLSAgPGRpdiBpZD0ic3VicGl4ZWwtdGVzdCIgc3R5bGU9IndpZHRoOiA0
LjVweDsgaGVpZ2h0OiA1cHg7Ij48L2Rpdj4KIDwvYm9keT4KIAogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
c2ltcGxlLXBvbHlnb24tMDA0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQuaHRtbAppbmRleCBlNTk0
ZGYwY2Q3ZWQyZDczNmFiM2E3MmQ1NDM0NzE2ZjRlNGM0MWQ4Li42MTM5MTI3MjJlZGJmN2RjMmFm
Nzc5ZDUwODg3NTg0M2YyMjliMzlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1zaW1wbGUtcG9seWdvbi0wMDQuaHRtbApAQCAtMSwxMSArMSw5IEBACiA8IURPQ1RZUEUgaHRt
bD4KIDxodG1sPgogPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N1YnBpeGVsLXV0
aWxzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2ltcGxlLXBvbHln
b24uanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmludGVybmFscykKLSAg
ICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0
cnVlKTsKLQogICAgIC8vIENvbmNhdmUgYXNzeW1ldHJpYyBzaW1wbGUgcG9seWdvbiB3aXRoIGhv
cml6b250YWwgdG9wIGFuZCBib3R0b20gZWRnZXMuICBBIHZlcnNpb24gb2YgdGhlIDAwMQogICAg
IC8vIGhvdXJnbGFzcyBzaGFwZSB3aXRoIHZlcnRpY2FsIGVkZ2VzIGluIHRoZSBjZW50ZXIuCiAg
ICAgdmFyIHZlcnRpY2VzID0gW3t4OjQwLCB5OjQwfSwge3g6NDQwLCB5OjQwfSwge3g6MzIwLCB5
OjE2MH0sIHt4OjMyMCwgeToyNDB9LCB7eDo0ODAsIHk6NDAwfSwge3g6ODAsIHk6NDAwfSwge3g6
MjAwLCB5OjI4MH0sIHt4OjIwMCwgeToyMDB9XX07CkBAIC0xMyw4ICsxMSw3IEBACiAgICAgdmFy
IGhhc1N1YnBpeGVsU3VwcG9ydDsKIAogICAgIGZ1bmN0aW9uIGluaXQoKSB7Ci0gICAgICAgIHZh
ciByZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1YnBpeGVsLXRlc3QiKS5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgaGFzU3VicGl4ZWxTdXBwb3J0ID0gcmVjdC53aWR0
aCAhPSBNYXRoLmZsb29yKHJlY3Qud2lkdGgpOworICAgICAgICBoYXNTdWJwaXhlbFN1cHBvcnQg
PSBzdWJQaXhlbExheW91dEVuYWJsZWQoKTsKICAgICAgICAgY3JlYXRlUG9seWdvblNoYXBlSW5z
aWRlVGVzdENhc2UoKTsKICAgICB9CiA8L3NjcmlwdD4KQEAgLTM1LDcgKzMyLDYgQEAKICAgICAg
IFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCBjcmVhdGVzIGEgcG9seWdvbmFs
IHNoYXBlLWluc2lkZSBhbmQgYSBtYXRjaGluZwogICAgICAgZmlsbGVkIFNWRyBwb2x5Z29uLiBU
aGUgY29udGVudCBzaG91bGQganVzdCBmaWxsIHRoZSBzaGFwZSB3aXRoIGFsdGVybmF0aW5nIGJs
YWNrIGFuZAogICAgICAgZW1wdHkgcmVjdGFuZ2xlcyBvbiBlYWNoIGxpbmUuPC9wPgotICA8ZGl2
IGlkPSJzdWJwaXhlbC10ZXN0IiBzdHlsZT0id2lkdGg6IDQuNXB4OyBoZWlnaHQ6IDVweDsiPjwv
ZGl2PgogPC9ib2R5PgogCiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171905</attachid>
            <date>2012-11-01 12:04:35 -0700</date>
            <delta_ts>2012-11-02 11:50:28 -0700</delta_ts>
            <desc>Updating patch</desc>
            <filename>bug-100704-20121101120256.patch</filename>
            <type>text/plain</type>
            <size>26702</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjA2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDgzNDM3NDIwOTYxZWE1ZDllMTQz
ZTAyYjliMmViYjA4NzY4NmQ1Yy4uMmVhZDkyYWMxNDU3MmVmNmQ3MTAyZTk2NDVjNDU2Y2Y4YThm
OTI4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTExLTAxICBCZWFyIFRyYXZpcyAgPGJl
dHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIENsZWFuIHVwIHJv
dW5kZWQgcmVjdGFuZ2xlIHRlc3RzIHRvIHVzZSBwaXhlbCBzbmFwcGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzA0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmFjdG9yIG91dCB0aGUgcGl4ZWwg
c25hcHBpbmcgYmVoYXZpb3IgZnJvbSBwb2x5Z29uIHRlc3RzIHRvIGJlIHNoYXJlZCB3aXRoCisg
ICAgICAgIHRoZSByb3VuZGVkIHJlY3RhbmdsZSB0ZXN0cy4gSW4gc3ViLXBpeGVsIGxheW91dCwg
dGhlIHJvdW5kaW5nIGJlaGF2aW9yIG1heSBiZQorICAgICAgICBzbGlnaHRseSBkaWZmZXJlbnQu
IFRoaXMgYWRkcyBhIG5ldyBmaWxlLCBzdWJwaXhlbC11dGlscy5qcywgd2hpY2ggdGVzdHMgZm9y
IHRoZSBmZWF0dXJlCisgICAgICAgIGF2YWlsYWJpbGl0eS4gSSd2ZSBhbHNvIHRha2VuIHRoZSBv
cHBvcnR1bml0eSB0byBmYWN0b3IgdGhlIHdpbmRvdy5pbnRlcm5hbC5zZXR0aW5ncworICAgICAg
ICBjb2RlIGludG8gcm91bmRlZC1yZWN0YW5nbGUuanMgYW5kIHNpbXBsZS1wb2x5Z29uLmpzLgor
CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9yb3VuZGVkLXJlY3RhbmdsZS5q
czoKKyAgICAgICAgKHJvdW5kTGluZUxlZnQpOiBQaXhlbCBzbmFwIHRoZSBsZWZ0IGxpbmUgZWRn
ZS4KKyAgICAgICAgKHJvdW5kTGluZVJpZ2h0KTogUGl4ZWwgc25hcCB0aGUgcmlnaHQgbGluZSBl
ZGdlLgorICAgICAgICAoc2ltdWxhdGVTaGFwZSk6IEFjY2VwdCBhIG5ldyBhcmd1bWVudCBmb3Ig
d2hldGhlciBzdWJwaXhlbCBsYXlvdXQgaXMgZW5hYmxlZC4KKyAgICAgICAgKGdlbmVyYXRlU2lt
dWxhdGVkU2hhcGVFbGVtZW50KTogRGl0dG8uCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3Jl
c291cmNlcy9zaW1wbGUtcG9seWdvbi5qczoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvcmVz
b3VyY2VzL3N1YnBpeGVsLXV0aWxzLmpzOiBBZGRlZC4KKyAgICAgICAgKHN1YlBpeGVsTGF5b3V0
RW5hYmxlZCk6IERldGVybWluZSBpZiBzdWJwaXhlbCBsYXlvdXQgaXMgZW5hYmxlZC4KKyAgICAg
ICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJl
Y3RhbmdsZS0wMDItZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDIuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJl
Y3RhbmdsZS0wMDMtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDMuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJl
Y3RhbmdsZS0wMDQtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDQuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9s
eWdvbi0wMDEtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDEuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0w
MDItZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDIuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDMtZXhw
ZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQtZXhwZWN0ZWQu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1zaW1wbGUtcG9seWdvbi0wMDQuaHRtbDoKKwogMjAxMi0xMS0wMSAgRGFuYSBKYW5zZW5zICA8
ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZW1vdmUgZmFpbGlu
ZyBleHBlY3RhdGlvbnMgYWZ0ZXIgcmViYXNlbGluZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvcm91bmRlZC1yZWN0YW5nbGUuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3JvdW5kZWQtcmVjdGFuZ2xlLmpzCmluZGV4
IGMwOWI2NDQ3NDYyY2QzMWY4OTVkNjk3N2UwNzE5MzQzY2U5ZDRjNWEuLjRjNGE4YzllNzQyYmI1
NWZkNjdkZTI4YTEyMzc0MzIzZGFhNmIxZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9yZXNvdXJjZXMvcm91bmRlZC1yZWN0YW5nbGUuanMKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9yb3VuZGVkLXJlY3RhbmdsZS5qcwpAQCAtMSwz
ICsxLDE4IEBACitpZiAod2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOworCitmdW5jdGlvbiByb3VuZExp
bmVMZWZ0KGYsIHN1YnBpeGVsRW5hYmxlZCkgeworICAgIGlmICghc3VicGl4ZWxFbmFibGVkKQor
ICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKKyAgICByZXR1cm4gTWF0aC5mbG9vcigoTWF0
aC5mbG9vcihmICogNjQpICsgMzIpIC8gNjQpOyAvLyBzZWUgRnJhY3Rpb25MYXlvdXRVbml0Ojpy
b3VuZCgpCit9CisKK2Z1bmN0aW9uIHJvdW5kTGluZVJpZ2h0KGYsIHN1YnBpeGVsRW5hYmxlZCkg
eworICAgIGlmICghc3VicGl4ZWxFbmFibGVkKQorICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihm
KTsKKyAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmZsb29yKGYgKiA2NCkgLyA2NCk7IC8vIHNl
ZSBGcmFjdGlvbkxheW91dFVuaXQ6OmZsb29yKCkKK30KKwogZnVuY3Rpb24geEZyb21FbGxpcHNl
Q2VudGVyKHlGcm9tRWxsaXBzZUNlbnRlciwgcmFkaXVzWCwgcmFkaXVzWSkgewogICAgIHJldHVy
biByYWRpdXNYICogTWF0aC5zcXJ0KDEgLSBNYXRoLnBvdyh5RnJvbUVsbGlwc2VDZW50ZXIgLyBy
YWRpdXNZLCAyKSk7CiB9CkBAIC0yOCw3ICs0Myw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRlU3RyaW5n
KGRpbWVuc2lvbnMsIGxpbmVIZWlnaHQpIHsKICAgICByZXR1cm4gKG5ldyBBcnJheShNYXRoLmNl
aWwocmVzdWx0TGVuZ3RoIC8gMikpLmpvaW4oInggIikpOwogfQogCi1mdW5jdGlvbiBzaW11bGF0
ZVNoYXBlKGVsZW1lbnRJZCwgc3R5bGVzaGVldCwgZGltZW5zaW9ucywgbGluZUhlaWdodCkgewor
ZnVuY3Rpb24gc2ltdWxhdGVTaGFwZShlbGVtZW50SWQsIHN0eWxlc2hlZXQsIGRpbWVuc2lvbnMs
IGxpbmVIZWlnaHQsIHN1YnBpeGVsRW5hYmxlZCkgewogICAgIHZhciBzaW1wbGVSZWN0YW5nbGUg
PSBkaW1lbnNpb25zLnNoYXBlUmFkaXVzWCA9PSAwIHx8IGRpbWVuc2lvbnMuc2hhcGVSYWRpdXNZ
ID09IDA7CiAgICAgdmFyIGZsb2F0SGVpZ2h0ID0gc2ltcGxlUmVjdGFuZ2xlID8gZGltZW5zaW9u
cy5zaGFwZUhlaWdodCA6IGxpbmVIZWlnaHQ7CiAKQEAgLTUyLDEyICs2NywxMiBAQCBmdW5jdGlv
biBzaW11bGF0ZVNoYXBlKGVsZW1lbnRJZCwgc3R5bGVzaGVldCwgZGltZW5zaW9ucywgbGluZUhl
aWdodCkgewogCiAgICAgICAgIHZhciBwYWRkaW5nTGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwogICAgICAgICBwYWRkaW5nTGVmdC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgImZs
b2F0IGxlZnQiKTsKLSAgICAgICAgcGFkZGluZ0xlZnQuc3R5bGUud2lkdGggPSBkaW1lbnNpb25z
LnNoYXBlWCArIGluc2V0ICsgInB4IjsKKyAgICAgICAgcGFkZGluZ0xlZnQuc3R5bGUud2lkdGgg
PSByb3VuZExpbmVMZWZ0KGRpbWVuc2lvbnMuc2hhcGVYICsgaW5zZXQsIHN1YnBpeGVsRW5hYmxl
ZCkgKyAicHgiOwogICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHBhZGRpbmdMZWZ0KTsKIAog
ICAgICAgICB2YXIgcGFkZGluZ1JpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CiAgICAgICAgIHBhZGRpbmdSaWdodC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgImZsb2F0IHJpZ2h0
Iik7Ci0gICAgICAgIHBhZGRpbmdSaWdodC5zdHlsZS53aWR0aCA9IE1hdGguZmxvb3IoKGRpbWVu
c2lvbnMud2lkdGggLSBkaW1lbnNpb25zLnNoYXBlV2lkdGggLSBkaW1lbnNpb25zLnNoYXBlWCkg
KyBpbnNldCkgKyAicHgiOworICAgICAgICBwYWRkaW5nUmlnaHQuc3R5bGUud2lkdGggPSByb3Vu
ZExpbmVSaWdodCgoZGltZW5zaW9ucy53aWR0aCAtIGRpbWVuc2lvbnMuc2hhcGVXaWR0aCAtIGRp
bWVuc2lvbnMuc2hhcGVYKSArIGluc2V0LCBzdWJwaXhlbEVuYWJsZWQpICsgInB4IjsKICAgICAg
ICAgZWxlbWVudC5hcHBlbmRDaGlsZChwYWRkaW5nUmlnaHQpOwogICAgIH0KIH0KQEAgLTc2LDgg
KzkxLDggQEAgZnVuY3Rpb24gc2ltdWxhdGVTaGFwZU91dGxpbmUoZWxlbWVudElkLCBzdHlsZXNo
ZWV0LCBkaW1lbnNpb25zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiYm9yZGVy
LXJhZGl1czogIiArIGRpbWVuc2lvbnMuc2hhcGVSYWRpdXNYICsgInB4IC8gIiArIGRpbWVuc2lv
bnMuc2hhcGVSYWRpdXNZICsgInB4OyB9Iik7CiB9CiAKLWZ1bmN0aW9uIGdlbmVyYXRlU2ltdWxh
dGVkU2hhcGVFbGVtZW50KGVsZW1lbnRJZCwgc3R5bGVzaGVldCwgZGltZW5zaW9ucywgbGluZUhl
aWdodCkgewotICAgIHNpbXVsYXRlU2hhcGUoZWxlbWVudElkLCBzdHlsZXNoZWV0LCBkaW1lbnNp
b25zLCBsaW5lSGVpZ2h0KTsKK2Z1bmN0aW9uIGdlbmVyYXRlU2ltdWxhdGVkU2hhcGVFbGVtZW50
KGVsZW1lbnRJZCwgc3R5bGVzaGVldCwgZGltZW5zaW9ucywgbGluZUhlaWdodCwgc3VicGl4ZWxF
bmFibGVkKSB7CisgICAgc2ltdWxhdGVTaGFwZShlbGVtZW50SWQsIHN0eWxlc2hlZXQsIGRpbWVu
c2lvbnMsIGxpbmVIZWlnaHQsIHN1YnBpeGVsRW5hYmxlZCk7CiAgICAgc2ltdWxhdGVTaGFwZU91
dGxpbmUoZWxlbWVudElkLCBzdHlsZXNoZWV0LCBkaW1lbnNpb25zKTsKICAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGdlbmVyYXRlU3RyaW5nKGRpbWVuc2lvbnMsIGxpbmVI
ZWlnaHQpKTsKICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc2ltcGxlLXBvbHln
b24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3NpbXBsZS1wb2x5
Z29uLmpzCmluZGV4IDhlOGE5OGRmM2RlMWI3NTI1YTkzMjFjNWRmMjM0NTM4ZTBhMmM3M2IuLmYx
OGI0YjM5M2Q4NzQwMzNlNzczMDk0N2ZkMmZhMzNjYWE5N2MyMzEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24uanMKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9zaW1wbGUtcG9seWdvbi5qcwpA
QCAtMSw1ICsxLDcgQEAKIC8vIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBpbnRlbmRl
ZCB0byBiZSB1c2VkIHRvIHRlc3Qgbm9uLWNvbXBsZXggcG9seWdvbnMKIC8vIHdoZXJlIGhvcml6
b250YWwgbGluZXMgdGhhdCBvdmVybGFwIHRoZSBwb2x5Z29uIG9ubHkgY3Jvc3MgdGhlIHBvbHln
b24gdHdpY2UuCitpZiAod2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOwogCiBmdW5jdGlvbiBjcmVhdGVQ
b2x5Z29uKHZlcnRpY2VzKSB7CiAgICAgdmFyIHhDb29yZGluYXRlcyA9IHZlcnRpY2VzLm1hcCgg
ZnVuY3Rpb24ocCkgeyByZXR1cm4gcC54OyB9ICk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3N1YnBpeGVsLXV0aWxzLmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9zdWJwaXhlbC11dGlscy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
OTY1MGRkY2M1NTgzYjFkMmNkZjU1MTQ2NTY1MTk2ODY4ZmQ0OGNkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9zdWJwaXhlbC11dGlscy5q
cwpAQCAtMCwwICsxLDEyIEBACit2YXIgX3N1YlBpeGVsTGF5b3V0ID0gbnVsbDsKK2Z1bmN0aW9u
IHN1YlBpeGVsTGF5b3V0RW5hYmxlZCgpIHsKKyAgICBpZiAoX3N1YlBpeGVsTGF5b3V0ID09PSBu
dWxsKSB7CisgICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgICAgIGVsZW0uc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywgJzQuNXB4Jyk7CisgICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbSk7CisgICAgICAgIHZhciBib3VuZHMg
PSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBfc3ViUGl4ZWxMYXlvdXQg
PSAgKGJvdW5kcy53aWR0aCAhPSBNYXRoLmZsb29yKGJvdW5kcy53aWR0aCkpOworICAgICAgICBk
b2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW0pOworICAgIH0KKyAgICByZXR1cm4gX3N1YlBp
eGVsTGF5b3V0OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5k
ZWQtcmVjdGFuZ2xlLTAwMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAyLWV4cGVj
dGVkLmh0bWwKaW5kZXggNjhlOTYzMjk3NDRiMzg2NWJmYTRiMzVhYTliN2E4MzMyYWE0NWZiMS4u
MjllZjEwNjc0MTEwNDExN2NmNWY4OTNjMzEzOGNkN2JhNmFhYWE4YSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRl
ZC1yZWN0YW5nbGUtMDAyLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAyLWV4
cGVjdGVkLmh0bWwKQEAgLTEsNiArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N1YnBpeGVsLXV0aWxzLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcm91bmRlZC1yZWN0YW5nbGUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBjcmVhdGVTaW11bGF0ZWRTaGFwZUVsZW1lbnQo
KSB7CkBAIC05LDEwICsxMCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBl
WDogMjUsIHNoYXBlWTogNDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGVXaWR0
aDogMTAwLCBzaGFwZUhlaWdodDogMjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo
YXBlUmFkaXVzWDogMCwgc2hhcGVSYWRpdXNZOiA1NSB9OwotICAgICAgICBnZW5lcmF0ZVNpbXVs
YXRlZFNoYXBlRWxlbWVudCgic2hhcGUtaW5zaWRlMSIsIHN0eWxlc2hlZXQuc2hlZXQsIGRpbWVu
c2lvbnMsIDkpOworICAgICAgICBnZW5lcmF0ZVNpbXVsYXRlZFNoYXBlRWxlbWVudCgic2hhcGUt
aW5zaWRlMSIsIHN0eWxlc2hlZXQuc2hlZXQsIGRpbWVuc2lvbnMsIDksIHN1YlBpeGVsTGF5b3V0
RW5hYmxlZCgpKTsKICAgICAgICAgZGltZW5zaW9ucy5zaGFwZVJhZGl1c1ggPSA1NTsKICAgICAg
ICAgZGltZW5zaW9ucy5zaGFwZVJhZGl1c1kgPSAwOwotICAgICAgICBnZW5lcmF0ZVNpbXVsYXRl
ZFNoYXBlRWxlbWVudCgic2hhcGUtaW5zaWRlMiIsIHN0eWxlc2hlZXQuc2hlZXQsIGRpbWVuc2lv
bnMsIDkpOworICAgICAgICBnZW5lcmF0ZVNpbXVsYXRlZFNoYXBlRWxlbWVudCgic2hhcGUtaW5z
aWRlMiIsIHN0eWxlc2hlZXQuc2hlZXQsIGRpbWVuc2lvbnMsIDksIHN1YlBpeGVsTGF5b3V0RW5h
YmxlZCgpKTsKICAgICB9CiA8L3NjcmlwdD4KIDxzdHlsZSBpZD0ic3R5bGVzaGVldCI+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWlu
c2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwMi5odG1s
CmluZGV4IGZlZDk0OTIyMjhmZTIzYTFhM2U5ZTNiMWRjMTI4NGFiNzMxOTc0YzguLjVmOTAxYmJl
MTk1MmZjZjYyYTE3ZmZkZTRmOTAyNzk4ZGIxMTRiYmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFu
Z2xlLTAwMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwMi5odG1sCkBAIC0zLDkgKzMsNiBA
QAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JvdW5kZWQtcmVjdGFuZ2xlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7
Ci0KICAgICBmdW5jdGlvbiBjcmVhdGVTaGFwZUVsZW1lbnQoKSB7CiAgICAgICAgIHZhciBzdHls
ZXNoZWV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0eWxlc2hlZXQiKTsKICAgICAgICAg
dmFyIGRpbWVuc2lvbnMgPSB7ICB3aWR0aDogMjAwLCBoZWlnaHQ6IDMwMCwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJv
dW5kZWQtcmVjdGFuZ2xlLTAwMy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAzLWV4
cGVjdGVkLmh0bWwKaW5kZXggMTQ1OGVjNTc3ZDk5ZGVjMjBlYWZkN2M2MjQ4MjE2NjFkZWE5N2E3
OC4uY2UzODk0OGNlMDExMTZiNjdiM2E4OTIwZmY1NGQxNTQ0YzljMDQ5NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91
bmRlZC1yZWN0YW5nbGUtMDAzLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAz
LWV4cGVjdGVkLmh0bWwKQEAgLTEsNiArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgog
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N1YnBpeGVsLXV0aWxzLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcm91bmRlZC1yZWN0YW5nbGUuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBjcmVhdGVTaW11bGF0ZWRTaGFwZUVsZW1l
bnQoKSB7CkBAIC05LDcgKzEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFw
ZVg6IDQ1LCBzaGFwZVk6IDI1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlV2lk
dGg6IDMwMCwgc2hhcGVIZWlnaHQ6IDUwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aGFwZVJhZGl1c1g6IDc1LCBzaGFwZVJhZGl1c1k6IDU1IH07Ci0gICAgICAgIGdlbmVyYXRlU2lt
dWxhdGVkU2hhcGVFbGVtZW50KCJzaGFwZS1pbnNpZGUiLCBzdHlsZXNoZWV0LnNoZWV0LCBkaW1l
bnNpb25zLCAyMik7CisgICAgICAgIGdlbmVyYXRlU2ltdWxhdGVkU2hhcGVFbGVtZW50KCJzaGFw
ZS1pbnNpZGUiLCBzdHlsZXNoZWV0LnNoZWV0LCBkaW1lbnNpb25zLCAyMiwgc3ViUGl4ZWxMYXlv
dXRFbmFibGVkKCkpOwogICAgIH0KIDwvc2NyaXB0PgogPHN0eWxlIGlkPSJzdHlsZXNoZWV0Ij4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAz
Lmh0bWwKaW5kZXggOTMyODM4Y2U4Yzc5OGJlZGNlNjkwNGEzOTMzZGFkMjkwNTc5NmQ3Ni4uOWZl
YWE3OTdjNTJjODk4ZjFiZjBkMWZhODdlNDEwYTNkNGQ1NTc4YyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1y
ZWN0YW5nbGUtMDAzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAzLmh0bWwKQEAgLTMsOSAr
Myw2IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcm91bmRlZC1yZWN0YW5n
bGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmludGVybmFscykKLSAg
ICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0
cnVlKTsKLQogICAgIGZ1bmN0aW9uIGNyZWF0ZVNoYXBlRWxlbWVudCgpIHsKICAgICAgICAgdmFy
IHN0eWxlc2hlZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3R5bGVzaGVldCIpOwogICAg
ICAgICB2YXIgZGltZW5zaW9ucyA9IHsgIHdpZHRoOiA0MDAsIGhlaWdodDogNjAwLApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtcm91bmRlZC1yZWN0YW5nbGUtMDA0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0w
MDQtZXhwZWN0ZWQuaHRtbAppbmRleCAwYzNlOTJiODJiNDU0YzMyNDY5Njc0MDRkMTNmNmYwZjlj
YWU1ZTVhLi4wM2UwYjk3YzE4MTQ5ZmYzNDkzYzAwYzg5ZmNlNjdjNGQxZTU5OTlhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDQtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3Rhbmds
ZS0wMDQtZXhwZWN0ZWQuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0
bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3VicGl4ZWwtdXRpbHMuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9yb3VuZGVkLXJlY3RhbmdsZS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIGNyZWF0ZVNpbXVsYXRlZFNoYXBl
RWxlbWVudCgpIHsKQEAgLTksNyArMTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNoYXBlWDogMjUsIHNoYXBlWTogNDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hh
cGVXaWR0aDogNjAwLCBzaGFwZUhlaWdodDogMzAwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNoYXBlUmFkaXVzWDogMTAwLCBzaGFwZVJhZGl1c1k6IDE1MCB9OwotICAgICAgICBnZW5l
cmF0ZVNpbXVsYXRlZFNoYXBlRWxlbWVudCgic2hhcGUtaW5zaWRlIiwgc3R5bGVzaGVldC5zaGVl
dCwgZGltZW5zaW9ucywgOTApOworICAgICAgICBnZW5lcmF0ZVNpbXVsYXRlZFNoYXBlRWxlbWVu
dCgic2hhcGUtaW5zaWRlIiwgc3R5bGVzaGVldC5zaGVldCwgZGltZW5zaW9ucywgOTAsIHN1YlBp
eGVsTGF5b3V0RW5hYmxlZCgpKTsKICAgICB9CiA8L3NjcmlwdD4KIDxzdHlsZSBpZD0ic3R5bGVz
aGVldCI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5z
aWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFu
Z2xlLTAwNC5odG1sCmluZGV4IGRiMTAyMmM2ZDMyZTQxNmJkODFmODNiNjA5ZjdhNDNkNTUzNzU2
ZjYuLmNkZjA4NzdhYzM2MzAyMzgyZTk2M2RmMWRlNzNiZmMwOGZmOGYzNjUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJv
dW5kZWQtcmVjdGFuZ2xlLTAwNC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwNC5odG1sCkBA
IC0zLDkgKzMsNiBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JvdW5kZWQt
cmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCi0gICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0Vu
YWJsZWQodHJ1ZSk7Ci0KICAgICBmdW5jdGlvbiBjcmVhdGVTaGFwZUVsZW1lbnQoKSB7CiAgICAg
ICAgIHZhciBzdHlsZXNoZWV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0eWxlc2hlZXQi
KTsKICAgICAgICAgdmFyIGRpbWVuc2lvbnMgPSB7ICB3aWR0aDogNzAwLCBoZWlnaHQ6IDUwMCwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwMS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24t
MDAxLWV4cGVjdGVkLmh0bWwKaW5kZXggZjRmOWI0Mjg0NDdlM2E2MjE5YjZhMmExYjM2ZTc3YmUx
YTg4MDczNS4uN2QzNmIxYjdjMzJjZmU1NzExOTNhNzIxYzcxYWZkOGQ2MTVmMzFlNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtc2ltcGxlLXBvbHlnb24tMDAxLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAx
LWV4cGVjdGVkLmh0bWwKQEAgLTEsMTkgKzEsMTYgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+
CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3VicGl4ZWwtdXRpbHMuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaW1wbGUtcG9seWdvbi5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOwotCiAg
ICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBwb2x5Z29uIHdpdGggaG9yaXpvbnRhbCB0
b3AgYW5kIGJvdHRvbSBlZGdlcy4gIFJvdWdobHkgYW4gaG91cmdsYXNzIHNoYXBlLgogICAgIHZh
ciB2ZXJ0aWNlcyA9IFt7eDo0MCwgeTo0MH0sIHt4OjQ0MCwgeTo0MH0sIHt4OjMyMCwgeToxNjB9
LCB7eDo0ODAsIHk6MzIwfSwge3g6ODAsIHk6MzIwfSwge3g6MjAwLCB5OjIwMH1dOwogICAgIHZh
ciBsaW5lSGVpZ2h0ID0gNDA7CiAgICAgdmFyIGhhc1N1YnBpeGVsU3VwcG9ydDsKIAogICAgIGZ1
bmN0aW9uIGluaXQoKSB7Ci0gICAgICAgIHZhciByZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInN1YnBpeGVsLXRlc3QiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgaGFz
U3VicGl4ZWxTdXBwb3J0ID0gcmVjdC53aWR0aCAhPSBNYXRoLmZsb29yKHJlY3Qud2lkdGgpOwor
ICAgICAgICBoYXNTdWJwaXhlbFN1cHBvcnQgPSBzdWJQaXhlbExheW91dEVuYWJsZWQoKTsKICAg
ICAgICAgY3JlYXRlUG9seWdvblNoYXBlSW5zaWRlVGVzdENhc2VFeHBlY3RlZCgpOwogICAgIH0K
IDwvc2NyaXB0PgpAQCAtMzQsNyArMzEsNiBAQAogICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRo
ZSBBaGVtIGZvbnQuIEl0IGNyZWF0ZXMgYSBwb2x5Z29uYWwgc2hhcGUtaW5zaWRlIGFuZCBhIG1h
dGNoaW5nCiAgICAgICBmaWxsZWQgU1ZHIHBvbHlnb24uIFRoZSBjb250ZW50IHNob3VsZCBqdXN0
IGZpbGwgdGhlIHNoYXBlIHdpdGggYWx0ZXJuYXRpbmcgYmxhY2sgYW5kCiAgICAgICBlbXB0eSBy
ZWN0YW5nbGVzIG9uIGVhY2ggbGluZS48L3A+Ci0gIDxkaXYgaWQ9InN1YnBpeGVsLXRlc3QiIHN0
eWxlPSJ3aWR0aDogNC41cHg7IGhlaWdodDogNXB4OyI+PC9kaXY+CiA8L2JvZHk+CiAKIDwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAxLmh0
bWwKaW5kZXggNjMyYzRjZWUyNDQyZjY1OGRmZThiM2VhM2NhMDI2MjFiMTAwNzBlNC4uNWQxNGVi
NzllN2JkODkxNzY5OWNjMDMzODljOTU2OTNmN2VjYmZkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHln
b24tMDAxLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAxLmh0bWwKQEAgLTEsMTkgKzEsMTYgQEAK
IDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc3VicGl4ZWwtdXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9zaW1wbGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1
c2lvbnNFbmFibGVkKHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBw
b2x5Z29uIHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIFJvdWdobHkgYW4g
aG91cmdsYXNzIHNoYXBlLgogICAgIHZhciB2ZXJ0aWNlcyA9IFt7eDo0MCwgeTo0MH0sIHt4OjQ0
MCwgeTo0MH0sIHt4OjMyMCwgeToxNjB9LCB7eDo0ODAsIHk6MzIwfSwge3g6ODAsIHk6MzIwfSwg
e3g6MjAwLCB5OjIwMH1dOwogICAgIHZhciBsaW5lSGVpZ2h0ID0gNDA7CiAgICAgdmFyIGhhc1N1
YnBpeGVsU3VwcG9ydDsKIAogICAgIGZ1bmN0aW9uIGluaXQoKSB7Ci0gICAgICAgIHZhciByZWN0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1YnBpeGVsLXRlc3QiKS5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKTsKLSAgICAgICAgaGFzU3VicGl4ZWxTdXBwb3J0ID0gcmVjdC53aWR0aCAhPSBN
YXRoLmZsb29yKHJlY3Qud2lkdGgpOworICAgICAgICBoYXNTdWJwaXhlbFN1cHBvcnQgPSBzdWJQ
aXhlbExheW91dEVuYWJsZWQoKTsKICAgICAgICAgY3JlYXRlUG9seWdvblNoYXBlSW5zaWRlVGVz
dENhc2UoKTsKICAgICB9CiA8L3NjcmlwdD4KQEAgLTM0LDcgKzMxLDYgQEAKICAgICAgIFRoaXMg
dGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCBjcmVhdGVzIGEgcG9seWdvbmFsIHNoYXBl
LWluc2lkZSBhbmQgYSBtYXRjaGluZwogICAgICAgZmlsbGVkIFNWRyBwb2x5Z29uLiBUaGUgY29u
dGVudCBzaG91bGQganVzdCBmaWxsIHRoZSBzaGFwZSB3aXRoIGFsdGVybmF0aW5nIGJsYWNrIGFu
ZAogICAgICAgZW1wdHkgcmVjdGFuZ2xlcyBvbiBlYWNoIGxpbmUuPC9wPgotICA8ZGl2IGlkPSJz
dWJwaXhlbC10ZXN0IiBzdHlsZT0id2lkdGg6IDQuNXB4OyBoZWlnaHQ6IDVweDsiPjwvZGl2Pgog
PC9ib2R5PgogCiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDItZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLXNpbXBsZS1wb2x5Z29uLTAwMi1leHBlY3RlZC5odG1sCmluZGV4IDMzNzA1MmU4NzYwYzc2
NTc4OTY4NDYyYzAwN2UzNGE0OWQ3YTlmNzQuLjdjZmU5Y2QxYzc2NTM4NDZlOGU0NTc1NTVhNTFh
MDY1NzJhNjdiZGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwMi1leHBlY3RlZC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LXNpbXBsZS1wb2x5Z29uLTAwMi1leHBlY3RlZC5odG1sCkBAIC0xLDExICsxLDkgQEAKIDwhRE9D
VFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3Vi
cGl4ZWwtdXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaW1w
bGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNF
bmFibGVkKHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBwb2x5Z29u
IHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIFNpbWlsYXIgdG8gdGVzdCAw
MDEKICAgICAvLyBidXQgd2l0aCBhIHJpZ2h0IHJpZ2h0IGVkZ2UuCiAgICAgdmFyIHZlcnRpY2Vz
ID0gW3t4OjQwLCB5OjQwfSwge3g6NDQwLCB5OjQwfSwge3g6NDgwLCB5OjMyMH0sIHt4OjgwLCB5
OjMyMH0sIHt4OjIwMCwgeToyMDB9XTsKQEAgLTEzLDggKzExLDcgQEAKICAgICB2YXIgaGFzU3Vi
cGl4ZWxTdXBwb3J0OwogCiAgICAgZnVuY3Rpb24gaW5pdCgpIHsKLSAgICAgICAgdmFyIHJlY3Qg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VicGl4ZWwtdGVzdCIpLmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpOwotICAgICAgICBoYXNTdWJwaXhlbFN1cHBvcnQgPSByZWN0LndpZHRoICE9IE1h
dGguZmxvb3IocmVjdC53aWR0aCk7CisgICAgICAgIGhhc1N1YnBpeGVsU3VwcG9ydCA9IHN1YlBp
eGVsTGF5b3V0RW5hYmxlZCgpOwogICAgICAgICBjcmVhdGVQb2x5Z29uU2hhcGVJbnNpZGVUZXN0
Q2FzZUV4cGVjdGVkKCk7CiAgICAgfQogPC9zY3JpcHQ+CkBAIC0zNSw3ICszMiw2IEBACiAgICAg
ICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgY3JlYXRlcyBhIHBvbHlnb25h
bCBzaGFwZS1pbnNpZGUgYW5kIGEgbWF0Y2hpbmcKICAgICAgIGZpbGxlZCBTVkcgcG9seWdvbi4g
VGhlIGNvbnRlbnQgc2hvdWxkIGp1c3QgZmlsbCB0aGUgc2hhcGUgd2l0aCBhbHRlcm5hdGluZyBi
bGFjayBhbmQKICAgICAgIGVtcHR5IHJlY3RhbmdsZXMgb24gZWFjaCBsaW5lLjwvcD4KLSAgPGRp
diBpZD0ic3VicGl4ZWwtdGVzdCIgc3R5bGU9IndpZHRoOiA0LjVweDsgaGVpZ2h0OiA1cHg7Ij48
L2Rpdj4KIDwvYm9keT4KIAogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAyLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1zaW1wbGUtcG9seWdvbi0wMDIuaHRtbAppbmRleCBkM2RmNzBkNGE5OGM0YjM3NzVkN2I5YWQ0
MWEzMjFjYTM0ODAzMWU5Li4wYzFiMTNlOTc1N2I2YjlmYjlkZWMxZjY0NGNmZDI2MWVjMjUwY2Rj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDIu
aHRtbApAQCAtMSwxMSArMSw5IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N1YnBpeGVsLXV0aWxzLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24uanMiPjwvc2NyaXB0PgogPHNj
cmlwdD4KLSAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKLQogICAgIC8vIENvbmNh
dmUgYXNzeW1ldHJpYyBzaW1wbGUgcG9seWdvbiB3aXRoIGhvcml6b250YWwgdG9wIGFuZCBib3R0
b20gZWRnZXMuICBTaW1pbGFyIHRvIHRlc3QgMDAxIAogICAgIC8vIGJ1dCB3aXRoIGEgc2luZ2xl
IHJpZ2h0IGVkZ2UuCiAgICAgdmFyIHZlcnRpY2VzID0gW3t4OjQwLCB5OjQwfSwge3g6NDQwLCB5
OjQwfSwge3g6NDgwLCB5OjMyMH0sIHt4OjgwLCB5OjMyMH0sIHt4OjIwMCwgeToyMDB9XTsKQEAg
LTEzLDggKzExLDcgQEAKICAgICB2YXIgaGFzU3VicGl4ZWxTdXBwb3J0OwogCiAgICAgZnVuY3Rp
b24gaW5pdCgpIHsKLSAgICAgICAgdmFyIHJlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c3VicGl4ZWwtdGVzdCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICBoYXNTdWJw
aXhlbFN1cHBvcnQgPSByZWN0LndpZHRoICE9IE1hdGguZmxvb3IocmVjdC53aWR0aCk7CisgICAg
ICAgIGhhc1N1YnBpeGVsU3VwcG9ydCA9IHN1YlBpeGVsTGF5b3V0RW5hYmxlZCgpOwogICAgICAg
ICBjcmVhdGVQb2x5Z29uU2hhcGVJbnNpZGVUZXN0Q2FzZSgpOwogICAgIH0KIDwvc2NyaXB0PgpA
QCAtMzUsNyArMzIsNiBAQAogICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQu
IEl0IGNyZWF0ZXMgYSBwb2x5Z29uYWwgc2hhcGUtaW5zaWRlIGFuZCBhIG1hdGNoaW5nCiAgICAg
ICBmaWxsZWQgU1ZHIHBvbHlnb24uIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGZpbGwgdGhlIHNo
YXBlIHdpdGggYWx0ZXJuYXRpbmcgYmxhY2sgYW5kCiAgICAgICBlbXB0eSByZWN0YW5nbGVzIG9u
IGVhY2ggbGluZS48L3A+Ci0gIDxkaXYgaWQ9InN1YnBpeGVsLXRlc3QiIHN0eWxlPSJ3aWR0aDog
NC41cHg7IGhlaWdodDogNXB4OyI+PC9kaXY+CiA8L2JvZHk+CiAKIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LXNpbXBsZS1wb2x5Z29uLTAwMy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAzLWV4cGVj
dGVkLmh0bWwKaW5kZXggY2E1MzE1NzExOGVlNWJjNDBlYmQ3MzA2MGUyNzE0NjU2YjA1NWI5Ny4u
MGZiNTRiZDEyOTg2Y2MyNDY0Y2UxMjk1YzgwZDA4ZGFiZTBhMmI4MiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxl
LXBvbHlnb24tMDAzLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAzLWV4cGVjdGVk
Lmh0bWwKQEAgLTEsMTEgKzEsOSBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdWJwaXhlbC11dGlscy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NpbXBsZS1wb2x5Z29uLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7Ci0KICAgICAvLyBDb25j
YXZlIGFzc3ltZXRyaWMgc2ltcGxlIHBvbHlnb24gd2l0aCBob3Jpem9udGFsIHRvcCBhbmQgYm90
dG9tIGVkZ2VzLiAgU2ltaWxhciB0byB0ZXN0IDAwMQogICAgIC8vIHdpdGggYSB2ZXJ0aWNhbCBs
ZWZ0IGVkZ2UuCiAgICAgdmFyIHZlcnRpY2VzID0gW3t4OjQwLCB5OjQwfSwge3g6NDQwLCB5OjQw
fSwge3g6MzIwLCB5OjE2MH0sIHt4OjQ4MCwgeTozMjB9LCB7eDo0MCwgeTozMjB9XTsKQEAgLTEz
LDggKzExLDcgQEAKICAgICB2YXIgaGFzU3VicGl4ZWxTdXBwb3J0OwogCiAgICAgZnVuY3Rpb24g
aW5pdCgpIHsKLSAgICAgICAgdmFyIHJlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Vi
cGl4ZWwtdGVzdCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICBoYXNTdWJwaXhl
bFN1cHBvcnQgPSByZWN0LndpZHRoICE9IE1hdGguZmxvb3IocmVjdC53aWR0aCk7CisgICAgICAg
IGhhc1N1YnBpeGVsU3VwcG9ydCA9IHN1YlBpeGVsTGF5b3V0RW5hYmxlZCgpOwogICAgICAgICBj
cmVhdGVQb2x5Z29uU2hhcGVJbnNpZGVUZXN0Q2FzZUV4cGVjdGVkKCk7CiAgICAgfQogPC9zY3Jp
cHQ+CkBAIC0zNSw3ICszMiw2IEBACiAgICAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhl
bSBmb250LiBJdCBjcmVhdGVzIGEgcG9seWdvbmFsIHNoYXBlLWluc2lkZSBhbmQgYSBtYXRjaGlu
ZwogICAgICAgICBmaWxsZWQgU1ZHIHBvbHlnb24uIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGZp
bGwgdGhlIHNoYXBlIHdpdGggYWx0ZXJuYXRpbmcgYmxhY2sgYW5kCiAgICAgICAgIGVtcHR5IHJl
Y3RhbmdsZXMgb24gZWFjaCBsaW5lLjwvcD4KLSAgICA8ZGl2IGlkPSJzdWJwaXhlbC10ZXN0IiBz
dHlsZT0id2lkdGg6IDQuNXB4OyBoZWlnaHQ6IDVweDsiPjwvZGl2PgogPC9ib2R5PgogCiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwMy5o
dG1sCmluZGV4IDAyOTQ5OTdkZWQyNmQ4NWU2M2RhNjk0YWQ1NjgyMWFlZjU2M2ZhMDUuLjM4Yjk4
ZmFiMzI3MDliZDQwZmY4MzdmMjAxY2E4ZTkwZmM2NWRhNjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5
Z29uLTAwMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwMy5odG1sCkBAIC0xLDExICsxLDkgQEAK
IDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc3VicGl4ZWwtdXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9zaW1wbGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1
c2lvbnNFbmFibGVkKHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBw
b2x5Z29uIHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIFNpbWlsYXIgdG8g
dGVzdCAwMDEKICAgICAvLyB3aXRoIGEgdmVydGljYWwgbGVmdCBlZGdlLgogICAgIHZhciB2ZXJ0
aWNlcyA9IFt7eDo0MCwgeTo0MH0sIHt4OjQ0MCwgeTo0MH0sIHt4OjMyMCwgeToxNjB9LCB7eDo0
ODAsIHk6MzIwfSwge3g6NDAsIHk6MzIwfV07CkBAIC0xMyw4ICsxMSw3IEBACiAgICAgdmFyIGhh
c1N1YnBpeGVsU3VwcG9ydDsKIAogICAgIGZ1bmN0aW9uIGluaXQoKSB7Ci0gICAgICAgIHZhciBy
ZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1YnBpeGVsLXRlc3QiKS5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKTsKLSAgICAgICAgaGFzU3VicGl4ZWxTdXBwb3J0ID0gcmVjdC53aWR0aCAh
PSBNYXRoLmZsb29yKHJlY3Qud2lkdGgpOworICAgICAgICBoYXNTdWJwaXhlbFN1cHBvcnQgPSBz
dWJQaXhlbExheW91dEVuYWJsZWQoKTsKICAgICAgICAgY3JlYXRlUG9seWdvblNoYXBlSW5zaWRl
VGVzdENhc2UoKTsKICAgICB9CiA8L3NjcmlwdD4KQEAgLTM1LDcgKzMyLDYgQEAKICAgICAgIFRo
aXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCBjcmVhdGVzIGEgcG9seWdvbmFsIHNo
YXBlLWluc2lkZSBhbmQgYSBtYXRjaGluZwogICAgICAgZmlsbGVkIFNWRyBwb2x5Z29uLiBUaGUg
Y29udGVudCBzaG91bGQganVzdCBmaWxsIHRoZSBzaGFwZSB3aXRoIGFsdGVybmF0aW5nIGJsYWNr
IGFuZAogICAgICAgZW1wdHkgcmVjdGFuZ2xlcyBvbiBlYWNoIGxpbmUuPC9wPgotICA8ZGl2IGlk
PSJzdWJwaXhlbC10ZXN0IiBzdHlsZT0id2lkdGg6IDQuNXB4OyBoZWlnaHQ6IDVweDsiPjwvZGl2
PgogPC9ib2R5PgogCiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUt
aW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC1leHBlY3RlZC5odG1sCmluZGV4IDdiNmNmMTM2ZDZh
MDExNzJjMjc1Mzg0NDE5MWYzZjM2MTMyODFkY2YuLmIxMDdlOTIxZDBkYTFjNTI0NmY5OTk3MzEw
MGZkZjczZGM1MmU0NjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9z
aGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC1leHBlY3RlZC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLXNpbXBsZS1wb2x5Z29uLTAwNC1leHBlY3RlZC5odG1sCkBAIC0xLDExICsxLDkgQEAKIDwh
RE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c3VicGl4ZWwtdXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
aW1wbGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lv
bnNFbmFibGVkKHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBwb2x5
Z29uIHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIEEgdmVyc2lvbiBvZiB0
aGUgMDAxCiAgICAgLy8gaG91cmdsYXNzIHNoYXBlIHdpdGggdmVydGljYWwgZWRnZXMgaW4gdGhl
IGNlbnRlci4KICAgICB2YXIgdmVydGljZXMgPSBbe3g6NDAsIHk6NDB9LCB7eDo0NDAsIHk6NDB9
LCB7eDozMjAsIHk6MTYwfSwge3g6MzIwLCB5OjI0MH0sIHt4OjQ4MCwgeTo0MDB9LCB7eDo4MCwg
eTo0MDB9LCB7eDoyMDAsIHk6MjgwfSwge3g6MjAwLCB5OjIwMH1dOwpAQCAtMTMsOCArMTEsNyBA
QAogICAgIHZhciBoYXNTdWJwaXhlbFN1cHBvcnQ7CiAKICAgICBmdW5jdGlvbiBpbml0KCkgewot
ICAgICAgICB2YXIgcmVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdWJwaXhlbC10ZXN0
IikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgICAgIGhhc1N1YnBpeGVsU3VwcG9ydCA9
IHJlY3Qud2lkdGggIT0gTWF0aC5mbG9vcihyZWN0LndpZHRoKTsKKyAgICAgICAgaGFzU3VicGl4
ZWxTdXBwb3J0ID0gc3ViUGl4ZWxMYXlvdXRFbmFibGVkKCk7CiAgICAgICAgIGNyZWF0ZVBvbHln
b25TaGFwZUluc2lkZVRlc3RDYXNlRXhwZWN0ZWQoKTsKICAgICB9CiA8L3NjcmlwdD4KQEAgLTM1
LDcgKzMyLDYgQEAKICAgICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0
IGNyZWF0ZXMgYSBwb2x5Z29uYWwgc2hhcGUtaW5zaWRlIGFuZCBhIG1hdGNoaW5nCiAgICAgICAg
IGZpbGxlZCBTVkcgcG9seWdvbi4gVGhlIGNvbnRlbnQgc2hvdWxkIGp1c3QgZmlsbCB0aGUgc2hh
cGUgd2l0aCBhbHRlcm5hdGluZyBibGFjayBhbmQKICAgICAgICAgZW1wdHkgcmVjdGFuZ2xlcyBv
biBlYWNoIGxpbmUuPC9wPgotICA8ZGl2IGlkPSJzdWJwaXhlbC10ZXN0IiBzdHlsZT0id2lkdGg6
IDQuNXB4OyBoZWlnaHQ6IDVweDsiPjwvZGl2PgogPC9ib2R5PgogCiA8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1zaW1wbGUtcG9seWdvbi0wMDQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9z
aGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC5odG1sCmluZGV4IDFk
YjVhNGQ0YWIxZDFmYjAyNGU0MjcwODg0M2MwMTAxNTY2MTQyNWUuLmRjNjQ2NjAxZDBmZTU3MDM1
NTMzMjU1MWVjNzkxYWMzNGZiM2EwZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLXNpbXBsZS1wb2x5Z29uLTAwNC5odG1sCkBAIC0xLDExICsxLDkgQEAKIDwhRE9DVFlQRSBo
dG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3VicGl4ZWwt
dXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaW1wbGUtcG9s
eWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQot
ICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVk
KHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBwb2x5Z29uIHdpdGgg
aG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIEEgdmVyc2lvbiBvZiB0aGUgMDAxCiAg
ICAgLy8gaG91cmdsYXNzIHNoYXBlIHdpdGggdmVydGljYWwgZWRnZXMgaW4gdGhlIGNlbnRlci4K
ICAgICB2YXIgdmVydGljZXMgPSBbe3g6NDAsIHk6NDB9LCB7eDo0NDAsIHk6NDB9LCB7eDozMjAs
IHk6MTYwfSwge3g6MzIwLCB5OjI0MH0sIHt4OjQ4MCwgeTo0MDB9LCB7eDo4MCwgeTo0MDB9LCB7
eDoyMDAsIHk6MjgwfSwge3g6MjAwLCB5OjIwMH1dOwpAQCAtMTMsOCArMTEsNyBAQAogICAgIHZh
ciBoYXNTdWJwaXhlbFN1cHBvcnQ7CiAKICAgICBmdW5jdGlvbiBpbml0KCkgewotICAgICAgICB2
YXIgcmVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdWJwaXhlbC10ZXN0IikuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgICAgIGhhc1N1YnBpeGVsU3VwcG9ydCA9IHJlY3Qud2lk
dGggIT0gTWF0aC5mbG9vcihyZWN0LndpZHRoKTsKKyAgICAgICAgaGFzU3VicGl4ZWxTdXBwb3J0
ID0gc3ViUGl4ZWxMYXlvdXRFbmFibGVkKCk7CiAgICAgICAgIGNyZWF0ZVBvbHlnb25TaGFwZUlu
c2lkZVRlc3RDYXNlKCk7CiAgICAgfQogPC9zY3JpcHQ+CkBAIC0zNSw3ICszMiw2IEBACiAgICAg
ICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgY3JlYXRlcyBhIHBvbHlnb25h
bCBzaGFwZS1pbnNpZGUgYW5kIGEgbWF0Y2hpbmcKICAgICAgIGZpbGxlZCBTVkcgcG9seWdvbi4g
VGhlIGNvbnRlbnQgc2hvdWxkIGp1c3QgZmlsbCB0aGUgc2hhcGUgd2l0aCBhbHRlcm5hdGluZyBi
bGFjayBhbmQKICAgICAgIGVtcHR5IHJlY3RhbmdsZXMgb24gZWFjaCBsaW5lLjwvcD4KLSAgPGRp
diBpZD0ic3VicGl4ZWwtdGVzdCIgc3R5bGU9IndpZHRoOiA0LjVweDsgaGVpZ2h0OiA1cHg7Ij48
L2Rpdj4KIDwvYm9keT4KIAogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172099</attachid>
            <date>2012-11-02 11:50:30 -0700</date>
            <delta_ts>2012-11-02 18:22:17 -0700</delta_ts>
            <desc>refactoring subpixel rounding into the .js file</desc>
            <filename>bug-100704-20121102114850.patch</filename>
            <type>text/plain</type>
            <size>24499</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjA2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDgzNDM3NDIwOTYxZWE1ZDllMTQz
ZTAyYjliMmViYjA4NzY4NmQ1Yy4uOGIwZGUwZGE4YTA0YjU2YzRkZTNmOGZmZWQ1YmJiMmJkZjlk
ZTllNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTExLTAyICBCZWFyIFRyYXZpcyAgPGJl
dHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIENsZWFuIHVwIHNo
YXBlLWluc2lkZSB0ZXN0cycgc3VicGl4ZWwgc25hcHBpbmcgY29kZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzA0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmFjdG9yIG91dCB0aGUgcGl4ZWwgc25h
cHBpbmcgYmVoYXZpb3IgZnJvbSBwb2x5Z29uIHRlc3RzIHRvIGJlIHNoYXJlZCB3aXRoCisgICAg
ICAgIHRoZSByb3VuZGVkIHJlY3RhbmdsZSB0ZXN0cy4gSW4gc3ViLXBpeGVsIGxheW91dCwgdGhl
IHJvdW5kaW5nIGJlaGF2aW9yIG1heSBiZQorICAgICAgICBzbGlnaHRseSBkaWZmZXJlbnQuIFRo
aXMgYWRkcyBhIG5ldyBmaWxlLCBzdWJwaXhlbC11dGlscy5qcywgd2hpY2ggdGVzdHMgZm9yIHRo
ZQorICAgICAgICBmZWF0dXJlIGF2YWlsYWJpbGl0eSBhbmQgcHJvdmlkZXMgZnVuY3Rpb25zIGZv
ciByb3VuZGluZyBhdCBsaW5lIGxlZnQgJiBsaW5lIHJpZ2h0LgorICAgICAgICBJJ3ZlIGFsc28g
dGFrZW4gdGhlIG9wcG9ydHVuaXR5IHRvIGZhY3RvciB0aGUgd2luZG93LmludGVybmFsLnNldHRp
bmdzIGNvZGUgaW50bworICAgICAgICByb3VuZGVkLXJlY3RhbmdsZS5qcyBhbmQgc2ltcGxlLXBv
bHlnb24uanMuCisKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3JvdW5kZWQt
cmVjdGFuZ2xlLmpzOgorICAgICAgICAoc2ltdWxhdGVTaGFwZSk6IFVzZSB0aGUgbmV3IHN1YnBp
eGVsIHJvdW5kaW5nIGNvZGUuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9z
aW1wbGUtcG9seWdvbi5qczoKKyAgICAgICAgKHBvbHlnb25YSW50ZXJjZXB0cyk6IERpdHRvLgor
ICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc3VicGl4ZWwtdXRpbHMuanM6IEFk
ZGVkLgorICAgICAgICAoU3ViUGl4ZWxMYXlvdXQpOiBBZGRpbmcgdGhlIFN1YlBpeGVsTGF5b3V0
IG9iamVjdCB3aGljaCBoYXMgaGVscGVyIG1ldGhvZHMKKyAgICAgICAgZm9yIGRldGVybWluaW5n
IGhvdyBsaW5lIGVkZ2VzIHNob3VsZCByb3VuZCwgYW5kIHdoZXRoZXIgc3VicGl4ZWwgbGF5b3V0
IGlzIGVuYWJsZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAyLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICog
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5n
bGUtMDAyLmh0bWw6CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAzLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICog
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5n
bGUtMDAzLmh0bWw6CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDA0LWV4cGVjdGVkLmh0bWw6CisgICAgICAgICog
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5n
bGUtMDA0Lmh0bWw6CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAxLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAx
Lmh0bWw6CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtc2ltcGxlLXBvbHlnb24tMDAyLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAyLmh0bWw6
CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2lt
cGxlLXBvbHlnb24tMDAzLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAzLmh0bWw6CisgICAg
ICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBv
bHlnb24tMDA0LWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDA0Lmh0bWw6CisKIDIwMTItMTEt
MDEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcmVtb3ZlIGZhaWxpbmcgZXhwZWN0YXRpb25zIGFmdGVyIHJlYmFzZWxpbmUuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3JvdW5kZWQtcmVj
dGFuZ2xlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9yb3VuZGVk
LXJlY3RhbmdsZS5qcwppbmRleCBjMDliNjQ0NzQ2MmNkMzFmODk1ZDY5NzdlMDcxOTM0M2NlOWQ0
YzVhLi44ZDZlMjhlMzM4ZDJhOTU1ODAwOTcyYTJmODgxM2U0ODkwMzA5ZTdlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3JvdW5kZWQtcmVjdGFuZ2xl
LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvcm91bmRlZC1y
ZWN0YW5nbGUuanMKQEAgLTEsMyArMSw2IEBACitpZiAod2luZG93LmludGVybmFscykKKyAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOwor
CiBmdW5jdGlvbiB4RnJvbUVsbGlwc2VDZW50ZXIoeUZyb21FbGxpcHNlQ2VudGVyLCByYWRpdXNY
LCByYWRpdXNZKSB7CiAgICAgcmV0dXJuIHJhZGl1c1ggKiBNYXRoLnNxcnQoMSAtIE1hdGgucG93
KHlGcm9tRWxsaXBzZUNlbnRlciAvIHJhZGl1c1ksIDIpKTsKIH0KQEAgLTUyLDEyICs1NSwxMiBA
QCBmdW5jdGlvbiBzaW11bGF0ZVNoYXBlKGVsZW1lbnRJZCwgc3R5bGVzaGVldCwgZGltZW5zaW9u
cywgbGluZUhlaWdodCkgewogCiAgICAgICAgIHZhciBwYWRkaW5nTGVmdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBwYWRkaW5nTGVmdC5zZXRBdHRyaWJ1dGUoImNs
YXNzIiwgImZsb2F0IGxlZnQiKTsKLSAgICAgICAgcGFkZGluZ0xlZnQuc3R5bGUud2lkdGggPSBk
aW1lbnNpb25zLnNoYXBlWCArIGluc2V0ICsgInB4IjsKKyAgICAgICAgcGFkZGluZ0xlZnQuc3R5
bGUud2lkdGggPSBTdWJQaXhlbExheW91dC5yb3VuZExpbmVMZWZ0KGRpbWVuc2lvbnMuc2hhcGVY
ICsgaW5zZXQpICsgInB4IjsKICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChwYWRkaW5nTGVm
dCk7CiAKICAgICAgICAgdmFyIHBhZGRpbmdSaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogICAgICAgICBwYWRkaW5nUmlnaHQuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJmbG9h
dCByaWdodCIpOwotICAgICAgICBwYWRkaW5nUmlnaHQuc3R5bGUud2lkdGggPSBNYXRoLmZsb29y
KChkaW1lbnNpb25zLndpZHRoIC0gZGltZW5zaW9ucy5zaGFwZVdpZHRoIC0gZGltZW5zaW9ucy5z
aGFwZVgpICsgaW5zZXQpICsgInB4IjsKKyAgICAgICAgcGFkZGluZ1JpZ2h0LnN0eWxlLndpZHRo
ID0gU3ViUGl4ZWxMYXlvdXQucm91bmRMaW5lUmlnaHQoKGRpbWVuc2lvbnMud2lkdGggLSBkaW1l
bnNpb25zLnNoYXBlV2lkdGggLSBkaW1lbnNpb25zLnNoYXBlWCkgKyBpbnNldCkgKyAicHgiOwog
ICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHBhZGRpbmdSaWdodCk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9zaW1wbGUtcG9s
eWdvbi5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc2ltcGxlLXBv
bHlnb24uanMKaW5kZXggOGU4YTk4ZGYzZGUxYjc1MjVhOTMyMWM1ZGYyMzQ1MzhlMGEyYzczYi4u
N2Y1YzI3NTcyOWVkYzk4YWVjYmY1ZTZmYjk3MWE2N2E2YzVmYThlOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9zaW1wbGUtcG9seWdvbi5qcworKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3NpbXBsZS1wb2x5Z29uLmpz
CkBAIC0xLDUgKzEsNyBAQAogLy8gVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGludGVu
ZGVkIHRvIGJlIHVzZWQgdG8gdGVzdCBub24tY29tcGxleCBwb2x5Z29ucwogLy8gd2hlcmUgaG9y
aXpvbnRhbCBsaW5lcyB0aGF0IG92ZXJsYXAgdGhlIHBvbHlnb24gb25seSBjcm9zcyB0aGUgcG9s
eWdvbiB0d2ljZS4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7CiAKIGZ1bmN0aW9uIGNyZWF0
ZVBvbHlnb24odmVydGljZXMpIHsKICAgICB2YXIgeENvb3JkaW5hdGVzID0gdmVydGljZXMubWFw
KCBmdW5jdGlvbihwKSB7IHJldHVybiBwLng7IH0gKTsKQEAgLTMzLDEwICszNSw2IEBAIGZ1bmN0
aW9uIGNyZWF0ZVJlZ3VsYXJQb2x5Z29uVmVydGljZXMoc2l6ZSwgblNpZGVzKQogICAgIHJldHVy
biB2ZXJ0aWNlczsKIH0KIAotZnVuY3Rpb24gc3VicGl4ZWxSb3VuZChmKSB7IAotICAgIHJldHVy
biBNYXRoLmZsb29yKCFoYXNTdWJwaXhlbFN1cHBvcnQgPyBmIDogKE1hdGguZmxvb3IoZiAqIDY0
KSArIDMyKSAvIDY0KTsgIC8vIHNlZSBGcmFjdGlvbkxheW91dFVuaXQ6OnJvdW5kKCkKLX0KLQog
Ly8gUmV0dXJuIHR3byBYIGludGVyY2VwdHMgb2YgdGhlIGhvcml6b250YWwgbGluZSBhdCB5LiBX
ZSdyZSBhc3N1bWluZyB0aGF0IHRoZSBwb2x5Z29uCiAvLyBoYXMgMCBvciAyIGludGVyY2VwdHMg
Zm9yIGFsbCB5LiBPZiBjb3Vyc2UgdGhpcyBpc24ndCB0cnVlIGZvciBwb2x5Z29ucyBpbiBnZW5l
cmFsLAogLy8ganVzdCB0aGUgb25lcyB1c2VkIGJ5IHRoZSB0ZXN0IGNhc2VzIHN1cHBvcnRlZCBi
eSB0aGlzIGZpbGUuCkBAIC05MSw3ICs4OSw3IEBAIGZ1bmN0aW9uIHBvbHlnb25YSW50ZXJjZXB0
cyhwb2x5Z29uLCB5KSB7CiAgICAgaWYgKCFmb3VuZFhJbnRlcmNlcHQpCiAgICAgICAgIHJldHVy
biBbXTsKIAotICAgIHJldHVybiBbc3VicGl4ZWxSb3VuZChpbnRlcmNlcHRzTWluWCksIE1hdGgu
Zmxvb3IoaW50ZXJjZXB0c01heFgpXTsKKyAgICByZXR1cm4gW1N1YlBpeGVsTGF5b3V0LnJvdW5k
TGluZUxlZnQoaW50ZXJjZXB0c01pblgpLCBTdWJQaXhlbExheW91dC5yb3VuZExpbmVSaWdodChp
bnRlcmNlcHRzTWF4WCldOwogfQogCiBmdW5jdGlvbiBwb2x5Z29uTGluZUludGVyY2VwdHMocG9s
eWdvbiwgeSwgbGluZUhlaWdodCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3Jlc291cmNlcy9zdWJwaXhlbC11dGlscy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9yZXNvdXJjZXMvc3VicGl4ZWwtdXRpbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdiZGRkMzI0
MjczZDAwZGI4NmMzYTQzYmJmZmM2ZGQxNjIwZWMyZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc3VicGl4ZWwtdXRpbHMuanMKQEAgLTAs
MCArMSwyNiBAQAordmFyIFN1YlBpeGVsTGF5b3V0ID0gKGZ1bmN0aW9uKCkgeworICAgIHZhciBf
c3ViUGl4ZWxMYXlvdXQgPSBudWxsOworICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RP
TUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGVsZW0gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZWxlbS5zdHlsZS5zZXRQcm9wZXJ0eSgn
d2lkdGgnLCAnNC41cHgnKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVt
KTsKKyAgICAgICAgdmFyIGJvdW5kcyA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Cisg
ICAgICAgIF9zdWJQaXhlbExheW91dCA9ICAoYm91bmRzLndpZHRoICE9IE1hdGguZmxvb3IoYm91
bmRzLndpZHRoKSk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbSk7Cisg
ICAgfSk7CisgICAgcmV0dXJuIHsKKyAgICAgICAgcm91bmRMaW5lTGVmdDogZnVuY3Rpb24oZikg
eworICAgICAgICAgICAgaWYgKCFfc3ViUGl4ZWxMYXlvdXQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIE1hdGguZmxvb3IoZik7CisgICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigoTWF0aC5m
bG9vcihmICogNjQpICsgMzIpIC8gNjQpOyAvLyBzZWUgRnJhY3Rpb25MYXlvdXRVbml0Ojpyb3Vu
ZCgpCisgICAgICAgIH0sCisgICAgICAgIHJvdW5kTGluZVJpZ2h0OiBmdW5jdGlvbihmKSB7Cisg
ICAgICAgICAgICBpZiAoIV9zdWJQaXhlbExheW91dCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
TWF0aC5mbG9vcihmKTsKKyAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGguZmxvb3Io
ZiAqIDY0KSAvIDY0KTsgLy8gc2VlIEZyYWN0aW9uTGF5b3V0VW5pdDo6Zmxvb3IoKQorICAgICAg
ICB9LAorICAgICAgICBpc1N1YlBpeGVsTGF5b3V0RW5hYmxlZDogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICByZXR1cm4gX3N1YlBpeGVsTGF5b3V0OworICAgICAgICB9CisgICAgfQorfSgpKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0w
MDItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwMi1leHBlY3RlZC5odG1sCmluZGV4
IDY4ZTk2MzI5NzQ0YjM4NjViZmE0YjM1YWE5YjdhODMzMmFhNDVmYjEuLjdkZjBmNWQ3N2IzMDdj
NTM2MTA5Mjg5NzIwZjIzNzI1MTFlOGMxMDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAw
Mi1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwMi1leHBlY3RlZC5odG1sCkBA
IC0xLDYgKzEsNyBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9zdWJwaXhlbC11dGlscy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3JvdW5kZWQtcmVjdGFuZ2xlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+
CiAgICAgZnVuY3Rpb24gY3JlYXRlU2ltdWxhdGVkU2hhcGVFbGVtZW50KCkgewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
cm91bmRlZC1yZWN0YW5nbGUtMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDIuaHRtbAppbmRl
eCBmZWQ5NDkyMjI4ZmUyM2ExYTNlOWUzYjFkYzEyODRhYjczMTk3NGM4Li41ZjkwMWJiZTE5NTJm
Y2Y2MmExN2ZmZGU0ZjkwMjc5OGRiMTE0YmJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0w
MDIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDIuaHRtbApAQCAtMyw5ICszLDYgQEAKIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9yb3VuZGVkLXJlY3RhbmdsZS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOwotCiAg
ICAgZnVuY3Rpb24gY3JlYXRlU2hhcGVFbGVtZW50KCkgewogICAgICAgICB2YXIgc3R5bGVzaGVl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdHlsZXNoZWV0Iik7CiAgICAgICAgIHZhciBk
aW1lbnNpb25zID0geyAgd2lkdGg6IDIwMCwgaGVpZ2h0OiAzMDAsCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVk
LXJlY3RhbmdsZS0wMDMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwMy1leHBlY3Rl
ZC5odG1sCmluZGV4IDE0NThlYzU3N2Q5OWRlYzIwZWFmZDdjNjI0ODIxNjYxZGVhOTdhNzguLmQ2
MDA4OWU5OWVhNTAzNTM3OGJiOGY3MmU0MTUyZTZjZTIyYTI0ZDggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQt
cmVjdGFuZ2xlLTAwMy1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwMy1leHBl
Y3RlZC5odG1sCkBAIC0xLDYgKzEsNyBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdWJwaXhlbC11dGlscy5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JvdW5kZWQtcmVjdGFuZ2xlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gY3JlYXRlU2ltdWxhdGVkU2hhcGVFbGVtZW50KCkg
ewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDAzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0w
MDMuaHRtbAppbmRleCA5MzI4MzhjZThjNzk4YmVkY2U2OTA0YTM5MzNkYWQyOTA1Nzk2ZDc2Li45
ZmVhYTc5N2M1MmM4OThmMWJmMGQxZmE4N2U0MTBhM2Q0ZDU1NzhjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVk
LXJlY3RhbmdsZS0wMDMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDMuaHRtbApAQCAtMyw5
ICszLDYgQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9yb3VuZGVkLXJlY3Rh
bmdsZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQot
ICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVk
KHRydWUpOwotCiAgICAgZnVuY3Rpb24gY3JlYXRlU2hhcGVFbGVtZW50KCkgewogICAgICAgICB2
YXIgc3R5bGVzaGVldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdHlsZXNoZWV0Iik7CiAg
ICAgICAgIHZhciBkaW1lbnNpb25zID0geyAgd2lkdGg6IDQwMCwgaGVpZ2h0OiA2MDAsCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWlu
c2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xl
LTAwNC1leHBlY3RlZC5odG1sCmluZGV4IDBjM2U5MmI4MmI0NTRjMzI0Njk2NzQwNGQxM2Y2ZjBm
OWNhZTVlNWEuLmJjMzEwNDlhZmU4OWNkNDE1ODczNzA2NmRiYTZlNTZmMDk0ZjA2MDAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLXJvdW5kZWQtcmVjdGFuZ2xlLTAwNC1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFu
Z2xlLTAwNC1leHBlY3RlZC5odG1sCkBAIC0xLDYgKzEsNyBAQAogPCFET0NUWVBFIGh0bWw+CiA8
aHRtbD4KIDxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdWJwaXhlbC11dGlscy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JvdW5kZWQtcmVjdGFuZ2xl
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gY3JlYXRlU2ltdWxhdGVkU2hh
cGVFbGVtZW50KCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtMDA0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVk
LXJlY3RhbmdsZS0wMDQuaHRtbAppbmRleCBkYjEwMjJjNmQzMmU0MTZiZDgxZjgzYjYwOWY3YTQz
ZDU1Mzc1NmY2Li5jZGYwODc3YWMzNjMwMjM4MmU5NjNkZjFkZTczYmZjMDhmZjhmMzY1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWlu
c2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS0wMDQu
aHRtbApAQCAtMyw5ICszLDYgQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9y
b3VuZGVkLXJlY3RhbmdsZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1
c2lvbnNFbmFibGVkKHRydWUpOwotCiAgICAgZnVuY3Rpb24gY3JlYXRlU2hhcGVFbGVtZW50KCkg
ewogICAgICAgICB2YXIgc3R5bGVzaGVldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdHls
ZXNoZWV0Iik7CiAgICAgICAgIHZhciBkaW1lbnNpb25zID0geyAgd2lkdGg6IDcwMCwgaGVpZ2h0
OiA1MDAsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5z
aWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDEtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1w
b2x5Z29uLTAwMS1leHBlY3RlZC5odG1sCmluZGV4IGY0ZjliNDI4NDQ3ZTNhNjIxOWI2YTJhMWIz
NmU3N2JlMWE4ODA3MzUuLjEzZDU4ZjliZGY4MjU2YjZmYzY4MmUyNzlkMjZlNmFlNGRlZjAyNzcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwMS1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5
Z29uLTAwMS1leHBlY3RlZC5odG1sCkBAIC0xLDE5ICsxLDE0IEBACiA8IURPQ1RZUEUgaHRtbD4K
IDxodG1sPgogPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N1YnBpeGVsLXV0aWxz
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24u
anMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAg
ICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVl
KTsKLQogICAgIC8vIENvbmNhdmUgYXNzeW1ldHJpYyBzaW1wbGUgcG9seWdvbiB3aXRoIGhvcml6
b250YWwgdG9wIGFuZCBib3R0b20gZWRnZXMuICBSb3VnaGx5IGFuIGhvdXJnbGFzcyBzaGFwZS4K
ICAgICB2YXIgdmVydGljZXMgPSBbe3g6NDAsIHk6NDB9LCB7eDo0NDAsIHk6NDB9LCB7eDozMjAs
IHk6MTYwfSwge3g6NDgwLCB5OjMyMH0sIHt4OjgwLCB5OjMyMH0sIHt4OjIwMCwgeToyMDB9XTsK
ICAgICB2YXIgbGluZUhlaWdodCA9IDQwOwotICAgIHZhciBoYXNTdWJwaXhlbFN1cHBvcnQ7CiAK
ICAgICBmdW5jdGlvbiBpbml0KCkgewotICAgICAgICB2YXIgcmVjdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzdWJwaXhlbC10ZXN0IikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAg
ICAgIGhhc1N1YnBpeGVsU3VwcG9ydCA9IHJlY3Qud2lkdGggIT0gTWF0aC5mbG9vcihyZWN0Lndp
ZHRoKTsKICAgICAgICAgY3JlYXRlUG9seWdvblNoYXBlSW5zaWRlVGVzdENhc2VFeHBlY3RlZCgp
OwogICAgIH0KIDwvc2NyaXB0PgpAQCAtMzQsNyArMjksNiBAQAogICAgICAgVGhpcyB0ZXN0IHJl
cXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IGNyZWF0ZXMgYSBwb2x5Z29uYWwgc2hhcGUtaW5zaWRl
IGFuZCBhIG1hdGNoaW5nCiAgICAgICBmaWxsZWQgU1ZHIHBvbHlnb24uIFRoZSBjb250ZW50IHNo
b3VsZCBqdXN0IGZpbGwgdGhlIHNoYXBlIHdpdGggYWx0ZXJuYXRpbmcgYmxhY2sgYW5kCiAgICAg
ICBlbXB0eSByZWN0YW5nbGVzIG9uIGVhY2ggbGluZS48L3A+Ci0gIDxkaXYgaWQ9InN1YnBpeGVs
LXRlc3QiIHN0eWxlPSJ3aWR0aDogNC41cHg7IGhlaWdodDogNXB4OyI+PC9kaXY+CiA8L2JvZHk+
CiAKIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwMS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHln
b24tMDAxLmh0bWwKaW5kZXggNjMyYzRjZWUyNDQyZjY1OGRmZThiM2VhM2NhMDI2MjFiMTAwNzBl
NC4uZjBkY2E0NDdmZDZiZTBmYjgxYmJiYTU4Nzc1MTM1N2Q0NzdmMDQxNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2lt
cGxlLXBvbHlnb24tMDAxLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAxLmh0bWwKQEAgLTEsMTkg
KzEsMTQgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvc3VicGl4ZWwtdXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9zaW1wbGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNl
dENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmlj
IHNpbXBsZSBwb2x5Z29uIHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIFJv
dWdobHkgYW4gaG91cmdsYXNzIHNoYXBlLgogICAgIHZhciB2ZXJ0aWNlcyA9IFt7eDo0MCwgeTo0
MH0sIHt4OjQ0MCwgeTo0MH0sIHt4OjMyMCwgeToxNjB9LCB7eDo0ODAsIHk6MzIwfSwge3g6ODAs
IHk6MzIwfSwge3g6MjAwLCB5OjIwMH1dOwogICAgIHZhciBsaW5lSGVpZ2h0ID0gNDA7Ci0gICAg
dmFyIGhhc1N1YnBpeGVsU3VwcG9ydDsKIAogICAgIGZ1bmN0aW9uIGluaXQoKSB7Ci0gICAgICAg
IHZhciByZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1YnBpeGVsLXRlc3QiKS5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgaGFzU3VicGl4ZWxTdXBwb3J0ID0gcmVjdC53
aWR0aCAhPSBNYXRoLmZsb29yKHJlY3Qud2lkdGgpOwogICAgICAgICBjcmVhdGVQb2x5Z29uU2hh
cGVJbnNpZGVUZXN0Q2FzZSgpOwogICAgIH0KIDwvc2NyaXB0PgpAQCAtMzQsNyArMjksNiBAQAog
ICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IGNyZWF0ZXMgYSBwb2x5
Z29uYWwgc2hhcGUtaW5zaWRlIGFuZCBhIG1hdGNoaW5nCiAgICAgICBmaWxsZWQgU1ZHIHBvbHln
b24uIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGZpbGwgdGhlIHNoYXBlIHdpdGggYWx0ZXJuYXRp
bmcgYmxhY2sgYW5kCiAgICAgICBlbXB0eSByZWN0YW5nbGVzIG9uIGVhY2ggbGluZS48L3A+Ci0g
IDxkaXYgaWQ9InN1YnBpeGVsLXRlc3QiIHN0eWxlPSJ3aWR0aDogNC41cHg7IGhlaWdodDogNXB4
OyI+PC9kaXY+CiA8L2JvZHk+CiAKIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAw
Mi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAyLWV4cGVjdGVkLmh0bWwKaW5kZXggMzM3
MDUyZTg3NjBjNzY1Nzg5Njg0NjJjMDA3ZTM0YTQ5ZDdhOWY3NC4uZmQ2NjNhYzc4OTViYWIzOWRj
ODlmODAzM2UyZTFkNmRlNDRlZmM3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAyLWV4cGVj
dGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAyLWV4cGVjdGVkLmh0bWwKQEAgLTEsMjAgKzEs
MTUgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc3VicGl4ZWwtdXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zaW1wbGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENT
U0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNp
bXBsZSBwb2x5Z29uIHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIFNpbWls
YXIgdG8gdGVzdCAwMDEKICAgICAvLyBidXQgd2l0aCBhIHJpZ2h0IHJpZ2h0IGVkZ2UuCiAgICAg
dmFyIHZlcnRpY2VzID0gW3t4OjQwLCB5OjQwfSwge3g6NDQwLCB5OjQwfSwge3g6NDgwLCB5OjMy
MH0sIHt4OjgwLCB5OjMyMH0sIHt4OjIwMCwgeToyMDB9XTsKICAgICB2YXIgbGluZUhlaWdodCA9
IDQwOwotICAgIHZhciBoYXNTdWJwaXhlbFN1cHBvcnQ7CiAKICAgICBmdW5jdGlvbiBpbml0KCkg
ewotICAgICAgICB2YXIgcmVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdWJwaXhlbC10
ZXN0IikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgICAgIGhhc1N1YnBpeGVsU3VwcG9y
dCA9IHJlY3Qud2lkdGggIT0gTWF0aC5mbG9vcihyZWN0LndpZHRoKTsKICAgICAgICAgY3JlYXRl
UG9seWdvblNoYXBlSW5zaWRlVGVzdENhc2VFeHBlY3RlZCgpOwogICAgIH0KIDwvc2NyaXB0PgpA
QCAtMzUsNyArMzAsNiBAQAogICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQu
IEl0IGNyZWF0ZXMgYSBwb2x5Z29uYWwgc2hhcGUtaW5zaWRlIGFuZCBhIG1hdGNoaW5nCiAgICAg
ICBmaWxsZWQgU1ZHIHBvbHlnb24uIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGZpbGwgdGhlIHNo
YXBlIHdpdGggYWx0ZXJuYXRpbmcgYmxhY2sgYW5kCiAgICAgICBlbXB0eSByZWN0YW5nbGVzIG9u
IGVhY2ggbGluZS48L3A+Ci0gIDxkaXYgaWQ9InN1YnBpeGVsLXRlc3QiIHN0eWxlPSJ3aWR0aDog
NC41cHg7IGhlaWdodDogNXB4OyI+PC9kaXY+CiA8L2JvZHk+CiAKIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LXNpbXBsZS1wb2x5Z29uLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAyLmh0bWwKaW5kZXggZDNk
ZjcwZDRhOThjNGIzNzc1ZDdiOWFkNDFhMzIxY2EzNDgwMzFlOS4uZWRhMDI2MWI4MmFkNjM2MTc5
ZDFhNmU3YjlkNDExZTdlNTFhMTg2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAyLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtc2ltcGxlLXBvbHlnb24tMDAyLmh0bWwKQEAgLTEsMjAgKzEsMTUgQEAKIDwhRE9DVFlQRSBo
dG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3VicGl4ZWwt
dXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaW1wbGUtcG9s
eWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQot
ICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVk
KHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBwb2x5Z29uIHdpdGgg
aG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIFNpbWlsYXIgdG8gdGVzdCAwMDEgCiAg
ICAgLy8gYnV0IHdpdGggYSBzaW5nbGUgcmlnaHQgZWRnZS4KICAgICB2YXIgdmVydGljZXMgPSBb
e3g6NDAsIHk6NDB9LCB7eDo0NDAsIHk6NDB9LCB7eDo0ODAsIHk6MzIwfSwge3g6ODAsIHk6MzIw
fSwge3g6MjAwLCB5OjIwMH1dOwogICAgIHZhciBsaW5lSGVpZ2h0ID0gNDA7Ci0gICAgdmFyIGhh
c1N1YnBpeGVsU3VwcG9ydDsKIAogICAgIGZ1bmN0aW9uIGluaXQoKSB7Ci0gICAgICAgIHZhciBy
ZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1YnBpeGVsLXRlc3QiKS5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKTsKLSAgICAgICAgaGFzU3VicGl4ZWxTdXBwb3J0ID0gcmVjdC53aWR0aCAh
PSBNYXRoLmZsb29yKHJlY3Qud2lkdGgpOwogICAgICAgICBjcmVhdGVQb2x5Z29uU2hhcGVJbnNp
ZGVUZXN0Q2FzZSgpOwogICAgIH0KIDwvc2NyaXB0PgpAQCAtMzUsNyArMzAsNiBAQAogICAgICAg
VGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IGNyZWF0ZXMgYSBwb2x5Z29uYWwg
c2hhcGUtaW5zaWRlIGFuZCBhIG1hdGNoaW5nCiAgICAgICBmaWxsZWQgU1ZHIHBvbHlnb24uIFRo
ZSBjb250ZW50IHNob3VsZCBqdXN0IGZpbGwgdGhlIHNoYXBlIHdpdGggYWx0ZXJuYXRpbmcgYmxh
Y2sgYW5kCiAgICAgICBlbXB0eSByZWN0YW5nbGVzIG9uIGVhY2ggbGluZS48L3A+Ci0gIDxkaXYg
aWQ9InN1YnBpeGVsLXRlc3QiIHN0eWxlPSJ3aWR0aDogNC41cHg7IGhlaWdodDogNXB4OyI+PC9k
aXY+CiA8L2JvZHk+CiAKIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwMy1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAzLWV4cGVjdGVkLmh0bWwKaW5kZXggY2E1MzE1NzEx
OGVlNWJjNDBlYmQ3MzA2MGUyNzE0NjU2YjA1NWI5Ny4uODNkN2Y3ZDQzYjc4NWU4ZWYxZDBiM2Fj
OGZmNGM5MTM3ZjE3YjcwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAzLWV4cGVjdGVkLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtc2ltcGxlLXBvbHlnb24tMDAzLWV4cGVjdGVkLmh0bWwKQEAgLTEsMjAgKzEsMTUgQEAK
IDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc3VicGl4ZWwtdXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9zaW1wbGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQotICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1
c2lvbnNFbmFibGVkKHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBw
b2x5Z29uIHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIFNpbWlsYXIgdG8g
dGVzdCAwMDEKICAgICAvLyB3aXRoIGEgdmVydGljYWwgbGVmdCBlZGdlLgogICAgIHZhciB2ZXJ0
aWNlcyA9IFt7eDo0MCwgeTo0MH0sIHt4OjQ0MCwgeTo0MH0sIHt4OjMyMCwgeToxNjB9LCB7eDo0
ODAsIHk6MzIwfSwge3g6NDAsIHk6MzIwfV07CiAgICAgdmFyIGxpbmVIZWlnaHQgPSA0MDsKLSAg
ICB2YXIgaGFzU3VicGl4ZWxTdXBwb3J0OwogCiAgICAgZnVuY3Rpb24gaW5pdCgpIHsKLSAgICAg
ICAgdmFyIHJlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VicGl4ZWwtdGVzdCIpLmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICBoYXNTdWJwaXhlbFN1cHBvcnQgPSByZWN0
LndpZHRoICE9IE1hdGguZmxvb3IocmVjdC53aWR0aCk7CiAgICAgICAgIGNyZWF0ZVBvbHlnb25T
aGFwZUluc2lkZVRlc3RDYXNlRXhwZWN0ZWQoKTsKICAgICB9CiA8L3NjcmlwdD4KQEAgLTM1LDcg
KzMwLDYgQEAKICAgICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IGNy
ZWF0ZXMgYSBwb2x5Z29uYWwgc2hhcGUtaW5zaWRlIGFuZCBhIG1hdGNoaW5nCiAgICAgICAgIGZp
bGxlZCBTVkcgcG9seWdvbi4gVGhlIGNvbnRlbnQgc2hvdWxkIGp1c3QgZmlsbCB0aGUgc2hhcGUg
d2l0aCBhbHRlcm5hdGluZyBibGFjayBhbmQKICAgICAgICAgZW1wdHkgcmVjdGFuZ2xlcyBvbiBl
YWNoIGxpbmUuPC9wPgotICAgIDxkaXYgaWQ9InN1YnBpeGVsLXRlc3QiIHN0eWxlPSJ3aWR0aDog
NC41cHg7IGhlaWdodDogNXB4OyI+PC9kaXY+CiA8L2JvZHk+CiAKIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LXNpbXBsZS1wb2x5Z29uLTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAzLmh0bWwKaW5kZXggMDI5
NDk5N2RlZDI2ZDg1ZTYzZGE2OTRhZDU2ODIxYWVmNTYzZmEwNS4uYTRjNTE3N2FiNzU0MzkwNzdk
NjkwNGM1NTcxMjE1MGQzZThiZGVkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDAzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtc2ltcGxlLXBvbHlnb24tMDAzLmh0bWwKQEAgLTEsMjAgKzEsMTUgQEAKIDwhRE9DVFlQRSBo
dG1sPgogPGh0bWw+CiA8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3VicGl4ZWwt
dXRpbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaW1wbGUtcG9s
eWdvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQot
ICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVk
KHRydWUpOwotCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBwb2x5Z29uIHdpdGgg
aG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIFNpbWlsYXIgdG8gdGVzdCAwMDEKICAg
ICAvLyB3aXRoIGEgdmVydGljYWwgbGVmdCBlZGdlLgogICAgIHZhciB2ZXJ0aWNlcyA9IFt7eDo0
MCwgeTo0MH0sIHt4OjQ0MCwgeTo0MH0sIHt4OjMyMCwgeToxNjB9LCB7eDo0ODAsIHk6MzIwfSwg
e3g6NDAsIHk6MzIwfV07CiAgICAgdmFyIGxpbmVIZWlnaHQgPSA0MDsKLSAgICB2YXIgaGFzU3Vi
cGl4ZWxTdXBwb3J0OwogCiAgICAgZnVuY3Rpb24gaW5pdCgpIHsKLSAgICAgICAgdmFyIHJlY3Qg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VicGl4ZWwtdGVzdCIpLmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpOwotICAgICAgICBoYXNTdWJwaXhlbFN1cHBvcnQgPSByZWN0LndpZHRoICE9IE1h
dGguZmxvb3IocmVjdC53aWR0aCk7CiAgICAgICAgIGNyZWF0ZVBvbHlnb25TaGFwZUluc2lkZVRl
c3RDYXNlKCk7CiAgICAgfQogPC9zY3JpcHQ+CkBAIC0zNSw3ICszMCw2IEBACiAgICAgICBUaGlz
IHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgY3JlYXRlcyBhIHBvbHlnb25hbCBzaGFw
ZS1pbnNpZGUgYW5kIGEgbWF0Y2hpbmcKICAgICAgIGZpbGxlZCBTVkcgcG9seWdvbi4gVGhlIGNv
bnRlbnQgc2hvdWxkIGp1c3QgZmlsbCB0aGUgc2hhcGUgd2l0aCBhbHRlcm5hdGluZyBibGFjayBh
bmQKICAgICAgIGVtcHR5IHJlY3RhbmdsZXMgb24gZWFjaCBsaW5lLjwvcD4KLSAgPGRpdiBpZD0i
c3VicGl4ZWwtdGVzdCIgc3R5bGU9IndpZHRoOiA0LjVweDsgaGVpZ2h0OiA1cHg7Ij48L2Rpdj4K
IDwvYm9keT4KIAogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDA0LWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWlu
c2lkZS1zaW1wbGUtcG9seWdvbi0wMDQtZXhwZWN0ZWQuaHRtbAppbmRleCA3YjZjZjEzNmQ2YTAx
MTcyYzI3NTM4NDQxOTFmM2YzNjEzMjgxZGNmLi4yMDU0NGJlMTA5YjYyZjUzYmNlZmM1NWRjNDU2
NTE5YjJjZGJiOTcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQtZXhwZWN0ZWQuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1zaW1wbGUtcG9seWdvbi0wMDQtZXhwZWN0ZWQuaHRtbApAQCAtMSwyMCArMSwxNSBAQAogPCFE
T0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
dWJwaXhlbC11dGlscy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Np
bXBsZS1wb2x5Z29uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCi0gICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9u
c0VuYWJsZWQodHJ1ZSk7Ci0KICAgICAvLyBDb25jYXZlIGFzc3ltZXRyaWMgc2ltcGxlIHBvbHln
b24gd2l0aCBob3Jpem9udGFsIHRvcCBhbmQgYm90dG9tIGVkZ2VzLiAgQSB2ZXJzaW9uIG9mIHRo
ZSAwMDEKICAgICAvLyBob3VyZ2xhc3Mgc2hhcGUgd2l0aCB2ZXJ0aWNhbCBlZGdlcyBpbiB0aGUg
Y2VudGVyLgogICAgIHZhciB2ZXJ0aWNlcyA9IFt7eDo0MCwgeTo0MH0sIHt4OjQ0MCwgeTo0MH0s
IHt4OjMyMCwgeToxNjB9LCB7eDozMjAsIHk6MjQwfSwge3g6NDgwLCB5OjQwMH0sIHt4OjgwLCB5
OjQwMH0sIHt4OjIwMCwgeToyODB9LCB7eDoyMDAsIHk6MjAwfV07CiAgICAgdmFyIGxpbmVIZWln
aHQgPSA0MDsKLSAgICB2YXIgaGFzU3VicGl4ZWxTdXBwb3J0OwogCiAgICAgZnVuY3Rpb24gaW5p
dCgpIHsKLSAgICAgICAgdmFyIHJlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VicGl4
ZWwtdGVzdCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICBoYXNTdWJwaXhlbFN1
cHBvcnQgPSByZWN0LndpZHRoICE9IE1hdGguZmxvb3IocmVjdC53aWR0aCk7CiAgICAgICAgIGNy
ZWF0ZVBvbHlnb25TaGFwZUluc2lkZVRlc3RDYXNlRXhwZWN0ZWQoKTsKICAgICB9CiA8L3Njcmlw
dD4KQEAgLTM1LDcgKzMwLDYgQEAKICAgICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVt
IGZvbnQuIEl0IGNyZWF0ZXMgYSBwb2x5Z29uYWwgc2hhcGUtaW5zaWRlIGFuZCBhIG1hdGNoaW5n
CiAgICAgICAgIGZpbGxlZCBTVkcgcG9seWdvbi4gVGhlIGNvbnRlbnQgc2hvdWxkIGp1c3QgZmls
bCB0aGUgc2hhcGUgd2l0aCBhbHRlcm5hdGluZyBibGFjayBhbmQKICAgICAgICAgZW1wdHkgcmVj
dGFuZ2xlcyBvbiBlYWNoIGxpbmUuPC9wPgotICA8ZGl2IGlkPSJzdWJwaXhlbC10ZXN0IiBzdHls
ZT0id2lkdGg6IDQuNXB4OyBoZWlnaHQ6IDVweDsiPjwvZGl2PgogPC9ib2R5PgogCiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC5odG1s
CmluZGV4IDFkYjVhNGQ0YWIxZDFmYjAyNGU0MjcwODg0M2MwMTAxNTY2MTQyNWUuLjBlMDAxNzgy
ODM2N2U5YmRiYTQ4MTI3ODg2ODE1MTQ3ZmQyMjhmNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29u
LTAwNC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC5odG1sCkBAIC0xLDIwICsxLDE1IEBACiA8
IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3N1YnBpeGVsLXV0aWxzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c2ltcGxlLXBvbHlnb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93Lmlu
dGVybmFscykKLSAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNp
b25zRW5hYmxlZCh0cnVlKTsKLQogICAgIC8vIENvbmNhdmUgYXNzeW1ldHJpYyBzaW1wbGUgcG9s
eWdvbiB3aXRoIGhvcml6b250YWwgdG9wIGFuZCBib3R0b20gZWRnZXMuICBBIHZlcnNpb24gb2Yg
dGhlIDAwMQogICAgIC8vIGhvdXJnbGFzcyBzaGFwZSB3aXRoIHZlcnRpY2FsIGVkZ2VzIGluIHRo
ZSBjZW50ZXIuCiAgICAgdmFyIHZlcnRpY2VzID0gW3t4OjQwLCB5OjQwfSwge3g6NDQwLCB5OjQw
fSwge3g6MzIwLCB5OjE2MH0sIHt4OjMyMCwgeToyNDB9LCB7eDo0ODAsIHk6NDAwfSwge3g6ODAs
IHk6NDAwfSwge3g6MjAwLCB5OjI4MH0sIHt4OjIwMCwgeToyMDB9XTsKICAgICB2YXIgbGluZUhl
aWdodCA9IDQwOwotICAgIHZhciBoYXNTdWJwaXhlbFN1cHBvcnQ7CiAKICAgICBmdW5jdGlvbiBp
bml0KCkgewotICAgICAgICB2YXIgcmVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdWJw
aXhlbC10ZXN0IikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgICAgIGhhc1N1YnBpeGVs
U3VwcG9ydCA9IHJlY3Qud2lkdGggIT0gTWF0aC5mbG9vcihyZWN0LndpZHRoKTsKICAgICAgICAg
Y3JlYXRlUG9seWdvblNoYXBlSW5zaWRlVGVzdENhc2UoKTsKICAgICB9CiA8L3NjcmlwdD4KQEAg
LTM1LDcgKzMwLDYgQEAKICAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJ
dCBjcmVhdGVzIGEgcG9seWdvbmFsIHNoYXBlLWluc2lkZSBhbmQgYSBtYXRjaGluZwogICAgICAg
ZmlsbGVkIFNWRyBwb2x5Z29uLiBUaGUgY29udGVudCBzaG91bGQganVzdCBmaWxsIHRoZSBzaGFw
ZSB3aXRoIGFsdGVybmF0aW5nIGJsYWNrIGFuZAogICAgICAgZW1wdHkgcmVjdGFuZ2xlcyBvbiBl
YWNoIGxpbmUuPC9wPgotICA8ZGl2IGlkPSJzdWJwaXhlbC10ZXN0IiBzdHlsZT0id2lkdGg6IDQu
NXB4OyBoZWlnaHQ6IDVweDsiPjwvZGl2PgogPC9ib2R5PgogCiA8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>