<?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>49780</bug_id>
          
          <creation_ts>2010-11-18 19:36:26 -0800</creation_ts>
          <short_desc>[chromium] Implement alpha masking for composited layers</short_desc>
          <delta_ts>2011-01-23 17:54:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vangelis Kokkevis">vangelis</reporter>
          <assigned_to name="Vangelis Kokkevis">vangelis</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>311251</commentid>
    <comment_count>0</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-11-18 19:36:26 -0800</bug_when>
    <thetext>Add support for -webkit-mask properties in the accelerated compositing in chromium&apos;s accelerated compositing path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311253</commentid>
    <comment_count>1</comment_count>
      <attachid>74346</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-11-18 19:41:38 -0800</bug_when>
    <thetext>Created attachment 74346
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311609</commentid>
    <comment_count>2</comment_count>
      <attachid>74346</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-19 12:08:58 -0800</bug_when>
    <thetext>Comment on attachment 74346
proposed patch

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

&gt; WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:853
&gt; +        &quot;  vec4 maskColor = texture2D(s_maskTexture, v_texCoord); \n&quot;
&gt; +        &quot;  gl_FragColor = vec4(texColor.x, texColor.y, texColor.z, texColor.w) * alpha * maskColor.w; \n&quot;

Are you sure it&apos;s a good idea to impose the extra texture fetch and multiply in all cases? Masking doesn&apos;t seem to be a very common operation (the compositor seems to have mostly been working fine up to this point) and I&apos;m concerned about making the default shader more expensive since it touches every pixel in the browser window. It seems to me it would be better to have two shaders, one for when masking is enabled and one for when it isn&apos;t. Would this impose too much code complexity? It seems it would be pretty self-contained in LayerRendererChromium::drawLayer.

&gt; LayoutTests/platform/chromium-gpu/test_expectations.txt:56
&gt; -BUGNONE WIN LINUX : fast/canvas = PASS
&gt; -BUGNONE WIN LINUX : canvas/philip = PASS
&gt; +//BUGNONE WIN LINUX : fast/canvas = PASS
&gt; +//BUGNONE WIN LINUX : canvas/philip = PASS

Why are these being commented out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311714</commentid>
    <comment_count>3</comment_count>
      <attachid>74429</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-11-19 15:15:24 -0800</bug_when>
    <thetext>Created attachment 74429
Patch addressing review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311716</commentid>
    <comment_count>4</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-11-19 15:16:39 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 74346 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74346&amp;action=review
&gt; 
&gt; &gt; WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:853
&gt; &gt; +        &quot;  vec4 maskColor = texture2D(s_maskTexture, v_texCoord); \n&quot;
&gt; &gt; +        &quot;  gl_FragColor = vec4(texColor.x, texColor.y, texColor.z, texColor.w) * alpha * maskColor.w; \n&quot;
&gt; 
&gt; Are you sure it&apos;s a good idea to impose the extra texture fetch and multiply in all cases? Masking doesn&apos;t seem to be a very common operation (the compositor seems to have mostly been working fine up to this point) and I&apos;m concerned about making the default shader more expensive since it touches every pixel in the browser window. It seems to me it would be better to have two shaders, one for when masking is enabled and one for when it isn&apos;t. Would this impose too much code complexity? It seems it would be pretty self-contained in LayerRendererChromium::drawLayer.

Good point.  I created a different shader to be used by RenderSurfaces that do masking.

&gt; 
&gt; &gt; LayoutTests/platform/chromium-gpu/test_expectations.txt:56
&gt; &gt; -BUGNONE WIN LINUX : fast/canvas = PASS
&gt; &gt; -BUGNONE WIN LINUX : canvas/philip = PASS
&gt; &gt; +//BUGNONE WIN LINUX : fast/canvas = PASS
&gt; &gt; +//BUGNONE WIN LINUX : canvas/philip = PASS
&gt; 
&gt; Why are these being commented out?

Ooops... They shouldn&apos;t be.  I reverted the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311733</commentid>
    <comment_count>5</comment_count>
      <attachid>74435</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-11-19 15:42:00 -0800</bug_when>
    <thetext>Created attachment 74435
Removed ANGLE workaround which is no longer necessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312569</commentid>
    <comment_count>6</comment_count>
      <attachid>74435</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-22 15:52:17 -0800</bug_when>
    <thetext>Comment on attachment 74435
Removed ANGLE workaround which is no longer necessary

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

Looks good. r- because of the needed revert to ChangeLog. Also please consider something different than the ASSERT_NOT_REACHED + working code in LayerChromium::bindContentsTexture().

&gt; WebCore/platform/graphics/chromium/LayerChromium.cpp:523
&gt; +    // We don&apos;t really expect to call this method for the base layer type.
&gt; +    ASSERT_NOT_REACHED();

That&apos;s pretty gross.

&gt; LayoutTests/ChangeLog:8
&gt; +2010-11-18  Vangelis Kokkevis  &lt;vangelis@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Need a short description and bug URL (OOPS!)
&gt; +
&gt; +        * platform/chromium-gpu/test_expectations.txt:
&gt; +

This file needs to be reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312577</commentid>
    <comment_count>7</comment_count>
      <attachid>74609</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-11-22 16:02:34 -0800</bug_when>
    <thetext>Created attachment 74609
Proposed patch - Removed unecessary changelog and ASSERT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312594</commentid>
    <comment_count>8</comment_count>
      <attachid>74609</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-22 16:32:09 -0800</bug_when>
    <thetext>Comment on attachment 74609
Proposed patch - Removed unecessary changelog and ASSERT

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321863</commentid>
    <comment_count>9</comment_count>
      <attachid>74609</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-14 03:31:16 -0800</bug_when>
    <thetext>Comment on attachment 74609
Proposed patch - Removed unecessary changelog and ASSERT

Rejecting attachment 74609 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=abarth-cq-sl&apos;, &apos;apply-attachment&apos;, &apos;--non-interactive&apos;, 74609]&quot; exit_code: 2
Last 500 characters of output:
s FAILED -- saving rejects to file WebCore/platform/graphics/chromium/LayerRendererChromium.cpp.rej
patching file WebCore/platform/graphics/chromium/LayerRendererChromium.h
Hunk #1 succeeded at 143 with fuzz 2 (offset -4 lines).
patching file WebCore/platform/graphics/chromium/RenderSurfaceChromium.h
Hunk #1 succeeded at 82 with fuzz 2 (offset 27 lines).

Failed to run &quot;[u&apos;/Users/abarth/git/webkit-queue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Kenneth Russell&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/7000112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338422</commentid>
    <comment_count>10</comment_count>
      <attachid>79808</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-21 16:28:32 -0800</bug_when>
    <thetext>Created attachment 79808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338423</commentid>
    <comment_count>11</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-21 16:30:31 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=79808) [details]
&gt; Patch

Had to rework the previous patch to account for code changes that happened since the original upload, including the introduction of the TextureManager and moving much of the RenderSurface drawing logic into the RenderSurface class.

Can you please have another quick look? 
Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338424</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-21 16:33:08 -0800</bug_when>
    <thetext>Attachment 79808 did not build on chromium:
Build output: http://queues.webkit.org/results/7503288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338460</commentid>
    <comment_count>13</comment_count>
      <attachid>79815</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-21 17:54:33 -0800</bug_when>
    <thetext>Created attachment 79815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338461</commentid>
    <comment_count>14</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-21 17:55:11 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=79815) [details]
&gt; Patch

Fixed Linux compilation error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338469</commentid>
    <comment_count>15</comment_count>
      <attachid>79815</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-21 18:11:04 -0800</bug_when>
    <thetext>Comment on attachment 79815
Patch

Looks fine. (I wish we could see the differences between patches with the review tool...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338805</commentid>
    <comment_count>16</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-23 17:54:14 -0800</bug_when>
    <thetext>Committed r76475: &lt;http://trac.webkit.org/changeset/76475&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74346</attachid>
            <date>2010-11-18 19:41:38 -0800</date>
            <delta_ts>2010-11-19 15:15:24 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>masking_49780.txt</filename>
            <type>text/plain</type>
            <size>18346</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjM2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMTEtMTggIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtjaHJvbWl1bV0gQWRkIHN1cHBvcnQgZm9yIC13ZWJraXQtbWFzayBwcm9wZXJ0aWVz
IHRvIHRoZQorICAgICAgICBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBwYXRoLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk3ODAKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6YmluZENvbnRlbnRzVGV4dHVy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xh
eWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVt
OjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6
YmluZENvbnRlbnRzVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0
TWFza0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06Om1hc2tMYXllcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cHJlcGFyZVRvRHJhd0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OnVwZGF0ZUxheWVyc1JlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1
bS5oOgorCiAyMDEwLTExLTE4ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwCShyZXZpc2lvbiA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzAsOCArMjMwLDEwIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnQK
ICAgICAgICAgdXBkYXRlUmVjdCA9IGRpcnR5UmVjdDsKICAgICB9CiAKLSAgICBpZiAoZGlydHlS
ZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkgeworICAgICAgICBt
X2NvbnRlbnRzRGlydHkgPSByZXF1aXJlc0NsaXBwZWRVcGRhdGVSZWN0KCk7CiAgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKICNpZiBQTEFURk9STShTS0lBKQogICAgIGNvbnN0IFNrQml0bWFwKiBz
a2lhQml0bWFwID0gMDsKQEAgLTM1NCw1ICszNTYsMTIgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6ZHJhdygpCiAgICAgfQogfQogCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpiaW5k
Q29udGVudHNUZXh0dXJlKCkKK3sKKyAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigpICYmIGxheWVy
UmVuZGVyZXJDb250ZXh0KCkpOworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5
ZXJSZW5kZXJlckNvbnRleHQoKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29udGVudHNUZXh0dXJlKSk7Cit9
CisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXcoKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkg
eyByZXR1cm4gbV9vd25lciAmJiBtX293bmVyLT5kcmF3c0NvbnRlbnQoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKCk7CiAKICAgICAvLyBTdG9yZXMgdmFsdWVzIHRo
YXQgYXJlIHNoYXJlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHRoYXQgYXJlCiAg
ICAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIExheWVyUmVuZGVyZXJDaHJvbWl1bSAoYW5k
IGhlbmNlIHRoZSBzYW1lIEdMCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lv
biA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDYgKzI2OCwxNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNPCiAgICAgdXBkYXRlQ29udGVudHNP
cGFxdWUoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcihH
cmFwaGljc0xheWVyKiBtYXNrTGF5ZXIpCit7CisgICAgaWYgKG1hc2tMYXllciA9PSBtX21hc2tM
YXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVy
KG1hc2tMYXllcik7CisKKyAgICBMYXllckNocm9taXVtKiBtYXNrTGF5ZXJDaHJvbWl1bSA9IG1f
bWFza0xheWVyID8gbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDA7CisgICAgbV9sYXll
ci0+c2V0TWFza0xheWVyKG1hc2tMYXllckNocm9taXVtKTsKK30KKwogdm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2libGUpCiB7CiAgICAg
aWYgKG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IHZpc2libGUpCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9t
aXVtLmgJKHJldmlzaW9uIDcyMzYwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXREcmF3c0NvbnRlbnQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihHcmFw
aGljc0xheWVyKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0
IENvbG9yJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2dyb3VuZENvbG9yKCk7CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAJKHJldmlzaW9uIDcyMzYwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE1LDUgKzUxNSwx
NSBAQCB2b2lkIExheWVyQ2hyb21pdW06OnByZXBhcmVGb3JEcmF3KGNvbnN0CiAgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNfdGV4Q29vcmRBdHRyaWJM
b2NhdGlvbikpOwogfQogCisvLyBUaGlzIG1ldGhvZCB3aWxsIHR5cGljYWxseSBiZSBvdmVyd3Jp
dHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuIExheWVyIHR5cGVzIHRoYXQKKy8vIGRvbid0IGltcGxl
bWVudCBpdCB3aWxsIGJpbmQgdGV4dHVyZSAwLgordm9pZCBMYXllckNocm9taXVtOjpiaW5kQ29u
dGVudHNUZXh0dXJlKCkKK3sKKyAgICAvLyBXZSBkb24ndCByZWFsbHkgZXhwZWN0IHRvIGNhbGwg
dGhpcyBtZXRob2QgZm9yIHRoZSBiYXNlIGxheWVyIHR5cGUuCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29u
dGV4dCgpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgMCkpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgJKHJldmlzaW9uIDcyMzYwKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExMSw2ICsxMTEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmlu
ZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9CiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX25hbWU7IH0KIAorICAgIHZvaWQgc2V0TWFza0xheWVyKExheWVyQ2hyb21pdW0qIG1h
c2tMYXllcikgeyBtX21hc2tMYXllciA9IG1hc2tMYXllcjsgfQorICAgIExheWVyQ2hyb21pdW0q
IG1hc2tMYXllcigpIHsgcmV0dXJuIG1fbWFza0xheWVyLmdldCgpOyB9CisKICAgICB2b2lkIHNl
dE5lZWRzRGlzcGxheShjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCk7CiAgICAgdm9pZCBzZXRO
ZWVkc0Rpc3BsYXkoKTsKICAgICBjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlydHlSZWN0OyB9CkBAIC0xNjAsNiArMTYzLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb250ZW50cygpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhdygpIHsgfTsK
KyAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZSgpOwogCiAgICAgdm9pZCBkcmF3
RGVidWdCb3JkZXIoKTsKIApAQCAtMjIzLDYgKzIyNyw4IEBAIHByb3RlY3RlZDoKICAgICBGbG9h
dFJlY3QgbV9kaXJ0eVJlY3Q7CiAgICAgYm9vbCBtX2NvbnRlbnRzRGlydHk7CiAKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gbV9tYXNrTGF5ZXI7CisKICAgICAvLyBSZW5kZXIgc3VyZmFjZSB0
aGlzIGxheWVyIGRyYXdzIGludG8uIFRoaXMgaXMgYSBzdXJmYWNlIHRoYXQgY2FuIGJlbG9uZwog
ICAgIC8vIGVpdGhlciB0byB0aGlzIGxheWVyIChpZiBtX3RhcmdldFJlbmRlclN1cmZhY2UgPT0g
bV9yZW5kZXJTdXJmYWNlKSBvcgogICAgIC8vIHRvIGFuIGFuY2VzdG9yIG9mIHRoaXMgbGF5ZXIu
IFRoZSB0YXJnZXQgcmVuZGVyIHN1cmZhY2UgZGV0ZXJtaW5lcyB0aGUKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDcyMzYwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05OSw2ICs5OSw3IEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm8K
ICAgICAsIG1fcm9vdExheWVyVGV4dHVyZVdpZHRoKDApCiAgICAgLCBtX3Jvb3RMYXllclRleHR1
cmVIZWlnaHQoMCkKICAgICAsIG1fdGV4dHVyZUxheWVyU2hhZGVyUHJvZ3JhbSgwKQorICAgICwg
bV9kZWZhdWx0TWFza1RleHR1cmVJZCgwKQogICAgICwgbV9yb290TGF5ZXIoMCkKICAgICAsIG1f
c2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoLTEsIC0xKSkKICAgICAsIG1fY3VycmVudFNoYWRlcigw
KQpAQCAtMjQ1LDcgKzI0NiwxNCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvRHJhCiAgICAgICAgIHNjcm9sbGVkTGF5ZXJNYXRyaXguc2NhbGUzZCgxLCAtMSwgMSk7CiAK
ICAgICAgICAgdXNlU2hhZGVyKG1fdGV4dHVyZUxheWVyU2hhZGVyUHJvZ3JhbSk7Ci0gICAgICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fdGV4dHVyZUxheWVyU2hhZGVy
U2FtcGxlckxvY2F0aW9uLCAwKSk7CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpKTsKKyAgICAgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgbV9kZWZhdWx0TWFza1RleHR1cmVJZCkpOworICAgICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7
CisgICAgICAgIC8vIEZJWE1FOiBUZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3IgQU5HTEUgYnVnOgor
ICAgICAgICAvLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9k
ZXRhaWw/aWQ9NzUKKyAgICAgICAgLy8gTWFraW5nIHRoZSBmb2xsb3dpbmcgYmluZCBjYWxsIHNo
b3VsZG4ndCBiZSByZXF1aXJlZC4KKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5i
aW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9yb290TGF5ZXJUZXh0
dXJlSWQpKTsKKwogICAgICAgICBMYXllckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKG1fY29u
dGV4dC5nZXQoKSwgbV9wcm9qZWN0aW9uTWF0cml4LCBzY3JvbGxlZExheWVyTWF0cml4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVSZWN0LndpZHRoKCks
IHZpc2libGVSZWN0LmhlaWdodCgpLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdGV4dHVyZUxheWVyU2hhZGVyTWF0cml4TG9jYXRpb24sIG1fdGV4dHVyZUxh
eWVyU2hhZGVyQWxwaGFMb2NhdGlvbik7CkBAIC00OTMsNyArNTAxLDkgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVycwogICAgIC8vIG9mIHRoZWlyIHBhcmVudC4KICAg
ICBib29sIHVzZVN1cmZhY2VGb3JDbGlwcGluZyA9IGxheWVyLT5tYXNrc1RvQm91bmRzKCkgJiYg
IWlzU2NhbGVPclRyYW5zbGF0aW9uKGNvbWJpbmVkVHJhbnNmb3JtKTsKICAgICBib29sIHVzZVN1
cmZhY2VGb3JPcGFjaXR5ID0gbGF5ZXItPm9wYWNpdHkoKSAhPSAxICYmICFsYXllci0+cHJlc2Vy
dmVzM0QoKTsKLSAgICBpZiAoKHVzZVN1cmZhY2VGb3JDbGlwcGluZyB8fCB1c2VTdXJmYWNlRm9y
T3BhY2l0eSkgJiYgbGF5ZXItPmRlc2NlbmRhbnRzRHJhd0NvbnRlbnQoKSkgeworICAgIGJvb2wg
dXNlU3VyZmFjZUZvck1hc2tpbmcgPSBsYXllci0+bWFza0xheWVyKCk7CisgICAgaWYgKCgodXNl
U3VyZmFjZUZvckNsaXBwaW5nIHx8IHVzZVN1cmZhY2VGb3JPcGFjaXR5KSAmJiBsYXllci0+ZGVz
Y2VuZGFudHNEcmF3Q29udGVudCgpKQorICAgICAgICB8fCB1c2VTdXJmYWNlRm9yTWFza2luZykg
ewogICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSBsYXllci0+
bV9yZW5kZXJTdXJmYWNlLmdldCgpOwogICAgICAgICBpZiAoIXJlbmRlclN1cmZhY2UpCiAgICAg
ICAgICAgICByZW5kZXJTdXJmYWNlID0gbGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAg
LTUyNyw2ICs1MzcsMTMgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVy
cwogCiAgICAgICAgIHJlbmRlclN1cmZhY2UtPm1fbGF5ZXJMaXN0LmNsZWFyKCk7CiAKKyAgICAg
ICAgaWYgKGxheWVyLT5tYXNrTGF5ZXIoKSkgeworICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+
bV9tYXNrTGF5ZXIgPSBsYXllci0+bWFza0xheWVyKCk7CisgICAgICAgICAgICBsYXllci0+bWFz
a0xheWVyKCktPnNldExheWVyUmVuZGVyZXIodGhpcyk7CisgICAgICAgICAgICBsYXllci0+bWFz
a0xheWVyKCktPm1fdGFyZ2V0UmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2U7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+bV9tYXNrTGF5ZXIgPSAwOworCiAg
ICAgICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKGxheWVyKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBEVCA9IE1bcF0gKiBMVApAQCAtNjA3LDcgKzYyNCw3IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnMKICAgICAgICAgICAgIGxheWVyLT5tX2Ry
YXdhYmxlQ29udGVudFJlY3QudW5pdGUoc3VibGF5ZXItPm1fZHJhd2FibGVDb250ZW50UmVjdCk7
CiAgICAgfQogCi0gICAgaWYgKGxheWVyLT5tYXNrc1RvQm91bmRzKCkpCisgICAgaWYgKGxheWVy
LT5tYXNrc1RvQm91bmRzKCkgfHwgdXNlU3VyZmFjZUZvck1hc2tpbmcpCiAgICAgICAgIGxheWVy
LT5tX2RyYXdhYmxlQ29udGVudFJlY3QuaW50ZXJzZWN0KHRyYW5zZm9ybWVkTGF5ZXJSZWN0KTsK
IAogICAgIGlmIChsYXllci0+bV9yZW5kZXJTdXJmYWNlICYmIGxheWVyICE9IG1fcm9vdExheWVy
KSB7CkBAIC02OTAsMTQgKzcwNywzNSBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNl
UmVuZGVyU3VyCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyKExheWVyQ2hy
b21pdW0qIGxheWVyLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHRhcmdldFN1cmZhY2UpCiB7CiAg
ICAgaWYgKGxheWVyLT5tX3JlbmRlclN1cmZhY2UgJiYgbGF5ZXItPm1fcmVuZGVyU3VyZmFjZSAh
PSB0YXJnZXRTdXJmYWNlKSB7Ci0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Ymlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxheWVyLT5tX3JlbmRlclN1
cmZhY2UtPm1fY29udGVudHNUZXh0dXJlSWQpKTsKKyAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9t
aXVtKiByZW5kZXJTdXJmYWNlID0gbGF5ZXItPm1fcmVuZGVyU3VyZmFjZS5nZXQoKTsKKworICAg
ICAgICBib29sIGhhc01hc2tUZXh0dXJlID0gZmFsc2U7CisgICAgICAgIGlmIChyZW5kZXJTdXJm
YWNlLT5tX21hc2tMYXllcikgeworICAgICAgICAgICAgTGF5ZXJDaHJvbWl1bSogbWFza0xheWVy
ID0gcmVuZGVyU3VyZmFjZS0+bV9tYXNrTGF5ZXI7CisgICAgICAgICAgICBpZiAobWFza0xheWVy
LT5kcmF3c0NvbnRlbnQoKSkgeworICAgICAgICAgICAgICAgIGlmIChtYXNrTGF5ZXItPmNvbnRl
bnRzRGlydHkoKSkgeworICAgICAgICAgICAgICAgICAgICBtYXNrTGF5ZXItPnVwZGF0ZUNvbnRl
bnRzKCk7CisgICAgICAgICAgICAgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGhhc01hc2tUZXh0dXJlID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpKTsK
KyAgICAgICAgaWYgKGhhc01hc2tUZXh0dXJlKQorICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+
bV9tYXNrTGF5ZXItPmJpbmRDb250ZW50c1RleHR1cmUoKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgbV9kZWZhdWx0TWFza1RleHR1cmVJZCkpOworICAgICAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkUwKSk7CisKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcmVuZGVyU3VyZmFjZS0+bV9jb250ZW50
c1RleHR1cmVJZCkpOwogICAgICAgICB1c2VTaGFkZXIobV90ZXh0dXJlTGF5ZXJTaGFkZXJQcm9n
cmFtKTsKIAotICAgICAgICBzZXRTY2lzc29yVG9SZWN0KGxheWVyLT5tX3JlbmRlclN1cmZhY2Ut
Pm1fc2Npc3NvclJlY3QpOworICAgICAgICBzZXRTY2lzc29yVG9SZWN0KHJlbmRlclN1cmZhY2Ut
Pm1fc2Npc3NvclJlY3QpOwogCi0gICAgICAgIEludFJlY3QgY29udGVudFJlY3QgPSBsYXllci0+
bV9yZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0OworICAgICAgICBJbnRSZWN0IGNvbnRlbnRS
ZWN0ID0gcmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdDsKICAgICAgICAgTGF5ZXJDaHJvbWl1
bTo6ZHJhd1RleHR1cmVkUXVhZChtX2NvbnRleHQuZ2V0KCksIG1fcHJvamVjdGlvbk1hdHJpeCwg
bGF5ZXItPm1fcmVuZGVyU3VyZmFjZS0+bV9kcmF3VHJhbnNmb3JtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0
LmhlaWdodCgpLCBsYXllci0+bV9yZW5kZXJTdXJmYWNlLT5tX2RyYXdPcGFjaXR5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0LndpZHRoKCksIGNv
bnRlbnRSZWN0LmhlaWdodCgpLCByZW5kZXJTdXJmYWNlLT5tX2RyYXdPcGFjaXR5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdGV4dHVyZUxheWVyU2hhZGVyTWF0
cml4TG9jYXRpb24sIG1fdGV4dHVyZUxheWVyU2hhZGVyQWxwaGFMb2NhdGlvbik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC04MDYsMTEgKzg0NCwxMyBAQCBib29sIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6aW5pdGlhbGl6ZVNoCiAgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCiAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90
ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCiAgICAgICAgICJ1bmlmb3Jt
IHNhbXBsZXIyRCBzX3RleHR1cmU7ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisgICAgICAg
ICJ1bmlmb3JtIHNhbXBsZXIyRCBzX21hc2tUZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgXG4i
CiAgICAgICAgICJ1bmlmb3JtIGZsb2F0IGFscGhhOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXG4iCiAgICAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXG4iCiAgICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCiAgICAgICAgICIgIHZlYzQgdGV4Q29sb3IgPSB0
ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsgXG4iCi0gICAgICAgICIgIGdsX0ZyYWdD
b2xvciA9IHZlYzQodGV4Q29sb3IueCwgdGV4Q29sb3IueSwgdGV4Q29sb3IueiwgdGV4Q29sb3Iu
dykgKiBhbHBoYTsgXG4iCisgICAgICAgICIgIHZlYzQgbWFza0NvbG9yID0gdGV4dHVyZTJEKHNf
bWFza1RleHR1cmUsIHZfdGV4Q29vcmQpOyBcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCh0ZXhDb2xvci54LCB0ZXhDb2xvci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAqIGFs
cGhhICogbWFza0NvbG9yLnc7IFxuIgogICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKIAogICAgIG1fdGV4dHVyZUxheWVyU2hh
ZGVyUHJvZ3JhbSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZVNoYWRlclByb2dyYW0obV9jb250ZXh0
LmdldCgpLCB0ZXh0dXJlTGF5ZXJWZXJ0ZXhTaGFkZXJTdHJpbmcsIHRleHR1cmVMYXllckZyYWdt
ZW50U2hhZGVyU3RyaW5nKTsKQEAgLTgyMSwxMyArODYxLDI1IEBAIGJvb2wgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjppbml0aWFsaXplU2gKICAgICB9CiAKICAgICBHTEMobV9jb250ZXh0LCBtX3Rl
eHR1cmVMYXllclNoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKG1fdGV4dHVyZUxheWVyU2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVyZSIpKTsKKyAgICBH
TEMobV9jb250ZXh0LCBtX3RleHR1cmVMYXllclNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24gPSBt
X2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3RleHR1cmVMYXllclNoYWRlclByb2dyYW0s
ICJzX21hc2tUZXh0dXJlIikpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fdGV4dHVyZUxheWVyU2hh
ZGVyTWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3RleHR1
cmVMYXllclNoYWRlclByb2dyYW0sICJtYXRyaXgiKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV90
ZXh0dXJlTGF5ZXJTaGFkZXJBbHBoYUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24obV90ZXh0dXJlTGF5ZXJTaGFkZXJQcm9ncmFtLCAiYWxwaGEiKSk7Ci0gICAgaWYgKG1f
dGV4dHVyZUxheWVyU2hhZGVyU2FtcGxlckxvY2F0aW9uID09IC0xIHx8IG1fdGV4dHVyZUxheWVy
U2hhZGVyTWF0cml4TG9jYXRpb24gPT0gLTEgfHwgbV90ZXh0dXJlTGF5ZXJTaGFkZXJBbHBoYUxv
Y2F0aW9uID09IC0xKSB7CisgICAgaWYgKG1fdGV4dHVyZUxheWVyU2hhZGVyU2FtcGxlckxvY2F0
aW9uID09IC0xIHx8IG1fdGV4dHVyZUxheWVyU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiA9PSAt
MQorICAgICAgICB8fCBtX3RleHR1cmVMYXllclNoYWRlck1hdHJpeExvY2F0aW9uID09IC0xIHx8
IG1fdGV4dHVyZUxheWVyU2hhZGVyQWxwaGFMb2NhdGlvbiA9PSAtMSkgewogICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBpbml0aWFsaXplIHRleHR1cmUgbGF5ZXIgc2hhZGVyLiIpOwogICAg
ICAgICBjbGVhbnVwU2hhcmVkT2JqZWN0cygpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQorICAgIHVzZVNoYWRlcihtX3RleHR1cmVMYXllclNoYWRlclByb2dyYW0pOworICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fdGV4dHVyZUxheWVyU2hhZGVyU2FtcGxl
ckxvY2F0aW9uLCAwKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWko
bV90ZXh0dXJlTGF5ZXJTaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uLCAxKSk7CisKKyAgICAvLyBD
cmVhdGUgYSB0ZXh0dXJlIG9iamVjdCB0byBob2xkIHRoZSBkZWZhdWx0IGFscGhhIG1hc2sgKGEg
c2luZ2xlIHBpeGVsIHdpdGggYWxwaGEgPSAxKS4KKyAgICBHTEMobV9jb250ZXh0LCBtX2RlZmF1
bHRNYXNrVGV4dHVyZUlkID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCkpOworICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIG1fZGVmYXVsdE1hc2tUZXh0dXJlSWQpKTsKKyAgICAvLyBTZXQgdGhlIHRleHR1cmUg
dG8gcmVkIHRvIGJlIGVhc3kgdG8gc3BvdCBpZiBpdCdzIHVzZWQgZm9yIGFueXRoaW5nIG90aGVy
IHRoYW4gYWxwaGEKKyAgICB1bnNpZ25lZCBjaGFyIG1hc2tCeXRlc1s0XSA9IHsyNTUsIDAsIDAs
IDI1NX07CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhJbWFnZTJEKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgMSwgMSwg
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFLCAmbWFza0J5dGVzWzBdKSk7CiAKICAgICAvLyBDcmVhdGUgYSB0ZXh0dXJlIG9iamVjdCB0
byBob2xkIHRoZSBjb250ZW50cyBvZiB0aGUgcm9vdCBsYXllci4KICAgICBtX3Jvb3RMYXllclRl
eHR1cmVJZCA9IGNyZWF0ZUxheWVyVGV4dHVyZSgpOwpAQCAtODgzLDYgKzkzNSwxMSBAQCB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlCiAgICAgICAgIG1fcm9vdExheWVy
VGV4dHVyZUlkID0gMDsKICAgICB9CiAKKyAgICBpZiAobV9kZWZhdWx0TWFza1RleHR1cmVJZCkg
eworICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUobV9kZWZh
dWx0TWFza1RleHR1cmVJZCkpOworICAgICAgICBtX2RlZmF1bHRNYXNrVGV4dHVyZUlkID0gMDsK
KyAgICB9CisKICAgICBpZiAobV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKQogICAgICAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fb2Zmc2NyZWVuRnJhbWVi
dWZmZXJJZCkpOwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA3MjM2MCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw5ICsxNDQsMTIgQEAgcHJpdmF0ZToKICAgICAv
LyBwcmV2aW91cyByZW5kZXJpbmcgb3BlcmF0aW9uLgogICAgIHVuc2lnbmVkIG1fdGV4dHVyZUxh
eWVyU2hhZGVyUHJvZ3JhbTsKICAgICBpbnQgbV90ZXh0dXJlTGF5ZXJTaGFkZXJTYW1wbGVyTG9j
YXRpb247CisgICAgaW50IG1fdGV4dHVyZUxheWVyU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbjsK
ICAgICBpbnQgbV90ZXh0dXJlTGF5ZXJTaGFkZXJNYXRyaXhMb2NhdGlvbjsKICAgICBpbnQgbV90
ZXh0dXJlTGF5ZXJTaGFkZXJBbHBoYUxvY2F0aW9uOwogCisgICAgdW5zaWduZWQgbV9kZWZhdWx0
TWFza1RleHR1cmVJZDsKKwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcHJvamVjdGlvbk1h
dHJpeDsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJT
dXJmYWNlQ2hyb21pdW0uaAkocmV2aXNpb24gNzIzNjApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw2ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXll
clJlbmRlcmVyKCk7CiAKICAgICBMYXllckNocm9taXVtKiBtX293bmluZ0xheWVyOworICAgIExh
eWVyQ2hyb21pdW0qIG1fbWFza0xheWVyOwogICAgIEludFJlY3QgbV9jb250ZW50UmVjdDsKICAg
ICB1bnNpZ25lZCBtX2NvbnRlbnRzVGV4dHVyZUlkOwogICAgIGZsb2F0IG1fZHJhd09wYWNpdHk7
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3MjM2MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisyMDEwLTExLTE4ICBWYW5nZWxpcyBLb2trZXZp
cyAgPHZhbmdlbGlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwg
KE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tZ3B1L3Rlc3RfZXhwZWN0YXRp
b25zLnR4dDoKKwogMjAxMC0xMS0xOCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBNaXNjIHRlc3QgdXBkYXRlcyAobW9zdCBSdWJ5KS4KSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1L3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gNzIzNjApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS1ncHUvdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01
Miw4ICs1Miw4IEBAIEJVR05PTkUgOiBjb21wb3NpdGluZyA9IFBBU1MgRkFJTAogCiAvLyBVbnNr
aXAgdGhlIGNhbnZhcyB0ZXN0cyBvbiBXaW4gYW5kIExpbnV4IG9ubHkgKHNpbmNlIE1hYyBkb2Vz
IG5vdCBzdXBwb3J0CiAvLyBhY2NlbGVyYXRlZCAyRCBjYW52YXMgeWV0KS4KLUJVR05PTkUgV0lO
IExJTlVYIDogZmFzdC9jYW52YXMgPSBQQVNTCi1CVUdOT05FIFdJTiBMSU5VWCA6IGNhbnZhcy9w
aGlsaXAgPSBQQVNTCisvL0JVR05PTkUgV0lOIExJTlVYIDogZmFzdC9jYW52YXMgPSBQQVNTCisv
L0JVR05PTkUgV0lOIExJTlVYIDogY2FudmFzL3BoaWxpcCA9IFBBU1MKIAogLy8KIC8vIEFjdHVh
bCBmYWlsdXJlIHN1cHByZXNzaW9ucyBzaG91bGQgZ28gYmVsb3cgdGhpcyBsaW5lCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74429</attachid>
            <date>2010-11-19 15:15:24 -0800</date>
            <delta_ts>2010-11-19 15:42:00 -0800</delta_ts>
            <desc>Patch addressing review comments</desc>
            <filename>masking_49780_2.txt</filename>
            <type>text/plain</type>
            <size>18920</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjQ0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMTEtMTkgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtjaHJvbWl1bV0gQWRkIHN1cHBvcnQgZm9yIC13ZWJraXQtbWFzayBwcm9wZXJ0aWVz
IHRvIHRoZQorICAgICAgICBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBwYXRoLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk3ODAKKyAgICAgICAgCisg
ICAgICAgIFRlc3RzOiBleGlzdGluZyB0ZXN0cyBpbiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9t
YXNrcworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpi
aW5kQ29udGVudHNUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckNocm9taXVtOjpiaW5kQ29udGVudHNUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6bWFza0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpwcmVwYXJlVG9EcmF3TGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzUmVjdXJzaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVk
T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVu
ZGVyU3VyZmFjZUNocm9taXVtLmg6CisKIDIwMTAtMTEtMTkgIE1pY2hhZWwgU2Fib2ZmICA8bXNh
Ym9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzAsOCArMjMwLDEwIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0
ZUNvbnRlbnQKICAgICAgICAgdXBkYXRlUmVjdCA9IGRpcnR5UmVjdDsKICAgICB9CiAKLSAgICBp
ZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkgewor
ICAgICAgICBtX2NvbnRlbnRzRGlydHkgPSByZXF1aXJlc0NsaXBwZWRVcGRhdGVSZWN0KCk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICNpZiBQTEFURk9STShTS0lBKQogICAgIGNvbnN0IFNr
Qml0bWFwKiBza2lhQml0bWFwID0gMDsKQEAgLTM1NCw1ICszNTYsMTIgQEAgdm9pZCBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgfQogfQogCit2b2lkIENvbnRlbnRMYXllckNocm9t
aXVtOjpiaW5kQ29udGVudHNUZXh0dXJlKCkKK3sKKyAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigp
ICYmIGxheWVyUmVuZGVyZXJDb250ZXh0KCkpOworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29udGVudHNUZXh0
dXJlKSk7Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRl
bnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3ND
b250ZW50KCkgeyByZXR1cm4gbV9vd25lciAmJiBtX293bmVyLT5kcmF3c0NvbnRlbnQoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKCk7CiAKICAgICAvLyBTdG9yZXMg
dmFsdWVzIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHRo
YXQgYXJlCiAgICAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIExheWVyUmVuZGVyZXJDaHJv
bWl1bSAoYW5kIGhlbmNlIHRoZSBzYW1lIEdMCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3Bw
CShyZXZpc2lvbiA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R3JhcGhpY3NMYXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDYgKzI2OCwx
NyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNPCiAgICAgdXBkYXRl
Q29udGVudHNPcGFxdWUoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE1h
c2tMYXllcihHcmFwaGljc0xheWVyKiBtYXNrTGF5ZXIpCit7CisgICAgaWYgKG1hc2tMYXllciA9
PSBtX21hc2tMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0
TWFza0xheWVyKG1hc2tMYXllcik7CisKKyAgICBMYXllckNocm9taXVtKiBtYXNrTGF5ZXJDaHJv
bWl1bSA9IG1fbWFza0xheWVyID8gbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDA7Cisg
ICAgbV9sYXllci0+c2V0TWFza0xheWVyKG1hc2tMYXllckNocm9taXVtKTsKK30KKwogdm9pZCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2libGUp
CiB7CiAgICAgaWYgKG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IHZpc2libGUpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmgJKHJldmlzaW9uIDcyMzYwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tM
YXllcihHcmFwaGljc0xheWVyKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENv
bG9yKGNvbnN0IENvbG9yJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2dyb3VuZENvbG9y
KCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDcyMzYwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE1
LDUgKzUxNSwxNSBAQCB2b2lkIExheWVyQ2hyb21pdW06OnByZXBhcmVGb3JEcmF3KGNvbnN0CiAg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNfdGV4Q29v
cmRBdHRyaWJMb2NhdGlvbikpOwogfQogCisvLyBUaGlzIG1ldGhvZCB3aWxsIHR5cGljYWxseSBi
ZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuIExheWVyIHR5cGVzIHRoYXQKKy8vIGRv
bid0IGltcGxlbWVudCBpdCB3aWxsIGJpbmQgdGV4dHVyZSAwLgordm9pZCBMYXllckNocm9taXVt
OjpiaW5kQ29udGVudHNUZXh0dXJlKCkKK3sKKyAgICAvLyBXZSBkb24ndCByZWFsbHkgZXhwZWN0
IHRvIGNhbGwgdGhpcyBtZXRob2QgZm9yIHRoZSBiYXNlIGxheWVyIHR5cGUuCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJl
bmRlcmVyQ29udGV4dCgpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCkpOworfQorCiB9CiAjZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgJKHJldmlzaW9uIDcyMzYwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExMSw2ICsxMTEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROYW1lKGNv
bnN0IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9CiAgICAgU3RyaW5nIG5hbWUoKSBj
b25zdCB7IHJldHVybiBtX25hbWU7IH0KIAorICAgIHZvaWQgc2V0TWFza0xheWVyKExheWVyQ2hy
b21pdW0qIG1hc2tMYXllcikgeyBtX21hc2tMYXllciA9IG1hc2tMYXllcjsgfQorICAgIExheWVy
Q2hyb21pdW0qIG1hc2tMYXllcigpIHsgcmV0dXJuIG1fbWFza0xheWVyLmdldCgpOyB9CisKICAg
ICB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCk7CiAgICAg
dm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKICAgICBjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlydHlSZWN0OyB9CkBAIC0xNjAsNiArMTYzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cygpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgZHJh
dygpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZSgpOwogCiAgICAg
dm9pZCBkcmF3RGVidWdCb3JkZXIoKTsKIApAQCAtMjIzLDYgKzIyNyw4IEBAIHByb3RlY3RlZDoK
ICAgICBGbG9hdFJlY3QgbV9kaXJ0eVJlY3Q7CiAgICAgYm9vbCBtX2NvbnRlbnRzRGlydHk7CiAK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9tYXNrTGF5ZXI7CisKICAgICAvLyBSZW5kZXIg
c3VyZmFjZSB0aGlzIGxheWVyIGRyYXdzIGludG8uIFRoaXMgaXMgYSBzdXJmYWNlIHRoYXQgY2Fu
IGJlbG9uZwogICAgIC8vIGVpdGhlciB0byB0aGlzIGxheWVyIChpZiBtX3RhcmdldFJlbmRlclN1
cmZhY2UgPT0gbV9yZW5kZXJTdXJmYWNlKSBvcgogICAgIC8vIHRvIGFuIGFuY2VzdG9yIG9mIHRo
aXMgbGF5ZXIuIFRoZSB0YXJnZXQgcmVuZGVyIHN1cmZhY2UgZGV0ZXJtaW5lcyB0aGUKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDcyMzYwKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05OSw2ICs5OSw3IEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5k
ZXJlckNocm8KICAgICAsIG1fcm9vdExheWVyVGV4dHVyZVdpZHRoKDApCiAgICAgLCBtX3Jvb3RM
YXllclRleHR1cmVIZWlnaHQoMCkKICAgICAsIG1fdGV4dHVyZUxheWVyU2hhZGVyUHJvZ3JhbSgw
KQorICAgICwgbV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlclByb2dyYW0oMCkKICAgICAsIG1f
cm9vdExheWVyKDApCiAgICAgLCBtX3Njcm9sbFBvc2l0aW9uKEludFBvaW50KC0xLCAtMSkpCiAg
ICAgLCBtX2N1cnJlbnRTaGFkZXIoMCkKQEAgLTI0NSw3ICsyNDYsMTIgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnByZXBhcmVUb0RyYQogICAgICAgICBzY3JvbGxlZExheWVyTWF0cml4
LnNjYWxlM2QoMSwgLTEsIDEpOwogCiAgICAgICAgIHVzZVNoYWRlcihtX3RleHR1cmVMYXllclNo
YWRlclByb2dyYW0pOwotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZvcm0x
aShtX3RleHR1cmVMYXllclNoYWRlclNhbXBsZXJMb2NhdGlvbiwgMCkpOworCisgICAgICAgIC8v
IEZJWE1FOiBUZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3IgQU5HTEUgYnVnOgorICAgICAgICAvLyBo
dHRwOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9kZXRhaWw/aWQ9NzUK
KyAgICAgICAgLy8gTWFraW5nIHRoZSBmb2xsb3dpbmcgYmluZCBjYWxsIHNob3VsZG4ndCBiZSBy
ZXF1aXJlZC4KKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9yb290TGF5ZXJUZXh0dXJlSWQpKTsKKwog
ICAgICAgICBMYXllckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKG1fY29udGV4dC5nZXQoKSwg
bV9wcm9qZWN0aW9uTWF0cml4LCBzY3JvbGxlZExheWVyTWF0cml4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVSZWN0LndpZHRoKCksIHZpc2libGVSZWN0
LmhlaWdodCgpLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
dGV4dHVyZUxheWVyU2hhZGVyTWF0cml4TG9jYXRpb24sIG1fdGV4dHVyZUxheWVyU2hhZGVyQWxw
aGFMb2NhdGlvbik7CkBAIC00OTMsNyArNDk5LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVwZGF0ZUxheWVycwogICAgIC8vIG9mIHRoZWlyIHBhcmVudC4KICAgICBib29sIHVzZVN1
cmZhY2VGb3JDbGlwcGluZyA9IGxheWVyLT5tYXNrc1RvQm91bmRzKCkgJiYgIWlzU2NhbGVPclRy
YW5zbGF0aW9uKGNvbWJpbmVkVHJhbnNmb3JtKTsKICAgICBib29sIHVzZVN1cmZhY2VGb3JPcGFj
aXR5ID0gbGF5ZXItPm9wYWNpdHkoKSAhPSAxICYmICFsYXllci0+cHJlc2VydmVzM0QoKTsKLSAg
ICBpZiAoKHVzZVN1cmZhY2VGb3JDbGlwcGluZyB8fCB1c2VTdXJmYWNlRm9yT3BhY2l0eSkgJiYg
bGF5ZXItPmRlc2NlbmRhbnRzRHJhd0NvbnRlbnQoKSkgeworICAgIGJvb2wgdXNlU3VyZmFjZUZv
ck1hc2tpbmcgPSBsYXllci0+bWFza0xheWVyKCk7CisgICAgaWYgKCgodXNlU3VyZmFjZUZvckNs
aXBwaW5nIHx8IHVzZVN1cmZhY2VGb3JPcGFjaXR5KSAmJiBsYXllci0+ZGVzY2VuZGFudHNEcmF3
Q29udGVudCgpKQorICAgICAgICB8fCB1c2VTdXJmYWNlRm9yTWFza2luZykgewogICAgICAgICBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSBsYXllci0+bV9yZW5kZXJTdXJm
YWNlLmdldCgpOwogICAgICAgICBpZiAoIXJlbmRlclN1cmZhY2UpCiAgICAgICAgICAgICByZW5k
ZXJTdXJmYWNlID0gbGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTUyNyw2ICs1MzUs
MTMgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVycwogCiAgICAgICAg
IHJlbmRlclN1cmZhY2UtPm1fbGF5ZXJMaXN0LmNsZWFyKCk7CiAKKyAgICAgICAgaWYgKGxheWVy
LT5tYXNrTGF5ZXIoKSkgeworICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+bV9tYXNrTGF5ZXIg
PSBsYXllci0+bWFza0xheWVyKCk7CisgICAgICAgICAgICBsYXllci0+bWFza0xheWVyKCktPnNl
dExheWVyUmVuZGVyZXIodGhpcyk7CisgICAgICAgICAgICBsYXllci0+bWFza0xheWVyKCktPm1f
dGFyZ2V0UmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2U7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgcmVuZGVyU3VyZmFjZS0+bV9tYXNrTGF5ZXIgPSAwOworCiAgICAgICAgIHJlbmRl
clN1cmZhY2VMYXllckxpc3QuYXBwZW5kKGxheWVyKTsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBEVCA9IE1bcF0gKiBMVApAQCAtNjA3LDcgKzYyMiw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjp1cGRhdGVMYXllcnMKICAgICAgICAgICAgIGxheWVyLT5tX2RyYXdhYmxlQ29udGVu
dFJlY3QudW5pdGUoc3VibGF5ZXItPm1fZHJhd2FibGVDb250ZW50UmVjdCk7CiAgICAgfQogCi0g
ICAgaWYgKGxheWVyLT5tYXNrc1RvQm91bmRzKCkpCisgICAgaWYgKGxheWVyLT5tYXNrc1RvQm91
bmRzKCkgfHwgdXNlU3VyZmFjZUZvck1hc2tpbmcpCiAgICAgICAgIGxheWVyLT5tX2RyYXdhYmxl
Q29udGVudFJlY3QuaW50ZXJzZWN0KHRyYW5zZm9ybWVkTGF5ZXJSZWN0KTsKIAogICAgIGlmIChs
YXllci0+bV9yZW5kZXJTdXJmYWNlICYmIGxheWVyICE9IG1fcm9vdExheWVyKSB7CkBAIC02OTAs
MTUgKzcwNSw0MyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyCiB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyKExheWVyQ2hyb21pdW0qIGxheWVy
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHRhcmdldFN1cmZhY2UpCiB7CiAgICAgaWYgKGxheWVy
LT5tX3JlbmRlclN1cmZhY2UgJiYgbGF5ZXItPm1fcmVuZGVyU3VyZmFjZSAhPSB0YXJnZXRTdXJm
YWNlKSB7Ci0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxheWVyLT5tX3JlbmRlclN1cmZhY2UtPm1fY29u
dGVudHNUZXh0dXJlSWQpKTsKLSAgICAgICAgdXNlU2hhZGVyKG1fdGV4dHVyZUxheWVyU2hhZGVy
UHJvZ3JhbSk7CisgICAgICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVuZGVyU3VyZmFjZSA9
IGxheWVyLT5tX3JlbmRlclN1cmZhY2UuZ2V0KCk7CisKKyAgICAgICAgYm9vbCBoYXNNYXNrVGV4
dHVyZSA9IGZhbHNlOworICAgICAgICBpZiAocmVuZGVyU3VyZmFjZS0+bV9tYXNrTGF5ZXIpIHsK
KyAgICAgICAgICAgIExheWVyQ2hyb21pdW0qIG1hc2tMYXllciA9IHJlbmRlclN1cmZhY2UtPm1f
bWFza0xheWVyOworICAgICAgICAgICAgaWYgKG1hc2tMYXllci0+ZHJhd3NDb250ZW50KCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAobWFza0xheWVyLT5jb250ZW50c0RpcnR5KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbWFza0xheWVyLT51cGRhdGVDb250ZW50cygpOworICAgICAgICAgICAg
ICAgICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBoYXNNYXNrVGV4dHVyZSA9IHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KIAotICAgICAgICBzZXRTY2lzc29yVG9SZWN0KGxheWVyLT5tX3JlbmRlclN1
cmZhY2UtPm1fc2Npc3NvclJlY3QpOworICAgICAgICB1bnNpZ25lZCBzaGFkZXJNYXRyaXhMb2Nh
dGlvbjsKKyAgICAgICAgdW5zaWduZWQgc2hhZGVyQWxwaGFMb2NhdGlvbjsKKyAgICAgICAgaWYg
KGhhc01hc2tUZXh0dXJlKSB7CisgICAgICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7CisgICAgICAgICAg
ICByZW5kZXJTdXJmYWNlLT5tX21hc2tMYXllci0+YmluZENvbnRlbnRzVGV4dHVyZSgpOworICAg
ICAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFMCkpOyAgICAgICAgICAgIAorICAgICAgICAgICAgdXNlU2hhZGVy
KG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJQcm9ncmFtKTsKKyAgICAgICAgICAgIHNoYWRl
ck1hdHJpeExvY2F0aW9uID0gbV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlck1hdHJpeExvY2F0
aW9uOworICAgICAgICAgICAgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IG1fdGV4dHVyZUxheWVyV2l0
aE1hc2tTaGFkZXJBbHBoYUxvY2F0aW9uOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dXNlU2hhZGVyKG1fdGV4dHVyZUxheWVyU2hhZGVyUHJvZ3JhbSk7CisgICAgICAgICAgICBzaGFk
ZXJNYXRyaXhMb2NhdGlvbiA9IG1fdGV4dHVyZUxheWVyU2hhZGVyTWF0cml4TG9jYXRpb247Cisg
ICAgICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9uID0gbV90ZXh0dXJlTGF5ZXJTaGFkZXJBbHBo
YUxvY2F0aW9uOworICAgICAgICB9CisKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcmVuZGVyU3VyZmFj
ZS0+bV9jb250ZW50c1RleHR1cmVJZCkpOwogCi0gICAgICAgIEludFJlY3QgY29udGVudFJlY3Qg
PSBsYXllci0+bV9yZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0OworICAgICAgICBzZXRTY2lz
c29yVG9SZWN0KHJlbmRlclN1cmZhY2UtPm1fc2Npc3NvclJlY3QpOworCisgICAgICAgIEludFJl
Y3QgY29udGVudFJlY3QgPSByZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0OwogICAgICAgICBM
YXllckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKG1fY29udGV4dC5nZXQoKSwgbV9wcm9qZWN0
aW9uTWF0cml4LCBsYXllci0+bV9yZW5kZXJTdXJmYWNlLT5tX2RyYXdUcmFuc2Zvcm0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3Qud2lkdGgoKSwg
Y29udGVudFJlY3QuaGVpZ2h0KCksIGxheWVyLT5tX3JlbmRlclN1cmZhY2UtPm1fZHJhd09wYWNp
dHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV90ZXh0dXJlTGF5
ZXJTaGFkZXJNYXRyaXhMb2NhdGlvbiwgbV90ZXh0dXJlTGF5ZXJTaGFkZXJBbHBoYUxvY2F0aW9u
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UmVjdC53
aWR0aCgpLCBjb250ZW50UmVjdC5oZWlnaHQoKSwgcmVuZGVyU3VyZmFjZS0+bV9kcmF3T3BhY2l0
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJNYXRyaXhM
b2NhdGlvbiwgc2hhZGVyQWxwaGFMb2NhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTgxMiwxNCArODU1LDI1IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFs
aXplU2gKICAgICAgICAgIiAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHZf
dGV4Q29vcmQpOyBcbiIKICAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci54
LCB0ZXhDb2xvci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAqIGFscGhhOyBcbiIKICAgICAg
ICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
biI7CisgICAgY2hhciB0ZXh0dXJlTGF5ZXJXaXRoTWFza0ZyYWdtZW50U2hhZGVyU3RyaW5nW10g
PQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFxuIgorICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJl
OyAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQg
c19tYXNrVGV4dHVyZTsgICAgICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAidW5pZm9ybSBm
bG9hdCBhbHBoYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAi
dm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgor
ICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFxuIgorICAgICAgICAiICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwg
dl90ZXhDb29yZCk7IFxuIgorICAgICAgICAiICB2ZWM0IG1hc2tDb2xvciA9IHRleHR1cmUyRChz
X21hc2tUZXh0dXJlLCB2X3RleENvb3JkKTsgXG4iCisgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9
IHZlYzQodGV4Q29sb3IueCwgdGV4Q29sb3IueSwgdGV4Q29sb3IueiwgdGV4Q29sb3IudykgKiBh
bHBoYSAqIG1hc2tDb2xvci53OyBcbiIKKyAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7CiAKICAgICBtX3RleHR1cmVMYXllclNo
YWRlclByb2dyYW0gPSBMYXllckNocm9taXVtOjpjcmVhdGVTaGFkZXJQcm9ncmFtKG1fY29udGV4
dC5nZXQoKSwgdGV4dHVyZUxheWVyVmVydGV4U2hhZGVyU3RyaW5nLCB0ZXh0dXJlTGF5ZXJGcmFn
bWVudFNoYWRlclN0cmluZyk7CiAgICAgaWYgKCFtX3RleHR1cmVMYXllclNoYWRlclByb2dyYW0p
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJMYXllclJlbmRlcmVyQ2hyb21pdW06IEZhaWxlZCB0byBj
cmVhdGUgc2Nyb2xsIHNoYWRlciBwcm9ncmFtIik7CisgICAgICAgIExPR19FUlJPUigiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOiBGYWlsZWQgdG8gY3JlYXRlIHRleHR1cmUgbGF5ZXIgc2hhZGVyIHBy
b2dyYW0iKTsKICAgICAgICAgY2xlYW51cFNoYXJlZE9iamVjdHMoKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KLQogICAgIEdMQyhtX2NvbnRleHQsIG1fdGV4dHVyZUxheWVyU2hhZGVy
U2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV90ZXh0dXJl
TGF5ZXJTaGFkZXJQcm9ncmFtLCAic190ZXh0dXJlIikpOwogICAgIEdMQyhtX2NvbnRleHQsIG1f
dGV4dHVyZUxheWVyU2hhZGVyTWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihtX3RleHR1cmVMYXllclNoYWRlclByb2dyYW0sICJtYXRyaXgiKSk7CiAgICAgR0xD
KG1fY29udGV4dCwgbV90ZXh0dXJlTGF5ZXJTaGFkZXJBbHBoYUxvY2F0aW9uID0gbV9jb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24obV90ZXh0dXJlTGF5ZXJTaGFkZXJQcm9ncmFtLCAiYWxwaGEi
KSk7CkBAIC04MjgsNiArODgyLDI5IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0
aWFsaXplU2gKICAgICAgICAgY2xlYW51cFNoYXJlZE9iamVjdHMoKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KKyAgICB1c2VTaGFkZXIobV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRl
clByb2dyYW0pOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fdGV4
dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb24sIDApKTsKKworICAgIG1fdGV4
dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJQcm9ncmFtID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlU2hh
ZGVyUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCksIHRleHR1cmVMYXllclZlcnRleFNoYWRlclN0cmlu
ZywgdGV4dHVyZUxheWVyV2l0aE1hc2tGcmFnbWVudFNoYWRlclN0cmluZyk7CisgICAgaWYgKCFt
X3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyUHJvZ3JhbSkgeworICAgICAgICBMT0dfRVJST1Io
IkxheWVyUmVuZGVyZXJDaHJvbWl1bTogRmFpbGVkIHRvIGNyZWF0ZSB0ZXh0dXJlIGxheWVyIHdp
dGggbWFzayBzaGFkZXIgcHJvZ3JhbSIpOworICAgICAgICBjbGVhbnVwU2hhcmVkT2JqZWN0cygp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgR0xDKG1fY29udGV4dCwgbV90
ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJQcm9ncmFtLCAic190
ZXh0dXJlIikpOworICAgIEdMQyhtX2NvbnRleHQsIG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFk
ZXJNYXNrU2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV90
ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlclByb2dyYW0sICJzX21hc2tUZXh0dXJlIikpOworICAg
IEdMQyhtX2NvbnRleHQsIG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJNYXRyaXhMb2NhdGlv
biA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fdGV4dHVyZUxheWVyV2l0aE1hc2tT
aGFkZXJQcm9ncmFtLCAibWF0cml4IikpOworICAgIEdMQyhtX2NvbnRleHQsIG1fdGV4dHVyZUxh
eWVyV2l0aE1hc2tTaGFkZXJBbHBoYUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24obV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlclByb2dyYW0sICJhbHBoYSIpKTsKKyAg
ICBpZiAobV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlclNhbXBsZXJMb2NhdGlvbiA9PSAtMSB8
fCBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiA9PSAtMQor
ICAgICAgICB8fCBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyTWF0cml4TG9jYXRpb24gPT0g
LTEgfHwgbV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlckFscGhhTG9jYXRpb24gPT0gLTEpIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0ZXh0dXJlIGxheWVyIHdp
dGggbWFzayBzaGFkZXIuIik7CisgICAgICAgIGNsZWFudXBTaGFyZWRPYmplY3RzKCk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgdXNlU2hhZGVyKG1fdGV4dHVyZUxheWVyV2l0
aE1hc2tTaGFkZXJQcm9ncmFtKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZv
cm0xaShtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyU2FtcGxlckxvY2F0aW9uLCAwKSk7Cisg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkobV90ZXh0dXJlTGF5ZXJXaXRo
TWFza1NoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIDEpKTsKIAogICAgIC8vIENyZWF0ZSBhIHRl
eHR1cmUgb2JqZWN0IHRvIGhvbGQgdGhlIGNvbnRlbnRzIG9mIHRoZSByb290IGxheWVyLgogICAg
IG1fcm9vdExheWVyVGV4dHVyZUlkID0gY3JlYXRlTGF5ZXJUZXh0dXJlKCk7CkBAIC04NzgsNiAr
OTU1LDExIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmUKICAgICAg
ICAgbV90ZXh0dXJlTGF5ZXJTaGFkZXJQcm9ncmFtID0gMDsKICAgICB9CiAKKyAgICBpZiAobV90
ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlclByb2dyYW0pIHsKKyAgICAgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJQ
cm9ncmFtKSk7CisgICAgICAgIG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJQcm9ncmFtID0g
MDsKKyAgICB9CisKICAgICBpZiAobV9yb290TGF5ZXJUZXh0dXJlSWQpIHsKICAgICAgICAgZGVs
ZXRlTGF5ZXJUZXh0dXJlKG1fcm9vdExheWVyVGV4dHVyZUlkKTsKICAgICAgICAgbV9yb290TGF5
ZXJUZXh0dXJlSWQgPSAwOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA3MjM2
MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsMTIgQEAgcHJpdmF0ZToKICAg
ICBpbnQgbV90ZXh0dXJlTGF5ZXJTaGFkZXJNYXRyaXhMb2NhdGlvbjsKICAgICBpbnQgbV90ZXh0
dXJlTGF5ZXJTaGFkZXJBbHBoYUxvY2F0aW9uOwogCisgICAgdW5zaWduZWQgbV90ZXh0dXJlTGF5
ZXJXaXRoTWFza1NoYWRlclByb2dyYW07CisgICAgaW50IG1fdGV4dHVyZUxheWVyV2l0aE1hc2tT
aGFkZXJTYW1wbGVyTG9jYXRpb247CisgICAgaW50IG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFk
ZXJNYXNrU2FtcGxlckxvY2F0aW9uOworICAgIGludCBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hh
ZGVyTWF0cml4TG9jYXRpb247CisgICAgaW50IG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJB
bHBoYUxvY2F0aW9uOworCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9wcm9qZWN0aW9uTWF0
cml4OwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1
cmZhY2VDaHJvbWl1bS5oCShyZXZpc2lvbiA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDYgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVy
UmVuZGVyZXIoKTsKIAogICAgIExheWVyQ2hyb21pdW0qIG1fb3duaW5nTGF5ZXI7CisgICAgTGF5
ZXJDaHJvbWl1bSogbV9tYXNrTGF5ZXI7CiAgICAgSW50UmVjdCBtX2NvbnRlbnRSZWN0OwogICAg
IHVuc2lnbmVkIG1fY29udGVudHNUZXh0dXJlSWQ7CiAgICAgZmxvYXQgbV9kcmF3T3BhY2l0eTsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDcyMzYxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMTAtMTEtMTggIFZhbmdlbGlzIEtva2tldmlz
ICA8dmFuZ2VsaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAo
T09QUyEpCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1ncHUvdGVzdF9leHBlY3RhdGlv
bnMudHh0OgorCiAyMDEwLTExLTE4ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIE1pc2MgdGVzdCB1cGRhdGVzIChtb3N0IFJ1YnkpLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74435</attachid>
            <date>2010-11-19 15:42:00 -0800</date>
            <delta_ts>2010-11-22 16:02:34 -0800</delta_ts>
            <desc>Removed ANGLE workaround which is no longer necessary</desc>
            <filename>masking_49780_3.txt</filename>
            <type>text/plain</type>
            <size>18624</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjQ0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMTEtMTkgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtjaHJvbWl1bV0gQWRkIHN1cHBvcnQgZm9yIC13ZWJraXQtbWFzayBwcm9wZXJ0aWVz
IHRvIHRoZQorICAgICAgICBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBwYXRoLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk3ODAKKyAgICAgICAgCisg
ICAgICAgIFRlc3RzOiBleGlzdGluZyB0ZXN0cyBpbiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9t
YXNrcworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpi
aW5kQ29udGVudHNUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckNocm9taXVtOjpiaW5kQ29udGVudHNUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6bWFza0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpwcmVwYXJlVG9EcmF3TGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzUmVjdXJzaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVk
T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVu
ZGVyU3VyZmFjZUNocm9taXVtLmg6CisKIDIwMTAtMTEtMTkgIE1pY2hhZWwgU2Fib2ZmICA8bXNh
Ym9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzAsOCArMjMwLDEwIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0
ZUNvbnRlbnQKICAgICAgICAgdXBkYXRlUmVjdCA9IGRpcnR5UmVjdDsKICAgICB9CiAKLSAgICBp
ZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkgewor
ICAgICAgICBtX2NvbnRlbnRzRGlydHkgPSByZXF1aXJlc0NsaXBwZWRVcGRhdGVSZWN0KCk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICNpZiBQTEFURk9STShTS0lBKQogICAgIGNvbnN0IFNr
Qml0bWFwKiBza2lhQml0bWFwID0gMDsKQEAgLTM1NCw1ICszNTYsMTIgQEAgdm9pZCBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgfQogfQogCit2b2lkIENvbnRlbnRMYXllckNocm9t
aXVtOjpiaW5kQ29udGVudHNUZXh0dXJlKCkKK3sKKyAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigp
ICYmIGxheWVyUmVuZGVyZXJDb250ZXh0KCkpOworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29udGVudHNUZXh0
dXJlKSk7Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRl
bnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3ND
b250ZW50KCkgeyByZXR1cm4gbV9vd25lciAmJiBtX293bmVyLT5kcmF3c0NvbnRlbnQoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKCk7CiAKICAgICAvLyBTdG9yZXMg
dmFsdWVzIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHRo
YXQgYXJlCiAgICAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIExheWVyUmVuZGVyZXJDaHJv
bWl1bSAoYW5kIGhlbmNlIHRoZSBzYW1lIEdMCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3Bw
CShyZXZpc2lvbiA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R3JhcGhpY3NMYXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDYgKzI2OCwx
NyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNPCiAgICAgdXBkYXRl
Q29udGVudHNPcGFxdWUoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE1h
c2tMYXllcihHcmFwaGljc0xheWVyKiBtYXNrTGF5ZXIpCit7CisgICAgaWYgKG1hc2tMYXllciA9
PSBtX21hc2tMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0
TWFza0xheWVyKG1hc2tMYXllcik7CisKKyAgICBMYXllckNocm9taXVtKiBtYXNrTGF5ZXJDaHJv
bWl1bSA9IG1fbWFza0xheWVyID8gbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDA7Cisg
ICAgbV9sYXllci0+c2V0TWFza0xheWVyKG1hc2tMYXllckNocm9taXVtKTsKK30KKwogdm9pZCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2libGUp
CiB7CiAgICAgaWYgKG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IHZpc2libGUpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmgJKHJldmlzaW9uIDcyMzYwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tM
YXllcihHcmFwaGljc0xheWVyKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENv
bG9yKGNvbnN0IENvbG9yJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2dyb3VuZENvbG9y
KCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDcyMzYwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE1
LDUgKzUxNSwxNSBAQCB2b2lkIExheWVyQ2hyb21pdW06OnByZXBhcmVGb3JEcmF3KGNvbnN0CiAg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNfdGV4Q29v
cmRBdHRyaWJMb2NhdGlvbikpOwogfQogCisvLyBUaGlzIG1ldGhvZCB3aWxsIHR5cGljYWxseSBi
ZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuIExheWVyIHR5cGVzIHRoYXQKKy8vIGRv
bid0IGltcGxlbWVudCBpdCB3aWxsIGJpbmQgdGV4dHVyZSAwLgordm9pZCBMYXllckNocm9taXVt
OjpiaW5kQ29udGVudHNUZXh0dXJlKCkKK3sKKyAgICAvLyBXZSBkb24ndCByZWFsbHkgZXhwZWN0
IHRvIGNhbGwgdGhpcyBtZXRob2QgZm9yIHRoZSBiYXNlIGxheWVyIHR5cGUuCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJl
bmRlcmVyQ29udGV4dCgpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCkpOworfQorCiB9CiAjZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgJKHJldmlzaW9uIDcyMzYwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExMSw2ICsxMTEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROYW1lKGNv
bnN0IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9CiAgICAgU3RyaW5nIG5hbWUoKSBj
b25zdCB7IHJldHVybiBtX25hbWU7IH0KIAorICAgIHZvaWQgc2V0TWFza0xheWVyKExheWVyQ2hy
b21pdW0qIG1hc2tMYXllcikgeyBtX21hc2tMYXllciA9IG1hc2tMYXllcjsgfQorICAgIExheWVy
Q2hyb21pdW0qIG1hc2tMYXllcigpIHsgcmV0dXJuIG1fbWFza0xheWVyLmdldCgpOyB9CisKICAg
ICB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCk7CiAgICAg
dm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKICAgICBjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlydHlSZWN0OyB9CkBAIC0xNjAsNiArMTYzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cygpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgZHJh
dygpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZSgpOwogCiAgICAg
dm9pZCBkcmF3RGVidWdCb3JkZXIoKTsKIApAQCAtMjIzLDYgKzIyNyw4IEBAIHByb3RlY3RlZDoK
ICAgICBGbG9hdFJlY3QgbV9kaXJ0eVJlY3Q7CiAgICAgYm9vbCBtX2NvbnRlbnRzRGlydHk7CiAK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9tYXNrTGF5ZXI7CisKICAgICAvLyBSZW5kZXIg
c3VyZmFjZSB0aGlzIGxheWVyIGRyYXdzIGludG8uIFRoaXMgaXMgYSBzdXJmYWNlIHRoYXQgY2Fu
IGJlbG9uZwogICAgIC8vIGVpdGhlciB0byB0aGlzIGxheWVyIChpZiBtX3RhcmdldFJlbmRlclN1
cmZhY2UgPT0gbV9yZW5kZXJTdXJmYWNlKSBvcgogICAgIC8vIHRvIGFuIGFuY2VzdG9yIG9mIHRo
aXMgbGF5ZXIuIFRoZSB0YXJnZXQgcmVuZGVyIHN1cmZhY2UgZGV0ZXJtaW5lcyB0aGUKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDcyMzYwKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05OSw2ICs5OSw3IEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5k
ZXJlckNocm8KICAgICAsIG1fcm9vdExheWVyVGV4dHVyZVdpZHRoKDApCiAgICAgLCBtX3Jvb3RM
YXllclRleHR1cmVIZWlnaHQoMCkKICAgICAsIG1fdGV4dHVyZUxheWVyU2hhZGVyUHJvZ3JhbSgw
KQorICAgICwgbV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlclByb2dyYW0oMCkKICAgICAsIG1f
cm9vdExheWVyKDApCiAgICAgLCBtX3Njcm9sbFBvc2l0aW9uKEludFBvaW50KC0xLCAtMSkpCiAg
ICAgLCBtX2N1cnJlbnRTaGFkZXIoMCkKQEAgLTI0NSw3ICsyNDYsNyBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6cHJlcGFyZVRvRHJhCiAgICAgICAgIHNjcm9sbGVkTGF5ZXJNYXRyaXgu
c2NhbGUzZCgxLCAtMSwgMSk7CiAKICAgICAgICAgdXNlU2hhZGVyKG1fdGV4dHVyZUxheWVyU2hh
ZGVyUHJvZ3JhbSk7Ci0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFp
KG1fdGV4dHVyZUxheWVyU2hhZGVyU2FtcGxlckxvY2F0aW9uLCAwKSk7CisKICAgICAgICAgTGF5
ZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVkUXVhZChtX2NvbnRleHQuZ2V0KCksIG1fcHJvamVjdGlv
bk1hdHJpeCwgc2Nyb2xsZWRMYXllck1hdHJpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2aXNpYmxlUmVjdC53aWR0aCgpLCB2aXNpYmxlUmVjdC5oZWlnaHQoKSwg
MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3RleHR1cmVMYXll
clNoYWRlck1hdHJpeExvY2F0aW9uLCBtX3RleHR1cmVMYXllclNoYWRlckFscGhhTG9jYXRpb24p
OwpAQCAtNDkzLDcgKzQ5NCw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVM
YXllcnMKICAgICAvLyBvZiB0aGVpciBwYXJlbnQuCiAgICAgYm9vbCB1c2VTdXJmYWNlRm9yQ2xp
cHBpbmcgPSBsYXllci0+bWFza3NUb0JvdW5kcygpICYmICFpc1NjYWxlT3JUcmFuc2xhdGlvbihj
b21iaW5lZFRyYW5zZm9ybSk7CiAgICAgYm9vbCB1c2VTdXJmYWNlRm9yT3BhY2l0eSA9IGxheWVy
LT5vcGFjaXR5KCkgIT0gMSAmJiAhbGF5ZXItPnByZXNlcnZlczNEKCk7Ci0gICAgaWYgKCh1c2VT
dXJmYWNlRm9yQ2xpcHBpbmcgfHwgdXNlU3VyZmFjZUZvck9wYWNpdHkpICYmIGxheWVyLT5kZXNj
ZW5kYW50c0RyYXdDb250ZW50KCkpIHsKKyAgICBib29sIHVzZVN1cmZhY2VGb3JNYXNraW5nID0g
bGF5ZXItPm1hc2tMYXllcigpOworICAgIGlmICgoKHVzZVN1cmZhY2VGb3JDbGlwcGluZyB8fCB1
c2VTdXJmYWNlRm9yT3BhY2l0eSkgJiYgbGF5ZXItPmRlc2NlbmRhbnRzRHJhd0NvbnRlbnQoKSkK
KyAgICAgICAgfHwgdXNlU3VyZmFjZUZvck1hc2tpbmcpIHsKICAgICAgICAgUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gbGF5ZXItPm1fcmVuZGVyU3VyZmFjZS5nZXQoKTsK
ICAgICAgICAgaWYgKCFyZW5kZXJTdXJmYWNlKQogICAgICAgICAgICAgcmVuZGVyU3VyZmFjZSA9
IGxheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CkBAIC01MjcsNiArNTMwLDEzIEBAIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnMKIAogICAgICAgICByZW5kZXJTdXJm
YWNlLT5tX2xheWVyTGlzdC5jbGVhcigpOwogCisgICAgICAgIGlmIChsYXllci0+bWFza0xheWVy
KCkpIHsKKyAgICAgICAgICAgIHJlbmRlclN1cmZhY2UtPm1fbWFza0xheWVyID0gbGF5ZXItPm1h
c2tMYXllcigpOworICAgICAgICAgICAgbGF5ZXItPm1hc2tMYXllcigpLT5zZXRMYXllclJlbmRl
cmVyKHRoaXMpOworICAgICAgICAgICAgbGF5ZXItPm1hc2tMYXllcigpLT5tX3RhcmdldFJlbmRl
clN1cmZhY2UgPSByZW5kZXJTdXJmYWNlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJl
bmRlclN1cmZhY2UtPm1fbWFza0xheWVyID0gMDsKKwogICAgICAgICByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LmFwcGVuZChsYXllcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRFQgPSBNW3Bd
ICogTFQKQEAgLTYwNyw3ICs2MTcsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBk
YXRlTGF5ZXJzCiAgICAgICAgICAgICBsYXllci0+bV9kcmF3YWJsZUNvbnRlbnRSZWN0LnVuaXRl
KHN1YmxheWVyLT5tX2RyYXdhYmxlQ29udGVudFJlY3QpOwogICAgIH0KIAotICAgIGlmIChsYXll
ci0+bWFza3NUb0JvdW5kcygpKQorICAgIGlmIChsYXllci0+bWFza3NUb0JvdW5kcygpIHx8IHVz
ZVN1cmZhY2VGb3JNYXNraW5nKQogICAgICAgICBsYXllci0+bV9kcmF3YWJsZUNvbnRlbnRSZWN0
LmludGVyc2VjdCh0cmFuc2Zvcm1lZExheWVyUmVjdCk7CiAKICAgICBpZiAobGF5ZXItPm1fcmVu
ZGVyU3VyZmFjZSAmJiBsYXllciAhPSBtX3Jvb3RMYXllcikgewpAQCAtNjkwLDE1ICs3MDAsNDMg
QEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cgogdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcihMYXllckNocm9taXVtKiBsYXllciwgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtKiB0YXJnZXRTdXJmYWNlKQogewogICAgIGlmIChsYXllci0+bV9yZW5kZXJT
dXJmYWNlICYmIGxheWVyLT5tX3JlbmRlclN1cmZhY2UgIT0gdGFyZ2V0U3VyZmFjZSkgewotICAg
ICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBsYXllci0+bV9yZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRzVGV4dHVy
ZUlkKSk7Ci0gICAgICAgIHVzZVNoYWRlcihtX3RleHR1cmVMYXllclNoYWRlclByb2dyYW0pOwor
ICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSBsYXllci0+bV9y
ZW5kZXJTdXJmYWNlLmdldCgpOworCisgICAgICAgIGJvb2wgaGFzTWFza1RleHR1cmUgPSBmYWxz
ZTsKKyAgICAgICAgaWYgKHJlbmRlclN1cmZhY2UtPm1fbWFza0xheWVyKSB7CisgICAgICAgICAg
ICBMYXllckNocm9taXVtKiBtYXNrTGF5ZXIgPSByZW5kZXJTdXJmYWNlLT5tX21hc2tMYXllcjsK
KyAgICAgICAgICAgIGlmIChtYXNrTGF5ZXItPmRyYXdzQ29udGVudCgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKG1hc2tMYXllci0+Y29udGVudHNEaXJ0eSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIG1hc2tMYXllci0+dXBkYXRlQ29udGVudHMoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaGFzTWFza1RleHR1cmUgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9
CiAKLSAgICAgICAgc2V0U2Npc3NvclRvUmVjdChsYXllci0+bV9yZW5kZXJTdXJmYWNlLT5tX3Nj
aXNzb3JSZWN0KTsKKyAgICAgICAgdW5zaWduZWQgc2hhZGVyTWF0cml4TG9jYXRpb247CisgICAg
ICAgIHVuc2lnbmVkIHNoYWRlckFscGhhTG9jYXRpb247CisgICAgICAgIGlmIChoYXNNYXNrVGV4
dHVyZSkgeworICAgICAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMSkpOworICAgICAgICAgICAgcmVuZGVyU3Vy
ZmFjZS0+bV9tYXNrTGF5ZXItPmJpbmRDb250ZW50c1RleHR1cmUoKTsKKyAgICAgICAgICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRTApKTsgICAgICAgICAgICAKKyAgICAgICAgICAgIHVzZVNoYWRlcihtX3RleHR1cmVM
YXllcldpdGhNYXNrU2hhZGVyUHJvZ3JhbSk7CisgICAgICAgICAgICBzaGFkZXJNYXRyaXhMb2Nh
dGlvbiA9IG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJNYXRyaXhMb2NhdGlvbjsKKyAgICAg
ICAgICAgIHNoYWRlckFscGhhTG9jYXRpb24gPSBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVy
QWxwaGFMb2NhdGlvbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVzZVNoYWRlciht
X3RleHR1cmVMYXllclNoYWRlclByb2dyYW0pOworICAgICAgICAgICAgc2hhZGVyTWF0cml4TG9j
YXRpb24gPSBtX3RleHR1cmVMYXllclNoYWRlck1hdHJpeExvY2F0aW9uOworICAgICAgICAgICAg
c2hhZGVyQWxwaGFMb2NhdGlvbiA9IG1fdGV4dHVyZUxheWVyU2hhZGVyQWxwaGFMb2NhdGlvbjsK
KyAgICAgICAgfQogCi0gICAgICAgIEludFJlY3QgY29udGVudFJlY3QgPSBsYXllci0+bV9yZW5k
ZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0OworICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCByZW5kZXJTdXJm
YWNlLT5tX2NvbnRlbnRzVGV4dHVyZUlkKSk7CisKKyAgICAgICAgc2V0U2Npc3NvclRvUmVjdChy
ZW5kZXJTdXJmYWNlLT5tX3NjaXNzb3JSZWN0KTsKKworICAgICAgICBJbnRSZWN0IGNvbnRlbnRS
ZWN0ID0gcmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdDsKICAgICAgICAgTGF5ZXJDaHJvbWl1
bTo6ZHJhd1RleHR1cmVkUXVhZChtX2NvbnRleHQuZ2V0KCksIG1fcHJvamVjdGlvbk1hdHJpeCwg
bGF5ZXItPm1fcmVuZGVyU3VyZmFjZS0+bV9kcmF3VHJhbnNmb3JtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0
LmhlaWdodCgpLCBsYXllci0+bV9yZW5kZXJTdXJmYWNlLT5tX2RyYXdPcGFjaXR5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdGV4dHVyZUxheWVyU2hhZGVyTWF0
cml4TG9jYXRpb24sIG1fdGV4dHVyZUxheWVyU2hhZGVyQWxwaGFMb2NhdGlvbik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3Qud2lkdGgoKSwgY29u
dGVudFJlY3QuaGVpZ2h0KCksIHJlbmRlclN1cmZhY2UtPm1fZHJhd09wYWNpdHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyTWF0cml4TG9jYXRpb24sIHNo
YWRlckFscGhhTG9jYXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MTIsMTQg
Kzg1MCwyNSBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoCiAgICAg
ICAgICIgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsg
XG4iCiAgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQodGV4Q29sb3IueCwgdGV4Q29sb3Iu
eSwgdGV4Q29sb3IueiwgdGV4Q29sb3IudykgKiBhbHBoYTsgXG4iCiAgICAgICAgICJ9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOworICAgIGNo
YXIgdGV4dHVyZUxheWVyV2l0aE1hc2tGcmFnbWVudFNoYWRlclN0cmluZ1tdID0KKyAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIK
KyAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsgICAgICAgICAg
ICAgICAgICAgICAgICBcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHNfbWFza1RleHR1
cmU7ICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgInVuaWZvcm0gZmxvYXQgYWxwaGE7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgInZvaWQgbWFpbigp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgInsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAg
ICAgICAgIiAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHZfdGV4Q29vcmQp
OyBcbiIKKyAgICAgICAgIiAgdmVjNCBtYXNrQ29sb3IgPSB0ZXh0dXJlMkQoc19tYXNrVGV4dHVy
ZSwgdl90ZXhDb29yZCk7IFxuIgorICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENv
bG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnosIHRleENvbG9yLncpICogYWxwaGEgKiBtYXNr
Q29sb3IudzsgXG4iCisgICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXG4iOwogCiAgICAgbV90ZXh0dXJlTGF5ZXJTaGFkZXJQcm9ncmFt
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCksIHRl
eHR1cmVMYXllclZlcnRleFNoYWRlclN0cmluZywgdGV4dHVyZUxheWVyRnJhZ21lbnRTaGFkZXJT
dHJpbmcpOwogICAgIGlmICghbV90ZXh0dXJlTGF5ZXJTaGFkZXJQcm9ncmFtKSB7Ci0gICAgICAg
IExPR19FUlJPUigiTGF5ZXJSZW5kZXJlckNocm9taXVtOiBGYWlsZWQgdG8gY3JlYXRlIHNjcm9s
bCBzaGFkZXIgcHJvZ3JhbSIpOworICAgICAgICBMT0dfRVJST1IoIkxheWVyUmVuZGVyZXJDaHJv
bWl1bTogRmFpbGVkIHRvIGNyZWF0ZSB0ZXh0dXJlIGxheWVyIHNoYWRlciBwcm9ncmFtIik7CiAg
ICAgICAgIGNsZWFudXBTaGFyZWRPYmplY3RzKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0KICAgICBHTEMobV9jb250ZXh0LCBtX3RleHR1cmVMYXllclNoYWRlclNhbXBsZXJMb2Nh
dGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fdGV4dHVyZUxheWVyU2hhZGVy
UHJvZ3JhbSwgInNfdGV4dHVyZSIpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX3RleHR1cmVMYXll
clNoYWRlck1hdHJpeExvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV90
ZXh0dXJlTGF5ZXJTaGFkZXJQcm9ncmFtLCAibWF0cml4IikpOwogICAgIEdMQyhtX2NvbnRleHQs
IG1fdGV4dHVyZUxheWVyU2hhZGVyQWxwaGFMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKG1fdGV4dHVyZUxheWVyU2hhZGVyUHJvZ3JhbSwgImFscGhhIikpOwpAQCAtODI4
LDYgKzg3NywyOSBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoCiAg
ICAgICAgIGNsZWFudXBTaGFyZWRPYmplY3RzKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CisgICAgdXNlU2hhZGVyKG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJQcm9ncmFtKTsK
KyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZvcm0xaShtX3RleHR1cmVMYXllcldp
dGhNYXNrU2hhZGVyU2FtcGxlckxvY2F0aW9uLCAwKSk7CisKKyAgICBtX3RleHR1cmVMYXllcldp
dGhNYXNrU2hhZGVyUHJvZ3JhbSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZVNoYWRlclByb2dyYW0o
bV9jb250ZXh0LmdldCgpLCB0ZXh0dXJlTGF5ZXJWZXJ0ZXhTaGFkZXJTdHJpbmcsIHRleHR1cmVM
YXllcldpdGhNYXNrRnJhZ21lbnRTaGFkZXJTdHJpbmcpOworICAgIGlmICghbV90ZXh0dXJlTGF5
ZXJXaXRoTWFza1NoYWRlclByb2dyYW0pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJMYXllclJlbmRl
cmVyQ2hyb21pdW06IEZhaWxlZCB0byBjcmVhdGUgdGV4dHVyZSBsYXllciB3aXRoIG1hc2sgc2hh
ZGVyIHByb2dyYW0iKTsKKyAgICAgICAgY2xlYW51cFNoYXJlZE9iamVjdHMoKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdMQyhtX2NvbnRleHQsIG1fdGV4dHVyZUxheWVy
V2l0aE1hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVyZSIpKTsK
KyAgICBHTEMobV9jb250ZXh0LCBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyTWFza1NhbXBs
ZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fdGV4dHVyZUxheWVy
V2l0aE1hc2tTaGFkZXJQcm9ncmFtLCAic19tYXNrVGV4dHVyZSIpKTsKKyAgICBHTEMobV9jb250
ZXh0LCBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyTWF0cml4TG9jYXRpb24gPSBtX2NvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyUHJvZ3Jh
bSwgIm1hdHJpeCIpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX3RleHR1cmVMYXllcldpdGhNYXNr
U2hhZGVyQWxwaGFMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fdGV4
dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJQcm9ncmFtLCAiYWxwaGEiKSk7CisgICAgaWYgKG1fdGV4
dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb24gPT0gLTEgfHwgbV90ZXh0dXJl
TGF5ZXJXaXRoTWFza1NoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24gPT0gLTEKKyAgICAgICAgfHwg
bV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlck1hdHJpeExvY2F0aW9uID09IC0xIHx8IG1fdGV4
dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJBbHBoYUxvY2F0aW9uID09IC0xKSB7CisgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGluaXRpYWxpemUgdGV4dHVyZSBsYXllciB3aXRoIG1hc2sgc2hh
ZGVyLiIpOworICAgICAgICBjbGVhbnVwU2hhcmVkT2JqZWN0cygpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIHVzZVNoYWRlcihtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVy
UHJvZ3JhbSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkobV90ZXh0
dXJlTGF5ZXJXaXRoTWFza1NoYWRlclNhbXBsZXJMb2NhdGlvbiwgMCkpOworICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJN
YXNrU2FtcGxlckxvY2F0aW9uLCAxKSk7CiAKICAgICAvLyBDcmVhdGUgYSB0ZXh0dXJlIG9iamVj
dCB0byBob2xkIHRoZSBjb250ZW50cyBvZiB0aGUgcm9vdCBsYXllci4KICAgICBtX3Jvb3RMYXll
clRleHR1cmVJZCA9IGNyZWF0ZUxheWVyVGV4dHVyZSgpOwpAQCAtODc4LDYgKzk1MCwxMSBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlCiAgICAgICAgIG1fdGV4dHVy
ZUxheWVyU2hhZGVyUHJvZ3JhbSA9IDA7CiAgICAgfQogCisgICAgaWYgKG1fdGV4dHVyZUxheWVy
V2l0aE1hc2tTaGFkZXJQcm9ncmFtKSB7CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+ZGVsZXRlUHJvZ3JhbShtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyUHJvZ3JhbSkpOwor
ICAgICAgICBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyUHJvZ3JhbSA9IDA7CisgICAgfQor
CiAgICAgaWYgKG1fcm9vdExheWVyVGV4dHVyZUlkKSB7CiAgICAgICAgIGRlbGV0ZUxheWVyVGV4
dHVyZShtX3Jvb3RMYXllclRleHR1cmVJZCk7CiAgICAgICAgIG1fcm9vdExheWVyVGV4dHVyZUlk
ID0gMDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAkocmV2aXNpb24gNzIzNjApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDEyIEBAIHByaXZhdGU6CiAgICAgaW50IG1fdGV4
dHVyZUxheWVyU2hhZGVyTWF0cml4TG9jYXRpb247CiAgICAgaW50IG1fdGV4dHVyZUxheWVyU2hh
ZGVyQWxwaGFMb2NhdGlvbjsKIAorICAgIHVuc2lnbmVkIG1fdGV4dHVyZUxheWVyV2l0aE1hc2tT
aGFkZXJQcm9ncmFtOworICAgIGludCBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyU2FtcGxl
ckxvY2F0aW9uOworICAgIGludCBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyTWFza1NhbXBs
ZXJMb2NhdGlvbjsKKyAgICBpbnQgbV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlck1hdHJpeExv
Y2F0aW9uOworICAgIGludCBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyQWxwaGFMb2NhdGlv
bjsKKwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcHJvamVjdGlvbk1hdHJpeDsKIAogICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21p
dW0uaAkocmV2aXNpb24gNzIzNjApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3
IEBAIHByaXZhdGU6CiAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKCk7
CiAKICAgICBMYXllckNocm9taXVtKiBtX293bmluZ0xheWVyOworICAgIExheWVyQ2hyb21pdW0q
IG1fbWFza0xheWVyOwogICAgIEludFJlY3QgbV9jb250ZW50UmVjdDsKICAgICB1bnNpZ25lZCBt
X2NvbnRlbnRzVGV4dHVyZUlkOwogICAgIGZsb2F0IG1fZHJhd09wYWNpdHk7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3MjM2MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDExIEBACisyMDEwLTExLTE4ICBWYW5nZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlz
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tZ3B1L3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwog
MjAxMC0xMS0xOCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBNaXNjIHRlc3QgdXBkYXRlcyAobW9zdCBSdWJ5KS4K
</data>
<flag name="review"
          id="65037"
          type_id="1"
          status="-"
          setter="kbr"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74609</attachid>
            <date>2010-11-22 16:02:34 -0800</date>
            <delta_ts>2011-01-21 16:28:29 -0800</delta_ts>
            <desc>Proposed patch - Removed unecessary changelog and ASSERT</desc>
            <filename>masking_49780_4.txt</filename>
            <type>text/plain</type>
            <size>18012</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjQ0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMTEtMTkgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtjaHJvbWl1bV0gQWRkIHN1cHBvcnQgZm9yIC13ZWJraXQtbWFzayBwcm9wZXJ0aWVz
IHRvIHRoZQorICAgICAgICBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBwYXRoLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk3ODAKKyAgICAgICAgCisg
ICAgICAgIFRlc3RzOiBleGlzdGluZyB0ZXN0cyBpbiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9t
YXNrcworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpi
aW5kQ29udGVudHNUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckNocm9taXVtOjpiaW5kQ29udGVudHNUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6bWFza0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpwcmVwYXJlVG9EcmF3TGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzUmVjdXJzaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVk
T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVu
ZGVyU3VyZmFjZUNocm9taXVtLmg6CisKIDIwMTAtMTEtMTkgIE1pY2hhZWwgU2Fib2ZmICA8bXNh
Ym9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzAsOCArMjMwLDEwIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0
ZUNvbnRlbnQKICAgICAgICAgdXBkYXRlUmVjdCA9IGRpcnR5UmVjdDsKICAgICB9CiAKLSAgICBp
ZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkgewor
ICAgICAgICBtX2NvbnRlbnRzRGlydHkgPSByZXF1aXJlc0NsaXBwZWRVcGRhdGVSZWN0KCk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICNpZiBQTEFURk9STShTS0lBKQogICAgIGNvbnN0IFNr
Qml0bWFwKiBza2lhQml0bWFwID0gMDsKQEAgLTM1NCw1ICszNTYsMTIgQEAgdm9pZCBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgfQogfQogCit2b2lkIENvbnRlbnRMYXllckNocm9t
aXVtOjpiaW5kQ29udGVudHNUZXh0dXJlKCkKK3sKKyAgICBBU1NFUlQobGF5ZXJSZW5kZXJlcigp
ICYmIGxheWVyUmVuZGVyZXJDb250ZXh0KCkpOworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29udGVudHNUZXh0
dXJlKSk7Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRl
bnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3ND
b250ZW50KCkgeyByZXR1cm4gbV9vd25lciAmJiBtX293bmVyLT5kcmF3c0NvbnRlbnQoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKCk7CiAKICAgICAvLyBTdG9yZXMg
dmFsdWVzIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHRo
YXQgYXJlCiAgICAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIExheWVyUmVuZGVyZXJDaHJv
bWl1bSAoYW5kIGhlbmNlIHRoZSBzYW1lIEdMCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3Bw
CShyZXZpc2lvbiA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R3JhcGhpY3NMYXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDYgKzI2OCwx
NyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNPCiAgICAgdXBkYXRl
Q29udGVudHNPcGFxdWUoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE1h
c2tMYXllcihHcmFwaGljc0xheWVyKiBtYXNrTGF5ZXIpCit7CisgICAgaWYgKG1hc2tMYXllciA9
PSBtX21hc2tMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0
TWFza0xheWVyKG1hc2tMYXllcik7CisKKyAgICBMYXllckNocm9taXVtKiBtYXNrTGF5ZXJDaHJv
bWl1bSA9IG1fbWFza0xheWVyID8gbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDA7Cisg
ICAgbV9sYXllci0+c2V0TWFza0xheWVyKG1hc2tMYXllckNocm9taXVtKTsKK30KKwogdm9pZCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2libGUp
CiB7CiAgICAgaWYgKG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IHZpc2libGUpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmgJKHJldmlzaW9uIDcyMzYwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tM
YXllcihHcmFwaGljc0xheWVyKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENv
bG9yKGNvbnN0IENvbG9yJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2dyb3VuZENvbG9y
KCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDcyMzYwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE1
LDUgKzUxNSwxMyBAQCB2b2lkIExheWVyQ2hyb21pdW06OnByZXBhcmVGb3JEcmF3KGNvbnN0CiAg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNfdGV4Q29v
cmRBdHRyaWJMb2NhdGlvbikpOwogfQogCisvLyBUaGlzIG1ldGhvZCB3aWxsIHR5cGljYWxseSBi
ZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuIExheWVyIHR5cGVzIHRoYXQKKy8vIGRv
bid0IGltcGxlbWVudCBpdCB3aWxsIGJpbmQgdGV4dHVyZSAwLgordm9pZCBMYXllckNocm9taXVt
OjpiaW5kQ29udGVudHNUZXh0dXJlKCkKK3sKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKSk7Cit9CisKIH0KICNl
bmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAkocmV2aXNpb24g
NzIzNjApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0KICAgICBTdHJp
bmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCisgICAgdm9pZCBzZXRNYXNrTGF5
ZXIoTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyKSB7IG1fbWFza0xheWVyID0gbWFza0xheWVyOyB9
CisgICAgTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyKCkgeyByZXR1cm4gbV9tYXNrTGF5ZXIuZ2V0
KCk7IH0KKwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IEZsb2F0UmVjdCYgZGlydHlS
ZWN0KTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogICAgIGNvbnN0IEZsb2F0UmVjdCYg
ZGlydHlSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kaXJ0eVJlY3Q7IH0KQEAgLTE2MCw2ICsxNjMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKCkgeyB9OwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3KCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJl
KCk7CiAKICAgICB2b2lkIGRyYXdEZWJ1Z0JvcmRlcigpOwogCkBAIC0yMjMsNiArMjI3LDggQEAg
cHJvdGVjdGVkOgogICAgIEZsb2F0UmVjdCBtX2RpcnR5UmVjdDsKICAgICBib29sIG1fY29udGVu
dHNEaXJ0eTsKIAorICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX21hc2tMYXllcjsKKwogICAg
IC8vIFJlbmRlciBzdXJmYWNlIHRoaXMgbGF5ZXIgZHJhd3MgaW50by4gVGhpcyBpcyBhIHN1cmZh
Y2UgdGhhdCBjYW4gYmVsb25nCiAgICAgLy8gZWl0aGVyIHRvIHRoaXMgbGF5ZXIgKGlmIG1fdGFy
Z2V0UmVuZGVyU3VyZmFjZSA9PSBtX3JlbmRlclN1cmZhY2UpIG9yCiAgICAgLy8gdG8gYW4gYW5j
ZXN0b3Igb2YgdGhpcyBsYXllci4gVGhlIHRhcmdldCByZW5kZXIgc3VyZmFjZSBkZXRlcm1pbmVz
IHRoZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAkocmV2aXNpb24gNzIzNjApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpMYXllclJlbmRlcmVyQ2hybwogICAgICwgbV9yb290TGF5ZXJUZXh0dXJlV2lkdGgoMCkKICAg
ICAsIG1fcm9vdExheWVyVGV4dHVyZUhlaWdodCgwKQogICAgICwgbV90ZXh0dXJlTGF5ZXJTaGFk
ZXJQcm9ncmFtKDApCisgICAgLCBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyUHJvZ3JhbSgw
KQogICAgICwgbV9yb290TGF5ZXIoMCkKICAgICAsIG1fc2Nyb2xsUG9zaXRpb24oSW50UG9pbnQo
LTEsIC0xKSkKICAgICAsIG1fY3VycmVudFNoYWRlcigwKQpAQCAtMjQ1LDcgKzI0Niw3IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwcmVwYXJlVG9EcmEKICAgICAgICAgc2Nyb2xsZWRM
YXllck1hdHJpeC5zY2FsZTNkKDEsIC0xLCAxKTsKIAogICAgICAgICB1c2VTaGFkZXIobV90ZXh0
dXJlTGF5ZXJTaGFkZXJQcm9ncmFtKTsKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT51bmlmb3JtMWkobV90ZXh0dXJlTGF5ZXJTaGFkZXJTYW1wbGVyTG9jYXRpb24sIDApKTsKKwog
ICAgICAgICBMYXllckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKG1fY29udGV4dC5nZXQoKSwg
bV9wcm9qZWN0aW9uTWF0cml4LCBzY3JvbGxlZExheWVyTWF0cml4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVSZWN0LndpZHRoKCksIHZpc2libGVSZWN0
LmhlaWdodCgpLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
dGV4dHVyZUxheWVyU2hhZGVyTWF0cml4TG9jYXRpb24sIG1fdGV4dHVyZUxheWVyU2hhZGVyQWxw
aGFMb2NhdGlvbik7CkBAIC00OTMsNyArNDk0LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVwZGF0ZUxheWVycwogICAgIC8vIG9mIHRoZWlyIHBhcmVudC4KICAgICBib29sIHVzZVN1
cmZhY2VGb3JDbGlwcGluZyA9IGxheWVyLT5tYXNrc1RvQm91bmRzKCkgJiYgIWlzU2NhbGVPclRy
YW5zbGF0aW9uKGNvbWJpbmVkVHJhbnNmb3JtKTsKICAgICBib29sIHVzZVN1cmZhY2VGb3JPcGFj
aXR5ID0gbGF5ZXItPm9wYWNpdHkoKSAhPSAxICYmICFsYXllci0+cHJlc2VydmVzM0QoKTsKLSAg
ICBpZiAoKHVzZVN1cmZhY2VGb3JDbGlwcGluZyB8fCB1c2VTdXJmYWNlRm9yT3BhY2l0eSkgJiYg
bGF5ZXItPmRlc2NlbmRhbnRzRHJhd0NvbnRlbnQoKSkgeworICAgIGJvb2wgdXNlU3VyZmFjZUZv
ck1hc2tpbmcgPSBsYXllci0+bWFza0xheWVyKCk7CisgICAgaWYgKCgodXNlU3VyZmFjZUZvckNs
aXBwaW5nIHx8IHVzZVN1cmZhY2VGb3JPcGFjaXR5KSAmJiBsYXllci0+ZGVzY2VuZGFudHNEcmF3
Q29udGVudCgpKQorICAgICAgICB8fCB1c2VTdXJmYWNlRm9yTWFza2luZykgewogICAgICAgICBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSBsYXllci0+bV9yZW5kZXJTdXJm
YWNlLmdldCgpOwogICAgICAgICBpZiAoIXJlbmRlclN1cmZhY2UpCiAgICAgICAgICAgICByZW5k
ZXJTdXJmYWNlID0gbGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTUyNyw2ICs1MzAs
MTMgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVycwogCiAgICAgICAg
IHJlbmRlclN1cmZhY2UtPm1fbGF5ZXJMaXN0LmNsZWFyKCk7CiAKKyAgICAgICAgaWYgKGxheWVy
LT5tYXNrTGF5ZXIoKSkgeworICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+bV9tYXNrTGF5ZXIg
PSBsYXllci0+bWFza0xheWVyKCk7CisgICAgICAgICAgICBsYXllci0+bWFza0xheWVyKCktPnNl
dExheWVyUmVuZGVyZXIodGhpcyk7CisgICAgICAgICAgICBsYXllci0+bWFza0xheWVyKCktPm1f
dGFyZ2V0UmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2U7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgcmVuZGVyU3VyZmFjZS0+bV9tYXNrTGF5ZXIgPSAwOworCiAgICAgICAgIHJlbmRl
clN1cmZhY2VMYXllckxpc3QuYXBwZW5kKGxheWVyKTsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBEVCA9IE1bcF0gKiBMVApAQCAtNjA3LDcgKzYxNyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjp1cGRhdGVMYXllcnMKICAgICAgICAgICAgIGxheWVyLT5tX2RyYXdhYmxlQ29udGVu
dFJlY3QudW5pdGUoc3VibGF5ZXItPm1fZHJhd2FibGVDb250ZW50UmVjdCk7CiAgICAgfQogCi0g
ICAgaWYgKGxheWVyLT5tYXNrc1RvQm91bmRzKCkpCisgICAgaWYgKGxheWVyLT5tYXNrc1RvQm91
bmRzKCkgfHwgdXNlU3VyZmFjZUZvck1hc2tpbmcpCiAgICAgICAgIGxheWVyLT5tX2RyYXdhYmxl
Q29udGVudFJlY3QuaW50ZXJzZWN0KHRyYW5zZm9ybWVkTGF5ZXJSZWN0KTsKIAogICAgIGlmIChs
YXllci0+bV9yZW5kZXJTdXJmYWNlICYmIGxheWVyICE9IG1fcm9vdExheWVyKSB7CkBAIC02OTAs
MTUgKzcwMCw0MyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyCiB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyKExheWVyQ2hyb21pdW0qIGxheWVy
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHRhcmdldFN1cmZhY2UpCiB7CiAgICAgaWYgKGxheWVy
LT5tX3JlbmRlclN1cmZhY2UgJiYgbGF5ZXItPm1fcmVuZGVyU3VyZmFjZSAhPSB0YXJnZXRTdXJm
YWNlKSB7Ci0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxheWVyLT5tX3JlbmRlclN1cmZhY2UtPm1fY29u
dGVudHNUZXh0dXJlSWQpKTsKLSAgICAgICAgdXNlU2hhZGVyKG1fdGV4dHVyZUxheWVyU2hhZGVy
UHJvZ3JhbSk7CisgICAgICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVuZGVyU3VyZmFjZSA9
IGxheWVyLT5tX3JlbmRlclN1cmZhY2UuZ2V0KCk7CisKKyAgICAgICAgYm9vbCBoYXNNYXNrVGV4
dHVyZSA9IGZhbHNlOworICAgICAgICBpZiAocmVuZGVyU3VyZmFjZS0+bV9tYXNrTGF5ZXIpIHsK
KyAgICAgICAgICAgIExheWVyQ2hyb21pdW0qIG1hc2tMYXllciA9IHJlbmRlclN1cmZhY2UtPm1f
bWFza0xheWVyOworICAgICAgICAgICAgaWYgKG1hc2tMYXllci0+ZHJhd3NDb250ZW50KCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAobWFza0xheWVyLT5jb250ZW50c0RpcnR5KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbWFza0xheWVyLT51cGRhdGVDb250ZW50cygpOworICAgICAgICAgICAg
ICAgICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBoYXNNYXNrVGV4dHVyZSA9IHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KIAotICAgICAgICBzZXRTY2lzc29yVG9SZWN0KGxheWVyLT5tX3JlbmRlclN1
cmZhY2UtPm1fc2Npc3NvclJlY3QpOworICAgICAgICB1bnNpZ25lZCBzaGFkZXJNYXRyaXhMb2Nh
dGlvbjsKKyAgICAgICAgdW5zaWduZWQgc2hhZGVyQWxwaGFMb2NhdGlvbjsKKyAgICAgICAgaWYg
KGhhc01hc2tUZXh0dXJlKSB7CisgICAgICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7CisgICAgICAgICAg
ICByZW5kZXJTdXJmYWNlLT5tX21hc2tMYXllci0+YmluZENvbnRlbnRzVGV4dHVyZSgpOworICAg
ICAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFMCkpOyAgICAgICAgICAgIAorICAgICAgICAgICAgdXNlU2hhZGVy
KG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJQcm9ncmFtKTsKKyAgICAgICAgICAgIHNoYWRl
ck1hdHJpeExvY2F0aW9uID0gbV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlck1hdHJpeExvY2F0
aW9uOworICAgICAgICAgICAgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IG1fdGV4dHVyZUxheWVyV2l0
aE1hc2tTaGFkZXJBbHBoYUxvY2F0aW9uOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dXNlU2hhZGVyKG1fdGV4dHVyZUxheWVyU2hhZGVyUHJvZ3JhbSk7CisgICAgICAgICAgICBzaGFk
ZXJNYXRyaXhMb2NhdGlvbiA9IG1fdGV4dHVyZUxheWVyU2hhZGVyTWF0cml4TG9jYXRpb247Cisg
ICAgICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9uID0gbV90ZXh0dXJlTGF5ZXJTaGFkZXJBbHBo
YUxvY2F0aW9uOworICAgICAgICB9CiAKLSAgICAgICAgSW50UmVjdCBjb250ZW50UmVjdCA9IGxh
eWVyLT5tX3JlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3Q7CisgICAgICAgIEdMQyhtX2NvbnRl
eHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHJlbmRlclN1cmZhY2UtPm1fY29udGVudHNUZXh0dXJlSWQpKTsKKworICAgICAgICBzZXRTY2lz
c29yVG9SZWN0KHJlbmRlclN1cmZhY2UtPm1fc2Npc3NvclJlY3QpOworCisgICAgICAgIEludFJl
Y3QgY29udGVudFJlY3QgPSByZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0OwogICAgICAgICBM
YXllckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKG1fY29udGV4dC5nZXQoKSwgbV9wcm9qZWN0
aW9uTWF0cml4LCBsYXllci0+bV9yZW5kZXJTdXJmYWNlLT5tX2RyYXdUcmFuc2Zvcm0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3Qud2lkdGgoKSwg
Y29udGVudFJlY3QuaGVpZ2h0KCksIGxheWVyLT5tX3JlbmRlclN1cmZhY2UtPm1fZHJhd09wYWNp
dHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV90ZXh0dXJlTGF5
ZXJTaGFkZXJNYXRyaXhMb2NhdGlvbiwgbV90ZXh0dXJlTGF5ZXJTaGFkZXJBbHBoYUxvY2F0aW9u
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UmVjdC53
aWR0aCgpLCBjb250ZW50UmVjdC5oZWlnaHQoKSwgcmVuZGVyU3VyZmFjZS0+bV9kcmF3T3BhY2l0
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJNYXRyaXhM
b2NhdGlvbiwgc2hhZGVyQWxwaGFMb2NhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTgxMiwxNCArODUwLDI1IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFs
aXplU2gKICAgICAgICAgIiAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHZf
dGV4Q29vcmQpOyBcbiIKICAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci54
LCB0ZXhDb2xvci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAqIGFscGhhOyBcbiIKICAgICAg
ICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
biI7CisgICAgY2hhciB0ZXh0dXJlTGF5ZXJXaXRoTWFza0ZyYWdtZW50U2hhZGVyU3RyaW5nW10g
PQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFxuIgorICAgICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJl
OyAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQg
c19tYXNrVGV4dHVyZTsgICAgICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAidW5pZm9ybSBm
bG9hdCBhbHBoYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAi
dm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgor
ICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFxuIgorICAgICAgICAiICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwg
dl90ZXhDb29yZCk7IFxuIgorICAgICAgICAiICB2ZWM0IG1hc2tDb2xvciA9IHRleHR1cmUyRChz
X21hc2tUZXh0dXJlLCB2X3RleENvb3JkKTsgXG4iCisgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9
IHZlYzQodGV4Q29sb3IueCwgdGV4Q29sb3IueSwgdGV4Q29sb3IueiwgdGV4Q29sb3IudykgKiBh
bHBoYSAqIG1hc2tDb2xvci53OyBcbiIKKyAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7CiAKICAgICBtX3RleHR1cmVMYXllclNo
YWRlclByb2dyYW0gPSBMYXllckNocm9taXVtOjpjcmVhdGVTaGFkZXJQcm9ncmFtKG1fY29udGV4
dC5nZXQoKSwgdGV4dHVyZUxheWVyVmVydGV4U2hhZGVyU3RyaW5nLCB0ZXh0dXJlTGF5ZXJGcmFn
bWVudFNoYWRlclN0cmluZyk7CiAgICAgaWYgKCFtX3RleHR1cmVMYXllclNoYWRlclByb2dyYW0p
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJMYXllclJlbmRlcmVyQ2hyb21pdW06IEZhaWxlZCB0byBj
cmVhdGUgc2Nyb2xsIHNoYWRlciBwcm9ncmFtIik7CisgICAgICAgIExPR19FUlJPUigiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOiBGYWlsZWQgdG8gY3JlYXRlIHRleHR1cmUgbGF5ZXIgc2hhZGVyIHBy
b2dyYW0iKTsKICAgICAgICAgY2xlYW51cFNoYXJlZE9iamVjdHMoKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KLQogICAgIEdMQyhtX2NvbnRleHQsIG1fdGV4dHVyZUxheWVyU2hhZGVy
U2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV90ZXh0dXJl
TGF5ZXJTaGFkZXJQcm9ncmFtLCAic190ZXh0dXJlIikpOwogICAgIEdMQyhtX2NvbnRleHQsIG1f
dGV4dHVyZUxheWVyU2hhZGVyTWF0cml4TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihtX3RleHR1cmVMYXllclNoYWRlclByb2dyYW0sICJtYXRyaXgiKSk7CiAgICAgR0xD
KG1fY29udGV4dCwgbV90ZXh0dXJlTGF5ZXJTaGFkZXJBbHBoYUxvY2F0aW9uID0gbV9jb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24obV90ZXh0dXJlTGF5ZXJTaGFkZXJQcm9ncmFtLCAiYWxwaGEi
KSk7CkBAIC04MjgsNiArODc3LDI5IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0
aWFsaXplU2gKICAgICAgICAgY2xlYW51cFNoYXJlZE9iamVjdHMoKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KKyAgICB1c2VTaGFkZXIobV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRl
clByb2dyYW0pOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fdGV4
dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb24sIDApKTsKKworICAgIG1fdGV4
dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJQcm9ncmFtID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlU2hh
ZGVyUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCksIHRleHR1cmVMYXllclZlcnRleFNoYWRlclN0cmlu
ZywgdGV4dHVyZUxheWVyV2l0aE1hc2tGcmFnbWVudFNoYWRlclN0cmluZyk7CisgICAgaWYgKCFt
X3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyUHJvZ3JhbSkgeworICAgICAgICBMT0dfRVJST1Io
IkxheWVyUmVuZGVyZXJDaHJvbWl1bTogRmFpbGVkIHRvIGNyZWF0ZSB0ZXh0dXJlIGxheWVyIHdp
dGggbWFzayBzaGFkZXIgcHJvZ3JhbSIpOworICAgICAgICBjbGVhbnVwU2hhcmVkT2JqZWN0cygp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgR0xDKG1fY29udGV4dCwgbV90
ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJQcm9ncmFtLCAic190
ZXh0dXJlIikpOworICAgIEdMQyhtX2NvbnRleHQsIG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFk
ZXJNYXNrU2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV90
ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlclByb2dyYW0sICJzX21hc2tUZXh0dXJlIikpOworICAg
IEdMQyhtX2NvbnRleHQsIG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJNYXRyaXhMb2NhdGlv
biA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fdGV4dHVyZUxheWVyV2l0aE1hc2tT
aGFkZXJQcm9ncmFtLCAibWF0cml4IikpOworICAgIEdMQyhtX2NvbnRleHQsIG1fdGV4dHVyZUxh
eWVyV2l0aE1hc2tTaGFkZXJBbHBoYUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24obV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlclByb2dyYW0sICJhbHBoYSIpKTsKKyAg
ICBpZiAobV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlclNhbXBsZXJMb2NhdGlvbiA9PSAtMSB8
fCBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiA9PSAtMQor
ICAgICAgICB8fCBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyTWF0cml4TG9jYXRpb24gPT0g
LTEgfHwgbV90ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlckFscGhhTG9jYXRpb24gPT0gLTEpIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0ZXh0dXJlIGxheWVyIHdp
dGggbWFzayBzaGFkZXIuIik7CisgICAgICAgIGNsZWFudXBTaGFyZWRPYmplY3RzKCk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgdXNlU2hhZGVyKG1fdGV4dHVyZUxheWVyV2l0
aE1hc2tTaGFkZXJQcm9ncmFtKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZv
cm0xaShtX3RleHR1cmVMYXllcldpdGhNYXNrU2hhZGVyU2FtcGxlckxvY2F0aW9uLCAwKSk7Cisg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkobV90ZXh0dXJlTGF5ZXJXaXRo
TWFza1NoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIDEpKTsKIAogICAgIC8vIENyZWF0ZSBhIHRl
eHR1cmUgb2JqZWN0IHRvIGhvbGQgdGhlIGNvbnRlbnRzIG9mIHRoZSByb290IGxheWVyLgogICAg
IG1fcm9vdExheWVyVGV4dHVyZUlkID0gY3JlYXRlTGF5ZXJUZXh0dXJlKCk7CkBAIC04NzgsNiAr
OTUwLDExIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmUKICAgICAg
ICAgbV90ZXh0dXJlTGF5ZXJTaGFkZXJQcm9ncmFtID0gMDsKICAgICB9CiAKKyAgICBpZiAobV90
ZXh0dXJlTGF5ZXJXaXRoTWFza1NoYWRlclByb2dyYW0pIHsKKyAgICAgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJQ
cm9ncmFtKSk7CisgICAgICAgIG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJQcm9ncmFtID0g
MDsKKyAgICB9CisKICAgICBpZiAobV9yb290TGF5ZXJUZXh0dXJlSWQpIHsKICAgICAgICAgZGVs
ZXRlTGF5ZXJUZXh0dXJlKG1fcm9vdExheWVyVGV4dHVyZUlkKTsKICAgICAgICAgbV9yb290TGF5
ZXJUZXh0dXJlSWQgPSAwOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA3MjM2
MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsMTIgQEAgcHJpdmF0ZToKICAg
ICBpbnQgbV90ZXh0dXJlTGF5ZXJTaGFkZXJNYXRyaXhMb2NhdGlvbjsKICAgICBpbnQgbV90ZXh0
dXJlTGF5ZXJTaGFkZXJBbHBoYUxvY2F0aW9uOwogCisgICAgdW5zaWduZWQgbV90ZXh0dXJlTGF5
ZXJXaXRoTWFza1NoYWRlclByb2dyYW07CisgICAgaW50IG1fdGV4dHVyZUxheWVyV2l0aE1hc2tT
aGFkZXJTYW1wbGVyTG9jYXRpb247CisgICAgaW50IG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFk
ZXJNYXNrU2FtcGxlckxvY2F0aW9uOworICAgIGludCBtX3RleHR1cmVMYXllcldpdGhNYXNrU2hh
ZGVyTWF0cml4TG9jYXRpb247CisgICAgaW50IG1fdGV4dHVyZUxheWVyV2l0aE1hc2tTaGFkZXJB
bHBoYUxvY2F0aW9uOworCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9wcm9qZWN0aW9uTWF0
cml4OwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1
cmZhY2VDaHJvbWl1bS5oCShyZXZpc2lvbiA3MjM2MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDYgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVy
UmVuZGVyZXIoKTsKIAogICAgIExheWVyQ2hyb21pdW0qIG1fb3duaW5nTGF5ZXI7CisgICAgTGF5
ZXJDaHJvbWl1bSogbV9tYXNrTGF5ZXI7CiAgICAgSW50UmVjdCBtX2NvbnRlbnRSZWN0OwogICAg
IHVuc2lnbmVkIG1fY29udGVudHNUZXh0dXJlSWQ7CiAgICAgZmxvYXQgbV9kcmF3T3BhY2l0eTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79808</attachid>
            <date>2011-01-21 16:28:32 -0800</date>
            <delta_ts>2011-01-21 17:54:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49780-20110121162831.patch</filename>
            <type>text/plain</type>
            <size>19887</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NDA4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDEtMjEgIFZhbmdlbGlz
IEtva2tldmlzICA8dmFuZ2VsaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIHN1cHBvcnQgZm9yIC13
ZWJraXQtbWFzayBwcm9wZXJ0aWVzIHRvIHRoZQorICAgICAgICBhY2NlbGVyYXRlZCBjb21wb3Np
dGluZyBwYXRoLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDk3ODAKKyAgICAgICAgIAorICAgICAgICBUZXN0czogRXhpc3RpbmcgdGVzdHMgaW4gTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvbWFza3MKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRMYXllckNocm9taXVtOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXll
ckNocm9taXVtOjp1bnJlc2VydmVDb250ZW50c1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudExheWVyQ2hyb21pdW06OmJpbmRDb250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TWFza0xheWVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllckNocm9taXVtOjptYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6dW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OmJpbmRDb250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVyc1JlY3Vyc2l2ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6YmluZFRleHR1cmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6U2hhcmVk
VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6U2hhcmVk
VmFsdWVzOjp+U2hhcmVkVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VD
aHJvbWl1bTo6UmVuZGVyU3VyZmFjZUNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN1cmZhY2VDaHJvbWl1bTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dXJmYWNlQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6bWFza1NoYWRlclByb2dyYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpTaGFyZWRWYWx1ZXM6Om1hc2tTaGFk
ZXJTYW1wbGVyTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9t
aXVtOjpTaGFyZWRWYWx1ZXM6Om1hc2tTaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjptYXNrU2hh
ZGVyTWF0cml4TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9t
aXVtOjpTaGFyZWRWYWx1ZXM6Om1hc2tTaGFkZXJBbHBoYUxvY2F0aW9uKToKKwogMjAxMS0wMS0y
MSAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5j
cHAJKHJldmlzaW9uIDc2Mzg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMs
NyArMzQzLDcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgQVNTRVJU
KHN2ICYmIHN2LT5pbml0aWFsaXplZCgpKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFj
dGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgbV9jb250ZW50
c1RleHR1cmUtPmJpbmRUZXh0dXJlKCk7CisgICAgYmluZENvbnRlbnRzVGV4dHVyZSgpOwogICAg
IGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT5jb250ZW50U2hhZGVyUHJvZ3JhbSgpKTsK
ICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHN2LT5zaGFkZXJTYW1wbGVyTG9j
YXRpb24oKSwgMCkpOwogCkBAIC0zNjEsOCArMzYxLDIxIEBAIHZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OmRyYXcoKQogICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdPcGFjaXR5KCksIHN2
LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN2LT5z
aGFkZXJBbHBoYUxvY2F0aW9uKCkpOwogICAgIH0KLSAgICBtX2NvbnRlbnRzVGV4dHVyZS0+dW5y
ZXNlcnZlKCk7CisgICAgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCk7CiB9CiAKK3ZvaWQgQ29u
dGVudExheWVyQ2hyb21pdW06OnVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpCit7CisgICAgaWYg
KG1fY29udGVudHNUZXh0dXJlKQorICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+dW5yZXNlcnZl
KCk7Cit9CisKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmJpbmRDb250ZW50c1RleHR1cmUo
KQoreworICAgIGlmIChtX2NvbnRlbnRzVGV4dHVyZSkKKyAgICAgICAgbV9jb250ZW50c1RleHR1
cmUtPmJpbmRUZXh0dXJlKCk7Cit9CisKKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAkocmV2aXNp
b24gNzYzODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5Db250ZW50TGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCB1bnJlc2Vy
dmVDb250ZW50c1RleHR1cmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVy
ZSgpOworCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3ND
b250ZW50KCkgeyByZXR1cm4gbV9vd25lciAmJiBtX293bmVyLT5kcmF3c0NvbnRlbnQoKTsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDc2
Mzg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhp
Y3NMYXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYzLDYgKzI2MywxNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNPCiAgICAgdXBkYXRlQ29udGVu
dHNPcGFxdWUoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tMYXll
cihHcmFwaGljc0xheWVyKiBtYXNrTGF5ZXIpCit7CisgICAgaWYgKG1hc2tMYXllciA9PSBtX21h
c2tMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xh
eWVyKG1hc2tMYXllcik7CisKKyAgICBMYXllckNocm9taXVtKiBtYXNrTGF5ZXJDaHJvbWl1bSA9
IG1fbWFza0xheWVyID8gbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDA7CisgICAgbV9s
YXllci0+c2V0TWFza0xheWVyKG1hc2tMYXllckNocm9taXVtKTsKK30KKwogdm9pZCBHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2libGUpCiB7CiAg
ICAgaWYgKG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IHZpc2libGUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uaAkocmV2aXNpb24gNzYzODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAkod29y
a2luZyBjb3B5KQpAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dFByZXNlcnZlczNEKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CisgICAgdmlydHVh
bCB2b2lkIHNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFy
QmFja2dyb3VuZENvbG9yKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAkocmV2aXNpb24g
NzYzODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0Myw3IEBAIFBhc3NSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gTGF5ZXJDaHJvbWl1bToKIExheWVyQ2hyb21pdW06OkxheWVyQ2hy
b21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKICAgICA6IG1fb3duZXIob3duZXIp
CiAgICAgLCBtX2NvbnRlbnRzRGlydHkoZmFsc2UpCisgICAgLCBtX21hc2tMYXllcigwKQogICAg
ICwgbV90YXJnZXRSZW5kZXJTdXJmYWNlKDApCiAgICAgLCBtX3N1cGVybGF5ZXIoMCkKICAgICAs
IG1fYW5jaG9yUG9pbnQoMC41LCAwLjUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCShyZXZpc2lv
biA3NjM4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0K
ICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCisgICAgdm9pZCBz
ZXRNYXNrTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyKSB7IG1fbWFza0xheWVyID0gbWFz
a0xheWVyOyB9CisgICAgTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9tYXNrTGF5ZXIuZ2V0KCk7IH0KKwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IEZs
b2F0UmVjdCYgZGlydHlSZWN0KTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogICAgIGNv
bnN0IEZsb2F0UmVjdCYgZGlydHlSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kaXJ0eVJlY3Q7IH0K
QEAgLTE1OCw2ICsxNjEsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2Fs
bHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVh
bCBib29sIGRyYXdzQ29udGVudCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNvbnRlbnRzSWZEaXJ0eSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVD
b250ZW50c1RleHR1cmUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVy
ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkcmF3KCkgeyB9CiAKICAgICB2b2lkIGRyYXdEZWJ1
Z0JvcmRlcigpOwpAQCAtMjIyLDYgKzIyNyw4IEBAIHByb3RlY3RlZDoKICAgICBGbG9hdFJlY3Qg
bV9kaXJ0eVJlY3Q7CiAgICAgYm9vbCBtX2NvbnRlbnRzRGlydHk7CiAKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gbV9tYXNrTGF5ZXI7CisKICAgICAvLyBSZW5kZXIgc3VyZmFjZSB0aGlzIGxh
eWVyIGRyYXdzIGludG8uIFRoaXMgaXMgYSBzdXJmYWNlIHRoYXQgY2FuIGJlbG9uZwogICAgIC8v
IGVpdGhlciB0byB0aGlzIGxheWVyIChpZiBtX3RhcmdldFJlbmRlclN1cmZhY2UgPT0gbV9yZW5k
ZXJTdXJmYWNlKSBvcgogICAgIC8vIHRvIGFuIGFuY2VzdG9yIG9mIHRoaXMgbGF5ZXIuIFRoZSB0
YXJnZXQgcmVuZGVyIHN1cmZhY2UgZGV0ZXJtaW5lcyB0aGUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcAkocmV2aXNpb24gNzYzODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NTMsNyArNDUzLDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVwZGF0ZUxheWVycwogICAgIC8vIG9mIHRoZWlyIHBhcmVudC4KICAgICBib29sIHVzZVN1
cmZhY2VGb3JDbGlwcGluZyA9IGxheWVyLT5tYXNrc1RvQm91bmRzKCkgJiYgIWlzU2NhbGVPclRy
YW5zbGF0aW9uKGNvbWJpbmVkVHJhbnNmb3JtKTsKICAgICBib29sIHVzZVN1cmZhY2VGb3JPcGFj
aXR5ID0gbGF5ZXItPm9wYWNpdHkoKSAhPSAxICYmICFsYXllci0+cHJlc2VydmVzM0QoKTsKLSAg
ICBpZiAoKHVzZVN1cmZhY2VGb3JDbGlwcGluZyB8fCB1c2VTdXJmYWNlRm9yT3BhY2l0eSkgJiYg
bGF5ZXItPmRlc2NlbmRhbnRzRHJhd0NvbnRlbnQoKSkgeworICAgIGJvb2wgdXNlU3VyZmFjZUZv
ck1hc2tpbmcgPSBsYXllci0+bWFza0xheWVyKCk7CisgICAgaWYgKCh1c2VTdXJmYWNlRm9yQ2xp
cHBpbmcgfHwgdXNlU3VyZmFjZUZvck9wYWNpdHkpICYmIGxheWVyLT5kZXNjZW5kYW50c0RyYXdD
b250ZW50KCkKKyAgICAgICAgfHwgdXNlU3VyZmFjZUZvck1hc2tpbmcpIHsKICAgICAgICAgUmVu
ZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gbGF5ZXItPm1fcmVuZGVyU3VyZmFj
ZS5nZXQoKTsKICAgICAgICAgaWYgKCFyZW5kZXJTdXJmYWNlKQogICAgICAgICAgICAgcmVuZGVy
U3VyZmFjZSA9IGxheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CkBAIC00ODcsNiArNDg5LDEz
IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnMKIAogICAgICAgICBy
ZW5kZXJTdXJmYWNlLT5tX2xheWVyTGlzdC5jbGVhcigpOwogCisgICAgICAgIGlmIChsYXllci0+
bWFza0xheWVyKCkpIHsKKyAgICAgICAgICAgIHJlbmRlclN1cmZhY2UtPm1fbWFza0xheWVyID0g
bGF5ZXItPm1hc2tMYXllcigpOworICAgICAgICAgICAgbGF5ZXItPm1hc2tMYXllcigpLT5zZXRM
YXllclJlbmRlcmVyKHRoaXMpOworICAgICAgICAgICAgbGF5ZXItPm1hc2tMYXllcigpLT5tX3Rh
cmdldFJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHJlbmRlclN1cmZhY2UtPm1fbWFza0xheWVyID0gMDsKKwogICAgICAgICByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChsYXllcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8g
RFQgPSBNW3BdICogTFQKQEAgLTU2Nyw3ICs1NzYsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6dXBkYXRlTGF5ZXJzCiAgICAgICAgICAgICBsYXllci0+bV9kcmF3YWJsZUNvbnRlbnRS
ZWN0LnVuaXRlKHN1YmxheWVyLT5tX2RyYXdhYmxlQ29udGVudFJlY3QpOwogICAgIH0KIAotICAg
IGlmIChsYXllci0+bWFza3NUb0JvdW5kcygpKQorICAgIGlmIChsYXllci0+bWFza3NUb0JvdW5k
cygpIHx8IHVzZVN1cmZhY2VGb3JNYXNraW5nKQogICAgICAgICBsYXllci0+bV9kcmF3YWJsZUNv
bnRlbnRSZWN0LmludGVyc2VjdCh0cmFuc2Zvcm1lZExheWVyUmVjdCk7CiAKICAgICBpZiAobGF5
ZXItPm1fcmVuZGVyU3VyZmFjZSAmJiBsYXllciAhPSBtX3Jvb3RMYXllcikgewpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRleHR1cmUuY3BwCShyZXZpc2lvbiA3NjM4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDYgKzc5LDcgQEAgdm9pZCBMYXllclRleHR1cmU6OnVucmVzZXJ2ZSgpCiAKIHZvaWQgTGF5
ZXJUZXh0dXJlOjpiaW5kVGV4dHVyZSgpCiB7CisgICAgQVNTRVJUKG1fdGV4dHVyZU1hbmFnZXIt
Pmhhc1RleHR1cmUobV90b2tlbikpOwogICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA3NjM4OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE1ICszOCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBSZW5kZXJTdXJmYWNlQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6U2hhcmVkVmFsdWVzKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAg
LCBtX3NoYWRlclByb2dyYW0oMCkKKyAgICAsIG1fbWFza1NoYWRlclByb2dyYW0oMCkKICAgICAs
IG1fc2hhZGVyU2FtcGxlckxvY2F0aW9uKC0xKQogICAgICwgbV9zaGFkZXJNYXRyaXhMb2NhdGlv
bigtMSkKICAgICAsIG1fc2hhZGVyQWxwaGFMb2NhdGlvbigtMSkKKyAgICAsIG1fbWFza1NoYWRl
clNhbXBsZXJMb2NhdGlvbigtMSkKKyAgICAsIG1fbWFza1NoYWRlck1hc2tTYW1wbGVyTG9jYXRp
b24oLTEpCisgICAgLCBtX21hc2tTaGFkZXJNYXRyaXhMb2NhdGlvbigtMSkKKyAgICAsIG1fbWFz
a1NoYWRlckFscGhhTG9jYXRpb24oLTEpCiAgICAgLCBtX2luaXRpYWxpemVkKGZhbHNlKQogewot
ICAgIC8vIFRoZSBmb2xsb3dpbmcgcHJvZ3JhbSBjb21wb3NpdGVzIGxheWVycyB3aG9zZSBjb250
ZW50cyBhcmUgdGhlIHJlc3VsdHMgb2YgYSBwcmV2aW91cwotICAgIC8vIHJlbmRlciBvcGVyYXRp
b24gYW5kIHRoZXJlZm9yZSBkb2Vzbid0IHBlcmZvcm0gYW55IGNvbG9yIHN3aXp6bGluZy4gSXQg
aXMgdXNlZAotICAgIC8vIGluIHNjcm9sbGluZyBhbmQgZm9yIGNvbXBvc2l0aW5nIG9mZnNjcmVl
biB0ZXh0dXJlcy4KLSAgICBjaGFyIHJlbmRlclN1cmZhY2VWZXJ0ZXhTaGFkZXJTdHJpbmdbXSA9
CisgICAgY2hhciB2ZXJ0ZXhTaGFkZXJTdHJpbmdbXSA9CiAgICAgICAgICJhdHRyaWJ1dGUgdmVj
NCBhX3Bvc2l0aW9uOyAgIFxuIgogICAgICAgICAiYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsg
ICBcbiIKICAgICAgICAgInVuaWZvcm0gbWF0NCBtYXRyaXg7ICAgICAgICAgXG4iCkBAIC01Niw3
ICs1OCw3IEBAIFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjpTaGEKICAgICAg
ICAgIiAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOyBcbiIKICAgICAgICAgIiAg
dl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7ICAgXG4iCiAgICAgICAgICJ9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFxuIjsKLSAgICBjaGFyIHJlbmRlclN1cmZhY2VGcmFnbWVudFNoYWRlclN0
cmluZ1tdID0KKyAgICBjaGFyIGZyYWdtZW50U2hhZGVyU3RyaW5nW10gPQogICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgogICAg
ICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIgogICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAg
ICAgICAgICAgIFxuIgpAQCAtNjYsOSArNjgsMjIgQEAgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpT
aGFyZWRWYWx1ZXM6OlNoYQogICAgICAgICAiICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNf
dGV4dHVyZSwgdl90ZXhDb29yZCk7IFxuIgogICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KHRleENvbG9yLngsIHRleENvbG9yLnksIHRleENvbG9yLnosIHRleENvbG9yLncpICogYWxwaGE7
IFxuIgogICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFxuIjsKKyAgICBjaGFyIGZyYWdtZW50U2hhZGVyV2l0aE1hc2tTdHJpbmdbXSA9
CisgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXG4iCisgICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXG4iCisgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7
ICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBz
X21hc2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisgICAgICAgICJ1bmlmb3JtIGZs
b2F0IGFscGhhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisgICAgICAgICJ2
b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisg
ICAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXG4iCisgICAgICAgICIgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2
X3RleENvb3JkKTsgXG4iCisgICAgICAgICIgIHZlYzQgbWFza0NvbG9yID0gdGV4dHVyZTJEKHNf
bWFzaywgdl90ZXhDb29yZCk7ICAgXG4iCisgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
dGV4Q29sb3IueCwgdGV4Q29sb3IueSwgdGV4Q29sb3IueiwgdGV4Q29sb3IudykgKiBhbHBoYSAq
IG1hc2tDb2xvci53OyBcbiIKKyAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcbiI7CiAKLSAgICBtX3NoYWRlclByb2dyYW0gPSBMYXll
ckNocm9taXVtOjpjcmVhdGVTaGFkZXJQcm9ncmFtKG1fY29udGV4dCwgcmVuZGVyU3VyZmFjZVZl
cnRleFNoYWRlclN0cmluZywgcmVuZGVyU3VyZmFjZUZyYWdtZW50U2hhZGVyU3RyaW5nKTsKLSAg
ICBpZiAoIW1fc2hhZGVyUHJvZ3JhbSkgeworICAgIG1fc2hhZGVyUHJvZ3JhbSA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZVNoYWRlclByb2dyYW0obV9jb250ZXh0LCB2ZXJ0ZXhTaGFkZXJTdHJpbmcs
IGZyYWdtZW50U2hhZGVyU3RyaW5nKTsKKyAgICBtX21hc2tTaGFkZXJQcm9ncmFtID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShtX2NvbnRleHQsIHZlcnRleFNoYWRlclN0cmlu
ZywgZnJhZ21lbnRTaGFkZXJXaXRoTWFza1N0cmluZyk7CisgICAgaWYgKCFtX3NoYWRlclByb2dy
YW0gfHwgIW1fbWFza1NoYWRlclByb2dyYW0pIHsKICAgICAgICAgTE9HX0VSUk9SKCJSZW5kZXJT
dXJmYWNlQ2hyb21pdW06IEZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIHByb2dyYW0iKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTc2LDEwICs5MSwyNCBAQCBSZW5kZXJTdXJmYWNlQ2hyb21p
dW06OlNoYXJlZFZhbHVlczo6U2hhCiAgICAgR0xDKG1fY29udGV4dCwgbV9zaGFkZXJTYW1wbGVy
TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3NoYWRlclByb2dyYW0s
ICJzX3RleHR1cmUiKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9zaGFkZXJNYXRyaXhMb2NhdGlv
biA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fc2hhZGVyUHJvZ3JhbSwgIm1hdHJp
eCIpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX3NoYWRlckFscGhhTG9jYXRpb24gPSBtX2NvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJhbHBoYSIpKTsKLSAgICBp
ZiAobV9zaGFkZXJTYW1wbGVyTG9jYXRpb24gPT0gLTEgfHwgbV9zaGFkZXJNYXRyaXhMb2NhdGlv
biA9PSAtMSB8fCBtX3NoYWRlckFscGhhTG9jYXRpb24gPT0gLTEpIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0ZXh0dXJlIGxheWVyIHNoYWRlci4iKTsKKworICAg
IEdMQyhtX2NvbnRleHQsIG1fbWFza1NoYWRlclNhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKG1fbWFza1NoYWRlclByb2dyYW0sICJzX3RleHR1cmUiKSk7Cisg
ICAgR0xDKG1fY29udGV4dCwgbV9tYXNrU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiA9IG1fY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fbWFza1NoYWRlclByb2dyYW0sICJzX21hc2siKSk7
CisgICAgR0xDKG1fY29udGV4dCwgbV9tYXNrU2hhZGVyTWF0cml4TG9jYXRpb24gPSBtX2NvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX21hc2tTaGFkZXJQcm9ncmFtLCAibWF0cml4IikpOwor
ICAgIEdMQyhtX2NvbnRleHQsIG1fbWFza1NoYWRlckFscGhhTG9jYXRpb24gPSBtX2NvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihtX21hc2tTaGFkZXJQcm9ncmFtLCAiYWxwaGEiKSk7CisKKyAg
ICBpZiAobV9zaGFkZXJTYW1wbGVyTG9jYXRpb24gPT0gLTEgfHwgbV9zaGFkZXJNYXRyaXhMb2Nh
dGlvbiA9PSAtMSB8fCBtX3NoYWRlckFscGhhTG9jYXRpb24gPT0gLTEKKyAgICAgICAgfHwgbV9t
YXNrU2hhZGVyU2FtcGxlckxvY2F0aW9uID09IC0xIHx8IG1fbWFza1NoYWRlck1hc2tTYW1wbGVy
TG9jYXRpb24gPT0gLTEgfHwgbV9tYXNrU2hhZGVyTWF0cml4TG9jYXRpb24gPT0gLTEgfHwgbV9t
YXNrU2hhZGVyQWxwaGFMb2NhdGlvbiA9PSAtMSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBpbml0aWFsaXplIHJlbmRlciBzdXJmYWNlIHNoYWRlcnMuIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVByb2dyYW0obV9z
aGFkZXJQcm9ncmFtKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWko
bV9zaGFkZXJTYW1wbGVyTG9jYXRpb24sIDApKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPnVzZVByb2dyYW0obV9tYXNrU2hhZGVyUHJvZ3JhbSkpOworICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+dW5pZm9ybTFpKG1fbWFza1NoYWRlclNhbXBsZXJMb2NhdGlvbiwgMCkpOwor
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fbWFza1NoYWRlck1hc2tT
YW1wbGVyTG9jYXRpb24sIDEpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVBy
b2dyYW0oMCkpOwogICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwogfQogCkBAIC04NywxMCArMTE2
LDEzIEBAIFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjp+U2gKIHsKICAgICBp
ZiAobV9zaGFkZXJQcm9ncmFtKQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRl
bGV0ZVByb2dyYW0obV9zaGFkZXJQcm9ncmFtKSk7CisgICAgaWYgKG1fbWFza1NoYWRlclByb2dy
YW0pCisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShtX21h
c2tTaGFkZXJQcm9ncmFtKSk7CiB9CiAKIFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6UmVuZGVyU3Vy
ZmFjZUNocm9taXVtKExheWVyQ2hyb21pdW0qIG93bmluZ0xheWVyKQogICAgIDogbV9vd25pbmdM
YXllcihvd25pbmdMYXllcikKKyAgICAsIG1fbWFza0xheWVyKDApCiAgICAgLCBtX3NraXBzRHJh
dyhmYWxzZSkKIHsKIH0KQEAgLTE0MSwxOSArMTczLDQ0IEBAIHZvaWQgUmVuZGVyU3VyZmFjZUNo
cm9taXVtOjpkcmF3KCkKICAgICBpZiAobV9za2lwc0RyYXcgfHwgIW1fY29udGVudHNUZXh0dXJl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRlbnRzVGV4dHVyZS0+YmluZFRleHR1cmUo
KTsKLQorICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QgPSBsYXllclJlbmRlcmVyKCkt
PmNvbnRleHQoKTsKKyAgICBpbnQgc2hhZGVyTWF0cml4TG9jYXRpb24gPSAtMTsKKyAgICBpbnQg
c2hhZGVyQWxwaGFMb2NhdGlvbiA9IC0xOwogICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1
bTo6U2hhcmVkVmFsdWVzKiBzdiA9IGxheWVyUmVuZGVyZXIoKS0+cmVuZGVyU3VyZmFjZVNoYXJl
ZFZhbHVlcygpOwogICAgIEFTU0VSVChzdiAmJiBzdi0+aW5pdGlhbGl6ZWQoKSk7CisgICAgYm9v
bCB1c2VNYXNrID0gZmFsc2U7CisgICAgaWYgKG1fbWFza0xheWVyICYmIG1fbWFza0xheWVyLT5k
cmF3c0NvbnRlbnQoKSkgeworICAgICAgICBtX21hc2tMYXllci0+dXBkYXRlQ29udGVudHNJZkRp
cnR5KCk7CisgICAgICAgIGlmICghbV9tYXNrTGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgY29udGV4dDNELT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAgICAgICAg
IGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT5tYXNrU2hhZGVyUHJvZ3JhbSgpKTsKKyAg
ICAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRTApKTsKKyAgICAgICAgICAgIG1fY29udGVudHNUZXh0dXJlLT5i
aW5kVGV4dHVyZSgpOworICAgICAgICAgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT5hY3Rp
dmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMSkpOworICAgICAgICAgICAgbV9t
YXNrTGF5ZXItPmJpbmRDb250ZW50c1RleHR1cmUoKTsKKyAgICAgICAgICAgIEdMQyhjb250ZXh0
M0QsIGNvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTAp
KTsKKyAgICAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9uID0gc3YtPm1hc2tTaGFkZXJNYXRy
aXhMb2NhdGlvbigpOworICAgICAgICAgICAgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IHN2LT5tYXNr
U2hhZGVyQWxwaGFMb2NhdGlvbigpOworICAgICAgICAgICAgdXNlTWFzayA9IHRydWU7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXVzZU1hc2spIHsKKyAgICAgICAgbGF5ZXJSZW5kZXJl
cigpLT51c2VTaGFkZXIoc3YtPnNoYWRlclByb2dyYW0oKSk7CisgICAgICAgIG1fY29udGVudHNU
ZXh0dXJlLT5iaW5kVGV4dHVyZSgpOworICAgICAgICBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IHN2
LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpOworICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9uID0g
c3YtPnNoYWRlckFscGhhTG9jYXRpb24oKTsKKyAgICB9CiAKLSAgICBsYXllclJlbmRlcmVyKCkt
PnVzZVNoYWRlcihzdi0+c2hhZGVyUHJvZ3JhbSgpKTsKICAgICBsYXllclJlbmRlcmVyKCktPnNl
dFNjaXNzb3JUb1JlY3QobV9zY2lzc29yUmVjdCk7CiAKICAgICBMYXllckNocm9taXVtOjpkcmF3
VGV4dHVyZWRRdWFkKGxheWVyUmVuZGVyZXIoKS0+Y29udGV4dCgpLCBsYXllclJlbmRlcmVyKCkt
PnByb2plY3Rpb25NYXRyaXgoKSwgbV9kcmF3VHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9jb250ZW50UmVjdC53aWR0aCgpLCBtX2NvbnRlbnRSZWN0Lmhl
aWdodCgpLCBtX2RyYXdPcGFjaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCksIHN2LT5zaGFkZXJBbHBoYUxvY2F0aW9uKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyTWF0cml4TG9jYXRp
b24sIHNoYWRlckFscGhhTG9jYXRpb24pOwogCiAgICAgbV9jb250ZW50c1RleHR1cmUtPnVucmVz
ZXJ2ZSgpOworICAgIGlmIChtX21hc2tMYXllcikKKyAgICAgICAgbV9tYXNrTGF5ZXItPnVucmVz
ZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJm
YWNlQ2hyb21pdW0uaAkocmV2aXNpb24gNzYzODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAkod29ya2luZyBjb3B5
KQpAQCAtNjQsMTggKzY0LDI4IEBAIHB1YmxpYzoKICAgICAgICAgflNoYXJlZFZhbHVlcygpOwog
CiAgICAgICAgIHVuc2lnbmVkIHNoYWRlclByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3NoYWRl
clByb2dyYW07IH0KKyAgICAgICAgdW5zaWduZWQgbWFza1NoYWRlclByb2dyYW0oKSBjb25zdCB7
IHJldHVybiBtX21hc2tTaGFkZXJQcm9ncmFtOyB9CiAgICAgICAgIGludCBzaGFkZXJTYW1wbGVy
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsgfQogICAg
ICAgICBpbnQgc2hhZGVyTWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NoYWRlck1h
dHJpeExvY2F0aW9uOyB9CiAgICAgICAgIGludCBzaGFkZXJBbHBoYUxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zaGFkZXJBbHBoYUxvY2F0aW9uOyB9CisgICAgICAgIGludCBtYXNrU2hhZGVy
U2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrU2hhZGVyU2FtcGxlckxvY2F0
aW9uOyB9CisgICAgICAgIGludCBtYXNrU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbWFza1NoYWRlck1hc2tTYW1wbGVyTG9jYXRpb247IH0KKyAgICAgICAgaW50
IG1hc2tTaGFkZXJNYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1NoYWRlck1h
dHJpeExvY2F0aW9uOyB9CisgICAgICAgIGludCBtYXNrU2hhZGVyQWxwaGFMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbWFza1NoYWRlckFscGhhTG9jYXRpb247IH0KICAgICAgICAgYm9vbCBp
bml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQ7IH0KIAogICAgIHByaXZh
dGU6CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAKICAgICAgICAgdW5z
aWduZWQgbV9zaGFkZXJQcm9ncmFtOworICAgICAgICB1bnNpZ25lZCBtX21hc2tTaGFkZXJQcm9n
cmFtOwogICAgICAgICBpbnQgbV9zaGFkZXJTYW1wbGVyTG9jYXRpb247CiAgICAgICAgIGludCBt
X3NoYWRlck1hdHJpeExvY2F0aW9uOwogICAgICAgICBpbnQgbV9zaGFkZXJBbHBoYUxvY2F0aW9u
OworICAgICAgICBpbnQgbV9tYXNrU2hhZGVyU2FtcGxlckxvY2F0aW9uOworICAgICAgICBpbnQg
bV9tYXNrU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbjsKKyAgICAgICAgaW50IG1fbWFza1NoYWRl
ck1hdHJpeExvY2F0aW9uOworICAgICAgICBpbnQgbV9tYXNrU2hhZGVyQWxwaGFMb2NhdGlvbjsK
ICAgICAgICAgYm9vbCBtX2luaXRpYWxpemVkOwogICAgIH07CiAKQEAgLTgzLDYgKzkzLDggQEAg
cHJpdmF0ZToKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIoKTsKIAog
ICAgIExheWVyQ2hyb21pdW0qIG1fb3duaW5nTGF5ZXI7CisgICAgTGF5ZXJDaHJvbWl1bSogbV9t
YXNrTGF5ZXI7CisKICAgICBJbnRSZWN0IG1fY29udGVudFJlY3Q7CiAgICAgYm9vbCBtX3NraXBz
RHJhdzsKICAgICBPd25QdHI8TGF5ZXJUZXh0dXJlPiBtX2NvbnRlbnRzVGV4dHVyZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79815</attachid>
            <date>2011-01-21 17:54:33 -0800</date>
            <delta_ts>2011-01-21 18:11:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49780-20110121175431.patch</filename>
            <type>text/plain</type>
            <size>19889</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NDA4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDEtMjEgIFZhbmdlbGlz
IEtva2tldmlzICA8dmFuZ2VsaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIHN1cHBvcnQgZm9yIC13
ZWJraXQtbWFzayBwcm9wZXJ0aWVzIHRvIHRoZQorICAgICAgICBhY2NlbGVyYXRlZCBjb21wb3Np
dGluZyBwYXRoLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDk3ODAKKyAgICAgICAgIAorICAgICAgICBUZXN0czogRXhpc3RpbmcgdGVzdHMgaW4gTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvbWFza3MKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRMYXllckNocm9taXVtOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXll
ckNocm9taXVtOjp1bnJlc2VydmVDb250ZW50c1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudExheWVyQ2hyb21pdW06OmJpbmRDb250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TWFza0xheWVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllckNocm9taXVtOjptYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6dW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OmJpbmRDb250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVyc1JlY3Vyc2l2ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6YmluZFRleHR1cmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6U2hhcmVk
VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6U2hhcmVk
VmFsdWVzOjp+U2hhcmVkVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VD
aHJvbWl1bTo6UmVuZGVyU3VyZmFjZUNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN1cmZhY2VDaHJvbWl1bTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dXJmYWNlQ2hyb21pdW06OlNoYXJlZFZhbHVlczo6bWFza1NoYWRlclByb2dyYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpTaGFyZWRWYWx1ZXM6Om1hc2tTaGFk
ZXJTYW1wbGVyTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9t
aXVtOjpTaGFyZWRWYWx1ZXM6Om1hc2tTaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjptYXNrU2hh
ZGVyTWF0cml4TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9t
aXVtOjpTaGFyZWRWYWx1ZXM6Om1hc2tTaGFkZXJBbHBoYUxvY2F0aW9uKToKKwogMjAxMS0wMS0y
MSAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5j
cHAJKHJldmlzaW9uIDc2Mzg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMs
NyArMzQzLDcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdygpCiAgICAgQVNTRVJU
KHN2ICYmIHN2LT5pbml0aWFsaXplZCgpKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFj
dGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgbV9jb250ZW50
c1RleHR1cmUtPmJpbmRUZXh0dXJlKCk7CisgICAgYmluZENvbnRlbnRzVGV4dHVyZSgpOwogICAg
IGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHN2LT5jb250ZW50U2hhZGVyUHJvZ3JhbSgpKTsK
ICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHN2LT5zaGFkZXJTYW1wbGVyTG9j
YXRpb24oKSwgMCkpOwogCkBAIC0zNjEsOCArMzYxLDIxIEBAIHZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OmRyYXcoKQogICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdPcGFjaXR5KCksIHN2
LT5zaGFkZXJNYXRyaXhMb2NhdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN2LT5z
aGFkZXJBbHBoYUxvY2F0aW9uKCkpOwogICAgIH0KLSAgICBtX2NvbnRlbnRzVGV4dHVyZS0+dW5y
ZXNlcnZlKCk7CisgICAgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCk7CiB9CiAKK3ZvaWQgQ29u
dGVudExheWVyQ2hyb21pdW06OnVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpCit7CisgICAgaWYg
KG1fY29udGVudHNUZXh0dXJlKQorICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+dW5yZXNlcnZl
KCk7Cit9CisKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmJpbmRDb250ZW50c1RleHR1cmUo
KQoreworICAgIGlmIChtX2NvbnRlbnRzVGV4dHVyZSkKKyAgICAgICAgbV9jb250ZW50c1RleHR1
cmUtPmJpbmRUZXh0dXJlKCk7Cit9CisKKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAkocmV2aXNp
b24gNzYzODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5Db250ZW50TGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCB1bnJlc2Vy
dmVDb250ZW50c1RleHR1cmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVy
ZSgpOworCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3ND
b250ZW50KCkgeyByZXR1cm4gbV9vd25lciAmJiBtX293bmVyLT5kcmF3c0NvbnRlbnQoKTsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDc2
Mzg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhp
Y3NMYXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYzLDYgKzI2MywxNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNPCiAgICAgdXBkYXRlQ29udGVu
dHNPcGFxdWUoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tMYXll
cihHcmFwaGljc0xheWVyKiBtYXNrTGF5ZXIpCit7CisgICAgaWYgKG1hc2tMYXllciA9PSBtX21h
c2tMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xh
eWVyKG1hc2tMYXllcik7CisKKyAgICBMYXllckNocm9taXVtKiBtYXNrTGF5ZXJDaHJvbWl1bSA9
IG1fbWFza0xheWVyID8gbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDA7CisgICAgbV9s
YXllci0+c2V0TWFza0xheWVyKG1hc2tMYXllckNocm9taXVtKTsKK30KKwogdm9pZCBHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2libGUpCiB7CiAg
ICAgaWYgKG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IHZpc2libGUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uaAkocmV2aXNpb24gNzYzODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAkod29y
a2luZyBjb3B5KQpAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dFByZXNlcnZlczNEKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CisgICAgdmlydHVh
bCB2b2lkIHNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFy
QmFja2dyb3VuZENvbG9yKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAkocmV2aXNpb24g
NzYzODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0Myw3IEBAIFBhc3NSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gTGF5ZXJDaHJvbWl1bToKIExheWVyQ2hyb21pdW06OkxheWVyQ2hy
b21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKICAgICA6IG1fb3duZXIob3duZXIp
CiAgICAgLCBtX2NvbnRlbnRzRGlydHkoZmFsc2UpCisgICAgLCBtX21hc2tMYXllcigwKQogICAg
ICwgbV90YXJnZXRSZW5kZXJTdXJmYWNlKDApCiAgICAgLCBtX3N1cGVybGF5ZXIoMCkKICAgICAs
IG1fYW5jaG9yUG9pbnQoMC41LCAwLjUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCShyZXZpc2lv
biA3NjM4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0K
ICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCisgICAgdm9pZCBz
ZXRNYXNrTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyKSB7IG1fbWFza0xheWVyID0gbWFz
a0xheWVyOyB9CisgICAgTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9tYXNrTGF5ZXIuZ2V0KCk7IH0KKwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IEZs
b2F0UmVjdCYgZGlydHlSZWN0KTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogICAgIGNv
bnN0IEZsb2F0UmVjdCYgZGlydHlSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kaXJ0eVJlY3Q7IH0K
QEAgLTE1OCw2ICsxNjEsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2Fs
bHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVh
bCBib29sIGRyYXdzQ29udGVudCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNvbnRlbnRzSWZEaXJ0eSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVD
b250ZW50c1RleHR1cmUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVy
ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkcmF3KCkgeyB9CiAKICAgICB2b2lkIGRyYXdEZWJ1
Z0JvcmRlcigpOwpAQCAtMjIyLDYgKzIyNyw4IEBAIHByb3RlY3RlZDoKICAgICBGbG9hdFJlY3Qg
bV9kaXJ0eVJlY3Q7CiAgICAgYm9vbCBtX2NvbnRlbnRzRGlydHk7CiAKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gbV9tYXNrTGF5ZXI7CisKICAgICAvLyBSZW5kZXIgc3VyZmFjZSB0aGlzIGxh
eWVyIGRyYXdzIGludG8uIFRoaXMgaXMgYSBzdXJmYWNlIHRoYXQgY2FuIGJlbG9uZwogICAgIC8v
IGVpdGhlciB0byB0aGlzIGxheWVyIChpZiBtX3RhcmdldFJlbmRlclN1cmZhY2UgPT0gbV9yZW5k
ZXJTdXJmYWNlKSBvcgogICAgIC8vIHRvIGFuIGFuY2VzdG9yIG9mIHRoaXMgbGF5ZXIuIFRoZSB0
YXJnZXQgcmVuZGVyIHN1cmZhY2UgZGV0ZXJtaW5lcyB0aGUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcAkocmV2aXNpb24gNzYzODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NTMsNyArNDUzLDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVwZGF0ZUxheWVycwogICAgIC8vIG9mIHRoZWlyIHBhcmVudC4KICAgICBib29sIHVzZVN1
cmZhY2VGb3JDbGlwcGluZyA9IGxheWVyLT5tYXNrc1RvQm91bmRzKCkgJiYgIWlzU2NhbGVPclRy
YW5zbGF0aW9uKGNvbWJpbmVkVHJhbnNmb3JtKTsKICAgICBib29sIHVzZVN1cmZhY2VGb3JPcGFj
aXR5ID0gbGF5ZXItPm9wYWNpdHkoKSAhPSAxICYmICFsYXllci0+cHJlc2VydmVzM0QoKTsKLSAg
ICBpZiAoKHVzZVN1cmZhY2VGb3JDbGlwcGluZyB8fCB1c2VTdXJmYWNlRm9yT3BhY2l0eSkgJiYg
bGF5ZXItPmRlc2NlbmRhbnRzRHJhd0NvbnRlbnQoKSkgeworICAgIGJvb2wgdXNlU3VyZmFjZUZv
ck1hc2tpbmcgPSBsYXllci0+bWFza0xheWVyKCk7CisgICAgaWYgKCgodXNlU3VyZmFjZUZvckNs
aXBwaW5nIHx8IHVzZVN1cmZhY2VGb3JPcGFjaXR5KSAmJiBsYXllci0+ZGVzY2VuZGFudHNEcmF3
Q29udGVudCgpKQorICAgICAgICB8fCB1c2VTdXJmYWNlRm9yTWFza2luZykgewogICAgICAgICBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSBsYXllci0+bV9yZW5kZXJTdXJm
YWNlLmdldCgpOwogICAgICAgICBpZiAoIXJlbmRlclN1cmZhY2UpCiAgICAgICAgICAgICByZW5k
ZXJTdXJmYWNlID0gbGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTQ4Nyw2ICs0ODks
MTMgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVycwogCiAgICAgICAg
IHJlbmRlclN1cmZhY2UtPm1fbGF5ZXJMaXN0LmNsZWFyKCk7CiAKKyAgICAgICAgaWYgKGxheWVy
LT5tYXNrTGF5ZXIoKSkgeworICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+bV9tYXNrTGF5ZXIg
PSBsYXllci0+bWFza0xheWVyKCk7CisgICAgICAgICAgICBsYXllci0+bWFza0xheWVyKCktPnNl
dExheWVyUmVuZGVyZXIodGhpcyk7CisgICAgICAgICAgICBsYXllci0+bWFza0xheWVyKCktPm1f
dGFyZ2V0UmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2U7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgcmVuZGVyU3VyZmFjZS0+bV9tYXNrTGF5ZXIgPSAwOworCiAgICAgICAgIHJlbmRl
clN1cmZhY2VMYXllckxpc3QuYXBwZW5kKGxheWVyKTsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBEVCA9IE1bcF0gKiBMVApAQCAtNTY3LDcgKzU3Niw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjp1cGRhdGVMYXllcnMKICAgICAgICAgICAgIGxheWVyLT5tX2RyYXdhYmxlQ29udGVu
dFJlY3QudW5pdGUoc3VibGF5ZXItPm1fZHJhd2FibGVDb250ZW50UmVjdCk7CiAgICAgfQogCi0g
ICAgaWYgKGxheWVyLT5tYXNrc1RvQm91bmRzKCkpCisgICAgaWYgKGxheWVyLT5tYXNrc1RvQm91
bmRzKCkgfHwgdXNlU3VyZmFjZUZvck1hc2tpbmcpCiAgICAgICAgIGxheWVyLT5tX2RyYXdhYmxl
Q29udGVudFJlY3QuaW50ZXJzZWN0KHRyYW5zZm9ybWVkTGF5ZXJSZWN0KTsKIAogICAgIGlmIChs
YXllci0+bV9yZW5kZXJTdXJmYWNlICYmIGxheWVyICE9IG1fcm9vdExheWVyKSB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZS5jcHAJKHJldmlzaW9uIDc2Mzg5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzksNiArNzksNyBAQCB2b2lkIExheWVyVGV4dHVyZTo6dW5yZXNlcnZlKCkKIAogdm9pZCBM
YXllclRleHR1cmU6OmJpbmRUZXh0dXJlKCkKIHsKKyAgICBBU1NFUlQobV90ZXh0dXJlTWFuYWdl
ci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7CiAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21p
dW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDc2Mzg5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTUgKzM4LDE3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6U2hhcmVkVmFsdWVzOjpTaGFyZWRWYWx1ZXMo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAg
ICAsIG1fc2hhZGVyUHJvZ3JhbSgwKQorICAgICwgbV9tYXNrU2hhZGVyUHJvZ3JhbSgwKQogICAg
ICwgbV9zaGFkZXJTYW1wbGVyTG9jYXRpb24oLTEpCiAgICAgLCBtX3NoYWRlck1hdHJpeExvY2F0
aW9uKC0xKQogICAgICwgbV9zaGFkZXJBbHBoYUxvY2F0aW9uKC0xKQorICAgICwgbV9tYXNrU2hh
ZGVyU2FtcGxlckxvY2F0aW9uKC0xKQorICAgICwgbV9tYXNrU2hhZGVyTWFza1NhbXBsZXJMb2Nh
dGlvbigtMSkKKyAgICAsIG1fbWFza1NoYWRlck1hdHJpeExvY2F0aW9uKC0xKQorICAgICwgbV9t
YXNrU2hhZGVyQWxwaGFMb2NhdGlvbigtMSkKICAgICAsIG1faW5pdGlhbGl6ZWQoZmFsc2UpCiB7
Ci0gICAgLy8gVGhlIGZvbGxvd2luZyBwcm9ncmFtIGNvbXBvc2l0ZXMgbGF5ZXJzIHdob3NlIGNv
bnRlbnRzIGFyZSB0aGUgcmVzdWx0cyBvZiBhIHByZXZpb3VzCi0gICAgLy8gcmVuZGVyIG9wZXJh
dGlvbiBhbmQgdGhlcmVmb3JlIGRvZXNuJ3QgcGVyZm9ybSBhbnkgY29sb3Igc3dpenpsaW5nLiBJ
dCBpcyB1c2VkCi0gICAgLy8gaW4gc2Nyb2xsaW5nIGFuZCBmb3IgY29tcG9zaXRpbmcgb2Zmc2Ny
ZWVuIHRleHR1cmVzLgotICAgIGNoYXIgcmVuZGVyU3VyZmFjZVZlcnRleFNoYWRlclN0cmluZ1td
ID0KKyAgICBjaGFyIHZlcnRleFNoYWRlclN0cmluZ1tdID0KICAgICAgICAgImF0dHJpYnV0ZSB2
ZWM0IGFfcG9zaXRpb247ICAgXG4iCiAgICAgICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3Jk
OyAgIFxuIgogICAgICAgICAidW5pZm9ybSBtYXQ0IG1hdHJpeDsgICAgICAgICBcbiIKQEAgLTU2
LDcgKzU4LDcgQEAgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpTaGFyZWRWYWx1ZXM6OlNoYQogICAg
ICAgICAiICBnbF9Qb3NpdGlvbiA9IG1hdHJpeCAqIGFfcG9zaXRpb247IFxuIgogICAgICAgICAi
ICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsgICBcbiIKICAgICAgICAgIn0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXG4iOwotICAgIGNoYXIgcmVuZGVyU3VyZmFjZUZyYWdtZW50U2hhZGVy
U3RyaW5nW10gPQorICAgIGNoYXIgZnJhZ21lbnRTaGFkZXJTdHJpbmdbXSA9CiAgICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCiAg
ICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXG4iCiAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7ICAgICAgICAgICAg
ICAgICAgICAgICAgXG4iCkBAIC02Niw5ICs2OCwyMiBAQCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06
OlNoYXJlZFZhbHVlczo6U2hhCiAgICAgICAgICIgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQo
c190ZXh0dXJlLCB2X3RleENvb3JkKTsgXG4iCiAgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZl
YzQodGV4Q29sb3IueCwgdGV4Q29sb3IueSwgdGV4Q29sb3IueiwgdGV4Q29sb3IudykgKiBhbHBo
YTsgXG4iCiAgICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXG4iOworICAgIGNoYXIgZnJhZ21lbnRTaGFkZXJXaXRoTWFza1N0cmluZ1td
ID0KKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVy
ZTsgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJE
IHNfbWFzazsgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgInVuaWZvcm0g
ZmxvYXQgYWxwaGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIK
KyAgICAgICAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcbiIKKyAgICAgICAgIiAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUs
IHZfdGV4Q29vcmQpOyBcbiIKKyAgICAgICAgIiAgdmVjNCBtYXNrQ29sb3IgPSB0ZXh0dXJlMkQo
c19tYXNrLCB2X3RleENvb3JkKTsgICBcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCh0ZXhDb2xvci54LCB0ZXhDb2xvci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAqIGFscGhh
ICogbWFza0NvbG9yLnc7IFxuIgorICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKIAotICAgIG1fc2hhZGVyUHJvZ3JhbSA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZVNoYWRlclByb2dyYW0obV9jb250ZXh0LCByZW5kZXJTdXJmYWNl
VmVydGV4U2hhZGVyU3RyaW5nLCByZW5kZXJTdXJmYWNlRnJhZ21lbnRTaGFkZXJTdHJpbmcpOwot
ICAgIGlmICghbV9zaGFkZXJQcm9ncmFtKSB7CisgICAgbV9zaGFkZXJQcm9ncmFtID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShtX2NvbnRleHQsIHZlcnRleFNoYWRlclN0cmlu
ZywgZnJhZ21lbnRTaGFkZXJTdHJpbmcpOworICAgIG1fbWFza1NoYWRlclByb2dyYW0gPSBMYXll
ckNocm9taXVtOjpjcmVhdGVTaGFkZXJQcm9ncmFtKG1fY29udGV4dCwgdmVydGV4U2hhZGVyU3Ry
aW5nLCBmcmFnbWVudFNoYWRlcldpdGhNYXNrU3RyaW5nKTsKKyAgICBpZiAoIW1fc2hhZGVyUHJv
Z3JhbSB8fCAhbV9tYXNrU2hhZGVyUHJvZ3JhbSkgewogICAgICAgICBMT0dfRVJST1IoIlJlbmRl
clN1cmZhY2VDaHJvbWl1bTogRmFpbGVkIHRvIGNyZWF0ZSBzaGFkZXIgcHJvZ3JhbSIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNzYsMTAgKzkxLDI0IEBAIFJlbmRlclN1cmZhY2VDaHJv
bWl1bTo6U2hhcmVkVmFsdWVzOjpTaGEKICAgICBHTEMobV9jb250ZXh0LCBtX3NoYWRlclNhbXBs
ZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fc2hhZGVyUHJvZ3Jh
bSwgInNfdGV4dHVyZSIpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX3NoYWRlck1hdHJpeExvY2F0
aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9zaGFkZXJQcm9ncmFtLCAibWF0
cml4IikpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fc2hhZGVyQWxwaGFMb2NhdGlvbiA9IG1fY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fc2hhZGVyUHJvZ3JhbSwgImFscGhhIikpOwotICAg
IGlmIChtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9PSAtMSB8fCBtX3NoYWRlck1hdHJpeExvY2F0
aW9uID09IC0xIHx8IG1fc2hhZGVyQWxwaGFMb2NhdGlvbiA9PSAtMSkgewotICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBpbml0aWFsaXplIHRleHR1cmUgbGF5ZXIgc2hhZGVyLiIpOworCisg
ICAgR0xDKG1fY29udGV4dCwgbV9tYXNrU2hhZGVyU2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24obV9tYXNrU2hhZGVyUHJvZ3JhbSwgInNfdGV4dHVyZSIpKTsK
KyAgICBHTEMobV9jb250ZXh0LCBtX21hc2tTaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uID0gbV9j
b250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9tYXNrU2hhZGVyUHJvZ3JhbSwgInNfbWFzayIp
KTsKKyAgICBHTEMobV9jb250ZXh0LCBtX21hc2tTaGFkZXJNYXRyaXhMb2NhdGlvbiA9IG1fY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fbWFza1NoYWRlclByb2dyYW0sICJtYXRyaXgiKSk7
CisgICAgR0xDKG1fY29udGV4dCwgbV9tYXNrU2hhZGVyQWxwaGFMb2NhdGlvbiA9IG1fY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fbWFza1NoYWRlclByb2dyYW0sICJhbHBoYSIpKTsKKwor
ICAgIGlmIChtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiA9PSAtMSB8fCBtX3NoYWRlck1hdHJpeExv
Y2F0aW9uID09IC0xIHx8IG1fc2hhZGVyQWxwaGFMb2NhdGlvbiA9PSAtMQorICAgICAgICB8fCBt
X21hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb24gPT0gLTEgfHwgbV9tYXNrU2hhZGVyTWFza1NhbXBs
ZXJMb2NhdGlvbiA9PSAtMSB8fCBtX21hc2tTaGFkZXJNYXRyaXhMb2NhdGlvbiA9PSAtMSB8fCBt
X21hc2tTaGFkZXJBbHBoYUxvY2F0aW9uID09IC0xKSB7CisgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIGluaXRpYWxpemUgcmVuZGVyIHN1cmZhY2Ugc2hhZGVycy4iKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3JhbSht
X3NoYWRlclByb2dyYW0pKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZvcm0x
aShtX3NoYWRlclNhbXBsZXJMb2NhdGlvbiwgMCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+dXNlUHJvZ3JhbShtX21hc2tTaGFkZXJQcm9ncmFtKSk7CisgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT51bmlmb3JtMWkobV9tYXNrU2hhZGVyU2FtcGxlckxvY2F0aW9uLCAwKSk7
CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkobV9tYXNrU2hhZGVyTWFz
a1NhbXBsZXJMb2NhdGlvbiwgMSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNl
UHJvZ3JhbSgwKSk7CiAgICAgbV9pbml0aWFsaXplZCA9IHRydWU7CiB9CiAKQEAgLTg3LDEwICsx
MTYsMTMgQEAgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpTaGFyZWRWYWx1ZXM6On5TaAogewogICAg
IGlmIChtX3NoYWRlclByb2dyYW0pCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
ZGVsZXRlUHJvZ3JhbShtX3NoYWRlclByb2dyYW0pKTsKKyAgICBpZiAobV9tYXNrU2hhZGVyUHJv
Z3JhbSkKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1f
bWFza1NoYWRlclByb2dyYW0pKTsKIH0KIAogUmVuZGVyU3VyZmFjZUNocm9taXVtOjpSZW5kZXJT
dXJmYWNlQ2hyb21pdW0oTGF5ZXJDaHJvbWl1bSogb3duaW5nTGF5ZXIpCiAgICAgOiBtX293bmlu
Z0xheWVyKG93bmluZ0xheWVyKQorICAgICwgbV9tYXNrTGF5ZXIoMCkKICAgICAsIG1fc2tpcHNE
cmF3KGZhbHNlKQogewogfQpAQCAtMTQxLDE5ICsxNzMsNDQgQEAgdm9pZCBSZW5kZXJTdXJmYWNl
Q2hyb21pdW06OmRyYXcoKQogICAgIGlmIChtX3NraXBzRHJhdyB8fCAhbV9jb250ZW50c1RleHR1
cmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGVudHNUZXh0dXJlLT5iaW5kVGV4dHVy
ZSgpOwotCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCA9IGxheWVyUmVuZGVyZXIo
KS0+Y29udGV4dCgpOworICAgIGludCBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IC0xOworICAgIGlu
dCBzaGFkZXJBbHBoYUxvY2F0aW9uID0gLTE7CiAgICAgY29uc3QgUmVuZGVyU3VyZmFjZUNocm9t
aXVtOjpTaGFyZWRWYWx1ZXMqIHN2ID0gbGF5ZXJSZW5kZXJlcigpLT5yZW5kZXJTdXJmYWNlU2hh
cmVkVmFsdWVzKCk7CiAgICAgQVNTRVJUKHN2ICYmIHN2LT5pbml0aWFsaXplZCgpKTsKKyAgICBi
b29sIHVzZU1hc2sgPSBmYWxzZTsKKyAgICBpZiAobV9tYXNrTGF5ZXIgJiYgbV9tYXNrTGF5ZXIt
PmRyYXdzQ29udGVudCgpKSB7CisgICAgICAgIG1fbWFza0xheWVyLT51cGRhdGVDb250ZW50c0lm
RGlydHkoKTsKKyAgICAgICAgaWYgKCFtX21hc2tMYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBjb250ZXh0M0QtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgICAgICAg
ICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIoc3YtPm1hc2tTaGFkZXJQcm9ncmFtKCkpOwor
ICAgICAgICAgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOworICAgICAgICAgICAgbV9jb250ZW50c1RleHR1cmUt
PmJpbmRUZXh0dXJlKCk7CisgICAgICAgICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPmFj
dGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7CisgICAgICAgICAgICBt
X21hc2tMYXllci0+YmluZENvbnRlbnRzVGV4dHVyZSgpOworICAgICAgICAgICAgR0xDKGNvbnRl
eHQzRCwgY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
MCkpOworICAgICAgICAgICAgc2hhZGVyTWF0cml4TG9jYXRpb24gPSBzdi0+bWFza1NoYWRlck1h
dHJpeExvY2F0aW9uKCk7CisgICAgICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9uID0gc3YtPm1h
c2tTaGFkZXJBbHBoYUxvY2F0aW9uKCk7CisgICAgICAgICAgICB1c2VNYXNrID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmICghdXNlTWFzaykgeworICAgICAgICBsYXllclJlbmRl
cmVyKCktPnVzZVNoYWRlcihzdi0+c2hhZGVyUHJvZ3JhbSgpKTsKKyAgICAgICAgbV9jb250ZW50
c1RleHR1cmUtPmJpbmRUZXh0dXJlKCk7CisgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9uID0g
c3YtPnNoYWRlck1hdHJpeExvY2F0aW9uKCk7CisgICAgICAgIHNoYWRlckFscGhhTG9jYXRpb24g
PSBzdi0+c2hhZGVyQWxwaGFMb2NhdGlvbigpOworICAgIH0KIAotICAgIGxheWVyUmVuZGVyZXIo
KS0+dXNlU2hhZGVyKHN2LT5zaGFkZXJQcm9ncmFtKCkpOwogICAgIGxheWVyUmVuZGVyZXIoKS0+
c2V0U2Npc3NvclRvUmVjdChtX3NjaXNzb3JSZWN0KTsKIAogICAgIExheWVyQ2hyb21pdW06OmRy
YXdUZXh0dXJlZFF1YWQobGF5ZXJSZW5kZXJlcigpLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXIo
KS0+cHJvamVjdGlvbk1hdHJpeCgpLCBtX2RyYXdUcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2NvbnRlbnRSZWN0LndpZHRoKCksIG1fY29udGVudFJlY3Qu
aGVpZ2h0KCksIG1fZHJhd09wYWNpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdi0+c2hhZGVyTWF0cml4TG9jYXRpb24oKSwgc3YtPnNoYWRlckFscGhhTG9jYXRpb24o
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJNYXRyaXhMb2Nh
dGlvbiwgc2hhZGVyQWxwaGFMb2NhdGlvbik7CiAKICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+dW5y
ZXNlcnZlKCk7CisgICAgaWYgKG1fbWFza0xheWVyKQorICAgICAgICBtX21hc2tMYXllci0+dW5y
ZXNlcnZlQ29udGVudHNUZXh0dXJlKCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1
cmZhY2VDaHJvbWl1bS5oCShyZXZpc2lvbiA3NjM4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NCwxOCArNjQsMjggQEAgcHVibGljOgogICAgICAgICB+U2hhcmVkVmFsdWVzKCk7
CiAKICAgICAgICAgdW5zaWduZWQgc2hhZGVyUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hh
ZGVyUHJvZ3JhbTsgfQorICAgICAgICB1bnNpZ25lZCBtYXNrU2hhZGVyUHJvZ3JhbSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFza1NoYWRlclByb2dyYW07IH0KICAgICAgICAgaW50IHNoYWRlclNhbXBs
ZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVyU2FtcGxlckxvY2F0aW9uOyB9CiAg
ICAgICAgIGludCBzaGFkZXJNYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZGVy
TWF0cml4TG9jYXRpb247IH0KICAgICAgICAgaW50IHNoYWRlckFscGhhTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3NoYWRlckFscGhhTG9jYXRpb247IH0KKyAgICAgICAgaW50IG1hc2tTaGFk
ZXJTYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hc2tTaGFkZXJTYW1wbGVyTG9j
YXRpb247IH0KKyAgICAgICAgaW50IG1hc2tTaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9tYXNrU2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbjsgfQorICAgICAgICBp
bnQgbWFza1NoYWRlck1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrU2hhZGVy
TWF0cml4TG9jYXRpb247IH0KKyAgICAgICAgaW50IG1hc2tTaGFkZXJBbHBoYUxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXNrU2hhZGVyQWxwaGFMb2NhdGlvbjsgfQogICAgICAgICBib29s
IGluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplZDsgfQogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKIAogICAgICAgICB1
bnNpZ25lZCBtX3NoYWRlclByb2dyYW07CisgICAgICAgIHVuc2lnbmVkIG1fbWFza1NoYWRlclBy
b2dyYW07CiAgICAgICAgIGludCBtX3NoYWRlclNhbXBsZXJMb2NhdGlvbjsKICAgICAgICAgaW50
IG1fc2hhZGVyTWF0cml4TG9jYXRpb247CiAgICAgICAgIGludCBtX3NoYWRlckFscGhhTG9jYXRp
b247CisgICAgICAgIGludCBtX21hc2tTaGFkZXJTYW1wbGVyTG9jYXRpb247CisgICAgICAgIGlu
dCBtX21hc2tTaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uOworICAgICAgICBpbnQgbV9tYXNrU2hh
ZGVyTWF0cml4TG9jYXRpb247CisgICAgICAgIGludCBtX21hc2tTaGFkZXJBbHBoYUxvY2F0aW9u
OwogICAgICAgICBib29sIG1faW5pdGlhbGl6ZWQ7CiAgICAgfTsKIApAQCAtODMsNiArOTMsOCBA
QCBwcml2YXRlOgogICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcigpOwog
CiAgICAgTGF5ZXJDaHJvbWl1bSogbV9vd25pbmdMYXllcjsKKyAgICBMYXllckNocm9taXVtKiBt
X21hc2tMYXllcjsKKwogICAgIEludFJlY3QgbV9jb250ZW50UmVjdDsKICAgICBib29sIG1fc2tp
cHNEcmF3OwogICAgIE93blB0cjxMYXllclRleHR1cmU+IG1fY29udGVudHNUZXh0dXJlOwo=
</data>
<flag name="review"
          id="71251"
          type_id="1"
          status="+"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="71252"
          type_id="3"
          status="-"
          setter="vangelis"
    />
          </attachment>
      

    </bug>

</bugzilla>