<?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>141687</bug_id>
          
          <creation_ts>2015-02-16 18:15:16 -0800</creation_ts>
          <short_desc>Adopt CAMachPort-as-layer-contents</short_desc>
          <delta_ts>2016-12-05 17:07:51 -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>
          
          
          <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>142116</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1069707</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-16 18:15:16 -0800</bug_when>
    <thetext>Adopt CAMachPort-as-layer-contents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069708</commentid>
    <comment_count>1</comment_count>
      <attachid>246711</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-16 18:15:43 -0800</bug_when>
    <thetext>Created attachment 246711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069709</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-16 18:16:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/19393233&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069713</commentid>
    <comment_count>3</comment_count>
      <attachid>246711</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-02-16 18:22:47 -0800</bug_when>
    <thetext>Comment on attachment 246711
Patch

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

&gt; Source/WebKit2/Shared/mac/RemoteLayerBackingStore.mm:388
&gt; +            layer.contents = (id)adoptCF(CAMachPortCreate(m_frontBufferSendRight.leakSendRight())).get();

This makes my brain hurt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069716</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-16 18:29:20 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/180203</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069778</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-16 23:26:48 -0800</bug_when>
    <thetext>Build fix in http://trac.webkit.org/changeset/180210</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072918</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-27 16:30:24 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 142116</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255626</commentid>
    <comment_count>7</comment_count>
      <attachid>295931</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-01 23:30:06 -0800</bug_when>
    <thetext>Created attachment 295931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255627</commentid>
    <comment_count>8</comment_count>
      <attachid>295931</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-01 23:33:18 -0800</bug_when>
    <thetext>Comment on attachment 295931
Patch

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

&gt; Source/WebKit2/ChangeLog:46
&gt; +        commit again (and a commit will restore all the backing store), and even

Need to quadruply check that the parenthetical here is true. It looks like two-years-ago-me thought that it wasn&apos;t. If it isn&apos;t, we&apos;ll need to tell the Web process to do this, and do it in the first commit. That might make this a bit more complicated.

&gt; Source/WebKit2/Shared/mac/RemoteLayerBackingStore.h:69
&gt; +    enum class LayerContentsType {

Naming here is a little weird because of the non-accelerated-backing-store case. This is only ever used for accelerated backing store.

&gt; Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm:279
&gt; +void RemoteLayerTreeHost::recursivelyClearLayerContents(CALayer *layer)

This can be a free function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255637</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-02 00:31:16 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 295931 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=295931&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:46
&gt; &gt; +        commit again (and a commit will restore all the backing store), and even
&gt; 
&gt; Need to quadruply check that the parenthetical here is true. It looks like
&gt; two-years-ago-me thought that it wasn&apos;t. If it isn&apos;t, we&apos;ll need to tell the
&gt; Web process to do this, and do it in the first commit. That might make this
&gt; a bit more complicated.

Two-years-ago-me was right. I&apos;m not sure why it works ever, really. I&apos;ll have to figure this part out, or come up with a different solution to this problem (we could walk the tree and swap CAMachPorts out for actual surfaces...)

&gt; &gt; Source/WebKit2/Shared/mac/RemoteLayerBackingStore.h:69
&gt; &gt; +    enum class LayerContentsType {
&gt; 
&gt; Naming here is a little weird because of the non-accelerated-backing-store
&gt; case. This is only ever used for accelerated backing store.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm:279
&gt; &gt; +void RemoteLayerTreeHost::recursivelyClearLayerContents(CALayer *layer)
&gt; 
&gt; This can be a free function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255640</commentid>
    <comment_count>10</comment_count>
      <attachid>295933</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-02 01:59:47 -0800</bug_when>
    <thetext>Created attachment 295933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256084</commentid>
    <comment_count>11</comment_count>
      <attachid>295933</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-03 11:45:24 -0800</bug_when>
    <thetext>Comment on attachment 295933
Patch

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

&gt; Source/WebKit2/Shared/mac/RemoteLayerBackingStore.h:72
&gt; +    enum class LayerContentsType {
&gt; +        IOSurface,
&gt; +        CAMachPort
&gt; +    };

Seems like this should be a one-liner.

&gt; Source/WebKit2/Shared/mac/RemoteLayerBackingStore.mm:412
&gt; +                WebCore::MachSendRight sendRight = WTFMove(m_frontBufferSendRight);
&gt; +                m_frontBuffer.surface = WebCore::IOSurface::createFromSendRight(sendRight, sRGBColorSpaceRef());

Seems like createFromSendRight should be changed to take a MachSendRight&amp;&amp; as a clean-up step in the future to reflect the fact that the function consumes the send right. Then it would be better to write this as a one-liner. As it is, the idiom where we do a WTFMove into a local variable, but not into the createFromSendRight function, is peculiar.

&gt; Source/WebKit2/Shared/mac/RemoteLayerBackingStore.mm:416
&gt; +
&gt; +            layer.contents = m_frontBuffer.surface ? m_frontBuffer.surface-&gt;asLayerContents() : nil;
&gt; +

I would omit the blank lines. Paragraphing is a bit confusing.

&gt; Source/WebKit2/Shared/mac/RemoteLayerBackingStore.mm:418
&gt; +        case LayerContentsType::CAMachPort: {

Could cheat and leave out the braces since his happens to be the last case in the switch. Or take my advice below and use a one-liner, obviating the braces another way.

&gt; Source/WebKit2/Shared/mac/RemoteLayerBackingStore.mm:421
&gt; +            RetainPtr&lt;CAMachPortRef&gt; port = adoptCF(CAMachPortCreate(m_frontBufferSendRight.leakSendRight()));
&gt; +            layer.contents = (id)port.get();

I think this would read better as a one-liner. The combined line would be shorter than the first line.

&gt; Source/WebKit2/UIProcess/DrawingAreaProxy.h:106
&gt; +    virtual void prepareForAppSuspension() { }

Annoying paragraphing in this class; all these functions each in their own separate paragraph, not groups. Are they truly all one-offs with no relationship with each other?

&gt; Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:83
&gt; +    void prepareForAppSuspension() override;

I suggest final instead of override here.

&gt; Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.h:81
&gt;      void layerWillBeRemoved(WebCore::GraphicsLayer::PlatformLayerID);
&gt;  
&gt; +
&gt;      RemoteLayerTreeDrawingAreaProxy&amp; m_drawingArea;

I suggest not adding that new blank line.

&gt; Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm:83
&gt; +    RemoteLayerBackingStore::LayerContentsType layerContentsType = m_drawingArea.hasDebugIndicator() ? RemoteLayerBackingStore::LayerContentsType::IOSurface : RemoteLayerBackingStore::LayerContentsType::CAMachPort;

I suggest using auto here to remove one of the three instances of RemoteLayerBackingStore::LayerContentsType on this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256424</commentid>
    <comment_count>12</comment_count>
      <attachid>296170</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-05 12:08:27 -0800</bug_when>
    <thetext>Created attachment 296170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256615</commentid>
    <comment_count>13</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-05 17:07:51 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/209369</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246711</attachid>
            <date>2015-02-16 18:15:43 -0800</date>
            <delta_ts>2016-12-01 23:30:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141687-20150216181538.patch</filename>
            <type>text/plain</type>
            <size>6537</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwMTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJkMTBkY2Y4ZWExNGVh
MDAyYjE4NDQ4MDE3YWJlZjZkNmQwNWVjOC4uZmYyYzViMjlhZDkyZGVjZmRiN2VjM2JkZTE3YjE2
NmQ5NzUwMWZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTAyLTE2ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IENBTWFj
aFBvcnQtYXMtbGF5ZXItY29udGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MTY4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTkzOTMyMzM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBqdXN0IGEgcGVyZm9ybWFuY2UgYnVtcC4KKworICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL01hY2hTZW5kUmlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQ6Om9w
ZXJhdG9yIGJvb2wpOgorICAgICAgICBBZGQgYW4gb3BlcmF0b3IgYm9vbCgpIHRoYXQgY2hlY2tz
IGlmIHRoZSB1bmRlcmx5aW5nIHBvcnQgaXMgbm9ubnVsbC4KKworICAgICAgICAqIHBsYXRmb3Jt
L3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg6CisgICAgICAgIEFkZCBzb21lIFNQSS4KKwogMjAx
NS0wMi0xNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBCdWlsZCBmaXg6IGRlY2xhcmUgdW5kZWNsYXJlZCBpZGVudGlmaWVyICdjcmVkZW50aWFsJy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmMmI3ZjRmOGFlMmE5ZGQyZWUyOWFkZmNiYjZjMDZjNTUwNjYzYzRhLi45
NGE5MGRmYjI4NzJlYWMyMjQ0Nzc5NmE1NDhiZmMwNDA2YzkzY2NlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMjUgQEAKIDIwMTUtMDItMTYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKKyAgICAgICAgQWRvcHQgQ0FNYWNoUG9ydC1hcy1sYXllci1jb250ZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNjg3CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xOTM5MzIzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGVjb2RlKToKKyAgICAg
ICAgSWYgd2UgaGF2ZSBDQU1hY2hQb3J0LCBqdXN0IGtlZXAgdGhlIE1hY2hTZW5kUmlnaHQgYXJv
dW5kLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseUJh
Y2tpbmdTdG9yZVRvTGF5ZXIpOgorICAgICAgICBJZiB3ZSBoYXZlIENBTWFjaFBvcnQsIG1ha2Ug
b25lIGFuZCBsZWFrIG91ciBzZW5kIHJpZ2h0IGludG8gaXQuIENBTWFjaFBvcnQKKyAgICAgICAg
d2lsbCBhZG9wdCB0aGUgcG9ydCBhbmQgZGVzdHJveSBpdCB3aGVuIG5lZWRlZC4KKworICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9sYXRpbGl0eSk6
CisgICAgICAgIFRpbnkgc3R5bGUgZml4LgorCisyMDE1LTAyLTE2ICBUaW0gSG9ydG9uICA8dGlt
b3RoeV9ob3J0b25AYXBwbGUuY29tPgorCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNzY0NTkpOiBQ
cm9jZXNzIHN1c3BlbnNpb24gY2xlYW51cCB0aW1lciBzb21ldGltZXMgbmV2ZXIgc3RvcHMKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTY2OQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NYWNoU2VuZFJpZ2h0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NYWNoU2VuZFJpZ2h0LmgKaW5kZXggN2Mw
MmRmNmNiMDdiMmI5MGNlOGZiMDIwNzVhMzMzNjZiM2NiMGNmMC4uNDRjNWJjYzNkNTU0MDhhYjlh
YzBhYzU1ODUxODE2N2RhMjk1N2ZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTWFjaFNlbmRSaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL01hY2hTZW5kUmlnaHQuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgTWFjaFNlbmRSaWdodCBjb3B5U2VuZFJpZ2h0KCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgbWFjaF9wb3J0X3QgbGVha1NlbmRSaWdodCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsK
IAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3BvcnQgIT0g
TUFDSF9QT1JUX05VTEw7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNYWNoU2VuZFJpZ2h0
KG1hY2hfcG9ydF90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L2NvY29hL1F1YXJ0ekNvcmVTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2Nv
YS9RdWFydHpDb3JlU1BJLmgKaW5kZXggY2FiYjE3ZTllYWUyYjY2ZDEzYmFhM2FkNWIwYzYzNzcx
OGZjNWRlMC4uYjYyYTVjMmI1NDQ4MmFiNTk2NDkxZWZlYmQ2NzVhNjU5OWY5NTM1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCkBA
IC0xNDIsMyArMTQyLDkgQEAgRVhURVJOX0MgTlNTdHJpbmcgKiBjb25zdCBrQ0FGaWx0ZXJFeGNs
dXNpb25CbGVuZE1vZGU7CiBFWFRFUk5fQyBOU1N0cmluZyAqIGNvbnN0IGtDQUNvbnRleHREaXNw
bGF5TmFtZTsKIEVYVEVSTl9DIE5TU3RyaW5nICogY29uc3Qga0NBQ29udGV4dERpc3BsYXlJZDsK
IEVYVEVSTl9DIE5TU3RyaW5nICogY29uc3Qga0NBQ29udGV4dElnbm9yZXNIaXRUZXN0OworCisv
LyBGSVhNRTogVGhlc2Ugc2hvdWxkIG1vdmUgaW50byB0aGUgIVVTRShBUFBMRV9JTlRFUk5BTF9T
REspIGJsb2NrIG9uY2UgdGhleSBhcmUgbW9yZSByZWFkaWx5IGF2YWlsYWJsZS4KK3R5cGVkZWYg
c3RydWN0IF9DQU1hY2hQb3J0ICpDQU1hY2hQb3J0UmVmOworZXh0ZXJuICJDIiB7CitDQU1hY2hQ
b3J0UmVmIENBTWFjaFBvcnRDcmVhdGUobWFjaF9wb3J0X3QpOworfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRleCBiYWUw
OTBiMWE5MTUyNTJlYzljZGE0NmJlMmZmOGQyMGYxYmMwMjI5Li4wNjdjZjZlMDFjZGI4N2U2NDEz
NmVjYTliNDk3ODBhNGU1NWE2MDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWFjaFNlbmRS
aWdodC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9uLmg+CiAjaW5jbHVkZSA8Y2hyb25vPgog
CkBAIC0xMzMsNiArMTM0LDcgQEAgcHJpdmF0ZToKICAgICBCdWZmZXIgbV9iYWNrQnVmZmVyOwog
I2lmIFVTRShJT1NVUkZBQ0UpCiAgICAgQnVmZmVyIG1fc2Vjb25kYXJ5QmFja0J1ZmZlcjsKKyAg
ICBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IG1fZnJvbnRCdWZmZXJTZW5kUmlnaHQ7CiAjZW5kaWYK
IAogICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IG1fZnJvbnRDb250ZXh0UGVuZGluZ0ZsdXNo
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW0KaW5kZXggOGEwMmVjZTkxODE0NjRjNjg4MTAyMjIzNmYzNjc2OGIwY2U4ODM4OS4u
YjYxMzQxMzFjZTE5NmM2ZmZiYzY3NjFhNzBiOTEyODI5YTJkNzU2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0z
NywxNCArMzcsMTcgQEAKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZVBv
b2wuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9RdWFydHpDb3JlU1BJLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkxheWVyLmg+CiAKICNpZiBVU0UoSU9TVVJGQUNFKQogI2ltcG9ydCA8
bWFjaC9tYWNoX3BvcnQuaD4KICNlbmRpZgogCitTT0ZUX0xJTktfRlJBTUVXT1JLKFF1YXJ0ekNv
cmUpOworU09GVF9MSU5LX01BWV9GQUlMKFF1YXJ0ekNvcmUsIENBTWFjaFBvcnRDcmVhdGUsIENB
TWFjaFBvcnRSZWYsIChtYWNoX3BvcnRfdCBwb3J0KSwgKHBvcnQpKTsKKwogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTM4LDcgKzE0MSwxMiBAQCBi
b29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsIFJlbW90ZUxheWVyQgogICAgICAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzZW5kUmlnaHQpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQubV9mcm9udEJ1ZmZlci5zdXJmYWNlID0gSU9TdXJm
YWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KHNlbmRSaWdodCwgQ29sb3JTcGFjZURldmljZVJHQik7
CisKKyAgICAgICAgaWYgKGNhbkxvYWRDQU1hY2hQb3J0Q3JlYXRlKCkpCisgICAgICAgICAgICBy
ZXN1bHQubV9mcm9udEJ1ZmZlclNlbmRSaWdodCA9IFdURjo6bW92ZShzZW5kUmlnaHQpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQubV9mcm9udEJ1ZmZlci5zdXJmYWNlID0gSU9T
dXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KHNlbmRSaWdodCwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCkBAIC0zNzUsNyArMzgz
LDExIEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9M
YXllcihDQUxheWVyICpsYXllcikKIAogI2lmIFVTRShJT1NVUkZBQ0UpCiAgICAgaWYgKGFjY2Vs
ZXJhdGVzRHJhd2luZygpKSB7Ci0gICAgICAgIGxheWVyLmNvbnRlbnRzID0gKGlkKW1fZnJvbnRC
dWZmZXIuc3VyZmFjZS0+c3VyZmFjZSgpOworICAgICAgICBpZiAoY2FuTG9hZENBTWFjaFBvcnRD
cmVhdGUoKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fZnJvbnRCdWZmZXJTZW5kUmlnaHQpOwor
ICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSAoaWQpYWRvcHRDRihDQU1hY2hQb3J0Q3JlYXRl
KG1fZnJvbnRCdWZmZXJTZW5kUmlnaHQubGVha1NlbmRSaWdodCgpKSkuZ2V0KCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSAoaWQpbV9mcm9udEJ1ZmZlci5z
dXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTM5
Miw3ICs0MDQsNyBAQCBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6dGFrZUZyb250Q29udGV4dFBlbmRpbmdGbHVzaCgpCiAjaWYgVVNFKElPU1VSRkFDRSkK
IGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVy
VHlwZSB0eXBlLCBib29sIGlzVm9sYXRpbGUpCiB7Ci0gICAgc3dpdGNoKHR5cGUpIHsKKyAgICBz
d2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEJ1ZmZlclR5cGU6OkZyb250OgogICAgICAgICBpZiAo
bV9mcm9udEJ1ZmZlci5zdXJmYWNlICYmIG1fZnJvbnRCdWZmZXIuaXNWb2xhdGlsZSAhPSBpc1Zv
bGF0aWxlKSB7CiAgICAgICAgICAgICBpZiAoaXNWb2xhdGlsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295931</attachid>
            <date>2016-12-01 23:30:06 -0800</date>
            <delta_ts>2016-12-02 01:59:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141687-20161201232937.patch</filename>
            <type>text/plain</type>
            <size>20229</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FkOTc3OTAxNmUxMmQw
Y2M5ZDU0NGQ1ZWJlNDM1MDZhMzlkMDQwYS4uNzRiZjYyYThmYjNmNDRlNWY2ZTE2NjkzYTE3NTk0
YjVjODYwMGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTEyLTAxICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IENBTWFj
aFBvcnQtYXMtbGF5ZXItY29udGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MTY4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTkzOTMyMzM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBqdXN0IGEgcGVyZm9ybWFuY2UgYnVtcC4KKworICAgICAgICAqIHBsYXRmb3JtL3Nw
aS9jb2NvYS9RdWFydHpDb3JlU1BJLmg6CisgICAgICAgIEFkZCBzb21lIFNQSS4KKwogMjAxNi0x
Mi0wMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQmxhY2tsaXN0
IE5ldGZsaXggZm9yIFRvdWNoQmFyIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMDQ5MDBmY2ZiNjk0
NmEwMTJhNTgzZWVhNGQyNWI2ZTQ0MzE4YjMwLi5kN2I1MjdhMTJhMzJjZDllNjQyN2QwZGJkYmRk
NGRjZGNkMmYyMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTYtMTItMDEgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQ0FN
YWNoUG9ydC1hcy1sYXllci1jb250ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNjg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTM5MzIz
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNo
YXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFj
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6ZGVjb2RlKToKKyAgICAgICAgT24gdGhlIFVJIHByb2Nlc3Mgc2lkZSwg
aW5zdGVhZCBvZiBhY3R1YWxseSBsb29raW5nIHVwIHRoZSBzdXJmYWNlLAorICAgICAgICBqdXN0
IGtlZXAgdGhlIE1hY2hTZW5kUmlnaHQgYXJvdW5kLCB0byBsYXRlciBiZSB0dXJuZWQgaW50byBh
IENBTWFjaFBvcnQuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAgICAgIE1ha2UgYSBDQU1hY2hQb3J0IGFu
ZCBsZWFrIG91ciBzZW5kIHJpZ2h0IGludG8gaXQuIENBTWFjaFBvcnQKKyAgICAgICAgd2lsbCBh
ZG9wdCB0aGUgcG9ydCBhbmQgZGVzdHJveSBpdCB3aGVuIG5lZWRlZC4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9sYXRpbGl0eSk6CisgICAg
ICAgIFRpbnkgc3R5bGUgZml4LgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRy
ZWVQcm9wZXJ0eUFwcGxpZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJl
ZVByb3BlcnR5QXBwbGllci5tbToKKyAgICAgICAgKFdlYktpdDo6YXBwbHlQcm9wZXJ0aWVzVG9M
YXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6
YXBwbHlQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5OjpjbGVhckFsbExheWVyQ29udGVu
dHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5n
QWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Y2xlYXJBbGxMYXllckNvbnRlbnRzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyVHJlZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24pOgorICAgICAg
ICBUd28gc3VwcG9ydGluZyBjaGFuZ2VzIGluIG9yZGVyIHRvIGZpeCB0aGUgdHdvIHJlZ3Jlc3Np
b25zIHRoYXQgdGhpcworICAgICAgICBjYXVzZWQgd2hlbiB3ZSB0cmllZCB0byBsYW5kIGl0IHR3
byB5ZWFycyBhZ286CisKKyAgICAgICAgV2hlbiBhbiBhcHAgaXMgYmVpbmcgc3VzcGVuZGVkLCBj
bGVhciBhbGwgb2YgdGhlIGxheWVyIGJhY2tpbmcgc3RvcmUuCisgICAgICAgIE90aGVyd2lzZSwg
YW55IGxpdmUgQ0FNYWNoUG9ydHMgd2lsbCBrZWVwIGEgKzEgb24gdGhlaXIgcmVzcGVjdGl2ZQor
ICAgICAgICBJT1N1cmZhY2UncyB1c2UgY291bnQsIGNhdXNpbmcgdXMgdG8gZmFpbCB0byBtYXJr
IHRoZW0gdm9sYXRpbGUsCisgICAgICAgIGtlZXBpbmcgdGhlIGFwcCBhbGl2ZSBmb3IgbW9yZSB0
aW1lIChyZS10cnlpbmcgdGhlIHZvbGF0aWxpdHkgY2hhbmdlKS4KKyAgICAgICAgVGhpcyBpcyBm
aW5lLCBiZWNhdXNlIHdlIGJsb2NrIG9uIHJlc3VtZSB3YWl0aW5nIGZvciB0aGUgd2ViIHByb2Nl
c3MgdG8KKyAgICAgICAgY29tbWl0IGFnYWluIChhbmQgYSBjb21taXQgd2lsbCByZXN0b3JlIGFs
bCB0aGUgYmFja2luZyBzdG9yZSksIGFuZCBldmVuCisgICAgICAgIGlmIHRoYXQgdGltZXMgb3V0
LCB3ZSB1bnBhcmVudCB0aGUgcm9vdCBsYXllciB1bnRpbCB3ZSBnZXQgYSBjb21taXQuCisKKyAg
ICAgICAgSWYgdGhlIGRlYnVnZ2luZyB0aWxlIG1hcCBpcyBlbmFibGVkLCBkbyBub3QgdXNlIENB
TWFjaFBvcnQsIGJlY2F1c2UKKyAgICAgICAgd2UgZG9uJ3QgaGF2ZSBhIGdyZWF0IHdheSB0byBw
bHVtYiB0aGUgc2FtZSBDQU1hY2hQb3J0IHRvIHR3byBsYXllcnMKKyAgICAgICAgKGFuZCBpdCBk
b2Vzbid0IHNlZW0gdG8gd29yayBldmVuIGlmIHlvdSBkbykuIEluc3RlYWQsIGp1c3QgbWFwIHRo
ZQorICAgICAgICBJT1N1cmZhY2UgaW50byB0aGUgVUkgcHJvY2VzcyBsaWtlIHdlIHVzZWQgdG8u
CisKIDIwMTYtMTItMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXVtXSzJdIFRhcHBpbmcgYW4gZWxlbWVudCBnZW5lcmF0ZXMgYSAnY2xpY2snIGV2ZW50
IHRoYXQgaGFzIDAgYXMgdGltZVN0YW1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAppbmRleCAwZGQ0NTFiZTFmZGY5ZTExMThkZDlhNzcz
OGYzYzBiZWNmZTA4OTlmLi4yODc5ZDY5MDBkMjUwZTc5OTRlZjk1Y2NiNGNiZDMwZTMzZDVmNzk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29y
ZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9RdWFydHpDb3Jl
U1BJLmgKQEAgLTE5MSw2ICsxOTEsOSBAQCBib29sIENBUmVuZGVyU2VydmVyUmVuZGVyTGF5ZXJX
aXRoVHJhbnNmb3JtKG1hY2hfcG9ydF90LCB1aW50MzJfdCBjbGllbnRfaWQsIHVpbgogI2VuZGlm
CiAjZW5kaWYKIAordHlwZWRlZiBzdHJ1Y3QgX0NBTWFjaFBvcnQgKkNBTWFjaFBvcnRSZWY7CitD
QU1hY2hQb3J0UmVmIENBTWFjaFBvcnRDcmVhdGUobWFjaF9wb3J0X3QpOworCiBXVEZfRVhURVJO
X0NfRU5ECiAKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgaW50byB0aGUgQVBQTEVfSU5URVJOQUxfU0RL
IGJsb2NrIG9uY2UgaXQncyBpbiBhbiBTREsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKaW5kZXggNmFmNzkwMmRhM2Y5ZmE5YzJl
YWJkYWFhMGU1ZDc4NWY2NTMyZTZlNy4uZWFmYmIzZDE4MmJlM2E5NWE4ZjliMTM2ZDk0NjQzMTFj
MWZjMGFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJp
dG1hcC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JT1N1cmZhY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgogI2luY2x1ZGUgPGNocm9ubz4KIApAQCAtNjUsNyArNjYs
MTEgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBsYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fbGF5ZXI7IH0KIAotICAgIHZvaWQgYXBwbHlCYWNraW5nU3RvcmVUb0xheWVy
KENBTGF5ZXIgKik7CisgICAgZW51bSBjbGFzcyBMYXllckNvbnRlbnRzVHlwZSB7CisgICAgICAg
IElPU3VyZmFjZSwKKyAgICAgICAgQ0FNYWNoUG9ydAorICAgIH07CisgICAgdm9pZCBhcHBseUJh
Y2tpbmdTdG9yZVRvTGF5ZXIoQ0FMYXllciAqLCBMYXllckNvbnRlbnRzVHlwZSk7CiAKICAgICB2
b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
SVBDOjpEZWNvZGVyJiwgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmKTsKQEAgLTEzNCw2ICsxMzks
NyBAQCBwcml2YXRlOgogICAgIEJ1ZmZlciBtX2JhY2tCdWZmZXI7CiAjaWYgVVNFKElPU1VSRkFD
RSkKICAgICBCdWZmZXIgbV9zZWNvbmRhcnlCYWNrQnVmZmVyOworICAgIFdlYkNvcmU6Ok1hY2hT
ZW5kUmlnaHQgbV9mcm9udEJ1ZmZlclNlbmRSaWdodDsKICNlbmRpZgogCiAgICAgUmV0YWluUHRy
PENHQ29udGV4dFJlZj4gbV9mcm9udENvbnRleHRQZW5kaW5nRmx1c2g7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCBk
NTcxOWRkYTEyYmVhYjgyMmRmMzJiNzIxNThlYmE2YTVlOTk0MjA1Li5jOGViMWQ2OWM4ZDU5ZTEy
OTU5NmEyNjY5OGVkYWVhYjg2YTg4ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTM2LDcgKzM2LDYgQEAKICNp
bXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJD
bGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQgPFdl
YkNvcmUvUXVhcnR6Q29yZVNQSS5oPgpAQCAtMTUzLDcgKzE1Miw3IEBAIGJvb2wgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVy
QmFja2luZ1N0CiAgICAgICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHNlbmRSaWdodCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIHJlc3VsdC5tX2Zyb250QnVmZmVyLnN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoc2VuZFJpZ2h0LCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAg
ICAgICAgcmVzdWx0Lm1fZnJvbnRCdWZmZXJTZW5kUmlnaHQgPSBXVEZNb3ZlKHNlbmRSaWdodCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgpAQCAtMzk5LDEzICszOTgsMzAg
QEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXdu
KENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2kKICAgICB9CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihDQUxheWVyICpsYXllcikKK3Zv
aWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihDQUxh
eWVyICpsYXllciwgTGF5ZXJDb250ZW50c1R5cGUgY29udGVudHNUeXBlKQogewogICAgIGxheWVy
LmNvbnRlbnRzT3BhcXVlID0gbV9pc09wYXF1ZTsKIAogI2lmIFVTRShJT1NVUkZBQ0UpCiAgICAg
aWYgKGFjY2VsZXJhdGVzRHJhd2luZygpKSB7Ci0gICAgICAgIGxheWVyLmNvbnRlbnRzID0gbV9m
cm9udEJ1ZmZlci5zdXJmYWNlID8gbV9mcm9udEJ1ZmZlci5zdXJmYWNlLT5hc0xheWVyQ29udGVu
dHMoKSA6IG5pbDsKKyAgICAgICAgc3dpdGNoIChjb250ZW50c1R5cGUpIHsKKyAgICAgICAgY2Fz
ZSBMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOgorICAgICAgICAgICAgaWYgKCFtX2Zyb250
QnVmZmVyLnN1cmZhY2UpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9mcm9udEJ1ZmZlclNl
bmRSaWdodCk7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCBzZW5kUmln
aHQgPSBXVEZNb3ZlKG1fZnJvbnRCdWZmZXJTZW5kUmlnaHQpOworICAgICAgICAgICAgICAgIG1f
ZnJvbnRCdWZmZXIuc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChzZW5kUmlnaHQsIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBsYXllci5jb250ZW50cyA9IG1fZnJvbnRCdWZmZXIuc3VyZmFjZSA/IG1fZnJv
bnRCdWZmZXIuc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CisKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIExheWVyQ29udGVudHNUeXBlOjpDQU1hY2hQb3J0OiB7Cisg
ICAgICAgICAgICBBU1NFUlQobV9mcm9udEJ1ZmZlclNlbmRSaWdodCk7CisgICAgICAgICAgICBS
ZXRhaW5QdHI8Q0FNYWNoUG9ydFJlZj4gcG9ydCA9IGFkb3B0Q0YoQ0FNYWNoUG9ydENyZWF0ZSht
X2Zyb250QnVmZmVyU2VuZFJpZ2h0LmxlYWtTZW5kUmlnaHQoKSkpOworICAgICAgICAgICAgbGF5
ZXIuY29udGVudHMgPSAoaWQpcG9ydC5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtNDIyLDcg
KzQzOCw3IEBAIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Ojp0YWtlRnJvbnRDb250ZXh0UGVuZGluZ0ZsdXNoKCkKICNpZiBVU0UoSU9TVVJGQUNFKQogYm9v
bCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBl
IHR5cGUsIGJvb2wgaXNWb2xhdGlsZSkKIHsKLSAgICBzd2l0Y2godHlwZSkgeworICAgIHN3aXRj
aCAodHlwZSkgewogICAgIGNhc2UgQnVmZmVyVHlwZTo6RnJvbnQ6CiAgICAgICAgIGlmIChtX2Zy
b250QnVmZmVyLnN1cmZhY2UgJiYgbV9mcm9udEJ1ZmZlci5pc1ZvbGF0aWxlICE9IGlzVm9sYXRp
bGUpIHsKICAgICAgICAgICAgIGlmIChpc1ZvbGF0aWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmgKaW5k
ZXggMzdlYWY1ZGJhMzFjNmM5YjE3MDZhYjdmYzYwNGYzN2NjODc1OGFiZS4uYjUzZjEyY2ZlMTE2
MjUxMGIzNTliZTczMWFlYzA0MDJiY2M5MmJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oCkBAIC0z
Nyw5ICszNyw5IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZUhvc3Q7CiBjbGFzcyBSZW1vdGVMYXll
clRyZWVQcm9wZXJ0eUFwcGxpZXIgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQsIExheWVyT3JWaWV3ICo+IFJlbGF0
ZWRMYXllck1hcDsKLSAgICBzdGF0aWMgdm9pZCBhcHBseVByb3BlcnRpZXMoQ0FMYXllciAqLCBS
ZW1vdGVMYXllclRyZWVIb3N0KiwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Okxh
eWVyUHJvcGVydGllcyYsIGNvbnN0IFJlbGF0ZWRMYXllck1hcCYpOworICAgIHN0YXRpYyB2b2lk
IGFwcGx5UHJvcGVydGllcyhDQUxheWVyICosIFJlbW90ZUxheWVyVHJlZUhvc3QqLCBjb25zdCBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiwgY29uc3QgUmVsYXRl
ZExheWVyTWFwJiwgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkxheWVyQ29udGVudHNUeXBlKTsK
ICNpZiBQTEFURk9STShJT1MpCi0gICAgc3RhdGljIHZvaWQgYXBwbHlQcm9wZXJ0aWVzKFVJVmll
dyAqLCBSZW1vdGVMYXllclRyZWVIb3N0KiwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkxheWVyUHJvcGVydGllcyYsIGNvbnN0IFJlbGF0ZWRMYXllck1hcCYpOworICAgIHN0YXRp
YyB2b2lkIGFwcGx5UHJvcGVydGllcyhVSVZpZXcgKiwgUmVtb3RlTGF5ZXJUcmVlSG9zdCosIGNv
bnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMmLCBjb25zdCBS
ZWxhdGVkTGF5ZXJNYXAmLCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6TGF5ZXJDb250ZW50c1R5
cGUpOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCmluZGV4IGE5MmFiMjExOWY2
NDJkMWZmYWYyZWVhYmY3Yzg4YmRlN2Q0NjUwZTUuLmRkMTQ3MGRmZmFhNDZiOTU5MmJjNDgwOWQ0
YTFmMDZlMzhmZDU1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCkBAIC0xMjYsNyArMTI2LDcg
QEAgc3RhdGljIHZvaWQgdXBkYXRlQ3VzdG9tQXBwZWFyYW5jZShDQUxheWVyICpsYXllciwgR3Jh
cGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW4KICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBhcHBs
eVByb3BlcnRpZXNUb0xheWVyKENBTGF5ZXIgKmxheWVyLCBSZW1vdGVMYXllclRyZWVIb3N0KiBs
YXllclRyZWVIb3N0LCBjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9w
ZXJ0aWVzJiBwcm9wZXJ0aWVzKQorc3RhdGljIHZvaWQgYXBwbHlQcm9wZXJ0aWVzVG9MYXllcihD
QUxheWVyICpsYXllciwgUmVtb3RlTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCwgY29uc3Qg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllcyYgcHJvcGVydGllcywg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkxheWVyQ29udGVudHNUeXBlIGxheWVyQ29udGVudHNU
eXBlKQogewogICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246Ok5hbWVDaGFuZ2VkKQogICAgICAgICBsYXllci5uYW1lID0gcHJv
cGVydGllcy5uYW1lOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5UHJvcGVy
dGllc1RvTGF5ZXIoQ0FMYXllciAqbGF5ZXIsIFJlbW90ZUxheWVyVHJlZUhvc3QqIGxheWVyVHJl
CiAgICAgewogICAgICAgICBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0g
cHJvcGVydGllcy5iYWNraW5nU3RvcmUuZ2V0KCk7CiAgICAgICAgIGlmIChiYWNraW5nU3RvcmUg
JiYgcHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRhY2hlZCkKLSAgICAgICAgICAgIGJhY2tpbmdT
dG9yZS0+YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKGxheWVyKTsKKyAgICAgICAgICAgIGJhY2tp
bmdTdG9yZS0+YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKGxheWVyLCBsYXllckNvbnRlbnRzVHlw
ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSBuaWw7CiAg
ICAgICAgICAgICBsYXllci5jb250ZW50c09wYXF1ZSA9IE5POwpAQCAtMjU0LDEwICsyNTQsMTAg
QEAgc3RhdGljIHZvaWQgYXBwbHlQcm9wZXJ0aWVzVG9MYXllcihDQUxheWVyICpsYXllciwgUmVt
b3RlTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmUKICAgICAgICAgdXBkYXRlQ3VzdG9tQXBwZWFyYW5j
ZShsYXllciwgcHJvcGVydGllcy5jdXN0b21BcHBlYXJhbmNlKTsKIH0KIAotdm9pZCBSZW1vdGVM
YXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllcyhDQUxheWVyICpsYXllciwg
UmVtb3RlTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCwgY29uc3QgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllcyYgcHJvcGVydGllcywgY29uc3QgUmVsYXRlZExh
eWVyTWFwJiByZWxhdGVkTGF5ZXJzKQordm9pZCBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxp
ZXI6OmFwcGx5UHJvcGVydGllcyhDQUxheWVyICpsYXllciwgUmVtb3RlTGF5ZXJUcmVlSG9zdCog
bGF5ZXJUcmVlSG9zdCwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJv
cGVydGllcyYgcHJvcGVydGllcywgY29uc3QgUmVsYXRlZExheWVyTWFwJiByZWxhdGVkTGF5ZXJz
LCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6TGF5ZXJDb250ZW50c1R5cGUgbGF5ZXJDb250ZW50
c1R5cGUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIGFwcGx5UHJv
cGVydGllc1RvTGF5ZXIobGF5ZXIsIGxheWVyVHJlZUhvc3QsIHByb3BlcnRpZXMpOworICAgIGFw
cGx5UHJvcGVydGllc1RvTGF5ZXIobGF5ZXIsIGxheWVyVHJlZUhvc3QsIHByb3BlcnRpZXMsIGxh
eWVyQ29udGVudHNUeXBlKTsKIAogICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVz
ICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkNoaWxkcmVuQ2hhbmdlZCkgewogICAgICAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGNoaWxkcmVuID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnByb3BlcnRpZXMuY2hpbGRyZW4uc2l6ZSgp
XSk7CkBAIC0yOTEsMTAgKzI5MSwxMCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBw
bGllcjo6YXBwbHlQcm9wZXJ0aWVzKENBTGF5ZXIgKmxheWVyLCBSZW1vdGVMYXllcgogfQogCiAj
aWYgUExBVEZPUk0oSU9TKQotdm9pZCBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFw
cGx5UHJvcGVydGllcyhVSVZpZXcgKnZpZXcsIFJlbW90ZUxheWVyVHJlZUhvc3QqIGxheWVyVHJl
ZUhvc3QsIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMm
IHByb3BlcnRpZXMsIGNvbnN0IFJlbGF0ZWRMYXllck1hcCYgcmVsYXRlZExheWVycykKK3ZvaWQg
UmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXMoVUlWaWV3ICp2
aWV3LCBSZW1vdGVMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0LCBjb25zdCBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzLCBjb25zdCBSZWxh
dGVkTGF5ZXJNYXAmIHJlbGF0ZWRMYXllcnMsIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpMYXll
ckNvbnRlbnRzVHlwZSBsYXllckNvbnRlbnRzVHlwZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7Ci0gICAgYXBwbHlQcm9wZXJ0aWVzVG9MYXllcih2aWV3LmxheWVyLCBsYXll
clRyZWVIb3N0LCBwcm9wZXJ0aWVzKTsKKyAgICBhcHBseVByb3BlcnRpZXNUb0xheWVyKHZpZXcu
bGF5ZXIsIGxheWVyVHJlZUhvc3QsIHByb3BlcnRpZXMsIGxheWVyQ29udGVudHNUeXBlKTsKIAog
ICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkNoaWxkcmVuQ2hhbmdlZCkgewogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IGNoaWxkcmVuID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5OnByb3BlcnRpZXMuY2hpbGRyZW4uc2l6ZSgpXSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAppbmRleCBhNWQ0ZWIyNDFiZTg3ZGRlOGQwODU4
MTExZjljMmI4MTg4MGRlNzhkLi4wNTU4Y2JmODA1MDgzNmY5ODFjNGUxYWVjMGUwYjIyNmM3YTgx
YWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAg
LTEwMyw2ICsxMDMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRVcGRh
dGVHZW9tZXRyeSgpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsTGF5ZXJDb250ZW50
cygpIHsgfQorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBXZWJDb3JlOjpNYWNo
U2VuZFJpZ2h0IGNyZWF0ZUZlbmNlKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggN2I3YmQ0OGNkMGQ1Njk4NThlNDc1
NDRhOTg3OGYwNWNkNDAzNjIwMi4uMDczNWRiNGZhMDljMDIwZjBhYWVmYmZmNGVhY2E1ODMwOGVi
YjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KQEAgLTY3Myw2ICs2NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmQoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRG
aW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZCgpCiB7CisgICAgbV9kcmF3
aW5nQXJlYS0+Y2xlYXJBbGxMYXllckNvbnRlbnRzKCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50
ZXJpbmdCYWNrZ3JvdW5kKCksIG1fcGFnZUlEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkuaAppbmRleCAzZTVlOWJmMDAyMzljNmJhZGVkYmY1M2JlNGJjOThjZWEyOTljZmZkLi5kMWI4
MTExMTY4ZjRlNjA3N2FlYWJiNzczMWRiZjZhNWMyMzgxZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHkuaApAQCAtNTQsNiArNTQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlZnJl
c2hEaXNwbGF5KCk7CiAKKyAgICBib29sIGhhc0RlYnVnSW5kaWNhdG9yKCkgY29uc3QgeyByZXR1
cm4gISFtX2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9zdDsgfQorCiBwcml2YXRlOgogICAgIHZv
aWQgc2l6ZURpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JE
aWRDaGFuZ2UoKSBvdmVycmlkZTsKQEAgLTc3LDYgKzc5LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGhpZGVDb250ZW50VW50aWxQZW5kaW5nVXBkYXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoaWRl
Q29udGVudFVudGlsQW55VXBkYXRlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNWaXNpYmxlQ29u
dGVudCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBjbGVhckFsbExheWVyQ29udGVudHMo
KSBvdmVycmlkZTsKICAgICAKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGluZGljYXRvckxvY2F0
aW9uKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCAzNDkzMGRk
MWM0MGU1YzBmNWFkYWM0MjU1MGE5MDcxMjQyYzRlMmNkLi42YjUyMDRmODk3ZTI3YmM0YzBhMDU0
ZWRjODFhOWY5YzViZmIzZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC00
NjIsNiArNDYyLDExIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aGlk
ZUNvbnRlbnRVbnRpbEFueVVwZGF0ZSgpCiAgICAgbV9yZW1vdGVMYXllclRyZWVIb3N0LmRldGFj
aFJvb3RMYXllcigpOwogfQogCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
OmNsZWFyQWxsTGF5ZXJDb250ZW50cygpCit7CisgICAgbV9yZW1vdGVMYXllclRyZWVIb3N0LmNs
ZWFyQWxsTGF5ZXJDb250ZW50cygpOworfQorCiBib29sIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk6Omhhc1Zpc2libGVDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZW1v
dGVMYXllclRyZWVIb3N0LnJvb3RMYXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QuaAppbmRleCA4ZWIwY2ZmOTVlZjc4YzNiMjdm
ZmIxZjljMjdkZjdjZmVlNjQ4MGI1Li5iMjVkYzE2ZjczMmVlNTBiMzIzOTdlZGM2ZmRlZTQyOTYz
NzM0YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxh
eWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxh
eWVyVHJlZUhvc3QuaApAQCAtNjcsMTIgKzY3LDE2IEBAIHB1YmxpYzoKICAgICAvLyBEZXRhY2gg
dGhlIHJvb3QgbGF5ZXI7IGl0IHdpbGwgYmUgcmVhdHRhY2hlZCB1cG9uIHRoZSBuZXh0IGluY29t
aW5nIGNvbW1pdC4KICAgICB2b2lkIGRldGFjaFJvb3RMYXllcigpOwogCisgICAgdm9pZCBjbGVh
ckFsbExheWVyQ29udGVudHMoKTsKKwogcHJpdmF0ZToKICAgICBMYXllck9yVmlldyAqY3JlYXRl
TGF5ZXIoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9w
ZXJ0aWVzJiwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGll
cyopOwogICAgIHN0YXRpYyB2b2lkIHNldExheWVySUQoQ0FMYXllciAqLCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQpOwogCiAgICAgdm9pZCBsYXllcldpbGxCZVJlbW92
ZWQoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEKTsKIAorICAgIHZvaWQg
cmVjdXJzaXZlbHlDbGVhckxheWVyQ29udGVudHMoQ0FMYXllciAqKTsKKwogICAgIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkmIG1fZHJhd2luZ0FyZWE7CiAgICAgTGF5ZXJPclZpZXcg
Km1fcm9vdExheWVyOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklELCBSZXRhaW5QdHI8TGF5ZXJPclZpZXc+PiBtX2xheWVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCBi
MzhmYWFhZDZmYzNhZDFmMThlMTQ2YzY3YTBiMTJlM2FlOGYzMGE1Li4zYWU3YTVmMDExMzFhYjI1
MTI3ZDA3MDU0NGRmZGQzMTA3NGQ2YzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC03Niw2ICs3Niw4IEBAIGJvb2wg
UmVtb3RlTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uJiB0cmFuCiAKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxHcmFwaGljc0xheWVy
OjpQbGF0Zm9ybUxheWVySUQsIEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4gTGF5ZXJJ
RFBhaXI7CiAgICAgVmVjdG9yPExheWVySURQYWlyPiBjbG9uZXNUb1VwZGF0ZTsKKworICAgIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZSBsYXllckNvbnRlbnRzVHlw
ZSA9IG1fZHJhd2luZ0FyZWEuaGFzRGVidWdJbmRpY2F0b3IoKSA/IFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlIDogUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OkxheWVyQ29udGVudHNUeXBlOjpDQU1hY2hQb3J0OwogICAgIAogICAgIGZvciAoYXV0
byYgY2hhbmdlZExheWVyIDogdHJhbnNhY3Rpb24uY2hhbmdlZExheWVyUHJvcGVydGllcygpKSB7
CiAgICAgICAgIGF1dG8gbGF5ZXJJRCA9IGNoYW5nZWRMYXllci5rZXk7CkBAIC05NywxMyArOTks
MTMgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllclRyZWUoY29uc3QgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIHRyYW4KICAgICAgICAgICAgIGNsb25lc1RvVXBkYXRl
LmFwcGVuZChMYXllcklEUGFpcihsYXllcklELCBwcm9wZXJ0aWVzLmNsb25lZExheWVySUQpKTsK
IAogICAgICAgICBpZiAobV9pc0RlYnVnTGF5ZXJUcmVlSG9zdCkgewotICAgICAgICAgICAgUmVt
b3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXMobGF5ZXIsIHRoaXMs
IHByb3BlcnRpZXMsIHJlbGF0ZWRMYXllcnMpOworICAgICAgICAgICAgUmVtb3RlTGF5ZXJUcmVl
UHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXMobGF5ZXIsIHRoaXMsIHByb3BlcnRpZXMs
IHJlbGF0ZWRMYXllcnMsIGxheWVyQ29udGVudHNUeXBlKTsKIAogICAgICAgICAgICAgaWYgKHBy
b3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
Qm9yZGVyV2lkdGhDaGFuZ2VkKQogICAgICAgICAgICAgICAgIGFzTGF5ZXIobGF5ZXIpLmJvcmRl
cldpZHRoID0gcHJvcGVydGllcy5ib3JkZXJXaWR0aCAvIGluZGljYXRvclNjYWxlRmFjdG9yOwog
ICAgICAgICAgICAgYXNMYXllcihsYXllcikubWFza3NUb0JvdW5kcyA9IGZhbHNlOwogICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBw
bHlQcm9wZXJ0aWVzKGxheWVyLCB0aGlzLCBwcm9wZXJ0aWVzLCByZWxhdGVkTGF5ZXJzKTsKKyAg
ICAgICAgICAgIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVz
KGxheWVyLCB0aGlzLCBwcm9wZXJ0aWVzLCByZWxhdGVkTGF5ZXJzLCBsYXllckNvbnRlbnRzVHlw
ZSk7CiAgICAgfQogICAgIAogICAgIGZvciAoY29uc3QgYXV0byYgbGF5ZXJQYWlyIDogY2xvbmVz
VG9VcGRhdGUpIHsKQEAgLTI2OSw0ICsyNzEsMTcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVIb3N0
OjpkZXRhY2hSb290TGF5ZXIoKQogICAgIG1fcm9vdExheWVyID0gbnVsbHB0cjsKIH0KIAordm9p
ZCBSZW1vdGVMYXllclRyZWVIb3N0OjpjbGVhckFsbExheWVyQ29udGVudHMoKQoreworICAgIHJl
Y3Vyc2l2ZWx5Q2xlYXJMYXllckNvbnRlbnRzKGFzTGF5ZXIobV9yb290TGF5ZXIpKTsKK30KKwor
dm9pZCBSZW1vdGVMYXllclRyZWVIb3N0OjpyZWN1cnNpdmVseUNsZWFyTGF5ZXJDb250ZW50cyhD
QUxheWVyICpsYXllcikKK3sKKyAgICBsYXllci5jb250ZW50cyA9IG5pbDsKKworICAgIGZvciAo
Q0FMYXllciAqc3VibGF5ZXIgaW4gbGF5ZXIuc3VibGF5ZXJzKQorICAgICAgICByZWN1cnNpdmVs
eUNsZWFyTGF5ZXJDb250ZW50cyhzdWJsYXllcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDA1Yzk2YTRiNzI1M2MzODAyOTRk
ZTYwMGE4NTlmMjhmNjNlNjhhZDIuLmY2OTZlYTE5ZDc0N2RmNzcwYjE1MDBlNzdmN2NiYjAzMmQ1
NWI5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTE2Niw3ICsxNjYsNyBA
QCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6cmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbihS
ZW1vdGVMYXllclRyZWVDb250ZXh0JiBjbwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKCkpIHsKLSAgICAgICAgICAgIFJlbW90ZUxheWVyVHJl
ZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKHBsYXRmb3JtTGF5ZXIoKSwgbnVsbHB0
ciwgbV9wcm9wZXJ0aWVzLCBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OlJlbGF0ZWRM
YXllck1hcCgpKTsKKyAgICAgICAgICAgIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6
YXBwbHlQcm9wZXJ0aWVzKHBsYXRmb3JtTGF5ZXIoKSwgbnVsbHB0ciwgbV9wcm9wZXJ0aWVzLCBS
ZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OlJlbGF0ZWRMYXllck1hcCgpLCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6TGF5ZXJDb250ZW50c1R5cGU6OkNBTWFjaFBvcnQpOwogICAgICAg
ICAgICAgZGlkQ29tbWl0KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295933</attachid>
            <date>2016-12-02 01:59:47 -0800</date>
            <delta_ts>2016-12-05 12:08:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141687-20161202015918.patch</filename>
            <type>text/plain</type>
            <size>21031</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FkOTc3OTAxNmUxMmQw
Y2M5ZDU0NGQ1ZWJlNDM1MDZhMzlkMDQwYS4uNzRiZjYyYThmYjNmNDRlNWY2ZTE2NjkzYTE3NTk0
YjVjODYwMGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTEyLTAxICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IENBTWFj
aFBvcnQtYXMtbGF5ZXItY29udGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MTY4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTkzOTMyMzM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBqdXN0IGEgcGVyZm9ybWFuY2UgYnVtcC4KKworICAgICAgICAqIHBsYXRmb3JtL3Nw
aS9jb2NvYS9RdWFydHpDb3JlU1BJLmg6CisgICAgICAgIEFkZCBzb21lIFNQSS4KKwogMjAxNi0x
Mi0wMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQmxhY2tsaXN0
IE5ldGZsaXggZm9yIFRvdWNoQmFyIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMDQ5MDBmY2ZiNjk0
NmEwMTJhNTgzZWVhNGQyNWI2ZTQ0MzE4YjMwLi42MzZiMWI1Y2NjNzBkODE3YTE2OGM2NTY2MWEy
NjBhMzc0YWYyNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTYtMTItMDEgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQ0FN
YWNoUG9ydC1hcy1sYXllci1jb250ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNjg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTM5MzIz
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNo
YXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFj
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6ZGVjb2RlKToKKyAgICAgICAgT24gdGhlIFVJIHByb2Nlc3Mgc2lkZSwg
aW5zdGVhZCBvZiBhY3R1YWxseSBsb29raW5nIHVwIHRoZSBzdXJmYWNlLAorICAgICAgICBqdXN0
IGtlZXAgdGhlIE1hY2hTZW5kUmlnaHQgYXJvdW5kLCB0byBsYXRlciBiZSB0dXJuZWQgaW50byBh
IENBTWFjaFBvcnQuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAgICAgIE1ha2UgYSBDQU1hY2hQb3J0IGFu
ZCBsZWFrIG91ciBzZW5kIHJpZ2h0IGludG8gaXQuIENBTWFjaFBvcnQKKyAgICAgICAgd2lsbCBh
ZG9wdCB0aGUgcG9ydCBhbmQgZGVzdHJveSBpdCB3aGVuIG5lZWRlZC4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9sYXRpbGl0eSk6CisgICAg
ICAgIFRpbnkgc3R5bGUgZml4LgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRy
ZWVQcm9wZXJ0eUFwcGxpZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJl
ZVByb3BlcnR5QXBwbGllci5tbToKKyAgICAgICAgKFdlYktpdDo6YXBwbHlQcm9wZXJ0aWVzVG9M
YXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6
YXBwbHlQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5OjpwcmVwYXJlRm9yQXBwU3VzcGVu
c2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRp
bmdBZnRlckVudGVyaW5nQmFja2dyb3VuZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpwcmVwYXJlRm9yQXBwU3VzcGVuc2lvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllclRyZWUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVIb3N0OjptYXBBbGxJT1N1cmZhY2VCYWNraW5nU3RvcmUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5z
YWN0aW9uKToKKyAgICAgICAgVHdvIHN1cHBvcnRpbmcgY2hhbmdlcyBpbiBvcmRlciB0byBmaXgg
dGhlIHR3byByZWdyZXNzaW9ucyB0aGF0IHRoaXMKKyAgICAgICAgY2F1c2VkIHdoZW4gd2UgdHJp
ZWQgdG8gbGFuZCBpdCB0d28geWVhcnMgYWdvOgorCisgICAgICAgIFdoZW4gYW4gYXBwIGlzIGJl
aW5nIHN1c3BlbmRlZCwgcmVzb2x2ZSBhbGwgQ0FNYWNoUG9ydCBiYWNraW5nIHN0b3JlCisgICAg
ICAgIGludG8gYWN0dWFsIElPU3VyZmFjZXMuIE90aGVyd2lzZSwgYW55IGxpdmUgQ0FNYWNoUG9y
dHMgd2lsbCBrZWVwIGEKKyAgICAgICAgKzEgb24gdGhlaXIgcmVzcGVjdGl2ZSBJT1N1cmZhY2Un
cyB1c2UgY291bnQsIGNhdXNpbmcgdXMgdG8gZmFpbCB0bworICAgICAgICBtYXJrIHRoZW0gdm9s
YXRpbGUsIGtlZXBpbmcgdGhlIGFwcCBhbGl2ZSBmb3IgbW9yZSB0aW1lIChyZS10cnlpbmcgdGhl
CisgICAgICAgIHZvbGF0aWxpdHkgY2hhbmdlKSwgYW5kIGluY3JlYXNpbmcgdGhlIGxpa2VsaWhv
b2Qgb2YgYmFja2dyb3VuZCBqZXRzYW0uCisKKyAgICAgICAgSWYgdGhlIGRlYnVnZ2luZyB0aWxl
IG1hcCBpcyBlbmFibGVkLCBkbyBub3QgdXNlIENBTWFjaFBvcnQsIGJlY2F1c2UKKyAgICAgICAg
d2UgZG9uJ3QgaGF2ZSBhIGdyZWF0IHdheSB0byBwbHVtYiB0aGUgc2FtZSBDQU1hY2hQb3J0IHRv
IHR3byBsYXllcnMKKyAgICAgICAgKGFuZCBpdCBkb2Vzbid0IHNlZW0gdG8gd29yayBldmVuIGlm
IHlvdSBkbykuIEluc3RlYWQsIGp1c3QgbWFwIHRoZQorICAgICAgICBJT1N1cmZhY2UgaW50byB0
aGUgVUkgcHJvY2VzcyBsaWtlIHdlIHVzZWQgdG8uCisKIDIwMTYtMTItMDEgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtXSzJdIFRhcHBpbmcgYW4gZWxl
bWVudCBnZW5lcmF0ZXMgYSAnY2xpY2snIGV2ZW50IHRoYXQgaGFzIDAgYXMgdGltZVN0YW1wCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQ
SS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaApp
bmRleCAwZGQ0NTFiZTFmZGY5ZTExMThkZDlhNzczOGYzYzBiZWNmZTA4OTlmLi4xMGE4YWFmYmVm
OTgyNzAzMGYxZjZiNjdmNDZhZTA2M2Q4ZmYzNTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgKQEAgLTE5MSw2ICsxOTEsMTEgQEAg
Ym9vbCBDQVJlbmRlclNlcnZlclJlbmRlckxheWVyV2l0aFRyYW5zZm9ybShtYWNoX3BvcnRfdCwg
dWludDMyX3QgY2xpZW50X2lkLCB1aW4KICNlbmRpZgogI2VuZGlmCiAKK3R5cGVkZWYgc3RydWN0
IF9DQU1hY2hQb3J0ICpDQU1hY2hQb3J0UmVmOworQ0FNYWNoUG9ydFJlZiBDQU1hY2hQb3J0Q3Jl
YXRlKG1hY2hfcG9ydF90KTsKK21hY2hfcG9ydF90IENBTWFjaFBvcnRHZXRQb3J0KENBTWFjaFBv
cnRSZWYpOworQ0ZUeXBlSUQgQ0FNYWNoUG9ydEdldFR5cGVJRCh2b2lkKTsKKwogV1RGX0VYVEVS
Tl9DX0VORAogCiAvLyBGSVhNRTogTW92ZSB0aGlzIGludG8gdGhlIEFQUExFX0lOVEVSTkFMX1NE
SyBibG9jayBvbmNlIGl0J3MgaW4gYW4gU0RLLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IDZhZjc5MDJkYTNmOWZhOWMy
ZWFiZGFhYTBlNWQ3ODVmNjUzMmU2ZTcuLmVhZmJiM2QxODJiZTNhOTVhOGY5YjEzNmQ5NDY0MzEx
YzFmYzBhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSU9TdXJmYWNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZWdpb24uaD4KICNpbmNsdWRlIDxjaHJvbm8+CiAKQEAgLTY1LDcgKzY2
LDExIEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZSogbGF5ZXIoKSBjb25z
dCB7IHJldHVybiBtX2xheWVyOyB9CiAKLSAgICB2b2lkIGFwcGx5QmFja2luZ1N0b3JlVG9MYXll
cihDQUxheWVyICopOworICAgIGVudW0gY2xhc3MgTGF5ZXJDb250ZW50c1R5cGUgeworICAgICAg
ICBJT1N1cmZhY2UsCisgICAgICAgIENBTWFjaFBvcnQKKyAgICB9OworICAgIHZvaWQgYXBwbHlC
YWNraW5nU3RvcmVUb0xheWVyKENBTGF5ZXIgKiwgTGF5ZXJDb250ZW50c1R5cGUpOwogCiAgICAg
dm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KElQQzo6RGVjb2RlciYsIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJik7CkBAIC0xMzQsNiArMTM5
LDcgQEAgcHJpdmF0ZToKICAgICBCdWZmZXIgbV9iYWNrQnVmZmVyOwogI2lmIFVTRShJT1NVUkZB
Q0UpCiAgICAgQnVmZmVyIG1fc2Vjb25kYXJ5QmFja0J1ZmZlcjsKKyAgICBXZWJDb3JlOjpNYWNo
U2VuZFJpZ2h0IG1fZnJvbnRCdWZmZXJTZW5kUmlnaHQ7CiAjZW5kaWYKIAogICAgIFJldGFpblB0
cjxDR0NvbnRleHRSZWY+IG1fZnJvbnRDb250ZXh0UGVuZGluZ0ZsdXNoOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXgg
ZDU3MTlkZGExMmJlYWI4MjJkZjMyYjcyMTU4ZWJhNmE1ZTk5NDIwNS4uYzhlYjFkNjljOGQ1OWUx
Mjk1OTZhMjY2OThlZGFlYWI4NmE4OGQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0zNiw3ICszNiw2IEBACiAj
aW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVy
Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1F1YXJ0ekNvcmVTUEkuaD4KQEAgLTE1Myw3ICsxNTIsNyBAQCBib29sIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXll
ckJhY2tpbmdTdAogICAgICAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzZW5kUmlnaHQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICByZXN1bHQubV9mcm9udEJ1ZmZlci5zdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNl
OjpjcmVhdGVGcm9tU2VuZFJpZ2h0KHNlbmRSaWdodCwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7Cisg
ICAgICAgIHJlc3VsdC5tX2Zyb250QnVmZmVyU2VuZFJpZ2h0ID0gV1RGTW92ZShzZW5kUmlnaHQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKQEAgLTM5OSwxMyArMzk4LDMw
IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3
bihDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pCiAgICAgfQogfQogCi12b2lkIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjphcHBseUJhY2tpbmdTdG9yZVRvTGF5ZXIoQ0FMYXllciAqbGF5ZXIpCit2
b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tpbmdTdG9yZVRvTGF5ZXIoQ0FM
YXllciAqbGF5ZXIsIExheWVyQ29udGVudHNUeXBlIGNvbnRlbnRzVHlwZSkKIHsKICAgICBsYXll
ci5jb250ZW50c09wYXF1ZSA9IG1faXNPcGFxdWU7CiAKICNpZiBVU0UoSU9TVVJGQUNFKQogICAg
IGlmIChhY2NlbGVyYXRlc0RyYXdpbmcoKSkgewotICAgICAgICBsYXllci5jb250ZW50cyA9IG1f
ZnJvbnRCdWZmZXIuc3VyZmFjZSA/IG1fZnJvbnRCdWZmZXIuc3VyZmFjZS0+YXNMYXllckNvbnRl
bnRzKCkgOiBuaWw7CisgICAgICAgIHN3aXRjaCAoY29udGVudHNUeXBlKSB7CisgICAgICAgIGNh
c2UgTGF5ZXJDb250ZW50c1R5cGU6OklPU3VyZmFjZToKKyAgICAgICAgICAgIGlmICghbV9mcm9u
dEJ1ZmZlci5zdXJmYWNlKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fZnJvbnRCdWZmZXJT
ZW5kUmlnaHQpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgc2VuZFJp
Z2h0ID0gV1RGTW92ZShtX2Zyb250QnVmZmVyU2VuZFJpZ2h0KTsKKyAgICAgICAgICAgICAgICBt
X2Zyb250QnVmZmVyLnN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5k
UmlnaHQoc2VuZFJpZ2h0LCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSBtX2Zyb250QnVmZmVyLnN1cmZhY2UgPyBtX2Zy
b250QnVmZmVyLnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpIDogbmlsOworCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBMYXllckNvbnRlbnRzVHlwZTo6Q0FNYWNoUG9ydDogewor
ICAgICAgICAgICAgQVNTRVJUKG1fZnJvbnRCdWZmZXJTZW5kUmlnaHQpOworICAgICAgICAgICAg
UmV0YWluUHRyPENBTWFjaFBvcnRSZWY+IHBvcnQgPSBhZG9wdENGKENBTWFjaFBvcnRDcmVhdGUo
bV9mcm9udEJ1ZmZlclNlbmRSaWdodC5sZWFrU2VuZFJpZ2h0KCkpKTsKKyAgICAgICAgICAgIGxh
eWVyLmNvbnRlbnRzID0gKGlkKXBvcnQuZ2V0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTQyMiw3
ICs0MzgsNyBAQCBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6dGFrZUZyb250Q29udGV4dFBlbmRpbmdGbHVzaCgpCiAjaWYgVVNFKElPU1VSRkFDRSkKIGJv
b2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlw
ZSB0eXBlLCBib29sIGlzVm9sYXRpbGUpCiB7Ci0gICAgc3dpdGNoKHR5cGUpIHsKKyAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIEJ1ZmZlclR5cGU6OkZyb250OgogICAgICAgICBpZiAobV9m
cm9udEJ1ZmZlci5zdXJmYWNlICYmIG1fZnJvbnRCdWZmZXIuaXNWb2xhdGlsZSAhPSBpc1ZvbGF0
aWxlKSB7CiAgICAgICAgICAgICBpZiAoaXNWb2xhdGlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oCmlu
ZGV4IDM3ZWFmNWRiYTMxYzZjOWIxNzA2YWI3ZmM2MDRmMzdjYzg3NThhYmUuLmI1M2YxMmNmZTEx
NjI1MTBiMzU5YmU3MzFhZWMwNDAyYmNjOTJiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaApAQCAt
MzcsOSArMzcsOSBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVIb3N0OwogY2xhc3MgUmVtb3RlTGF5
ZXJUcmVlUHJvcGVydHlBcHBsaWVyIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8V2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklELCBMYXllck9yVmlldyAqPiBSZWxh
dGVkTGF5ZXJNYXA7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlQcm9wZXJ0aWVzKENBTGF5ZXIgKiwg
UmVtb3RlTGF5ZXJUcmVlSG9zdCosIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpM
YXllclByb3BlcnRpZXMmLCBjb25zdCBSZWxhdGVkTGF5ZXJNYXAmKTsKKyAgICBzdGF0aWMgdm9p
ZCBhcHBseVByb3BlcnRpZXMoQ0FMYXllciAqLCBSZW1vdGVMYXllclRyZWVIb3N0KiwgY29uc3Qg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllcyYsIGNvbnN0IFJlbGF0
ZWRMYXllck1hcCYsIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZSk7
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHN0YXRpYyB2b2lkIGFwcGx5UHJvcGVydGllcyhVSVZp
ZXcgKiwgUmVtb3RlTGF5ZXJUcmVlSG9zdCosIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpMYXllclByb3BlcnRpZXMmLCBjb25zdCBSZWxhdGVkTGF5ZXJNYXAmKTsKKyAgICBzdGF0
aWMgdm9pZCBhcHBseVByb3BlcnRpZXMoVUlWaWV3ICosIFJlbW90ZUxheWVyVHJlZUhvc3QqLCBj
b25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiwgY29uc3Qg
UmVsYXRlZExheWVyTWFwJiwgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkxheWVyQ29udGVudHNU
eXBlKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQppbmRleCBhOTJhYjIxMTlm
NjQyZDFmZmFmMmVlYWJmN2M4OGJkZTdkNDY1MGU1Li5kZDE0NzBkZmZhYTQ2Yjk1OTJiYzQ4MDlk
NGExZjA2ZTM4ZmQ1NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQpAQCAtMTI2LDcgKzEyNiw3
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUN1c3RvbUFwcGVhcmFuY2UoQ0FMYXllciAqbGF5ZXIsIEdy
YXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuCiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQgYXBw
bHlQcm9wZXJ0aWVzVG9MYXllcihDQUxheWVyICpsYXllciwgUmVtb3RlTGF5ZXJUcmVlSG9zdCog
bGF5ZXJUcmVlSG9zdCwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJv
cGVydGllcyYgcHJvcGVydGllcykKK3N0YXRpYyB2b2lkIGFwcGx5UHJvcGVydGllc1RvTGF5ZXIo
Q0FMYXllciAqbGF5ZXIsIFJlbW90ZUxheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QsIGNvbnN0
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMmIHByb3BlcnRpZXMs
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZSBsYXllckNvbnRlbnRz
VHlwZSkKIHsKICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpOYW1lQ2hhbmdlZCkKICAgICAgICAgbGF5ZXIubmFtZSA9IHBy
b3BlcnRpZXMubmFtZTsKQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVByb3Bl
cnRpZXNUb0xheWVyKENBTGF5ZXIgKmxheWVyLCBSZW1vdGVMYXllclRyZWVIb3N0KiBsYXllclRy
ZQogICAgIHsKICAgICAgICAgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9
IHByb3BlcnRpZXMuYmFja2luZ1N0b3JlLmdldCgpOwogICAgICAgICBpZiAoYmFja2luZ1N0b3Jl
ICYmIHByb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNoZWQpCi0gICAgICAgICAgICBiYWNraW5n
U3RvcmUtPmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihsYXllcik7CisgICAgICAgICAgICBiYWNr
aW5nU3RvcmUtPmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihsYXllciwgbGF5ZXJDb250ZW50c1R5
cGUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gbmlsOwog
ICAgICAgICAgICAgbGF5ZXIuY29udGVudHNPcGFxdWUgPSBOTzsKQEAgLTI1NCwxMCArMjU0LDEw
IEBAIHN0YXRpYyB2b2lkIGFwcGx5UHJvcGVydGllc1RvTGF5ZXIoQ0FMYXllciAqbGF5ZXIsIFJl
bW90ZUxheWVyVHJlZUhvc3QqIGxheWVyVHJlCiAgICAgICAgIHVwZGF0ZUN1c3RvbUFwcGVhcmFu
Y2UobGF5ZXIsIHByb3BlcnRpZXMuY3VzdG9tQXBwZWFyYW5jZSk7CiB9CiAKLXZvaWQgUmVtb3Rl
TGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXMoQ0FMYXllciAqbGF5ZXIs
IFJlbW90ZUxheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QsIGNvbnN0IFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMmIHByb3BlcnRpZXMsIGNvbnN0IFJlbGF0ZWRM
YXllck1hcCYgcmVsYXRlZExheWVycykKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBs
aWVyOjphcHBseVByb3BlcnRpZXMoQ0FMYXllciAqbGF5ZXIsIFJlbW90ZUxheWVyVHJlZUhvc3Qq
IGxheWVyVHJlZUhvc3QsIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclBy
b3BlcnRpZXMmIHByb3BlcnRpZXMsIGNvbnN0IFJlbGF0ZWRMYXllck1hcCYgcmVsYXRlZExheWVy
cywgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkxheWVyQ29udGVudHNUeXBlIGxheWVyQ29udGVu
dHNUeXBlKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBhcHBseVBy
b3BlcnRpZXNUb0xheWVyKGxheWVyLCBsYXllclRyZWVIb3N0LCBwcm9wZXJ0aWVzKTsKKyAgICBh
cHBseVByb3BlcnRpZXNUb0xheWVyKGxheWVyLCBsYXllclRyZWVIb3N0LCBwcm9wZXJ0aWVzLCBs
YXllckNvbnRlbnRzVHlwZSk7CiAKICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGll
cyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpDaGlsZHJlbkNoYW5nZWQpIHsKICAgICAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBjaGlsZHJlbiA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpwcm9wZXJ0aWVzLmNoaWxkcmVuLnNpemUo
KV0pOwpAQCAtMjkxLDEwICsyOTEsMTAgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFw
cGxpZXI6OmFwcGx5UHJvcGVydGllcyhDQUxheWVyICpsYXllciwgUmVtb3RlTGF5ZXIKIH0KIAog
I2lmIFBMQVRGT1JNKElPUykKLXZvaWQgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjph
cHBseVByb3BlcnRpZXMoVUlWaWV3ICp2aWV3LCBSZW1vdGVMYXllclRyZWVIb3N0KiBsYXllclRy
ZWVIb3N0LCBjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVz
JiBwcm9wZXJ0aWVzLCBjb25zdCBSZWxhdGVkTGF5ZXJNYXAmIHJlbGF0ZWRMYXllcnMpCit2b2lk
IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKFVJVmlldyAq
dmlldywgUmVtb3RlTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCwgY29uc3QgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllcyYgcHJvcGVydGllcywgY29uc3QgUmVs
YXRlZExheWVyTWFwJiByZWxhdGVkTGF5ZXJzLCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6TGF5
ZXJDb250ZW50c1R5cGUgbGF5ZXJDb250ZW50c1R5cGUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwotICAgIGFwcGx5UHJvcGVydGllc1RvTGF5ZXIodmlldy5sYXllciwgbGF5
ZXJUcmVlSG9zdCwgcHJvcGVydGllcyk7CisgICAgYXBwbHlQcm9wZXJ0aWVzVG9MYXllcih2aWV3
LmxheWVyLCBsYXllclRyZWVIb3N0LCBwcm9wZXJ0aWVzLCBsYXllckNvbnRlbnRzVHlwZSk7CiAK
ICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpDaGlsZHJlbkNoYW5nZWQpIHsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBjaGlsZHJlbiA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpwcm9wZXJ0aWVzLmNoaWxkcmVuLnNpemUoKV0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggYTVkNGViMjQxYmU4N2RkZThkMDg1
ODExMWY5YzJiODE4ODBkZTc4ZC4uMTE3ZjcxZTYyM2E0ZGQyNzU5NzczMzc2ZjUxODhlYTdlOTUz
MGNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCkBA
IC0xMDMsNiArMTAzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kVXBk
YXRlR2VvbWV0cnkoKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yQXBwU3VzcGVu
c2lvbigpIHsgfQorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBXZWJDb3JlOjpN
YWNoU2VuZFJpZ2h0IGNyZWF0ZUZlbmNlKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggN2I3YmQ0OGNkMGQ1Njk4NThl
NDc1NDRhOTg3OGYwNWNkNDAzNjIwMi4uMDdkNDc5MDdkMTAzMmRkN2UxYzE4NjQxOTEyZjExNDgx
MTQwYWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KQEAgLTY3Myw2ICs2NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmQoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25E
aWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZCgpCiB7CisgICAgbV9k
cmF3aW5nQXJlYS0+cHJlcGFyZUZvckFwcFN1c3BlbnNpb24oKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0
ZXJFbnRlcmluZ0JhY2tncm91bmQoKSwgbV9wYWdlSUQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5oCmluZGV4IDNlNWU5YmYwMDIzOWM2YmFkZWRiZjUzYmU0YmM5OGNlYTI5OWNmZmQu
LjFhZjZjYmVlNWU4NDdmY2ZmZjAwYjliOTgyMmM5ZmM2N2JiNDJmM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5oCkBAIC01NCw2ICs1NCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlk
UmVmcmVzaERpc3BsYXkoKTsKIAorICAgIGJvb2wgaGFzRGVidWdJbmRpY2F0b3IoKSBjb25zdCB7
IHJldHVybiAhIW1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0OyB9CisKIHByaXZhdGU6CiAg
ICAgdm9pZCBzaXplRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXZpY2VTY2FsZUZh
Y3RvckRpZENoYW5nZSgpIG92ZXJyaWRlOwpAQCAtNzcsNiArNzksOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgaGlkZUNvbnRlbnRVbnRpbFBlbmRpbmdVcGRhdGUoKSBvdmVycmlkZTsKICAgICB2b2lk
IGhpZGVDb250ZW50VW50aWxBbnlVcGRhdGUoKSBvdmVycmlkZTsKICAgICBib29sIGhhc1Zpc2li
bGVDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHByZXBhcmVGb3JBcHBTdXNw
ZW5zaW9uKCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBpbmRpY2F0
b3JMb2NhdGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KaW5kZXgg
MzQ5MzBkZDFjNDBlNWMwZjVhZGFjNDI1NTBhOTA3MTI0MmM0ZTJjZC4uOTI5ZGQxMmY5ODc2Njk0
MmY0NDc2YTc1N2E4MDRmMzEwYjMwZTYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5t
bQpAQCAtNDYyLDYgKzQ2MiwxMSBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OmhpZGVDb250ZW50VW50aWxBbnlVcGRhdGUoKQogICAgIG1fcmVtb3RlTGF5ZXJUcmVlSG9z
dC5kZXRhY2hSb290TGF5ZXIoKTsKIH0KIAordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5OjpwcmVwYXJlRm9yQXBwU3VzcGVuc2lvbigpCit7CisgICAgbV9yZW1vdGVMYXllclRy
ZWVIb3N0Lm1hcEFsbElPU3VyZmFjZUJhY2tpbmdTdG9yZSgpOworfQorCiBib29sIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Omhhc1Zpc2libGVDb250ZW50KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9yZW1vdGVMYXllclRyZWVIb3N0LnJvb3RMYXllcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QuaAppbmRleCA4ZWIw
Y2ZmOTVlZjc4YzNiMjdmZmIxZjljMjdkZjdjZmVlNjQ4MGI1Li4zZmMzNzE2ZjU0MmNkMTQ5ZWVk
MTYyMjU4MTBiYmMxZGEwOTY1M2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QuaApAQCAtNjcsMTIgKzY3LDE3IEBAIHB1YmxpYzoK
ICAgICAvLyBEZXRhY2ggdGhlIHJvb3QgbGF5ZXI7IGl0IHdpbGwgYmUgcmVhdHRhY2hlZCB1cG9u
IHRoZSBuZXh0IGluY29taW5nIGNvbW1pdC4KICAgICB2b2lkIGRldGFjaFJvb3RMYXllcigpOwog
CisgICAgLy8gVHVybiBhbGwgQ0FNYWNoUG9ydCBvYmplY3RzIGluIGxheWVyIGNvbnRlbnRzIGlu
dG8gYWN0dWFsIElPU3VyZmFjZXMuCisgICAgLy8gVGhpcyBhdm9pZHMga2VlcGluZyBhbiBvdXRz
dGFuZGluZyBJblVzZSByZWZlcmVuY2Ugd2hlbiBzdXNwZW5kZWQuCisgICAgdm9pZCBtYXBBbGxJ
T1N1cmZhY2VCYWNraW5nU3RvcmUoKTsKKwogcHJpdmF0ZToKICAgICBMYXllck9yVmlldyAqY3Jl
YXRlTGF5ZXIoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Q
cm9wZXJ0aWVzJiwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVy
dGllcyopOwogICAgIHN0YXRpYyB2b2lkIHNldExheWVySUQoQ0FMYXllciAqLCBXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQpOwogCiAgICAgdm9pZCBsYXllcldpbGxCZVJl
bW92ZWQoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEKTsKIAorCiAgICAg
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSYgbV9kcmF3aW5nQXJlYTsKICAgICBMYXll
ck9yVmlldyAqbV9yb290TGF5ZXI7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjpQbGF0Zm9ybUxheWVySUQsIFJldGFpblB0cjxMYXllck9yVmlldz4+IG1fbGF5ZXJzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1t
CmluZGV4IGIzOGZhYWFkNmZjM2FkMWYxOGUxNDZjNjdhMGIxMmUzYWU4ZjMwYTUuLjkyODg3NzI0
NjIwMWM2Mzc2YjY0YjcxMDliMmIzZmI3MmE3MjUxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTMzLDcgKzMzLDEw
IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5o
IgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dENHLmg+CisjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QbGF0Zm9ybUxheWVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1F1YXJ0ekNvcmVT
UEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KIApAQCAtNzYsNiArNzksOCBA
QCBib29sIFJlbW90ZUxheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyVHJlZShjb25zdCBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbiYgdHJhbgogCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8R3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklELCBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+
IExheWVySURQYWlyOwogICAgIFZlY3RvcjxMYXllcklEUGFpcj4gY2xvbmVzVG9VcGRhdGU7CisK
KyAgICBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6TGF5ZXJDb250ZW50c1R5cGUgbGF5ZXJDb250
ZW50c1R5cGUgPSBtX2RyYXdpbmdBcmVhLmhhc0RlYnVnSW5kaWNhdG9yKCkgPyBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6TGF5ZXJDb250ZW50c1R5cGU6OklPU3VyZmFjZSA6IFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZTo6Q0FNYWNoUG9ydDsKICAgICAKICAgICBm
b3IgKGF1dG8mIGNoYW5nZWRMYXllciA6IHRyYW5zYWN0aW9uLmNoYW5nZWRMYXllclByb3BlcnRp
ZXMoKSkgewogICAgICAgICBhdXRvIGxheWVySUQgPSBjaGFuZ2VkTGF5ZXIua2V5OwpAQCAtOTcs
MTMgKzEwMiwxMyBAQCBib29sIFJlbW90ZUxheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyVHJlZShj
b25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgdHJhbgogICAgICAgICAgICAgY2xvbmVz
VG9VcGRhdGUuYXBwZW5kKExheWVySURQYWlyKGxheWVySUQsIHByb3BlcnRpZXMuY2xvbmVkTGF5
ZXJJRCkpOwogCiAgICAgICAgIGlmIChtX2lzRGVidWdMYXllclRyZWVIb3N0KSB7Ci0gICAgICAg
ICAgICBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllcyhsYXll
ciwgdGhpcywgcHJvcGVydGllcywgcmVsYXRlZExheWVycyk7CisgICAgICAgICAgICBSZW1vdGVM
YXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllcyhsYXllciwgdGhpcywgcHJv
cGVydGllcywgcmVsYXRlZExheWVycywgbGF5ZXJDb250ZW50c1R5cGUpOwogCiAgICAgICAgICAg
ICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpCb3JkZXJXaWR0aENoYW5nZWQpCiAgICAgICAgICAgICAgICAgYXNMYXllcihsYXll
cikuYm9yZGVyV2lkdGggPSBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoIC8gaW5kaWNhdG9yU2NhbGVG
YWN0b3I7CiAgICAgICAgICAgICBhc0xheWVyKGxheWVyKS5tYXNrc1RvQm91bmRzID0gZmFsc2U7
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBs
aWVyOjphcHBseVByb3BlcnRpZXMobGF5ZXIsIHRoaXMsIHByb3BlcnRpZXMsIHJlbGF0ZWRMYXll
cnMpOworICAgICAgICAgICAgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVBy
b3BlcnRpZXMobGF5ZXIsIHRoaXMsIHByb3BlcnRpZXMsIHJlbGF0ZWRMYXllcnMsIGxheWVyQ29u
dGVudHNUeXBlKTsKICAgICB9CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBsYXllclBhaXIg
OiBjbG9uZXNUb1VwZGF0ZSkgewpAQCAtMjY5LDQgKzI3NCwyMSBAQCB2b2lkIFJlbW90ZUxheWVy
VHJlZUhvc3Q6OmRldGFjaFJvb3RMYXllcigpCiAgICAgbV9yb290TGF5ZXIgPSBudWxscHRyOwog
fQogCitzdGF0aWMgdm9pZCByZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpbmdTdG9yZShDQUxh
eWVyICpsYXllcikKK3sKKyAgICBpZiAobGF5ZXIuY29udGVudHMgJiYgQ0ZHZXRUeXBlSUQobGF5
ZXIuY29udGVudHMpID09IENBTWFjaFBvcnRHZXRUeXBlSUQoKSkgeworICAgICAgICBNYWNoU2Vu
ZFJpZ2h0IHBvcnQgPSBNYWNoU2VuZFJpZ2h0OjpjcmVhdGUoQ0FNYWNoUG9ydEdldFBvcnQoKENB
TWFjaFBvcnRSZWYpbGF5ZXIuY29udGVudHMpKTsKKyAgICAgICAgYXV0byBzdXJmYWNlID0gV2Vi
Q29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KHBvcnQsIHNSR0JDb2xvclNwYWNl
UmVmKCkpOworICAgICAgICBsYXllci5jb250ZW50cyA9IHN1cmZhY2UgPyBzdXJmYWNlLT5hc0xh
eWVyQ29udGVudHMoKSA6IG5pbDsKKyAgICB9CisKKyAgICBmb3IgKENBTGF5ZXIgKnN1YmxheWVy
IGluIGxheWVyLnN1YmxheWVycykKKyAgICAgICAgcmVjdXJzaXZlbHlNYXBJT1N1cmZhY2VCYWNr
aW5nU3RvcmUoc3VibGF5ZXIpOworfQorCit2b2lkIFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1hcEFs
bElPU3VyZmFjZUJhY2tpbmdTdG9yZSgpCit7CisgICAgcmVjdXJzaXZlbHlNYXBJT1N1cmZhY2VC
YWNraW5nU3RvcmUoYXNMYXllcihtX3Jvb3RMYXllcikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCAwNWM5NmE0YjcyNTNjMzgw
Mjk0ZGU2MDBhODU5ZjI4ZjYzZTY4YWQyLi5mNjk2ZWExOWQ3NDdkZjc3MGIxNTAwZTc3ZjdjYmIw
MzJkNTViOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC0xNjYsNyArMTY2
LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rp
b24oUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY28KICAgICAgICAgfQogCiAgICAgICAgIGlmIChp
c1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbSgpKSB7Ci0gICAgICAgICAgICBSZW1vdGVMYXll
clRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllcyhwbGF0Zm9ybUxheWVyKCksIG51
bGxwdHIsIG1fcHJvcGVydGllcywgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjpSZWxh
dGVkTGF5ZXJNYXAoKSk7CisgICAgICAgICAgICBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxp
ZXI6OmFwcGx5UHJvcGVydGllcyhwbGF0Zm9ybUxheWVyKCksIG51bGxwdHIsIG1fcHJvcGVydGll
cywgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjpSZWxhdGVkTGF5ZXJNYXAoKSwgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OkxheWVyQ29udGVudHNUeXBlOjpDQU1hY2hQb3J0KTsKICAg
ICAgICAgICAgIGRpZENvbW1pdCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296170</attachid>
            <date>2016-12-05 12:08:27 -0800</date>
            <delta_ts>2016-12-05 12:08:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141687-20161205120806.patch</filename>
            <type>text/plain</type>
            <size>22488</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg0YzYwMmY5ODRiMzA0
Zjc1N2NkYzNmMWY0OTNiMWE2MWY4MDk4NC4uNmRkNjM0YjIzN2I3N2EwYjRmODZiM2ExMmJmMDky
ZDI4NmJkMjA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTEyLTA1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IENBTWFj
aFBvcnQtYXMtbGF5ZXItY29udGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MTY4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTkzOTMyMzM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBqdXN0IGEgcGVyZm9ybWFuY2UgYnVtcC4KKworICAgICAgICAqIHBsYXRmb3JtL3NwaS9j
b2NvYS9RdWFydHpDb3JlU1BJLmg6CisgICAgICAgIEFkZCBzb21lIFNQSS4KKwogMjAxNi0xMi0w
NSAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NTIFBhcnNlcl0g
Rml4IGFzc2VydCB3aGVuIHVua25vd24gcHJvcGVydGllcyBhcmUgZW5jb3VudGVyZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggOTQ5MDk4YTBkMmQ1MGY0YmRjZjE1NjgzMTEwYmM2N2UzYTgwYjhkOS4uYTVlN2Qw
ZWI0NDliYzhlMjU3ZmIyMmE2ZTllZDExOTQwMTk4YWIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDU1IEBACisyMDE2LTEyLTA1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkb3B0IENBTWFjaFBvcnQtYXMtbGF5ZXItY29udGVudHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTY4NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTkzOTMyMzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRlY29kZSk6CisgICAgICAgIE9uIHRo
ZSBVSSBwcm9jZXNzIHNpZGUsIGluc3RlYWQgb2YgYWN0dWFsbHkgbG9va2luZyB1cCB0aGUgc3Vy
ZmFjZSwKKyAgICAgICAganVzdCBrZWVwIHRoZSBNYWNoU2VuZFJpZ2h0IGFyb3VuZCwgdG8gbGF0
ZXIgYmUgdHVybmVkIGludG8gYSBDQU1hY2hQb3J0LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tpbmdTdG9yZVRvTGF5ZXIpOgorICAgICAgICBN
YWtlIGEgQ0FNYWNoUG9ydCBhbmQgbGVhayBvdXIgc2VuZCByaWdodCBpbnRvIGl0LiBDQU1hY2hQ
b3J0CisgICAgICAgIHdpbGwgYWRvcHQgdGhlIHBvcnQgYW5kIGRlc3Ryb3kgaXQgd2hlbiBuZWVk
ZWQuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldEJ1ZmZl
clZvbGF0aWxpdHkpOgorICAgICAgICBUaW55IHN0eWxlIGZpeC4KKworICAgICAgICAqIFNoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmg6CisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW06CisgICAgICAgIChXZWJLaXQ6
OmFwcGx5UHJvcGVydGllc1RvTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eTo6
cHJlcGFyZUZvckFwcFN1c3BlbnNpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9u
RGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6cHJlcGFyZUZv
ckFwcFN1c3BlbnNpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
SG9zdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJUcmVlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFwQWxsSU9TdXJmYWNlQmFj
a2luZ1N0b3JlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
cmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbik6CisgICAgICAgIFR3byBzdXBwb3J0aW5nIGNoYW5n
ZXMgaW4gb3JkZXIgdG8gZml4IHRoZSB0d28gcmVncmVzc2lvbnMgdGhhdCB0aGlzCisgICAgICAg
IGNhdXNlZCB3aGVuIHdlIHRyaWVkIHRvIGxhbmQgaXQgdHdvIHllYXJzIGFnbzoKKworICAgICAg
ICBXaGVuIGFuIGFwcCBpcyBiZWluZyBzdXNwZW5kZWQsIHJlc29sdmUgYWxsIENBTWFjaFBvcnQg
YmFja2luZyBzdG9yZQorICAgICAgICBpbnRvIGFjdHVhbCBJT1N1cmZhY2VzLiBPdGhlcndpc2Us
IGFueSBsaXZlIENBTWFjaFBvcnRzIHdpbGwga2VlcCBhCisgICAgICAgICsxIG9uIHRoZWlyIHJl
c3BlY3RpdmUgSU9TdXJmYWNlJ3MgdXNlIGNvdW50LCBjYXVzaW5nIHVzIHRvIGZhaWwgdG8KKyAg
ICAgICAgbWFyayB0aGVtIHZvbGF0aWxlLCBrZWVwaW5nIHRoZSBhcHAgYWxpdmUgZm9yIG1vcmUg
dGltZSAocmUtdHJ5aW5nIHRoZQorICAgICAgICB2b2xhdGlsaXR5IGNoYW5nZSksIGFuZCBpbmNy
ZWFzaW5nIHRoZSBsaWtlbGlob29kIG9mIGJhY2tncm91bmQgamV0c2FtLgorCisgICAgICAgIElm
IHRoZSBkZWJ1Z2dpbmcgdGlsZSBtYXAgaXMgZW5hYmxlZCwgZG8gbm90IHVzZSBDQU1hY2hQb3J0
LCBiZWNhdXNlCisgICAgICAgIHdlIGRvbid0IGhhdmUgYSBncmVhdCB3YXkgdG8gcGx1bWIgdGhl
IHNhbWUgQ0FNYWNoUG9ydCB0byB0d28gbGF5ZXJzCisgICAgICAgIChhbmQgaXQgZG9lc24ndCBz
ZWVtIHRvIHdvcmsgZXZlbiBpZiB5b3UgZG8pLiBJbnN0ZWFkLCBqdXN0IG1hcCB0aGUKKyAgICAg
ICAgSU9TdXJmYWNlIGludG8gdGhlIFVJIHByb2Nlc3MgbGlrZSB3ZSB1c2VkIHRvLgorCiAyMDE2
LTEyLTA1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBjbWFrZSBidWlsZGZpeCBhZnRlciByMjA5MzA3LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAppbmRleCBmYTMyNjNm
ZmRlYjE1YjBkYjJhZWUxMTBiYzQ4ZmQ0ZjE1NjVhZjQ2Li43YTE1ZDJjYTkyNTQ5MTc4NTkxOTYw
NzllMmM0Nzc3ZTk1ZjI1MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRl
KEludFNpemUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0ID0gRm9ybWF0OjpSR0JBKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlKElu
dFNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0ID0gRm9y
bWF0OjpSR0JBKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBNYWNoU2VuZFJpZ2h0JiwgQ0dDb2xv
clNwYWNlUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBNYWNoU2VuZFJpZ2h0JiYsIENHQ29s
b3JTcGFjZVJlZik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0
ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbUltYWdl
KENHSW1hZ2VSZWYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDRhNzY2MTFlZjM5MmNjOWNmNWEyMjg5ZTRj
NmMwYmY2MGFiMmU5YjMuLjc4Yzc4MDIzODgxNjNjNWRmZDc1MmM2OTkyYjMzZGE4N2UxODNjYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UubW0KQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3Vy
ZmFjZT4gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBJbnQKICAgICBy
ZXR1cm4gc3VyZmFjZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4g
V2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmln
aHQmIHNlbmRSaWdodCwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCitzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5k
UmlnaHQoY29uc3QgTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdodCwgQ0dDb2xvclNwYWNlUmVmIGNv
bG9yU3BhY2UpCiB7CiAgICAgYXV0byBzdXJmYWNlID0gYWRvcHRDRihJT1N1cmZhY2VMb29rdXBG
cm9tTWFjaFBvcnQoc2VuZFJpZ2h0LnNlbmRSaWdodCgpKSk7CiAgICAgcmV0dXJuIElPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVN1cmZhY2Uoc3VyZmFjZS5nZXQoKSwgY29sb3JTcGFjZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAppbmRleCAw
ZGQ0NTFiZTFmZGY5ZTExMThkZDlhNzczOGYzYzBiZWNmZTA4OTlmLi4xMGE4YWFmYmVmOTgyNzAz
MGYxZjZiNjdmNDZhZTA2M2Q4ZmYzNTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgKQEAgLTE5MSw2ICsxOTEsMTEgQEAgYm9vbCBD
QVJlbmRlclNlcnZlclJlbmRlckxheWVyV2l0aFRyYW5zZm9ybShtYWNoX3BvcnRfdCwgdWludDMy
X3QgY2xpZW50X2lkLCB1aW4KICNlbmRpZgogI2VuZGlmCiAKK3R5cGVkZWYgc3RydWN0IF9DQU1h
Y2hQb3J0ICpDQU1hY2hQb3J0UmVmOworQ0FNYWNoUG9ydFJlZiBDQU1hY2hQb3J0Q3JlYXRlKG1h
Y2hfcG9ydF90KTsKK21hY2hfcG9ydF90IENBTWFjaFBvcnRHZXRQb3J0KENBTWFjaFBvcnRSZWYp
OworQ0ZUeXBlSUQgQ0FNYWNoUG9ydEdldFR5cGVJRCh2b2lkKTsKKwogV1RGX0VYVEVSTl9DX0VO
RAogCiAvLyBGSVhNRTogTW92ZSB0aGlzIGludG8gdGhlIEFQUExFX0lOVEVSTkFMX1NESyBibG9j
ayBvbmNlIGl0J3MgaW4gYW4gU0RLLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IDZhZjc5MDJkYTNmOWZhOWMyZWFiZGFh
YTBlNWQ3ODVmNjUzMmU2ZTcuLmQ3OTEzOGU2YWI1ZDA4MmJkMjlkNjE4MWU3NDFlZWYzYmY1NGY3
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSU9T
dXJmYWNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZWdpb24uaD4KICNpbmNsdWRlIDxjaHJvbm8+CiAKQEAgLTY1LDcgKzY2LDggQEAg
cHVibGljOgogCiAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBsYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fbGF5ZXI7IH0KIAotICAgIHZvaWQgYXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKENBTGF5
ZXIgKik7CisgICAgZW51bSBjbGFzcyBMYXllckNvbnRlbnRzVHlwZSB7IElPU3VyZmFjZSwgQ0FN
YWNoUG9ydCB9OworICAgIHZvaWQgYXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKENBTGF5ZXIgKiwg
TGF5ZXJDb250ZW50c1R5cGUpOwogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29u
c3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlJik7CkBAIC0xMzQsNiArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBCdWZmZXIgbV9i
YWNrQnVmZmVyOwogI2lmIFVTRShJT1NVUkZBQ0UpCiAgICAgQnVmZmVyIG1fc2Vjb25kYXJ5QmFj
a0J1ZmZlcjsKKyAgICBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IG1fZnJvbnRCdWZmZXJTZW5kUmln
aHQ7CiAjZW5kaWYKIAogICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IG1fZnJvbnRDb250ZXh0
UGVuZGluZ0ZsdXNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggZDU3MTlkZGExMmJlYWI4MjJkZjMyYjcyMTU4ZWJh
NmE1ZTk5NDIwNS4uZDk2MjNhODhkOTM2N2ZhMDY2Y2IxMTE5M2Y4MTIyZWJhNjAxMDE1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tCkBAIC0zNiw3ICszNiw2IEBACiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSU9TdXJmYWNlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bs
YXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1F1YXJ0ekNvcmVTUEkuaD4KQEAgLTE1
Myw3ICsxNTIsNyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllckJhY2tpbmdTdAogICAgICAgICBNYWNoU2VuZFJp
Z2h0IHNlbmRSaWdodDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzZW5kUmlnaHQpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQubV9mcm9udEJ1ZmZlci5z
dXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KHNlbmRSaWdo
dCwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgIHJlc3VsdC5tX2Zyb250QnVmZmVyU2Vu
ZFJpZ2h0ID0gV1RGTW92ZShzZW5kUmlnaHQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAjZW5kaWYKQEAgLTM5OSwxMyArMzk4LDI1IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pCiAg
ICAgfQogfQogCi12b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tpbmdTdG9y
ZVRvTGF5ZXIoQ0FMYXllciAqbGF5ZXIpCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjph
cHBseUJhY2tpbmdTdG9yZVRvTGF5ZXIoQ0FMYXllciAqbGF5ZXIsIExheWVyQ29udGVudHNUeXBl
IGNvbnRlbnRzVHlwZSkKIHsKICAgICBsYXllci5jb250ZW50c09wYXF1ZSA9IG1faXNPcGFxdWU7
CiAKICNpZiBVU0UoSU9TVVJGQUNFKQogICAgIGlmIChhY2NlbGVyYXRlc0RyYXdpbmcoKSkgewot
ICAgICAgICBsYXllci5jb250ZW50cyA9IG1fZnJvbnRCdWZmZXIuc3VyZmFjZSA/IG1fZnJvbnRC
dWZmZXIuc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CisgICAgICAgIHN3aXRjaCAo
Y29udGVudHNUeXBlKSB7CisgICAgICAgIGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OklPU3VyZmFj
ZToKKyAgICAgICAgICAgIGlmICghbV9mcm9udEJ1ZmZlci5zdXJmYWNlKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKG1fZnJvbnRCdWZmZXJTZW5kUmlnaHQpOworICAgICAgICAgICAgICAgIG1f
ZnJvbnRCdWZmZXIuc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChXVEZNb3ZlKG1fZnJvbnRCdWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gbV9mcm9udEJ1
ZmZlci5zdXJmYWNlID8gbV9mcm9udEJ1ZmZlci5zdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6
IG5pbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExheWVyQ29udGVudHNUeXBl
OjpDQU1hY2hQb3J0OgorICAgICAgICAgICAgQVNTRVJUKG1fZnJvbnRCdWZmZXJTZW5kUmlnaHQp
OworICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSAoaWQpYWRvcHRDRihDQU1hY2hQb3J0Q3Jl
YXRlKG1fZnJvbnRCdWZmZXJTZW5kUmlnaHQubGVha1NlbmRSaWdodCgpKSkuZ2V0KCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlm
CkBAIC00MjIsNyArNDMzLDcgQEAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OnRha2VGcm9udENvbnRleHRQZW5kaW5nRmx1c2goKQogI2lmIFVTRShJT1NV
UkZBQ0UpCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRCdWZmZXJWb2xhdGlsaXR5
KEJ1ZmZlclR5cGUgdHlwZSwgYm9vbCBpc1ZvbGF0aWxlKQogewotICAgIHN3aXRjaCh0eXBlKSB7
CisgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBCdWZmZXJUeXBlOjpGcm9udDoKICAgICAg
ICAgaWYgKG1fZnJvbnRCdWZmZXIuc3VyZmFjZSAmJiBtX2Zyb250QnVmZmVyLmlzVm9sYXRpbGUg
IT0gaXNWb2xhdGlsZSkgewogICAgICAgICAgICAgaWYgKGlzVm9sYXRpbGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGll
ci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFw
cGxpZXIuaAppbmRleCAzN2VhZjVkYmEzMWM2YzliMTcwNmFiN2ZjNjA0ZjM3Y2M4NzU4YWJlLi5i
NTNmMTJjZmUxMTYyNTEwYjM1OWJlNzMxYWVjMDQwMmJjYzkyYmUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBs
aWVyLmgKQEAgLTM3LDkgKzM3LDkgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlSG9zdDsKIGNsYXNz
IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBI
YXNoTWFwPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCwgTGF5ZXJPclZp
ZXcgKj4gUmVsYXRlZExheWVyTWFwOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5UHJvcGVydGllcyhD
QUxheWVyICosIFJlbW90ZUxheWVyVHJlZUhvc3QqLCBjb25zdCBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiwgY29uc3QgUmVsYXRlZExheWVyTWFwJik7CisgICAg
c3RhdGljIHZvaWQgYXBwbHlQcm9wZXJ0aWVzKENBTGF5ZXIgKiwgUmVtb3RlTGF5ZXJUcmVlSG9z
dCosIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMmLCBj
b25zdCBSZWxhdGVkTGF5ZXJNYXAmLCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6TGF5ZXJDb250
ZW50c1R5cGUpOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICBzdGF0aWMgdm9pZCBhcHBseVByb3Bl
cnRpZXMoVUlWaWV3ICosIFJlbW90ZUxheWVyVHJlZUhvc3QqLCBjb25zdCBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiwgY29uc3QgUmVsYXRlZExheWVyTWFwJik7
CisgICAgc3RhdGljIHZvaWQgYXBwbHlQcm9wZXJ0aWVzKFVJVmlldyAqLCBSZW1vdGVMYXllclRy
ZWVIb3N0KiwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGll
cyYsIGNvbnN0IFJlbGF0ZWRMYXllck1hcCYsIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpMYXll
ckNvbnRlbnRzVHlwZSk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KaW5kZXgg
YTkyYWIyMTE5ZjY0MmQxZmZhZjJlZWFiZjdjODhiZGU3ZDQ2NTBlNS4uZGQxNDcwZGZmYWE0NmI5
NTkyYmM0ODA5ZDRhMWYwNmUzOGZkNTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KQEAgLTEy
Niw3ICsxMjYsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVDdXN0b21BcHBlYXJhbmNlKENBTGF5ZXIg
KmxheWVyLCBHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbgogI2VuZGlmCiB9CiAKLXN0YXRp
YyB2b2lkIGFwcGx5UHJvcGVydGllc1RvTGF5ZXIoQ0FMYXllciAqbGF5ZXIsIFJlbW90ZUxheWVy
VHJlZUhvc3QqIGxheWVyVHJlZUhvc3QsIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpMYXllclByb3BlcnRpZXMmIHByb3BlcnRpZXMpCitzdGF0aWMgdm9pZCBhcHBseVByb3BlcnRp
ZXNUb0xheWVyKENBTGF5ZXIgKmxheWVyLCBSZW1vdGVMYXllclRyZWVIb3N0KiBsYXllclRyZWVI
b3N0LCBjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiBw
cm9wZXJ0aWVzLCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6TGF5ZXJDb250ZW50c1R5cGUgbGF5
ZXJDb250ZW50c1R5cGUpCiB7CiAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMg
JiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TmFtZUNoYW5nZWQpCiAgICAgICAgIGxheWVy
Lm5hbWUgPSBwcm9wZXJ0aWVzLm5hbWU7CkBAIC0yMzQsNyArMjM0LDcgQEAgc3RhdGljIHZvaWQg
YXBwbHlQcm9wZXJ0aWVzVG9MYXllcihDQUxheWVyICpsYXllciwgUmVtb3RlTGF5ZXJUcmVlSG9z
dCogbGF5ZXJUcmUKICAgICB7CiAgICAgICAgIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlKiBiYWNr
aW5nU3RvcmUgPSBwcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS5nZXQoKTsKICAgICAgICAgaWYgKGJh
Y2tpbmdTdG9yZSAmJiBwcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVkKQotICAgICAgICAg
ICAgYmFja2luZ1N0b3JlLT5hcHBseUJhY2tpbmdTdG9yZVRvTGF5ZXIobGF5ZXIpOworICAgICAg
ICAgICAgYmFja2luZ1N0b3JlLT5hcHBseUJhY2tpbmdTdG9yZVRvTGF5ZXIobGF5ZXIsIGxheWVy
Q29udGVudHNUeXBlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBsYXllci5jb250ZW50
cyA9IG5pbDsKICAgICAgICAgICAgIGxheWVyLmNvbnRlbnRzT3BhcXVlID0gTk87CkBAIC0yNTQs
MTAgKzI1NCwxMCBAQCBzdGF0aWMgdm9pZCBhcHBseVByb3BlcnRpZXNUb0xheWVyKENBTGF5ZXIg
KmxheWVyLCBSZW1vdGVMYXllclRyZWVIb3N0KiBsYXllclRyZQogICAgICAgICB1cGRhdGVDdXN0
b21BcHBlYXJhbmNlKGxheWVyLCBwcm9wZXJ0aWVzLmN1c3RvbUFwcGVhcmFuY2UpOwogfQogCi12
b2lkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKENBTGF5
ZXIgKmxheWVyLCBSZW1vdGVMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0LCBjb25zdCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzLCBjb25z
dCBSZWxhdGVkTGF5ZXJNYXAmIHJlbGF0ZWRMYXllcnMpCit2b2lkIFJlbW90ZUxheWVyVHJlZVBy
b3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKENBTGF5ZXIgKmxheWVyLCBSZW1vdGVMYXll
clRyZWVIb3N0KiBsYXllclRyZWVIb3N0LCBjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6TGF5ZXJQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzLCBjb25zdCBSZWxhdGVkTGF5ZXJNYXAmIHJl
bGF0ZWRMYXllcnMsIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZSBs
YXllckNvbnRlbnRzVHlwZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0g
ICAgYXBwbHlQcm9wZXJ0aWVzVG9MYXllcihsYXllciwgbGF5ZXJUcmVlSG9zdCwgcHJvcGVydGll
cyk7CisgICAgYXBwbHlQcm9wZXJ0aWVzVG9MYXllcihsYXllciwgbGF5ZXJUcmVlSG9zdCwgcHJv
cGVydGllcywgbGF5ZXJDb250ZW50c1R5cGUpOwogCiAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdl
ZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Q2hpbGRyZW5DaGFuZ2Vk
KSB7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gY2hpbGRyZW4gPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6cHJvcGVydGllcy5jaGls
ZHJlbi5zaXplKCldKTsKQEAgLTI5MSwxMCArMjkxLDEwIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVl
UHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXMoQ0FMYXllciAqbGF5ZXIsIFJlbW90ZUxh
eWVyCiB9CiAKICNpZiBQTEFURk9STShJT1MpCi12b2lkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5
QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKFVJVmlldyAqdmlldywgUmVtb3RlTGF5ZXJUcmVlSG9z
dCogbGF5ZXJUcmVlSG9zdCwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVy
UHJvcGVydGllcyYgcHJvcGVydGllcywgY29uc3QgUmVsYXRlZExheWVyTWFwJiByZWxhdGVkTGF5
ZXJzKQordm9pZCBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGll
cyhVSVZpZXcgKnZpZXcsIFJlbW90ZUxheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QsIGNvbnN0
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMmIHByb3BlcnRpZXMs
IGNvbnN0IFJlbGF0ZWRMYXllck1hcCYgcmVsYXRlZExheWVycywgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OkxheWVyQ29udGVudHNUeXBlIGxheWVyQ29udGVudHNUeXBlKQogewogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBhcHBseVByb3BlcnRpZXNUb0xheWVyKHZpZXcu
bGF5ZXIsIGxheWVyVHJlZUhvc3QsIHByb3BlcnRpZXMpOworICAgIGFwcGx5UHJvcGVydGllc1Rv
TGF5ZXIodmlldy5sYXllciwgbGF5ZXJUcmVlSG9zdCwgcHJvcGVydGllcywgbGF5ZXJDb250ZW50
c1R5cGUpOwogCiAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6Q2hpbGRyZW5DaGFuZ2VkKSB7CiAgICAgICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gY2hpbGRyZW4gPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQ2FwYWNpdHk6cHJvcGVydGllcy5jaGlsZHJlbi5zaXplKCldKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGE1ZDRlYjI0MWJl
ODdkZGU4ZDA4NTgxMTFmOWMyYjgxODgwZGU3OGQuLjExN2Y3MWU2MjNhNGRkMjc1OTc3MzM3NmY1
MTg4ZWE3ZTk1MzBjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVh
UHJveHkuaApAQCAtMTAzLDYgKzEwMyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFVwZGF0ZUdlb21ldHJ5KCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZv
ckFwcFN1c3BlbnNpb24oKSB7IH0KKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwg
V2ViQ29yZTo6TWFjaFNlbmRSaWdodCBjcmVhdGVGZW5jZSgpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDdiN2JkNDhj
ZDBkNTY5ODU4ZTQ3NTQ0YTk4NzhmMDVjZDQwMzYyMDIuLjA3ZDQ3OTA3ZDEwMzJkZDdlMWMxODY0
MTkxMmYxMTQ4MTE0MGFiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCkBAIC02NzMsNiArNjczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmFw
cGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQoKQog
eworICAgIG1fZHJhd2luZ0FyZWEtPnByZXBhcmVGb3JBcHBTdXNwZW5zaW9uKCk7CiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBz
aG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKCksIG1fcGFnZUlEKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkuaAppbmRleCA5ZjY4YzdjOTkwNWY5ZmY5ZjUxMjlhMTI2Y2M4ZDEz
MWM0MjgxNGM1Li43MWQ5MTY5NjZjMTE0NzdkMjM1YWQzMWViZTQyZmQ5ZWIxM2IzYjg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdWludDMyX3QgY29udGVudFVwZGF0ZUZyZXF1ZW5jeSgpIGNvbnN0OwogCisgICAgYm9v
bCBoYXNEZWJ1Z0luZGljYXRvcigpIGNvbnN0IHsgcmV0dXJuICEhbV9kZWJ1Z0luZGljYXRvckxh
eWVyVHJlZUhvc3Q7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CkBA
IC03OSw2ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoaWRlQ29udGVudFVudGlsUGVuZGlu
Z1VwZGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgaGlkZUNvbnRlbnRVbnRpbEFueVVwZGF0ZSgp
IG92ZXJyaWRlOwogICAgIGJvb2wgaGFzVmlzaWJsZUNvbnRlbnQoKSBjb25zdCBvdmVycmlkZTsK
KworICAgIHZvaWQgcHJlcGFyZUZvckFwcFN1c3BlbnNpb24oKSBmaW5hbDsKICAgICAKICAgICBX
ZWJDb3JlOjpGbG9hdFBvaW50IGluZGljYXRvckxvY2F0aW9uKCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCA0NjNjYTZjMGY5YzhhMWRmYzllMWMwNjE0ZmQyNDk4
ZGU4NmFjYmRiLi4zOTRhZDA4NWZkNDgyNWU1MjI4NjUxZmQxMTQ3ZTcwZWVkZDljNDhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC00NzQsNiArNDc0LDExIEBAIHZvaWQgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aGlkZUNvbnRlbnRVbnRpbEFueVVwZGF0ZSgp
CiAgICAgbV9yZW1vdGVMYXllclRyZWVIb3N0LmRldGFjaFJvb3RMYXllcigpOwogfQogCit2b2lk
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OnByZXBhcmVGb3JBcHBTdXNwZW5zaW9u
KCkKK3sKKyAgICBtX3JlbW90ZUxheWVyVHJlZUhvc3QubWFwQWxsSU9TdXJmYWNlQmFja2luZ1N0
b3JlKCk7Cit9CisKIGJvb2wgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aGFzVmlz
aWJsZUNvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX3JlbW90ZUxheWVyVHJlZUhvc3Qu
cm9vdExheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Jl
bW90ZUxheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5oCmluZGV4IDhlYjBjZmY5NWVmNzhjM2IyN2ZmYjFmOWMyN2RmN2NmZWU2
NDgwYjUuLjYxZDEwOTcwYjlhZjk0ZTZjM2FhZWY5M2QwMjBlN2JkZTBmMmJkNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5oCkBA
IC02Nyw2ICs2NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gRGV0YWNoIHRoZSByb290IGxheWVyOyBp
dCB3aWxsIGJlIHJlYXR0YWNoZWQgdXBvbiB0aGUgbmV4dCBpbmNvbWluZyBjb21taXQuCiAgICAg
dm9pZCBkZXRhY2hSb290TGF5ZXIoKTsKIAorICAgIC8vIFR1cm4gYWxsIENBTWFjaFBvcnQgb2Jq
ZWN0cyBpbiBsYXllciBjb250ZW50cyBpbnRvIGFjdHVhbCBJT1N1cmZhY2VzLgorICAgIC8vIFRo
aXMgYXZvaWRzIGtlZXBpbmcgYW4gb3V0c3RhbmRpbmcgSW5Vc2UgcmVmZXJlbmNlIHdoZW4gc3Vz
cGVuZGVkLgorICAgIHZvaWQgbWFwQWxsSU9TdXJmYWNlQmFja2luZ1N0b3JlKCk7CisKIHByaXZh
dGU6CiAgICAgTGF5ZXJPclZpZXcgKmNyZWF0ZUxheWVyKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYsIGNvbnN0IFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMqKTsKICAgICBzdGF0aWMgdm9pZCBzZXRMYXll
cklEKENBTGF5ZXIgKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
SG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9z
dC5tbQppbmRleCBiMzhmYWFhZDZmYzNhZDFmMThlMTQ2YzY3YTBiMTJlM2FlOGYzMGE1Li41NzI4
OGFmNjJlODc3NmM3NGM4ZDZmYjExMGY1OGVjZTZmNTI5ZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0zMyw3ICsz
MywxMCBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJv
eHkuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgorI2ltcG9ydCA8V2ViQ29yZS9RdWFydHpD
b3JlU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxl
Z2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAKQEAgLTc2LDYgKzc5
LDggQEAgYm9vbCBSZW1vdGVMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllclRyZWUoY29uc3QgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIHRyYW4KIAogICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCwgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXll
cklEPiBMYXllcklEUGFpcjsKICAgICBWZWN0b3I8TGF5ZXJJRFBhaXI+IGNsb25lc1RvVXBkYXRl
OworCisgICAgYXV0byBsYXllckNvbnRlbnRzVHlwZSA9IG1fZHJhd2luZ0FyZWEuaGFzRGVidWdJ
bmRpY2F0b3IoKSA/IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZTo6
SU9TdXJmYWNlIDogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkxheWVyQ29udGVudHNUeXBlOjpD
QU1hY2hQb3J0OwogICAgIAogICAgIGZvciAoYXV0byYgY2hhbmdlZExheWVyIDogdHJhbnNhY3Rp
b24uY2hhbmdlZExheWVyUHJvcGVydGllcygpKSB7CiAgICAgICAgIGF1dG8gbGF5ZXJJRCA9IGNo
YW5nZWRMYXllci5rZXk7CkBAIC05NywxMyArMTAyLDEzIEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlTGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0
cmFuCiAgICAgICAgICAgICBjbG9uZXNUb1VwZGF0ZS5hcHBlbmQoTGF5ZXJJRFBhaXIobGF5ZXJJ
RCwgcHJvcGVydGllcy5jbG9uZWRMYXllcklEKSk7CiAKICAgICAgICAgaWYgKG1faXNEZWJ1Z0xh
eWVyVHJlZUhvc3QpIHsKLSAgICAgICAgICAgIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGll
cjo6YXBwbHlQcm9wZXJ0aWVzKGxheWVyLCB0aGlzLCBwcm9wZXJ0aWVzLCByZWxhdGVkTGF5ZXJz
KTsKKyAgICAgICAgICAgIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9w
ZXJ0aWVzKGxheWVyLCB0aGlzLCBwcm9wZXJ0aWVzLCByZWxhdGVkTGF5ZXJzLCBsYXllckNvbnRl
bnRzVHlwZSk7CiAKICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVz
ICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJvcmRlcldpZHRoQ2hhbmdlZCkKICAgICAg
ICAgICAgICAgICBhc0xheWVyKGxheWVyKS5ib3JkZXJXaWR0aCA9IHByb3BlcnRpZXMuYm9yZGVy
V2lkdGggLyBpbmRpY2F0b3JTY2FsZUZhY3RvcjsKICAgICAgICAgICAgIGFzTGF5ZXIobGF5ZXIp
Lm1hc2tzVG9Cb3VuZHMgPSBmYWxzZTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBSZW1v
dGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllcyhsYXllciwgdGhpcywg
cHJvcGVydGllcywgcmVsYXRlZExheWVycyk7CisgICAgICAgICAgICBSZW1vdGVMYXllclRyZWVQ
cm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllcyhsYXllciwgdGhpcywgcHJvcGVydGllcywg
cmVsYXRlZExheWVycywgbGF5ZXJDb250ZW50c1R5cGUpOwogICAgIH0KICAgICAKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGxheWVyUGFpciA6IGNsb25lc1RvVXBkYXRlKSB7CkBAIC0yNjksNCArMjc0
LDIxIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoUm9vdExheWVyKCkKICAgICBt
X3Jvb3RMYXllciA9IG51bGxwdHI7CiB9CiAKK3N0YXRpYyB2b2lkIHJlY3Vyc2l2ZWx5TWFwSU9T
dXJmYWNlQmFja2luZ1N0b3JlKENBTGF5ZXIgKmxheWVyKQoreworICAgIGlmIChsYXllci5jb250
ZW50cyAmJiBDRkdldFR5cGVJRChsYXllci5jb250ZW50cykgPT0gQ0FNYWNoUG9ydEdldFR5cGVJ
RCgpKSB7CisgICAgICAgIE1hY2hTZW5kUmlnaHQgcG9ydCA9IE1hY2hTZW5kUmlnaHQ6OmNyZWF0
ZShDQU1hY2hQb3J0R2V0UG9ydCgoQ0FNYWNoUG9ydFJlZilsYXllci5jb250ZW50cykpOworICAg
ICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmln
aHQoV1RGTW92ZShwb3J0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgIGxheWVyLmNv
bnRlbnRzID0gc3VyZmFjZSA/IHN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpIDogbmlsOworICAg
IH0KKworICAgIGZvciAoQ0FMYXllciAqc3VibGF5ZXIgaW4gbGF5ZXIuc3VibGF5ZXJzKQorICAg
ICAgICByZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpbmdTdG9yZShzdWJsYXllcik7Cit9CisK
K3ZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFwQWxsSU9TdXJmYWNlQmFja2luZ1N0b3JlKCkK
K3sKKyAgICByZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpbmdTdG9yZShhc0xheWVyKG1fcm9v
dExheWVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUuY3BwCmluZGV4IDA1Yzk2YTRiNzI1M2MzODAyOTRkZTYwMGE4NTlmMjhmNjNlNjhhZDIu
LmY2OTZlYTE5ZDc0N2RmNzcwYjE1MDBlNzdmN2NiYjAzMmQ1NWI5ZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZS5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6cmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbihSZW1vdGVMYXllclRyZWVDb250ZXh0
JiBjbwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tKCkpIHsKLSAgICAgICAgICAgIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBw
bHlQcm9wZXJ0aWVzKHBsYXRmb3JtTGF5ZXIoKSwgbnVsbHB0ciwgbV9wcm9wZXJ0aWVzLCBSZW1v
dGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OlJlbGF0ZWRMYXllck1hcCgpKTsKKyAgICAgICAg
ICAgIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKHBsYXRm
b3JtTGF5ZXIoKSwgbnVsbHB0ciwgbV9wcm9wZXJ0aWVzLCBSZW1vdGVMYXllclRyZWVQcm9wZXJ0
eUFwcGxpZXI6OlJlbGF0ZWRMYXllck1hcCgpLCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6TGF5
ZXJDb250ZW50c1R5cGU6OkNBTWFjaFBvcnQpOwogICAgICAgICAgICAgZGlkQ29tbWl0KCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>