<?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>144973</bug_id>
          
          <creation_ts>2015-05-13 16:06:48 -0700</creation_ts>
          <short_desc>[MediaControls] Refactor media controls &amp; bring improvements made to iOS controls to Mac.</short_desc>
          <delta_ts>2016-12-15 14:34:46 -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>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=145042</see_also>
          <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>145035</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jonlee</cc>
    
    <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1094629</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-05-13 16:06:48 -0700</bug_when>
    <thetext>[MediaControls] Refactor media controls &amp; bring improvements made to iOS controls to Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094636</commentid>
    <comment_count>1</comment_count>
      <attachid>253071</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-05-13 16:27:17 -0700</bug_when>
    <thetext>Created attachment 253071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094665</commentid>
    <comment_count>2</comment_count>
      <attachid>253071</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-05-13 17:34:14 -0700</bug_when>
    <thetext>Comment on attachment 253071
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3788
&gt; +    RefPtr&lt;HTMLMediaElement&gt; strongThis = this;
&gt; +    std::function&lt;void()&gt; task = [strongThis] {
&gt; +        if (ShadowRoot* root = strongThis-&gt;userAgentShadowRoot())
&gt; +            root-&gt;dispatchEvent(Event::create(&quot;resize&quot;, false, false));
&gt; +    };
&gt; +    document().postTask(task);

This should use a GenericTaskQueue so that it gets cancelled if the HTMLMediaElement is destroyed; i&apos;ll change this in a future patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094910</commentid>
    <comment_count>3</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-05-14 14:27:32 -0700</bug_when>
    <thetext>*** Bug 144926 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094917</commentid>
    <comment_count>4</comment_count>
      <attachid>253145</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-05-14 14:36:39 -0700</bug_when>
    <thetext>Created attachment 253145
helper patch

This patch makes it so that the button positions are defined using both left and right margins, instead of just one or the other.
This makes it so that each button is essentially defined as the button and the 8pixels to the left and right of it, which allows the control dropoff algorithm to not have to use a spacer element to take the place of the timeline when the video gets too small.

Without this change, the volume and play buttons could potentially appear to be right next to each other at some video widths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094930</commentid>
    <comment_count>5</comment_count>
      <attachid>253145</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-05-14 15:12:47 -0700</bug_when>
    <thetext>Comment on attachment 253145
helper patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        The only visual change here is the swapping of the rewind and play button positions.

Technically we should be able to do that using the flex order. This is ok for now, but I&apos;d like to get the OS X controls to use the order property for the arrangement of the buttons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094957</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-05-14 16:29:32 -0700</bug_when>
    <thetext>Committed r184359: &lt;http://trac.webkit.org/changeset/184359&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094960</commentid>
    <comment_count>7</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-05-14 16:34:05 -0700</bug_when>
    <thetext>reopened until Jer&apos;s patch lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094962</commentid>
    <comment_count>8</comment_count>
      <attachid>253145</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-14 16:41:58 -0700</bug_when>
    <thetext>Comment on attachment 253145
helper patch

Clearing flags on attachment: 253145

Committed r184361: &lt;http://trac.webkit.org/changeset/184361&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095010</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-14 20:24:45 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 145035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095053</commentid>
    <comment_count>10</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-05-15 00:24:51 -0700</bug_when>
    <thetext>I believe the crashes that led to the patch&apos;s rollout were due to a pre-existing bug in RenderFlowThread. I filed bug #145042 which should address the underlying cause of the crashes, and if so, I&apos;ll roll this patch back in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095114</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-05-15 07:51:21 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I believe the crashes that led to the patch&apos;s rollout were due to a
&gt; pre-existing bug in RenderFlowThread. I filed bug #145042 which should
&gt; address the underlying cause of the crashes, and if so, I&apos;ll roll this patch
&gt; back in.

And with the patch from that bug in place, I no longer see the crashes in the region test with /this/ patch in place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095204</commentid>
    <comment_count>12</comment_count>
      <attachid>253218</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-05-15 12:49:29 -0700</bug_when>
    <thetext>Created attachment 253218
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095216</commentid>
    <comment_count>13</comment_count>
      <attachid>253218</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-05-15 13:25:47 -0700</bug_when>
    <thetext>Comment on attachment 253218
Patch for landing.

EWS seems happy, and all tests succeed locally. Marking as cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095253</commentid>
    <comment_count>14</comment_count>
      <attachid>253218</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-15 14:31:48 -0700</bug_when>
    <thetext>Comment on attachment 253218
Patch for landing.

Clearing flags on attachment: 253218

Committed r184416: &lt;http://trac.webkit.org/changeset/184416&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253071</attachid>
            <date>2015-05-13 16:27:17 -0700</date>
            <delta_ts>2015-05-14 15:11:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144973-20150513162554.patch</filename>
            <type>text/plain</type>
            <size>27302</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY1MDg3OTM1OWIzZWRi
NTE5YzY4MmNlMjg4NGJjNGQ4MDQ0OWI3YS4uMjllZjEwMjcwZTFiYjQ1NjkzOWEyMjhhYzgwMjI2
YjI3OTRmYjhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE1LTA1LTEzICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYUNvbnRyb2xzXSBS
ZWZhY3RvciBtZWRpYSBjb250cm9scyAmIGJyaW5nIGltcHJvdmVtZW50cyBtYWRlIHRvIGlPUyBj
b250cm9scyB0byBNYWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDQ5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQdWxsIGltcHJvdmVtZW50cyBtYWRlIHRvIHRoZSBpT1MgbWVkaWEgY29udHJvbHMg
YmFjayBpbnRvIHRoZSBNYWMgY29udHJvbHMgYnkgbW92aW5nCisgICAgICAgIGNvZGUgZnJvbSBt
ZWRpYUNvbnRyb2xzaU9TLmpzIGludG8gTWVkaWFDb250cm9sc0FwcGxlLmpzLgorCisgICAgICAg
IFRoZSBsYXJnZXN0IHJlZmFjdG9yZWQgZmVhdHVyZSBpcyB0aGUgYWJpbGl0eSB0byBkcm9wIGlu
ZGl2aWR1YWwgY29udHJvbHMgZnJvbSB0aGUgbWVkaWEKKyAgICAgICAgY29udHJvbHMgd2hlbiB0
aGUgdmlkZW8gaXMgdG9vIHNtYWxsIHRvIGNvbnRhaW4gdGhlbS4gVG8gYWxsb3cgdGhlc2UgY29u
dHJvbHMgdG8gcmVzaXplCisgICAgICAgIGR5bmFtaWNhbGx5LCBhIG5ldyAicmVzaXplIiBldmVu
dCBpcyBmaXJlZCBpbnNpZGUgdGhlIG1lZGlhIGVsZW1lbnQncyBzaGFkb3cgRE9NLgorCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5jc3M6CisgICAg
ICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCAuZHJvcHBlZCk6IEFkZGVk
OyBzZXRzICJkaXNwbGF5OiBub25lIi4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMv
bWVkaWFDb250cm9sc0FwcGxlLmpzOgorICAgICAgICAoQ29udHJvbGxlcik6IFNldCBkZWZhdWx0
cyBmb3IgbmV3IHZhcmlhYmxlcy4KKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0
ZUNvbnRyb2xzKTogVXBkYXRlIHRoZSBjb250cm9scyB3aWR0aDsgbW92ZWQgZnJvbSBpT1MuanMu
CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVSZWFkeVN0YXRlQ2hhbmdlKTog
VXBkYXRlIHRoZSBjb250cm9sczsgbW92ZWQgZnJvbSBpT1MuanMuCisgICAgICAgIChDb250cm9s
bGVyLnByb3RvdHlwZS5oYW5kbGVUaW1lVXBkYXRlKTogVXBkYXRlIHRoZSBwcm9ncmVzczsgbW92
ZWQgZnJvbSBpT1MuanMuCisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVUaW1l
bGluZUlucHV0KTogUGF1c2UgaWYgc2NydWJiaW5nOyBtb3ZlZCBmcm9tIGlPUy5qcy4KKyAgICAg
ICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZVRpbWVsaW5lQ2hhbmdlKTogVXBkYXRlIHRo
ZSBwcm9ncmVzczsgbW92ZWQgZnJvbSBpT1MuanMuCisgICAgICAgIChDb250cm9sbGVyLnByb3Rv
dHlwZS5zaG93Q29udHJvbHMpOiBVcGRhdGUgdGhlIGNvbnRyb2xzIHdpZHRoOyBtb3ZlZCBmcm9t
IGlPUy5qcy4KKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhpZGVDb250cm9scyk6IFJl
bW92ZWQgX3BvdGVudGlhbGx5U2NydWJiaW5nIGNoZWNrOyBub3QgbmVlZGVkIGR1ZSB0byBjaGFu
Z2VzCisgICAgICAgICAgICB0byBjb250cm9sc0Fsd2F5c1Zpc2libGUoKS4KKyAgICAgICAgKENv
bnRyb2xsZXIucHJvdG90eXBlLnNjaGVkdWxlVXBkYXRlTGF5b3V0Rm9yRGlzcGxheWVkV2lkdGgp
OiBNb3ZlZCBmcm9tIGlPUy5qcy4KKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmlzQ29u
dHJvbFZpc2libGUpOiBBZGRlZDsgY2hlY2tzIHdoZXRoZXIgY29udHJvbCBpcyBwYXJlbnRlZCAm
IG5vdCBoaWRkZW4uCisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVMYXlvdXRG
b3JEaXNwbGF5ZWRXaWR0aCk6IE1vdmVkIGZyb20gaU9TLmpzIGFuZCByZWZhY3RvcmVkLgorICAg
ICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuY29udHJvbHNBbHdheXNWaXNpYmxlKTogUmV0dXJu
IHRydWUgaWYgc2NydWJiaW5nLgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRl
SGFzQXVkaW8pOiBDaGVjayBjdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCk7IG1vdmVk
IGZyb20gaU9TLmpzLgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuZ2V0IHNjcnViYmlu
Zyk6IFNpbXBsZSBnZXR0ZXIgZm9yIF9zY3J1YmJpbmcuCisgICAgICAgIChDb250cm9sbGVyLnBy
b3RvdHlwZS5zZXQgc2NydWJiaW5nKTogQ2hlY2sgcGxheSBzdGF0ZSBpZiBzY3J1YmJpbmc7IHN0
YXJ0IHBsYXliYWNrIChpZiBuZWNlc3NhcnkpCisgICAgICAgICAgICBpZiBub3Qgc2NydWJiaW5n
LgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuZ2V0IHBhZ2VTY2FsZUZhY3Rvcik6IE1v
dmVkIGZyb20gaU9TLmpzLgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuc2V0IHBhZ2VT
Y2FsZUZhY3Rvcik6IERpdHRvLgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxl
Um9vdFJlc2l6ZSk6IFNjaGVkdWxlIGFuIHVwZGF0ZSBvZiB0aGUgY29udHJ0b2xzIHdpZHRoLgor
CisgICAgICAgIFJlbW92ZSBhIGJ1bmNoIG9mIG5ld2x5IHVubmVjZXNzYXJ5IGNvZGUgZnJvbSB0
aGUgaU9TIG1lZGlhIGNvbnRyb2xzOgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L21lZGlhQ29udHJvbHNpT1MuanM6CisgICAgICAgIChDb250cm9sbGVySU9TKToKKyAgICAgICAg
KENvbnRyb2xsZXJJT1MucHJvdG90eXBlLmNyZWF0ZUNvbnRyb2xzKTogUmVtb3ZlIGl2YXJzIG1v
dmVkIGludG8gQXBwbGUuanMuCisgICAgICAgIChDb250cm9sbGVySU9TLnByb3RvdHlwZS5jb25m
aWd1cmVJbmxpbmVDb250cm9scyk6IFJlbW92ZSBzcGFjZXI7IG1hZGUgdW5uZWNlc3NhcnkuCisg
ICAgICAgIChDb250cm9sbGVySU9TLnByb3RvdHlwZS5zaG93Q29udHJvbHMpOiBEZWxldGVkLgor
ICAgICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUudXBkYXRlVGltZSk6IERlbGV0ZWQuCisg
ICAgICAgIChDb250cm9sbGVySU9TLnByb3RvdHlwZS5oYW5kbGVUaW1lbGluZVRvdWNoU3RhcnQp
OiBKdXN0IGNhbGwgInNjcnViYmluZyA9IHRydWUiLCBoYW5kbGVkIGluIEFwcGxlLmpzLgorICAg
ICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUuaGFuZGxlVGltZWxpbmVUb3VjaEVuZCk6IEp1
c3QgY2FsbCAic2NydWJiaW5nID0gZmFsc2UiLCBoYW5kbGVkIGluIEFwcGxlLmpzLgorICAgICAg
ICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUuaGFuZGxlUmVhZHlTdGF0ZUNoYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChDb250cm9sbGVySU9TLnByb3RvdHlwZS5zZXRQbGF5aW5nKTogRG9uJ3Qg
Y2hlY2sgX3RpbWVsaW5lSXNIaWRkZW47IG5vdCBuZWVkZWQuCisgICAgICAgIChDb250cm9sbGVy
SU9TLnByb3RvdHlwZS5nZXQgcGFnZVNjYWxlRmFjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKENv
bnRyb2xsZXJJT1MucHJvdG90eXBlLnNldCBwYWdlU2NhbGVGYWN0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUuc2NoZWR1bGVVcGRhdGVMYXlvdXRGb3JEaXNw
bGF5ZWRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChDb250cm9sbGVySU9TLnByb3RvdHlwZXVw
ZGF0ZUxheW91dEZvckRpc3BsYXllZFdpZHRoKTogRGVsZXRlZC4KKworICAgICAgICBGaXJlIGEg
InJlc2l6ZSIgZXZlbnQgYXQgdGhlIHNoYWRvdyBET00gcm9vdCB3aGVuIGxheW91dCByZXN1bHRz
IGluIGEgc2l6ZSBjaGFuZ2UuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bGF5b3V0U2l6ZUNoYW5nZWQp
OiBGaXJlIHRoZSAicmVzaXplIiBldmVudCBhdCB0aGUgc2hhZG93IERPTS4KKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWE6OmxheW91dCk6IFRyaWdnZXIgbGF5
b3V0U2l6ZUNoYW5nZWQoKQorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYS5oOgorCisg
ICAgICAgIERyaXZlLWJ5IGZpeGVzOgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L21lZGlhQ29udHJvbHNBcHBsZS5qczoKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmNy
ZWF0ZUNvbnRyb2xzKTogYXJpYS1sYWJlbCB0ZXh0IGlzIHRvdGFsbHkgd3Jvbmc7IHJlbW92ZWQu
CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVXaXJlbGVzc1BsYXliYWNrU3Rh
dHVzKTogVXNlIGNsYXNzLW5hbWVzIHRvIGhpZGUgY29udHJvbHMsIG5vdCBpbmxpbmUgc3R5bGVz
LgorCiAyMDE1LTA1LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtNYWNdIEhhbmcgaW4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXVk
aW9Tb3VyY2VQcm92aWRlcigpIC0gJ3RyYWNrcycgcHJvcGVydHkgbm90IHlldCBsb2FkZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRy
b2xzQXBwbGUuY3NzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlh
Q29udHJvbHNBcHBsZS5jc3MKaW5kZXggYzViZjVmMTk0MTMxZjU3N2Q3YzUxYjQzNDUxNDhiOTI3
ZWJiN2MwMy4uNzExNmQ4NDIzYmExMDRhZWFiZDVjNDI3ZjY1YTE5ZWEzZjUzNzdhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNB
cHBsZS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlh
Q29udHJvbHNBcHBsZS5jc3MKQEAgLTU5Miw3ICs1OTIsOSBAQCBhdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1wYW5lbC5oaWRkZW4gewogfQogCiB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1wYW5lbCAuaGlkZGVuLAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwg
LmhpZGRlbiB7CithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCAuaGlkZGVuLAor
dmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgLmRyb3BwZWQsCithdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCAuZHJvcHBlZCB7CiAgICAgZGlzcGxheTogbm9uZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21l
ZGlhQ29udHJvbHNBcHBsZS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9tZWRpYUNvbnRyb2xzQXBwbGUuanMKaW5kZXggMWE3YmMxMWY0MjlkZTQ3NDExN2Q1OWE4NzBm
ZjEzZGFiZjNlN2FkNC4uMGMyZjExZDNhMDQzYjQ1ZmRlM2FkMzM3YjdiYmZkNGQ4NmYwMTNkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29u
dHJvbHNBcHBsZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMv
bWVkaWFDb250cm9sc0FwcGxlLmpzCkBAIC0xNyw2ICsxNyw5IEBAIGZ1bmN0aW9uIENvbnRyb2xs
ZXIocm9vdCwgdmlkZW8sIGhvc3QpCiAgICAgdGhpcy5jdXJyZW50VGFyZ2V0SXNXaXJlbGVzcyA9
IGZhbHNlOwogICAgIHRoaXMud2lyZWxlc3NQbGF5YmFja0Rpc2FibGVkID0gZmFsc2U7CiAgICAg
dGhpcy5pc1ZvbHVtZVNsaWRlckFjdGl2ZSA9IGZhbHNlOworICAgIHRoaXMuY3VycmVudERpc3Bs
YXlXaWR0aCA9IDA7CisgICAgdGhpcy5fc2NydWJiaW5nID0gZmFsc2U7CisgICAgdGhpcy5fcGFn
ZVNjYWxlRmFjdG9yID0gMTsKIAogICAgIHRoaXMuYWRkVmlkZW9MaXN0ZW5lcnMoKTsKICAgICB0
aGlzLmNyZWF0ZUJhc2UoKTsKQEAgLTM3LDYgKzQwLDkgQEAgZnVuY3Rpb24gQ29udHJvbGxlcihy
b290LCB2aWRlbywgaG9zdCkKICAgICB0aGlzLnVwZGF0ZUhhc1ZpZGVvKCk7CiAgICAgdGhpcy51
cGRhdGVXaXJlbGVzc1RhcmdldEF2YWlsYWJsZSgpOwogICAgIHRoaXMudXBkYXRlV2lyZWxlc3NQ
bGF5YmFja1N0YXR1cygpOworICAgIHRoaXMuc2NoZWR1bGVVcGRhdGVMYXlvdXRGb3JEaXNwbGF5
ZWRXaWR0aCgpOworCisgICAgdGhpcy5saXN0ZW5Gb3IodGhpcy5yb290LCAncmVzaXplJywgdGhp
cy5oYW5kbGVSb290UmVzaXplKTsKIH07CiAKIC8qIEVudW1zICovCkBAIC04MSw2ICs4Nyw3IEBA
IENvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgIFNlZWtEZWxheTogMTUwMCwKICAgICBDbGFz
c05hbWVzOiB7CiAgICAgICAgIGFjdGl2ZTogJ2FjdGl2ZScsCisgICAgICAgIGRyb3BwZWQ6ICdk
cm9wcGVkJywKICAgICAgICAgZXhpdDogJ2V4aXQnLAogICAgICAgICBmYWlsZWQ6ICdmYWlsZWQn
LAogICAgICAgICBoaWRkZW46ICdoaWRkZW4nLApAQCAtMTE4LDYgKzEyNSw4IEBAIENvbnRyb2xs
ZXIucHJvdG90eXBlID0gewogICAgICAgICByaWdodDogMzksCiAgICAgICAgIGRvd246IDQwCiAg
ICAgfSwKKyAgICBNaW5pbXVtVGltZWxpbmVXaWR0aDogMTUwLAorICAgIEJ1dHRvbldpZHRoOiAz
MiwKIAogICAgIGV4dGVuZDogZnVuY3Rpb24oY2hpbGQpCiAgICAgewpAQCAtNDU3LDggKzQ2Niw3
IEBAIENvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgICAgICBpbmxpbmVQbGF5YmFja1BsYWNl
aG9sZGVyLnNldEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMtd2ly
ZWxlc3MtcGxheWJhY2stc3RhdHVzJyk7CiAgICAgICAgIGlmICghQ29udHJvbGxlci5nU2ltdWxh
dGVPcHRpbWl6ZWRGdWxsc2NyZWVuQXZhaWxhYmxlKQogICAgICAgICAgICAgaW5saW5lUGxheWJh
Y2tQbGFjZWhvbGRlci5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwotICAg
ICAgICBpbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcs
IHRoaXMuVUlTdHJpbmcoJ0Rpc3BsYXkgT3B0aW1pemVkIEZ1bGwgU2NyZWVuJykpOwotICAgICAg
ICAKKwogICAgICAgICB2YXIgaW5saW5lUGxheWJhY2tQbGFjZWhvbGRlclRleHQgPSB0aGlzLmNv
bnRyb2xzLmlubGluZVBsYXliYWNrUGxhY2Vob2xkZXJUZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CiAgICAgICAgIGlubGluZVBsYXliYWNrUGxhY2Vob2xkZXJUZXh0LnNldEF0
dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMtd2lyZWxlc3MtcGxheWJh
Y2stdGV4dCcpOwogICAgICAgICAKQEAgLTU5Myw2ICs2MDEsNyBAQCBDb250cm9sbGVyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5zZXRDb250cm9sc1R5cGUo
Q29udHJvbGxlci5JbmxpbmVDb250cm9scyk7CiAKKyAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRG
b3JEaXNwbGF5ZWRXaWR0aCgpOwogICAgICAgICB0aGlzLnNldE5lZWRzVGltZWxpbmVNZXRyaWNz
VXBkYXRlKCk7CiAgICAgfSwKIApAQCAtNjU3LDEyICs2NjYsMTUgQEAgQ29udHJvbGxlci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudXBkYXRlRnVsbHNjcmVlbkJ1dHRvbnMoKTsKICAgICAg
ICAgdGhpcy51cGRhdGVXaXJlbGVzc1RhcmdldFBpY2tlckJ1dHRvbigpOwogICAgICAgICB0aGlz
LnVwZGF0ZVByb2dyZXNzKCk7CisgICAgICAgIHRoaXMudXBkYXRlQ29udHJvbHMoKTsKICAgICB9
LAogCiAgICAgaGFuZGxlVGltZVVwZGF0ZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAg
ICBpZiAoIXRoaXMuc2NydWJiaW5nKQorICAgICAgICBpZiAoIXRoaXMuc2NydWJiaW5nKSB7CiAg
ICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWUoKTsKKyAgICAgICAgICAgIHRoaXMudXBkYXRlUHJv
Z3Jlc3MoKTsKKyAgICAgICAgfQogICAgICAgICB0aGlzLmRyYXdUaW1lbGluZUJhY2tncm91bmQo
KTsKICAgICB9LAogCkBAIC04NTEsNiArODYzLDkgQEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7
CiAKICAgICBoYW5kbGVUaW1lbGluZUlucHV0OiBmdW5jdGlvbihldmVudCkKICAgICB7CisgICAg
ICAgIGlmICh0aGlzLnNjcnViYmluZykKKyAgICAgICAgICAgIHRoaXMudmlkZW8ucGF1c2UoKTsK
KwogICAgICAgICB0aGlzLnZpZGVvLmZhc3RTZWVrKHRoaXMuY29udHJvbHMudGltZWxpbmUudmFs
dWUpOwogICAgICAgICB0aGlzLnVwZGF0ZUNvbnRyb2xzV2hpbGVTY3J1YmJpbmcoKTsKICAgICB9
LApAQCAtODU4LDYgKzg3Myw3IEBAIENvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgIGhhbmRs
ZVRpbWVsaW5lQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMudmlk
ZW8uY3VycmVudFRpbWUgPSB0aGlzLmNvbnRyb2xzLnRpbWVsaW5lLnZhbHVlOworICAgICAgICB0
aGlzLnVwZGF0ZVByb2dyZXNzKCk7CiAgICAgfSwKIAogICAgIGhhbmRsZVRpbWVsaW5lRG93bjog
ZnVuY3Rpb24oZXZlbnQpCkBAIC0xMzQ2LDYgKzEzNjIsNyBAQCBDb250cm9sbGVyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgaWYgKHRoaXMuc2hvd0lubGluZVBsYXliYWNrUGxhY2Vob2xkZXJPbmx5
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRGb3JE
aXNwbGF5ZWRXaWR0aCgpOwogICAgICAgICB0aGlzLnNldE5lZWRzVGltZWxpbmVNZXRyaWNzVXBk
YXRlKCk7CiAgICAgICAgIHRoaXMudXBkYXRlVGltZSh0cnVlKTsKICAgICAgICAgdGhpcy51cGRh
dGVQcm9ncmVzcyh0cnVlKTsKQEAgLTEzNjIsNyArMTM3OSw3IEBAIENvbnRyb2xsZXIucHJvdG90
eXBlID0gewogCiAgICAgaGlkZUNvbnRyb2xzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBp
ZiAodGhpcy5jb250cm9sc0Fsd2F5c1Zpc2libGUoKSB8fCB0aGlzLl9wb3RlbnRpYWxseVNjcnVi
YmluZykKKyAgICAgICAgaWYgKHRoaXMuY29udHJvbHNBbHdheXNWaXNpYmxlKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy51cGRhdGVTaG91bGRMaXN0ZW5Gb3JQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50KCk7CkBAIC0xMzcxLDkgKzEzODgsNjUgQEAgQ29udHJv
bGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsQmFja2dy
b3VuZC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5zaG93KTsKICAgICB9LAogCisg
ICAgc2NoZWR1bGVVcGRhdGVMYXlvdXRGb3JEaXNwbGF5ZWRXaWR0aDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgc2V0VGltZW91dCh0aGlzLnVwZGF0ZUxheW91dEZvckRpc3BsYXllZFdpZHRo
LmJpbmQodGhpcyksIDApOworICAgIH0sCisKKyAgICBpc0NvbnRyb2xWaXNpYmxlOiBmdW5jdGlv
bihjb250cm9sKQorICAgIHsKKyAgICAgICAgaWYgKCFjb250cm9sKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAoIXRoaXMucm9vdC5jb250YWlucyhjb250cm9sKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuICFjb250cm9sLmNsYXNzTGlz
dC5jb250YWlucyh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKQorICAgIH0sCisKKyAgICB1cGRhdGVM
YXlvdXRGb3JEaXNwbGF5ZWRXaWR0aDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLmNvbnRyb2xzIHx8ICF0aGlzLmNvbnRyb2xzLnBhbmVsKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHZhciB2aXNpYmxlV2lkdGggPSB0aGlzLmNvbnRyb2xzLnBhbmVsLmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICogdGhpcy5fcGFnZVNjYWxlRmFjdG9yOworICAgICAg
ICBpZiAodmlzaWJsZVdpZHRoIDw9IDAgfHwgdmlzaWJsZVdpZHRoID09IHRoaXMuY3VycmVudERp
c3BsYXlXaWR0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmN1cnJlbnRE
aXNwbGF5V2lkdGggPSB2aXNpYmxlV2lkdGg7CisKKyAgICAgICAgLy8gV2UgbmVlZCB0byB3b3Jr
IG91dCBob3cgbWFueSBidXR0b25zIGFyZSBhdmFpbGFibGUuCisgICAgICAgIHRoaXMudXBkYXRl
V2lyZWxlc3NUYXJnZXRBdmFpbGFibGUoKTsKKyAgICAgICAgdGhpcy51cGRhdGVGdWxsc2NyZWVu
QnV0dG9ucygpOworCisgICAgICAgIC8vIEZpbHRlciBhbGwgdGhlIGJ1dHRvbnMgd2hpY2ggYXJl
IG5vdCBleHBsaWNpdGx5IGhpZGRlbi4KKyAgICAgICAgdmFyIGJ1dHRvbnMgPSBbdGhpcy5jb250
cm9scy5wbGF5QnV0dG9uLCB0aGlzLmNvbnRyb2xzLnJld2luZEJ1dHRvbiwgdGhpcy5jb250cm9s
cy5jYXB0aW9uQnV0dG9uLAorICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmZ1
bGxzY3JlZW5CdXR0b24sIHRoaXMuY29udHJvbHMub3B0aW1pemVkRnVsbHNjcmVlbkJ1dHRvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy53aXJlbGVzc1RhcmdldFBpY2tl
ciwgdGhpcy5jb250cm9scy5tdXRlQm94XTsKKyAgICAgICAgdmFyIHZpc2libGVCdXR0b25zID0g
YnV0dG9ucy5maWx0ZXIodGhpcy5pc0NvbnRyb2xWaXNpYmxlLCB0aGlzKTsKKworICAgICAgICAv
LyBUaGlzIHRlbGxzIHVzIGhvdyBtdWNoIHJvb20gd2UgbmVlZCBpbiBvcmRlciB0byBkaXNwbGF5
IGV2ZXJ5IHZpc2libGUgYnV0dG9uLgorICAgICAgICB2YXIgdmlzaWJsZUJ1dHRvbldpZHRoID0g
dGhpcy5CdXR0b25XaWR0aCAqIHZpc2libGVCdXR0b25zLmxlbmd0aDsKKworICAgICAgICAvLyBD
aGVjayBpZiB0aGVyZSBpcyBlbm91Z2ggcm9vbSBmb3IgdGhlIHNjcnViYmVyLgorICAgICAgICB2
YXIgc2hvdWxkRHJvcFRpbWVsaW5lID0gKHZpc2libGVXaWR0aCAtIHZpc2libGVCdXR0b25XaWR0
aCkgPCB0aGlzLk1pbmltdW1UaW1lbGluZVdpZHRoOworICAgICAgICB0aGlzLmNvbnRyb2xzLmN1
cnJlbnRUaW1lLmNsYXNzTGlzdC50b2dnbGUodGhpcy5DbGFzc05hbWVzLmRyb3BwZWQsIHNob3Vs
ZERyb3BUaW1lbGluZSk7CisgICAgICAgIHRoaXMuY29udHJvbHMudGh1bWJuYWlsVHJhY2suY2xh
c3NMaXN0LnRvZ2dsZSh0aGlzLkNsYXNzTmFtZXMuZHJvcHBlZCwgc2hvdWxkRHJvcFRpbWVsaW5l
KTsKKyAgICAgICAgdGhpcy5jb250cm9scy5yZW1haW5pbmdUaW1lLmNsYXNzTGlzdC50b2dnbGUo
dGhpcy5DbGFzc05hbWVzLmRyb3BwZWQsIHNob3VsZERyb3BUaW1lbGluZSk7CisKKyAgICAgICAg
Ly8gVGhlbiBjb250cm9scyBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgorICAgICAgICB2YXIgcmVt
b3ZlT3JkZXIgPSBbdGhpcy5jb250cm9scy53aXJlbGVzc1RhcmdldFBpY2tlciwgdGhpcy5jb250
cm9scy5vcHRpbWl6ZWRGdWxsc2NyZWVuQnV0dG9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5jb250cm9scy5jYXB0aW9uQnV0dG9uLCB0aGlzLmNvbnRyb2xzLm11dGVCb3gsIHRo
aXMuY29udHJvbHMucmV3aW5kQnV0dG9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5jb250cm9scy5mdWxsc2NyZWVuQnV0dG9uXTsKKyAgICAgICAgcmVtb3ZlT3JkZXIuZm9yRWFj
aChmdW5jdGlvbihjb250cm9sKSB7CisgICAgICAgICAgICB2YXIgc2hvdWxkRHJvcENvbnRyb2wg
PSB2aXNpYmxlV2lkdGggPCB2aXNpYmxlQnV0dG9uV2lkdGggJiYgdGhpcy5pc0NvbnRyb2xWaXNp
YmxlKGNvbnRyb2wpOworICAgICAgICAgICAgY29udHJvbC5jbGFzc0xpc3QudG9nZ2xlKHRoaXMu
Q2xhc3NOYW1lcy5kcm9wcGVkLCBzaG91bGREcm9wQ29udHJvbCk7CisgICAgICAgICAgICBpZiAo
c2hvdWxkRHJvcENvbnRyb2wpCisgICAgICAgICAgICAgICAgdmlzaWJsZUJ1dHRvbldpZHRoIC09
IHRoaXMuQnV0dG9uV2lkdGg7CisgICAgICAgIH0sIHRoaXMpOworICAgIH0sCisKICAgICBjb250
cm9sc0Fsd2F5c1Zpc2libGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmlzQXVkaW8oKSB8fCB0aGlzLmN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MoKTsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuaXNBdWRpbygpIHx8IHRoaXMuY3VycmVudFBsYXliYWNrVGFyZ2V0
SXNXaXJlbGVzcygpIHx8IHRoaXMuc2NydWJiaW5nOwogICAgIH0sCiAKICAgICBjb250cm9sc0Fy
ZUhpZGRlbjogZnVuY3Rpb24oKQpAQCAtMTc0NCw3ICsxODE3LDcgQEAgQ29udHJvbGxlci5wcm90
b3R5cGUgPSB7CiAKICAgICB1cGRhdGVIYXNBdWRpbzogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgaWYgKHRoaXMudmlkZW8uYXVkaW9UcmFja3MubGVuZ3RoKQorICAgICAgICBpZiAodGhpcy52
aWRlby5hdWRpb1RyYWNrcy5sZW5ndGggJiYgIXRoaXMuY3VycmVudFBsYXliYWNrVGFyZ2V0SXNX
aXJlbGVzcygpKQogICAgICAgICAgICAgdGhpcy5jb250cm9scy5tdXRlQm94LmNsYXNzTGlzdC5y
ZW1vdmUodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHRoaXMuY29udHJvbHMubXV0ZUJveC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRk
ZW4pOwpAQCAtMTg0NCwxOSArMTkxNywxNSBAQCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmlubGluZVBsYXliYWNrUGxhY2Vob2xkZXJUZXh0
VG9wLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLnNtYWxsKTsKICAgICAgICAgICAg
ICAgICB0aGlzLmNvbnRyb2xzLmlubGluZVBsYXliYWNrUGxhY2Vob2xkZXJUZXh0Qm90dG9tLmNs
YXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLnNtYWxsKTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmICh0aGlzLmlzRnVsbFNjcmVlbigpKQotICAgICAgICAgICAgICAgIHRoaXMu
Y29udHJvbHMudm9sdW1lQm94LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5tdXRlQm94LnN0eWxlLmRpc3BsYXkg
PSAibm9uZSI7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnZvbHVtZUJveC5jbGFzc0xpc3Qu
YWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOworICAgICAgICAgICAgdGhpcy5jb250cm9scy5t
dXRlQm94LmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CiAgICAgICAgICAg
ICB0aGlzLnVwZGF0ZUJhc2UoKTsKICAgICAgICAgICAgIHRoaXMuc2hvd0NvbnRyb2xzKCk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmlubGluZVBsYXliYWNr
UGxhY2Vob2xkZXIuY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKICAgICAg
ICAgICAgIHRoaXMuY29udHJvbHMud2lyZWxlc3NUYXJnZXRQaWNrZXIuY2xhc3NMaXN0LnJlbW92
ZSh0aGlzLkNsYXNzTmFtZXMucGxheWluZyk7Ci0gICAgICAgICAgICBpZiAodGhpcy5pc0Z1bGxT
Y3JlZW4oKSkKLSAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnZvbHVtZUJveC5zdHlsZS5k
aXNwbGF5ID0gIi13ZWJraXQtZmxleCI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgdGhpcy5jb250cm9scy5tdXRlQm94LnN0eWxlLmRpc3BsYXkgPSAiLXdlYmtpdC1mbGV4IjsK
KyAgICAgICAgICAgIHRoaXMuY29udHJvbHMudm9sdW1lQm94LmNsYXNzTGlzdC5yZW1vdmUodGhp
cy5DbGFzc05hbWVzLmhpZGRlbik7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLm11dGVCb3gu
Y2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKICAgICAgICAgfQogICAg
ICAgICB0aGlzLnVwZGF0ZVdpcmVsZXNzVGFyZ2V0UGlja2VyQnV0dG9uKCk7CiAgICAgfSwKQEAg
LTE5MTgsNCArMTk4Nyw1MCBAQCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHRoaXMuY3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpICYmICF0aGlzLnZpZGVv
LmNvbnRyb2xzOwogICAgIH0sCiAKKyAgICBnZXQgc2NydWJiaW5nKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9zY3J1YmJpbmc7CisgICAgfSwKKworICAgIHNldCBzY3J1YmJpbmcoZmxh
ZykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zY3J1YmJpbmcgPT0gZmxhZykKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fc2NydWJiaW5nID0gZmxhZzsKKworICAgICAgICBp
ZiAodGhpcy5fc2NydWJiaW5nKQorICAgICAgICAgICAgdGhpcy53YXNQbGF5aW5nV2hlblNjcnVi
YmluZ1N0YXJ0ZWQgPSAhdGhpcy52aWRlby5wYXVzZWQ7CisgICAgICAgIGVsc2UgaWYgKHRoaXMu
d2FzUGxheWluZ1doZW5TY3J1YmJpbmdTdGFydGVkICYmIHRoaXMudmlkZW8ucGF1c2VkKSB7Cisg
ICAgICAgICAgICB0aGlzLnZpZGVvLnBsYXkoKTsKKyAgICAgICAgICAgIHRoaXMucmVzZXRIaWRl
Q29udHJvbHNUaW1lcigpOworICAgICAgICB9CisgICAgfSwKKworICAgIGdldCBwYWdlU2NhbGVG
YWN0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2VTY2FsZUZhY3RvcjsKKyAg
ICB9LAorCisgICAgc2V0IHBhZ2VTY2FsZUZhY3RvcihuZXdTY2FsZUZhY3RvcikKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9wYWdlU2NhbGVGYWN0b3IgPT09IG5ld1NjYWxlRmFjdG9yKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3BhZ2VTY2FsZUZhY3RvciA9IG5ld1Nj
YWxlRmFjdG9yOworCisgICAgICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCByZWFjdCB0byB0aGUg
c2NhbGUgY2hhbmdlIGJ5CisgICAgICAgIC8vIHVuc2NhbGluZyB0aGUgY29udHJvbHMgcGFuZWwu
IEhvd2V2ZXIsIHRoaXMKKyAgICAgICAgLy8gaGl0cyBhIGJ1ZyB3aXRoIHRoZSBiYWNrZHJvcCBi
bHVyIGxheWVyIGdldHRpbmcKKyAgICAgICAgLy8gdG9vIGJpZyBhbmQgbW92aW5nIHRvIGEgdGls
ZWQgbGF5ZXIuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDIzMTcKKyAgICB9LAorCisgICAgaGFuZGxlUm9vdFJlc2l6ZTogZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICB0aGlzLnVwZGF0ZUxheW91dEZvckRpc3BsYXllZFdpZHRoKCk7
CisgICAgICAgIHRoaXMuc2V0TmVlZHNUaW1lbGluZU1ldHJpY3NVcGRhdGUoKTsKKyAgICAgICAg
dGhpcy51cGRhdGVUaW1lbGluZU1ldHJpY3NJZk5lZWRlZCgpOworICAgICAgICB0aGlzLmRyYXdU
aW1lbGluZUJhY2tncm91bmQoKTsKKyAgICB9CisKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc2lPUy5qcyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzaU9TLmpzCmluZGV4IGY4
NzZmMGIxODE4OWE4Yjg4ZDEyYjg2NzRiNGE0ZTUzZmUzZDU1YTcuLmZkYTdhNGEzY2FlNGY3Mzhj
MmU2NjZhOTY1M2U3NTkxM2U0ZjUzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzaU9TLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzaU9TLmpzCkBAIC0xNiwyMiArMTYs
MjEgQEAgZnVuY3Rpb24gQ29udHJvbGxlcklPUyhyb290LCB2aWRlbywgaG9zdCkKIAogICAgIHRo
aXMuX3RpbWVsaW5lSXNIaWRkZW4gPSBmYWxzZTsKICAgICB0aGlzLl9jdXJyZW50RGlzcGxheVdp
ZHRoID0gMDsKLSAgICB0aGlzLl9wb3RlbnRpYWxseVNjcnViYmluZyA9IGZhbHNlOwogICAgIHRo
aXMuc2NoZWR1bGVVcGRhdGVMYXlvdXRGb3JEaXNwbGF5ZWRXaWR0aCgpOwogCiAgICAgaG9zdC5j
b250cm9sc0RlcGVuZE9uUGFnZVNjYWxlRmFjdG9yID0gdHJ1ZTsKICAgICB0aGlzLmRvaW5nU2V0
dXAgPSBmYWxzZTsKIH07CiAKLS8qIENvbnN0YW50cyAqLwotQ29udHJvbGxlcklPUy5NaW5pbXVt
VGltZWxpbmVXaWR0aCA9IDIwMDsKLUNvbnRyb2xsZXJJT1MuQnV0dG9uV2lkdGggPSA0MjsKLQog
LyogRW51bXMgKi8KIENvbnRyb2xsZXJJT1MuU3RhcnRQbGF5YmFja0NvbnRyb2xzID0gMjsKIAog
CiBDb250cm9sbGVySU9TLnByb3RvdHlwZSA9IHsKKyAgICAvKiBDb25zdGFudHMgKi8KKyAgICBN
aW5pbXVtVGltZWxpbmVXaWR0aDogMjAwLAorICAgIEJ1dHRvbldpZHRoOiA0MiwKKwogICAgIGFk
ZFZpZGVvTGlzdGVuZXJzOiBmdW5jdGlvbigpIHsKICAgICAgICAgQ29udHJvbGxlci5wcm90b3R5
cGUuYWRkVmlkZW9MaXN0ZW5lcnMuY2FsbCh0aGlzKTsKIApAQCAtMTEyLDEwICsxMTEsNiBAQCBD
b250cm9sbGVySU9TLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHBhbmVsQmFja2dyb3VuZCA9
IHRoaXMuY29udHJvbHMucGFuZWxCYWNrZ3JvdW5kID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CiAgICAgICAgIHBhbmVsQmFja2dyb3VuZC5zZXRBdHRyaWJ1dGUoJ3BzZXVkbycsICct
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLWJhY2tncm91bmQnKTsKIAotICAgICAgICB2YXIg
c3BhY2VyID0gdGhpcy5jb250cm9scy5zcGFjZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKLSAgICAgICAgc3BhY2VyLnNldEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtbWVk
aWEtY29udHJvbHMtc3BhY2VyJyk7Ci0gICAgICAgIHNwYWNlci5jbGFzc0xpc3QuYWRkKHRoaXMu
Q2xhc3NOYW1lcy5oaWRkZW4pOwotCiAgICAgICAgIHZhciBpbmxpbmVQbGF5YmFja1BsYWNlaG9s
ZGVyVGV4dCA9IHRoaXMuY29udHJvbHMuaW5saW5lUGxheWJhY2tQbGFjZWhvbGRlclRleHQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgaW5saW5lUGxheWJhY2tQbGFj
ZWhvbGRlclRleHQuc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1tZWRpYS1jb250cm9s
cy13aXJlbGVzcy1wbGF5YmFjay10ZXh0Jyk7CiAKQEAgLTE4Niw3ICsxODEsNiBAQCBDb250cm9s
bGVySU9TLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5jb250cm9scy5pbmxpbmVQbGF5YmFj
a1BsYWNlaG9sZGVyVGV4dC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzLmlubGluZVBsYXliYWNr
UGxhY2Vob2xkZXJUZXh0Qm90dG9tKTsKICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5hcHBl
bmRDaGlsZCh0aGlzLmNvbnRyb2xzLnBsYXlCdXR0b24pOwogICAgICAgICB0aGlzLmNvbnRyb2xz
LnBhbmVsLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMuc3RhdHVzRGlzcGxheSk7Ci0gICAgICAg
IHRoaXMuY29udHJvbHMucGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5zcGFjZXIpOwog
ICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMudGlt
ZWxpbmVCb3gpOwogICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmFwcGVuZENoaWxkKHRoaXMu
Y29udHJvbHMud2lyZWxlc3NUYXJnZXRQaWNrZXIpOwogICAgICAgICBpZiAoIXRoaXMuaXNMaXZl
KSB7CkBAIC0yMDgsMTMgKzIwMiw2IEBAIENvbnRyb2xsZXJJT1MucHJvdG90eXBlID0gewogICAg
ICAgICAvLyBFeHBsaWNpdGx5IGRvIG5vdGhpbmcgdG8gb3ZlcnJpZGUgYmFzZS1jbGFzcyBiZWhh
dmlvci4KICAgICB9LAogCi0gICAgc2hvd0NvbnRyb2xzOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
dGhpcy51cGRhdGVMYXlvdXRGb3JEaXNwbGF5ZWRXaWR0aCgpOwotICAgICAgICB0aGlzLnVwZGF0
ZVRpbWUodHJ1ZSk7Ci0gICAgICAgIHRoaXMudXBkYXRlUHJvZ3Jlc3ModHJ1ZSk7Ci0gICAgICAg
IENvbnRyb2xsZXIucHJvdG90eXBlLnNob3dDb250cm9scy5jYWxsKHRoaXMpOwotICAgIH0sCi0K
ICAgICBhZGRDb250cm9sczogZnVuY3Rpb24oKSB7CiAgICAgICAgIHRoaXMuYmFzZS5hcHBlbmRD
aGlsZCh0aGlzLmNvbnRyb2xzLmlubGluZVBsYXliYWNrUGxhY2Vob2xkZXIpOwogICAgICAgICB0
aGlzLmJhc2UuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5wYW5lbENvbnRhaW5lcik7CkBAIC0y
MzUsMTEgKzIyMiw2IEBAIENvbnRyb2xsZXJJT1MucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
LnNldE5lZWRzVGltZWxpbmVNZXRyaWNzVXBkYXRlKCk7CiAgICAgfSwKIAotICAgIHVwZGF0ZVRp
bWU6IGZ1bmN0aW9uKGZvcmNlVXBkYXRlKSB7Ci0gICAgICAgIENvbnRyb2xsZXIucHJvdG90eXBl
LnVwZGF0ZVRpbWUuY2FsbCh0aGlzLCBmb3JjZVVwZGF0ZSk7Ci0gICAgICAgIHRoaXMudXBkYXRl
UHJvZ3Jlc3MoKTsKLSAgICB9LAotCiAgICAgZHJhd1RpbWVsaW5lQmFja2dyb3VuZDogZnVuY3Rp
b24oKSB7CiAgICAgICAgIHZhciB3aWR0aCA9IHRoaXMudGltZWxpbmVXaWR0aCAqIHdpbmRvdy5k
ZXZpY2VQaXhlbFJhdGlvOwogICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy50aW1lbGluZUhlaWdo
dCAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvOwpAQCAtNDkzLDIwICs0NzUsOCBAQCBDb250cm9s
bGVySU9TLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIAotICAg
IGhhbmRsZVRpbWVsaW5lSW5wdXQ6IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGlmICh0aGlz
Ll9wb3RlbnRpYWxseVNjcnViYmluZykKLSAgICAgICAgICAgIHRoaXMudmlkZW8ucGF1c2UoKTsK
LSAgICAgICAgQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlVGltZWxpbmVJbnB1dC5jYWxsKHRo
aXMsIGV2ZW50KTsKLSAgICB9LAotCi0gICAgaGFuZGxlVGltZWxpbmVDaGFuZ2U6IGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgIENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZVRpbWVsaW5lQ2hh
bmdlLmNhbGwodGhpcywgZXZlbnQpOwotICAgICAgICB0aGlzLnVwZGF0ZVByb2dyZXNzKCk7Ci0g
ICAgfSwKLQogICAgIGhhbmRsZVRpbWVsaW5lVG91Y2hTdGFydDogZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgdGhpcy5fcG90ZW50aWFsbHlTY3J1YmJpbmcgPSB0cnVlOwotICAgICAgICB0aGlz
Lndhc1BsYXlpbmdXaGVuU2NydWJiaW5nU3RhcnRlZCA9ICF0aGlzLnZpZGVvLnBhdXNlZDsKKyAg
ICAgICAgdGhpcy5zY3J1YmJpbmcgPSB0cnVlOwogICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlz
LmNvbnRyb2xzLnRpbWVsaW5lLCAndG91Y2hlbmQnLCB0aGlzLmhhbmRsZVRpbWVsaW5lVG91Y2hF
bmQpOwogICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlzLmNvbnRyb2xzLnRpbWVsaW5lLCAndG91
Y2hjYW5jZWwnLCB0aGlzLmhhbmRsZVRpbWVsaW5lVG91Y2hFbmQpOwogICAgIH0sCkBAIC01MTQs
MTYgKzQ4NCw3IEBAIENvbnRyb2xsZXJJT1MucHJvdG90eXBlID0gewogICAgIGhhbmRsZVRpbWVs
aW5lVG91Y2hFbmQ6IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHRoaXMuc3RvcExpc3Rlbmlu
Z0Zvcih0aGlzLmNvbnRyb2xzLnRpbWVsaW5lLCAndG91Y2hlbmQnLCB0aGlzLmhhbmRsZVRpbWVs
aW5lVG91Y2hFbmQpOwogICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmdGb3IodGhpcy5jb250cm9s
cy50aW1lbGluZSwgJ3RvdWNoY2FuY2VsJywgdGhpcy5oYW5kbGVUaW1lbGluZVRvdWNoRW5kKTsK
LSAgICAgICAgdGhpcy5fcG90ZW50aWFsbHlTY3J1YmJpbmcgPSBmYWxzZTsKLSAgICAgICAgaWYg
KHRoaXMud2FzUGxheWluZ1doZW5TY3J1YmJpbmdTdGFydGVkICYmIHRoaXMudmlkZW8ucGF1c2Vk
KSB7Ci0gICAgICAgICAgICB0aGlzLnZpZGVvLnBsYXkoKTsKLSAgICAgICAgICAgIHRoaXMucmVz
ZXRIaWRlQ29udHJvbHNUaW1lcigpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIGhhbmRsZVJl
YWR5U3RhdGVDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIENvbnRyb2xsZXIucHJv
dG90eXBlLmhhbmRsZVJlYWR5U3RhdGVDaGFuZ2UuY2FsbCh0aGlzLCBldmVudCk7Ci0gICAgICAg
IHRoaXMudXBkYXRlQ29udHJvbHMoKTsKKyAgICAgICAgdGhpcy5zY3J1YmJpbmcgPSBmYWxzZTsK
ICAgICB9LAogCiAgICAgaGFuZGxlV2lyZWxlc3NQaWNrZXJCdXR0b25Ub3VjaFN0YXJ0OiBmdW5j
dGlvbigpIHsKQEAgLTU2MiwxMCArNTIzLDggQEAgQ29udHJvbGxlcklPUy5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdGhpcy51cGRhdGVDb250cm9scygpOwogCi0gICAgICAgIGlmIChpc1BsYXlp
bmcgJiYgdGhpcy5pc0F1ZGlvKCkgJiYgIXRoaXMuX3RpbWVsaW5lSXNIaWRkZW4pIHsKKyAgICAg
ICAgaWYgKGlzUGxheWluZyAmJiB0aGlzLmlzQXVkaW8oKSkKICAgICAgICAgICAgIHRoaXMuY29u
dHJvbHMudGltZWxpbmVCb3guY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuaGlkZGVu
KTsKLSAgICAgICAgICAgIHRoaXMuY29udHJvbHMuc3BhY2VyLmNsYXNzTGlzdC5hZGQodGhpcy5D
bGFzc05hbWVzLmhpZGRlbik7Ci0gICAgICAgIH0KIAogICAgICAgICBpZiAoaXNQbGF5aW5nKQog
ICAgICAgICAgICAgdGhpcy5oYXNQbGF5ZWQgPSB0cnVlOwpAQCAtNTgxLDI1ICs1NDAsNiBAQCBD
b250cm9sbGVySU9TLnByb3RvdHlwZSA9IHsKICAgICAgICAgQ29udHJvbGxlci5wcm90b3R5cGUu
c2V0U2hvdWxkTGlzdGVuRm9yUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jYWxsKHRo
aXMsIHNob3VsZExpc3Rlbik7CiAgICAgfSwKIAotICAgIGdldCBwYWdlU2NhbGVGYWN0b3IoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2VTY2FsZUZhY3RvcjsKLSAgICB9LAotCi0g
ICAgc2V0IHBhZ2VTY2FsZUZhY3RvcihuZXdTY2FsZUZhY3RvcikKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl9wYWdlU2NhbGVGYWN0b3IgPT09IG5ld1NjYWxlRmFjdG9yKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3BhZ2VTY2FsZUZhY3RvciA9IG5ld1NjYWxlRmFjdG9y
OwotCi0gICAgICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCByZWFjdCB0byB0aGUgc2NhbGUgY2hh
bmdlIGJ5Ci0gICAgICAgIC8vIHVuc2NhbGluZyB0aGUgY29udHJvbHMgcGFuZWwuIEhvd2V2ZXIs
IHRoaXMKLSAgICAgICAgLy8gaGl0cyBhIGJ1ZyB3aXRoIHRoZSBiYWNrZHJvcCBibHVyIGxheWVy
IGdldHRpbmcKLSAgICAgICAgLy8gdG9vIGJpZyBhbmQgbW92aW5nIHRvIGEgdGlsZWQgbGF5ZXIu
Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIz
MTcKLSAgICB9LAotCiAgICAgaGFuZGxlUHJlc2VudGF0aW9uTW9kZUNoYW5nZTogZnVuY3Rpb24o
ZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcHJlc2VudGF0aW9uTW9kZSA9IHRoaXMucHJlc2Vu
dGF0aW9uTW9kZSgpOwpAQCAtNjI4LDY5ICs1NjgsNiBAQCBDb250cm9sbGVySU9TLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5oYW5kbGVQcmVzZW50YXRpb25Nb2RlQ2hhbmdlKGV2ZW50KTsK
ICAgICB9LAogCi0gICAgc2NoZWR1bGVVcGRhdGVMYXlvdXRGb3JEaXNwbGF5ZWRXaWR0aDogZnVu
Y3Rpb24gKCkKLSAgICB7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAg
ICAgICAgdGhpcy51cGRhdGVMYXlvdXRGb3JEaXNwbGF5ZWRXaWR0aCgpOwotICAgICAgICB9LmJp
bmQodGhpcyksIDApOwotICAgIH0sCi0KLSAgICB1cGRhdGVMYXlvdXRGb3JEaXNwbGF5ZWRXaWR0
aDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2xzIHx8ICF0aGlz
LmNvbnRyb2xzLnBhbmVsKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciB2aXNp
YmxlV2lkdGggPSB0aGlzLmNvbnRyb2xzLnBhbmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndp
ZHRoICogdGhpcy5fcGFnZVNjYWxlRmFjdG9yOwotICAgICAgICBpZiAodmlzaWJsZVdpZHRoIDw9
IDAgfHwgdmlzaWJsZVdpZHRoID09IHRoaXMuX2N1cnJlbnREaXNwbGF5V2lkdGgpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fY3VycmVudERpc3BsYXlXaWR0aCA9IHZpc2li
bGVXaWR0aDsKLQotICAgICAgICAvLyBXZSBuZWVkIHRvIHdvcmsgb3V0IGhvdyBtYW55IHJpZ2h0
LWhhbmQgc2lkZSBidXR0b25zIGFyZSBhdmFpbGFibGUuCi0gICAgICAgIHRoaXMudXBkYXRlV2ly
ZWxlc3NUYXJnZXRBdmFpbGFibGUoKTsKLSAgICAgICAgdGhpcy51cGRhdGVGdWxsc2NyZWVuQnV0
dG9ucygpOwotCi0gICAgICAgIHZhciB2aXNpYmxlQnV0dG9uV2lkdGggPSBDb250cm9sbGVySU9T
LkJ1dHRvbldpZHRoOyAvLyBXZSBhbHdheXMgdHJ5IHRvIHNob3cgdGhlIGZ1bGxzY3JlZW4gYnV0
dG9uLgotCi0gICAgICAgIGlmICghdGhpcy5jb250cm9scy53aXJlbGVzc1RhcmdldFBpY2tlci5j
bGFzc0xpc3QuY29udGFpbnModGhpcy5DbGFzc05hbWVzLmhpZGRlbikpCi0gICAgICAgICAgICB2
aXNpYmxlQnV0dG9uV2lkdGggKz0gQ29udHJvbGxlcklPUy5CdXR0b25XaWR0aDsKLSAgICAgICAg
aWYgKCF0aGlzLmNvbnRyb2xzLm9wdGltaXplZEZ1bGxzY3JlZW5CdXR0b24uY2xhc3NMaXN0LmNv
bnRhaW5zKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pKQotICAgICAgICAgICAgdmlzaWJsZUJ1dHRv
bldpZHRoICs9IENvbnRyb2xsZXJJT1MuQnV0dG9uV2lkdGg7Ci0KLSAgICAgICAgLy8gQ2hlY2sg
aWYgdGhlcmUgaXMgZW5vdWdoIHJvb20gZm9yIHRoZSBzY3J1YmJlci4KLSAgICAgICAgaWYgKCh2
aXNpYmxlV2lkdGggLSB2aXNpYmxlQnV0dG9uV2lkdGgpIDwgQ29udHJvbGxlcklPUy5NaW5pbXVt
VGltZWxpbmVXaWR0aCkgewotICAgICAgICAgICAgdGhpcy5jb250cm9scy50aW1lbGluZUJveC5j
bGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwotICAgICAgICAgICAgdGhpcy5j
b250cm9scy5zcGFjZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsK
LSAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lSXNIaWRkZW4gPSB0cnVlOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgaWYgKCF0aGlzLmlzQXVkaW8oKSB8fCB0aGlzLmhhc1BsYXllZCkg
ewotICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMudGltZWxpbmVCb3guY2xhc3NMaXN0LnJl
bW92ZSh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKLSAgICAgICAgICAgICAgICB0aGlzLmNvbnRy
b2xzLnNwYWNlci5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwotICAgICAg
ICAgICAgICAgIHRoaXMuX3RpbWVsaW5lSXNIaWRkZW4gPSBmYWxzZTsKLSAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMuc3BhY2VyLmNsYXNzTGlzdC5yZW1v
dmUodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBEcm9w
IHRoZSBhaXJwbGF5IGJ1dHRvbiBpZiB0aGVyZSBpc24ndCBlbm91Z2ggc3BhY2UuCi0gICAgICAg
IGlmICh2aXNpYmxlV2lkdGggPCB2aXNpYmxlQnV0dG9uV2lkdGgpIHsKLSAgICAgICAgICAgIHRo
aXMuY29udHJvbHMud2lyZWxlc3NUYXJnZXRQaWNrZXIuY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNz
TmFtZXMuaGlkZGVuKTsKLSAgICAgICAgICAgIHZpc2libGVCdXR0b25XaWR0aCAtPSBDb250cm9s
bGVySU9TLkJ1dHRvbldpZHRoOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRHJvcCB0aGUgb3B0
aW1pemVkIGZ1bGxzY3JlZW4gYnV0dG9uIGlmIHRoZXJlIHN0aWxsIGlzbid0IGVub3VnaCBzcGFj
ZS4KLSAgICAgICAgaWYgKHZpc2libGVXaWR0aCA8IHZpc2libGVCdXR0b25XaWR0aCkgewotICAg
ICAgICAgICAgdGhpcy5jb250cm9scy5vcHRpbWl6ZWRGdWxsc2NyZWVuQnV0dG9uLmNsYXNzTGlz
dC5hZGQodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7Ci0gICAgICAgICAgICB2aXNpYmxlQnV0dG9u
V2lkdGggLT0gQ29udHJvbGxlcklPUy5CdXR0b25XaWR0aDsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIEFuZCBmaW5hbGx5LCBkcm9wIHRoZSBmdWxsc2NyZWVuIGJ1dHRvbiBhcyBhIGxhc3QgcmVz
b3J0LgotICAgICAgICBpZiAodmlzaWJsZVdpZHRoIDwgdmlzaWJsZUJ1dHRvbldpZHRoKSB7Ci0g
ICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmZ1bGxzY3JlZW5CdXR0b24uY2xhc3NMaXN0LmFkZCh0
aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKLSAgICAgICAgICAgIHZpc2libGVCdXR0b25XaWR0aCAt
PSBDb250cm9sbGVySU9TLkJ1dHRvbldpZHRoOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IHRoaXMuY29udHJvbHMuZnVsbHNjcmVlbkJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xh
c3NOYW1lcy5oaWRkZW4pOwotICAgIH0sCi0KICAgICBjb250cm9sc0Fsd2F5c1Zpc2libGU6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnByZXNlbnRhdGlvbk1vZGUoKSA9PT0g
J29wdGltaXplZCcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCBhMTFhZDU5Yzc5ZWQwODM1NWE3NDA3NDc5MzBkZjljMzZlZGZiM2M0Li4wZDJiZWE3ZTQ4NzQy
NDllZGQ5MWVhMzY5OWFiZWY5MzQ0NmQyMmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKQEAgLTM3NzYsNiArMzc3NiwxOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVwZGF0ZUNhcHRpb25Db250YWluZXIoKQogICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7
CiAjZW5kaWYKIH0KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCgp
Cit7CisjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKKyAgICBSZWZQdHI8SFRNTE1l
ZGlhRWxlbWVudD4gc3Ryb25nVGhpcyA9IHRoaXM7CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IHRhc2sgPSBbc3Ryb25nVGhpc10geworICAgICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHN0
cm9uZ1RoaXMtPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIHJvb3QtPmRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZSgicmVzaXplIiwgZmFsc2UsIGZhbHNlKSk7CisgICAgfTsK
KyAgICBkb2N1bWVudCgpLnBvc3RUYXNrKHRhc2spOworI2VuZGlmCit9CiAgICAgCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFRyYWNrKFRleHRUcmFjayogdHJhY2tUb1Nl
bGVjdCkKIHsKQEAgLTU3MDcsNyArNTcxOSw2IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAog
ICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkudXNlckFnZW50KG1fY3VycmVudFNyYyk7Ci0KIH0K
IAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCmluZGV4IDNiNjYxYWI3NDEzNGEyMTA3OGMzNzkyZmRkNDMxYmJiYzM3ZWNhOTguLmE4
ZTFlNzRjYzQ4Y2YwNGYyZjUyOTllMWI3YzgwOWYwNWE3NDQxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00NTksNiArNDU5LDggQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbWVkaWFTdGF0ZSgpIGNvbnN0
IG92ZXJyaWRlOwogCisgICAgdm9pZCBsYXlvdXRTaXplQ2hhbmdlZCgpOworCiBwcm90ZWN0ZWQ6
CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBi
b29sKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lZGlhLmNwcAppbmRleCBhZmViYzlkNzgwMjZlOTY3ZTc0MjAxMDljNTA4
YjFkYzZkYmZkYTcwLi5kNjQ1ZmU4ZTAyODFjNjJhYjVkMDE4ZjM0OGMzOWQ4NjFmNzQ2MGYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKQEAgLTU1LDYgKzU1LDE1
IEBAIHZvaWQgUmVuZGVyTWVkaWE6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmKQogewogfQogCit2b2lkIFJlbmRlck1lZGlhOjpsYXlvdXQoKQoreworICAgIExh
eW91dFNpemUgb2xkU2l6ZSA9IHNpemUoKTsKKyAgICBSZW5kZXJJbWFnZTo6bGF5b3V0KCk7Cisg
ICAgaWYgKG9sZFNpemUgIT0gc2l6ZSgpKQorICAgICAgICBtZWRpYUVsZW1lbnQoKS5sYXlvdXRT
aXplQ2hhbmdlZCgpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCmluZGV4IGQ2NDA0NzI4MzVhYzQ4NGEy
MDFhYzYzNjAwYTgwZDI1ZDliNDczZWEuLmI2NGUzMjU1YmZjMzZjOGEyZmY0NzUyYzJkZTkzYTg1
MjBhZmNhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCkBAIC00MSw2
ICs0MSw5IEBAIHB1YmxpYzoKIAogICAgIEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEhUTUxNZWRpYUVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9u
eW1vdXMoKSk7IH0KIAorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVy
cmlkZTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAo=
</data>
<flag name="review"
          id="277932"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253145</attachid>
            <date>2015-05-14 14:36:39 -0700</date>
            <delta_ts>2015-05-14 16:41:58 -0700</delta_ts>
            <desc>helper patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>7140</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE1LTA1LTE0ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRqdXN0IGJ1dHRvbiBDU1Mg
YW5kIHBvc2l0aW9uaW5nIGluIHByZXBhcmF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0OTczLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MjAzMDYyMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIG9ubHkgdmlzdWFsIGNoYW5nZSBoZXJlIGlzIHRoZSBzd2FwcGluZyBvZiB0aGUgcmV3
aW5kIGFuZCBwbGF5IGJ1dHRvbiBwb3NpdGlvbnMuCisgICAgICAgIEFsc28sIHBvc2l0aW9uIGJ1
dHRvbnMgYmFzZWQgb2ZmIG9mIGJvdGggbGVmdCBhbmQgcmlnaHQgbWFyZ2lucyBpbnN0ZWFkIG9m
IGp1c3Qgb25lIG9mIHRoZSB0d28uCisgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBjb250cm9scyBk
cm9wIG9mZiB0byB3b3JrIHdpdGhvdXQgaGF2aW5nIHRvIHVzZSBhIHNwYWNlciBlbGVtZW50IHRv
IHRha2UgdGhlIHBsYWNlCisgICAgICAgIG9mIHRoZSB0aW1lbGluZSBpZiB0aGUgY29udHJvbHMg
YXJlIHRvbyBzbWFsbC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250
cm9sc0FwcGxlLmNzczoKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXJl
d2luZC1idXR0b24pOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxh
eS1idXR0b24pOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwg
Lm11dGUtYm94KToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXdpcmVs
ZXNzLXBsYXliYWNrLXBpY2tlci1idXR0b24pOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdG9nZ2xlLWNsb3NlZC1jYXB0aW9ucy1idXR0b24pOgorICAgICAgICAoYXVk
aW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24pOgorICAgICAgICAo
YXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24uZXhpdCk6Cisg
ICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNw
bGF5KToKKyAgICAgICAgKGF1ZGlvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtdG9nZ2xlLWNsb3NlZC1jYXB0aW9ucy1idXR0b24pOgorICAgICAgICAoYXVkaW86
LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy13aXJlbGVzcy1wbGF5
YmFjay1waWNrZXItYnV0dG9uKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvbWVk
aWFDb250cm9sc0FwcGxlLmpzOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuY29uZmln
dXJlSW5saW5lQ29udHJvbHMpOgorCiAyMDE1LTA1LTE0ICBSb2dlciBGb25nICA8cm9nZXJfZm9u
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGludGVybmFscyBzZXR0aW5nIHRvIGRpc2FibGUg
d2lyZWxlc3MgcGxheWJhY2sgYXZhaWxhYmlsaXR5IGZvciBsYXlvdXQgdGVzdHMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuY3Nz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRp
YUNvbnRyb2xzQXBwbGUuY3NzCShyZXZpc2lvbiAxODQyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmNzcwkod29ya2luZyBjb3B5
KQpAQCAtMTcwLDEzICsxNzAsMTUgQEAgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcmV3
aW5kLWJ1dAogICAgIG1pbi13aWR0aDogMTZweDsKICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgbWFy
Z2luLWJvdHRvbTogMXB4OwotICAgIG1hcmdpbi1sZWZ0OiAxNnB4OworICAgIG1hcmdpbi1sZWZ0
OiA4cHg7CisgICAgbWFyZ2luLXJpZ2h0OiA4cHg7CiB9CiAKIHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXBsYXktYnV0dG9uLAogYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxh
eS1idXR0b24gewogICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1s
LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTIg
MTUiIGZpbGw9InJnYmEoMjU1LDI1NSwyNTUsMC40NSkiPjxyZWN0IHg9IjAiIHk9IjEiIHdpZHRo
PSI0IiBoZWlnaHQ9IjEzIi8+PHJlY3QgeD0iOCIgeT0iMSIgd2lkdGg9IjQiIGhlaWdodD0iMTMi
Lz48L3N2Zz4nKTsKLSAgICBtYXJnaW4tbGVmdDogMTZweDsKKyAgICBtYXJnaW4tbGVmdDogOHB4
OworICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgIHdpZHRoOiAxMnB4OwogICAgIG1pbi13aWR0
aDogMTJweDsKIH0KQEAgLTE5Miw3ICsxOTQsOCBAQCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1wYW5lbCAubXV0CiAgICAgd2lkdGg6IDE0cHg7CiAgICAgbWluLXdpZHRoOiAxNHB4Owog
ICAgIGhlaWdodDogMjVweDsKLSAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7CisgICAgbWFyZ2luLXJp
Z2h0OiA4cHg7CisgICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgICBwb3NpdGlvbjogcmVsYXRpdmU7
CiAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246
IGNvbHVtbjsKQEAgLTMwNyw3ICszMTAsOCBAQCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy12b2x1bWUtbWluCiAKIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXdpcmVsZXNzLXBs
YXliYWNrLXBpY2tlci1idXR0b24sCiBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy13aXJl
bGVzcy1wbGF5YmFjay1waWNrZXItYnV0dG9uIHsKLSAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7Cisg
ICAgbWFyZ2luLXJpZ2h0OiA4cHg7CisgICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgICB3aWR0aDog
MTZweDsKICAgICBtaW4td2lkdGg6IDE2cHg7CiB9CkBAIC0zMjEsNyArMzI1LDggQEAgdmlkZW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdG9nZ2xlLWNsbwogYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtdG9nZ2xlLWNsb3NlZC1jYXB0aW9ucy1idXR0b24gewogICAgIHdpZHRoOiAxNnB4
OwogICAgIG1pbi13aWR0aDogMTZweDsKLSAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7CisgICAgbWFy
Z2luLXJpZ2h0OiA4cHg7CisgICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgICBiYWNrZ3JvdW5kLWlt
YWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE1IiBzdHJva2U9InJnYmEoMjU1LDI1NSwyNTUs
MC40NSkiICBmaWxsPSJub25lIj48ZGVmcz4gPGNsaXBQYXRoIGlkPSJjdXQtaG9sZSI+PHJlY3Qg
eD0iMCIgeT0iMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjEwIi8+PHJlY3QgeD0iMCIgeT0iMTEiIHdp
ZHRoPSI5IiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIxMSIgeT0iMTEiIHdpZHRoPSI1IiBoZWlnaHQ9
IjEiLz48L2NsaXBQYXRoPjwvZGVmcz4gPHJlY3QgeD0iMC41IiB5PSIxLjUiIHJ4PSIxIiByeT0i
MSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjEwIiBjbGlwLXBhdGg9InVybCgjY3V0LWhvbGUpIi8+PHBh
dGggZD0iTSAyLDYuNSBoIDQiLz48cGF0aCBkPSJNIDcsNi41IGggNyIvPjxwYXRoIGQ9Ik0gMyw4
LjUgaCAyIi8+PHBhdGggZD0iTSA2LDguNSBoIDMiLz48cGF0aCBkPSJNIDEwLDguNSBoIDMiLz48
cGF0aCBkPSJNIDguNSwxMS41IEwgOC41LDEzLjc1IEwgMTEsMTEiLz48L3N2Zz4nKTsKICAgICBv
dXRsaW5lOiAwOwogfQpAQCAtNDIwLDYgKzQyNSw3IEBAIHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4KIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3Jl
ZW4tYnV0dG9uIHsKICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3ht
bCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE0
IDE1IiBzdHJva2U9InJnYmEoMjU1LDI1NSwyNTUsMC40NSkiIGZpbGw9Im5vbmUiPjxwYXRoIGQ9
Ik0gNywxLjUgTCAxMi41LDEuNSBMIDEyLjUsNyIvPjxwYXRoIGQ9Ik0gMC41LDggTCAwLjUsMTMu
NSBMIDYsMTMuNSIvPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZD0iTSAxMi41LDEuNSBM
IDcuNSw2LjUiLz48cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0gMC41LDEzLjUgTCA1
LjUsOC41Ii8+PC9zdmc+Jyk7CiAgICAgbWFyZ2luLXJpZ2h0OiA3cHg7CisgICAgbWFyZ2luLWxl
ZnQ6IDhweDsKICAgICB3aWR0aDogMTRweDsKICAgICBtaW4td2lkdGg6IDE0cHg7CiB9CkBAIC00
MjgsNiArNDM0LDcgQEAgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbgog
YXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24uZXhpdCB7CiAg
ICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNCAxNSIgc3Ryb2tlPSJy
Z2JhKDI1NSwyNTUsMjU1LDAuNDUpIiBmaWxsPSJub25lIj48cGF0aCBkPSJNIDcuNSwxIEwgNy41
LDYuNSBMIDEzLDYuNSIvPjxwYXRoIGQ9Ik0gMCw4LjUgTCA1LjUsOC41IEwgNS41LDE0Ii8+PHBh
dGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNIDcuNSw2LjUgTCAxMi41LDEuNSIvPjxwYXRo
IHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZD0iTSA1LjUsOC41IEwgMC41LDEzLjUiLz48L3N2Zz4n
KTsKICAgICBtYXJnaW4tcmlnaHQ6IDExcHg7CisgICAgbWFyZ2luLWxlZnQ6IDBweDsKICAgICBt
YXJnaW4tdG9wOiA2cHg7CiB9CiAKQEAgLTUxMyw3ICs1MjAsNyBAQCBhdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1jdXJyZW50LXRpCiB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lLXJlbWFpbmluZy1kaXNwbGF5LAogYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGlt
ZS1yZW1haW5pbmctZGlzcGxheSB7CiAgICAgbWFyZ2luLWxlZnQ6IDhweDsKLSAgICBtYXJnaW4t
cmlnaHQ6IDE2cHg7CisgICAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgICAgd2lkdGg6IDM3cHg7CiAg
ICAgbWluLXdpZHRoOiAzN3B4OwogICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0
YXJ0OwpAQCAtNzY5LDEyICs3NzYsMTQgQEAgdmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdl
YmtpdC1tZWRpYQogYXVkaW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10b2dnbGUtY2xvc2VkLWNhcHRpb25zLWJ1dHRvbiB7CiAgICAgbWFyZ2luLXRvcDogNnB4
OwogICAgIG1hcmdpbi1yaWdodDoyNHB4OworICAgIG1hcmdpbi1sZWZ0OiAwcHg7CiB9CiAKIHZp
ZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtd2lyZWxlc3Mt
cGxheWJhY2stcGlja2VyLWJ1dHRvbiwKIGF1ZGlvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtd2lyZWxlc3MtcGxheWJhY2stcGlja2VyLWJ1dHRvbiB7CiAgICAg
bWFyZ2luLXRvcDogNnB4OwogICAgIG1hcmdpbi1yaWdodDoyNHB4OworICAgIG1hcmdpbi1sZWZ0
OiAwcHg7CiB9CiAKIHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtY2xvc2VkLWNhcHRpb25zLWNvbnRhaW5lciB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUu
anMJKHJldmlzaW9uIDE4NDIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250
cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTUyNyw5ICs1Mjcs
OSBAQCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5jb250cm9scy5wYW5l
bC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzLnBhbmVsQmFja2dyb3VuZENvbnRhaW5lcik7CiAg
ICAgICAgIHRoaXMuY29udHJvbHMucGFuZWxCYWNrZ3JvdW5kQ29udGFpbmVyLmFwcGVuZENoaWxk
KHRoaXMuY29udHJvbHMucGFuZWxCYWNrZ3JvdW5kKTsKICAgICAgICAgdGhpcy5jb250cm9scy5w
YW5lbEJhY2tncm91bmRDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5wYW5lbFRp
bnQpOwotICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmFwcGVuZENoaWxkKHRoaXMuY29udHJv
bHMucGxheUJ1dHRvbik7CiAgICAgICAgIGlmICghdGhpcy5pc0xpdmUpCiAgICAgICAgICAgICB0
aGlzLmNvbnRyb2xzLnBhbmVsLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMucmV3aW5kQnV0dG9u
KTsKKyAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xz
LnBsYXlCdXR0b24pOwogICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmFwcGVuZENoaWxkKHRo
aXMuY29udHJvbHMuc3RhdHVzRGlzcGxheSk7CiAgICAgICAgIGlmICghdGhpcy5pc0xpdmUpIHsK
ICAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9s
cy50aW1lbGluZUJveCk7
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253218</attachid>
            <date>2015-05-15 12:49:29 -0700</date>
            <delta_ts>2015-05-15 14:31:48 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-144973-20150515124810.patch</filename>
            <type>text/plain</type>
            <size>29902</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmEzN2NiNmVmMTA2NGM2
MmYwNzMyMzYxZDI1ZTM5MTg1N2M5MzM2Zi4uYTQ5YWM2MzcyY2VmYjI1NTQyZDAyZGNlZmVkMzU5
MTAwZmIwZjM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE1LTA1LTE1ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYUNvbnRyb2xzXSBS
ZWZhY3RvciBtZWRpYSBjb250cm9scyAmIGJyaW5nIGltcHJvdmVtZW50cyBtYWRlIHRvIGlPUyBj
b250cm9scyB0byBNYWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDQ5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAg
ICAgICAgUHVsbCBpbXByb3ZlbWVudHMgbWFkZSB0byB0aGUgaU9TIG1lZGlhIGNvbnRyb2xzIGJh
Y2sgaW50byB0aGUgTWFjIGNvbnRyb2xzIGJ5IG1vdmluZworICAgICAgICBjb2RlIGZyb20gbWVk
aWFDb250cm9sc2lPUy5qcyBpbnRvIE1lZGlhQ29udHJvbHNBcHBsZS5qcy4KKworICAgICAgICBU
aGUgbGFyZ2VzdCByZWZhY3RvcmVkIGZlYXR1cmUgaXMgdGhlIGFiaWxpdHkgdG8gZHJvcCBpbmRp
dmlkdWFsIGNvbnRyb2xzIGZyb20gdGhlIG1lZGlhCisgICAgICAgIGNvbnRyb2xzIHdoZW4gdGhl
IHZpZGVvIGlzIHRvbyBzbWFsbCB0byBjb250YWluIHRoZW0uIFRvIGFsbG93IHRoZXNlIGNvbnRy
b2xzIHRvIHJlc2l6ZQorICAgICAgICBkeW5hbWljYWxseSwgYSBuZXcgInJlc2l6ZSIgZXZlbnQg
aXMgZmlyZWQgaW5zaWRlIHRoZSBtZWRpYSBlbGVtZW50J3Mgc2hhZG93IERPTS4KKworICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuY3NzOgorICAgICAg
ICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgLmRyb3BwZWQpOiBBZGRlZDsg
c2V0cyAiZGlzcGxheTogbm9uZSIuCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21l
ZGlhQ29udHJvbHNBcHBsZS5qczoKKyAgICAgICAgKENvbnRyb2xsZXIpOiBTZXQgZGVmYXVsdHMg
Zm9yIG5ldyB2YXJpYWJsZXMuCisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVD
b250cm9scyk6IFVwZGF0ZSB0aGUgY29udHJvbHMgd2lkdGg7IG1vdmVkIGZyb20gaU9TLmpzLgor
ICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlUmVhZHlTdGF0ZUNoYW5nZSk6IFVw
ZGF0ZSB0aGUgY29udHJvbHM7IG1vdmVkIGZyb20gaU9TLmpzLgorICAgICAgICAoQ29udHJvbGxl
ci5wcm90b3R5cGUuaGFuZGxlVGltZVVwZGF0ZSk6IFVwZGF0ZSB0aGUgcHJvZ3Jlc3M7IG1vdmVk
IGZyb20gaU9TLmpzLgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlVGltZWxp
bmVJbnB1dCk6IFBhdXNlIGlmIHNjcnViYmluZzsgbW92ZWQgZnJvbSBpT1MuanMuCisgICAgICAg
IChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVUaW1lbGluZUNoYW5nZSk6IFVwZGF0ZSB0aGUg
cHJvZ3Jlc3M7IG1vdmVkIGZyb20gaU9TLmpzLgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5
cGUuc2hvd0NvbnRyb2xzKTogVXBkYXRlIHRoZSBjb250cm9scyB3aWR0aDsgbW92ZWQgZnJvbSBp
T1MuanMuCisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oaWRlQ29udHJvbHMpOiBSZW1v
dmVkIF9wb3RlbnRpYWxseVNjcnViYmluZyBjaGVjazsgbm90IG5lZWRlZCBkdWUgdG8gY2hhbmdl
cworICAgICAgICAgICAgdG8gY29udHJvbHNBbHdheXNWaXNpYmxlKCkuCisgICAgICAgIChDb250
cm9sbGVyLnByb3RvdHlwZS5zY2hlZHVsZVVwZGF0ZUxheW91dEZvckRpc3BsYXllZFdpZHRoKTog
TW92ZWQgZnJvbSBpT1MuanMuCisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5pc0NvbnRy
b2xWaXNpYmxlKTogQWRkZWQ7IGNoZWNrcyB3aGV0aGVyIGNvbnRyb2wgaXMgcGFyZW50ZWQgJiBu
b3QgaGlkZGVuLgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0Rm9y
RGlzcGxheWVkV2lkdGgpOiBNb3ZlZCBmcm9tIGlPUy5qcyBhbmQgcmVmYWN0b3JlZC4KKyAgICAg
ICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmNvbnRyb2xzQWx3YXlzVmlzaWJsZSk6IFJldHVybiB0
cnVlIGlmIHNjcnViYmluZy4KKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUhh
c0F1ZGlvKTogQ2hlY2sgY3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpOyBtb3ZlZCBm
cm9tIGlPUy5qcy4KKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmdldCBzY3J1YmJpbmcp
OiBTaW1wbGUgZ2V0dGVyIGZvciBfc2NydWJiaW5nLgorICAgICAgICAoQ29udHJvbGxlci5wcm90
b3R5cGUuc2V0IHNjcnViYmluZyk6IENoZWNrIHBsYXkgc3RhdGUgaWYgc2NydWJiaW5nOyBzdGFy
dCBwbGF5YmFjayAoaWYgbmVjZXNzYXJ5KQorICAgICAgICAgICAgaWYgbm90IHNjcnViYmluZy4K
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmdldCBwYWdlU2NhbGVGYWN0b3IpOiBNb3Zl
ZCBmcm9tIGlPUy5qcy4KKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNldCBwYWdlU2Nh
bGVGYWN0b3IpOiBEaXR0by4KKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZVJv
b3RSZXNpemUpOiBTY2hlZHVsZSBhbiB1cGRhdGUgb2YgdGhlIGNvbnRydG9scyB3aWR0aC4KKwor
ICAgICAgICBSZW1vdmUgYSBidW5jaCBvZiBuZXdseSB1bm5lY2Vzc2FyeSBjb2RlIGZyb20gdGhl
IGlPUyBtZWRpYSBjb250cm9sczoKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9t
ZWRpYUNvbnRyb2xzaU9TLmpzOgorICAgICAgICAoQ29udHJvbGxlcklPUyk6CisgICAgICAgIChD
b250cm9sbGVySU9TLnByb3RvdHlwZS5jcmVhdGVDb250cm9scyk6IFJlbW92ZSBpdmFycyBtb3Zl
ZCBpbnRvIEFwcGxlLmpzLgorICAgICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUuY29uZmln
dXJlSW5saW5lQ29udHJvbHMpOiBSZW1vdmUgc3BhY2VyOyBtYWRlIHVubmVjZXNzYXJ5LgorICAg
ICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUuc2hvd0NvbnRyb2xzKTogRGVsZXRlZC4KKyAg
ICAgICAgKENvbnRyb2xsZXJJT1MucHJvdG90eXBlLnVwZGF0ZVRpbWUpOiBEZWxldGVkLgorICAg
ICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUuaGFuZGxlVGltZWxpbmVUb3VjaFN0YXJ0KTog
SnVzdCBjYWxsICJzY3J1YmJpbmcgPSB0cnVlIiwgaGFuZGxlZCBpbiBBcHBsZS5qcy4KKyAgICAg
ICAgKENvbnRyb2xsZXJJT1MucHJvdG90eXBlLmhhbmRsZVRpbWVsaW5lVG91Y2hFbmQpOiBKdXN0
IGNhbGwgInNjcnViYmluZyA9IGZhbHNlIiwgaGFuZGxlZCBpbiBBcHBsZS5qcy4KKyAgICAgICAg
KENvbnRyb2xsZXJJT1MucHJvdG90eXBlLmhhbmRsZVJlYWR5U3RhdGVDaGFuZ2UpOiBEZWxldGVk
LgorICAgICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUuc2V0UGxheWluZyk6IERvbid0IGNo
ZWNrIF90aW1lbGluZUlzSGlkZGVuOyBub3QgbmVlZGVkLgorICAgICAgICAoQ29udHJvbGxlcklP
Uy5wcm90b3R5cGUuZ2V0IHBhZ2VTY2FsZUZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChDb250
cm9sbGVySU9TLnByb3RvdHlwZS5zZXQgcGFnZVNjYWxlRmFjdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKENvbnRyb2xsZXJJT1MucHJvdG90eXBlLnNjaGVkdWxlVXBkYXRlTGF5b3V0Rm9yRGlzcGxh
eWVkV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGV1cGRh
dGVMYXlvdXRGb3JEaXNwbGF5ZWRXaWR0aCk6IERlbGV0ZWQuCisKKyAgICAgICAgRmlyZSBhICJy
ZXNpemUiIGV2ZW50IGF0IHRoZSBzaGFkb3cgRE9NIHJvb3Qgd2hlbiBsYXlvdXQgcmVzdWx0cyBp
biBhIHNpemUgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKTog
RmlyZSB0aGUgInJlc2l6ZSIgZXZlbnQgYXQgdGhlIHNoYWRvdyBET00uCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhOjpsYXlvdXQpOiBUcmlnZ2VyIGxheW91
dFNpemVDaGFuZ2VkKCkKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWEuaDoKKworICAg
ICAgICBEcml2ZS1ieSBmaXhlczoKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9t
ZWRpYUNvbnRyb2xzQXBwbGUuanM6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5jcmVh
dGVDb250cm9scyk6IGFyaWEtbGFiZWwgdGV4dCBpcyB0b3RhbGx5IHdyb25nOyByZW1vdmVkLgor
ICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlV2lyZWxlc3NQbGF5YmFja1N0YXR1
cyk6IFVzZSBjbGFzcy1uYW1lcyB0byBoaWRlIGNvbnRyb2xzLCBub3QgaW5saW5lIHN0eWxlcy4K
KwogMjAxNS0wNS0xNCAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkanVzdCBidXR0b24gQ1NTIGFuZCBwb3NpdGlvbmluZyBpbiBwcmVwYXJhdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRy
b2xzQXBwbGUuY3NzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlh
Q29udHJvbHNBcHBsZS5jc3MKaW5kZXggNDI4OGQ3ZDI1ZDk4ZmY5NmQ0YmI4OTg0ZTZmZDYzNzg0
OTBmNjI4My4uZTQwMmY1YWIzMTVmZDY1YWFlYjI0MzY5N2JlZTg1MjY4Y2MyMjkyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNB
cHBsZS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlh
Q29udHJvbHNBcHBsZS5jc3MKQEAgLTU5OSw3ICs1OTksOSBAQCBhdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1wYW5lbC5oaWRkZW4gewogfQogCiB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1wYW5lbCAuaGlkZGVuLAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwg
LmhpZGRlbiB7CithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCAuaGlkZGVuLAor
dmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgLmRyb3BwZWQsCithdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCAuZHJvcHBlZCB7CiAgICAgZGlzcGxheTogbm9uZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21l
ZGlhQ29udHJvbHNBcHBsZS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9tZWRpYUNvbnRyb2xzQXBwbGUuanMKaW5kZXggMGVkMjAwNjk1MWIzMTE5OTIxYmRlY2U5MmRm
YWY4NzdlZmRkZTEzNi4uYWIxMTFmYWI1ZTQxOWYzNzA1MjhlZDRlMjA5NmY2YjE1ZTJlOGNkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29u
dHJvbHNBcHBsZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMv
bWVkaWFDb250cm9sc0FwcGxlLmpzCkBAIC0xNyw2ICsxNyw5IEBAIGZ1bmN0aW9uIENvbnRyb2xs
ZXIocm9vdCwgdmlkZW8sIGhvc3QpCiAgICAgdGhpcy5jdXJyZW50VGFyZ2V0SXNXaXJlbGVzcyA9
IGZhbHNlOwogICAgIHRoaXMud2lyZWxlc3NQbGF5YmFja0Rpc2FibGVkID0gZmFsc2U7CiAgICAg
dGhpcy5pc1ZvbHVtZVNsaWRlckFjdGl2ZSA9IGZhbHNlOworICAgIHRoaXMuY3VycmVudERpc3Bs
YXlXaWR0aCA9IDA7CisgICAgdGhpcy5fc2NydWJiaW5nID0gZmFsc2U7CisgICAgdGhpcy5fcGFn
ZVNjYWxlRmFjdG9yID0gMTsKIAogICAgIHRoaXMuYWRkVmlkZW9MaXN0ZW5lcnMoKTsKICAgICB0
aGlzLmNyZWF0ZUJhc2UoKTsKQEAgLTM3LDYgKzQwLDkgQEAgZnVuY3Rpb24gQ29udHJvbGxlcihy
b290LCB2aWRlbywgaG9zdCkKICAgICB0aGlzLnVwZGF0ZUhhc1ZpZGVvKCk7CiAgICAgdGhpcy51
cGRhdGVXaXJlbGVzc1RhcmdldEF2YWlsYWJsZSgpOwogICAgIHRoaXMudXBkYXRlV2lyZWxlc3NQ
bGF5YmFja1N0YXR1cygpOworICAgIHRoaXMuc2NoZWR1bGVVcGRhdGVMYXlvdXRGb3JEaXNwbGF5
ZWRXaWR0aCgpOworCisgICAgdGhpcy5saXN0ZW5Gb3IodGhpcy5yb290LCAncmVzaXplJywgdGhp
cy5oYW5kbGVSb290UmVzaXplKTsKIH07CiAKIC8qIEVudW1zICovCkBAIC04MSw2ICs4Nyw3IEBA
IENvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgIFNlZWtEZWxheTogMTUwMCwKICAgICBDbGFz
c05hbWVzOiB7CiAgICAgICAgIGFjdGl2ZTogJ2FjdGl2ZScsCisgICAgICAgIGRyb3BwZWQ6ICdk
cm9wcGVkJywKICAgICAgICAgZXhpdDogJ2V4aXQnLAogICAgICAgICBmYWlsZWQ6ICdmYWlsZWQn
LAogICAgICAgICBoaWRkZW46ICdoaWRkZW4nLApAQCAtMTE4LDYgKzEyNSw4IEBAIENvbnRyb2xs
ZXIucHJvdG90eXBlID0gewogICAgICAgICByaWdodDogMzksCiAgICAgICAgIGRvd246IDQwCiAg
ICAgfSwKKyAgICBNaW5pbXVtVGltZWxpbmVXaWR0aDogMTUwLAorICAgIEJ1dHRvbldpZHRoOiAz
MiwKIAogICAgIGV4dGVuZDogZnVuY3Rpb24oY2hpbGQpCiAgICAgewpAQCAtNDU3LDggKzQ2Niw3
IEBAIENvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgICAgICBpbmxpbmVQbGF5YmFja1BsYWNl
aG9sZGVyLnNldEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMtd2ly
ZWxlc3MtcGxheWJhY2stc3RhdHVzJyk7CiAgICAgICAgIGlmICghQ29udHJvbGxlci5nU2ltdWxh
dGVPcHRpbWl6ZWRGdWxsc2NyZWVuQXZhaWxhYmxlKQogICAgICAgICAgICAgaW5saW5lUGxheWJh
Y2tQbGFjZWhvbGRlci5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwotICAg
ICAgICBpbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcs
IHRoaXMuVUlTdHJpbmcoJ0Rpc3BsYXkgT3B0aW1pemVkIEZ1bGwgU2NyZWVuJykpOwotICAgICAg
ICAKKwogICAgICAgICB2YXIgaW5saW5lUGxheWJhY2tQbGFjZWhvbGRlclRleHQgPSB0aGlzLmNv
bnRyb2xzLmlubGluZVBsYXliYWNrUGxhY2Vob2xkZXJUZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CiAgICAgICAgIGlubGluZVBsYXliYWNrUGxhY2Vob2xkZXJUZXh0LnNldEF0
dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMtd2lyZWxlc3MtcGxheWJh
Y2stdGV4dCcpOwogICAgICAgICAKQEAgLTU5Myw2ICs2MDEsOCBAQCBDb250cm9sbGVyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5zZXRDb250cm9sc1R5cGUo
Q29udHJvbGxlci5JbmxpbmVDb250cm9scyk7CiAKKyAgICAgICAgdGhpcy5zZXROZWVkc1VwZGF0
ZUZvckRpc3BsYXllZFdpZHRoKCk7CisgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0Rm9yRGlzcGxh
eWVkV2lkdGgoKTsKICAgICAgICAgdGhpcy5zZXROZWVkc1RpbWVsaW5lTWV0cmljc1VwZGF0ZSgp
OwogICAgIH0sCiAKQEAgLTY1NywxMiArNjY3LDE1IEBAIENvbnRyb2xsZXIucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLnVwZGF0ZUZ1bGxzY3JlZW5CdXR0b25zKCk7CiAgICAgICAgIHRoaXMu
dXBkYXRlV2lyZWxlc3NUYXJnZXRQaWNrZXJCdXR0b24oKTsKICAgICAgICAgdGhpcy51cGRhdGVQ
cm9ncmVzcygpOworICAgICAgICB0aGlzLnVwZGF0ZUNvbnRyb2xzKCk7CiAgICAgfSwKIAogICAg
IGhhbmRsZVRpbWVVcGRhdGU6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKCF0
aGlzLnNjcnViYmluZykKKyAgICAgICAgaWYgKCF0aGlzLnNjcnViYmluZykgewogICAgICAgICAg
ICAgdGhpcy51cGRhdGVUaW1lKCk7CisgICAgICAgICAgICB0aGlzLnVwZGF0ZVByb2dyZXNzKCk7
CisgICAgICAgIH0KICAgICAgICAgdGhpcy5kcmF3VGltZWxpbmVCYWNrZ3JvdW5kKCk7CiAgICAg
fSwKIApAQCAtODUxLDYgKzg2NCw5IEBAIENvbnRyb2xsZXIucHJvdG90eXBlID0gewogCiAgICAg
aGFuZGxlVGltZWxpbmVJbnB1dDogZnVuY3Rpb24oZXZlbnQpCiAgICAgeworICAgICAgICBpZiAo
dGhpcy5zY3J1YmJpbmcpCisgICAgICAgICAgICB0aGlzLnZpZGVvLnBhdXNlKCk7CisKICAgICAg
ICAgdGhpcy52aWRlby5mYXN0U2Vlayh0aGlzLmNvbnRyb2xzLnRpbWVsaW5lLnZhbHVlKTsKICAg
ICAgICAgdGhpcy51cGRhdGVDb250cm9sc1doaWxlU2NydWJiaW5nKCk7CiAgICAgfSwKQEAgLTg1
OCw2ICs4NzQsNyBAQCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICBoYW5kbGVUaW1lbGlu
ZUNoYW5nZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnZpZGVvLmN1cnJl
bnRUaW1lID0gdGhpcy5jb250cm9scy50aW1lbGluZS52YWx1ZTsKKyAgICAgICAgdGhpcy51cGRh
dGVQcm9ncmVzcygpOwogICAgIH0sCiAKICAgICBoYW5kbGVUaW1lbGluZURvd246IGZ1bmN0aW9u
KGV2ZW50KQpAQCAtOTk1LDYgKzEwMTIsOCBAQCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdmFyIHNob3VsZEJlSGlkZGVuID0gIXRoaXMudmlkZW8ud2Via2l0U3VwcG9ydHNGdWxs
c2NyZWVuIHx8ICF0aGlzLmhhc1ZpZGVvKCk7CiAgICAgICAgIHRoaXMuY29udHJvbHMuZnVsbHNj
cmVlbkJ1dHRvbi5jbGFzc0xpc3QudG9nZ2xlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4sIHNob3Vs
ZEJlSGlkZGVuKTsKICAgICAgICAgdGhpcy5jb250cm9scy5vcHRpbWl6ZWRGdWxsc2NyZWVuQnV0
dG9uLmNsYXNzTGlzdC50b2dnbGUodGhpcy5DbGFzc05hbWVzLmhpZGRlbiwgc2hvdWxkQmVIaWRk
ZW4pOworICAgICAgICB0aGlzLnNldE5lZWRzVXBkYXRlRm9yRGlzcGxheWVkV2lkdGgoKTsKKyAg
ICAgICAgdGhpcy51cGRhdGVMYXlvdXRGb3JEaXNwbGF5ZWRXaWR0aCgpOwogICAgIH0sCiAKICAg
ICBoYW5kbGVGdWxsc2NyZWVuQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC0xMzQ2
LDYgKzEzNjUsNyBAQCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMu
c2hvd0lubGluZVBsYXliYWNrUGxhY2Vob2xkZXJPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKKyAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRGb3JEaXNwbGF5ZWRXaWR0aCgpOwogICAgICAg
ICB0aGlzLnNldE5lZWRzVGltZWxpbmVNZXRyaWNzVXBkYXRlKCk7CiAgICAgICAgIHRoaXMudXBk
YXRlVGltZSh0cnVlKTsKICAgICAgICAgdGhpcy51cGRhdGVQcm9ncmVzcyh0cnVlKTsKQEAgLTEz
NjIsNyArMTM4Miw3IEBAIENvbnRyb2xsZXIucHJvdG90eXBlID0gewogCiAgICAgaGlkZUNvbnRy
b2xzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5jb250cm9sc0Fsd2F5c1Zp
c2libGUoKSB8fCB0aGlzLl9wb3RlbnRpYWxseVNjcnViYmluZykKKyAgICAgICAgaWYgKHRoaXMu
Y29udHJvbHNBbHdheXNWaXNpYmxlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
dGhpcy51cGRhdGVTaG91bGRMaXN0ZW5Gb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50
KCk7CkBAIC0xMzcxLDkgKzEzOTEsNjYgQEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsQmFja2dyb3VuZC5jbGFzc0xpc3QucmVtb3ZlKHRo
aXMuQ2xhc3NOYW1lcy5zaG93KTsKICAgICB9LAogCisgICAgc2V0TmVlZHNVcGRhdGVGb3JEaXNw
bGF5ZWRXaWR0aDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5jdXJyZW50RGlzcGxh
eVdpZHRoID0gMDsKKyAgICB9LAorCisgICAgc2NoZWR1bGVVcGRhdGVMYXlvdXRGb3JEaXNwbGF5
ZWRXaWR0aDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgc2V0VGltZW91dCh0aGlzLnVwZGF0
ZUxheW91dEZvckRpc3BsYXllZFdpZHRoLmJpbmQodGhpcyksIDApOworICAgIH0sCisKKyAgICBp
c0NvbnRyb2xWaXNpYmxlOiBmdW5jdGlvbihjb250cm9sKQorICAgIHsKKyAgICAgICAgaWYgKCFj
b250cm9sKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXRoaXMucm9v
dC5jb250YWlucyhjb250cm9sKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuICFjb250cm9sLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLkNsYXNzTmFtZXMuaGlkZGVu
KQorICAgIH0sCisKKyAgICB1cGRhdGVMYXlvdXRGb3JEaXNwbGF5ZWRXaWR0aDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2xzIHx8ICF0aGlzLmNvbnRyb2xzLnBh
bmVsKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciB2aXNpYmxlV2lkdGggPSB0
aGlzLmNvbnRyb2xzLnBhbmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICogdGhpcy5f
cGFnZVNjYWxlRmFjdG9yOworICAgICAgICBpZiAodmlzaWJsZVdpZHRoIDw9IDAgfHwgdmlzaWJs
ZVdpZHRoID09IHRoaXMuY3VycmVudERpc3BsYXlXaWR0aCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB0aGlzLmN1cnJlbnREaXNwbGF5V2lkdGggPSB2aXNpYmxlV2lkdGg7CisKKyAg
ICAgICAgLy8gRmlsdGVyIGFsbCB0aGUgYnV0dG9ucyB3aGljaCBhcmUgbm90IGV4cGxpY2l0bHkg
aGlkZGVuLgorICAgICAgICB2YXIgYnV0dG9ucyA9IFt0aGlzLmNvbnRyb2xzLnBsYXlCdXR0b24s
IHRoaXMuY29udHJvbHMucmV3aW5kQnV0dG9uLCB0aGlzLmNvbnRyb2xzLmNhcHRpb25CdXR0b24s
CisgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMuZnVsbHNjcmVlbkJ1dHRvbiwg
dGhpcy5jb250cm9scy5vcHRpbWl6ZWRGdWxsc2NyZWVuQnV0dG9uLAorICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLmNvbnRyb2xzLndpcmVsZXNzVGFyZ2V0UGlja2VyLCB0aGlzLmNvbnRyb2xz
Lm11dGVCb3hdOworICAgICAgICB2YXIgdmlzaWJsZUJ1dHRvbnMgPSBidXR0b25zLmZpbHRlcih0
aGlzLmlzQ29udHJvbFZpc2libGUsIHRoaXMpOworCisgICAgICAgIC8vIFRoaXMgdGVsbHMgdXMg
aG93IG11Y2ggcm9vbSB3ZSBuZWVkIGluIG9yZGVyIHRvIGRpc3BsYXkgZXZlcnkgdmlzaWJsZSBi
dXR0b24uCisgICAgICAgIHZhciB2aXNpYmxlQnV0dG9uV2lkdGggPSB0aGlzLkJ1dHRvbldpZHRo
ICogdmlzaWJsZUJ1dHRvbnMubGVuZ3RoOworCisgICAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGlz
IGVub3VnaCByb29tIGZvciB0aGUgc2NydWJiZXIuCisgICAgICAgIHZhciBzaG91bGREcm9wVGlt
ZWxpbmUgPSAodmlzaWJsZVdpZHRoIC0gdmlzaWJsZUJ1dHRvbldpZHRoKSA8IHRoaXMuTWluaW11
bVRpbWVsaW5lV2lkdGg7CisgICAgICAgIHRoaXMuY29udHJvbHMuY3VycmVudFRpbWUuY2xhc3NM
aXN0LnRvZ2dsZSh0aGlzLkNsYXNzTmFtZXMuZHJvcHBlZCwgc2hvdWxkRHJvcFRpbWVsaW5lKTsK
KyAgICAgICAgdGhpcy5jb250cm9scy50aHVtYm5haWxUcmFjay5jbGFzc0xpc3QudG9nZ2xlKHRo
aXMuQ2xhc3NOYW1lcy5kcm9wcGVkLCBzaG91bGREcm9wVGltZWxpbmUpOworICAgICAgICB0aGlz
LmNvbnRyb2xzLnJlbWFpbmluZ1RpbWUuY2xhc3NMaXN0LnRvZ2dsZSh0aGlzLkNsYXNzTmFtZXMu
ZHJvcHBlZCwgc2hvdWxkRHJvcFRpbWVsaW5lKTsKKworICAgICAgICAvLyBUaGVuIGNvbnRyb2xz
IGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6CisgICAgICAgIHZhciByZW1vdmVPcmRlciA9IFt0aGlz
LmNvbnRyb2xzLndpcmVsZXNzVGFyZ2V0UGlja2VyLCB0aGlzLmNvbnRyb2xzLm9wdGltaXplZEZ1
bGxzY3JlZW5CdXR0b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xz
LmNhcHRpb25CdXR0b24sIHRoaXMuY29udHJvbHMubXV0ZUJveCwgdGhpcy5jb250cm9scy5yZXdp
bmRCdXR0b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmZ1bGxz
Y3JlZW5CdXR0b25dOworICAgICAgICByZW1vdmVPcmRlci5mb3JFYWNoKGZ1bmN0aW9uKGNvbnRy
b2wpIHsKKyAgICAgICAgICAgIHZhciBzaG91bGREcm9wQ29udHJvbCA9IHZpc2libGVXaWR0aCA8
IHZpc2libGVCdXR0b25XaWR0aCAmJiB0aGlzLmlzQ29udHJvbFZpc2libGUoY29udHJvbCk7Cisg
ICAgICAgICAgICBjb250cm9sLmNsYXNzTGlzdC50b2dnbGUodGhpcy5DbGFzc05hbWVzLmRyb3Bw
ZWQsIHNob3VsZERyb3BDb250cm9sKTsKKyAgICAgICAgICAgIGlmIChzaG91bGREcm9wQ29udHJv
bCkKKyAgICAgICAgICAgICAgICB2aXNpYmxlQnV0dG9uV2lkdGggLT0gdGhpcy5CdXR0b25XaWR0
aDsKKyAgICAgICAgfSwgdGhpcyk7CisgICAgfSwKKwogICAgIGNvbnRyb2xzQWx3YXlzVmlzaWJs
ZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaXNBdWRpbygpIHx8IHRo
aXMuY3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpOworICAgICAgICByZXR1cm4gdGhp
cy5pc0F1ZGlvKCkgfHwgdGhpcy5jdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCkgfHwg
dGhpcy5zY3J1YmJpbmc7CiAgICAgfSwKIAogICAgIGNvbnRyb2xzQXJlSGlkZGVuOiBmdW5jdGlv
bigpCkBAIC0xNDcyLDYgKzE1NDksOCBAQCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuY29udHJvbHMuY2FwdGlvbkJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKHRoaXMu
Q2xhc3NOYW1lcy5oaWRkZW4pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLmNvbnRy
b2xzLmNhcHRpb25CdXR0b24uY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsK
KyAgICAgICAgdGhpcy5zZXROZWVkc1VwZGF0ZUZvckRpc3BsYXllZFdpZHRoKCk7CisgICAgICAg
IHRoaXMudXBkYXRlTGF5b3V0Rm9yRGlzcGxheWVkV2lkdGgoKTsKICAgICB9LAogCiAgICAgdXBk
YXRlQ2FwdGlvbkNvbnRhaW5lcjogZnVuY3Rpb24oKQpAQCAtMTc0NCwxMCArMTgyMywxMyBAQCBD
b250cm9sbGVyLnByb3RvdHlwZSA9IHsKIAogICAgIHVwZGF0ZUhhc0F1ZGlvOiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICBpZiAodGhpcy52aWRlby5hdWRpb1RyYWNrcy5sZW5ndGgpCisgICAg
ICAgIGlmICh0aGlzLnZpZGVvLmF1ZGlvVHJhY2tzLmxlbmd0aCAmJiAhdGhpcy5jdXJyZW50UGxh
eWJhY2tUYXJnZXRJc1dpcmVsZXNzKCkpCiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLm11dGVC
b3guY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgdGhpcy5jb250cm9scy5tdXRlQm94LmNsYXNzTGlzdC5hZGQodGhpcy5D
bGFzc05hbWVzLmhpZGRlbik7CisKKyAgICAgICAgdGhpcy5zZXROZWVkc1VwZGF0ZUZvckRpc3Bs
YXllZFdpZHRoKCk7CisgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0Rm9yRGlzcGxheWVkV2lkdGgo
KTsKICAgICB9LAogCiAgICAgdXBkYXRlSGFzVmlkZW86IGZ1bmN0aW9uKCkKQEAgLTE4NDQsMjAg
KzE5MjYsMTggQEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdGhp
cy5jb250cm9scy5pbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyVGV4dFRvcC5jbGFzc0xpc3QucmVt
b3ZlKHRoaXMuQ2xhc3NOYW1lcy5zbWFsbCk7CiAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9s
cy5pbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyVGV4dEJvdHRvbS5jbGFzc0xpc3QucmVtb3ZlKHRo
aXMuQ2xhc3NOYW1lcy5zbWFsbCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodGhp
cy5pc0Z1bGxTY3JlZW4oKSkKLSAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnZvbHVtZUJv
eC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHRoaXMuY29udHJvbHMubXV0ZUJveC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAg
ICAgICAgdGhpcy5jb250cm9scy52b2x1bWVCb3guY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFt
ZXMuaGlkZGVuKTsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMubXV0ZUJveC5jbGFzc0xpc3Qu
YWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwogICAgICAgICAgICAgdGhpcy51cGRhdGVCYXNl
KCk7CiAgICAgICAgICAgICB0aGlzLnNob3dDb250cm9scygpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgdGhpcy5jb250cm9scy5pbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyLmNsYXNz
TGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CiAgICAgICAgICAgICB0aGlzLmNvbnRy
b2xzLndpcmVsZXNzVGFyZ2V0UGlja2VyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVz
LnBsYXlpbmcpOwotICAgICAgICAgICAgaWYgKHRoaXMuaXNGdWxsU2NyZWVuKCkpCi0gICAgICAg
ICAgICAgICAgdGhpcy5jb250cm9scy52b2x1bWVCb3guc3R5bGUuZGlzcGxheSA9ICItd2Via2l0
LWZsZXgiOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMu
bXV0ZUJveC5zdHlsZS5kaXNwbGF5ID0gIi13ZWJraXQtZmxleCI7CisgICAgICAgICAgICB0aGlz
LmNvbnRyb2xzLnZvbHVtZUJveC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRk
ZW4pOworICAgICAgICAgICAgdGhpcy5jb250cm9scy5tdXRlQm94LmNsYXNzTGlzdC5yZW1vdmUo
dGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CiAgICAgICAgIH0KKyAgICAgICAgdGhpcy5zZXROZWVk
c1VwZGF0ZUZvckRpc3BsYXllZFdpZHRoKCk7CisgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0Rm9y
RGlzcGxheWVkV2lkdGgoKTsKICAgICAgICAgdGhpcy51cGRhdGVXaXJlbGVzc1RhcmdldFBpY2tl
ckJ1dHRvbigpOwogICAgIH0sCiAKQEAgLTE4NzMsNiArMTk1Myw4IEBAIENvbnRyb2xsZXIucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5jb250cm9scy53aXJlbGVzc1RhcmdldFBpY2tl
ci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLndpcmVsZXNzVGFyZ2V0UGlja2VyLmNsYXNzTGlz
dC5hZGQodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CisgICAgICAgIHRoaXMuc2V0TmVlZHNVcGRh
dGVGb3JEaXNwbGF5ZWRXaWR0aCgpOworICAgICAgICB0aGlzLnVwZGF0ZUxheW91dEZvckRpc3Bs
YXllZFdpZHRoKCk7CiAgICAgfSwKIAogICAgIGhhbmRsZVdpcmVsZXNzUGlja2VyQnV0dG9uQ2xp
Y2tlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC0xOTE4LDQgKzIwMDAsNTAgQEAgQ29udHJvbGxlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRQbGF5YmFja1RhcmdldElz
V2lyZWxlc3MoKSAmJiAhdGhpcy52aWRlby5jb250cm9sczsKICAgICB9LAogCisgICAgZ2V0IHNj
cnViYmluZygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc2NydWJiaW5nOworICAgIH0s
CisKKyAgICBzZXQgc2NydWJiaW5nKGZsYWcpCisgICAgeworICAgICAgICBpZiAodGhpcy5fc2Ny
dWJiaW5nID09IGZsYWcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3NjcnVi
YmluZyA9IGZsYWc7CisKKyAgICAgICAgaWYgKHRoaXMuX3NjcnViYmluZykKKyAgICAgICAgICAg
IHRoaXMud2FzUGxheWluZ1doZW5TY3J1YmJpbmdTdGFydGVkID0gIXRoaXMudmlkZW8ucGF1c2Vk
OworICAgICAgICBlbHNlIGlmICh0aGlzLndhc1BsYXlpbmdXaGVuU2NydWJiaW5nU3RhcnRlZCAm
JiB0aGlzLnZpZGVvLnBhdXNlZCkgeworICAgICAgICAgICAgdGhpcy52aWRlby5wbGF5KCk7Cisg
ICAgICAgICAgICB0aGlzLnJlc2V0SGlkZUNvbnRyb2xzVGltZXIoKTsKKyAgICAgICAgfQorICAg
IH0sCisKKyAgICBnZXQgcGFnZVNjYWxlRmFjdG9yKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9wYWdlU2NhbGVGYWN0b3I7CisgICAgfSwKKworICAgIHNldCBwYWdlU2NhbGVGYWN0b3Io
bmV3U2NhbGVGYWN0b3IpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcGFnZVNjYWxlRmFjdG9y
ID09PSBuZXdTY2FsZUZhY3RvcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz
Ll9wYWdlU2NhbGVGYWN0b3IgPSBuZXdTY2FsZUZhY3RvcjsKKworICAgICAgICAvLyBGSVhNRTog
dGhpcyBzaG91bGQgcmVhY3QgdG8gdGhlIHNjYWxlIGNoYW5nZSBieQorICAgICAgICAvLyB1bnNj
YWxpbmcgdGhlIGNvbnRyb2xzIHBhbmVsLiBIb3dldmVyLCB0aGlzCisgICAgICAgIC8vIGhpdHMg
YSBidWcgd2l0aCB0aGUgYmFja2Ryb3AgYmx1ciBsYXllciBnZXR0aW5nCisgICAgICAgIC8vIHRv
byBiaWcgYW5kIG1vdmluZyB0byBhIHRpbGVkIGxheWVyLgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMzE3CisgICAgfSwKKworICAgIGhhbmRs
ZVJvb3RSZXNpemU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVM
YXlvdXRGb3JEaXNwbGF5ZWRXaWR0aCgpOworICAgICAgICB0aGlzLnNldE5lZWRzVGltZWxpbmVN
ZXRyaWNzVXBkYXRlKCk7CisgICAgICAgIHRoaXMudXBkYXRlVGltZWxpbmVNZXRyaWNzSWZOZWVk
ZWQoKTsKKyAgICAgICAgdGhpcy5kcmF3VGltZWxpbmVCYWNrZ3JvdW5kKCk7CisgICAgfQorCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlh
Q29udHJvbHNpT1MuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVk
aWFDb250cm9sc2lPUy5qcwppbmRleCA5NmM3N2QyNGFhZmFlM2NiZDk2N2I1M2NlZGQxMmVlMTg4
ZWNkNTdkLi43ZWE0ODEyOTc0NzljZGQwMWViMjRmMGJjNzFkZTU2NjRmMzE4ZTZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc2lP
Uy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250
cm9sc2lPUy5qcwpAQCAtMTYsMjIgKzE2LDIxIEBAIGZ1bmN0aW9uIENvbnRyb2xsZXJJT1Mocm9v
dCwgdmlkZW8sIGhvc3QpCiAKICAgICB0aGlzLl90aW1lbGluZUlzSGlkZGVuID0gZmFsc2U7CiAg
ICAgdGhpcy5fY3VycmVudERpc3BsYXlXaWR0aCA9IDA7Ci0gICAgdGhpcy5fcG90ZW50aWFsbHlT
Y3J1YmJpbmcgPSBmYWxzZTsKICAgICB0aGlzLnNjaGVkdWxlVXBkYXRlTGF5b3V0Rm9yRGlzcGxh
eWVkV2lkdGgoKTsKIAogICAgIGhvc3QuY29udHJvbHNEZXBlbmRPblBhZ2VTY2FsZUZhY3RvciA9
IHRydWU7CiAgICAgdGhpcy5kb2luZ1NldHVwID0gZmFsc2U7CiB9OwogCi0vKiBDb25zdGFudHMg
Ki8KLUNvbnRyb2xsZXJJT1MuTWluaW11bVRpbWVsaW5lV2lkdGggPSAyMDA7Ci1Db250cm9sbGVy
SU9TLkJ1dHRvbldpZHRoID0gNDI7Ci0KIC8qIEVudW1zICovCiBDb250cm9sbGVySU9TLlN0YXJ0
UGxheWJhY2tDb250cm9scyA9IDI7CiAKIAogQ29udHJvbGxlcklPUy5wcm90b3R5cGUgPSB7Cisg
ICAgLyogQ29uc3RhbnRzICovCisgICAgTWluaW11bVRpbWVsaW5lV2lkdGg6IDIwMCwKKyAgICBC
dXR0b25XaWR0aDogNDIsCisKICAgICBhZGRWaWRlb0xpc3RlbmVyczogZnVuY3Rpb24oKSB7CiAg
ICAgICAgIENvbnRyb2xsZXIucHJvdG90eXBlLmFkZFZpZGVvTGlzdGVuZXJzLmNhbGwodGhpcyk7
CiAKQEAgLTExMiwxMCArMTExLDYgQEAgQ29udHJvbGxlcklPUy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHZhciBwYW5lbEJhY2tncm91bmQgPSB0aGlzLmNvbnRyb2xzLnBhbmVsQmFja2dyb3VuZCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICBwYW5lbEJhY2tncm91bmQu
c2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbC1iYWNr
Z3JvdW5kJyk7CiAKLSAgICAgICAgdmFyIHNwYWNlciA9IHRoaXMuY29udHJvbHMuc3BhY2VyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIHNwYWNlci5zZXRBdHRyaWJ1
dGUoJ3BzZXVkbycsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNwYWNlcicpOwotICAgICAgICBz
cGFjZXIuY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKLQogICAgICAgICB2
YXIgaW5saW5lUGxheWJhY2tQbGFjZWhvbGRlclRleHQgPSB0aGlzLmNvbnRyb2xzLmlubGluZVBs
YXliYWNrUGxhY2Vob2xkZXJUZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAg
ICAgICAgIGlubGluZVBsYXliYWNrUGxhY2Vob2xkZXJUZXh0LnNldEF0dHJpYnV0ZSgncHNldWRv
JywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMtd2lyZWxlc3MtcGxheWJhY2stdGV4dCcpOwogCkBA
IC0xODYsNyArMTgxLDYgQEAgQ29udHJvbGxlcklPUy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuY29udHJvbHMuaW5saW5lUGxheWJhY2tQbGFjZWhvbGRlclRleHQuYXBwZW5kQ2hpbGQodGhp
cy5jb250cm9scy5pbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyVGV4dEJvdHRvbSk7CiAgICAgICAg
IHRoaXMuY29udHJvbHMucGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5wbGF5QnV0dG9u
KTsKICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xz
LnN0YXR1c0Rpc3BsYXkpOwotICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmFwcGVuZENoaWxk
KHRoaXMuY29udHJvbHMuc3BhY2VyKTsKICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5hcHBl
bmRDaGlsZCh0aGlzLmNvbnRyb2xzLnRpbWVsaW5lQm94KTsKICAgICAgICAgdGhpcy5jb250cm9s
cy5wYW5lbC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzLndpcmVsZXNzVGFyZ2V0UGlja2VyKTsK
ICAgICAgICAgaWYgKCF0aGlzLmlzTGl2ZSkgewpAQCAtMjA4LDEzICsyMDIsNiBAQCBDb250cm9s
bGVySU9TLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gRXhwbGljaXRseSBkbyBub3RoaW5nIHRv
IG92ZXJyaWRlIGJhc2UtY2xhc3MgYmVoYXZpb3IuCiAgICAgfSwKIAotICAgIHNob3dDb250cm9s
czogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0Rm9yRGlzcGxheWVkV2lk
dGgoKTsKLSAgICAgICAgdGhpcy51cGRhdGVUaW1lKHRydWUpOwotICAgICAgICB0aGlzLnVwZGF0
ZVByb2dyZXNzKHRydWUpOwotICAgICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5zaG93Q29udHJv
bHMuY2FsbCh0aGlzKTsKLSAgICB9LAotCiAgICAgYWRkQ29udHJvbHM6IGZ1bmN0aW9uKCkgewog
ICAgICAgICB0aGlzLmJhc2UuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5pbmxpbmVQbGF5YmFj
a1BsYWNlaG9sZGVyKTsKICAgICAgICAgdGhpcy5iYXNlLmFwcGVuZENoaWxkKHRoaXMuY29udHJv
bHMucGFuZWxDb250YWluZXIpOwpAQCAtMjM1LDExICsyMjIsNiBAQCBDb250cm9sbGVySU9TLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zZXROZWVkc1RpbWVsaW5lTWV0cmljc1VwZGF0ZSgp
OwogICAgIH0sCiAKLSAgICB1cGRhdGVUaW1lOiBmdW5jdGlvbihmb3JjZVVwZGF0ZSkgewotICAg
ICAgICBDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVUaW1lLmNhbGwodGhpcywgZm9yY2VVcGRh
dGUpOwotICAgICAgICB0aGlzLnVwZGF0ZVByb2dyZXNzKCk7Ci0gICAgfSwKLQogICAgIGRyYXdU
aW1lbGluZUJhY2tncm91bmQ6IGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgd2lkdGggPSB0aGlz
LnRpbWVsaW5lV2lkdGggKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzsKICAgICAgICAgdmFyIGhl
aWdodCA9IHRoaXMudGltZWxpbmVIZWlnaHQgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzsKQEAg
LTQ5MywyMCArNDc1LDggQEAgQ29udHJvbGxlcklPUy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0sCiAKLSAgICBoYW5kbGVUaW1lbGluZUlucHV0OiBmdW5jdGlvbihl
dmVudCkgewotICAgICAgICBpZiAodGhpcy5fcG90ZW50aWFsbHlTY3J1YmJpbmcpCi0gICAgICAg
ICAgICB0aGlzLnZpZGVvLnBhdXNlKCk7Ci0gICAgICAgIENvbnRyb2xsZXIucHJvdG90eXBlLmhh
bmRsZVRpbWVsaW5lSW5wdXQuY2FsbCh0aGlzLCBldmVudCk7Ci0gICAgfSwKLQotICAgIGhhbmRs
ZVRpbWVsaW5lQ2hhbmdlOiBmdW5jdGlvbihldmVudCkgewotICAgICAgICBDb250cm9sbGVyLnBy
b3RvdHlwZS5oYW5kbGVUaW1lbGluZUNoYW5nZS5jYWxsKHRoaXMsIGV2ZW50KTsKLSAgICAgICAg
dGhpcy51cGRhdGVQcm9ncmVzcygpOwotICAgIH0sCi0KICAgICBoYW5kbGVUaW1lbGluZVRvdWNo
U3RhcnQ6IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHRoaXMuX3BvdGVudGlhbGx5U2NydWJi
aW5nID0gdHJ1ZTsKLSAgICAgICAgdGhpcy53YXNQbGF5aW5nV2hlblNjcnViYmluZ1N0YXJ0ZWQg
PSAhdGhpcy52aWRlby5wYXVzZWQ7CisgICAgICAgIHRoaXMuc2NydWJiaW5nID0gdHJ1ZTsKICAg
ICAgICAgdGhpcy5saXN0ZW5Gb3IodGhpcy5jb250cm9scy50aW1lbGluZSwgJ3RvdWNoZW5kJywg
dGhpcy5oYW5kbGVUaW1lbGluZVRvdWNoRW5kKTsKICAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGhp
cy5jb250cm9scy50aW1lbGluZSwgJ3RvdWNoY2FuY2VsJywgdGhpcy5oYW5kbGVUaW1lbGluZVRv
dWNoRW5kKTsKICAgICB9LApAQCAtNTE0LDE2ICs0ODQsNyBAQCBDb250cm9sbGVySU9TLnByb3Rv
dHlwZSA9IHsKICAgICBoYW5kbGVUaW1lbGluZVRvdWNoRW5kOiBmdW5jdGlvbihldmVudCkgewog
ICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmdGb3IodGhpcy5jb250cm9scy50aW1lbGluZSwgJ3Rv
dWNoZW5kJywgdGhpcy5oYW5kbGVUaW1lbGluZVRvdWNoRW5kKTsKICAgICAgICAgdGhpcy5zdG9w
TGlzdGVuaW5nRm9yKHRoaXMuY29udHJvbHMudGltZWxpbmUsICd0b3VjaGNhbmNlbCcsIHRoaXMu
aGFuZGxlVGltZWxpbmVUb3VjaEVuZCk7Ci0gICAgICAgIHRoaXMuX3BvdGVudGlhbGx5U2NydWJi
aW5nID0gZmFsc2U7Ci0gICAgICAgIGlmICh0aGlzLndhc1BsYXlpbmdXaGVuU2NydWJiaW5nU3Rh
cnRlZCAmJiB0aGlzLnZpZGVvLnBhdXNlZCkgewotICAgICAgICAgICAgdGhpcy52aWRlby5wbGF5
KCk7Ci0gICAgICAgICAgICB0aGlzLnJlc2V0SGlkZUNvbnRyb2xzVGltZXIoKTsKLSAgICAgICAg
fQotICAgIH0sCi0KLSAgICBoYW5kbGVSZWFkeVN0YXRlQ2hhbmdlOiBmdW5jdGlvbihldmVudCkg
ewotICAgICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVSZWFkeVN0YXRlQ2hhbmdlLmNh
bGwodGhpcywgZXZlbnQpOwotICAgICAgICB0aGlzLnVwZGF0ZUNvbnRyb2xzKCk7CisgICAgICAg
IHRoaXMuc2NydWJiaW5nID0gZmFsc2U7CiAgICAgfSwKIAogICAgIGhhbmRsZVdpcmVsZXNzUGlj
a2VyQnV0dG9uVG91Y2hTdGFydDogZnVuY3Rpb24oKSB7CkBAIC01NjIsMTAgKzUyMyw4IEBAIENv
bnRyb2xsZXJJT1MucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMudXBkYXRlQ29udHJvbHMo
KTsKIAotICAgICAgICBpZiAoaXNQbGF5aW5nICYmIHRoaXMuaXNBdWRpbygpICYmICF0aGlzLl90
aW1lbGluZUlzSGlkZGVuKSB7CisgICAgICAgIGlmIChpc1BsYXlpbmcgJiYgdGhpcy5pc0F1ZGlv
KCkpCiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnRpbWVsaW5lQm94LmNsYXNzTGlzdC5yZW1v
dmUodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7Ci0gICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnNw
YWNlci5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwotICAgICAgICB9CiAK
ICAgICAgICAgaWYgKGlzUGxheWluZykKICAgICAgICAgICAgIHRoaXMuaGFzUGxheWVkID0gdHJ1
ZTsKQEAgLTU4MSwyNSArNTQwLDYgQEAgQ29udHJvbGxlcklPUy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnNldFNob3VsZExpc3RlbkZvclBsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5RXZlbnQuY2FsbCh0aGlzLCBzaG91bGRMaXN0ZW4pOwogICAgIH0sCiAKLSAg
ICBnZXQgcGFnZVNjYWxlRmFjdG9yKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9wYWdl
U2NhbGVGYWN0b3I7Ci0gICAgfSwKLQotICAgIHNldCBwYWdlU2NhbGVGYWN0b3IobmV3U2NhbGVG
YWN0b3IpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcGFnZVNjYWxlRmFjdG9yID09PSBuZXdT
Y2FsZUZhY3RvcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9wYWdlU2Nh
bGVGYWN0b3IgPSBuZXdTY2FsZUZhY3RvcjsKLQotICAgICAgICAvLyBGSVhNRTogdGhpcyBzaG91
bGQgcmVhY3QgdG8gdGhlIHNjYWxlIGNoYW5nZSBieQotICAgICAgICAvLyB1bnNjYWxpbmcgdGhl
IGNvbnRyb2xzIHBhbmVsLiBIb3dldmVyLCB0aGlzCi0gICAgICAgIC8vIGhpdHMgYSBidWcgd2l0
aCB0aGUgYmFja2Ryb3AgYmx1ciBsYXllciBnZXR0aW5nCi0gICAgICAgIC8vIHRvbyBiaWcgYW5k
IG1vdmluZyB0byBhIHRpbGVkIGxheWVyLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMzE3Ci0gICAgfSwKLQogICAgIGhhbmRsZVByZXNlbnRh
dGlvbk1vZGVDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHByZXNl
bnRhdGlvbk1vZGUgPSB0aGlzLnByZXNlbnRhdGlvbk1vZGUoKTsKQEAgLTYyOCw2OSArNTY4LDYg
QEAgQ29udHJvbGxlcklPUy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuaGFuZGxlUHJlc2Vu
dGF0aW9uTW9kZUNoYW5nZShldmVudCk7CiAgICAgfSwKIAotICAgIHNjaGVkdWxlVXBkYXRlTGF5
b3V0Rm9yRGlzcGxheWVkV2lkdGg6IGZ1bmN0aW9uICgpCi0gICAgewotICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0Rm9yRGlzcGxh
eWVkV2lkdGgoKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCAwKTsKLSAgICB9LAotCi0gICAgdXBk
YXRlTGF5b3V0Rm9yRGlzcGxheWVkV2lkdGg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5jb250cm9scyB8fCAhdGhpcy5jb250cm9scy5wYW5lbCkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICB2YXIgdmlzaWJsZVdpZHRoID0gdGhpcy5jb250cm9scy5wYW5lbC5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAqIHRoaXMuX3BhZ2VTY2FsZUZhY3RvcjsKLSAg
ICAgICAgaWYgKHZpc2libGVXaWR0aCA8PSAwIHx8IHZpc2libGVXaWR0aCA9PSB0aGlzLl9jdXJy
ZW50RGlzcGxheVdpZHRoKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2N1
cnJlbnREaXNwbGF5V2lkdGggPSB2aXNpYmxlV2lkdGg7Ci0KLSAgICAgICAgLy8gV2UgbmVlZCB0
byB3b3JrIG91dCBob3cgbWFueSByaWdodC1oYW5kIHNpZGUgYnV0dG9ucyBhcmUgYXZhaWxhYmxl
LgotICAgICAgICB0aGlzLnVwZGF0ZVdpcmVsZXNzVGFyZ2V0QXZhaWxhYmxlKCk7Ci0gICAgICAg
IHRoaXMudXBkYXRlRnVsbHNjcmVlbkJ1dHRvbnMoKTsKLQotICAgICAgICB2YXIgdmlzaWJsZUJ1
dHRvbldpZHRoID0gQ29udHJvbGxlcklPUy5CdXR0b25XaWR0aDsgLy8gV2UgYWx3YXlzIHRyeSB0
byBzaG93IHRoZSBmdWxsc2NyZWVuIGJ1dHRvbi4KLQotICAgICAgICBpZiAoIXRoaXMuY29udHJv
bHMud2lyZWxlc3NUYXJnZXRQaWNrZXIuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuQ2xhc3NOYW1l
cy5oaWRkZW4pKQotICAgICAgICAgICAgdmlzaWJsZUJ1dHRvbldpZHRoICs9IENvbnRyb2xsZXJJ
T1MuQnV0dG9uV2lkdGg7Ci0gICAgICAgIGlmICghdGhpcy5jb250cm9scy5vcHRpbWl6ZWRGdWxs
c2NyZWVuQnV0dG9uLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKSkK
LSAgICAgICAgICAgIHZpc2libGVCdXR0b25XaWR0aCArPSBDb250cm9sbGVySU9TLkJ1dHRvbldp
ZHRoOwotCi0gICAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGVub3VnaCByb29tIGZvciB0aGUg
c2NydWJiZXIuCi0gICAgICAgIGlmICgodmlzaWJsZVdpZHRoIC0gdmlzaWJsZUJ1dHRvbldpZHRo
KSA8IENvbnRyb2xsZXJJT1MuTWluaW11bVRpbWVsaW5lV2lkdGgpIHsKLSAgICAgICAgICAgIHRo
aXMuY29udHJvbHMudGltZWxpbmVCb3guY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuaGlk
ZGVuKTsKLSAgICAgICAgICAgIHRoaXMuY29udHJvbHMuc3BhY2VyLmNsYXNzTGlzdC5yZW1vdmUo
dGhpcy5DbGFzc05hbWVzLmhpZGRlbik7Ci0gICAgICAgICAgICB0aGlzLl90aW1lbGluZUlzSGlk
ZGVuID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5pc0F1
ZGlvKCkgfHwgdGhpcy5oYXNQbGF5ZWQpIHsKLSAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xz
LnRpbWVsaW5lQm94LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5zcGFjZXIuY2xhc3NMaXN0LmFkZCh0aGlzLkNs
YXNzTmFtZXMuaGlkZGVuKTsKLSAgICAgICAgICAgICAgICB0aGlzLl90aW1lbGluZUlzSGlkZGVu
ID0gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLmNvbnRy
b2xzLnNwYWNlci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gRHJvcCB0aGUgYWlycGxheSBidXR0b24gaWYgdGhlcmUgaXNu
J3QgZW5vdWdoIHNwYWNlLgotICAgICAgICBpZiAodmlzaWJsZVdpZHRoIDwgdmlzaWJsZUJ1dHRv
bldpZHRoKSB7Ci0gICAgICAgICAgICB0aGlzLmNvbnRyb2xzLndpcmVsZXNzVGFyZ2V0UGlja2Vy
LmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7Ci0gICAgICAgICAgICB2aXNp
YmxlQnV0dG9uV2lkdGggLT0gQ29udHJvbGxlcklPUy5CdXR0b25XaWR0aDsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIERyb3AgdGhlIG9wdGltaXplZCBmdWxsc2NyZWVuIGJ1dHRvbiBpZiB0aGVy
ZSBzdGlsbCBpc24ndCBlbm91Z2ggc3BhY2UuCi0gICAgICAgIGlmICh2aXNpYmxlV2lkdGggPCB2
aXNpYmxlQnV0dG9uV2lkdGgpIHsKLSAgICAgICAgICAgIHRoaXMuY29udHJvbHMub3B0aW1pemVk
RnVsbHNjcmVlbkJ1dHRvbi5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwot
ICAgICAgICAgICAgdmlzaWJsZUJ1dHRvbldpZHRoIC09IENvbnRyb2xsZXJJT1MuQnV0dG9uV2lk
dGg7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBbmQgZmluYWxseSwgZHJvcCB0aGUgZnVsbHNj
cmVlbiBidXR0b24gYXMgYSBsYXN0IHJlc29ydC4KLSAgICAgICAgaWYgKHZpc2libGVXaWR0aCA8
IHZpc2libGVCdXR0b25XaWR0aCkgewotICAgICAgICAgICAgdGhpcy5jb250cm9scy5mdWxsc2Ny
ZWVuQnV0dG9uLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7Ci0gICAgICAg
ICAgICB2aXNpYmxlQnV0dG9uV2lkdGggLT0gQ29udHJvbGxlcklPUy5CdXR0b25XaWR0aDsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmZ1bGxzY3JlZW5CdXR0b24u
Y2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKLSAgICB9LAotCiAgICAg
Y29udHJvbHNBbHdheXNWaXNpYmxlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5wcmVzZW50YXRpb25Nb2RlKCkgPT09ICdvcHRpbWl6ZWQnKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYTRmMjFjMWY0M2Y5MWVlNTdmN2U1ODEzYmRhOWY4
MWUyYjlkMzBmZS4uMGZmODZhYWMzZTk1MzJjOGM5NTk0ZjM0YThhYmMyZjhiNWQ1YzhkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjEsNiArMjYxLDgg
QEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICAsIG1fcGxheWJhY2tQcm9ncmVzc1RpbWVy
KCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc1RpbWVyRmlyZWQpCiAg
ICAgLCBtX3NjYW5UaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNjYW5UaW1lckZpcmVk
KQogICAgICwgbV9zZWVrVGFza1F1ZXVlKGRvY3VtZW50KQorICAgICwgbV9yZXNpemVUYXNrUXVl
dWUoZG9jdW1lbnQpCisgICAgLCBtX3NoYWRvd0RPTVRhc2tRdWV1ZShkb2N1bWVudCkKICAgICAs
IG1fcGxheWVkVGltZVJhbmdlcygpCiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZSgqdGhpcykKICAg
ICAsIG1fcmVxdWVzdGVkUGxheWJhY2tSYXRlKDEpCkBAIC0zNzc2LDYgKzM3NzgsMTggQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCkKICAgICBleGVjLT5j
bGVhckV4Y2VwdGlvbigpOwogI2VuZGlmCiB9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bGF5
b3V0U2l6ZUNoYW5nZWQoKQoreworI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCisg
ICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IHN0cm9uZ1RoaXMgPSB0aGlzOworICAgIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiB0YXNrID0gW3N0cm9uZ1RoaXNdIHsKKyAgICAgICAgaWYgKFNoYWRv
d1Jvb3QqIHJvb3QgPSBzdHJvbmdUaGlzLT51c2VyQWdlbnRTaGFkb3dSb290KCkpCisgICAgICAg
ICAgICByb290LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoInJlc2l6ZSIsIGZhbHNlLCBm
YWxzZSkpOworICAgIH07CisgICAgbV9yZXNpemVUYXNrUXVldWUuZW5xdWV1ZVRhc2sodGFzayk7
CisjZW5kaWYKK30KICAgICAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0
VHJhY2soVGV4dFRyYWNrKiB0cmFja1RvU2VsZWN0KQogewpAQCAtNTcwNyw3ICs1NzIxLDYgQEAg
U3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVXNlckFnZW50KCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS51c2Vy
QWdlbnQobV9jdXJyZW50U3JjKTsKLQogfQogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKQEAg
LTYwMDIsNiArNjAxNSw3IEBAIHN0YXRpYyB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvclByb3BlcnR5
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgY29udHJvCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKIHsK
ICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KCVwKSIsIHRoaXMpOworCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOwog
ICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAppbmRleCAzYjY2MWFiNzQxMzRhMjEwNzhjMzc5MmZkZDQzMWJiYmMzN2VjYTk4
Li45MmNjZTg2NmY3ZDljNDcwZGYwNjJlYWNkNTUxYjFjNzNlMWMxZTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNDU5LDYgKzQ1OSw4IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBj
b25zdCBvdmVycmlkZTsKIAorICAgIHZvaWQgbGF5b3V0U2l6ZUNoYW5nZWQoKTsKKwogcHJvdGVj
dGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
JiwgYm9vbCk7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwpAQCAtNzQ4LDYgKzc1
MCw4IEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV9wbGF5YmFja1Byb2dyZXNzVGltZXI7CiAgICAg
VGltZXIgbV9zY2FuVGltZXI7CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxTY3JpcHRFeGVjdXRpb25D
b250ZXh0PiBtX3NlZWtUYXNrUXVldWU7CisgICAgR2VuZXJpY1Rhc2tRdWV1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0PiBtX3Jlc2l6ZVRhc2tRdWV1ZTsKKyAgICBHZW5lcmljVGFza1F1ZXVlPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2hhZG93RE9NVGFza1F1ZXVlOwogICAgIFJlZlB0cjxU
aW1lUmFuZ2VzPiBtX3BsYXllZFRpbWVSYW5nZXM7CiAgICAgR2VuZXJpY0V2ZW50UXVldWUgbV9h
c3luY0V2ZW50UXVldWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZWRpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3Bw
CmluZGV4IGFmZWJjOWQ3ODAyNmU5NjdlNzQyMDEwOWM1MDhiMWRjNmRiZmRhNzAuLmQ2NDVmZThl
MDI4MWM2MmFiNWQwMThmMzQ4YzM5ZDg2MWY3NDYwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lZGlhLmNwcApAQCAtNTUsNiArNTUsMTUgQEAgdm9pZCBSZW5kZXJNZWRpYTo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpCiB7CiB9CiAKK3Zv
aWQgUmVuZGVyTWVkaWE6OmxheW91dCgpCit7CisgICAgTGF5b3V0U2l6ZSBvbGRTaXplID0gc2l6
ZSgpOworICAgIFJlbmRlckltYWdlOjpsYXlvdXQoKTsKKyAgICBpZiAob2xkU2l6ZSAhPSBzaXpl
KCkpCisgICAgICAgIG1lZGlhRWxlbWVudCgpLmxheW91dFNpemVDaGFuZ2VkKCk7Cit9CisKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lZGlhLmgKaW5kZXggZDY0MDQ3MjgzNWFjNDg0YTIwMWFjNjM2MDBhODBkMjVkOWI0NzNl
YS4uYjY0ZTMyNTViZmMzNmM4YTJmZjQ3NTJjMmRlOTNhODUyMGFmY2E5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKQEAgLTQxLDYgKzQxLDkgQEAgcHVibGljOgogCiAg
ICAgSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8SFRNTE1lZGlhRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCitwcm90ZWN0
ZWQ6CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAg
IHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>