<?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>100159</bug_id>
          
          <creation_ts>2012-10-23 14:38:15 -0700</creation_ts>
          <short_desc>Allow tests to run with a tile cache, and optionally dump the tile cache via layerTreeAsText()</short_desc>
          <delta_ts>2012-10-23 21:35:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>100189</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bdakin</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>749000</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-23 14:38:15 -0700</bug_when>
    <thetext>Allow tests to run with a tile cache, and optionally dump the tile cache via layerTreeAsText()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749010</commentid>
    <comment_count>1</comment_count>
      <attachid>170239</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-23 14:46:28 -0700</bug_when>
    <thetext>Created attachment 170239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749013</commentid>
    <comment_count>2</comment_count>
      <attachid>170240</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-23 14:47:33 -0700</bug_when>
    <thetext>Created attachment 170240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749024</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-23 14:57:58 -0700</bug_when>
    <thetext>Seems reasonable to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749028</commentid>
    <comment_count>4</comment_count>
      <attachid>170240</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-23 14:59:43 -0700</bug_when>
    <thetext>Comment on attachment 170240
Patch

Attachment 170240 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14525111</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749036</commentid>
    <comment_count>5</comment_count>
      <attachid>170240</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-23 15:04:45 -0700</bug_when>
    <thetext>Comment on attachment 170240
Patch

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

&gt; Source/WebCore/ChangeLog:35
&gt; +        * page/Frame.h:
&gt; +        * platform/graphics/GraphicsLayer.cpp:
&gt; +        (showGraphicsLayerTree):
&gt; +        * platform/graphics/GraphicsLayer.h:
&gt; +        (WebCore::GraphicsLayer::tiledBacking):
&gt; +        * platform/graphics/TiledBacking.h:
&gt; +        * platform/graphics/ca/GraphicsLayerCA.cpp:
&gt; +        (WebCore::GraphicsLayerCA::tiledBacking):
&gt; +        (WebCore::GraphicsLayerCA::dumpAdditionalProperties):
&gt; +        * platform/graphics/ca/GraphicsLayerCA.h:
&gt; +        (GraphicsLayerCA):
&gt; +        * platform/graphics/ca/mac/TileCache.h:
&gt; +        (WebCore::TileCache::tileCoverageRect):
&gt; +        (TileCache):
&gt; +        * platform/graphics/ca/mac/TileCache.mm:
&gt; +        (WebCore::TileCache::computeTileCoverageRect):
&gt; +        (WebCore::TileCache::revalidateTiles):
&gt; +        * rendering/RenderLayerCompositor.cpp:
&gt; +        (WebCore::RenderLayerCompositor::layerTreeAsText):
&gt; +        * testing/Internals.cpp:
&gt; +        (WebCore::Internals::layerTreeAsText):
&gt; +        * testing/Internals.h:
&gt; +        * testing/Internals.idl:

Dan would be sad that there aren’t comments here.

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:2526
&gt; +    if (m_isPageTileCacheLayer &amp;&amp; (behavior &amp; LayerTreeAsTextIncludePageTileCache)) {

I assume there’s no reason to actually dump all of the tile layers?

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:148
&gt; +    return strstr(pathOrURL, &quot;tiled-drawing/&quot;) || strstr(pathOrURL, &quot;tiled-drawing\\&quot;);

Is this what we want? So then we can have tiled-drawing subdirectories throughout the LayoutTests tree?

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:154
&gt; +    WKRetainPtr&lt;WKMutableDictionaryRef&gt; viewOptions = adoptWK(WKMutableDictionaryCreate());

Does WKRetainPtr not have the nice constructor that takes AdoptWK as the first argument, and the object as the second?

&gt; Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm:111
&gt; +    WKRetainPtr&lt;WKStringRef&gt; useTiledDrawingKey(AdoptWK, WKStringCreateWithUTF8CString(&quot;TiledDrawing&quot;));

Apparently it does :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749053</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-23 15:22:45 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/132276</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749296</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 21:07:26 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 100189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749305</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-23 21:16:03 -0700</bug_when>
    <thetext>Rolled out, because it broke the Qt build - http://trac.webkit.org/changeset/132298

Please don&apos;t break the build in the future and keep the contributing rules:
https://www.webkit.org/coding/contributing.html
&quot;Keeping the tree green
...
You can watch the tree at build.webkit.org to make sure your patch builds and passes tests on all platforms.
...
Your change must at least compile on all platforms.&quot;

EWS bots and buildbots are your friends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749316</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-23 21:29:42 -0700</bug_when>
    <thetext>Was rolled out in error. Ossy is rolling back in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749321</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-23 21:35:11 -0700</bug_when>
    <thetext>Relanded in https://trac.webkit.org/changeset/132301.

I&apos;m so sorry for blaming you, r133275 and not r133276 was the culprit,
but the red EWS and the red tree on same revision confused me. I&apos;ll
be more careful in the future and will check the build logs better.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170239</attachid>
            <date>2012-10-23 14:46:28 -0700</date>
            <delta_ts>2012-10-23 14:47:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100159-20121023144504.patch</filename>
            <type>text/plain</type>
            <size>28724</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzZhYThjNDEwM2JkZDc5
MDkwZjA4NzM4NDgxMjU3Mjg0NDU4ZDA5Mi4uMmUzOWNlZjM4MDM2YjFhOGQ4YjBkN2Q5MWM3YzA4
MjU1MTcxYzQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEwLTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHRlc3Rz
IHRvIHJ1biB3aXRoIGEgdGlsZSBjYWNoZSwgYW5kIG9wdGlvbmFsbHkgZHVtcCB0aGUgdGlsZSBj
YWNoZSB2aWEgbGF5ZXJUcmVlQXNUZXh0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDE1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIExBWUVSX1RSRUVfSU5DTFVERVNfUEFHRV9USUxFX0NB
Q0hFIGZsYWcgZm9yIGxheWVyVHJlZUFzVGV4dCgpLCBhbmQgcGx1bWIgaXQKKyAgICAgICAgdGhy
b3VnaCB0byBHcmFwaGljc0xheWVyQ0EsIHdoaWNoIGR1bXBzIHRoZSBUaWxlZEJhY2tpbmcgdGls
ZSBjb3ZlcmFnZSByZWN0LgorCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL21hYy90aWxlZC1kcmF3
aW5nL3VzZS10aWxlZC1kcmF3aW5nLmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKHNo
b3dHcmFwaGljc0xheWVyVHJlZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNBOjp0aWxlZEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoR3JhcGhpY3NM
YXllckNBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLmg6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6OnRpbGVDb3ZlcmFnZVJlY3QpOgorICAgICAg
ICAoVGlsZUNhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNh
Y2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNhY2hlOjpjb21wdXRlVGlsZUNvdmVyYWdl
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxlcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyVHJlZUFzVGV4dCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjps
YXllclRyZWVBc1RleHQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTEwLTIyICBWc2V2b2xvZCBWbGFzb3Yg
IDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFByZXBhcmUg
bWFwcGluZ3MgdG8gbW92aW5nIHVpU291cmNlQ29kZXMgY3JlYXRpb24gb3V0IG9mIHRoZW0gdG8g
d29ya3NwYWNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDIzYTU5ZWJkY2UyODEzNDQwNGNlZDJjYzEz
ZDBlMzY3MDcyODYwMzUuLmYzNzUyMmJiMTVjYmUyNmE3ZWQwN2UxZDEzMzIzMzliMzc0ZWQ5NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKQEAgLTc4LDcgKzc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgZW51bSB7CiAgICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZURlYnVnSW5mbyA9IDEg
PDwgMCwKLSAgICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVmlzaWJsZVJlY3RzID0gMSA8PCAy
CisgICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZVZpc2libGVSZWN0cyA9IDEgPDwgMiwKKyAg
ICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlUGFnZVRpbGVDYWNoZSA9IDEgPDwgMwogICAgIH07
CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVGbGFnczsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCAzYTMyYjUx
NDViOTI3ZWRhZWQ0NWY5MTllNWQ2MDk1MTUxYzQ0M2UzLi5iZWRkZTUxMWQ2OTg2NTliNDgyYmE0
ZWU5Yjc3Nzc0NzY4NjMzY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQgc2hvd0dy
YXBoaWNzTGF5ZXJUcmVlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAg
IGlmICghbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBvdXRwdXQgPSBsYXll
ci0+bGF5ZXJUcmVlQXNUZXh0KExheWVyVHJlZUFzVGV4dERlYnVnIHwgTGF5ZXJUcmVlQXNUZXh0
SW5jbHVkZVZpc2libGVSZWN0cyk7CisgICAgU3RyaW5nIG91dHB1dCA9IGxheWVyLT5sYXllclRy
ZWVBc1RleHQoTGF5ZXJUcmVlQXNUZXh0RGVidWcgfCBMYXllclRyZWVBc1RleHRJbmNsdWRlVmlz
aWJsZVJlY3RzIHwgTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVBhZ2VUaWxlQ2FjaGUpOwogICAgIGZw
cmludGYoc3RkZXJyLCAiJXNcbiIsIG91dHB1dC51dGY4KCkuZGF0YSgpKTsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmlu
ZGV4IGU2N2ExN2VhZTA0OThiYjI1YmFjMDE4NmFmMjk4ZGYyZjY5MjI3OWEuLjBiNzQxNTlmYmQw
NDA3MDlhNzBiNzVlZjM2ZGM0NjE2ZmNiODNiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBM
YXllclRyZWVBc1RleHRCZWhhdmlvckZsYWdzIHsKICAgICBMYXllclRyZWVBc1RleHRCZWhhdmlv
ck5vcm1hbCA9IDAsCiAgICAgTGF5ZXJUcmVlQXNUZXh0RGVidWcgPSAxIDw8IDAsIC8vIER1bXAg
ZXh0cmEgZGVidWdnaW5nIGluZm8gbGlrZSBsYXllciBhZGRyZXNzZXMuCiAgICAgTGF5ZXJUcmVl
QXNUZXh0SW5jbHVkZVZpc2libGVSZWN0cyA9IDEgPDwgMSwKKyAgICBMYXllclRyZWVBc1RleHRJ
bmNsdWRlUGFnZVRpbGVDYWNoZSA9IDEgPDwgMgogfTsKIHR5cGVkZWYgdW5zaWduZWQgTGF5ZXJU
cmVlQXNUZXh0QmVoYXZpb3I7CiAKQEAgLTQwMSw3ICs0MDIsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHVzaW5nVGlsZWRMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNpbmdUaWxlZExheWVyOyB9
CiAKLSAgICB2aXJ0dWFsIFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBjb25zdCB7IHJldHVy
biAwOyB9CiAKICNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShF
RkwpCiAgICAgLy8gVGhpcyBhbGxvd3Mgc2V2ZXJhbCBhbHRlcm5hdGl2ZSBHcmFwaGljc0xheWVy
IGltcGxlbWVudGF0aW9ucyBpbiB0aGUgc2FtZSBwb3J0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaAppbmRleCA0MTA4ZjEyMmJlNDBjOTEyMDlj
NWY1MGRhNzllZWNkYWRjNGU4ODZlLi44YzgxY2M5ZjkyMjdlZjA5OWVhZGE0YzE5OWM1YjY0Mzc3
YWUwZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxl
ZEJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJh
Y2tpbmcuaApAQCAtNTQsNiArNTQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNl
dFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkgY29uc3QgPSAwOwor
ICAgIAorICAgIC8vIEV4cG9zZWQgZm9yIHRlc3RpbmcKKyAgICB2aXJ0dWFsIEludFJlY3QgdGls
ZUNvdmVyYWdlUmVjdCgpIGNvbnN0ID0gMDsKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKaW5kZXggYTc0YmIxY2QwZmQ1NTNjM2MxNTI5ODFlNzU5MWMwOWQyMzk3
NWIyYy4uZTZkMWJjYzk5NTg0NTUwNjkzZmJlY2UxYjMzZTlmMjc2MmRhMGExNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwCkBAIC05MTAsNyArOTEwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmZsdXNoQ29t
cG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIGNvbW1pdExheWVyQ2hhbmdlc0Fm
dGVyU3VibGF5ZXJzKCk7CiB9CiAKLVRpbGVkQmFja2luZyogR3JhcGhpY3NMYXllckNBOjp0aWxl
ZEJhY2tpbmcoKQorVGlsZWRCYWNraW5nKiBHcmFwaGljc0xheWVyQ0E6OnRpbGVkQmFja2luZygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbGF5ZXItPnRpbGVkQmFja2luZygpOwogfQpAQCAtMjUy
Miw2ICsyNTIyLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpkdW1wQWRkaXRpb25hbFByb3Bl
cnRpZXMoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgaW50IGluZGVuCiAgICAgICAgIHdyaXRlSW5k
ZW50KHRleHRTdHJlYW0sIGluZGVudCArIDEpOwogICAgICAgICB0ZXh0U3RyZWFtIDw8ICIodmlz
aWJsZSByZWN0ICIgPDwgbV92aXNpYmxlUmVjdC54KCkgPDwgIiwgIiA8PCBtX3Zpc2libGVSZWN0
LnkoKSA8PCAiICIgPDwgbV92aXNpYmxlUmVjdC53aWR0aCgpIDw8ICIgeCAiIDw8IG1fdmlzaWJs
ZVJlY3QuaGVpZ2h0KCkgPDwgIilcbiI7CiAgICAgfQorCisgICAgaWYgKG1faXNQYWdlVGlsZUNh
Y2hlTGF5ZXIgJiYgKGJlaGF2aW9yICYgTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVBhZ2VUaWxlQ2Fj
aGUpKSB7CisgICAgICAgIHdyaXRlSW5kZW50KHRleHRTdHJlYW0sIGluZGVudCArIDEpOworICAg
ICAgICBJbnRSZWN0IHRpbGVDb3ZlcmFnZVJlY3QgPSB0aWxlZEJhY2tpbmcoKS0+dGlsZUNvdmVy
YWdlUmVjdCgpOworICAgICAgICB0ZXh0U3RyZWFtIDw8ICIodGlsZSBjYWNoZSBjb3ZlcmFnZSAi
IDw8IHRpbGVDb3ZlcmFnZVJlY3QueCgpIDw8ICIsICIgPDwgdGlsZUNvdmVyYWdlUmVjdC55KCkg
PDwgIiAiIDw8IHRpbGVDb3ZlcmFnZVJlY3Qud2lkdGgoKSA8PCAiIHggIiA8PCB0aWxlQ292ZXJh
Z2VSZWN0LmhlaWdodCgpIDw8ICIpXG4iOworICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0xheWVy
Q0E6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5oCmluZGV4IGM2YjIxMGU1YjhiNTcxNmZjOThiYTdjYTI2YzFkNjgxOWRlNzIxYmUu
LjAwY2E2MmU3NTI1OTdjYzQzOGY5MTFmOGYxYzlhOTNkZGY4ODQ3YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBA
IC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0
aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKIAotICAgIHZpcnR1YWwgVGlsZWRCYWNraW5n
KiB0aWxlZEJhY2tpbmcoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFRpbGVkQmFja2luZyogdGls
ZWRCYWNraW5nKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBib29sIGFsbG93VGlsZWRMYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dUaWxlZExheWVyOyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dEFsbG93VGlsZWRMYXllcihib29sIGIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oCmluZGV4IDE3ZTk4ZWUzYzNlY2E4N2RlNjg4
OGMzY2IwYjA4ZmJlMTIwZDI4NzguLmEwM2Q2ZDhmODIwOGVjYjBhNThhOTM3YmQwOWQ5YjM1M2U1
M2IyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9UaWxlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvVGlsZUNhY2hlLmgKQEAgLTg5LDYgKzg5LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgZm9yY2VSZXBhaW50KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCBmbGFnKSBPVkVSUklERSB7IG1fc2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA9IGZsYWc7IH0KICAgICB2aXJ0dWFsIGJvb2wg
c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsgfQorCisgICAgdmlydHVh
bCBJbnRSZWN0IHRpbGVDb3ZlcmFnZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3RpbGVDb3ZlcmFn
ZVJlY3Q7IH0KICAgICAKICAgICBJbnRSZWN0IGJvdW5kcygpIGNvbnN0OwogCkBAIC05Niw3ICs5
OCw3IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCByZWN0Rm9yVGlsZUluZGV4KGNvbnN0IFRpbGVJ
bmRleCYpIGNvbnN0OwogICAgIHZvaWQgZ2V0VGlsZUluZGV4UmFuZ2VGb3JSZWN0KGNvbnN0IElu
dFJlY3QmLCBUaWxlSW5kZXgmIHRvcExlZnQsIFRpbGVJbmRleCYgYm90dG9tUmlnaHQpOwogCi0g
ICAgSW50UmVjdCB0aWxlQ292ZXJhZ2VSZWN0KCkgY29uc3Q7CisgICAgSW50UmVjdCBjb21wdXRl
VGlsZUNvdmVyYWdlUmVjdCgpIGNvbnN0OwogCiAgICAgdm9pZCBzY2hlZHVsZVRpbGVSZXZhbGlk
YXRpb24oZG91YmxlIGludGVydmFsKTsKICAgICB2b2lkIHRpbGVSZXZhbGlkYXRpb25UaW1lckZp
cmVkKFRpbWVyPFRpbGVDYWNoZT4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCmluZGV4IDYxOTI0NGRhOTYyYzI5ZTY5MDgy
OTZmZjEyZjAzODgyYmU3MTRiYjcuLjhhYWY4N2RiMGEyNzk1ZTA1MzY3NTc3MTFmMTJiMmE5ZDI5
OTAxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9UaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1RpbGVDYWNoZS5tbQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgVGlsZUNhY2hlOjpnZXRU
aWxlSW5kZXhSYW5nZUZvclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgVGlsZUluZGV4JiB0b3BM
ZWZ0CiAgICAgYm90dG9tUmlnaHQuc2V0WShtYXgoY2xhbXBlZFJlY3QubWF4WSgpIC8gbV90aWxl
U2l6ZS5oZWlnaHQoKSwgMCkpOwogfQogCi1JbnRSZWN0IFRpbGVDYWNoZTo6dGlsZUNvdmVyYWdl
UmVjdCgpIGNvbnN0CitJbnRSZWN0IFRpbGVDYWNoZTo6Y29tcHV0ZVRpbGVDb3ZlcmFnZVJlY3Qo
KSBjb25zdAogewogICAgIEludFJlY3QgdGlsZUNvdmVyYWdlUmVjdCA9IG1fdmlzaWJsZVJlY3Q7
CiAKQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0ZVRpbGVzKCkK
ICAgICBpZiAobV92aXNpYmxlUmVjdC5pc0VtcHR5KCkgfHwgYm91bmRzKCkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBJbnRSZWN0IHRpbGVDb3ZlcmFnZVJlY3QgPSB0aGlzLT50
aWxlQ292ZXJhZ2VSZWN0KCk7CisgICAgSW50UmVjdCB0aWxlQ292ZXJhZ2VSZWN0ID0gY29tcHV0
ZVRpbGVDb3ZlcmFnZVJlY3QoKTsKIAogICAgIFZlY3RvcjxUaWxlSW5kZXg+IHRpbGVzVG9SZW1v
dmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKaW5kZXggNTU2NjRjMjI4NDVmMGE1MmNmNmMzZDM4Zjc5NDA2MGZhMzYyMzI5NC4u
YTU5ZGU5YzVjOTJmNDg4NWY4YTg2MDJhNzkxOWU5MzA5ZGIzNWE4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTExMzcs
NyArMTEzNyw5IEBAIFN0cmluZyBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyVHJlZUFzVGV4
dChMYXllclRyZWVGbGFncyBmbGFncykKICAgICAgICAgbGF5ZXJUcmVlQmVoYXZpb3IgfD0gTGF5
ZXJUcmVlQXNUZXh0RGVidWc7CiAgICAgaWYgKGZsYWdzICYgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRl
VmlzaWJsZVJlY3RzKQogICAgICAgICBsYXllclRyZWVCZWhhdmlvciB8PSBMYXllclRyZWVBc1Rl
eHRJbmNsdWRlVmlzaWJsZVJlY3RzOwotICAgIAorICAgIGlmIChmbGFncyAmIExheWVyVHJlZUZs
YWdzSW5jbHVkZVBhZ2VUaWxlQ2FjaGUpCisgICAgICAgIGxheWVyVHJlZUJlaGF2aW9yIHw9IExh
eWVyVHJlZUFzVGV4dEluY2x1ZGVQYWdlVGlsZUNhY2hlOworCiAgICAgLy8gV2Ugc2tpcCBkdW1w
aW5nIHRoZSBzY3JvbGwgYW5kIGNsaXAgbGF5ZXJzIHRvIGtlZXAgbGF5ZXJUcmVlQXNUZXh0IG91
dHB1dAogICAgIC8vIHNpbWlsYXIgYmV0d2VlbiBwbGF0Zm9ybXMuCiAgICAgcmV0dXJuIG1fcm9v
dENvbnRlbnRMYXllci0+bGF5ZXJUcmVlQXNUZXh0KGxheWVyVHJlZUJlaGF2aW9yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjMjZkNmVhNGY5NzhhNzU0MjcwMmEwNmY1
YTRlNjM4MTI3YTM0NWRkLi4wMjYzZWNkZTBhYmEzNTNhNDgxMzg1MzRiYzJhM2JhM2M1MTIwMzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMjM3LDYgKzEyMzcsOCBA
QCBTdHJpbmcgSW50ZXJuYWxzOjpsYXllclRyZWVBc1RleHQoRG9jdW1lbnQqIGRvY3VtZW50LCB1
bnNpZ25lZCBmbGFncywgRXhjZXB0aW9uQwogICAgIExheWVyVHJlZUZsYWdzIGxheWVyVHJlZUZs
YWdzID0gMDsKICAgICBpZiAoZmxhZ3MgJiBMQVlFUl9UUkVFX0lOQ0xVREVTX1ZJU0lCTEVfUkVD
VFMpCiAgICAgICAgIGxheWVyVHJlZUZsYWdzIHw9IExheWVyVHJlZUZsYWdzSW5jbHVkZVZpc2li
bGVSZWN0czsKKyAgICBpZiAoZmxhZ3MgJiBMQVlFUl9UUkVFX0lOQ0xVREVTX1BBR0VfVElMRV9D
QUNIRSkKKyAgICAgICAgbGF5ZXJUcmVlRmxhZ3MgfD0gTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlUGFn
ZVRpbGVDYWNoZTsKIAogICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+bGF5ZXJUcmVlQXNU
ZXh0KGxheWVyVHJlZUZsYWdzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4
IGJiYzVjNWI3YjlkNTE5NTIzYThhYmU2ZWVlZDU5NWNhZDBiM2Y2ZTQuLjk3YzkwMWE2OTYwNDg3
MjAwZWM2OGFhYTUxYTNhODc0MWUzMTNmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aApAQCAtMTg4LDcgKzE4OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWVBbmltYXRpb25z
KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAgICAgZW51bSB7Ci0gICAgICAg
IExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyA9IDEgLy8gVmFsdWVzIG5lZWQgdG8g
a2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4KKyAgICAgICAgLy8gVmFsdWVzIG5lZWQg
dG8gYmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4KKyAgICAgICAgTEFZRVJfVFJF
RV9JTkNMVURFU19WSVNJQkxFX1JFQ1RTID0gMSwKKyAgICAgICAgTEFZRVJfVFJFRV9JTkNMVURF
U19QQUdFX1RJTEVfQ0FDSEUgPSAyCisgICAgICAgIAogICAgIH07CiAgICAgU3RyaW5nIGxheWVy
VHJlZUFzVGV4dChEb2N1bWVudCosIHVuc2lnbmVkIGZsYWdzLCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CiAgICAgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA3N2JhNjYwMTAy
MWQ1OGU1YjdmMGIyMDA0ZDIxYmI0MWJlOGQ0MWIwLi41Mzk1ZGYzNTIyMzc5OTRmNTZmMTk2NTdh
MTcyYjZmMzUyYWNmZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0x
NTgsNiArMTU4LDcgQEAKIAogICAgIC8vIEZsYWdzIGZvciBsYXllclRyZWVBc1RleHQuCiAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19WSVNJQkxFX1JFQ1RTID0g
MTsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMQVlFUl9UUkVFX0lOQ0xVREVTX1BBR0VfVElM
RV9DQUNIRSA9IDI7CiAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChpbiBEb2N1bWVudCBk
b2N1bWVudCwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBmbGFncykgcmFpc2VzIChET01F
eGNlcHRpb24pOwogCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKGlu
IERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjM4ZWQ1YzVkYmNlZmM4YzA2
MzZhYzRlNmNiZDBkOWJkN2U5MTU4Mi4uOTEwYmFlZWVhOTlmYzVkMmI4ZWVkZjVlOTQ3NjdkM2Iz
ZDk0MzY2NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEwLTIzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHRlc3RzIHRvIHJ1biB3aXRoIGEgdGlsZSBj
YWNoZSwgYW5kIG9wdGlvbmFsbHkgZHVtcCB0aGUgdGlsZSBjYWNoZSB2aWEgbGF5ZXJUcmVlQXNU
ZXh0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MDE1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
a2UgV2ViS2l0VGVzdFJ1bm5lciB1c2UgYSBXS1ZpZXcgd2l0aCBhIHRpbGUgY2FjaGUgZm9yIHRl
c3RzIHJ1biBpbiBhIGRpcmVjdG9yeQorICAgICAgICB3aG9zZSBwYXRoIGluY2x1ZGVzICJ0aWxl
ZC1kcmF3aW5nIi4gSXQgZG9lcyB0aGlzIGJ5IHBhc3NpbmcgYXJvdW5kIGEgV0tEaWN0aW9uYXJ5
IAorICAgICAgICBvZiBvcHRpb25zLCBhbmQgaWYgdGhlIGN1cnJlbnQgUGxhdGZvcm1XZWJWaWV3
IGRvZXNuJ3Qgc3VwcG9ydCB0aG9zZSBvcHRpb25zLCBpdCB3aWxsCisgICAgICAgIGNyZWF0ZSBh
IG5ldyBvbmUuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5o
OgorICAgICAgICAoUGxhdGZvcm1XZWJWaWV3KTogQWRkIGEgV0tEaWN0aW9uYXJ5UmVmIG9wdGlv
bnMgZGljdGlvbmFyeSBhcmd1bWVudC4KKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp2
aWV3U3VwcG9ydHNPcHRpb25zKTogUmV0dXJucyB0cnVlIGlmIHRoZSB2aWV3CisgICAgICAgIHN1
cHBvcnRzIHRoZSBvcHRpb25zIGluIHRoZSBXS0RpY3Rpb25hcnlSZWYuCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjppbml0aWFsaXplKTogQ2FsbCBjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoKSB3aXRo
CisgICAgICAgIG5vIG9wdGlvbnMgaW4gdGhlIG5vcm1hbCBjYXNlLgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKTogTW92ZWQgY29kZSBpbnRv
IHRoaXMgZnVjdGlvbgorICAgICAgICBzbyB3ZSBjYW4gY2FsbCBpdCBpbiB0d28gcGxhY2VzLgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9ucyk6
IElmIHRoZSBjdXJyZW50IHZpZXcKKyAgICAgICAgZG9lc24ndCBzdXBwb3J0IHRoZSBnaXZlbiBv
cHRpb25zLCB0aHJvdyBpdCBhd2F5IGFuZCBtYWtlYSAgbmV3IG9uZSB0aGF0IGRvZXMuCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpzaG91bGRVc2VU
aWxlZERyYXdpbmcpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5zICJ0aWxl
ZC1kcmF3aW5nIi4KKyAgICAgICAgKFdUUjo6dXBkYXRlVGlsZWREcmF3aW5nRm9yQ3VycmVudFRl
c3QpOiBUZWxsIHRoZSBUZXN0Q29udHJvbGxlciB0byBjaGVjayB3aGV0aGVyCisgICAgICAgIHRo
ZSB2aWV3IHN1cHBvcnRzIHRoZSBnaXZlbiBvcHRpb25zLiBOby1vcCBmb3Igbm9uLU1hYyBwbGF0
Zm9ybXMuCisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjppbnZva2UpOiBDYWxsIHVwZGF0
ZVRpbGVkRHJhd2luZ0ZvckN1cnJlbnRUZXN0KCkuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJW
aWV3OjpQbGF0Zm9ybVdlYlZpZXcpOiBOZXcgY29uc3RydWN0b3IgcGFyYW1ldGVyLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHA6CisgICAgICAg
IChXVFI6OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KTogIE5ldyBjb25zdHJ1Y3Rv
ciBwYXJhbWV0ZXIuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJW
aWV3TWFjLm1tOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tWaWV3IGluaXRXaXRoRnJhbWU6Y29u
dGV4dFJlZjpwYWdlR3JvdXBSZWY6dXNlVGlsZWREcmF3aW5nOl0pOgorICAgICAgICAoLVtUZXN0
UnVubmVyV0tWaWV3IF9zaG91bGRVc2VUaWxlZERyYXdpbmdBcmVhXSk6IFN1YmNsYXNzIHRoZSBX
S1ZpZXcgc28gd2UgY2FuIHJldHVybgorICAgICAgICBhIGN1c3RvbSB2YWx1ZSBmcm9tIHRoaXMg
bWV0aG9kLgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyk6
CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6dmlld1N1cHBvcnRzT3B0aW9ucyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHA6CisgICAg
ICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KTogTmV3IGNvbnN0cnVj
dG9yIHBhcmFtZXRlci4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdl
YlZpZXdXaW4uY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2Vi
Vmlldyk6IE5ldyBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIuCisKIDIwMTItMTAtMjIgIEFsbGFuIFNh
bmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgSSBub3cg
b25seSB3YXRjaCBTZWxlY3RvcnMgaW5zdGVhZCBvZiBhbGwgb2YgQ1NTLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggMTM4NTllMTQzZTJmNzhkMmM4YjM5ZWI0
ZjExNmFhOTk1ZmYyYTgzNS4uNjBkMmZjMWQ1MzEzZWQyYTNkMTYwMDA0OTliZTEwODg2ZWNhNGIy
OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCkBAIC02NCw3ICs2
NCw3IEBAIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgewogcHVibGlj
OgotICAgIFBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmKTsKKyAg
ICBQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiwgV0tEaWN0aW9u
YXJ5UmVmIG9wdGlvbnMgPSAwKTsKICAgICB+UGxhdGZvcm1XZWJWaWV3KCk7CiAKICAgICBXS1Bh
Z2VSZWYgcGFnZSgpOwpAQCAtODgsNyArODgsMTMgQEAgcHVibGljOgogICAgIHZvaWQgbWFrZVdl
YlZpZXdGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgc2V0V2luZG93SXNLZXkoYm9vbCBpc0tl
eSkgeyBtX3dpbmRvd0lzS2V5ID0gaXNLZXk7IH0KICAgICBib29sIHdpbmRvd0lzS2V5KCkgY29u
c3QgeyByZXR1cm4gbV93aW5kb3dJc0tleTsgfQotICAgIAorCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGJvb2wgdmlld1N1cHBvcnRzT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYpIGNvbnN0OworI2Vs
c2UKKyAgICBib29sIHZpZXdTdXBwb3J0c09wdGlvbnMoV0tEaWN0aW9uYXJ5UmVmKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisjZW5kaWYKKwogICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IHdp
bmRvd1NuYXBzaG90SW1hZ2UoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZTllZjA0NzFkNDcyOTI0NGFjYjFmOTFlZGQwNDNiYTI5
NTJjNjM0Ny4uMDQ3ZjVhMWJhZTA2NjNjMjdhZTgwZWIwYmNmZTg1ZWY5Yjk0NzJiOSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTM0Myw4ICszNDMsMTIg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciog
YXJndltdKQogICAgIGlmICh0ZXN0UGx1Z2luRGlyZWN0b3J5KCkpCiAgICAgICAgIFdLQ29udGV4
dFNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgdGVzdFBsdWdp
bkRpcmVjdG9yeSgpKTsKIAotICAgIG1fbWFpbldlYlZpZXcgPSBhZG9wdFB0cihuZXcgUGxhdGZv
cm1XZWJWaWV3KG1fY29udGV4dC5nZXQoKSwgbV9wYWdlR3JvdXAuZ2V0KCkpKTsKKyAgICBjcmVh
dGVXZWJWaWV3V2l0aE9wdGlvbnMoMCk7Cit9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0
ZVdlYlZpZXdXaXRoT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykKK3sKKyAgICBtX21h
aW5XZWJWaWV3ID0gYWRvcHRQdHIobmV3IFBsYXRmb3JtV2ViVmlldyhtX2NvbnRleHQuZ2V0KCks
IG1fcGFnZUdyb3VwLmdldCgpLCBvcHRpb25zKSk7CiAgICAgV0tQYWdlVUlDbGllbnQgcGFnZVVJ
Q2xpZW50ID0gewogICAgICAgICBrV0tQYWdlVUlDbGllbnRDdXJyZW50VmVyc2lvbiwKICAgICAg
ICAgbV9tYWluV2ViVmlldy5nZXQoKSwKQEAgLTQ0Niw2ICs0NTAsMjEgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgIFdL
UGFnZVNldFBhZ2VQb2xpY3lDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZVBvbGlj
eUNsaWVudCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmVuc3VyZVZpZXdTdXBwb3J0c09w
dGlvbnMoV0tEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpCit7CisgICAgaWYgKG1fbWFpbldlYlZpZXcg
JiYgIW1fbWFpbldlYlZpZXctPnZpZXdTdXBwb3J0c09wdGlvbnMob3B0aW9ucykpIHsKKyAgICAg
ICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgMCk7CisgICAg
ICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAwKTsK
KyAgICAgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChtX21haW5XZWJWaWV3LT5wYWdlKCks
IDApOworICAgICAgICBXS1BhZ2VDbG9zZShtX21haW5XZWJWaWV3LT5wYWdlKCkpOworICAgICAg
ICAKKyAgICAgICAgbV9tYWluV2ViVmlldyA9IG51bGxwdHI7CisKKyAgICAgICAgY3JlYXRlV2Vi
Vmlld1dpdGhPcHRpb25zKG9wdGlvbnMpOworICAgICAgICByZXNldFN0YXRlVG9Db25zaXN0ZW50
VmFsdWVzKCk7CisgICAgfQorfQorCiBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKCkKIHsKICAgICBtX3N0YXRlID0gUmVzZXR0aW5nOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDcwODFhY2RhYTRhMGRhZDkwMzM5NTli
OGQxMmFiOTcxZWYyM2I5N2MuLjZhOTk0YTRkYjBlM2FhYTI4YjA5Y2YwZTQyYjQ5OGViOWE3NGE4
YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTU3LDYgKzU3
LDggQEAgcHVibGljOgogICAgIFBsYXRmb3JtV2ViVmlldyogbWFpbldlYlZpZXcoKSB7IHJldHVy
biBtX21haW5XZWJWaWV3LmdldCgpOyB9CiAgICAgV0tDb250ZXh0UmVmIGNvbnRleHQoKSB7IHJl
dHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KIAorICAgIHZvaWQgZW5zdXJlVmlld1N1cHBvcnRzT3B0
aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucyk7CisgICAgCiAgICAgLy8gUnVucyB0aGUgcnVu
IGxvb3AgdW50aWwgYGRvbmVgIGlzIHRydWUgb3IgdGhlIHRpbWVvdXQgZWxhcHNlcy4KICAgICBl
bnVtIFRpbWVvdXREdXJhdGlvbiB7IFNob3J0VGltZW91dCwgTG9uZ1RpbWVvdXQsIE5vVGltZW91
dCB9OwogICAgIGJvb2wgdXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKSB7IHJldHVybiBtX3Vz
ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyOyB9CkBAIC04Myw2ICs4NSw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3Zb
XSk7CisgICAgdm9pZCBjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoV0tEaWN0aW9uYXJ5UmVmKTsK
ICAgICB2b2lkIHJ1bigpOwogCiAgICAgdm9pZCBydW5UZXN0aW5nU2VydmVyTG9vcCgpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBmZDk0MjMyMjBjNDIx
NjU5ZTRmOTU3MTY0YTYzMzEzM2VmYzIzYTM2Li4wNWRmOTNlNGJhZGQ0YjM1YWE1YTRmZGNiYTUy
NzhiYjlmZThjNGY2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtMTQzLDkgKzE0MywyOSBAQCBzdGF0aWMgYm9vbCBzaG91bGRPcGVuV2ViSW5zcGVjdG9y
KGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKIH0KICNlbmRpZgogCitzdGF0aWMgYm9vbCBzaG91bGRV
c2VUaWxlZERyYXdpbmcoY29uc3QgY2hhciogcGF0aE9yVVJMKQoreworICAgIHJldHVybiBzdHJz
dHIocGF0aE9yVVJMLCAidGlsZWQtZHJhd2luZy8iKSB8fCBzdHJzdHIocGF0aE9yVVJMLCAidGls
ZWQtZHJhd2luZ1xcIik7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZVRpbGVkRHJhd2luZ0ZvckN1
cnJlbnRUZXN0KGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gdmlld09wdGlvbnMgPSBhZG9w
dFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHVzZVRpbGVkRHJhd2luZ0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlRpbGVkRHJhd2luZyIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+
IHVzZVRpbGVkRHJhd2luZ1ZhbHVlID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoc2hvdWxkVXNl
VGlsZWREcmF3aW5nKHBhdGhPclVSTCkpKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKHZpZXdP
cHRpb25zLmdldCgpLCB1c2VUaWxlZERyYXdpbmdLZXkuZ2V0KCksIHVzZVRpbGVkRHJhd2luZ1Zh
bHVlLmdldCgpKTsKKworICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5lbnN1cmVWaWV3U3Vw
cG9ydHNPcHRpb25zKHZpZXdPcHRpb25zLmdldCgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHBhdGhPclVSTCk7CisjZW5kaWYKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkK
IHsKICAgICBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KG1fcGF0aE9yVVJMLmNfc3RyKCkpOwor
ICAgIHVwZGF0ZVRpbGVkRHJhd2luZ0ZvckN1cnJlbnRUZXN0KG1fcGF0aE9yVVJMLmNfc3RyKCkp
OwogCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQmVnaW5UZXN0IikpOwogICAgIFdLUmV0YWlu
UHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IGJlZ2luVGVzdE1lc3NhZ2VCb2R5ID0gYWRvcHRX
SyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKaW5kZXggMDYxODdhMDY2ZDMwMmVjYmY4
YzJkZWMwM2JlYTVmMjY5ZjNkZGE2ZS4uZDY0YmU1ZWI4ZWViOTk0ODI1MTlhMThlMmQ4N2IyNTlm
ZmRlZDVmMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1X
ZWJWaWV3RWZsLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdl
YlZpZXdFZmwuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBFY29yZV9FdmFzKiBpbml0RWNv
cmVFdmFzKCkKICAgICByZXR1cm4gZWNvcmVFdmFzOwogfQogCi1QbGF0Zm9ybVdlYlZpZXc6OlBs
YXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwKQorUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tEaWN0aW9uYXJ5UmVmIC8qb3B0aW9ucyov
KQogewogICAgIG1fd2luZG93ID0gaW5pdEVjb3JlRXZhcygpOwogICAgIEV2YXMqIGV2YXMgPSBl
Y29yZV9ldmFzX2dldChtX3dpbmRvdyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcAppbmRleCBmMTYxNWQ0YWMzNWQ3YzdlZTAwMTBiMzBi
ZTI3YjQ1YWY5YzAzOTAwLi5iYmVmMDRlYWQ2OTljZWM3ZjJlZjFjYWQwMGU2NzJjOTEwYTk2YjFk
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdH
dGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0
ay5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLVBsYXRmb3JtV2Vi
Vmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJl
ZiBwYWdlR3JvdXApCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBXS0RpY3Rpb25hcnlSZWYgLypv
cHRpb25zKi8pCiAgICAgOiBtX3ZpZXcoV0tWaWV3Q3JlYXRlKGNvbnRleHQsIHBhZ2VHcm91cCkp
CiAgICAgLCBtX3dpbmRvdyhndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1BPUFVQKSkKICAgICAs
IG1fd2luZG93SXNLZXkodHJ1ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Bs
YXRmb3JtV2ViVmlld01hYy5tbQppbmRleCBkYjVkMTE5N2NlZWI4YjA0ODMwMzYyYzUwNzFhNmRl
OTJjNGEzOTJhLi40YzdiMTVmNThhYWJkYzY5ZWNmZmZhMTcyYjA2NDVjMWY5NmMzZmYzIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgogCiAjaW1wb3J0IDxXZWJL
aXQyL1dLSW1hZ2VDRy5oPgogI2ltcG9ydCA8V2ViS2l0Mi9XS1ZpZXdQcml2YXRlLmg+CkBAIC0z
Nyw2ICszOCwzMiBAQAogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgV1RSOjpQbGF0Zm9y
bVdlYlZpZXcqIHBsYXRmb3JtV2ViVmlldzsKIEBlbmQKIAorQGludGVyZmFjZSBUZXN0UnVubmVy
V0tWaWV3IDogV0tWaWV3IHsKKyAgICBCT09MIF91c2VUaWxlZERyYXdpbmc7Cit9CisKKy0gKGlk
KWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29u
dGV4dCBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cCB1c2VUaWxlZERyYXdp
bmc6KEJPT0wpdXNlVGlsZWREcmF3aW5nOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWdu
KSBCT09MIHVzZVRpbGVkRHJhd2luZzsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFRlc3RSdW5u
ZXJXS1ZpZXcKKworQHN5bnRoZXNpemUgdXNlVGlsZWREcmF3aW5nID0gX3VzZVRpbGVkRHJhd2lu
ZzsKKworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29u
dGV4dFJlZiljb250ZXh0IHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwIHVz
ZVRpbGVkRHJhd2luZzooQk9PTCl1c2VUaWxlZERyYXdpbmcKK3sKKyAgICBfdXNlVGlsZWREcmF3
aW5nID0gdXNlVGlsZWREcmF3aW5nOworICAgIHJldHVybiBbc3VwZXIgaW5pdFdpdGhGcmFtZTpm
cmFtZSBjb250ZXh0UmVmOmNvbnRleHQgcGFnZUdyb3VwUmVmOnBhZ2VHcm91cF07Cit9CisKKy0g
KEJPT0wpX3Nob3VsZFVzZVRpbGVkRHJhd2luZ0FyZWEKK3sKKyAgICByZXR1cm4gX3VzZVRpbGVk
RHJhd2luZzsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViS2l0VGVzdFJ1bm5lcldp
bmRvdwogQHN5bnRoZXNpemUgcGxhdGZvcm1XZWJWaWV3ID0gX3BsYXRmb3JtV2ViVmlldzsKIApA
QCAtNzgsMTEgKzEwNSwxNCBAQAogCiBuYW1lc3BhY2UgV1RSIHsKIAotUGxhdGZvcm1XZWJWaWV3
OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVm
IHBhZ2VHcm91cFJlZikKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4
dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLRGljdGlvbmFy
eVJlZiBvcHRpb25zKQogICAgIDogbV93aW5kb3dJc0tleSh0cnVlKQogeworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB1c2VUaWxlZERyYXdpbmdLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlRpbGVkRHJhd2luZyIpKTsKKyAgICBib29sIHVzZVRpbGVkRHJh
d2luZyA9IG9wdGlvbnMgPyBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5S
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkob3B0aW9ucywgdXNlVGlsZWREcmF3aW5nS2V5
LmdldCgpKSkpIDogZmFsc2U7CisKICAgICBOU1JlY3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApOwotICAgIG1fdmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJl
Y3QgY29udGV4dFJlZjpjb250ZXh0UmVmIHBhZ2VHcm91cFJlZjpwYWdlR3JvdXBSZWZdOworICAg
IG1fdmlldyA9IFtbVGVzdFJ1bm5lcldLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0IGNv
bnRleHRSZWY6Y29udGV4dFJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwUmVmIHVzZVRpbGVkRHJh
d2luZzp1c2VUaWxlZERyYXdpbmddOwogCiAgICAgTlNSZWN0IHdpbmRvd1JlY3QgPSBOU09mZnNl
dFJlY3QocmVjdCwgLTEwMDAwLCBbKE5TU2NyZWVuICopW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmpl
Y3RBdEluZGV4OjBdIGZyYW1lXS5zaXplLmhlaWdodCAtIHJlY3Quc2l6ZS5oZWlnaHQgKyAxMDAw
MCk7CiAgICAgbV93aW5kb3cgPSBbW1dlYktpdFRlc3RSdW5uZXJXaW5kb3cgYWxsb2NdIGluaXRX
aXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFz
ayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKQEAgLTE2OCw0ICsx
OTgsMTIgQEAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dT
bmFwc2hvdEltYWdlKCkKICAgICByZXR1cm4gYWRvcHRXSyhXS0ltYWdlQ3JlYXRlRnJvbUNHSW1h
Z2Uod2luZG93U25hcHNob3RJbWFnZS5nZXQoKSwgMCkpOwogfQogCitib29sIFBsYXRmb3JtV2Vi
Vmlldzo6dmlld1N1cHBvcnRzT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykgY29uc3QK
K3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXNlVGlsZWREcmF3aW5nS2V5KEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUaWxlZERyYXdpbmciKSk7CisgICAg
Ym9vbCB1c2VUaWxlZERyYXdpbmcgPSBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jv
b2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkob3B0aW9ucywgdXNlVGlsZWREcmF3
aW5nS2V5LmdldCgpKSkpOworCisgICAgcmV0dXJuIHVzZVRpbGVkRHJhd2luZyA9PSBbKFRlc3RS
dW5uZXJXS1ZpZXcgKiltX3ZpZXcgdXNlVGlsZWREcmF3aW5nXTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2Vi
Vmlld1F0LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQu
Y3BwCmluZGV4IDAwMTc3ZGI4MWI1MGYxNjY0MDIyOGVhZjEzNDVjYWZhOWU1ODYzZGUuLjU4YzA2
Y2M3ZTUzYmNhNWUyYzdjYzIxNjdiMTU1NzBiYWRlNjI0NmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHBy
aXZhdGU6CiAgICAgUVF1aWNrV2ViVmlldyogbV92aWV3OwogfTsKIAotUGxhdGZvcm1XZWJWaWV3
OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVm
IHBhZ2VHcm91cFJlZikKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4
dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLRGljdGlvbmFy
eVJlZiAvKm9wdGlvbnMqLykKICAgICA6IG1fdmlldyhuZXcgUVF1aWNrV2ViVmlldyhjb250ZXh0
UmVmLCBwYWdlR3JvdXBSZWYpKQogICAgICwgbV93aW5kb3cobmV3IFdyYXBwZXJXaW5kb3cobV92
aWV3KSkKICAgICAsIG1fd2luZG93SXNLZXkodHJ1ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCmluZGV4IDJmYmNlZjkyMjlhMGY2N2Y2
OTE0ZDI1ZjFhZjlmNjU1MmMzMDk3MWIuLjkxYTAzZDJhMzhiYTAwNDNhM2FmODNlOWZmZjQzMzdh
M2U0MDk1YjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3Jt
V2ViVmlld1dpbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1X
ZWJWaWV3V2luLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3RlcldpbmRv
d0NsYXNzKCkKICAgICBSZWdpc3RlckNsYXNzRXhXKCZ3bmRDbGFzcyk7CiB9CiAKLVBsYXRmb3Jt
V2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VH
cm91cFJlZiBwYWdlR3JvdXBSZWYpCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS0Rp
Y3Rpb25hcnlSZWYgLypvcHRpb25zKi8pCiAgICAgOiBtX3dpbmRvd0lzS2V5KHRydWUpCiB7CiAg
ICAgcmVnaXN0ZXJXaW5kb3dDbGFzcygpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNhMjM4NjEyZjE5ODJiMGUyNDZhMzY4
NmQxNjY1ZjYwMDNlOTg4YjkuLjgyMjExOTRhZDNlMTBkNTMwMWM1ODI2ZmNmNTA4M2FlNTVmZjgy
YjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0yMyAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0ZXN0cyB0byBydW4gd2l0aCBh
IHRpbGUgY2FjaGUsIGFuZCBvcHRpb25hbGx5IGR1bXAgdGhlIHRpbGUgY2FjaGUgdmlhIGxheWVy
VHJlZUFzVGV4dCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDAxNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBIG5ldyB0ZXN0IHRoYXQgZHVtcHMgdGlsZSBjYWNoZSBkYXRhIGZvciBhIGxhcmdlIHBh
Z2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy91c2UtdGlsZWQtZHJh
d2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy90aWxlZC1k
cmF3aW5nL3VzZS10aWxlZC1kcmF3aW5nLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEwLTIyICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFByZXBhcmUgbWFwcGluZ3MgdG8gbW92aW5nIHVpU291cmNlQ29kZXMgY3JlYXRpb24gb3V0
IG9mIHRoZW0gdG8gd29ya3NwYWNlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL3RpbGVkLWRyYXdpbmcvdXNlLXRpbGVkLWRyYXdpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvdXNlLXRpbGVkLWRyYXdpbmctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU0NzZlOGZhMGZiMDVkMzJhYjEwZDBhZTZmZDYxZjRhOGY1ZGQ2
NmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJh
d2luZy91c2UtdGlsZWQtZHJhd2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorKEdy
YXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyAxMjA4LjAwIDIwMjEuMDApCisgICh2aXNpYmxlIHJlY3Qg
MC4wMCwgMC4wMCA3ODUuMDAgeCA1ODUuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNz
TGF5ZXIKKyAgICAgIChib3VuZHMgMTIwOC4wMCAyMDIxLjAwKQorICAgICAgKGRyYXdzQ29udGVu
dCAxKQorICAgICAgKGJhY2tncm91bmRDb2xvciAjRkZGRkZGKQorICAgICAgKHZpc2libGUgcmVj
dCAwLjAwLCAwLjAwIDc4NS4wMCB4IDU4NS4wMCkKKyAgICAgICh0aWxlIGNhY2hlIGNvdmVyYWdl
IDAsIDAgMTIwOCB4IDE1MzYpCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NM
YXllcgorICAgICAgICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgMC4wMCAwLjAwIHggMC4wMCkKKyAg
ICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy91c2UtdGlsZWQtZHJhd2luZy5odG1sIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvdXNlLXRpbGVkLWRyYXdpbmcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iZjkyZTFmYWJiOTdkMDczZDU4YThmMTBhZmMwYWRlMWRlMDQyNDZjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcv
dXNlLXRpbGVkLWRyYXdpbmcuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4K
KworPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgeworICAgICAgICAg
ICAgd2lkdGg6IDEyMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMjAwMHB4OworICAgICAgICB9
CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBmdW5j
dGlvbiBkb1Rlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5p
bm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50LAorICAgICAgICAg
ICAgICAgICAgICBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19WSVNJQkxFX1JFQ1RTIHwg
aW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfUEFHRV9USUxFX0NBQ0hFKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcs
IGRvVGVzdCwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlk
PSJsYXllcnMiPkxheWVyIHRyZWUgZ29lcyBoZXJlPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170240</attachid>
            <date>2012-10-23 14:47:33 -0700</date>
            <delta_ts>2012-10-23 15:05:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100159-20121023144609.patch</filename>
            <type>text/plain</type>
            <size>28724</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzZhYThjNDEwM2JkZDc5
MDkwZjA4NzM4NDgxMjU3Mjg0NDU4ZDA5Mi4uMmUzOWNlZjM4MDM2YjFhOGQ4YjBkN2Q5MWM3YzA4
MjU1MTcxYzQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEwLTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHRlc3Rz
IHRvIHJ1biB3aXRoIGEgdGlsZSBjYWNoZSwgYW5kIG9wdGlvbmFsbHkgZHVtcCB0aGUgdGlsZSBj
YWNoZSB2aWEgbGF5ZXJUcmVlQXNUZXh0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDE1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIExBWUVSX1RSRUVfSU5DTFVERVNfUEFHRV9USUxFX0NB
Q0hFIGZsYWcgZm9yIGxheWVyVHJlZUFzVGV4dCgpLCBhbmQgcGx1bWIgaXQKKyAgICAgICAgdGhy
b3VnaCB0byBHcmFwaGljc0xheWVyQ0EsIHdoaWNoIGR1bXBzIHRoZSBUaWxlZEJhY2tpbmcgdGls
ZSBjb3ZlcmFnZSByZWN0LgorCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL21hYy90aWxlZC1kcmF3
aW5nL3VzZS10aWxlZC1kcmF3aW5nLmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKHNo
b3dHcmFwaGljc0xheWVyVHJlZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNBOjp0aWxlZEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoR3JhcGhpY3NM
YXllckNBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLmg6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6OnRpbGVDb3ZlcmFnZVJlY3QpOgorICAgICAg
ICAoVGlsZUNhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNh
Y2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNhY2hlOjpjb21wdXRlVGlsZUNvdmVyYWdl
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxlcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyVHJlZUFzVGV4dCk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjps
YXllclRyZWVBc1RleHQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTEwLTIyICBWc2V2b2xvZCBWbGFzb3Yg
IDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFByZXBhcmUg
bWFwcGluZ3MgdG8gbW92aW5nIHVpU291cmNlQ29kZXMgY3JlYXRpb24gb3V0IG9mIHRoZW0gdG8g
d29ya3NwYWNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDIzYTU5ZWJkY2UyODEzNDQwNGNlZDJjYzEz
ZDBlMzY3MDcyODYwMzUuLjk1MzdmNWQxMTIzYzU2OThhYTU1NDVjZTE1YjMyZTE3MzhiNTQ4YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKQEAgLTc4LDcgKzc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgZW51bSB7CiAgICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZURlYnVnSW5mbyA9IDEg
PDwgMCwKLSAgICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVmlzaWJsZVJlY3RzID0gMSA8PCAy
CisgICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZVZpc2libGVSZWN0cyA9IDEgPDwgMSwKKyAg
ICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlUGFnZVRpbGVDYWNoZSA9IDEgPDwgMgogICAgIH07
CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVGbGFnczsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCAzYTMyYjUx
NDViOTI3ZWRhZWQ0NWY5MTllNWQ2MDk1MTUxYzQ0M2UzLi5iZWRkZTUxMWQ2OTg2NTliNDgyYmE0
ZWU5Yjc3Nzc0NzY4NjMzY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQgc2hvd0dy
YXBoaWNzTGF5ZXJUcmVlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAg
IGlmICghbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBvdXRwdXQgPSBsYXll
ci0+bGF5ZXJUcmVlQXNUZXh0KExheWVyVHJlZUFzVGV4dERlYnVnIHwgTGF5ZXJUcmVlQXNUZXh0
SW5jbHVkZVZpc2libGVSZWN0cyk7CisgICAgU3RyaW5nIG91dHB1dCA9IGxheWVyLT5sYXllclRy
ZWVBc1RleHQoTGF5ZXJUcmVlQXNUZXh0RGVidWcgfCBMYXllclRyZWVBc1RleHRJbmNsdWRlVmlz
aWJsZVJlY3RzIHwgTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVBhZ2VUaWxlQ2FjaGUpOwogICAgIGZw
cmludGYoc3RkZXJyLCAiJXNcbiIsIG91dHB1dC51dGY4KCkuZGF0YSgpKTsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmlu
ZGV4IGU2N2ExN2VhZTA0OThiYjI1YmFjMDE4NmFmMjk4ZGYyZjY5MjI3OWEuLjBiNzQxNTlmYmQw
NDA3MDlhNzBiNzVlZjM2ZGM0NjE2ZmNiODNiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBM
YXllclRyZWVBc1RleHRCZWhhdmlvckZsYWdzIHsKICAgICBMYXllclRyZWVBc1RleHRCZWhhdmlv
ck5vcm1hbCA9IDAsCiAgICAgTGF5ZXJUcmVlQXNUZXh0RGVidWcgPSAxIDw8IDAsIC8vIER1bXAg
ZXh0cmEgZGVidWdnaW5nIGluZm8gbGlrZSBsYXllciBhZGRyZXNzZXMuCiAgICAgTGF5ZXJUcmVl
QXNUZXh0SW5jbHVkZVZpc2libGVSZWN0cyA9IDEgPDwgMSwKKyAgICBMYXllclRyZWVBc1RleHRJ
bmNsdWRlUGFnZVRpbGVDYWNoZSA9IDEgPDwgMgogfTsKIHR5cGVkZWYgdW5zaWduZWQgTGF5ZXJU
cmVlQXNUZXh0QmVoYXZpb3I7CiAKQEAgLTQwMSw3ICs0MDIsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHVzaW5nVGlsZWRMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNpbmdUaWxlZExheWVyOyB9
CiAKLSAgICB2aXJ0dWFsIFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBjb25zdCB7IHJldHVy
biAwOyB9CiAKICNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShF
RkwpCiAgICAgLy8gVGhpcyBhbGxvd3Mgc2V2ZXJhbCBhbHRlcm5hdGl2ZSBHcmFwaGljc0xheWVy
IGltcGxlbWVudGF0aW9ucyBpbiB0aGUgc2FtZSBwb3J0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaAppbmRleCA0MTA4ZjEyMmJlNDBjOTEyMDlj
NWY1MGRhNzllZWNkYWRjNGU4ODZlLi44YzgxY2M5ZjkyMjdlZjA5OWVhZGE0YzE5OWM1YjY0Mzc3
YWUwZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxl
ZEJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJh
Y2tpbmcuaApAQCAtNTQsNiArNTQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNl
dFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkgY29uc3QgPSAwOwor
ICAgIAorICAgIC8vIEV4cG9zZWQgZm9yIHRlc3RpbmcKKyAgICB2aXJ0dWFsIEludFJlY3QgdGls
ZUNvdmVyYWdlUmVjdCgpIGNvbnN0ID0gMDsKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKaW5kZXggYTc0YmIxY2QwZmQ1NTNjM2MxNTI5ODFlNzU5MWMwOWQyMzk3
NWIyYy4uZTZkMWJjYzk5NTg0NTUwNjkzZmJlY2UxYjMzZTlmMjc2MmRhMGExNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwCkBAIC05MTAsNyArOTEwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmZsdXNoQ29t
cG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIGNvbW1pdExheWVyQ2hhbmdlc0Fm
dGVyU3VibGF5ZXJzKCk7CiB9CiAKLVRpbGVkQmFja2luZyogR3JhcGhpY3NMYXllckNBOjp0aWxl
ZEJhY2tpbmcoKQorVGlsZWRCYWNraW5nKiBHcmFwaGljc0xheWVyQ0E6OnRpbGVkQmFja2luZygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbGF5ZXItPnRpbGVkQmFja2luZygpOwogfQpAQCAtMjUy
Miw2ICsyNTIyLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpkdW1wQWRkaXRpb25hbFByb3Bl
cnRpZXMoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgaW50IGluZGVuCiAgICAgICAgIHdyaXRlSW5k
ZW50KHRleHRTdHJlYW0sIGluZGVudCArIDEpOwogICAgICAgICB0ZXh0U3RyZWFtIDw8ICIodmlz
aWJsZSByZWN0ICIgPDwgbV92aXNpYmxlUmVjdC54KCkgPDwgIiwgIiA8PCBtX3Zpc2libGVSZWN0
LnkoKSA8PCAiICIgPDwgbV92aXNpYmxlUmVjdC53aWR0aCgpIDw8ICIgeCAiIDw8IG1fdmlzaWJs
ZVJlY3QuaGVpZ2h0KCkgPDwgIilcbiI7CiAgICAgfQorCisgICAgaWYgKG1faXNQYWdlVGlsZUNh
Y2hlTGF5ZXIgJiYgKGJlaGF2aW9yICYgTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVBhZ2VUaWxlQ2Fj
aGUpKSB7CisgICAgICAgIHdyaXRlSW5kZW50KHRleHRTdHJlYW0sIGluZGVudCArIDEpOworICAg
ICAgICBJbnRSZWN0IHRpbGVDb3ZlcmFnZVJlY3QgPSB0aWxlZEJhY2tpbmcoKS0+dGlsZUNvdmVy
YWdlUmVjdCgpOworICAgICAgICB0ZXh0U3RyZWFtIDw8ICIodGlsZSBjYWNoZSBjb3ZlcmFnZSAi
IDw8IHRpbGVDb3ZlcmFnZVJlY3QueCgpIDw8ICIsICIgPDwgdGlsZUNvdmVyYWdlUmVjdC55KCkg
PDwgIiAiIDw8IHRpbGVDb3ZlcmFnZVJlY3Qud2lkdGgoKSA8PCAiIHggIiA8PCB0aWxlQ292ZXJh
Z2VSZWN0LmhlaWdodCgpIDw8ICIpXG4iOworICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0xheWVy
Q0E6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5oCmluZGV4IGM2YjIxMGU1YjhiNTcxNmZjOThiYTdjYTI2YzFkNjgxOWRlNzIxYmUu
LjAwY2E2MmU3NTI1OTdjYzQzOGY5MTFmOGYxYzlhOTNkZGY4ODQ3YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBA
IC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0
aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKIAotICAgIHZpcnR1YWwgVGlsZWRCYWNraW5n
KiB0aWxlZEJhY2tpbmcoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFRpbGVkQmFja2luZyogdGls
ZWRCYWNraW5nKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBib29sIGFsbG93VGlsZWRMYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dUaWxlZExheWVyOyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dEFsbG93VGlsZWRMYXllcihib29sIGIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oCmluZGV4IDE3ZTk4ZWUzYzNlY2E4N2RlNjg4
OGMzY2IwYjA4ZmJlMTIwZDI4NzguLmEwM2Q2ZDhmODIwOGVjYjBhNThhOTM3YmQwOWQ5YjM1M2U1
M2IyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9UaWxlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvVGlsZUNhY2hlLmgKQEAgLTg5LDYgKzg5LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgZm9yY2VSZXBhaW50KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCBmbGFnKSBPVkVSUklERSB7IG1fc2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA9IGZsYWc7IH0KICAgICB2aXJ0dWFsIGJvb2wg
c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsgfQorCisgICAgdmlydHVh
bCBJbnRSZWN0IHRpbGVDb3ZlcmFnZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3RpbGVDb3ZlcmFn
ZVJlY3Q7IH0KICAgICAKICAgICBJbnRSZWN0IGJvdW5kcygpIGNvbnN0OwogCkBAIC05Niw3ICs5
OCw3IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCByZWN0Rm9yVGlsZUluZGV4KGNvbnN0IFRpbGVJ
bmRleCYpIGNvbnN0OwogICAgIHZvaWQgZ2V0VGlsZUluZGV4UmFuZ2VGb3JSZWN0KGNvbnN0IElu
dFJlY3QmLCBUaWxlSW5kZXgmIHRvcExlZnQsIFRpbGVJbmRleCYgYm90dG9tUmlnaHQpOwogCi0g
ICAgSW50UmVjdCB0aWxlQ292ZXJhZ2VSZWN0KCkgY29uc3Q7CisgICAgSW50UmVjdCBjb21wdXRl
VGlsZUNvdmVyYWdlUmVjdCgpIGNvbnN0OwogCiAgICAgdm9pZCBzY2hlZHVsZVRpbGVSZXZhbGlk
YXRpb24oZG91YmxlIGludGVydmFsKTsKICAgICB2b2lkIHRpbGVSZXZhbGlkYXRpb25UaW1lckZp
cmVkKFRpbWVyPFRpbGVDYWNoZT4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCmluZGV4IDYxOTI0NGRhOTYyYzI5ZTY5MDgy
OTZmZjEyZjAzODgyYmU3MTRiYjcuLjhhYWY4N2RiMGEyNzk1ZTA1MzY3NTc3MTFmMTJiMmE5ZDI5
OTAxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9UaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1RpbGVDYWNoZS5tbQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgVGlsZUNhY2hlOjpnZXRU
aWxlSW5kZXhSYW5nZUZvclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgVGlsZUluZGV4JiB0b3BM
ZWZ0CiAgICAgYm90dG9tUmlnaHQuc2V0WShtYXgoY2xhbXBlZFJlY3QubWF4WSgpIC8gbV90aWxl
U2l6ZS5oZWlnaHQoKSwgMCkpOwogfQogCi1JbnRSZWN0IFRpbGVDYWNoZTo6dGlsZUNvdmVyYWdl
UmVjdCgpIGNvbnN0CitJbnRSZWN0IFRpbGVDYWNoZTo6Y29tcHV0ZVRpbGVDb3ZlcmFnZVJlY3Qo
KSBjb25zdAogewogICAgIEludFJlY3QgdGlsZUNvdmVyYWdlUmVjdCA9IG1fdmlzaWJsZVJlY3Q7
CiAKQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0ZVRpbGVzKCkK
ICAgICBpZiAobV92aXNpYmxlUmVjdC5pc0VtcHR5KCkgfHwgYm91bmRzKCkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBJbnRSZWN0IHRpbGVDb3ZlcmFnZVJlY3QgPSB0aGlzLT50
aWxlQ292ZXJhZ2VSZWN0KCk7CisgICAgSW50UmVjdCB0aWxlQ292ZXJhZ2VSZWN0ID0gY29tcHV0
ZVRpbGVDb3ZlcmFnZVJlY3QoKTsKIAogICAgIFZlY3RvcjxUaWxlSW5kZXg+IHRpbGVzVG9SZW1v
dmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKaW5kZXggNTU2NjRjMjI4NDVmMGE1MmNmNmMzZDM4Zjc5NDA2MGZhMzYyMzI5NC4u
YTU5ZGU5YzVjOTJmNDg4NWY4YTg2MDJhNzkxOWU5MzA5ZGIzNWE4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTExMzcs
NyArMTEzNyw5IEBAIFN0cmluZyBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyVHJlZUFzVGV4
dChMYXllclRyZWVGbGFncyBmbGFncykKICAgICAgICAgbGF5ZXJUcmVlQmVoYXZpb3IgfD0gTGF5
ZXJUcmVlQXNUZXh0RGVidWc7CiAgICAgaWYgKGZsYWdzICYgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRl
VmlzaWJsZVJlY3RzKQogICAgICAgICBsYXllclRyZWVCZWhhdmlvciB8PSBMYXllclRyZWVBc1Rl
eHRJbmNsdWRlVmlzaWJsZVJlY3RzOwotICAgIAorICAgIGlmIChmbGFncyAmIExheWVyVHJlZUZs
YWdzSW5jbHVkZVBhZ2VUaWxlQ2FjaGUpCisgICAgICAgIGxheWVyVHJlZUJlaGF2aW9yIHw9IExh
eWVyVHJlZUFzVGV4dEluY2x1ZGVQYWdlVGlsZUNhY2hlOworCiAgICAgLy8gV2Ugc2tpcCBkdW1w
aW5nIHRoZSBzY3JvbGwgYW5kIGNsaXAgbGF5ZXJzIHRvIGtlZXAgbGF5ZXJUcmVlQXNUZXh0IG91
dHB1dAogICAgIC8vIHNpbWlsYXIgYmV0d2VlbiBwbGF0Zm9ybXMuCiAgICAgcmV0dXJuIG1fcm9v
dENvbnRlbnRMYXllci0+bGF5ZXJUcmVlQXNUZXh0KGxheWVyVHJlZUJlaGF2aW9yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjMjZkNmVhNGY5NzhhNzU0MjcwMmEwNmY1
YTRlNjM4MTI3YTM0NWRkLi4wMjYzZWNkZTBhYmEzNTNhNDgxMzg1MzRiYzJhM2JhM2M1MTIwMzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMjM3LDYgKzEyMzcsOCBA
QCBTdHJpbmcgSW50ZXJuYWxzOjpsYXllclRyZWVBc1RleHQoRG9jdW1lbnQqIGRvY3VtZW50LCB1
bnNpZ25lZCBmbGFncywgRXhjZXB0aW9uQwogICAgIExheWVyVHJlZUZsYWdzIGxheWVyVHJlZUZs
YWdzID0gMDsKICAgICBpZiAoZmxhZ3MgJiBMQVlFUl9UUkVFX0lOQ0xVREVTX1ZJU0lCTEVfUkVD
VFMpCiAgICAgICAgIGxheWVyVHJlZUZsYWdzIHw9IExheWVyVHJlZUZsYWdzSW5jbHVkZVZpc2li
bGVSZWN0czsKKyAgICBpZiAoZmxhZ3MgJiBMQVlFUl9UUkVFX0lOQ0xVREVTX1BBR0VfVElMRV9D
QUNIRSkKKyAgICAgICAgbGF5ZXJUcmVlRmxhZ3MgfD0gTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlUGFn
ZVRpbGVDYWNoZTsKIAogICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+bGF5ZXJUcmVlQXNU
ZXh0KGxheWVyVHJlZUZsYWdzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4
IGJiYzVjNWI3YjlkNTE5NTIzYThhYmU2ZWVlZDU5NWNhZDBiM2Y2ZTQuLjk3YzkwMWE2OTYwNDg3
MjAwZWM2OGFhYTUxYTNhODc0MWUzMTNmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aApAQCAtMTg4LDcgKzE4OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWVBbmltYXRpb25z
KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAgICAgZW51bSB7Ci0gICAgICAg
IExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyA9IDEgLy8gVmFsdWVzIG5lZWQgdG8g
a2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4KKyAgICAgICAgLy8gVmFsdWVzIG5lZWQg
dG8gYmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4KKyAgICAgICAgTEFZRVJfVFJF
RV9JTkNMVURFU19WSVNJQkxFX1JFQ1RTID0gMSwKKyAgICAgICAgTEFZRVJfVFJFRV9JTkNMVURF
U19QQUdFX1RJTEVfQ0FDSEUgPSAyCisgICAgICAgIAogICAgIH07CiAgICAgU3RyaW5nIGxheWVy
VHJlZUFzVGV4dChEb2N1bWVudCosIHVuc2lnbmVkIGZsYWdzLCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CiAgICAgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA3N2JhNjYwMTAy
MWQ1OGU1YjdmMGIyMDA0ZDIxYmI0MWJlOGQ0MWIwLi41Mzk1ZGYzNTIyMzc5OTRmNTZmMTk2NTdh
MTcyYjZmMzUyYWNmZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0x
NTgsNiArMTU4LDcgQEAKIAogICAgIC8vIEZsYWdzIGZvciBsYXllclRyZWVBc1RleHQuCiAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19WSVNJQkxFX1JFQ1RTID0g
MTsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMQVlFUl9UUkVFX0lOQ0xVREVTX1BBR0VfVElM
RV9DQUNIRSA9IDI7CiAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChpbiBEb2N1bWVudCBk
b2N1bWVudCwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBmbGFncykgcmFpc2VzIChET01F
eGNlcHRpb24pOwogCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKGlu
IERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjM4ZWQ1YzVkYmNlZmM4YzA2
MzZhYzRlNmNiZDBkOWJkN2U5MTU4Mi4uOTEwYmFlZWVhOTlmYzVkMmI4ZWVkZjVlOTQ3NjdkM2Iz
ZDk0MzY2NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEwLTIzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHRlc3RzIHRvIHJ1biB3aXRoIGEgdGlsZSBj
YWNoZSwgYW5kIG9wdGlvbmFsbHkgZHVtcCB0aGUgdGlsZSBjYWNoZSB2aWEgbGF5ZXJUcmVlQXNU
ZXh0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MDE1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
a2UgV2ViS2l0VGVzdFJ1bm5lciB1c2UgYSBXS1ZpZXcgd2l0aCBhIHRpbGUgY2FjaGUgZm9yIHRl
c3RzIHJ1biBpbiBhIGRpcmVjdG9yeQorICAgICAgICB3aG9zZSBwYXRoIGluY2x1ZGVzICJ0aWxl
ZC1kcmF3aW5nIi4gSXQgZG9lcyB0aGlzIGJ5IHBhc3NpbmcgYXJvdW5kIGEgV0tEaWN0aW9uYXJ5
IAorICAgICAgICBvZiBvcHRpb25zLCBhbmQgaWYgdGhlIGN1cnJlbnQgUGxhdGZvcm1XZWJWaWV3
IGRvZXNuJ3Qgc3VwcG9ydCB0aG9zZSBvcHRpb25zLCBpdCB3aWxsCisgICAgICAgIGNyZWF0ZSBh
IG5ldyBvbmUuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5o
OgorICAgICAgICAoUGxhdGZvcm1XZWJWaWV3KTogQWRkIGEgV0tEaWN0aW9uYXJ5UmVmIG9wdGlv
bnMgZGljdGlvbmFyeSBhcmd1bWVudC4KKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp2
aWV3U3VwcG9ydHNPcHRpb25zKTogUmV0dXJucyB0cnVlIGlmIHRoZSB2aWV3CisgICAgICAgIHN1
cHBvcnRzIHRoZSBvcHRpb25zIGluIHRoZSBXS0RpY3Rpb25hcnlSZWYuCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjppbml0aWFsaXplKTogQ2FsbCBjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoKSB3aXRo
CisgICAgICAgIG5vIG9wdGlvbnMgaW4gdGhlIG5vcm1hbCBjYXNlLgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKTogTW92ZWQgY29kZSBpbnRv
IHRoaXMgZnVjdGlvbgorICAgICAgICBzbyB3ZSBjYW4gY2FsbCBpdCBpbiB0d28gcGxhY2VzLgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9ucyk6
IElmIHRoZSBjdXJyZW50IHZpZXcKKyAgICAgICAgZG9lc24ndCBzdXBwb3J0IHRoZSBnaXZlbiBv
cHRpb25zLCB0aHJvdyBpdCBhd2F5IGFuZCBtYWtlYSAgbmV3IG9uZSB0aGF0IGRvZXMuCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpzaG91bGRVc2VU
aWxlZERyYXdpbmcpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5zICJ0aWxl
ZC1kcmF3aW5nIi4KKyAgICAgICAgKFdUUjo6dXBkYXRlVGlsZWREcmF3aW5nRm9yQ3VycmVudFRl
c3QpOiBUZWxsIHRoZSBUZXN0Q29udHJvbGxlciB0byBjaGVjayB3aGV0aGVyCisgICAgICAgIHRo
ZSB2aWV3IHN1cHBvcnRzIHRoZSBnaXZlbiBvcHRpb25zLiBOby1vcCBmb3Igbm9uLU1hYyBwbGF0
Zm9ybXMuCisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjppbnZva2UpOiBDYWxsIHVwZGF0
ZVRpbGVkRHJhd2luZ0ZvckN1cnJlbnRUZXN0KCkuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJW
aWV3OjpQbGF0Zm9ybVdlYlZpZXcpOiBOZXcgY29uc3RydWN0b3IgcGFyYW1ldGVyLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHA6CisgICAgICAg
IChXVFI6OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KTogIE5ldyBjb25zdHJ1Y3Rv
ciBwYXJhbWV0ZXIuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJW
aWV3TWFjLm1tOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tWaWV3IGluaXRXaXRoRnJhbWU6Y29u
dGV4dFJlZjpwYWdlR3JvdXBSZWY6dXNlVGlsZWREcmF3aW5nOl0pOgorICAgICAgICAoLVtUZXN0
UnVubmVyV0tWaWV3IF9zaG91bGRVc2VUaWxlZERyYXdpbmdBcmVhXSk6IFN1YmNsYXNzIHRoZSBX
S1ZpZXcgc28gd2UgY2FuIHJldHVybgorICAgICAgICBhIGN1c3RvbSB2YWx1ZSBmcm9tIHRoaXMg
bWV0aG9kLgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyk6
CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6dmlld1N1cHBvcnRzT3B0aW9ucyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHA6CisgICAg
ICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KTogTmV3IGNvbnN0cnVj
dG9yIHBhcmFtZXRlci4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdl
YlZpZXdXaW4uY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2Vi
Vmlldyk6IE5ldyBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIuCisKIDIwMTItMTAtMjIgIEFsbGFuIFNh
bmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgSSBub3cg
b25seSB3YXRjaCBTZWxlY3RvcnMgaW5zdGVhZCBvZiBhbGwgb2YgQ1NTLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggMTM4NTllMTQzZTJmNzhkMmM4YjM5ZWI0
ZjExNmFhOTk1ZmYyYTgzNS4uNjBkMmZjMWQ1MzEzZWQyYTNkMTYwMDA0OTliZTEwODg2ZWNhNGIy
OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCkBAIC02NCw3ICs2
NCw3IEBAIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgewogcHVibGlj
OgotICAgIFBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmKTsKKyAg
ICBQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiwgV0tEaWN0aW9u
YXJ5UmVmIG9wdGlvbnMgPSAwKTsKICAgICB+UGxhdGZvcm1XZWJWaWV3KCk7CiAKICAgICBXS1Bh
Z2VSZWYgcGFnZSgpOwpAQCAtODgsNyArODgsMTMgQEAgcHVibGljOgogICAgIHZvaWQgbWFrZVdl
YlZpZXdGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgc2V0V2luZG93SXNLZXkoYm9vbCBpc0tl
eSkgeyBtX3dpbmRvd0lzS2V5ID0gaXNLZXk7IH0KICAgICBib29sIHdpbmRvd0lzS2V5KCkgY29u
c3QgeyByZXR1cm4gbV93aW5kb3dJc0tleTsgfQotICAgIAorCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGJvb2wgdmlld1N1cHBvcnRzT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYpIGNvbnN0OworI2Vs
c2UKKyAgICBib29sIHZpZXdTdXBwb3J0c09wdGlvbnMoV0tEaWN0aW9uYXJ5UmVmKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisjZW5kaWYKKwogICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IHdp
bmRvd1NuYXBzaG90SW1hZ2UoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZTllZjA0NzFkNDcyOTI0NGFjYjFmOTFlZGQwNDNiYTI5
NTJjNjM0Ny4uMDQ3ZjVhMWJhZTA2NjNjMjdhZTgwZWIwYmNmZTg1ZWY5Yjk0NzJiOSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTM0Myw4ICszNDMsMTIg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciog
YXJndltdKQogICAgIGlmICh0ZXN0UGx1Z2luRGlyZWN0b3J5KCkpCiAgICAgICAgIFdLQ29udGV4
dFNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgdGVzdFBsdWdp
bkRpcmVjdG9yeSgpKTsKIAotICAgIG1fbWFpbldlYlZpZXcgPSBhZG9wdFB0cihuZXcgUGxhdGZv
cm1XZWJWaWV3KG1fY29udGV4dC5nZXQoKSwgbV9wYWdlR3JvdXAuZ2V0KCkpKTsKKyAgICBjcmVh
dGVXZWJWaWV3V2l0aE9wdGlvbnMoMCk7Cit9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0
ZVdlYlZpZXdXaXRoT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykKK3sKKyAgICBtX21h
aW5XZWJWaWV3ID0gYWRvcHRQdHIobmV3IFBsYXRmb3JtV2ViVmlldyhtX2NvbnRleHQuZ2V0KCks
IG1fcGFnZUdyb3VwLmdldCgpLCBvcHRpb25zKSk7CiAgICAgV0tQYWdlVUlDbGllbnQgcGFnZVVJ
Q2xpZW50ID0gewogICAgICAgICBrV0tQYWdlVUlDbGllbnRDdXJyZW50VmVyc2lvbiwKICAgICAg
ICAgbV9tYWluV2ViVmlldy5nZXQoKSwKQEAgLTQ0Niw2ICs0NTAsMjEgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgIFdL
UGFnZVNldFBhZ2VQb2xpY3lDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZVBvbGlj
eUNsaWVudCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmVuc3VyZVZpZXdTdXBwb3J0c09w
dGlvbnMoV0tEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpCit7CisgICAgaWYgKG1fbWFpbldlYlZpZXcg
JiYgIW1fbWFpbldlYlZpZXctPnZpZXdTdXBwb3J0c09wdGlvbnMob3B0aW9ucykpIHsKKyAgICAg
ICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgMCk7CisgICAg
ICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAwKTsK
KyAgICAgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChtX21haW5XZWJWaWV3LT5wYWdlKCks
IDApOworICAgICAgICBXS1BhZ2VDbG9zZShtX21haW5XZWJWaWV3LT5wYWdlKCkpOworICAgICAg
ICAKKyAgICAgICAgbV9tYWluV2ViVmlldyA9IG51bGxwdHI7CisKKyAgICAgICAgY3JlYXRlV2Vi
Vmlld1dpdGhPcHRpb25zKG9wdGlvbnMpOworICAgICAgICByZXNldFN0YXRlVG9Db25zaXN0ZW50
VmFsdWVzKCk7CisgICAgfQorfQorCiBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKCkKIHsKICAgICBtX3N0YXRlID0gUmVzZXR0aW5nOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDcwODFhY2RhYTRhMGRhZDkwMzM5NTli
OGQxMmFiOTcxZWYyM2I5N2MuLjZhOTk0YTRkYjBlM2FhYTI4YjA5Y2YwZTQyYjQ5OGViOWE3NGE4
YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTU3LDYgKzU3
LDggQEAgcHVibGljOgogICAgIFBsYXRmb3JtV2ViVmlldyogbWFpbldlYlZpZXcoKSB7IHJldHVy
biBtX21haW5XZWJWaWV3LmdldCgpOyB9CiAgICAgV0tDb250ZXh0UmVmIGNvbnRleHQoKSB7IHJl
dHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KIAorICAgIHZvaWQgZW5zdXJlVmlld1N1cHBvcnRzT3B0
aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucyk7CisgICAgCiAgICAgLy8gUnVucyB0aGUgcnVu
IGxvb3AgdW50aWwgYGRvbmVgIGlzIHRydWUgb3IgdGhlIHRpbWVvdXQgZWxhcHNlcy4KICAgICBl
bnVtIFRpbWVvdXREdXJhdGlvbiB7IFNob3J0VGltZW91dCwgTG9uZ1RpbWVvdXQsIE5vVGltZW91
dCB9OwogICAgIGJvb2wgdXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKSB7IHJldHVybiBtX3Vz
ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyOyB9CkBAIC04Myw2ICs4NSw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3Zb
XSk7CisgICAgdm9pZCBjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoV0tEaWN0aW9uYXJ5UmVmKTsK
ICAgICB2b2lkIHJ1bigpOwogCiAgICAgdm9pZCBydW5UZXN0aW5nU2VydmVyTG9vcCgpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBmZDk0MjMyMjBjNDIx
NjU5ZTRmOTU3MTY0YTYzMzEzM2VmYzIzYTM2Li4wNWRmOTNlNGJhZGQ0YjM1YWE1YTRmZGNiYTUy
NzhiYjlmZThjNGY2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtMTQzLDkgKzE0MywyOSBAQCBzdGF0aWMgYm9vbCBzaG91bGRPcGVuV2ViSW5zcGVjdG9y
KGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKIH0KICNlbmRpZgogCitzdGF0aWMgYm9vbCBzaG91bGRV
c2VUaWxlZERyYXdpbmcoY29uc3QgY2hhciogcGF0aE9yVVJMKQoreworICAgIHJldHVybiBzdHJz
dHIocGF0aE9yVVJMLCAidGlsZWQtZHJhd2luZy8iKSB8fCBzdHJzdHIocGF0aE9yVVJMLCAidGls
ZWQtZHJhd2luZ1xcIik7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZVRpbGVkRHJhd2luZ0ZvckN1
cnJlbnRUZXN0KGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gdmlld09wdGlvbnMgPSBhZG9w
dFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHVzZVRpbGVkRHJhd2luZ0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlRpbGVkRHJhd2luZyIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+
IHVzZVRpbGVkRHJhd2luZ1ZhbHVlID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoc2hvdWxkVXNl
VGlsZWREcmF3aW5nKHBhdGhPclVSTCkpKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKHZpZXdP
cHRpb25zLmdldCgpLCB1c2VUaWxlZERyYXdpbmdLZXkuZ2V0KCksIHVzZVRpbGVkRHJhd2luZ1Zh
bHVlLmdldCgpKTsKKworICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5lbnN1cmVWaWV3U3Vw
cG9ydHNPcHRpb25zKHZpZXdPcHRpb25zLmdldCgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHBhdGhPclVSTCk7CisjZW5kaWYKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkK
IHsKICAgICBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KG1fcGF0aE9yVVJMLmNfc3RyKCkpOwor
ICAgIHVwZGF0ZVRpbGVkRHJhd2luZ0ZvckN1cnJlbnRUZXN0KG1fcGF0aE9yVVJMLmNfc3RyKCkp
OwogCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQmVnaW5UZXN0IikpOwogICAgIFdLUmV0YWlu
UHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IGJlZ2luVGVzdE1lc3NhZ2VCb2R5ID0gYWRvcHRX
SyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKaW5kZXggMDYxODdhMDY2ZDMwMmVjYmY4
YzJkZWMwM2JlYTVmMjY5ZjNkZGE2ZS4uZDY0YmU1ZWI4ZWViOTk0ODI1MTlhMThlMmQ4N2IyNTlm
ZmRlZDVmMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1X
ZWJWaWV3RWZsLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdl
YlZpZXdFZmwuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBFY29yZV9FdmFzKiBpbml0RWNv
cmVFdmFzKCkKICAgICByZXR1cm4gZWNvcmVFdmFzOwogfQogCi1QbGF0Zm9ybVdlYlZpZXc6OlBs
YXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwKQorUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tEaWN0aW9uYXJ5UmVmIC8qb3B0aW9ucyov
KQogewogICAgIG1fd2luZG93ID0gaW5pdEVjb3JlRXZhcygpOwogICAgIEV2YXMqIGV2YXMgPSBl
Y29yZV9ldmFzX2dldChtX3dpbmRvdyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcAppbmRleCBmMTYxNWQ0YWMzNWQ3YzdlZTAwMTBiMzBi
ZTI3YjQ1YWY5YzAzOTAwLi5iYmVmMDRlYWQ2OTljZWM3ZjJlZjFjYWQwMGU2NzJjOTEwYTk2YjFk
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdH
dGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0
ay5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLVBsYXRmb3JtV2Vi
Vmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJl
ZiBwYWdlR3JvdXApCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBXS0RpY3Rpb25hcnlSZWYgLypv
cHRpb25zKi8pCiAgICAgOiBtX3ZpZXcoV0tWaWV3Q3JlYXRlKGNvbnRleHQsIHBhZ2VHcm91cCkp
CiAgICAgLCBtX3dpbmRvdyhndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1BPUFVQKSkKICAgICAs
IG1fd2luZG93SXNLZXkodHJ1ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Bs
YXRmb3JtV2ViVmlld01hYy5tbQppbmRleCBkYjVkMTE5N2NlZWI4YjA0ODMwMzYyYzUwNzFhNmRl
OTJjNGEzOTJhLi40YzdiMTVmNThhYWJkYzY5ZWNmZmZhMTcyYjA2NDVjMWY5NmMzZmYzIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgogCiAjaW1wb3J0IDxXZWJL
aXQyL1dLSW1hZ2VDRy5oPgogI2ltcG9ydCA8V2ViS2l0Mi9XS1ZpZXdQcml2YXRlLmg+CkBAIC0z
Nyw2ICszOCwzMiBAQAogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgV1RSOjpQbGF0Zm9y
bVdlYlZpZXcqIHBsYXRmb3JtV2ViVmlldzsKIEBlbmQKIAorQGludGVyZmFjZSBUZXN0UnVubmVy
V0tWaWV3IDogV0tWaWV3IHsKKyAgICBCT09MIF91c2VUaWxlZERyYXdpbmc7Cit9CisKKy0gKGlk
KWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29u
dGV4dCBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cCB1c2VUaWxlZERyYXdp
bmc6KEJPT0wpdXNlVGlsZWREcmF3aW5nOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWdu
KSBCT09MIHVzZVRpbGVkRHJhd2luZzsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFRlc3RSdW5u
ZXJXS1ZpZXcKKworQHN5bnRoZXNpemUgdXNlVGlsZWREcmF3aW5nID0gX3VzZVRpbGVkRHJhd2lu
ZzsKKworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29u
dGV4dFJlZiljb250ZXh0IHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwIHVz
ZVRpbGVkRHJhd2luZzooQk9PTCl1c2VUaWxlZERyYXdpbmcKK3sKKyAgICBfdXNlVGlsZWREcmF3
aW5nID0gdXNlVGlsZWREcmF3aW5nOworICAgIHJldHVybiBbc3VwZXIgaW5pdFdpdGhGcmFtZTpm
cmFtZSBjb250ZXh0UmVmOmNvbnRleHQgcGFnZUdyb3VwUmVmOnBhZ2VHcm91cF07Cit9CisKKy0g
KEJPT0wpX3Nob3VsZFVzZVRpbGVkRHJhd2luZ0FyZWEKK3sKKyAgICByZXR1cm4gX3VzZVRpbGVk
RHJhd2luZzsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViS2l0VGVzdFJ1bm5lcldp
bmRvdwogQHN5bnRoZXNpemUgcGxhdGZvcm1XZWJWaWV3ID0gX3BsYXRmb3JtV2ViVmlldzsKIApA
QCAtNzgsMTEgKzEwNSwxNCBAQAogCiBuYW1lc3BhY2UgV1RSIHsKIAotUGxhdGZvcm1XZWJWaWV3
OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVm
IHBhZ2VHcm91cFJlZikKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4
dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLRGljdGlvbmFy
eVJlZiBvcHRpb25zKQogICAgIDogbV93aW5kb3dJc0tleSh0cnVlKQogeworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB1c2VUaWxlZERyYXdpbmdLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlRpbGVkRHJhd2luZyIpKTsKKyAgICBib29sIHVzZVRpbGVkRHJh
d2luZyA9IG9wdGlvbnMgPyBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5S
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkob3B0aW9ucywgdXNlVGlsZWREcmF3aW5nS2V5
LmdldCgpKSkpIDogZmFsc2U7CisKICAgICBOU1JlY3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApOwotICAgIG1fdmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJl
Y3QgY29udGV4dFJlZjpjb250ZXh0UmVmIHBhZ2VHcm91cFJlZjpwYWdlR3JvdXBSZWZdOworICAg
IG1fdmlldyA9IFtbVGVzdFJ1bm5lcldLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0IGNv
bnRleHRSZWY6Y29udGV4dFJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwUmVmIHVzZVRpbGVkRHJh
d2luZzp1c2VUaWxlZERyYXdpbmddOwogCiAgICAgTlNSZWN0IHdpbmRvd1JlY3QgPSBOU09mZnNl
dFJlY3QocmVjdCwgLTEwMDAwLCBbKE5TU2NyZWVuICopW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmpl
Y3RBdEluZGV4OjBdIGZyYW1lXS5zaXplLmhlaWdodCAtIHJlY3Quc2l6ZS5oZWlnaHQgKyAxMDAw
MCk7CiAgICAgbV93aW5kb3cgPSBbW1dlYktpdFRlc3RSdW5uZXJXaW5kb3cgYWxsb2NdIGluaXRX
aXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFz
ayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKQEAgLTE2OCw0ICsx
OTgsMTIgQEAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dT
bmFwc2hvdEltYWdlKCkKICAgICByZXR1cm4gYWRvcHRXSyhXS0ltYWdlQ3JlYXRlRnJvbUNHSW1h
Z2Uod2luZG93U25hcHNob3RJbWFnZS5nZXQoKSwgMCkpOwogfQogCitib29sIFBsYXRmb3JtV2Vi
Vmlldzo6dmlld1N1cHBvcnRzT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykgY29uc3QK
K3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXNlVGlsZWREcmF3aW5nS2V5KEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUaWxlZERyYXdpbmciKSk7CisgICAg
Ym9vbCB1c2VUaWxlZERyYXdpbmcgPSBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jv
b2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkob3B0aW9ucywgdXNlVGlsZWREcmF3
aW5nS2V5LmdldCgpKSkpOworCisgICAgcmV0dXJuIHVzZVRpbGVkRHJhd2luZyA9PSBbKFRlc3RS
dW5uZXJXS1ZpZXcgKiltX3ZpZXcgdXNlVGlsZWREcmF3aW5nXTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2Vi
Vmlld1F0LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQu
Y3BwCmluZGV4IDAwMTc3ZGI4MWI1MGYxNjY0MDIyOGVhZjEzNDVjYWZhOWU1ODYzZGUuLjU4YzA2
Y2M3ZTUzYmNhNWUyYzdjYzIxNjdiMTU1NzBiYWRlNjI0NmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHBy
aXZhdGU6CiAgICAgUVF1aWNrV2ViVmlldyogbV92aWV3OwogfTsKIAotUGxhdGZvcm1XZWJWaWV3
OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVm
IHBhZ2VHcm91cFJlZikKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4
dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLRGljdGlvbmFy
eVJlZiAvKm9wdGlvbnMqLykKICAgICA6IG1fdmlldyhuZXcgUVF1aWNrV2ViVmlldyhjb250ZXh0
UmVmLCBwYWdlR3JvdXBSZWYpKQogICAgICwgbV93aW5kb3cobmV3IFdyYXBwZXJXaW5kb3cobV92
aWV3KSkKICAgICAsIG1fd2luZG93SXNLZXkodHJ1ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCmluZGV4IDJmYmNlZjkyMjlhMGY2N2Y2
OTE0ZDI1ZjFhZjlmNjU1MmMzMDk3MWIuLjkxYTAzZDJhMzhiYTAwNDNhM2FmODNlOWZmZjQzMzdh
M2U0MDk1YjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3Jt
V2ViVmlld1dpbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1X
ZWJWaWV3V2luLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3RlcldpbmRv
d0NsYXNzKCkKICAgICBSZWdpc3RlckNsYXNzRXhXKCZ3bmRDbGFzcyk7CiB9CiAKLVBsYXRmb3Jt
V2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VH
cm91cFJlZiBwYWdlR3JvdXBSZWYpCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS0Rp
Y3Rpb25hcnlSZWYgLypvcHRpb25zKi8pCiAgICAgOiBtX3dpbmRvd0lzS2V5KHRydWUpCiB7CiAg
ICAgcmVnaXN0ZXJXaW5kb3dDbGFzcygpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNhMjM4NjEyZjE5ODJiMGUyNDZhMzY4
NmQxNjY1ZjYwMDNlOTg4YjkuLjgyMjExOTRhZDNlMTBkNTMwMWM1ODI2ZmNmNTA4M2FlNTVmZjgy
YjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0yMyAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0ZXN0cyB0byBydW4gd2l0aCBh
IHRpbGUgY2FjaGUsIGFuZCBvcHRpb25hbGx5IGR1bXAgdGhlIHRpbGUgY2FjaGUgdmlhIGxheWVy
VHJlZUFzVGV4dCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDAxNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBIG5ldyB0ZXN0IHRoYXQgZHVtcHMgdGlsZSBjYWNoZSBkYXRhIGZvciBhIGxhcmdlIHBh
Z2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy91c2UtdGlsZWQtZHJh
d2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy90aWxlZC1k
cmF3aW5nL3VzZS10aWxlZC1kcmF3aW5nLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEwLTIyICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFByZXBhcmUgbWFwcGluZ3MgdG8gbW92aW5nIHVpU291cmNlQ29kZXMgY3JlYXRpb24gb3V0
IG9mIHRoZW0gdG8gd29ya3NwYWNlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL3RpbGVkLWRyYXdpbmcvdXNlLXRpbGVkLWRyYXdpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvdXNlLXRpbGVkLWRyYXdpbmctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU0NzZlOGZhMGZiMDVkMzJhYjEwZDBhZTZmZDYxZjRhOGY1ZGQ2
NmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJh
d2luZy91c2UtdGlsZWQtZHJhd2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorKEdy
YXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyAxMjA4LjAwIDIwMjEuMDApCisgICh2aXNpYmxlIHJlY3Qg
MC4wMCwgMC4wMCA3ODUuMDAgeCA1ODUuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNz
TGF5ZXIKKyAgICAgIChib3VuZHMgMTIwOC4wMCAyMDIxLjAwKQorICAgICAgKGRyYXdzQ29udGVu
dCAxKQorICAgICAgKGJhY2tncm91bmRDb2xvciAjRkZGRkZGKQorICAgICAgKHZpc2libGUgcmVj
dCAwLjAwLCAwLjAwIDc4NS4wMCB4IDU4NS4wMCkKKyAgICAgICh0aWxlIGNhY2hlIGNvdmVyYWdl
IDAsIDAgMTIwOCB4IDE1MzYpCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NM
YXllcgorICAgICAgICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgMC4wMCAwLjAwIHggMC4wMCkKKyAg
ICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy91c2UtdGlsZWQtZHJhd2luZy5odG1sIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvdXNlLXRpbGVkLWRyYXdpbmcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iZjkyZTFmYWJiOTdkMDczZDU4YThmMTBhZmMwYWRlMWRlMDQyNDZjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcv
dXNlLXRpbGVkLWRyYXdpbmcuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4K
KworPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgeworICAgICAgICAg
ICAgd2lkdGg6IDEyMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMjAwMHB4OworICAgICAgICB9
CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBmdW5j
dGlvbiBkb1Rlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5p
bm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50LAorICAgICAgICAg
ICAgICAgICAgICBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19WSVNJQkxFX1JFQ1RTIHwg
aW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfUEFHRV9USUxFX0NBQ0hFKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcs
IGRvVGVzdCwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlk
PSJsYXllcnMiPkxheWVyIHRyZWUgZ29lcyBoZXJlPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="183780"
          type_id="1"
          status="+"
          setter="thorton"
    />
    <flag name="commit-queue"
          id="183783"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>