<?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>13320</bug_id>
          
          <creation_ts>2007-04-10 09:27:58 -0700</creation_ts>
          <short_desc>rounded corners with drop shadows are really slow</short_desc>
          <delta_ts>2007-05-19 16:17:48 -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>Layout and Rendering</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://bestbefore.tv/roundedShadows.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan del Strother">jon</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>dev+webkit</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>15130</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan del Strother">jon</who>
    <bug_when>2007-04-10 09:27:58 -0700</bug_when>
    <thetext>-webkit-box-shadow and -webkit-border-radius are fine, on their own.  When combined together, they kill redraw speeds.

The page above informally demonstrates this - resizing the window is noticably slower when drop shadows &amp; rounded corners are combined.  If necessary, I could probably come up with some sort of animating benchmark thing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15131</commentid>
    <comment_count>1</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2007-04-10 09:44:05 -0700</bug_when>
    <thetext>Yeah, it is pretty slow even with relatively small number of boxes. Shark shows that time is mostly spent doing fills in GraphicsContext:: fillRoundedRect() (called from RenderObject::paintBoxShadow()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15108</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-04-10 13:33:12 -0700</bug_when>
    <thetext>There is a bug filed in Radar about this already.  Upgrading to P1 to reflect the internal bug&apos;s status.

We&apos;ll need to change the clipping to stroke a single path instead of using the multiple ellipse approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15081</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-04-11 01:03:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/4994191&gt;

The internal bug isn&apos;t marked P1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9612</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-05-19 05:29:31 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; We&apos;ll need to change the clipping to stroke a single path instead of using the
&gt; multiple ellipse approach.

I&apos;m trying to do this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9602</commentid>
    <comment_count>5</comment_count>
      <attachid>14625</attachid>
    <who name="">mitz</who>
    <bug_when>2007-05-19 06:53:48 -0700</bug_when>
    <thetext>Created attachment 14625
[WIP] use a single rounded rect path

Probably breaks non-Mac platforms. Fixes an existing box-shadow+border-radius bug when the radii cannot be satisfied (the box reverts to having straight corners, but the shadow goes all crazy). Didn&apos;t touch addInnerRoundedRectClip(), although it would be nice to get rid of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9598</commentid>
    <comment_count>6</comment_count>
      <attachid>14626</attachid>
    <who name="">mitz</who>
    <bug_when>2007-05-19 08:21:12 -0700</bug_when>
    <thetext>Created attachment 14626
Use a single rounded rect path</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9597</commentid>
    <comment_count>7</comment_count>
      <attachid>14626</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-05-19 09:58:38 -0700</bug_when>
    <thetext>Comment on attachment 14626
Use a single rounded rect path

In Path::createRoundedRectangle I would expect you to use float insted of double. FloatRect, etc. are actually &quot;float&quot; not double, and converting back and forth can be costly.

Otherwise looks great. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9593</commentid>
    <comment_count>8</comment_count>
      <attachid>14626</attachid>
    <who name="">mitz</who>
    <bug_when>2007-05-19 10:14:11 -0700</bug_when>
    <thetext>Comment on attachment 14626
Use a single rounded rect path

(In reply to comment #7)
&gt; (From update of attachment 14626 [edit])
&gt; In Path::createRoundedRectangle I would expect you to use float insted of
&gt; double.

Copy&amp;paste accident. I&apos;m going to correct it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9594</commentid>
    <comment_count>9</comment_count>
      <attachid>14628</attachid>
    <who name="">mitz</who>
    <bug_when>2007-05-19 10:18:47 -0700</bug_when>
    <thetext>Created attachment 14628
Use single rounded rect path

s/double/float/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9552</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-05-19 16:17:48 -0700</bug_when>
    <thetext>Landed in r21601.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14625</attachid>
            <date>2007-05-19 06:53:48 -0700</date>
            <delta_ts>2007-05-19 08:22:11 -0700</delta_ts>
            <desc>[WIP] use a single rounded rect path</desc>
            <filename>13320_r0.patch</filename>
            <type>text/plain</type>
            <size>14792</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJ
KHJldmlzaW9uIDIxNTk5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsMzYgKzMyMCw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIC8vIE5lZWQgc3VmZmljaWVudCB3
aWR0aCBhbmQgaGVpZ2h0IHRvIGNvbnRhaW4gdGhlc2UgY3VydmVzLiAgU2FuaXR5IGNoZWNrIG91
cgotICAgIC8vIGNvcm5lciByYWRpaSBhbmQgb3VyIHdpZHRoL2hlaWdodCB2YWx1ZXMgdG8gbWFr
ZSBzdXJlIHRoZSBjdXJ2ZXMgY2FuIGFsbCBmaXQuCi0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihyZWN0LndpZHRoKCkpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvcExlZnQud2lkdGgo
KSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wUmlnaHQud2lkdGgoKSkgfHwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3Qud2lkdGgoKSkgPCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oYm90dG9tTGVmdC53aWR0aCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21SaWdo
dC53aWR0aCgpKSB8fAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC5oZWlnaHQo
KSkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wTGVmdC5oZWlnaHQoKSkgKyBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYm90dG9tTGVmdC5oZWlnaHQoKSkgfHwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHJlY3QuaGVpZ2h0KCkpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRvcFJpZ2h0
LmhlaWdodCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21SaWdodC5oZWlnaHQoKSkp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICAvLyBDbGlwIG91dCBlYWNoIHNoYXBlIG9uZSBi
eSBvbmUuCi0gICAgY2xpcE91dEVsbGlwc2VJblJlY3QoSW50UmVjdChyZWN0LngoKSwgcmVjdC55
KCksIHRvcExlZnQud2lkdGgoKSAqIDIsIHRvcExlZnQuaGVpZ2h0KCkgKiAyKSk7Ci0gICAgY2xp
cE91dEVsbGlwc2VJblJlY3QoSW50UmVjdChyZWN0LnJpZ2h0KCkgLSB0b3BSaWdodC53aWR0aCgp
ICogMiwgcmVjdC55KCksIHRvcFJpZ2h0LndpZHRoKCkgKiAyLCB0b3BSaWdodC5oZWlnaHQoKSAq
IDIpKTsKLSAgICBjbGlwT3V0RWxsaXBzZUluUmVjdChJbnRSZWN0KHJlY3QueCgpLCByZWN0LmJv
dHRvbSgpIC0gYm90dG9tTGVmdC5oZWlnaHQoKSAqIDIsIGJvdHRvbUxlZnQud2lkdGgoKSAqIDIs
IGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyKSk7Ci0gICAgY2xpcE91dEVsbGlwc2VJblJlY3QoSW50
UmVjdChyZWN0LnJpZ2h0KCkgLSBib3R0b21SaWdodC53aWR0aCgpICogMiwgcmVjdC5ib3R0b20o
KSAtIGJvdHRvbVJpZ2h0LmhlaWdodCgpICogMiwgYm90dG9tUmlnaHQud2lkdGgoKSAqIDIsIGJv
dHRvbVJpZ2h0LmhlaWdodCgpICogMikpOwotICAgIGNsaXBPdXQoSW50UmVjdChyZWN0LngoKSAr
IHRvcExlZnQud2lkdGgoKSwgcmVjdC55KCksCi0gICAgICAgICAgICAgICAgICAgIHJlY3Qud2lk
dGgoKSAtIHRvcExlZnQud2lkdGgoKSAtIHRvcFJpZ2h0LndpZHRoKCksCi0gICAgICAgICAgICAg
ICAgICAgIG1heCh0b3BMZWZ0LmhlaWdodCgpLCB0b3BSaWdodC5oZWlnaHQoKSkpKTsKLSAgICBj
bGlwT3V0KEludFJlY3QocmVjdC54KCkgKyBib3R0b21MZWZ0LndpZHRoKCksIAotICAgICAgICAg
ICAgICAgICAgICByZWN0LmJvdHRvbSgpIC0gbWF4KGJvdHRvbUxlZnQuaGVpZ2h0KCksIGJvdHRv
bVJpZ2h0LmhlaWdodCgpKSwKLSAgICAgICAgICAgICAgICAgICAgcmVjdC53aWR0aCgpIC0gYm90
dG9tTGVmdC53aWR0aCgpIC0gYm90dG9tUmlnaHQud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAg
ICAgbWF4KGJvdHRvbUxlZnQuaGVpZ2h0KCksIGJvdHRvbVJpZ2h0LmhlaWdodCgpKSkpOwotICAg
IGNsaXBPdXQoSW50UmVjdChyZWN0LngoKSwgcmVjdC55KCkgKyB0b3BMZWZ0LmhlaWdodCgpLAot
ICAgICAgICAgICAgICAgICAgICBtYXgodG9wTGVmdC53aWR0aCgpLCBib3R0b21MZWZ0LndpZHRo
KCkpLCByZWN0LmhlaWdodCgpIC0gdG9wTGVmdC5oZWlnaHQoKSAtIGJvdHRvbUxlZnQuaGVpZ2h0
KCkpKTsKLSAgICBjbGlwT3V0KEludFJlY3QocmVjdC5yaWdodCgpIC0gbWF4KHRvcFJpZ2h0Lndp
ZHRoKCksIGJvdHRvbVJpZ2h0LndpZHRoKCkpLAotICAgICAgICAgICAgICAgICAgICByZWN0Lnko
KSArIHRvcFJpZ2h0LmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICBtYXgodG9wUmlnaHQu
d2lkdGgoKSwgYm90dG9tUmlnaHQud2lkdGgoKSksIHJlY3QuaGVpZ2h0KCkgLSB0b3BSaWdodC5o
ZWlnaHQoKSAtIGJvdHRvbVJpZ2h0LmhlaWdodCgpKSk7Ci0gICAgY2xpcE91dChJbnRSZWN0KHJl
Y3QueCgpICsgbWF4KHRvcExlZnQud2lkdGgoKSwgYm90dG9tTGVmdC53aWR0aCgpKSwKLSAgICAg
ICAgICAgICAgICAgICAgcmVjdC55KCkgKyBtYXgodG9wTGVmdC5oZWlnaHQoKSwgdG9wUmlnaHQu
aGVpZ2h0KCkpLAotICAgICAgICAgICAgICAgICAgICByZWN0LndpZHRoKCkgLSBtYXgodG9wTGVm
dC53aWR0aCgpLCBib3R0b21MZWZ0LndpZHRoKCkpIC0gbWF4KHRvcFJpZ2h0LndpZHRoKCksIGJv
dHRvbVJpZ2h0LndpZHRoKCkpLAotICAgICAgICAgICAgICAgICAgICByZWN0LmhlaWdodCgpIC0g
bWF4KHRvcExlZnQuaGVpZ2h0KCksIHRvcFJpZ2h0LmhlaWdodCgpKSAtIG1heChib3R0b21MZWZ0
LmhlaWdodCgpLCBib3R0b21SaWdodC5oZWlnaHQoKSkpKTsKKworICAgIGNsaXBPdXQoUGF0aDo6
Y3JlYXRlUm91bmRlZFJlY3RhbmdsZShyZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVm
dCwgYm90dG9tUmlnaHQpKTsKIH0KIAogaW50IEdyYXBoaWNzQ29udGV4dDo6dGV4dERyYXdpbmdN
b2RlKCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAkocmV2aXNpb24gMjE1OTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsOSArMTc3LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3Bl
cmF0b3IpOwogCiAgICAgICAgIHZvaWQgYmVnaW5QYXRoKCk7Ci0gICAgICAgIHZvaWQgYWRkUGF0
aChjb25zdCBQYXRoJiBwYXRoKTsKKyAgICAgICAgdm9pZCBhZGRQYXRoKGNvbnN0IFBhdGgmKTsK
IAogICAgICAgICB2b2lkIGNsaXAoY29uc3QgUGF0aCYpOworICAgICAgICB2b2lkIGNsaXBPdXQo
Y29uc3QgUGF0aCYpOwogCiAgICAgICAgIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJik7CiAg
ICAgICAgIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmNwcAkocmV2aXNpb24gMjE1OTkpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsNiArMTU4LDQ4IEBAIFBh
dGggUGF0aDo6Y3JlYXRlUm91bmRlZFJlY3RhbmdsZShjb25zdCAKICAgICByZXR1cm4gcGF0aDsK
IH0KIAorUGF0aCBQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFuZ2xlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdGFuZ2xlLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6
ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29u
c3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJhZGl1cykKK3sKKyAgICBQYXRoIHBhdGg7CisKKyAg
ICBkb3VibGUgd2lkdGggPSByZWN0YW5nbGUud2lkdGgoKTsKKyAgICBkb3VibGUgaGVpZ2h0ID0g
cmVjdGFuZ2xlLmhlaWdodCgpOworICAgIGlmICh3aWR0aCA8PSAwLjAgfHwgaGVpZ2h0IDw9IDAu
MCkKKyAgICAgICAgcmV0dXJuIHBhdGg7CisKKyAgICBpZiAod2lkdGggPCB0b3BMZWZ0UmFkaXVz
LndpZHRoKCkgKyB0b3BSaWdodFJhZGl1cy53aWR0aCgpCisgICAgICAgICAgICB8fCB3aWR0aCA8
IGJvdHRvbUxlZnRSYWRpdXMud2lkdGgoKSArIGJvdHRvbVJpZ2h0UmFkaXVzLndpZHRoKCkKKyAg
ICAgICAgICAgIHx8IGhlaWdodCA8IHRvcExlZnRSYWRpdXMuaGVpZ2h0KCkgKyBib3R0b21MZWZ0
UmFkaXVzLmhlaWdodCgpCisgICAgICAgICAgICB8fCBoZWlnaHQgPCB0b3BSaWdodFJhZGl1cy5o
ZWlnaHQoKSArIGJvdHRvbVJpZ2h0UmFkaXVzLmhlaWdodCgpKQorICAgICAgICAvLyBJZiBhbGwg
dGhlIHJhZGlpIGNhbm5vdCBiZSBhY2NvbW1vZGF0ZWQsIHJldHVybiBhIHJlY3QuCisgICAgICAg
IHJldHVybiBjcmVhdGVSZWN0YW5nbGUocmVjdGFuZ2xlKTsKKworICAgIGRvdWJsZSB4ID0gcmVj
dGFuZ2xlLngoKTsKKyAgICBkb3VibGUgeSA9IHJlY3RhbmdsZS55KCk7CisKKyAgICBwYXRoLm1v
dmVUbyhGbG9hdFBvaW50KHggKyB0b3BMZWZ0UmFkaXVzLndpZHRoKCksIHkpKTsKKworICAgIHBh
dGguYWRkTGluZVRvKEZsb2F0UG9pbnQoeCArIHdpZHRoIC0gdG9wUmlnaHRSYWRpdXMud2lkdGgo
KSwgeSkpOworCisgICAgcGF0aC5hZGRCZXppZXJDdXJ2ZVRvKEZsb2F0UG9pbnQoeCArIHdpZHRo
IC0gdG9wUmlnaHRSYWRpdXMud2lkdGgoKSAqICgxIC0gUVVBUlRFUiksIHkpLCBGbG9hdFBvaW50
KHggKyB3aWR0aCwgeSArIHRvcFJpZ2h0UmFkaXVzLmhlaWdodCgpICogKDEgLSBRVUFSVEVSKSks
IEZsb2F0UG9pbnQoeCArIHdpZHRoLCB5ICsgdG9wUmlnaHRSYWRpdXMuaGVpZ2h0KCkpKTsKKwor
ICAgIHBhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVpZ2h0IC0gYm90
dG9tUmlnaHRSYWRpdXMuaGVpZ2h0KCkpKTsKKworICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhG
bG9hdFBvaW50KHggKyB3aWR0aCwgeSArIGhlaWdodCAtIGJvdHRvbVJpZ2h0UmFkaXVzLmhlaWdo
dCgpICogKDEgLSBRVUFSVEVSKSksIEZsb2F0UG9pbnQoeCArIHdpZHRoIC0gYm90dG9tUmlnaHRS
YWRpdXMud2lkdGgoKSAqICgxIC0gUVVBUlRFUiksIHkgKyBoZWlnaHQpLCBGbG9hdFBvaW50KHgg
KyB3aWR0aCAtIGJvdHRvbVJpZ2h0UmFkaXVzLndpZHRoKCksIHkgKyBoZWlnaHQpKTsKKworICAg
IHBhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoeCArIGJvdHRvbUxlZnRSYWRpdXMud2lkdGgoKSwg
eSArIGhlaWdodCkpOworCisgICAgcGF0aC5hZGRCZXppZXJDdXJ2ZVRvKEZsb2F0UG9pbnQoeCAr
IGJvdHRvbUxlZnRSYWRpdXMud2lkdGgoKSAqICgxIC0gUVVBUlRFUiksIHkgKyBoZWlnaHQpLCBG
bG9hdFBvaW50KHgsIHkgKyBoZWlnaHQgLSBib3R0b21MZWZ0UmFkaXVzLmhlaWdodCgpICogKDEg
LSBRVUFSVEVSKSksIEZsb2F0UG9pbnQoeCwgeSArIGhlaWdodCAtIGJvdHRvbUxlZnRSYWRpdXMu
aGVpZ2h0KCkpKTsKKworICAgIHBhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoeCwgeSArIHRvcExl
ZnRSYWRpdXMuaGVpZ2h0KCkpKTsKKworICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhGbG9hdFBv
aW50KHgsIHkgKyB0b3BMZWZ0UmFkaXVzLmhlaWdodCgpICogKDEgLSBRVUFSVEVSKSksIEZsb2F0
UG9pbnQoeCArIHRvcExlZnRSYWRpdXMud2lkdGgoKSAqICgxIC0gUVVBUlRFUiksIHkpLCBGbG9h
dFBvaW50KHggKyB0b3BMZWZ0UmFkaXVzLndpZHRoKCksIHkpKTsKKworICAgIHBhdGguY2xvc2VT
dWJwYXRoKCk7CisKKyAgICByZXR1cm4gcGF0aDsKK30KKwogUGF0aCBQYXRoOjpjcmVhdGVSZWN0
YW5nbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0YW5nbGUpCiB7CiAgICAgUGF0aCBwYXRoOwpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgJKHJldmlzaW9uIDIxNTk5KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBsYXRmb3JtUGF0aCogcGxhdGZvcm1QYXRo
KCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CiAKICAgICAgICAgc3RhdGljIFBhdGggY3JlYXRl
Um91bmRlZFJlY3RhbmdsZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHJvdW5k
aW5nUmFkaWkpOworICAgICAgICBzdGF0aWMgUGF0aCBjcmVhdGVSb3VuZGVkUmVjdGFuZ2xlKGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgRmxv
YXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0UmFkaXVz
LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKTsKICAgICAgICAgc3RhdGljIFBh
dGggY3JlYXRlUmVjdGFuZ2xlKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICBzdGF0aWMgUGF0
aCBjcmVhdGVFbGxpcHNlKGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlciwgZmxvYXQgcngsIGZsb2F0
IHJ5KTsKICAgICAgICAgc3RhdGljIFBhdGggY3JlYXRlQ2lyY2xlKGNvbnN0IEZsb2F0UG9pbnQm
IGNlbnRlciwgZmxvYXQgcik7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMjE1OTkpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDM2LDM2ICs0MzYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRS
ZWN0KGNvCiAgICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xvcikKICAgICAgICAgc2V0Q0dGaWxs
Q29sb3IoY29udGV4dCwgY29sb3IpOwogCi0gICAgLy8gQWRkIHRoZSBmb3VyIGVsbGlwc2VzIHRv
IHRoZSBwYXRoLiAgVGVjaG5pY2FsbHkgdGhpcyByZWFsbHkgaXNuJ3QgZ29vZCBlbm91Z2gsIHNp
bmNlIHdlIGNvdWxkIGVuZCB1cAotICAgIC8vIG5vdCBjbGlwcGluZyB0aGUgb3RoZXIgMy80IG9m
IHRoZSBlbGxpcHNlIHdlIGRvbid0IGNhcmUgYWJvdXQuICBXZSdyZSByZWx5aW5nIG9uIHRoZSBm
YWN0IHRoYXQgZm9yCi0gICAgLy8gbm9ybWFsIHVzZSBjYXNlcyB0aGVzZSBlbGxpcHNlcyB3b24n
dCBvdmVybGFwIG9uZSBhbm90aGVyIChvciB3aGVuIHRoZXkgZG8gdGhlIGN1cnZhdHVyZSBvZiBv
bmUgd2lsbAotICAgIC8vIGJlIHN1YnN1bWVkIGJ5IHRoZSBvdGhlcikuCi0gICAgQ0dDb250ZXh0
QWRkRWxsaXBzZUluUmVjdChjb250ZXh0LCBDR1JlY3RNYWtlKHJlY3QueCgpLCByZWN0LnkoKSwg
dG9wTGVmdC53aWR0aCgpICogMiwgdG9wTGVmdC5oZWlnaHQoKSAqIDIpKTsKLSAgICBDR0NvbnRl
eHRBZGRFbGxpcHNlSW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UocmVjdC5yaWdodCgpIC0gdG9w
UmlnaHQud2lkdGgoKSAqIDIsIHJlY3QueSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0b3BSaWdodC53aWR0aCgpICogMiwgdG9wUmlnaHQuaGVp
Z2h0KCkgKiAyKSk7Ci0gICAgQ0dDb250ZXh0QWRkRWxsaXBzZUluUmVjdChjb250ZXh0LCBDR1Jl
Y3RNYWtlKHJlY3QueCgpLCByZWN0LmJvdHRvbSgpIC0gYm90dG9tTGVmdC5oZWlnaHQoKSAqIDIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRv
bUxlZnQud2lkdGgoKSAqIDIsIGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyKSk7Ci0gICAgQ0dDb250
ZXh0QWRkRWxsaXBzZUluUmVjdChjb250ZXh0LCBDR1JlY3RNYWtlKHJlY3QucmlnaHQoKSAtIGJv
dHRvbVJpZ2h0LndpZHRoKCkgKiAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWN0LmJvdHRvbSgpIC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0
b21SaWdodC53aWR0aCgpICogMiwgYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyKSk7Ci0gICAgCi0g
ICAgLy8gTm93IGFkZCBmaXZlIHJlY3RzIChvbmUgZm9yIGVhY2ggZWRnZSByZWN0IGluIGJldHdl
ZW4gdGhlIHJvdW5kZWQgY29ybmVycyBhbmQgb25lIGZvciB0aGUgaW50ZXJpb3IpLgotICAgIENH
Q29udGV4dEFkZFJlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShyZWN0LngoKSArIHRvcExlZnQud2lk
dGgoKSwgcmVjdC55KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlY3Qud2lkdGgoKSAtIHRvcExlZnQud2lkdGgoKSAtIHRvcFJpZ2h0LndpZHRoKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCh0b3BMZWZ0LmhlaWdodCgp
LCB0b3BSaWdodC5oZWlnaHQoKSkpKTsKLSAgICBDR0NvbnRleHRBZGRSZWN0KGNvbnRleHQsIENH
UmVjdE1ha2UocmVjdC54KCkgKyBib3R0b21MZWZ0LndpZHRoKCksIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LmJvdHRvbSgpIC0gbWF4KGJvdHRvbUxlZnQu
aGVpZ2h0KCksIGJvdHRvbVJpZ2h0LmhlaWdodCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVjdC53aWR0aCgpIC0gYm90dG9tTGVmdC53aWR0aCgpIC0gYm90
dG9tUmlnaHQud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF4KGJvdHRvbUxlZnQuaGVpZ2h0KCksIGJvdHRvbVJpZ2h0LmhlaWdodCgpKSkpOwotICAg
IENHQ29udGV4dEFkZFJlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShyZWN0LngoKSwgcmVjdC55KCkg
KyB0b3BMZWZ0LmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYXgodG9wTGVmdC53aWR0aCgpLCBib3R0b21MZWZ0LndpZHRoKCkpLCByZWN0LmhlaWdo
dCgpIC0gdG9wTGVmdC5oZWlnaHQoKSAtIGJvdHRvbUxlZnQuaGVpZ2h0KCkpKTsKLSAgICBDR0Nv
bnRleHRBZGRSZWN0KGNvbnRleHQsIENHUmVjdE1ha2UocmVjdC5yaWdodCgpIC0gbWF4KHRvcFJp
Z2h0LndpZHRoKCksIGJvdHRvbVJpZ2h0LndpZHRoKCkpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWN0LnkoKSArIHRvcFJpZ2h0LmhlaWdodCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgodG9wUmlnaHQud2lkdGgoKSwg
Ym90dG9tUmlnaHQud2lkdGgoKSksIHJlY3QuaGVpZ2h0KCkgLSB0b3BSaWdodC5oZWlnaHQoKSAt
IGJvdHRvbVJpZ2h0LmhlaWdodCgpKSk7Ci0gICAgQ0dDb250ZXh0QWRkUmVjdChjb250ZXh0LCBD
R1JlY3RNYWtlKHJlY3QueCgpICsgbWF4KHRvcExlZnQud2lkdGgoKSwgYm90dG9tTGVmdC53aWR0
aCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC55KCkg
KyBtYXgodG9wTGVmdC5oZWlnaHQoKSwgdG9wUmlnaHQuaGVpZ2h0KCkpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LndpZHRoKCkgLSBtYXgodG9wTGVmdC53
aWR0aCgpLCBib3R0b21MZWZ0LndpZHRoKCkpIC0gbWF4KHRvcFJpZ2h0LndpZHRoKCksIGJvdHRv
bVJpZ2h0LndpZHRoKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWN0LmhlaWdodCgpIC0gbWF4KHRvcExlZnQuaGVpZ2h0KCksIHRvcFJpZ2h0LmhlaWdodCgp
KSAtIG1heChib3R0b21MZWZ0LmhlaWdodCgpLCBib3R0b21SaWdodC5oZWlnaHQoKSkpKTsKKyAg
ICBhZGRQYXRoKFBhdGg6OmNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUocmVjdCwgdG9wTGVmdCwgdG9w
UmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KSk7CisKICAgICBDR0NvbnRleHRGaWxsUGF0
aChjb250ZXh0KTsKICAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yKQogICAgICAgICBzZXRD
R0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IpOwpAQCAtNTE1LDQ0ICs0ODcsOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RDbGlwCiAgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihyZWN0LmhlaWdodCgpKSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0b3BM
ZWZ0LmhlaWdodCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21MZWZ0LmhlaWdodCgp
KSB8fAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC5oZWlnaHQoKSkgPCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odG9wUmlnaHQuaGVpZ2h0KCkpICsgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJvdHRvbVJpZ2h0LmhlaWdodCgpKSkKICAgICAgICAgcmV0dXJuOwotIAotICAgIC8vIENs
aXAgdG8gb3VyIHJlY3QuCi0gICAgY2xpcChyZWN0KTsKIAotICAgIC8vIE9LLCB0aGUgY3VydmVz
IGNhbiBmaXQuCi0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsK
LSAgICAKLSAgICAvLyBBZGQgdGhlIGZvdXIgZWxsaXBzZXMgdG8gdGhlIHBhdGguICBUZWNobmlj
YWxseSB0aGlzIHJlYWxseSBpc24ndCBnb29kIGVub3VnaCwgc2luY2Ugd2UgY291bGQgZW5kIHVw
Ci0gICAgLy8gbm90IGNsaXBwaW5nIHRoZSBvdGhlciAzLzQgb2YgdGhlIGVsbGlwc2Ugd2UgZG9u
J3QgY2FyZSBhYm91dC4gIFdlJ3JlIHJlbHlpbmcgb24gdGhlIGZhY3QgdGhhdCBmb3IKLSAgICAv
LyBub3JtYWwgdXNlIGNhc2VzIHRoZXNlIGVsbGlwc2VzIHdvbid0IG92ZXJsYXAgb25lIGFub3Ro
ZXIgKG9yIHdoZW4gdGhleSBkbyB0aGUgY3VydmF0dXJlIG9mIG9uZSB3aWxsCi0gICAgLy8gYmUg
c3Vic3VtZWQgYnkgdGhlIG90aGVyKS4KLSAgICBDR0NvbnRleHRBZGRFbGxpcHNlSW5SZWN0KGNv
bnRleHQsIENHUmVjdE1ha2UocmVjdC54KCksIHJlY3QueSgpLCB0b3BMZWZ0LndpZHRoKCkgKiAy
LCB0b3BMZWZ0LmhlaWdodCgpICogMikpOwotICAgIENHQ29udGV4dEFkZEVsbGlwc2VJblJlY3Qo
Y29udGV4dCwgQ0dSZWN0TWFrZShyZWN0LnJpZ2h0KCkgLSB0b3BSaWdodC53aWR0aCgpICogMiwg
cmVjdC55KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRvcFJpZ2h0LndpZHRoKCkgKiAyLCB0b3BSaWdodC5oZWlnaHQoKSAqIDIpKTsKLSAgICBD
R0NvbnRleHRBZGRFbGxpcHNlSW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UocmVjdC54KCksIHJl
Y3QuYm90dG9tKCkgLSBib3R0b21MZWZ0LmhlaWdodCgpICogMiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tTGVmdC53aWR0aCgpICogMiwg
Ym90dG9tTGVmdC5oZWlnaHQoKSAqIDIpKTsKLSAgICBDR0NvbnRleHRBZGRFbGxpcHNlSW5SZWN0
KGNvbnRleHQsIENHUmVjdE1ha2UocmVjdC5yaWdodCgpIC0gYm90dG9tUmlnaHQud2lkdGgoKSAq
IDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
Y3QuYm90dG9tKCkgLSBib3R0b21SaWdodC5oZWlnaHQoKSAqIDIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbVJpZ2h0LndpZHRoKCkgKiAy
LCBib3R0b21SaWdodC5oZWlnaHQoKSAqIDIpKTsKLSAgICAKLSAgICAvLyBOb3cgYWRkIGZpdmUg
cmVjdHMgKG9uZSBmb3IgZWFjaCBlZGdlIHJlY3QgaW4gYmV0d2VlbiB0aGUgcm91bmRlZCBjb3Ju
ZXJzIGFuZCBvbmUgZm9yIHRoZSBpbnRlcmlvcikuCi0gICAgQ0dDb250ZXh0QWRkUmVjdChjb250
ZXh0LCBDR1JlY3RNYWtlKHJlY3QueCgpICsgdG9wTGVmdC53aWR0aCgpLCByZWN0LnkoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC53aWR0aCgpIC0gdG9w
TGVmdC53aWR0aCgpIC0gdG9wUmlnaHQud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF4KHRvcExlZnQuaGVpZ2h0KCksIHRvcFJpZ2h0LmhlaWdodCgp
KSkpOwotICAgIENHQ29udGV4dEFkZFJlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShyZWN0LngoKSAr
IGJvdHRvbUxlZnQud2lkdGgoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlY3QuYm90dG9tKCkgLSBtYXgoYm90dG9tTGVmdC5oZWlnaHQoKSwgYm90dG9tUmln
aHQuaGVpZ2h0KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWN0LndpZHRoKCkgLSBib3R0b21MZWZ0LndpZHRoKCkgLSBib3R0b21SaWdodC53aWR0aCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgoYm90dG9tTGVmdC5o
ZWlnaHQoKSwgYm90dG9tUmlnaHQuaGVpZ2h0KCkpKSk7Ci0gICAgQ0dDb250ZXh0QWRkUmVjdChj
b250ZXh0LCBDR1JlY3RNYWtlKHJlY3QueCgpLCByZWN0LnkoKSArIHRvcExlZnQuaGVpZ2h0KCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCh0b3BMZWZ0Lndp
ZHRoKCksIGJvdHRvbUxlZnQud2lkdGgoKSksIHJlY3QuaGVpZ2h0KCkgLSB0b3BMZWZ0LmhlaWdo
dCgpIC0gYm90dG9tTGVmdC5oZWlnaHQoKSkpOwotICAgIENHQ29udGV4dEFkZFJlY3QoY29udGV4
dCwgQ0dSZWN0TWFrZShyZWN0LnJpZ2h0KCkgLSBtYXgodG9wUmlnaHQud2lkdGgoKSwgYm90dG9t
UmlnaHQud2lkdGgoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlY3QueSgpICsgdG9wUmlnaHQuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1heCh0b3BSaWdodC53aWR0aCgpLCBib3R0b21SaWdodC53aWR0aCgp
KSwgcmVjdC5oZWlnaHQoKSAtIHRvcFJpZ2h0LmhlaWdodCgpIC0gYm90dG9tUmlnaHQuaGVpZ2h0
KCkpKTsKLSAgICBDR0NvbnRleHRBZGRSZWN0KGNvbnRleHQsIENHUmVjdE1ha2UocmVjdC54KCkg
KyBtYXgodG9wTGVmdC53aWR0aCgpLCBib3R0b21MZWZ0LndpZHRoKCkpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LnkoKSArIG1heCh0b3BMZWZ0LmhlaWdo
dCgpLCB0b3BSaWdodC5oZWlnaHQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlY3Qud2lkdGgoKSAtIG1heCh0b3BMZWZ0LndpZHRoKCksIGJvdHRvbUxlZnQu
d2lkdGgoKSkgLSBtYXgodG9wUmlnaHQud2lkdGgoKSwgYm90dG9tUmlnaHQud2lkdGgoKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuaGVpZ2h0KCkgLSBt
YXgodG9wTGVmdC5oZWlnaHQoKSwgdG9wUmlnaHQuaGVpZ2h0KCkpIC0gbWF4KGJvdHRvbUxlZnQu
aGVpZ2h0KCksIGJvdHRvbVJpZ2h0LmhlaWdodCgpKSkpOwotICAgIENHQ29udGV4dENsaXAoY29u
dGV4dCk7CisgICAgY2xpcChQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFuZ2xlKHJlY3QsIHRvcExl
ZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwg
aW50IHRoaWNrbmVzcykKQEAgLTcwNSw2ICs2NDEsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmNsaXAoY29uc3QgUGF0aCYgcAogICAgIG1fZGF0YS0+Y2xpcChwYXRoKTsKIH0KIAordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgUGF0aCYgcGF0aCkKK3sKKyAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIENHQ29udGV4
dEJlZ2luUGF0aChwbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgQ0dDb250ZXh0QWRkUmVjdChwbGF0
Zm9ybUNvbnRleHQoKSwgQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KHBsYXRmb3JtQ29udGV4
dCgpKSk7CisgICAgQ0dDb250ZXh0QWRkUGF0aChwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aC5wbGF0
Zm9ybVBhdGgoKSk7CisgICAgQ0dDb250ZXh0RU9DbGlwKHBsYXRmb3JtQ29udGV4dCgpKTsKK30K
Kwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14626</attachid>
            <date>2007-05-19 08:21:12 -0700</date>
            <delta_ts>2007-05-19 10:14:11 -0700</delta_ts>
            <desc>Use a single rounded rect path</desc>
            <filename>13320_r1.patch</filename>
            <type>text/plain</type>
            <size>34226</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIxNjAwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDctMDUtMTkgIE1pdHogUGV0dGVsICA8bWl0
ekB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIC0gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMjAKKyAg
ICAgICAgICByb3VuZGVkIGNvcm5lcnMgd2l0aCBkcm9wIHNoYWRvd3MgYXJlIHJlYWxseSBzbG93
CisKKyAgICAgICAgKiBmYXN0L2JveC1zaGFkb3cvYm9yZGVyLXJhZGl1cy1iaWctZXhwZWN0ZWQu
Y2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIGZhc3QvYm94LXNoYWRvdy9ib3JkZXItcmFkaXVz
LWJpZy1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGZhc3QvYm94LXNoYWRvdy9ib3Jk
ZXItcmFkaXVzLWJpZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvYm94LXNo
YWRvdy9ib3JkZXItcmFkaXVzLWJpZy5odG1sOiBBZGRlZC4KKwogMjAwNy0wNS0xOSAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1p
dHouCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvYm9yZGVyLXJhZGl1cy1iaWct
ZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hh
ZG93L2JvcmRlci1yYWRpdXMtYmlnLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93L2JvcmRlci1yYWRpdXMtYmlnLWV4cGVjdGVkLmNo
ZWNrc3VtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACithMTA4YzY5ZDkwOTUzODY2NzAzODlm
NGNmYWQ3YjI1NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvYm94LXNoYWRvdy9ib3JkZXItcmFkaXVzLWJpZy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93L2JvcmRlci1yYWRpdXMtYmlnLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9ib3Jk
ZXItcmFkaXVzLWJpZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUg
ODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBz
aXplIDc4NHg1NTIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOAor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMngxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMyOiAiVGhpczoiCisgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoNDAsNTgpIHNpemUgNjB4NjAgW2JnY29sb3I9IzAwODAwMF0KKyAgICAgIFJlbmRl
ckJsb2NrIHtQfSBhdCAoMCwxNTgpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDEzNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDEzNDogIlNob3VsZCBsb29rIGxpa2UgdGhpczoiCisgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoNDAsMjE2KSBzaXplIDYweDYwIFtiZ2NvbG9yPSMwMDgwMDBdCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2JveC1zaGFkb3cvYm9yZGVyLXJhZGl1cy1iaWcuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvYm9yZGVyLXJhZGl1cy1iaWcuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9ib3JkZXItcmFkaXVzLWJp
Zy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKKzxwPgorICAgIFRoaXM6Cis8L3A+
Cis8ZGl2IHN0eWxlPSJtYXJnaW46IDQwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyAtd2Via2l0LWJv
cmRlci1yYWRpdXM6IDQwcHg7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IC13ZWJraXQtYm94
LXNoYWRvdzogYmxhY2sgMTBweCAxMHB4IDA7Ij48L2Rpdj4KKzxwPgorICAgIFNob3VsZCBsb29r
IGxpa2UgdGhpczoKKzwvcD4KKzxkaXYgc3R5bGU9Im1hcmdpbjogNDBweDsgYmFja2dyb3VuZDog
Z3JlZW47IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IC13ZWJraXQtYm94LXNoYWRvdzogYmxh
Y2sgMTBweCAxMHB4IDA7Ij48L2Rpdj4KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTYwMCkKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMDctMDUtMTkgIE1pdHog
UGV0dGVsICA8bWl0ekB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzMjAKKyAgICAgICAgICByb3VuZGVkIGNvcm5lcnMgd2l0aCBkcm9wIHNoYWRvd3MgYXJl
IHJlYWxseSBzbG93CisKKyAgICAgICAgVGVzdCBmb3IgYSByZW5kZXJpbmcgYnVnIGZpeGVkIGJ5
IHRoaXMgcGF0Y2g6CisgICAgICAgICAgICBmYXN0L2JveC1zaGFkb3cvYm9yZGVyLXJhZGl1cy1i
aWcuaHRtbAorCisgICAgICAgIE5vIHRlc3QgZm9yIHRoZSBwZXJmb3JtYW5jZSBpbmdyZWRpZW50
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RDbGlwKTogTWFk
ZSBjcm9zcy1wbGF0Zm9ybS4KKyAgICAgICAgQ2hhbmdlZCB0byB1c2UgYSBzaW5nbGUgY2xpcHBp
bmcgcGF0aC4gSWYgYWxsIHRoZSByYWRpaSBjYW5ub3QgYmUKKyAgICAgICAgYWNjb21tb2RhdGVk
LCBjbGlwcyB0byBhIHJlY3QuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNs
aXBPdXRSb3VuZGVkUmVjdCk6IENoYW5nZWQgdG8gdXNlIGEgc2luZ2xlCisgICAgICAgIGNsaXBw
aW5nIHBhdGguIElmIGFsbCB0aGUgcmFkaWkgY2Fubm90IGJlIGFjY29tbW9kYXRlZCwgY2xpcHMg
b3V0IGEgcmVjdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aDogQWRkZWQgY2xpcE91dChjb25zdCBQYXRoJikuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFu
Z2xlKTogQWRkZWQuIFJldHVybnMgYSByb3VuZGVkIHJlY3RhbmdsZQorICAgICAgICB3aXRoIHRo
ZSBzcGVjaWZpZWQgcmFkaWkuIElmIGFsbCB0aGUgcmFkaWkgY2Fubm90IGJlIGFjY29tbW9kYXRl
ZCwgcmV0dXJucworICAgICAgICBhIHJlY3Rhbmd1bGFyIHBhdGguCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KTogQ2hhbmdlZCB0byB1c2UgYSBzaW5nbGUgcGF0aC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dCk6IEFkZGVkLgorCiAyMDA3LTA1LTE5ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWl0
ei4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAJKHJldmlzaW9uIDIxNTk5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTUsNDEgKzMxNSwyMiBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hCiAgICAgaW1hZ2UtPmRyYXdUaWxlZCh0
aGlzLCBkZXN0LCBzcmNSZWN0LCBoUnVsZSwgdlJ1bGUsIG9wKTsKIH0KIAordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwKKyAgICBjb25zdCBJbnRT
aXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCkKK3sKKyAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjbGlwKFBhdGg6OmNy
ZWF0ZVJvdW5kZWRSZWN0YW5nbGUocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQs
IGJvdHRvbVJpZ2h0KSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRl
ZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3Qg
SW50U2l6ZSYgdG9wUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCi0gICAgLy8gTmVlZCBzdWZmaWNpZW50IHdpZHRoIGFuZCBoZWlnaHQgdG8gY29udGFpbiB0
aGVzZSBjdXJ2ZXMuICBTYW5pdHkgY2hlY2sgb3VyCi0gICAgLy8gY29ybmVyIHJhZGlpIGFuZCBv
dXIgd2lkdGgvaGVpZ2h0IHZhbHVlcyB0byBtYWtlIHN1cmUgdGhlIGN1cnZlcyBjYW4gYWxsIGZp
dC4KLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3Qud2lkdGgoKSkgPCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odG9wTGVmdC53aWR0aCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0
b3BSaWdodC53aWR0aCgpKSB8fAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC53
aWR0aCgpKSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21MZWZ0LndpZHRoKCkpICsgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJvdHRvbVJpZ2h0LndpZHRoKCkpIHx8Ci0gICAgICAgIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihyZWN0LmhlaWdodCgpKSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0
b3BMZWZ0LmhlaWdodCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21MZWZ0LmhlaWdo
dCgpKSB8fAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC5oZWlnaHQoKSkgPCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wUmlnaHQuaGVpZ2h0KCkpICsgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJvdHRvbVJpZ2h0LmhlaWdodCgpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IC8vIENsaXAgb3V0IGVhY2ggc2hhcGUgb25lIGJ5IG9uZS4KLSAgICBjbGlwT3V0RWxsaXBzZUlu
UmVjdChJbnRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgdG9wTGVmdC53aWR0aCgpICogMiwgdG9w
TGVmdC5oZWlnaHQoKSAqIDIpKTsKLSAgICBjbGlwT3V0RWxsaXBzZUluUmVjdChJbnRSZWN0KHJl
Y3QucmlnaHQoKSAtIHRvcFJpZ2h0LndpZHRoKCkgKiAyLCByZWN0LnkoKSwgdG9wUmlnaHQud2lk
dGgoKSAqIDIsIHRvcFJpZ2h0LmhlaWdodCgpICogMikpOwotICAgIGNsaXBPdXRFbGxpcHNlSW5S
ZWN0KEludFJlY3QocmVjdC54KCksIHJlY3QuYm90dG9tKCkgLSBib3R0b21MZWZ0LmhlaWdodCgp
ICogMiwgYm90dG9tTGVmdC53aWR0aCgpICogMiwgYm90dG9tTGVmdC5oZWlnaHQoKSAqIDIpKTsK
LSAgICBjbGlwT3V0RWxsaXBzZUluUmVjdChJbnRSZWN0KHJlY3QucmlnaHQoKSAtIGJvdHRvbVJp
Z2h0LndpZHRoKCkgKiAyLCByZWN0LmJvdHRvbSgpIC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAy
LCBib3R0b21SaWdodC53aWR0aCgpICogMiwgYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyKSk7Ci0g
ICAgY2xpcE91dChJbnRSZWN0KHJlY3QueCgpICsgdG9wTGVmdC53aWR0aCgpLCByZWN0LnkoKSwK
LSAgICAgICAgICAgICAgICAgICAgcmVjdC53aWR0aCgpIC0gdG9wTGVmdC53aWR0aCgpIC0gdG9w
UmlnaHQud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgbWF4KHRvcExlZnQuaGVpZ2h0KCks
IHRvcFJpZ2h0LmhlaWdodCgpKSkpOwotICAgIGNsaXBPdXQoSW50UmVjdChyZWN0LngoKSArIGJv
dHRvbUxlZnQud2lkdGgoKSwgCi0gICAgICAgICAgICAgICAgICAgIHJlY3QuYm90dG9tKCkgLSBt
YXgoYm90dG9tTGVmdC5oZWlnaHQoKSwgYm90dG9tUmlnaHQuaGVpZ2h0KCkpLAotICAgICAgICAg
ICAgICAgICAgICByZWN0LndpZHRoKCkgLSBib3R0b21MZWZ0LndpZHRoKCkgLSBib3R0b21SaWdo
dC53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICBtYXgoYm90dG9tTGVmdC5oZWlnaHQoKSwg
Ym90dG9tUmlnaHQuaGVpZ2h0KCkpKSk7Ci0gICAgY2xpcE91dChJbnRSZWN0KHJlY3QueCgpLCBy
ZWN0LnkoKSArIHRvcExlZnQuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgIG1heCh0b3BM
ZWZ0LndpZHRoKCksIGJvdHRvbUxlZnQud2lkdGgoKSksIHJlY3QuaGVpZ2h0KCkgLSB0b3BMZWZ0
LmhlaWdodCgpIC0gYm90dG9tTGVmdC5oZWlnaHQoKSkpOwotICAgIGNsaXBPdXQoSW50UmVjdChy
ZWN0LnJpZ2h0KCkgLSBtYXgodG9wUmlnaHQud2lkdGgoKSwgYm90dG9tUmlnaHQud2lkdGgoKSks
Ci0gICAgICAgICAgICAgICAgICAgIHJlY3QueSgpICsgdG9wUmlnaHQuaGVpZ2h0KCksCi0gICAg
ICAgICAgICAgICAgICAgIG1heCh0b3BSaWdodC53aWR0aCgpLCBib3R0b21SaWdodC53aWR0aCgp
KSwgcmVjdC5oZWlnaHQoKSAtIHRvcFJpZ2h0LmhlaWdodCgpIC0gYm90dG9tUmlnaHQuaGVpZ2h0
KCkpKTsKLSAgICBjbGlwT3V0KEludFJlY3QocmVjdC54KCkgKyBtYXgodG9wTGVmdC53aWR0aCgp
LCBib3R0b21MZWZ0LndpZHRoKCkpLAotICAgICAgICAgICAgICAgICAgICByZWN0LnkoKSArIG1h
eCh0b3BMZWZ0LmhlaWdodCgpLCB0b3BSaWdodC5oZWlnaHQoKSksCi0gICAgICAgICAgICAgICAg
ICAgIHJlY3Qud2lkdGgoKSAtIG1heCh0b3BMZWZ0LndpZHRoKCksIGJvdHRvbUxlZnQud2lkdGgo
KSkgLSBtYXgodG9wUmlnaHQud2lkdGgoKSwgYm90dG9tUmlnaHQud2lkdGgoKSksCi0gICAgICAg
ICAgICAgICAgICAgIHJlY3QuaGVpZ2h0KCkgLSBtYXgodG9wTGVmdC5oZWlnaHQoKSwgdG9wUmln
aHQuaGVpZ2h0KCkpIC0gbWF4KGJvdHRvbUxlZnQuaGVpZ2h0KCksIGJvdHRvbVJpZ2h0LmhlaWdo
dCgpKSkpOworCisgICAgY2xpcE91dChQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFuZ2xlKHJlY3Qs
IHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkpOwogfQogCiBpbnQg
R3JhcGhpY3NDb250ZXh0Ojp0ZXh0RHJhd2luZ01vZGUoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAyMTU5OSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3Nyw5ICsxNzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAgICAgdm9pZCBiZWdp
blBhdGgoKTsKLSAgICAgICAgdm9pZCBhZGRQYXRoKGNvbnN0IFBhdGgmIHBhdGgpOworICAgICAg
ICB2b2lkIGFkZFBhdGgoY29uc3QgUGF0aCYpOwogCiAgICAgICAgIHZvaWQgY2xpcChjb25zdCBQ
YXRoJik7CisgICAgICAgIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJik7CiAKICAgICAgICAgdm9p
ZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKTsKICAgICAgICAgdm9pZCByb3RhdGUoZmxvYXQgYW5n
bGVJblJhZGlhbnMpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCShyZXZpc2lv
biAyMTU5OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1OCw2ICsxNTgsNDggQEAgUGF0aCBQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFu
Z2xlKGNvbnN0IAogICAgIHJldHVybiBwYXRoOwogfQogCitQYXRoIFBhdGg6OmNyZWF0ZVJvdW5k
ZWRSZWN0YW5nbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0YW5nbGUsIGNvbnN0IEZsb2F0U2l6ZSYg
dG9wTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxv
YXRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFk
aXVzKQoreworICAgIFBhdGggcGF0aDsKKworICAgIGRvdWJsZSB3aWR0aCA9IHJlY3RhbmdsZS53
aWR0aCgpOworICAgIGRvdWJsZSBoZWlnaHQgPSByZWN0YW5nbGUuaGVpZ2h0KCk7CisgICAgaWYg
KHdpZHRoIDw9IDAuMCB8fCBoZWlnaHQgPD0gMC4wKQorICAgICAgICByZXR1cm4gcGF0aDsKKwor
ICAgIGlmICh3aWR0aCA8IHRvcExlZnRSYWRpdXMud2lkdGgoKSArIHRvcFJpZ2h0UmFkaXVzLndp
ZHRoKCkKKyAgICAgICAgICAgIHx8IHdpZHRoIDwgYm90dG9tTGVmdFJhZGl1cy53aWR0aCgpICsg
Ym90dG9tUmlnaHRSYWRpdXMud2lkdGgoKQorICAgICAgICAgICAgfHwgaGVpZ2h0IDwgdG9wTGVm
dFJhZGl1cy5oZWlnaHQoKSArIGJvdHRvbUxlZnRSYWRpdXMuaGVpZ2h0KCkKKyAgICAgICAgICAg
IHx8IGhlaWdodCA8IHRvcFJpZ2h0UmFkaXVzLmhlaWdodCgpICsgYm90dG9tUmlnaHRSYWRpdXMu
aGVpZ2h0KCkpCisgICAgICAgIC8vIElmIGFsbCB0aGUgcmFkaWkgY2Fubm90IGJlIGFjY29tbW9k
YXRlZCwgcmV0dXJuIGEgcmVjdC4KKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlY3RhbmdsZShyZWN0
YW5nbGUpOworCisgICAgZG91YmxlIHggPSByZWN0YW5nbGUueCgpOworICAgIGRvdWJsZSB5ID0g
cmVjdGFuZ2xlLnkoKTsKKworICAgIHBhdGgubW92ZVRvKEZsb2F0UG9pbnQoeCArIHRvcExlZnRS
YWRpdXMud2lkdGgoKSwgeSkpOworCisgICAgcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludCh4ICsg
d2lkdGggLSB0b3BSaWdodFJhZGl1cy53aWR0aCgpLCB5KSk7CisKKyAgICBwYXRoLmFkZEJlemll
ckN1cnZlVG8oRmxvYXRQb2ludCh4ICsgd2lkdGggLSB0b3BSaWdodFJhZGl1cy53aWR0aCgpICog
KDEgLSBRVUFSVEVSKSwgeSksIEZsb2F0UG9pbnQoeCArIHdpZHRoLCB5ICsgdG9wUmlnaHRSYWRp
dXMuaGVpZ2h0KCkgKiAoMSAtIFFVQVJURVIpKSwgRmxvYXRQb2ludCh4ICsgd2lkdGgsIHkgKyB0
b3BSaWdodFJhZGl1cy5oZWlnaHQoKSkpOworCisgICAgcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2lu
dCh4ICsgd2lkdGgsIHkgKyBoZWlnaHQgLSBib3R0b21SaWdodFJhZGl1cy5oZWlnaHQoKSkpOwor
CisgICAgcGF0aC5hZGRCZXppZXJDdXJ2ZVRvKEZsb2F0UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVp
Z2h0IC0gYm90dG9tUmlnaHRSYWRpdXMuaGVpZ2h0KCkgKiAoMSAtIFFVQVJURVIpKSwgRmxvYXRQ
b2ludCh4ICsgd2lkdGggLSBib3R0b21SaWdodFJhZGl1cy53aWR0aCgpICogKDEgLSBRVUFSVEVS
KSwgeSArIGhlaWdodCksIEZsb2F0UG9pbnQoeCArIHdpZHRoIC0gYm90dG9tUmlnaHRSYWRpdXMu
d2lkdGgoKSwgeSArIGhlaWdodCkpOworCisgICAgcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludCh4
ICsgYm90dG9tTGVmdFJhZGl1cy53aWR0aCgpLCB5ICsgaGVpZ2h0KSk7CisKKyAgICBwYXRoLmFk
ZEJlemllckN1cnZlVG8oRmxvYXRQb2ludCh4ICsgYm90dG9tTGVmdFJhZGl1cy53aWR0aCgpICog
KDEgLSBRVUFSVEVSKSwgeSArIGhlaWdodCksIEZsb2F0UG9pbnQoeCwgeSArIGhlaWdodCAtIGJv
dHRvbUxlZnRSYWRpdXMuaGVpZ2h0KCkgKiAoMSAtIFFVQVJURVIpKSwgRmxvYXRQb2ludCh4LCB5
ICsgaGVpZ2h0IC0gYm90dG9tTGVmdFJhZGl1cy5oZWlnaHQoKSkpOworCisgICAgcGF0aC5hZGRM
aW5lVG8oRmxvYXRQb2ludCh4LCB5ICsgdG9wTGVmdFJhZGl1cy5oZWlnaHQoKSkpOworCisgICAg
cGF0aC5hZGRCZXppZXJDdXJ2ZVRvKEZsb2F0UG9pbnQoeCwgeSArIHRvcExlZnRSYWRpdXMuaGVp
Z2h0KCkgKiAoMSAtIFFVQVJURVIpKSwgRmxvYXRQb2ludCh4ICsgdG9wTGVmdFJhZGl1cy53aWR0
aCgpICogKDEgLSBRVUFSVEVSKSwgeSksIEZsb2F0UG9pbnQoeCArIHRvcExlZnRSYWRpdXMud2lk
dGgoKSwgeSkpOworCisgICAgcGF0aC5jbG9zZVN1YnBhdGgoKTsKKworICAgIHJldHVybiBwYXRo
OworfQorCiBQYXRoIFBhdGg6OmNyZWF0ZVJlY3RhbmdsZShjb25zdCBGbG9hdFJlY3QmIHJlY3Rh
bmdsZSkKIHsKICAgICBQYXRoIHBhdGg7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAko
cmV2aXNpb24gMjE1OTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAkod29y
a2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgUGxhdGZvcm1QYXRoKiBwbGF0Zm9ybVBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH0K
IAogICAgICAgICBzdGF0aWMgUGF0aCBjcmVhdGVSb3VuZGVkUmVjdGFuZ2xlKGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSk7CisgICAgICAgIHN0YXRpYyBQ
YXRoIGNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRT
aXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25z
dCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmln
aHRSYWRpdXMpOwogICAgICAgICBzdGF0aWMgUGF0aCBjcmVhdGVSZWN0YW5nbGUoY29uc3QgRmxv
YXRSZWN0Jik7CiAgICAgICAgIHN0YXRpYyBQYXRoIGNyZWF0ZUVsbGlwc2UoY29uc3QgRmxvYXRQ
b2ludCYgY2VudGVyLCBmbG9hdCByeCwgZmxvYXQgcnkpOwogICAgICAgICBzdGF0aWMgUGF0aCBj
cmVhdGVDaXJjbGUoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBmbG9hdCByKTsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CShyZXZpc2lvbiAyMTU5OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzYsMzcgKzQzNiw5IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY28KICAgICBpZiAob2xkRmlsbENvbG9y
ICE9IGNvbG9yKQogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBjb2xvcik7CiAKLSAg
ICAvLyBBZGQgdGhlIGZvdXIgZWxsaXBzZXMgdG8gdGhlIHBhdGguICBUZWNobmljYWxseSB0aGlz
IHJlYWxseSBpc24ndCBnb29kIGVub3VnaCwgc2luY2Ugd2UgY291bGQgZW5kIHVwCi0gICAgLy8g
bm90IGNsaXBwaW5nIHRoZSBvdGhlciAzLzQgb2YgdGhlIGVsbGlwc2Ugd2UgZG9uJ3QgY2FyZSBh
Ym91dC4gIFdlJ3JlIHJlbHlpbmcgb24gdGhlIGZhY3QgdGhhdCBmb3IKLSAgICAvLyBub3JtYWwg
dXNlIGNhc2VzIHRoZXNlIGVsbGlwc2VzIHdvbid0IG92ZXJsYXAgb25lIGFub3RoZXIgKG9yIHdo
ZW4gdGhleSBkbyB0aGUgY3VydmF0dXJlIG9mIG9uZSB3aWxsCi0gICAgLy8gYmUgc3Vic3VtZWQg
YnkgdGhlIG90aGVyKS4KLSAgICBDR0NvbnRleHRBZGRFbGxpcHNlSW5SZWN0KGNvbnRleHQsIENH
UmVjdE1ha2UocmVjdC54KCksIHJlY3QueSgpLCB0b3BMZWZ0LndpZHRoKCkgKiAyLCB0b3BMZWZ0
LmhlaWdodCgpICogMikpOwotICAgIENHQ29udGV4dEFkZEVsbGlwc2VJblJlY3QoY29udGV4dCwg
Q0dSZWN0TWFrZShyZWN0LnJpZ2h0KCkgLSB0b3BSaWdodC53aWR0aCgpICogMiwgcmVjdC55KCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcFJp
Z2h0LndpZHRoKCkgKiAyLCB0b3BSaWdodC5oZWlnaHQoKSAqIDIpKTsKLSAgICBDR0NvbnRleHRB
ZGRFbGxpcHNlSW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UocmVjdC54KCksIHJlY3QuYm90dG9t
KCkgLSBib3R0b21MZWZ0LmhlaWdodCgpICogMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tTGVmdC53aWR0aCgpICogMiwgYm90dG9tTGVm
dC5oZWlnaHQoKSAqIDIpKTsKLSAgICBDR0NvbnRleHRBZGRFbGxpcHNlSW5SZWN0KGNvbnRleHQs
IENHUmVjdE1ha2UocmVjdC5yaWdodCgpIC0gYm90dG9tUmlnaHQud2lkdGgoKSAqIDIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuYm90dG9t
KCkgLSBib3R0b21SaWdodC5oZWlnaHQoKSAqIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbVJpZ2h0LndpZHRoKCkgKiAyLCBib3R0b21S
aWdodC5oZWlnaHQoKSAqIDIpKTsKLSAgICAKLSAgICAvLyBOb3cgYWRkIGZpdmUgcmVjdHMgKG9u
ZSBmb3IgZWFjaCBlZGdlIHJlY3QgaW4gYmV0d2VlbiB0aGUgcm91bmRlZCBjb3JuZXJzIGFuZCBv
bmUgZm9yIHRoZSBpbnRlcmlvcikuCi0gICAgQ0dDb250ZXh0QWRkUmVjdChjb250ZXh0LCBDR1Jl
Y3RNYWtlKHJlY3QueCgpICsgdG9wTGVmdC53aWR0aCgpLCByZWN0LnkoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC53aWR0aCgpIC0gdG9wTGVmdC53aWR0
aCgpIC0gdG9wUmlnaHQud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF4KHRvcExlZnQuaGVpZ2h0KCksIHRvcFJpZ2h0LmhlaWdodCgpKSkpOwotICAg
IENHQ29udGV4dEFkZFJlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShyZWN0LngoKSArIGJvdHRvbUxl
ZnQud2lkdGgoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
Y3QuYm90dG9tKCkgLSBtYXgoYm90dG9tTGVmdC5oZWlnaHQoKSwgYm90dG9tUmlnaHQuaGVpZ2h0
KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LndpZHRo
KCkgLSBib3R0b21MZWZ0LndpZHRoKCkgLSBib3R0b21SaWdodC53aWR0aCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgoYm90dG9tTGVmdC5oZWlnaHQoKSwg
Ym90dG9tUmlnaHQuaGVpZ2h0KCkpKSk7Ci0gICAgQ0dDb250ZXh0QWRkUmVjdChjb250ZXh0LCBD
R1JlY3RNYWtlKHJlY3QueCgpLCByZWN0LnkoKSArIHRvcExlZnQuaGVpZ2h0KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCh0b3BMZWZ0LndpZHRoKCksIGJv
dHRvbUxlZnQud2lkdGgoKSksIHJlY3QuaGVpZ2h0KCkgLSB0b3BMZWZ0LmhlaWdodCgpIC0gYm90
dG9tTGVmdC5oZWlnaHQoKSkpOwotICAgIENHQ29udGV4dEFkZFJlY3QoY29udGV4dCwgQ0dSZWN0
TWFrZShyZWN0LnJpZ2h0KCkgLSBtYXgodG9wUmlnaHQud2lkdGgoKSwgYm90dG9tUmlnaHQud2lk
dGgoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QueSgp
ICsgdG9wUmlnaHQuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1heCh0b3BSaWdodC53aWR0aCgpLCBib3R0b21SaWdodC53aWR0aCgpKSwgcmVjdC5o
ZWlnaHQoKSAtIHRvcFJpZ2h0LmhlaWdodCgpIC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkpKTsKLSAg
ICBDR0NvbnRleHRBZGRSZWN0KGNvbnRleHQsIENHUmVjdE1ha2UocmVjdC54KCkgKyBtYXgodG9w
TGVmdC53aWR0aCgpLCBib3R0b21MZWZ0LndpZHRoKCkpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWN0LnkoKSArIG1heCh0b3BMZWZ0LmhlaWdodCgpLCB0b3BS
aWdodC5oZWlnaHQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlY3Qud2lkdGgoKSAtIG1heCh0b3BMZWZ0LndpZHRoKCksIGJvdHRvbUxlZnQud2lkdGgoKSkg
LSBtYXgodG9wUmlnaHQud2lkdGgoKSwgYm90dG9tUmlnaHQud2lkdGgoKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuaGVpZ2h0KCkgLSBtYXgodG9wTGVm
dC5oZWlnaHQoKSwgdG9wUmlnaHQuaGVpZ2h0KCkpIC0gbWF4KGJvdHRvbUxlZnQuaGVpZ2h0KCks
IGJvdHRvbVJpZ2h0LmhlaWdodCgpKSkpOworICAgIGFkZFBhdGgoUGF0aDo6Y3JlYXRlUm91bmRl
ZFJlY3RhbmdsZShyZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmln
aHQpKTsKICAgICBDR0NvbnRleHRGaWxsUGF0aChjb250ZXh0KTsKKwogICAgIGlmIChvbGRGaWxs
Q29sb3IgIT0gY29sb3IpCiAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxD
b2xvcik7CiB9CkBAIC01MDIsNTkgKzQ3NCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0RWxsaXBzZUluUmUKICAgICBDR0NvbnRleHRFT0NsaXAocGxhdGZvcm1Db250ZXh0KCkpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0
LAotICAgIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJp
Z2h0KQotewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIC8vIE5lZWQgc3VmZmljaWVudCB3aWR0aCBhbmQgaGVpZ2h0IHRvIGNvbnRhaW4gdGhlc2Ug
Y3VydmVzLiAgU2FuaXR5IGNoZWNrIG91cgotICAgIC8vIGNvcm5lciByYWRpaSBhbmQgb3VyIHdp
ZHRoL2hlaWdodCB2YWx1ZXMgdG8gbWFrZSBzdXJlIHRoZSBjdXJ2ZXMgY2FuIGFsbCBmaXQuCi0g
ICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LndpZHRoKCkpIDwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHRvcExlZnQud2lkdGgoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wUmln
aHQud2lkdGgoKSkgfHwKLSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3Qud2lkdGgo
KSkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYm90dG9tTGVmdC53aWR0aCgpKSArIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihib3R0b21SaWdodC53aWR0aCgpKSB8fAotICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocmVjdC5oZWlnaHQoKSkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wTGVm
dC5oZWlnaHQoKSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYm90dG9tTGVmdC5oZWlnaHQoKSkg
fHwKLSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3QuaGVpZ2h0KCkpIDwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHRvcFJpZ2h0LmhlaWdodCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihib3R0b21SaWdodC5oZWlnaHQoKSkpCi0gICAgICAgIHJldHVybjsKLSAKLSAgICAvLyBDbGlw
IHRvIG91ciByZWN0LgotICAgIGNsaXAocmVjdCk7Ci0KLSAgICAvLyBPSywgdGhlIGN1cnZlcyBj
YW4gZml0LgotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0g
ICAgCi0gICAgLy8gQWRkIHRoZSBmb3VyIGVsbGlwc2VzIHRvIHRoZSBwYXRoLiAgVGVjaG5pY2Fs
bHkgdGhpcyByZWFsbHkgaXNuJ3QgZ29vZCBlbm91Z2gsIHNpbmNlIHdlIGNvdWxkIGVuZCB1cAot
ICAgIC8vIG5vdCBjbGlwcGluZyB0aGUgb3RoZXIgMy80IG9mIHRoZSBlbGxpcHNlIHdlIGRvbid0
IGNhcmUgYWJvdXQuICBXZSdyZSByZWx5aW5nIG9uIHRoZSBmYWN0IHRoYXQgZm9yCi0gICAgLy8g
bm9ybWFsIHVzZSBjYXNlcyB0aGVzZSBlbGxpcHNlcyB3b24ndCBvdmVybGFwIG9uZSBhbm90aGVy
IChvciB3aGVuIHRoZXkgZG8gdGhlIGN1cnZhdHVyZSBvZiBvbmUgd2lsbAotICAgIC8vIGJlIHN1
YnN1bWVkIGJ5IHRoZSBvdGhlcikuCi0gICAgQ0dDb250ZXh0QWRkRWxsaXBzZUluUmVjdChjb250
ZXh0LCBDR1JlY3RNYWtlKHJlY3QueCgpLCByZWN0LnkoKSwgdG9wTGVmdC53aWR0aCgpICogMiwg
dG9wTGVmdC5oZWlnaHQoKSAqIDIpKTsKLSAgICBDR0NvbnRleHRBZGRFbGxpcHNlSW5SZWN0KGNv
bnRleHQsIENHUmVjdE1ha2UocmVjdC5yaWdodCgpIC0gdG9wUmlnaHQud2lkdGgoKSAqIDIsIHJl
Y3QueSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0b3BSaWdodC53aWR0aCgpICogMiwgdG9wUmlnaHQuaGVpZ2h0KCkgKiAyKSk7Ci0gICAgQ0dD
b250ZXh0QWRkRWxsaXBzZUluUmVjdChjb250ZXh0LCBDR1JlY3RNYWtlKHJlY3QueCgpLCByZWN0
LmJvdHRvbSgpIC0gYm90dG9tTGVmdC5oZWlnaHQoKSAqIDIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQud2lkdGgoKSAqIDIsIGJv
dHRvbUxlZnQuaGVpZ2h0KCkgKiAyKSk7Ci0gICAgQ0dDb250ZXh0QWRkRWxsaXBzZUluUmVjdChj
b250ZXh0LCBDR1JlY3RNYWtlKHJlY3QucmlnaHQoKSAtIGJvdHRvbVJpZ2h0LndpZHRoKCkgKiAy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0
LmJvdHRvbSgpIC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b21SaWdodC53aWR0aCgpICogMiwg
Ym90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyKSk7Ci0gICAgCi0gICAgLy8gTm93IGFkZCBmaXZlIHJl
Y3RzIChvbmUgZm9yIGVhY2ggZWRnZSByZWN0IGluIGJldHdlZW4gdGhlIHJvdW5kZWQgY29ybmVy
cyBhbmQgb25lIGZvciB0aGUgaW50ZXJpb3IpLgotICAgIENHQ29udGV4dEFkZFJlY3QoY29udGV4
dCwgQ0dSZWN0TWFrZShyZWN0LngoKSArIHRvcExlZnQud2lkdGgoKSwgcmVjdC55KCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Qud2lkdGgoKSAtIHRvcExl
ZnQud2lkdGgoKSAtIHRvcFJpZ2h0LndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1heCh0b3BMZWZ0LmhlaWdodCgpLCB0b3BSaWdodC5oZWlnaHQoKSkp
KTsKLSAgICBDR0NvbnRleHRBZGRSZWN0KGNvbnRleHQsIENHUmVjdE1ha2UocmVjdC54KCkgKyBi
b3R0b21MZWZ0LndpZHRoKCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWN0LmJvdHRvbSgpIC0gbWF4KGJvdHRvbUxlZnQuaGVpZ2h0KCksIGJvdHRvbVJpZ2h0
LmhlaWdodCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVj
dC53aWR0aCgpIC0gYm90dG9tTGVmdC53aWR0aCgpIC0gYm90dG9tUmlnaHQud2lkdGgoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4KGJvdHRvbUxlZnQuaGVp
Z2h0KCksIGJvdHRvbVJpZ2h0LmhlaWdodCgpKSkpOwotICAgIENHQ29udGV4dEFkZFJlY3QoY29u
dGV4dCwgQ0dSZWN0TWFrZShyZWN0LngoKSwgcmVjdC55KCkgKyB0b3BMZWZ0LmhlaWdodCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgodG9wTGVmdC53aWR0
aCgpLCBib3R0b21MZWZ0LndpZHRoKCkpLCByZWN0LmhlaWdodCgpIC0gdG9wTGVmdC5oZWlnaHQo
KSAtIGJvdHRvbUxlZnQuaGVpZ2h0KCkpKTsKLSAgICBDR0NvbnRleHRBZGRSZWN0KGNvbnRleHQs
IENHUmVjdE1ha2UocmVjdC5yaWdodCgpIC0gbWF4KHRvcFJpZ2h0LndpZHRoKCksIGJvdHRvbVJp
Z2h0LndpZHRoKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWN0LnkoKSArIHRvcFJpZ2h0LmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXgodG9wUmlnaHQud2lkdGgoKSwgYm90dG9tUmlnaHQud2lkdGgoKSks
IHJlY3QuaGVpZ2h0KCkgLSB0b3BSaWdodC5oZWlnaHQoKSAtIGJvdHRvbVJpZ2h0LmhlaWdodCgp
KSk7Ci0gICAgQ0dDb250ZXh0QWRkUmVjdChjb250ZXh0LCBDR1JlY3RNYWtlKHJlY3QueCgpICsg
bWF4KHRvcExlZnQud2lkdGgoKSwgYm90dG9tTGVmdC53aWR0aCgpKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC55KCkgKyBtYXgodG9wTGVmdC5oZWlnaHQo
KSwgdG9wUmlnaHQuaGVpZ2h0KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWN0LndpZHRoKCkgLSBtYXgodG9wTGVmdC53aWR0aCgpLCBib3R0b21MZWZ0Lndp
ZHRoKCkpIC0gbWF4KHRvcFJpZ2h0LndpZHRoKCksIGJvdHRvbVJpZ2h0LndpZHRoKCkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LmhlaWdodCgpIC0gbWF4
KHRvcExlZnQuaGVpZ2h0KCksIHRvcFJpZ2h0LmhlaWdodCgpKSAtIG1heChib3R0b21MZWZ0Lmhl
aWdodCgpLCBib3R0b21SaWdodC5oZWlnaHQoKSkpKTsKLSAgICBDR0NvbnRleHRDbGlwKGNvbnRl
eHQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAo
Y29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHRoaWNrbmVzcykKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQpAQCAtNzA1LDYgKzYyNCwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cChjb25zdCBQYXRoJiBwCiAgICAgbV9kYXRhLT5jbGlwKHBhdGgpOwogfQogCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBQYXRoJiBwYXRoKQoreworICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgQ0dDb250ZXh0QmVn
aW5QYXRoKHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBDR0NvbnRleHRBZGRSZWN0KHBsYXRmb3Jt
Q29udGV4dCgpLCBDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3gocGxhdGZvcm1Db250ZXh0KCkp
KTsKKyAgICBDR0NvbnRleHRBZGRQYXRoKHBsYXRmb3JtQ29udGV4dCgpLCBwYXRoLnBsYXRmb3Jt
UGF0aCgpKTsKKyAgICBDR0NvbnRleHRFT0NsaXAocGxhdGZvcm1Db250ZXh0KCkpOworfQorCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2NhbGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkocmV2aXNpb24gMjE1OTkpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzIzLDYgKzcyMywxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChj
b25zdCBQYXRoJiBwCiAgICAgbV9kYXRhLT5wKCkuc2V0Q2xpcFBhdGgoKnBhdGgucGxhdGZvcm1Q
YXRoKCkpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBQYXRoJiBw
YXRoKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICAgICAgCisgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQpAQCAtNzkzLDc2ICs4MDIsNiBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjCiAgICAgbV9kYXRhLT5wKCkuc2V0Q2xp
cFBhdGgocGF0aCwgUXQ6OkludGVyc2VjdENsaXApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6YWRkUm91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUm
IHRvcExlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBib3R0b21SaWdo
dCkKLXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICAvLyBOZWVkIHN1ZmZpY2llbnQgd2lkdGggYW5kIGhlaWdodCB0byBjb250YWluIHRoZXNlIGN1
cnZlcy4gIFNhbml0eSBjaGVjayBvdXIgdG9wL2JvdHRvbQotICAgIC8vIHZhbHVlcyBhbmQgb3Vy
IHdpZHRoL2hlaWdodCB2YWx1ZXMgdG8gbWFrZSBzdXJlIHRoZSBjdXJ2ZXMgY2FuIGFsbCBmaXQu
Ci0gICAgaW50IHJlcXVpcmVkV2lkdGggPSBxTWF4KHRvcExlZnQud2lkdGgoKSArIHRvcFJpZ2h0
LndpZHRoKCksIGJvdHRvbUxlZnQud2lkdGgoKSArIGJvdHRvbVJpZ2h0LndpZHRoKCkpOwotICAg
IGlmIChyZXF1aXJlZFdpZHRoID4gcmVjdC53aWR0aCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpbnQgcmVxdWlyZWRIZWlnaHQgPSBxTWF4KHRvcExlZnQuaGVpZ2h0KCkgKyBib3R0b21MZWZ0
LmhlaWdodCgpLCB0b3BSaWdodC5oZWlnaHQoKSArIGJvdHRvbVJpZ2h0LmhlaWdodCgpKTsKLSAg
ICBpZiAocmVxdWlyZWRIZWlnaHQgPiByZWN0LmhlaWdodCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBDbGlwIHRvIG91ciByZWN0LgotICAgIGNsaXAocmVjdCk7Ci0KLSAgICAvLyBPSywg
dGhlIGN1cnZlcyBjYW4gZml0LgotICAgIFFQYWludGVyUGF0aCBwYXRoOwotCi0gICAgLy8gQWRk
IHRoZSBmb3VyIGVsbGlwc2VzIHRvIHRoZSBwYXRoLiAgVGVjaG5pY2FsbHkgdGhpcyByZWFsbHkg
aXNuJ3QgZ29vZCBlbm91Z2gsIHNpbmNlIHdlIGNvdWxkIGVuZCB1cAotICAgIC8vIG5vdCBjbGlw
cGluZyB0aGUgb3RoZXIgMy80IG9mIHRoZSBlbGxpcHNlIHdlIGRvbid0IGNhcmUgYWJvdXQuICBX
ZSdyZSByZWx5aW5nIG9uIHRoZSBmYWN0IHRoYXQgZm9yCi0gICAgLy8gbm9ybWFsIHVzZSBjYXNl
cyB0aGVzZSBlbGxpcHNlcyB3b24ndCBvdmVybGFwIG9uZSBhbm90aGVyIChvciB3aGVuIHRoZXkg
ZG8gdGhlIGN1cnZhdHVyZSBvZiBvbmUgd2lsbAotICAgIC8vIGJlIHN1YnN1bWVkIGJ5IHRoZSBv
dGhlcikuCi0gICAgcGF0aC5hZGRFbGxpcHNlKFFSZWN0RihyZWN0LngoKSwgcmVjdC55KCksIHRv
cExlZnQud2lkdGgoKSAqIDIsIHRvcExlZnQuaGVpZ2h0KCkgKiAyKSk7Ci0gICAgcGF0aC5hZGRF
bGxpcHNlKFFSZWN0RihyZWN0LnJpZ2h0KCkgLSB0b3BSaWdodC53aWR0aCgpICogMiwgcmVjdC55
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BSaWdodC53aWR0aCgpICogMiwgdG9w
UmlnaHQuaGVpZ2h0KCkgKiAyKSk7Ci0gICAgcGF0aC5hZGRFbGxpcHNlKFFSZWN0RihyZWN0Lngo
KSwgcmVjdC5ib3R0b20oKSAtIGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm90dG9tTGVmdC53aWR0aCgpICogMiwgYm90dG9tTGVmdC5oZWlnaHQo
KSAqIDIpKTsKLSAgICBwYXRoLmFkZEVsbGlwc2UoUVJlY3RGKHJlY3QucmlnaHQoKSAtIGJvdHRv
bVJpZ2h0LndpZHRoKCkgKiAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5ib3R0
b20oKSAtIGJvdHRvbVJpZ2h0LmhlaWdodCgpICogMiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvdHRvbVJpZ2h0LndpZHRoKCkgKiAyLCBib3R0b21SaWdodC5oZWlnaHQoKSAqIDIpKTsK
LQotICAgIGludCB0b3BMZWZ0UmlnaHRIZWlnaHRNYXggPSBxTWF4KHRvcExlZnQuaGVpZ2h0KCks
IHRvcFJpZ2h0LmhlaWdodCgpKTsKLSAgICBpbnQgYm90dG9tTGVmdFJpZ2h0SGVpZ2h0TWF4ID0g
cU1heChib3R0b21MZWZ0LmhlaWdodCgpLCBib3R0b21SaWdodC5oZWlnaHQoKSk7Ci0KLSAgICBp
bnQgdG9wQm90dG9tTGVmdFdpZHRoTWF4ID0gcU1heCh0b3BMZWZ0LndpZHRoKCksIGJvdHRvbUxl
ZnQud2lkdGgoKSk7Ci0gICAgaW50IHRvcEJvdHRvbVJpZ2h0V2lkdGhNYXggPSBxTWF4KHRvcFJp
Z2h0LndpZHRoKCksIGJvdHRvbVJpZ2h0LndpZHRoKCkpOwotCi0gICAgLy8gTm93IGFkZCBmaXZl
IHJlY3RzIChvbmUgZm9yIGVhY2ggZWRnZSByZWN0IGluIGJldHdlZW4gdGhlIHJvdW5kZWQgY29y
bmVycyBhbmQgb25lIGZvciB0aGUgaW50ZXJpb3IpLgotICAgIHBhdGguYWRkUmVjdChRUmVjdEYo
cmVjdC54KCkgKyB0b3BMZWZ0LndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICByZWN0
LnkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Qud2lkdGgoKSAtIHRvcExlZnQud2lk
dGgoKSAtIHRvcFJpZ2h0LndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICB0b3BMZWZ0
UmlnaHRIZWlnaHRNYXgpKTsKLQotICAgIHBhdGguYWRkUmVjdChRUmVjdEYocmVjdC54KCkgKyBi
b3R0b21MZWZ0LndpZHRoKCksIHJlY3QuYm90dG9tKCkgLSBib3R0b21MZWZ0UmlnaHRIZWlnaHRN
YXgsCi0gICAgICAgICAgICAgICAgICAgICAgICByZWN0LndpZHRoKCkgLSBib3R0b21MZWZ0Lndp
ZHRoKCkgLSBib3R0b21SaWdodC53aWR0aCgpLCBib3R0b21MZWZ0UmlnaHRIZWlnaHRNYXgpKTsK
LQotICAgIHBhdGguYWRkUmVjdChRUmVjdEYocmVjdC54KCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZWN0LnkoKSArIHRvcExlZnQuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0b3BCb3R0b21MZWZ0V2lkdGhNYXgsCi0gICAgICAgICAgICAgICAgICAgICAgICByZWN0Lmhl
aWdodCgpIC0gdG9wTGVmdC5oZWlnaHQoKSAtIGJvdHRvbUxlZnQuaGVpZ2h0KCkpKTsKLQotICAg
IHBhdGguYWRkUmVjdChRUmVjdEYocmVjdC5yaWdodCgpIC0gdG9wQm90dG9tUmlnaHRXaWR0aE1h
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QueSgpICsgdG9wUmlnaHQuaGVpZ2h0KCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b3BCb3R0b21SaWdodFdpZHRoTWF4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgcmVjdC5oZWlnaHQoKSAtIHRvcFJpZ2h0LmhlaWdodCgpIC0gYm90
dG9tUmlnaHQuaGVpZ2h0KCkpKTsKLQotICAgIHBhdGguYWRkUmVjdChRUmVjdEYocmVjdC54KCkg
KyB0b3BCb3R0b21MZWZ0V2lkdGhNYXgsCi0gICAgICAgICAgICAgICAgICAgICAgICByZWN0Lnko
KSArIHRvcExlZnRSaWdodEhlaWdodE1heCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Qu
d2lkdGgoKSAtIHRvcEJvdHRvbUxlZnRXaWR0aE1heCAtIHRvcEJvdHRvbVJpZ2h0V2lkdGhNYXgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWN0LmhlaWdodCgpIC0gdG9wTGVmdFJpZ2h0SGVp
Z2h0TWF4IC0gYm90dG9tTGVmdFJpZ2h0SGVpZ2h0TWF4KSk7Ci0KLSAgICBwYXRoLnNldEZpbGxS
dWxlKFF0OjpXaW5kaW5nRmlsbCk7Ci0gICAgbV9kYXRhLT5wKCkuc2V0Q2xpcFBhdGgocGF0aCwg
UXQ6OkludGVyc2VjdENsaXApOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y29uY2F0Q1RN
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvYm9yZGVyLXJhZGl1
cy1iaWctZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2Vk
IGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJl
YW0KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9ib3Jk
ZXItcmFkaXVzLWJpZy1leHBlY3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBl
CiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FB
QXlBQUFBSllDQVlBQUFDYWRvSndBQUFab1VsRVFWUjRuTzNkYld4VmhmM0E4ZDh0TFE0QgpBeXZF
OFJBRXlUSndrTG13VHNFdHdOalViREFKbVVpMnVBY1hFY0dScVROdWU4RWlPbDR3cFNNejRFd1c0
NGdFaG13TUY5S05PSFVZCkZEVkFZcGFSQ2VJQ200QThCYkNGbHZiOFh4QnZlQ3B0RVg3VlA1OVA0
b3ZlYys0NXY5UGppMzQ1NTk1VEtvcWlDQUFBZ0FRVm5UMEEKQUFCdzZSQWdBQUJBR2dFQ0FBQ2tF
U0FBQUVBYUFRSUFBS1FSSUFBQVFCb0JBZ0FBcEJFZ0FBQkFHZ0VDQUFDa3VhQUJjdVRJa2RpeApZ
MGVyeS9mdDJ4ZHZ2ZlhXaGR3bEFBRHdNZEptZ0V5Y09ERjY5KzRkTjk5OGMweWRPalc2ZE9rU1E0
WU1pVzk5NjF2eHBTOTlLYnAwCjZSSy8vLzN2WStuU3BYSGxsVmZHa2lWTFd0M1duRGx6WXZMa3lS
ZjBBQUFBZ0krUHlyWldhR3BxaW8wYk44YVFJVU1pSXFKYnQyNHgKYnR5NGVPcXBweUlpWXNHQ0JY
SDA2TkdZUG4xNlBQTElJK2ZjMXR5NWMyUC8vdjBYWUd3QUFPRGpxTTBBdWUrKys4cnhjVFozM1hW
WApiTjY4T1NJaXFxcXFvbFFxdGJwdWRYVjFWRmRYbi9GNlVSVG5mQjhBQVBEL1E1dTNZTjEwMDAz
blhONjllL2U0NFlZYnlqKzN0TFRFCm5EbHpZdENnUVRGaXhJall2bjE3UkVTOCsrNjdNWC8rL0Jn
OWVuUjUzZVhMbDhmaXhZdGovdno1TVdiTW1QTHJEei84Y05UVTFIVDQKWUFBQWdJKzJDLzR0V0N0
V3JJaXhZOGZHK3ZYcm83bTVPZWJObXhjUkVaV1ZsYkY5Ky9iWXVuVnJSRVFjUDM0OEhuMzAwYmo3
N3J2agp3UWNmak91dnZ6NWFXbG9pNHNTVmtnRURCbHpvMFFBQWdFNTJ3UU5rNHNTSk1XSENoQmc0
Y0dDTUh6OCt0bXpaRWhFUmZmdjJqWkVqClIwWlJGQkVSY2ZEZ3dkaThlWE9zV2JNbUlpTHV2UFBP
OHJLWk0yZkdxbFdyTHZSb0FBQkFKN3ZnQVhMeVp6bDY5KzRkUjQ0Y09XWFoKQjh2NzlPa1RVNlpN
aVVtVEpzV3NXYk5pOE9EQjBhVkxsd3M5RGdBQThCSFM1b2ZRTDZhbFM1ZEcvLzc5WStIQ2hiRng0
OGI0NjEvLwpHbGRjY1VWbmpnUUFBRnhFbmZZazlGMjdkc1dlUFh1aXRyWTI2dXJxNHMwMzM0eGx5
NVoxMWpnQUFFQ0NEZ1ZJUzB0TE5EWTJ0dm9zCmovcjYrcWl2cnkvLzNORFFFQTBORGFjc2IyaG9p
S0lvWXQrK2ZiRjgrZktJaUxqeHhodmpsbHR1aVI0OWVrUkV4THAxNjZLMnRyYkQKQndNQUFIeTB0
VHRBL3ZuUGY4Yk1tVE9qcGFVbFhucnBwVml3WUVFY09uU292SHpseXBYeDl0dHZSMTFkWFd6ZXZE
azJiZG9VZFhWMQpzVzNidG5qdXVlZml0ZGRlaTVVclY4Yjc3NzhmQ3hjdWpLYW1wbmo4OGNmanlT
ZWZqTldyVjBldlhyMWk2dFNwRVJIeDdMUFB4dno1Cjg2TzV1Zm5DSHpFQUFOQnBTc1VIWHoyVnJL
V2xKU29xS3VMZ3dZTlJWVlVWM2J0M0x5OHJpaUtPSGowYTNicDE2NHpSQUFDQWk2VFQKQWdRQUFM
ajBkTnFIMEFFQWdFdVBBQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUND
TkFBRUFBTklJRUFBQQpJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFB
QUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOCkFBRUFBTklJRUFBQUlJMEFBUUFBMGdn
UUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUIKQUFE
U0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVB
QU5JSUVBQUFJSTBBQVFBQQowZ2dRQUFBZ2pRQUJBQURTVkhiMkFCOVc2YUZTWjQrUXF2aEYwZGtq
QUFEQWVYTUZCQUFBU0NOQUFBQ0FOQUlFQUFCSUkwQUFBSUEwCkFnUUFBRWdqUUFBQWdEUUNCQUFB
U0NOQUFBQ0FOQi83QnhGZWFrcWx0aCs4V0JRZVZnZ0F3RWVUS3lBQUFFQWFBUUlBQUtRUklBQUEK
UUJvQkFnQUFwQkVnQUFCQUdnRUNBQUNrRVNBQUFFQWFBUUlBQUtRUklBQUFRQm9CQWdBQXBCRWdB
QUJBR2dFQ0FBQ2tFU0FBQUVBYQpBUUlBQUtRUklBQUFRQm9CQWdBQXBCRWdBQUJBR2dFQ0FBQ2tF
U0FBQUVBYUFRSUFBS1FSSUFBQVFCb0JBZ0FBcEJFZ0FBQkFHZ0VDCkFBQ2tFU0FBQUVBYUFRSUFB
S1FSSUFBQVFCb0JBZ0FBcEJFZ0FBQkFHZ0VDQUFDa0VTQUFBRUFhQVFJQUFLUVJJQUFBUUJvQkFn
QUEKcEJFZ0FBQkFHZ0VDQUFDa0VTQUFBRUFhQVFJQUFLUVJJQUFBUUJvQkFnQUFwQkVnQUFCQUdn
RUNBQUNrRVNBQUFFQWFBUUlBQUtRUgpJQUFBUUJvQkFnQUFwQkVnQUFCQUdnRUNBQUNrRVNBQUFF
QWFBUUlBQUtRcEZVVlJkUFlRRjF1cFZPcnNFVkpkQXFjVUFJQ1BLVmRBCkFBQ0FOQUlFQUFCSUkw
QUFBSUEwQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTQ05BQUFDQU5BSUVBQUJJVTluWkEyVHdZRDRBQVBo
b2NBVUUKQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTQ05BQUFDQU5BSUVBQUJJSTBB
QUFJQTBBZ1FBQUVnalFBQUFnRFFDQkFBQQpTQ05BQUFDQU5BSUVBQUJJSTBBQUFJQTBBZ1FBQUVn
alFBQUFnRFFDQkFBQVNDTkFBQUNBTkFJRUFBQklJMEFBQUlBMEFnUUFBRWdqClFBQUFnRFFDQkFB
QVNDTkFBQUNBTkFJRUFBQklJMEFBQUlBMEFnUUFBRWdqUUFBQWdEUUNCQUFBU0NOQUFBQ0FOQUlF
QUFCSUkwQUEKQUlBMEhRcVFRNGNPeFgvKzg1K0lpRGg4K0hBY1BYcTB2T3pJa1NPeFk4ZU9DenZk
U1k0ZE94YnIxNjl2ZFhsemMzTnMyYkxsdk4vZgpVUTBORGZIT08rKzBlLzNUOTc5djM3NTQ2NjIz
em50N0hkSFd1VGw5RmdBQXVGamFGU0QvL2U5LzQvYmJiNCtmL09RbnNYRGh3cWlwCnFZblJvMGZI
NXMyYkl5Smk2ZEtsY2VXVlY4YVNKVXN1eXBBYk5teUlMM3poQ3pGbHlwU3pMbi85OWRmajJtdXZq
ZW5UcDUvWCt6dHEKK2ZMbDBiOS8vMWl3WUVHNzFqL2IvdWZNbVJPVEowOCtyKzExUkh2T3pjbXpB
QURBeGRTdUFMbjMzbnZqOE9IRDhlU1RUOGFDQlF0aQovZnIxVVZsWkdUdDM3b3lJaUc5Lys5dHgx
VlZYWGJRaHI3dnV1dmorOTcvZjZ2S2FtcG9ZTjI1Y1ZGVlZuZGY3TytxMjIyNkx6MzcyCnMrMWUv
Mno3bnp0M2JxeGF0ZXE4dHRlV1k4ZU94UXN2dkJBUjdUczNKODhDQUFBWFU3c0NaTXVXTGJGang0
NW9hbXFLaUlpcXFxcDQKNnFtbll2LysvZVYxcXFxcW9sUXFYWndwSTZKcjE2NW4zWDVMUzB0RVJG
UldWa1pGUmV1SDA5cjd6OWRsbDEzV29lMmR2di9xNnVyNAo5S2MvZmQ3YmEwMVRVMVBjZnZ2dHNX
N2R1dkpyYloyYjAyZjVRRkVVSDNvZUFBQTRXYnNDWk5xMGFiRng0OGI0MnRlK0ZydDM3NDZJCmlN
OS8vdk5uM1BMVTB0SVNjK2JNaVVHREJzV0lFU05pKy9idDVXVkhqaHlKZSs2NUorNi8vLzZZUEhs
eXpKNDlPeG9hR2lMaXhDMUkKQXdZTWlOLzg1amNSRWJGczJiTDR6R2MrRXpObXpHaDFwdnI2K3Bn
NWMyWTg4c2dqTVdQR2pIampqVGM2ZE9Ebm1xYzl5MCsyYWRPbQpxS21waWZ2dnY3OThXOXE1dlB2
dXV6Ri8vdndZUFhwMHU3ZTNlL2Z1dU8rKysyTHMyTEV4YXRTb2VQWFZWOC82M2wvLyt0ZXhldlhx
CldMVnFWWHp2ZTkrTDk5OS9QeUphUHpkbm0yWDU4dVd4ZVBIaW1EOS9mb3daTTZiOCtzTVBQeHcx
TlRWdEhoOEFBTFNtWFFGeXp6MzMKeExoeDQrS2xsMTZLRVNOR3hIUFBQWGZXOVZhc1dCRmp4NDZO
OWV2WFIzTnpjOHliTjYrODdCdmYrRVpjZDkxMThkaGpqOFdLRlN0aQp3NFlOTVhYcTFJZzRjUXRT
cVZTS3c0Y1BSOFNKNEJrOGVQQXBWMWhPTjNYcTFCZzdkbXpNbVRNbkZpMWFGRysvL1hhSHJpQ2Nh
NTcyCkxEL1phNis5RmovNjBZL2lzY2NlaTJ1dnZiYk5mVmRXVnNiMjdkdGo2OWF0N2RwZWMzTnov
T0FIUDRpSEhub29YbmpoaGFpcHFZbHYKZnZPYmNmRGd3VFBlKzhBREQwUy9mdjNpMWx0dmphZWZm
anE2ZCs4ZUVhMmZtOU5uT1g3OGVEejY2S054OTkxM3g0TVBQaGpYWDM5OQorU3BUZFhWMURCZ3dv
TTNqQXdDQTFyUXJRSzY0NG9yNDI5LytGai83MmMvaXdJRURNWG55NUZpMGFORVo2MDJjT0RFbVRK
Z1FBd2NPCmpQSGp4NWUvbGFxdXJpNWVmdm5sbURadFdrU2N1Q1hvamp2dWlMLzg1Uy94eWl1dlJF
UkV0MjdkVGdtSXl5Ky92TldnZVBYVlYyUE4KbWpWeDAwMDNuVGlJaW9yNCt0ZS8zdTZEYm11ZTlz
ejdnU2VlZUNLcXE2dmp1OS85YnJ2MzM3ZHYzeGc1Y3VSWmIzRTYyL2IrOEljLwpSRkVVc1c3ZHVx
aXJxNHQrL2ZyRmUrKzlGLy80eHo5YTNjZnB2N3ZXenMzcHN4dzhlREEyYjk0Y2E5YXNpWWlJTysr
OHM3eHM1c3laClBpc0NBTUNIMHU2djRhMnFxb3A1OCtiRjg4OC9IMzM3OW8xWnMyYkZpaFVyVGxu
bjVEOTZlL2Z1SFVlT0hJbUlFLytpMzdkdjMxTSsKSlA3RkwzNHhJazdjYnRSUkw3NzRZZ3diTml4
NjllcFZmcTFIang3dHZnTFMxanp0blhmTm1qWHh5MS8rc2h4Q0hWRXFsYzZZdDdYdAp2ZkxLSzFG
ZFhSMWR1M2FOcmwyN3hnMDMzQkJyMTY2TlVhTkduWFA3cmYxODhyazVmWlkrZmZyRWxDbFRZdEtr
U1RGcjFxd1lQSGh3CmRPblNwY1BIQndBQVo5Tm1nTHp6emp2bFc2TWlJc2FPSFJ0Ly9PTWZJeUxP
Q0pEVzFOZlh4OTY5ZTAvNW8zZmt5SkZSV1ZsWi9veEMKUit6Y3VUUDI3dDE3eHV2dERaQzI1bW52
dkYvKzhwZWphOWV1OGVNZi83akR4M0Eyclcxdjc5NjlVVkZSRVYvOTZsZFArZTlpM1E2MQpkT25T
bUQxN2RpeGV2RGkrOHBXdnhLRkRoeTdLZmdBQXVQUzBHU0M3ZCsrT2hRc1hudkxhbURGall2RGd3
ZTErOE9Dd1ljT2l1Yms1ClhuLzk5ZkpyZS9ic2llUEhqOGZ3NGNQTHIzM3dXWU8yOU8vZlA5NTc3
NzM0OTcvLzNhNzFPenBQZStmdDJiTm5MRm15Sko1Kyt1bFkKdVhMbGVjMXlzdGEyTjJUSWtGaTdk
dTBwRDM0c2lpSmVmUEhGVnJkMXZ0K290V3ZYcnRpelowL1UxdFpHWFYxZHZQbm1tN0ZzMmJMegoy
aFlBQUp5dXpRQzUrdXFybzdhMjlwUS85bmZ0MmhVN2QrNDg1WE1YOWZYMVVWOWZYLzY1b2FHaC9L
MVJ0OTU2YXd3Y09ERFdybDFiClh2N0dHMi9Fc0dIRDR1YWJiNDZJRTFjWU5tellFSTJOamZHLy8v
MHZ0bTNiRnZ2MjdTdXYzOWpZV1A0YTROdHV1eTBxS3l2amlTZWUKS0MvZnNtVkw3TjI3TjVxYm04
OTZIQ2UvdjYxNTJqUHY4ZVBIb3lpS0dETm1UUHowcHorTkgvN3doK2Q4RXZ2SisvL2c5OVhRMEZE
KwpmTVc1dHZlZDczd25kdS9lSFhmZGRWY2NPSEFnOXV6WkUzUG56ajNyVitkR1JQVHExYXY4akpZ
REJ3NmM4OXljUHN1K2ZmdGkrZkxsCkVSRng0NDAzeGkyMzNCSTlldlNJaUloMTY5WkZiVzF0cThj
SUFBQnRLdHBoMkxCaHhmang0NHQ3NzcyM21EZHZYdkc1ejMydW1ENTkKZXRIWTJGZ1VSVkU4Kyt5
elJVVkZSWEhOTmRjVW16WnRLalp1M0ZnTUh6NjhxS3lzTEZhdlhsMFVSVkZzM0xpeHVPYWFhNHBm
L2VwWAp4Wm8xYTRwcDA2WVYvL3JYdjhyN2VQNzU1NHZxNnVyaTZxdXZMaDU0NElGaXhvd1p4WVFK
RTRxLy8vM3Z4WVlORzRwUm8wWVZFVkVzCldyU29PSGJzV1BITU04OFVQWHYyTElZUEgxNU1uVHEx
bURScFVqRm16SmppbVdlZU9XUCtzNzIvclhuT3RYekZpaFZGang0OWlxRkQKaHhicjE2OHZ0bTNi
Vmx4KytlVkZ2Mzc5aXNjZmY3ek4vYi84OHN2RjZOR2ppNGdvYW10cmk2VkxsN2E1dmNXTEZ4ZVhY
WFpaVVNxVgppcjU5K3haLyt0T2ZXajFmUC8vNXo0dFNxVlRjY2NjZHhlOSs5N3R6bnBzTkd6YWNN
c3VtVFp1S29VT0hGci85N1crTFAvLzV6OFhNCm1UT0xwcWFtb2lpS1l2YnMyY1duUHZXcDR2ang0
KzM1M3dZQUFNNVFLb3EybnphM2YvLysrT1FuUHhuMTlmV3hmZnYyR0RSb1VQVHMKMmZOOFlpZTJi
dDBhRlJVVk1YVG8wRE9XTnpZMlJuTnpjM1RyMWkyYW1wcGFmYkw1QjVxYm0rUEFnUVBScDArZk9I
cjBhSHppRTUrNApvUE8wdFR4YlkyTmo3Tml4STY2NjZxcW9yS3c4NTdwNzkrNk5QbjM2ZEhnZkxT
MHRVVkZSRVFjUEhveXFxcXJ5MS9oR25QaDlIRDE2Ck5McDE2OWJoN1FJQVFFUkV1d0lFQUFEZ1Ft
ajMxL0FDQUFCOFdBSUVBQUJJSTBBQUFJQTBBZ1FBQUVnalFBQUFnRFFDQkFBQVNDTkEKQUFDQU5B
SUVBQUJJSTBBQUFJQTBBZ1FBQUVnalFBQUFnRFFDQkFBQVNDTkFBQUNBTkFJRUFBQklJMEFBQUlB
MEFnUUFBRWdqUUFBQQpnRFFDQkFBQVNDTkFBQUNBTkFJRUFBQklJMEFBQUlBMEFnUUFBRWdqUUFB
QWdEUUNCQUFBU0NOQUFBQ0FOQUlFQUFCSUkwQUFBSUEwCkFnUUFBRWdqUUFBQWdEUUNCQUFBU0NO
QUFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTQ05BQUFDQU5BSUUKQUFC
SUkwQUFBSUEwQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTRlBaMlFOOFdLV0hTcDA5UXFyaUYwVm5qd0FB
QU9mTkZSQUFBQ0NOQUFFQQpBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NO
QUFFQUFOSjg3QjlFZUtrcGxkcCs4R0pSZUZnaEFBQWZUYTZBCkFBQUFhUVFJQUFDUVJvQUFBQUJw
QkFnQUFKQkdnQUFBQUdrRUNBQUFrRWFBQUFBQWFRUUlBQUNRUm9BQUFBQnBCQWdBQUpCR2dBQUEK
QUdrRUNBQUFrRWFBQUFBQWFRUUlBQUNRUm9BQUFBQnBCQWdBQUpCR2dBQUFBR2tFQ0FBQWtFYUFB
QUFBYVFRSUFBQ1FSb0FBQUFCcApCQWdBQUpCR2dBQUFBR2tFQ0FBQWtFYUFBQUFBYVFRSUFBQ1FS
b0FBQUFCcEJBZ0FBSkJHZ0FBQUFHa0VDQUFBa0VhQUFBQUFhUVFJCkFBQ1FSb0FBQUFCcEJBZ0FB
SkJHZ0FBQUFHa0VDQUFBa0VhQUFBQUFhUVFJQUFDUVJvQUFBQUJwQkFnQUFKQkdnQUFBQUdrRUNB
QUEKa0VhQUFBQUFhUVFJQUFDUVJvQUFBQUJwQkFnQUFKQkdnQUFBQUdrRUNBQUFrRWFBQUFBQWFR
UUlBQUNRcGxRVVJkSFpRMXhzcFZLcApzMGRJZFFtY1VnQUFQcVpjQVFFQUFOSUlFQUFBSUkwQUFR
QUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJRTFsClp3K1F3WVA1QUFEZ284
RVZFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFB
QTBnZ1EKQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFB
QkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQQpJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUND
TkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOCkFBRUFBTklJRUFB
QUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dR
QUFBZ2pRQUIKQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURT
Q0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQQowZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVB
QU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJCkVBQUFJSTBB
QVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdq
UUFCQUFEU0NCQUEKQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFB
Q0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZwpqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlF
QUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBCkFRQUEw
Z2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFB
RFNDQkFBQUNDTkFBRUEKQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFB
RUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEUwpDQkFBQUNDTkFBRUFBTklJRUFBQUlJ
MEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRCkFB
QWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JB
QUFDQ05BQUVBQU5JSUVBQUEKSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5J
SUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTgpBQUVBQU5JSUVBQUFJSTBBQVFB
QTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFC
CkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NO
QUFFQUFOSUlFQUFBSUkwQUFRQUEKMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFB
SUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSQpFQUFBSUkwQUFRQUEwZ2dR
QUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFND
QkFBCkFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFB
TklJRUFBQUlJMEFBUUFBMGdnUUFBQWcKalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFB
UUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQQpBUUFBMGdnUUFBQWdq
UUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFD
Q05BQUVBCkFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVB
QUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFMKQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBn
Z1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUQpBQUFnalFBQkFB
RFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFF
QUFOSUlFQUFBCklJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkw
QUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ04KQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFB
Z2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQgpBQURTQ0JB
QUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJ
RUFBQUlJMEFBUUFBCjBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFB
MGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUkKRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFC
QUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQQpBQ0NO
QUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5MOEg1ZER4
Y2U2c2NVaUFBQUFBRWxGClRrU3VRbUNDCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14628</attachid>
            <date>2007-05-19 10:18:47 -0700</date>
            <delta_ts>2007-05-19 15:58:39 -0700</delta_ts>
            <desc>Use single rounded rect path</desc>
            <filename>13320_r2.patch</filename>
            <type>text/plain</type>
            <size>34222</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIxNjAwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDctMDUtMTkgIE1pdHogUGV0dGVsICA8bWl0
ekB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIC0gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMjAKKyAg
ICAgICAgICByb3VuZGVkIGNvcm5lcnMgd2l0aCBkcm9wIHNoYWRvd3MgYXJlIHJlYWxseSBzbG93
CisKKyAgICAgICAgKiBmYXN0L2JveC1zaGFkb3cvYm9yZGVyLXJhZGl1cy1iaWctZXhwZWN0ZWQu
Y2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIGZhc3QvYm94LXNoYWRvdy9ib3JkZXItcmFkaXVz
LWJpZy1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGZhc3QvYm94LXNoYWRvdy9ib3Jk
ZXItcmFkaXVzLWJpZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvYm94LXNo
YWRvdy9ib3JkZXItcmFkaXVzLWJpZy5odG1sOiBBZGRlZC4KKwogMjAwNy0wNS0xOSAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1p
dHouCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvYm9yZGVyLXJhZGl1cy1iaWct
ZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hh
ZG93L2JvcmRlci1yYWRpdXMtYmlnLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93L2JvcmRlci1yYWRpdXMtYmlnLWV4cGVjdGVkLmNo
ZWNrc3VtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACithMTA4YzY5ZDkwOTUzODY2NzAzODlm
NGNmYWQ3YjI1NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvYm94LXNoYWRvdy9ib3JkZXItcmFkaXVzLWJpZy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93L2JvcmRlci1yYWRpdXMtYmlnLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9ib3Jk
ZXItcmFkaXVzLWJpZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUg
ODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBz
aXplIDc4NHg1NTIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOAor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMngxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMyOiAiVGhpczoiCisgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoNDAsNTgpIHNpemUgNjB4NjAgW2JnY29sb3I9IzAwODAwMF0KKyAgICAgIFJlbmRl
ckJsb2NrIHtQfSBhdCAoMCwxNTgpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDEzNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDEzNDogIlNob3VsZCBsb29rIGxpa2UgdGhpczoiCisgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoNDAsMjE2KSBzaXplIDYweDYwIFtiZ2NvbG9yPSMwMDgwMDBdCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2JveC1zaGFkb3cvYm9yZGVyLXJhZGl1cy1iaWcuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvYm9yZGVyLXJhZGl1cy1iaWcuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9ib3JkZXItcmFkaXVzLWJp
Zy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKKzxwPgorICAgIFRoaXM6Cis8L3A+
Cis8ZGl2IHN0eWxlPSJtYXJnaW46IDQwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyAtd2Via2l0LWJv
cmRlci1yYWRpdXM6IDQwcHg7IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IC13ZWJraXQtYm94
LXNoYWRvdzogYmxhY2sgMTBweCAxMHB4IDA7Ij48L2Rpdj4KKzxwPgorICAgIFNob3VsZCBsb29r
IGxpa2UgdGhpczoKKzwvcD4KKzxkaXYgc3R5bGU9Im1hcmdpbjogNDBweDsgYmFja2dyb3VuZDog
Z3JlZW47IHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IC13ZWJraXQtYm94LXNoYWRvdzogYmxh
Y2sgMTBweCAxMHB4IDA7Ij48L2Rpdj4KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTYwMCkKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMDctMDUtMTkgIE1pdHog
UGV0dGVsICA8bWl0ekB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzMjAKKyAgICAgICAgICByb3VuZGVkIGNvcm5lcnMgd2l0aCBkcm9wIHNoYWRvd3MgYXJl
IHJlYWxseSBzbG93CisKKyAgICAgICAgVGVzdCBmb3IgYSByZW5kZXJpbmcgYnVnIGZpeGVkIGJ5
IHRoaXMgcGF0Y2g6CisgICAgICAgICAgICBmYXN0L2JveC1zaGFkb3cvYm9yZGVyLXJhZGl1cy1i
aWcuaHRtbAorCisgICAgICAgIE5vIHRlc3QgZm9yIHRoZSBwZXJmb3JtYW5jZSBpbmdyZWRpZW50
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RDbGlwKTogTWFk
ZSBjcm9zcy1wbGF0Zm9ybS4KKyAgICAgICAgQ2hhbmdlZCB0byB1c2UgYSBzaW5nbGUgY2xpcHBp
bmcgcGF0aC4gSWYgYWxsIHRoZSByYWRpaSBjYW5ub3QgYmUKKyAgICAgICAgYWNjb21tb2RhdGVk
LCBjbGlwcyB0byBhIHJlY3QuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNs
aXBPdXRSb3VuZGVkUmVjdCk6IENoYW5nZWQgdG8gdXNlIGEgc2luZ2xlCisgICAgICAgIGNsaXBw
aW5nIHBhdGguIElmIGFsbCB0aGUgcmFkaWkgY2Fubm90IGJlIGFjY29tbW9kYXRlZCwgY2xpcHMg
b3V0IGEgcmVjdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aDogQWRkZWQgY2xpcE91dChjb25zdCBQYXRoJikuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFu
Z2xlKTogQWRkZWQuIFJldHVybnMgYSByb3VuZGVkIHJlY3RhbmdsZQorICAgICAgICB3aXRoIHRo
ZSBzcGVjaWZpZWQgcmFkaWkuIElmIGFsbCB0aGUgcmFkaWkgY2Fubm90IGJlIGFjY29tbW9kYXRl
ZCwgcmV0dXJucworICAgICAgICBhIHJlY3Rhbmd1bGFyIHBhdGguCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KTogQ2hhbmdlZCB0byB1c2UgYSBzaW5nbGUgcGF0aC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dCk6IEFkZGVkLgorCiAyMDA3LTA1LTE5ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWl0
ei4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAJKHJldmlzaW9uIDIxNTk5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTUsNDEgKzMxNSwyMiBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hCiAgICAgaW1hZ2UtPmRyYXdUaWxlZCh0
aGlzLCBkZXN0LCBzcmNSZWN0LCBoUnVsZSwgdlJ1bGUsIG9wKTsKIH0KIAordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwKKyAgICBjb25zdCBJbnRT
aXplJiBib3R0b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCkKK3sKKyAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjbGlwKFBhdGg6OmNy
ZWF0ZVJvdW5kZWRSZWN0YW5nbGUocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQs
IGJvdHRvbVJpZ2h0KSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRl
ZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3Qg
SW50U2l6ZSYgdG9wUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCi0gICAgLy8gTmVlZCBzdWZmaWNpZW50IHdpZHRoIGFuZCBoZWlnaHQgdG8gY29udGFpbiB0
aGVzZSBjdXJ2ZXMuICBTYW5pdHkgY2hlY2sgb3VyCi0gICAgLy8gY29ybmVyIHJhZGlpIGFuZCBv
dXIgd2lkdGgvaGVpZ2h0IHZhbHVlcyB0byBtYWtlIHN1cmUgdGhlIGN1cnZlcyBjYW4gYWxsIGZp
dC4KLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3Qud2lkdGgoKSkgPCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odG9wTGVmdC53aWR0aCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0
b3BSaWdodC53aWR0aCgpKSB8fAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC53
aWR0aCgpKSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21MZWZ0LndpZHRoKCkpICsgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJvdHRvbVJpZ2h0LndpZHRoKCkpIHx8Ci0gICAgICAgIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihyZWN0LmhlaWdodCgpKSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0
b3BMZWZ0LmhlaWdodCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21MZWZ0LmhlaWdo
dCgpKSB8fAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC5oZWlnaHQoKSkgPCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odG9wUmlnaHQuaGVpZ2h0KCkpICsgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJvdHRvbVJpZ2h0LmhlaWdodCgpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IC8vIENsaXAgb3V0IGVhY2ggc2hhcGUgb25lIGJ5IG9uZS4KLSAgICBjbGlwT3V0RWxsaXBzZUlu
UmVjdChJbnRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgdG9wTGVmdC53aWR0aCgpICogMiwgdG9w
TGVmdC5oZWlnaHQoKSAqIDIpKTsKLSAgICBjbGlwT3V0RWxsaXBzZUluUmVjdChJbnRSZWN0KHJl
Y3QucmlnaHQoKSAtIHRvcFJpZ2h0LndpZHRoKCkgKiAyLCByZWN0LnkoKSwgdG9wUmlnaHQud2lk
dGgoKSAqIDIsIHRvcFJpZ2h0LmhlaWdodCgpICogMikpOwotICAgIGNsaXBPdXRFbGxpcHNlSW5S
ZWN0KEludFJlY3QocmVjdC54KCksIHJlY3QuYm90dG9tKCkgLSBib3R0b21MZWZ0LmhlaWdodCgp
ICogMiwgYm90dG9tTGVmdC53aWR0aCgpICogMiwgYm90dG9tTGVmdC5oZWlnaHQoKSAqIDIpKTsK
LSAgICBjbGlwT3V0RWxsaXBzZUluUmVjdChJbnRSZWN0KHJlY3QucmlnaHQoKSAtIGJvdHRvbVJp
Z2h0LndpZHRoKCkgKiAyLCByZWN0LmJvdHRvbSgpIC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAy
LCBib3R0b21SaWdodC53aWR0aCgpICogMiwgYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyKSk7Ci0g
ICAgY2xpcE91dChJbnRSZWN0KHJlY3QueCgpICsgdG9wTGVmdC53aWR0aCgpLCByZWN0LnkoKSwK
LSAgICAgICAgICAgICAgICAgICAgcmVjdC53aWR0aCgpIC0gdG9wTGVmdC53aWR0aCgpIC0gdG9w
UmlnaHQud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgbWF4KHRvcExlZnQuaGVpZ2h0KCks
IHRvcFJpZ2h0LmhlaWdodCgpKSkpOwotICAgIGNsaXBPdXQoSW50UmVjdChyZWN0LngoKSArIGJv
dHRvbUxlZnQud2lkdGgoKSwgCi0gICAgICAgICAgICAgICAgICAgIHJlY3QuYm90dG9tKCkgLSBt
YXgoYm90dG9tTGVmdC5oZWlnaHQoKSwgYm90dG9tUmlnaHQuaGVpZ2h0KCkpLAotICAgICAgICAg
ICAgICAgICAgICByZWN0LndpZHRoKCkgLSBib3R0b21MZWZ0LndpZHRoKCkgLSBib3R0b21SaWdo
dC53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICBtYXgoYm90dG9tTGVmdC5oZWlnaHQoKSwg
Ym90dG9tUmlnaHQuaGVpZ2h0KCkpKSk7Ci0gICAgY2xpcE91dChJbnRSZWN0KHJlY3QueCgpLCBy
ZWN0LnkoKSArIHRvcExlZnQuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgIG1heCh0b3BM
ZWZ0LndpZHRoKCksIGJvdHRvbUxlZnQud2lkdGgoKSksIHJlY3QuaGVpZ2h0KCkgLSB0b3BMZWZ0
LmhlaWdodCgpIC0gYm90dG9tTGVmdC5oZWlnaHQoKSkpOwotICAgIGNsaXBPdXQoSW50UmVjdChy
ZWN0LnJpZ2h0KCkgLSBtYXgodG9wUmlnaHQud2lkdGgoKSwgYm90dG9tUmlnaHQud2lkdGgoKSks
Ci0gICAgICAgICAgICAgICAgICAgIHJlY3QueSgpICsgdG9wUmlnaHQuaGVpZ2h0KCksCi0gICAg
ICAgICAgICAgICAgICAgIG1heCh0b3BSaWdodC53aWR0aCgpLCBib3R0b21SaWdodC53aWR0aCgp
KSwgcmVjdC5oZWlnaHQoKSAtIHRvcFJpZ2h0LmhlaWdodCgpIC0gYm90dG9tUmlnaHQuaGVpZ2h0
KCkpKTsKLSAgICBjbGlwT3V0KEludFJlY3QocmVjdC54KCkgKyBtYXgodG9wTGVmdC53aWR0aCgp
LCBib3R0b21MZWZ0LndpZHRoKCkpLAotICAgICAgICAgICAgICAgICAgICByZWN0LnkoKSArIG1h
eCh0b3BMZWZ0LmhlaWdodCgpLCB0b3BSaWdodC5oZWlnaHQoKSksCi0gICAgICAgICAgICAgICAg
ICAgIHJlY3Qud2lkdGgoKSAtIG1heCh0b3BMZWZ0LndpZHRoKCksIGJvdHRvbUxlZnQud2lkdGgo
KSkgLSBtYXgodG9wUmlnaHQud2lkdGgoKSwgYm90dG9tUmlnaHQud2lkdGgoKSksCi0gICAgICAg
ICAgICAgICAgICAgIHJlY3QuaGVpZ2h0KCkgLSBtYXgodG9wTGVmdC5oZWlnaHQoKSwgdG9wUmln
aHQuaGVpZ2h0KCkpIC0gbWF4KGJvdHRvbUxlZnQuaGVpZ2h0KCksIGJvdHRvbVJpZ2h0LmhlaWdo
dCgpKSkpOworCisgICAgY2xpcE91dChQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFuZ2xlKHJlY3Qs
IHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkpOwogfQogCiBpbnQg
R3JhcGhpY3NDb250ZXh0Ojp0ZXh0RHJhd2luZ01vZGUoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAyMTU5OSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3Nyw5ICsxNzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAgICAgdm9pZCBiZWdp
blBhdGgoKTsKLSAgICAgICAgdm9pZCBhZGRQYXRoKGNvbnN0IFBhdGgmIHBhdGgpOworICAgICAg
ICB2b2lkIGFkZFBhdGgoY29uc3QgUGF0aCYpOwogCiAgICAgICAgIHZvaWQgY2xpcChjb25zdCBQ
YXRoJik7CisgICAgICAgIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJik7CiAKICAgICAgICAgdm9p
ZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKTsKICAgICAgICAgdm9pZCByb3RhdGUoZmxvYXQgYW5n
bGVJblJhZGlhbnMpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCShyZXZpc2lv
biAyMTU5OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1OCw2ICsxNTgsNDggQEAgUGF0aCBQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFu
Z2xlKGNvbnN0IAogICAgIHJldHVybiBwYXRoOwogfQogCitQYXRoIFBhdGg6OmNyZWF0ZVJvdW5k
ZWRSZWN0YW5nbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0YW5nbGUsIGNvbnN0IEZsb2F0U2l6ZSYg
dG9wTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxv
YXRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFk
aXVzKQoreworICAgIFBhdGggcGF0aDsKKworICAgIGZsb2F0IHdpZHRoID0gcmVjdGFuZ2xlLndp
ZHRoKCk7CisgICAgZmxvYXQgaGVpZ2h0ID0gcmVjdGFuZ2xlLmhlaWdodCgpOworICAgIGlmICh3
aWR0aCA8PSAwLjAgfHwgaGVpZ2h0IDw9IDAuMCkKKyAgICAgICAgcmV0dXJuIHBhdGg7CisKKyAg
ICBpZiAod2lkdGggPCB0b3BMZWZ0UmFkaXVzLndpZHRoKCkgKyB0b3BSaWdodFJhZGl1cy53aWR0
aCgpCisgICAgICAgICAgICB8fCB3aWR0aCA8IGJvdHRvbUxlZnRSYWRpdXMud2lkdGgoKSArIGJv
dHRvbVJpZ2h0UmFkaXVzLndpZHRoKCkKKyAgICAgICAgICAgIHx8IGhlaWdodCA8IHRvcExlZnRS
YWRpdXMuaGVpZ2h0KCkgKyBib3R0b21MZWZ0UmFkaXVzLmhlaWdodCgpCisgICAgICAgICAgICB8
fCBoZWlnaHQgPCB0b3BSaWdodFJhZGl1cy5oZWlnaHQoKSArIGJvdHRvbVJpZ2h0UmFkaXVzLmhl
aWdodCgpKQorICAgICAgICAvLyBJZiBhbGwgdGhlIHJhZGlpIGNhbm5vdCBiZSBhY2NvbW1vZGF0
ZWQsIHJldHVybiBhIHJlY3QuCisgICAgICAgIHJldHVybiBjcmVhdGVSZWN0YW5nbGUocmVjdGFu
Z2xlKTsKKworICAgIGZsb2F0IHggPSByZWN0YW5nbGUueCgpOworICAgIGZsb2F0IHkgPSByZWN0
YW5nbGUueSgpOworCisgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludCh4ICsgdG9wTGVmdFJhZGl1
cy53aWR0aCgpLCB5KSk7CisKKyAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KHggKyB3aWR0
aCAtIHRvcFJpZ2h0UmFkaXVzLndpZHRoKCksIHkpKTsKKworICAgIHBhdGguYWRkQmV6aWVyQ3Vy
dmVUbyhGbG9hdFBvaW50KHggKyB3aWR0aCAtIHRvcFJpZ2h0UmFkaXVzLndpZHRoKCkgKiAoMSAt
IFFVQVJURVIpLCB5KSwgRmxvYXRQb2ludCh4ICsgd2lkdGgsIHkgKyB0b3BSaWdodFJhZGl1cy5o
ZWlnaHQoKSAqICgxIC0gUVVBUlRFUikpLCBGbG9hdFBvaW50KHggKyB3aWR0aCwgeSArIHRvcFJp
Z2h0UmFkaXVzLmhlaWdodCgpKSk7CisKKyAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KHgg
KyB3aWR0aCwgeSArIGhlaWdodCAtIGJvdHRvbVJpZ2h0UmFkaXVzLmhlaWdodCgpKSk7CisKKyAg
ICBwYXRoLmFkZEJlemllckN1cnZlVG8oRmxvYXRQb2ludCh4ICsgd2lkdGgsIHkgKyBoZWlnaHQg
LSBib3R0b21SaWdodFJhZGl1cy5oZWlnaHQoKSAqICgxIC0gUVVBUlRFUikpLCBGbG9hdFBvaW50
KHggKyB3aWR0aCAtIGJvdHRvbVJpZ2h0UmFkaXVzLndpZHRoKCkgKiAoMSAtIFFVQVJURVIpLCB5
ICsgaGVpZ2h0KSwgRmxvYXRQb2ludCh4ICsgd2lkdGggLSBib3R0b21SaWdodFJhZGl1cy53aWR0
aCgpLCB5ICsgaGVpZ2h0KSk7CisKKyAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KHggKyBi
b3R0b21MZWZ0UmFkaXVzLndpZHRoKCksIHkgKyBoZWlnaHQpKTsKKworICAgIHBhdGguYWRkQmV6
aWVyQ3VydmVUbyhGbG9hdFBvaW50KHggKyBib3R0b21MZWZ0UmFkaXVzLndpZHRoKCkgKiAoMSAt
IFFVQVJURVIpLCB5ICsgaGVpZ2h0KSwgRmxvYXRQb2ludCh4LCB5ICsgaGVpZ2h0IC0gYm90dG9t
TGVmdFJhZGl1cy5oZWlnaHQoKSAqICgxIC0gUVVBUlRFUikpLCBGbG9hdFBvaW50KHgsIHkgKyBo
ZWlnaHQgLSBib3R0b21MZWZ0UmFkaXVzLmhlaWdodCgpKSk7CisKKyAgICBwYXRoLmFkZExpbmVU
byhGbG9hdFBvaW50KHgsIHkgKyB0b3BMZWZ0UmFkaXVzLmhlaWdodCgpKSk7CisKKyAgICBwYXRo
LmFkZEJlemllckN1cnZlVG8oRmxvYXRQb2ludCh4LCB5ICsgdG9wTGVmdFJhZGl1cy5oZWlnaHQo
KSAqICgxIC0gUVVBUlRFUikpLCBGbG9hdFBvaW50KHggKyB0b3BMZWZ0UmFkaXVzLndpZHRoKCkg
KiAoMSAtIFFVQVJURVIpLCB5KSwgRmxvYXRQb2ludCh4ICsgdG9wTGVmdFJhZGl1cy53aWR0aCgp
LCB5KSk7CisKKyAgICBwYXRoLmNsb3NlU3VicGF0aCgpOworCisgICAgcmV0dXJuIHBhdGg7Cit9
CisKIFBhdGggUGF0aDo6Y3JlYXRlUmVjdGFuZ2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdGFuZ2xl
KQogewogICAgIFBhdGggcGF0aDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCShyZXZp
c2lvbiAyMTU5OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQ
bGF0Zm9ybVBhdGgqIHBsYXRmb3JtUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQogCiAg
ICAgICAgIHN0YXRpYyBQYXRoIGNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUoY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRTaXplJiByb3VuZGluZ1JhZGlpKTsKKyAgICAgICAgc3RhdGljIFBhdGgg
Y3JlYXRlUm91bmRlZFJlY3RhbmdsZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUm
IHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZs
b2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJh
ZGl1cyk7CiAgICAgICAgIHN0YXRpYyBQYXRoIGNyZWF0ZVJlY3RhbmdsZShjb25zdCBGbG9hdFJl
Y3QmKTsKICAgICAgICAgc3RhdGljIFBhdGggY3JlYXRlRWxsaXBzZShjb25zdCBGbG9hdFBvaW50
JiBjZW50ZXIsIGZsb2F0IHJ4LCBmbG9hdCByeSk7CiAgICAgICAgIHN0YXRpYyBQYXRoIGNyZWF0
ZUNpcmNsZShjb25zdCBGbG9hdFBvaW50JiBjZW50ZXIsIGZsb2F0IHIpOwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJl
dmlzaW9uIDIxNTk5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNiwzNyArNDM2LDkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjbwogICAgIGlmIChvbGRGaWxsQ29sb3IgIT0g
Y29sb3IpCiAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yKTsKIAotICAgIC8v
IEFkZCB0aGUgZm91ciBlbGxpcHNlcyB0byB0aGUgcGF0aC4gIFRlY2huaWNhbGx5IHRoaXMgcmVh
bGx5IGlzbid0IGdvb2QgZW5vdWdoLCBzaW5jZSB3ZSBjb3VsZCBlbmQgdXAKLSAgICAvLyBub3Qg
Y2xpcHBpbmcgdGhlIG90aGVyIDMvNCBvZiB0aGUgZWxsaXBzZSB3ZSBkb24ndCBjYXJlIGFib3V0
LiAgV2UncmUgcmVseWluZyBvbiB0aGUgZmFjdCB0aGF0IGZvcgotICAgIC8vIG5vcm1hbCB1c2Ug
Y2FzZXMgdGhlc2UgZWxsaXBzZXMgd29uJ3Qgb3ZlcmxhcCBvbmUgYW5vdGhlciAob3Igd2hlbiB0
aGV5IGRvIHRoZSBjdXJ2YXR1cmUgb2Ygb25lIHdpbGwKLSAgICAvLyBiZSBzdWJzdW1lZCBieSB0
aGUgb3RoZXIpLgotICAgIENHQ29udGV4dEFkZEVsbGlwc2VJblJlY3QoY29udGV4dCwgQ0dSZWN0
TWFrZShyZWN0LngoKSwgcmVjdC55KCksIHRvcExlZnQud2lkdGgoKSAqIDIsIHRvcExlZnQuaGVp
Z2h0KCkgKiAyKSk7Ci0gICAgQ0dDb250ZXh0QWRkRWxsaXBzZUluUmVjdChjb250ZXh0LCBDR1Jl
Y3RNYWtlKHJlY3QucmlnaHQoKSAtIHRvcFJpZ2h0LndpZHRoKCkgKiAyLCByZWN0LnkoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wUmlnaHQu
d2lkdGgoKSAqIDIsIHRvcFJpZ2h0LmhlaWdodCgpICogMikpOwotICAgIENHQ29udGV4dEFkZEVs
bGlwc2VJblJlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShyZWN0LngoKSwgcmVjdC5ib3R0b20oKSAt
IGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib3R0b21MZWZ0LndpZHRoKCkgKiAyLCBib3R0b21MZWZ0Lmhl
aWdodCgpICogMikpOwotICAgIENHQ29udGV4dEFkZEVsbGlwc2VJblJlY3QoY29udGV4dCwgQ0dS
ZWN0TWFrZShyZWN0LnJpZ2h0KCkgLSBib3R0b21SaWdodC53aWR0aCgpICogMiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5ib3R0b20oKSAt
IGJvdHRvbVJpZ2h0LmhlaWdodCgpICogMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm90dG9tUmlnaHQud2lkdGgoKSAqIDIsIGJvdHRvbVJpZ2h0
LmhlaWdodCgpICogMikpOwotICAgIAotICAgIC8vIE5vdyBhZGQgZml2ZSByZWN0cyAob25lIGZv
ciBlYWNoIGVkZ2UgcmVjdCBpbiBiZXR3ZWVuIHRoZSByb3VuZGVkIGNvcm5lcnMgYW5kIG9uZSBm
b3IgdGhlIGludGVyaW9yKS4KLSAgICBDR0NvbnRleHRBZGRSZWN0KGNvbnRleHQsIENHUmVjdE1h
a2UocmVjdC54KCkgKyB0b3BMZWZ0LndpZHRoKCksIHJlY3QueSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LndpZHRoKCkgLSB0b3BMZWZ0LndpZHRoKCkg
LSB0b3BSaWdodC53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYXgodG9wTGVmdC5oZWlnaHQoKSwgdG9wUmlnaHQuaGVpZ2h0KCkpKSk7Ci0gICAgQ0dD
b250ZXh0QWRkUmVjdChjb250ZXh0LCBDR1JlY3RNYWtlKHJlY3QueCgpICsgYm90dG9tTGVmdC53
aWR0aCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5i
b3R0b20oKSAtIG1heChib3R0b21MZWZ0LmhlaWdodCgpLCBib3R0b21SaWdodC5oZWlnaHQoKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Qud2lkdGgoKSAt
IGJvdHRvbUxlZnQud2lkdGgoKSAtIGJvdHRvbVJpZ2h0LndpZHRoKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heChib3R0b21MZWZ0LmhlaWdodCgpLCBib3R0
b21SaWdodC5oZWlnaHQoKSkpKTsKLSAgICBDR0NvbnRleHRBZGRSZWN0KGNvbnRleHQsIENHUmVj
dE1ha2UocmVjdC54KCksIHJlY3QueSgpICsgdG9wTGVmdC5oZWlnaHQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4KHRvcExlZnQud2lkdGgoKSwgYm90dG9t
TGVmdC53aWR0aCgpKSwgcmVjdC5oZWlnaHQoKSAtIHRvcExlZnQuaGVpZ2h0KCkgLSBib3R0b21M
ZWZ0LmhlaWdodCgpKSk7Ci0gICAgQ0dDb250ZXh0QWRkUmVjdChjb250ZXh0LCBDR1JlY3RNYWtl
KHJlY3QucmlnaHQoKSAtIG1heCh0b3BSaWdodC53aWR0aCgpLCBib3R0b21SaWdodC53aWR0aCgp
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC55KCkgKyB0
b3BSaWdodC5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF4KHRvcFJpZ2h0LndpZHRoKCksIGJvdHRvbVJpZ2h0LndpZHRoKCkpLCByZWN0LmhlaWdo
dCgpIC0gdG9wUmlnaHQuaGVpZ2h0KCkgLSBib3R0b21SaWdodC5oZWlnaHQoKSkpOwotICAgIENH
Q29udGV4dEFkZFJlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShyZWN0LngoKSArIG1heCh0b3BMZWZ0
LndpZHRoKCksIGJvdHRvbUxlZnQud2lkdGgoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlY3QueSgpICsgbWF4KHRvcExlZnQuaGVpZ2h0KCksIHRvcFJpZ2h0
LmhlaWdodCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVj
dC53aWR0aCgpIC0gbWF4KHRvcExlZnQud2lkdGgoKSwgYm90dG9tTGVmdC53aWR0aCgpKSAtIG1h
eCh0b3BSaWdodC53aWR0aCgpLCBib3R0b21SaWdodC53aWR0aCgpKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5oZWlnaHQoKSAtIG1heCh0b3BMZWZ0Lmhl
aWdodCgpLCB0b3BSaWdodC5oZWlnaHQoKSkgLSBtYXgoYm90dG9tTGVmdC5oZWlnaHQoKSwgYm90
dG9tUmlnaHQuaGVpZ2h0KCkpKSk7CisgICAgYWRkUGF0aChQYXRoOjpjcmVhdGVSb3VuZGVkUmVj
dGFuZ2xlKHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkp
OwogICAgIENHQ29udGV4dEZpbGxQYXRoKGNvbnRleHQpOworCiAgICAgaWYgKG9sZEZpbGxDb2xv
ciAhPSBjb2xvcikKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xkRmlsbENvbG9y
KTsKIH0KQEAgLTUwMiw1OSArNDc0LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRF
bGxpcHNlSW5SZQogICAgIENHQ29udGV4dEVPQ2xpcChwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYg
cmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsCi0g
ICAgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQp
Ci17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ly8gTmVlZCBzdWZmaWNpZW50IHdpZHRoIGFuZCBoZWlnaHQgdG8gY29udGFpbiB0aGVzZSBjdXJ2
ZXMuICBTYW5pdHkgY2hlY2sgb3VyCi0gICAgLy8gY29ybmVyIHJhZGlpIGFuZCBvdXIgd2lkdGgv
aGVpZ2h0IHZhbHVlcyB0byBtYWtlIHN1cmUgdGhlIGN1cnZlcyBjYW4gYWxsIGZpdC4KLSAgICBp
ZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3Qud2lkdGgoKSkgPCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odG9wTGVmdC53aWR0aCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0b3BSaWdodC53
aWR0aCgpKSB8fAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC53aWR0aCgpKSA8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21MZWZ0LndpZHRoKCkpICsgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJvdHRvbVJpZ2h0LndpZHRoKCkpIHx8Ci0gICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyZWN0LmhlaWdodCgpKSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0b3BMZWZ0Lmhl
aWdodCgpKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3R0b21MZWZ0LmhlaWdodCgpKSB8fAot
ICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjdC5oZWlnaHQoKSkgPCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odG9wUmlnaHQuaGVpZ2h0KCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJv
dHRvbVJpZ2h0LmhlaWdodCgpKSkKLSAgICAgICAgcmV0dXJuOwotIAotICAgIC8vIENsaXAgdG8g
b3VyIHJlY3QuCi0gICAgY2xpcChyZWN0KTsKLQotICAgIC8vIE9LLCB0aGUgY3VydmVzIGNhbiBm
aXQuCi0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKLSAgICAK
LSAgICAvLyBBZGQgdGhlIGZvdXIgZWxsaXBzZXMgdG8gdGhlIHBhdGguICBUZWNobmljYWxseSB0
aGlzIHJlYWxseSBpc24ndCBnb29kIGVub3VnaCwgc2luY2Ugd2UgY291bGQgZW5kIHVwCi0gICAg
Ly8gbm90IGNsaXBwaW5nIHRoZSBvdGhlciAzLzQgb2YgdGhlIGVsbGlwc2Ugd2UgZG9uJ3QgY2Fy
ZSBhYm91dC4gIFdlJ3JlIHJlbHlpbmcgb24gdGhlIGZhY3QgdGhhdCBmb3IKLSAgICAvLyBub3Jt
YWwgdXNlIGNhc2VzIHRoZXNlIGVsbGlwc2VzIHdvbid0IG92ZXJsYXAgb25lIGFub3RoZXIgKG9y
IHdoZW4gdGhleSBkbyB0aGUgY3VydmF0dXJlIG9mIG9uZSB3aWxsCi0gICAgLy8gYmUgc3Vic3Vt
ZWQgYnkgdGhlIG90aGVyKS4KLSAgICBDR0NvbnRleHRBZGRFbGxpcHNlSW5SZWN0KGNvbnRleHQs
IENHUmVjdE1ha2UocmVjdC54KCksIHJlY3QueSgpLCB0b3BMZWZ0LndpZHRoKCkgKiAyLCB0b3BM
ZWZ0LmhlaWdodCgpICogMikpOwotICAgIENHQ29udGV4dEFkZEVsbGlwc2VJblJlY3QoY29udGV4
dCwgQ0dSZWN0TWFrZShyZWN0LnJpZ2h0KCkgLSB0b3BSaWdodC53aWR0aCgpICogMiwgcmVjdC55
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv
cFJpZ2h0LndpZHRoKCkgKiAyLCB0b3BSaWdodC5oZWlnaHQoKSAqIDIpKTsKLSAgICBDR0NvbnRl
eHRBZGRFbGxpcHNlSW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UocmVjdC54KCksIHJlY3QuYm90
dG9tKCkgLSBib3R0b21MZWZ0LmhlaWdodCgpICogMiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tTGVmdC53aWR0aCgpICogMiwgYm90dG9t
TGVmdC5oZWlnaHQoKSAqIDIpKTsKLSAgICBDR0NvbnRleHRBZGRFbGxpcHNlSW5SZWN0KGNvbnRl
eHQsIENHUmVjdE1ha2UocmVjdC5yaWdodCgpIC0gYm90dG9tUmlnaHQud2lkdGgoKSAqIDIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuYm90
dG9tKCkgLSBib3R0b21SaWdodC5oZWlnaHQoKSAqIDIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbVJpZ2h0LndpZHRoKCkgKiAyLCBib3R0
b21SaWdodC5oZWlnaHQoKSAqIDIpKTsKLSAgICAKLSAgICAvLyBOb3cgYWRkIGZpdmUgcmVjdHMg
KG9uZSBmb3IgZWFjaCBlZGdlIHJlY3QgaW4gYmV0d2VlbiB0aGUgcm91bmRlZCBjb3JuZXJzIGFu
ZCBvbmUgZm9yIHRoZSBpbnRlcmlvcikuCi0gICAgQ0dDb250ZXh0QWRkUmVjdChjb250ZXh0LCBD
R1JlY3RNYWtlKHJlY3QueCgpICsgdG9wTGVmdC53aWR0aCgpLCByZWN0LnkoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC53aWR0aCgpIC0gdG9wTGVmdC53
aWR0aCgpIC0gdG9wUmlnaHQud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF4KHRvcExlZnQuaGVpZ2h0KCksIHRvcFJpZ2h0LmhlaWdodCgpKSkpOwot
ICAgIENHQ29udGV4dEFkZFJlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShyZWN0LngoKSArIGJvdHRv
bUxlZnQud2lkdGgoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlY3QuYm90dG9tKCkgLSBtYXgoYm90dG9tTGVmdC5oZWlnaHQoKSwgYm90dG9tUmlnaHQuaGVp
Z2h0KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0Lndp
ZHRoKCkgLSBib3R0b21MZWZ0LndpZHRoKCkgLSBib3R0b21SaWdodC53aWR0aCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgoYm90dG9tTGVmdC5oZWlnaHQo
KSwgYm90dG9tUmlnaHQuaGVpZ2h0KCkpKSk7Ci0gICAgQ0dDb250ZXh0QWRkUmVjdChjb250ZXh0
LCBDR1JlY3RNYWtlKHJlY3QueCgpLCByZWN0LnkoKSArIHRvcExlZnQuaGVpZ2h0KCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCh0b3BMZWZ0LndpZHRoKCks
IGJvdHRvbUxlZnQud2lkdGgoKSksIHJlY3QuaGVpZ2h0KCkgLSB0b3BMZWZ0LmhlaWdodCgpIC0g
Ym90dG9tTGVmdC5oZWlnaHQoKSkpOwotICAgIENHQ29udGV4dEFkZFJlY3QoY29udGV4dCwgQ0dS
ZWN0TWFrZShyZWN0LnJpZ2h0KCkgLSBtYXgodG9wUmlnaHQud2lkdGgoKSwgYm90dG9tUmlnaHQu
d2lkdGgoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Qu
eSgpICsgdG9wUmlnaHQuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1heCh0b3BSaWdodC53aWR0aCgpLCBib3R0b21SaWdodC53aWR0aCgpKSwgcmVj
dC5oZWlnaHQoKSAtIHRvcFJpZ2h0LmhlaWdodCgpIC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkpKTsK
LSAgICBDR0NvbnRleHRBZGRSZWN0KGNvbnRleHQsIENHUmVjdE1ha2UocmVjdC54KCkgKyBtYXgo
dG9wTGVmdC53aWR0aCgpLCBib3R0b21MZWZ0LndpZHRoKCkpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWN0LnkoKSArIG1heCh0b3BMZWZ0LmhlaWdodCgpLCB0
b3BSaWdodC5oZWlnaHQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlY3Qud2lkdGgoKSAtIG1heCh0b3BMZWZ0LndpZHRoKCksIGJvdHRvbUxlZnQud2lkdGgo
KSkgLSBtYXgodG9wUmlnaHQud2lkdGgoKSwgYm90dG9tUmlnaHQud2lkdGgoKSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuaGVpZ2h0KCkgLSBtYXgodG9w
TGVmdC5oZWlnaHQoKSwgdG9wUmlnaHQuaGVpZ2h0KCkpIC0gbWF4KGJvdHRvbUxlZnQuaGVpZ2h0
KCksIGJvdHRvbVJpZ2h0LmhlaWdodCgpKSkpOwotICAgIENHQ29udGV4dENsaXAoY29udGV4dCk7
Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChjb25z
dCBJbnRSZWN0JiByZWN0LCBpbnQgdGhpY2tuZXNzKQogewogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCkBAIC03MDUsNiArNjI0LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNv
bnN0IFBhdGgmIHAKICAgICBtX2RhdGEtPmNsaXAocGF0aCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwT3V0KGNvbnN0IFBhdGgmIHBhdGgpCit7CisgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBDR0NvbnRleHRCZWdpblBh
dGgocGxhdGZvcm1Db250ZXh0KCkpOworICAgIENHQ29udGV4dEFkZFJlY3QocGxhdGZvcm1Db250
ZXh0KCksIENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveChwbGF0Zm9ybUNvbnRleHQoKSkpOwor
ICAgIENHQ29udGV4dEFkZFBhdGgocGxhdGZvcm1Db250ZXh0KCksIHBhdGgucGxhdGZvcm1QYXRo
KCkpOworICAgIENHQ29udGV4dEVPQ2xpcChwbGF0Zm9ybUNvbnRleHQoKSk7Cit9CisKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzY2FsZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCShyZXZpc2lvbiAyMTU5OSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MjMsNiArNzIzLDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0
IFBhdGgmIHAKICAgICBtX2RhdGEtPnAoKS5zZXRDbGlwUGF0aCgqcGF0aC5wbGF0Zm9ybVBhdGgo
KSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IFBhdGgmIHBhdGgp
Cit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAg
ICAKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC03OTMsNzYgKzgwMiw2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjphZGRJbm5lclJvdW5kZWRSZWMKICAgICBtX2RhdGEtPnAoKS5zZXRDbGlwUGF0
aChwYXRoLCBRdDo6SW50ZXJzZWN0Q2xpcCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojph
ZGRSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9w
TGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50
U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0KQot
ewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IE5lZWQgc3VmZmljaWVudCB3aWR0aCBhbmQgaGVpZ2h0IHRvIGNvbnRhaW4gdGhlc2UgY3VydmVz
LiAgU2FuaXR5IGNoZWNrIG91ciB0b3AvYm90dG9tCi0gICAgLy8gdmFsdWVzIGFuZCBvdXIgd2lk
dGgvaGVpZ2h0IHZhbHVlcyB0byBtYWtlIHN1cmUgdGhlIGN1cnZlcyBjYW4gYWxsIGZpdC4KLSAg
ICBpbnQgcmVxdWlyZWRXaWR0aCA9IHFNYXgodG9wTGVmdC53aWR0aCgpICsgdG9wUmlnaHQud2lk
dGgoKSwgYm90dG9tTGVmdC53aWR0aCgpICsgYm90dG9tUmlnaHQud2lkdGgoKSk7Ci0gICAgaWYg
KHJlcXVpcmVkV2lkdGggPiByZWN0LndpZHRoKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlu
dCByZXF1aXJlZEhlaWdodCA9IHFNYXgodG9wTGVmdC5oZWlnaHQoKSArIGJvdHRvbUxlZnQuaGVp
Z2h0KCksIHRvcFJpZ2h0LmhlaWdodCgpICsgYm90dG9tUmlnaHQuaGVpZ2h0KCkpOwotICAgIGlm
IChyZXF1aXJlZEhlaWdodCA+IHJlY3QuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIENsaXAgdG8gb3VyIHJlY3QuCi0gICAgY2xpcChyZWN0KTsKLQotICAgIC8vIE9LLCB0aGUg
Y3VydmVzIGNhbiBmaXQuCi0gICAgUVBhaW50ZXJQYXRoIHBhdGg7Ci0KLSAgICAvLyBBZGQgdGhl
IGZvdXIgZWxsaXBzZXMgdG8gdGhlIHBhdGguICBUZWNobmljYWxseSB0aGlzIHJlYWxseSBpc24n
dCBnb29kIGVub3VnaCwgc2luY2Ugd2UgY291bGQgZW5kIHVwCi0gICAgLy8gbm90IGNsaXBwaW5n
IHRoZSBvdGhlciAzLzQgb2YgdGhlIGVsbGlwc2Ugd2UgZG9uJ3QgY2FyZSBhYm91dC4gIFdlJ3Jl
IHJlbHlpbmcgb24gdGhlIGZhY3QgdGhhdCBmb3IKLSAgICAvLyBub3JtYWwgdXNlIGNhc2VzIHRo
ZXNlIGVsbGlwc2VzIHdvbid0IG92ZXJsYXAgb25lIGFub3RoZXIgKG9yIHdoZW4gdGhleSBkbyB0
aGUgY3VydmF0dXJlIG9mIG9uZSB3aWxsCi0gICAgLy8gYmUgc3Vic3VtZWQgYnkgdGhlIG90aGVy
KS4KLSAgICBwYXRoLmFkZEVsbGlwc2UoUVJlY3RGKHJlY3QueCgpLCByZWN0LnkoKSwgdG9wTGVm
dC53aWR0aCgpICogMiwgdG9wTGVmdC5oZWlnaHQoKSAqIDIpKTsKLSAgICBwYXRoLmFkZEVsbGlw
c2UoUVJlY3RGKHJlY3QucmlnaHQoKSAtIHRvcFJpZ2h0LndpZHRoKCkgKiAyLCByZWN0LnkoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcFJpZ2h0LndpZHRoKCkgKiAyLCB0b3BSaWdo
dC5oZWlnaHQoKSAqIDIpKTsKLSAgICBwYXRoLmFkZEVsbGlwc2UoUVJlY3RGKHJlY3QueCgpLCBy
ZWN0LmJvdHRvbSgpIC0gYm90dG9tTGVmdC5oZWlnaHQoKSAqIDIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBib3R0b21MZWZ0LndpZHRoKCkgKiAyLCBib3R0b21MZWZ0LmhlaWdodCgpICog
MikpOwotICAgIHBhdGguYWRkRWxsaXBzZShRUmVjdEYocmVjdC5yaWdodCgpIC0gYm90dG9tUmln
aHQud2lkdGgoKSAqIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LmJvdHRvbSgp
IC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym90dG9tUmlnaHQud2lkdGgoKSAqIDIsIGJvdHRvbVJpZ2h0LmhlaWdodCgpICogMikpOwotCi0g
ICAgaW50IHRvcExlZnRSaWdodEhlaWdodE1heCA9IHFNYXgodG9wTGVmdC5oZWlnaHQoKSwgdG9w
UmlnaHQuaGVpZ2h0KCkpOwotICAgIGludCBib3R0b21MZWZ0UmlnaHRIZWlnaHRNYXggPSBxTWF4
KGJvdHRvbUxlZnQuaGVpZ2h0KCksIGJvdHRvbVJpZ2h0LmhlaWdodCgpKTsKLQotICAgIGludCB0
b3BCb3R0b21MZWZ0V2lkdGhNYXggPSBxTWF4KHRvcExlZnQud2lkdGgoKSwgYm90dG9tTGVmdC53
aWR0aCgpKTsKLSAgICBpbnQgdG9wQm90dG9tUmlnaHRXaWR0aE1heCA9IHFNYXgodG9wUmlnaHQu
d2lkdGgoKSwgYm90dG9tUmlnaHQud2lkdGgoKSk7Ci0KLSAgICAvLyBOb3cgYWRkIGZpdmUgcmVj
dHMgKG9uZSBmb3IgZWFjaCBlZGdlIHJlY3QgaW4gYmV0d2VlbiB0aGUgcm91bmRlZCBjb3JuZXJz
IGFuZCBvbmUgZm9yIHRoZSBpbnRlcmlvcikuCi0gICAgcGF0aC5hZGRSZWN0KFFSZWN0RihyZWN0
LngoKSArIHRvcExlZnQud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QueSgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC53aWR0aCgpIC0gdG9wTGVmdC53aWR0aCgp
IC0gdG9wUmlnaHQud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvcExlZnRSaWdo
dEhlaWdodE1heCkpOwotCi0gICAgcGF0aC5hZGRSZWN0KFFSZWN0RihyZWN0LngoKSArIGJvdHRv
bUxlZnQud2lkdGgoKSwgcmVjdC5ib3R0b20oKSAtIGJvdHRvbUxlZnRSaWdodEhlaWdodE1heCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Qud2lkdGgoKSAtIGJvdHRvbUxlZnQud2lkdGgo
KSAtIGJvdHRvbVJpZ2h0LndpZHRoKCksIGJvdHRvbUxlZnRSaWdodEhlaWdodE1heCkpOwotCi0g
ICAgcGF0aC5hZGRSZWN0KFFSZWN0RihyZWN0LngoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJlY3QueSgpICsgdG9wTGVmdC5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRv
cEJvdHRvbUxlZnRXaWR0aE1heCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuaGVpZ2h0
KCkgLSB0b3BMZWZ0LmhlaWdodCgpIC0gYm90dG9tTGVmdC5oZWlnaHQoKSkpOwotCi0gICAgcGF0
aC5hZGRSZWN0KFFSZWN0RihyZWN0LnJpZ2h0KCkgLSB0b3BCb3R0b21SaWdodFdpZHRoTWF4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC55KCkgKyB0b3BSaWdodC5oZWlnaHQoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRvcEJvdHRvbVJpZ2h0V2lkdGhNYXgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZWN0LmhlaWdodCgpIC0gdG9wUmlnaHQuaGVpZ2h0KCkgLSBib3R0b21S
aWdodC5oZWlnaHQoKSkpOwotCi0gICAgcGF0aC5hZGRSZWN0KFFSZWN0RihyZWN0LngoKSArIHRv
cEJvdHRvbUxlZnRXaWR0aE1heCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QueSgpICsg
dG9wTGVmdFJpZ2h0SGVpZ2h0TWF4LAotICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC53aWR0
aCgpIC0gdG9wQm90dG9tTGVmdFdpZHRoTWF4IC0gdG9wQm90dG9tUmlnaHRXaWR0aE1heCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJlY3QuaGVpZ2h0KCkgLSB0b3BMZWZ0UmlnaHRIZWlnaHRN
YXggLSBib3R0b21MZWZ0UmlnaHRIZWlnaHRNYXgpKTsKLQotICAgIHBhdGguc2V0RmlsbFJ1bGUo
UXQ6OldpbmRpbmdGaWxsKTsKLSAgICBtX2RhdGEtPnAoKS5zZXRDbGlwUGF0aChwYXRoLCBRdDo6
SW50ZXJzZWN0Q2xpcCk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpjb25jYXRDVE0oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9ib3JkZXItcmFkaXVzLWJp
Zy1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMg
YSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93L2JvcmRlci1y
YWRpdXMtYmlnLWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAg
KyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBeUFB
QUFKWUNBWUFBQUNhZG9Kd0FBQVpvVWxFUVZSNG5PM2RiV3hWaGYzQThkOHRMUTRCCkF5dkU4UkFF
eVRKd2tMbXdUc0V0d05qVWJEQUptVWkydUFjWEVjR1JxVE51ZThFaU9sNHdwU016NEV3VzQ0Z0Vo
bXdNRjlLTk9IVVkKRkRWQVlwYVJDZUlDbTRBOEJiQ0ZsdmI4WHhCdmVDcHRFWDdWUDU5UDRvdmVj
KzQ1djlQamkzNDU1OTVUS29xaUNBQUFnQVFWblQwQQpBQUJ3NlJBZ0FBQkFHZ0VDQUFDa0VTQUFB
RUFhQVFJQUFLUVJJQUFBUUJvQkFnQUFwQkVnQUFCQUdnRUNBQUNrdWFBQmN1VElrZGl4ClkwZXJ5
L2Z0MnhkdnZmWFdoZHdsQUFEd01kSm1nRXljT0RGNjkrNGROOTk4YzB5ZE9qVzZkT2tTUTRZTWlX
OTk2MXZ4cFM5OUticDAKNlJLLy8vM3ZZK25TcFhIbGxWZkdraVZMV3QzV25EbHpZdkxreVJmMEFB
QUFnSStQeXJaV2FHcHFpbzBiTjhhUUlVTWlJcUpidDI0eApidHk0ZU9xcHB5SWlZc0dDQlhIMDZO
R1lQbjE2UFBMSUkrZmMxdHk1YzJQLy92MFhZR3dBQU9EanFNMEF1ZSsrKzhyeGNUWjMzWFZYCmJO
NjhPU0lpcXFxcW9sUXF0YnB1ZFhWMVZGZFhuL0Y2VVJUbmZCOEFBUEQvUTV1M1lOMTAwMDNuWE42
OWUvZTQ0WVlieWorM3RMVEUKbkRsell0Q2dRVEZpeElqWXZuMTdSRVM4Kys2N01YLysvQmc5ZW5S
NTNlWExsOGZpeFl0ai92ejVNV2JNbVBMckR6LzhjTlRVMUhUNApZQUFBZ0krMkMvNHRXQ3RXcklp
eFk4ZkcrdlhybzdtNU9lYk5teGNSRVpXVmxiRjkrL2JZdW5WclJFUWNQMzQ4SG4zMDBiajc3cnZq
CndRY2ZqT3V2dno1YVdsb2k0c1NWa2dFREJsem8wUUFBZ0U1MndRTms0c1NKTVdIQ2hCZzRjR0NN
SHo4K3RtelpFaEVSZmZ2MmpaRWoKUjBaUkZCRVJjZkRnd2RpOGVYT3NXYk1tSWlMdXZQUE84ckta
TTJmR3FsV3JMdlJvQUFCQUo3dmdBWEx5WnpsNjkrNGRSNDRjT1dYWgpCOHY3OU9rVFU2Wk1pVW1U
SnNXc1diTmk4T0RCMGFWTGx3czlEZ0FBOEJIUzVvZlFMNmFsUzVkRy8vNzlZK0hDaGJGeDQ4YjQ2
MS8vCkdsZGNjVVZuamdRQUFGeEVuZllrOUYyN2RzV2VQWHVpdHJZMjZ1cnE0czAzMzR4bHk1WjEx
amdBQUVDQ0RnVklTMHRMTkRZMnR2b3MKai9yNitxaXZyeS8vM05EUUVBME5EYWNzYjJob2lLSW9Z
dCsrZmJGOCtmS0lpTGp4eGh2amxsdHVpUjQ5ZWtSRXhMcDE2NksydHJiRApCd01BQUh5MHRUdEEv
dm5QZjhiTW1UT2pwYVVsWG5ycHBWaXdZRUVjT25Tb3ZIemx5cFh4OXR0dlIxMWRYV3pldkRrMmJk
b1VkWFYxCnNXM2J0bmp1dWVmaXRkZGVpNVVyVjhiNzc3OGZDeGN1akthbXBuajg4Y2ZqeVNlZmpO
V3JWMGV2WHIxaTZ0U3BFUkh4N0xQUHh2ejUKODZPNXVmbkNIekVBQU5CcFNzVUhYejJWcktXbEpT
b3FLdUxnd1lOUlZWVVYzYnQzTHk4cmlpS09IajBhM2JwMTY0elJBQUNBaTZUVApBZ1FBQUxqMGRO
cUgwQUVBZ0V1UEFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFF
QUFOSUlFQUFBCklJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkw
QUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ04KQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFB
Z2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQgpBQURTQ0JB
QUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJ
RUFBQUlJMEFBUUFBCjBnZ1FBQUFnalFBQkFBRFNWSGIyQUI5VzZhRlNaNCtRcXZoRjBka2pBQURB
ZVhNRkJBQUFTQ05BQUFDQU5BSUVBQUJJSTBBQUFJQTAKQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTQ05B
QUFDQU5CLzdCeEZlYWtxbHRoKzhXQlFlVmdnQXdFZVRLeUFBQUVBYUFRSUFBS1FSSUFBQQpRQm9C
QWdBQXBCRWdBQUJBR2dFQ0FBQ2tFU0FBQUVBYUFRSUFBS1FSSUFBQVFCb0JBZ0FBcEJFZ0FBQkFH
Z0VDQUFDa0VTQUFBRUFhCkFRSUFBS1FSSUFBQVFCb0JBZ0FBcEJFZ0FBQkFHZ0VDQUFDa0VTQUFB
RUFhQVFJQUFLUVJJQUFBUUJvQkFnQUFwQkVnQUFCQUdnRUMKQUFDa0VTQUFBRUFhQVFJQUFLUVJJ
QUFBUUJvQkFnQUFwQkVnQUFCQUdnRUNBQUNrRVNBQUFFQWFBUUlBQUtRUklBQUFRQm9CQWdBQQpw
QkVnQUFCQUdnRUNBQUNrRVNBQUFFQWFBUUlBQUtRUklBQUFRQm9CQWdBQXBCRWdBQUJBR2dFQ0FB
Q2tFU0FBQUVBYUFRSUFBS1FSCklBQUFRQm9CQWdBQXBCRWdBQUJBR2dFQ0FBQ2tFU0FBQUVBYUFR
SUFBS1FwRlVWUmRQWVFGMXVwVk9yc0VWSmRBcWNVQUlDUEtWZEEKQUFDQU5BSUVBQUJJSTBBQUFJ
QTBBZ1FBQUVnalFBQUFnRFFDQkFBQVNDTkFBQUNBTkFJRUFBQklVOW5aQTJUd1lENEFBUGhvY0FV
RQpBQUJJSTBBQUFJQTBBZ1FBQUVnalFBQUFnRFFDQkFBQVNDTkFBQUNBTkFJRUFBQklJMEFBQUlB
MEFnUUFBRWdqUUFBQWdEUUNCQUFBClNDTkFBQUNBTkFJRUFBQklJMEFBQUlBMEFnUUFBRWdqUUFB
QWdEUUNCQUFBU0NOQUFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2oKUUFBQWdEUUNCQUFBU0NO
QUFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTQ05BQUFDQU5BSUVBQUJJ
STBBQQpBSUEwSFFxUVE0Y094WC8rODUrSWlEaDgrSEFjUFhxMHZPeklrU094WThlT0N6dmRTWTRk
T3hicjE2OXZkWGx6YzNOczJiTGx2Ti9mClVRME5EZkhPTysrMGUvM1Q5Nzl2Mzc1NDY2MjN6bnQ3
SGRIV3VUbDlGZ0FBdUZqYUZTRC8vZTkvNC9iYmI0K2YvT1Fuc1hEaHdxaXAKcVluUm8wZkg1czJi
SXlKaTZkS2xjZVdWVjhhU0pVc3V5cEFiTm15SUwzemhDekZseXBTekxuLzk5ZGZqMm11dmplblRw
NS9YK3p0cQorZkxsMGI5Ly8xaXdZRUc3MWovYi91Zk1tUk9USjA4K3IrMTFSSHZPemNtekFBREF4
ZFN1QUxuMzNudmo4T0hEOGVTVFQ4YUNCUXRpCi9mcjFVVmxaR1R0MzdveUlpRzkvKzl0eDFWVlhY
YlFocjd2dXV2ais5Ny9mNnZLYW1wb1lOMjVjVkZWVm5kZjdPK3EyMjI2THozNzIKcysxZS8yejdu
enQzYnF4YXRlcTh0dGVXWThlT3hRc3Z2QkFSN1RzM0o4OENBQUFYVTdzQ1pNdVdMYkZqeDQ1b2Ft
cUtpSWlxcXFwNAo2cW1uWXYvKy9lVjFxcXFxb2xRcVhad3BJNkpyMTY1bjNYNUxTMHRFUkZSV1Zr
WkZSZXVIMDlyN3o5ZGxsMTNXb2UyZHZ2L3E2dXI0CjlLYy9mZDdiYTAxVFUxUGNmdnZ0c1c3ZHV2
SnJiWjJiMDJmNVFGRVVIM29lQUFBNFdic0NaTnEwYWJGeDQ4YjQydGUrRnJ0Mzc0NkkKaU05Ly92
Tm4zUExVMHRJU2MrYk1pVUdEQnNXSUVTTmkrL2J0NVdWSGpoeUplKzY1Sis2Ly8vNllQSGx5eko0
OU94b2FHaUxpeEMxSQpBd1lNaU4vODVqY1JFYkZzMmJMNHpHYytFek5tekdoMXB2cjYrcGc1YzJZ
ODhzZ2pNV1BHakhqampUYzZkT0RubXFjOXkwKzJhZE9tCnFLbXBpZnZ2djc5OFc5cTV2UHZ1dXpG
Ly92d1lQWHAwdTdlM2UvZnV1TysrKzJMczJMRXhhdFNvZVBYVlY4LzYzbC8vK3RleGV2WHEKV0xW
cVZYenZlOStMOTk5L1B5SmFQemRubTJYNTh1V3hlUEhpbUQ5L2Zvd1pNNmI4K3NNUFB4dzFOVFZ0
SGg4QUFMU21YUUZ5enozMwp4TGh4NCtLbGwxNktFU05HeEhQUFBYZlc5VmFzV0JGang0Nk45ZXZY
UjNOemM4eWJONis4N0J2ZitFWmNkOTExOGRoamo4V0tGU3RpCnc0WU5NWFhxMUlnNGNRdFNxVlNL
dzRjUFI4U0o0Qms4ZVBBcFYxaE9OM1hxMUJnN2Rtek1tVE1uRmkxYUZHKy8vWGFIcmlDY2E1NzIK
TEQvWmE2KzlGai82MFkvaXNjY2VpMnV2dmJiTmZWZFdWc2IyN2R0ajY5YXQ3ZHBlYzNOei9PQUhQ
NGlISG5vb1huamhoYWlwcVlsdgpmdk9iY2ZEZ3dUUGUrOEFERDBTL2Z2M2kxbHR2amFlZmZqcTZk
KzhlRWEyZm05Tm5PWDc4ZUR6NjZLTng5OTEzeDRNUFBoalhYMzk5CitTcFRkWFYxREJnd29NM2pB
d0NBMXJRclFLNjQ0b3I0MjkvK0ZqLzcyYy9pd0lFRE1Ybnk1RmkwYU5FWjYwMmNPREVtVEpnUUF3
Y08KalBIang1ZS9sYXF1cmk1ZWZ2bmxtRFp0V2tTY3VDWG9qanZ1aUwvODVTL3h5aXV2UkVSRXQy
N2RUZ21JeXkrL3ZOV2dlUFhWVjJQTgptalZ4MDAwM25UaUlpb3I0K3RlLzN1NkRibXVlOXN6N2dT
ZWVlQ0txcTZ2anU5LzlicnYzMzdkdjN4ZzVjdVJaYjNFNjIvYis4SWMvClJGRVVzVzdkdXFpcnE0
dCsvZnJGZSsrOUYvLzR4ejlhM2NmcHY3dld6czNwc3h3OGVEQTJiOTRjYTlhc2lZaUlPKys4czd4
czVzeVoKUGlzQ0FNQ0gwdTZ2NGEycXFvcDU4K2JGODg4L0gzMzc5bzFaczJiRmloVXJUbG5uNUQ5
NmUvZnVIVWVPSEltSUUvK2kzN2R2MzFNKwpKUDdGTDM0eElrN2NidFJSTDc3NFlnd2JOaXg2OWVw
VmZxMUhqeDd0dmdMUzFqenRuWGZObWpYeHkxLytzaHhDSFZFcWxjNll0N1h0CnZmTEtLMUZkWFIx
ZHUzYU5ybDI3eGcwMzNCQnIxNjZOVWFOR25YUDdyZjE4OHJrNWZaWStmZnJFbENsVFl0S2tTVEZy
MXF3WVBIaHcKZE9uU3BjUEhCd0FBWjlObWdMenp6anZsVzZNaUlzYU9IUnQvL09NZkl5TE9DSkRX
MU5mWHg5NjllMC81bzNma3lKRlJXVmxaL294QwpSK3pjdVRQMjd0MTd4dXZ0RFpDMjVtbnZ2Ri8r
OHBlamE5ZXU4ZU1mLzdqRHgzQTJyVzF2Nzk2OVVWRlJFVi85NmxkUCtlOWkzUTYxCmRPblNtRDE3
ZGl4ZXZEaSs4cFd2eEtGRGh5N0tmZ0FBdVBTMEdTQzdkKytPaFFzWG52TGFtREZqWXZEZ3dlMSs4
T0N3WWNPaXViazUKWG4vOTlmSnJlL2JzaWVQSGo4Znc0Y1BMcjMzd1dZTzI5Ty9mUDk1Nzc3MzQ5
Ny8vM2E3MU96cFBlK2Z0MmJObkxGbXlKSjUrK3VsWQp1WExsZWMxeXN0YTJOMlRJa0ZpN2R1MHBE
MzRzaWlKZWZQSEZWcmQxdnQrb3RXdlhydGl6WjAvVTF0WkdYVjFkdlBubW03RnMyYkx6CjJoWUFB
Snl1elFDNSt1cXJvN2EyOXBRLzluZnQyaFU3ZCs0ODVYTVg5ZlgxVVY5ZlgvNjVvYUdoL0sxUnQ5
NTZhd3djT0REV3JsMWIKWHY3R0cyL0VzR0hENHVhYmI0NklFMWNZTm16WUVJMk5qZkcvLy8wdnRt
M2JGdnYyN1N1djM5allXUDRhNE50dXV5MHFLeXZqaVNlZQpLQy9mc21WTDdOMjdONXFibTg5NkhD
ZS92NjE1MmpQdjhlUEhveWlLR0RObVRQejBweitOSC83d2grZDhFdnZKKy8vZzk5WFEwRkQrCmZN
VzV0dmVkNzN3bmR1L2VIWGZkZFZjY09IQWc5dXpaRTNQbnpqM3JWK2RHUlBUcTFhdjhqSllEQnc2
Yzg5eWNQc3UrZmZ0aStmTGwKRVJGeDQ0MDN4aTIzM0JJOWV2U0lpSWgxNjlaRmJXMXRxOGNJQUFC
dEt0cGgyTEJoeGZqeDQ0dDc3NzIzbURkdlh2RzV6MzJ1bUQ1OQpldEhZMkZnVVJWRTgrK3l6UlVW
RlJYSE5OZGNVbXpadEtqWnUzRmdNSHo2OHFLeXNMRmF2WGwwVVJWRnMzTGl4dU9hYWE0cGYvZXBY
CnhabzFhNHBwMDZZVi8vclh2OHI3ZVA3NTU0dnE2dXJpNnF1dkxoNTQ0SUZpeG93WnhZUUpFNHEv
Ly8zdnhZWU5HNHBSbzBZVkVWRXMKV3JTb09IYnNXUEhNTTg4VVBYdjJMSVlQSDE1TW5UcTFtRFJw
VWpGbXpKamltV2VlT1dQK3M3Mi9yWG5PdFh6RmloVkZqeDQ5aXFGRApoeGJyMTY4dnRtM2JWbHgr
K2VWRnYzNzlpc2NmZjd6Ti9iLzg4c3ZGNk5Hamk0Z29hbXRyaTZWTGw3YTV2Y1dMRnhlWFhYWlpV
U3FWCmlyNTkreFovK3RPZldqMWZQLy81ejR0U3FWVGNjY2NkeGU5Kzk3dHpucHNOR3phY01zdW1U
WnVLb1VPSEZyLzk3VytMUC8vNXo4WE0KbVRPTHBxYW1vaWlLWXZiczJjV25QdldwNHZqeDQrMzUz
d1lBQU01UUtvcTJuemEzZi8vKytPUW5QeG4xOWZXeGZmdjJHRFJvVVBUcwoyZk44WWllMmJ0MGFG
UlVWTVhUbzBET1dOelkyUm5OemMzVHIxaTJhbXBwYWZiTDVCNXFibStQQWdRUFJwMCtmT0hyMGFI
emlFNSs0Cm9QTzB0VHhiWTJOajdOaXhJNjY2NnFxb3JLdzg1N3A3OSs2TlBuMzZkSGdmTFMwdFVW
RlJFUWNQSG95cXFxcnkxL2hHblBoOUhEMTYKTkxwMTY5Ymg3UUlBUUVSRXV3SUVBQURnUW1qMzEv
QUNBQUI4V0FJRUFBQklJMEFBQUlBMEFnUUFBRWdqUUFBQWdEUUNCQUFBU0NOQQpBQUNBTkFJRUFB
QklJMEFBQUlBMEFnUUFBRWdqUUFBQWdEUUNCQUFBU0NOQUFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdR
QUFFZ2pRQUFBCmdEUUNCQUFBU0NOQUFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFBZ0RR
Q0JBQUFTQ05BQUFDQU5BSUVBQUJJSTBBQUFJQTAKQWdRQUFFZ2pRQUFBZ0RRQ0JBQUFTQ05BQUFD
QU5BSUVBQUJJSTBBQUFJQTBBZ1FBQUVnalFBQUFnRFFDQkFBQVNDTkFBQUNBTkFJRQpBQUJJSTBB
QUFJQTBBZ1FBQUVnalFBQUFnRFFDQkFBQVNGUFoyUU44V0tXSFNwMDlRcXJpRjBWbmp3QUFBT2ZO
RlJBQUFDQ05BQUVBCkFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVB
QU5KODdCOUVlS2twbGRwKzhHSlJlRmdoQUFBZlRhNkEKQUFBQWFRUUlBQUNRUm9BQUFBQnBCQWdB
QUpCR2dBQUFBR2tFQ0FBQWtFYUFBQUFBYVFRSUFBQ1FSb0FBQUFCcEJBZ0FBSkJHZ0FBQQpBR2tF
Q0FBQWtFYUFBQUFBYVFRSUFBQ1FSb0FBQUFCcEJBZ0FBSkJHZ0FBQUFHa0VDQUFBa0VhQUFBQUFh
UVFJQUFDUVJvQUFBQUJwCkJBZ0FBSkJHZ0FBQUFHa0VDQUFBa0VhQUFBQUFhUVFJQUFDUVJvQUFB
QUJwQkFnQUFKQkdnQUFBQUdrRUNBQUFrRWFBQUFBQWFRUUkKQUFDUVJvQUFBQUJwQkFnQUFKQkdn
QUFBQUdrRUNBQUFrRWFBQUFBQWFRUUlBQUNRUm9BQUFBQnBCQWdBQUpCR2dBQUFBR2tFQ0FBQQpr
RWFBQUFBQWFRUUlBQUNRUm9BQUFBQnBCQWdBQUpCR2dBQUFBR2tFQ0FBQWtFYUFBQUFBYVFRSUFB
Q1FwbFFVUmRIWlExeHNwVktwCnMwZElkUW1jVWdBQVBxWmNBUUVBQU5JSUVBQUFJSTBBQVFBQTBn
Z1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlFMWwKWncrUXdZUDVBQURnbzhFVkVB
QUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdn
UQpBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFE
U0NCQUFBQ0NOQUFFQUFOSUlFQUFBCklJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFF
QUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ04KQUFFQUFOSUlFQUFBSUkw
QUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFn
alFBQgpBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFB
QUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBCjBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJ
RUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUkKRUFBQUlJMEFBUUFB
MGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJB
QURTQ0JBQQpBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05B
QUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnCmpRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJ
STBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEEKQVFBQTBnZ1FB
QUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NC
QUFBQ0NOQUFFQQpBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFO
SUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTCkNCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFR
QUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1EKQUFBZ2pR
QUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUND
TkFBRUFBTklJRUFBQQpJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFB
QUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOCkFBRUFBTklJRUFBQUlJMEFBUUFBMGdn
UUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUIKQUFE
U0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVB
QU5JSUVBQUFJSTBBQVFBQQowZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBB
QVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJCkVBQUFJSTBBQVFBQTBnZ1FBQUFn
alFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUEK
QUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlF
QUFBSUkwQUFRQUEwZ2dRQUFBZwpqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEw
Z2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBCkFRQUEwZ2dRQUFBZ2pRQUJB
QURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFB
RUEKQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJ
MEFBUUFBMGdnUUFBQWdqUUFCQUFEUwpDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFB
QWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRCkFBQWdqUUFCQUFEU0NC
QUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5J
SUVBQUEKSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFB
QTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTgpBQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFB
QkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCCkFBRFNDQkFBQUND
TkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFB
SUkwQUFRQUEKMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dR
QUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSQpFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURT
Q0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBCkFDQ05BQUVB
QU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTkw4SDVkRHhjZTZz
Y1VpQUFBQUFFbEYKVGtTdVFtQ0MKCg==
</data>
<flag name="review"
          id="6001"
          type_id="1"
          status="+"
          setter="mrowe"
    />
          </attachment>
      

    </bug>

</bugzilla>