<?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>183511</bug_id>
          
          <creation_ts>2018-03-09 04:15:31 -0800</creation_ts>
          <short_desc>[Nicosia] Add threaded PaintingEngine implementation</short_desc>
          <delta_ts>2018-03-09 06:04:18 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1405143</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-03-09 04:15:31 -0800</bug_when>
    <thetext>[Nicosia] Add threaded PaintingEngine implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405147</commentid>
    <comment_count>1</comment_count>
      <attachid>335421</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-03-09 04:44:22 -0800</bug_when>
    <thetext>Created attachment 335421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405151</commentid>
    <comment_count>2</comment_count>
      <attachid>335421</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-03-09 05:15:17 -0800</bug_when>
    <thetext>Comment on attachment 335421
Patch

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

&gt; Source/WebCore/platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:49
&gt; +    auto* taskData = static_cast&lt;TaskData*&gt;(data);

We could adopt the data here using unique_ptr.

&gt; Source/WebCore/platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:97
&gt; +            paintLayer(context, layer, sourceRect, mappedSourceRect, targetRect,
&gt; +                contentsScale, buffer-&gt;supportsAlpha());

I think this could be one line

&gt; Source/WebCore/platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:100
&gt; +    g_thread_pool_push(m_threadPool, new TaskData { WTFMove(buffer), WTFMove(paintingOperations) }, nullptr);

I guess this happens a lot, can we make TaskData fast allocated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405152</commentid>
    <comment_count>3</comment_count>
      <attachid>335421</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-03-09 05:20:26 -0800</bug_when>
    <thetext>Comment on attachment 335421
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:49
&gt;&gt; +    auto* taskData = static_cast&lt;TaskData*&gt;(data);
&gt; 
&gt; We could adopt the data here using unique_ptr.

OK.

&gt;&gt; Source/WebCore/platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:97
&gt;&gt; +                contentsScale, buffer-&gt;supportsAlpha());
&gt; 
&gt; I think this could be one line

OK.

&gt;&gt; Source/WebCore/platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:100
&gt;&gt; +    g_thread_pool_push(m_threadPool, new TaskData { WTFMove(buffer), WTFMove(paintingOperations) }, nullptr);
&gt; 
&gt; I guess this happens a lot, can we make TaskData fast allocated?

Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405156</commentid>
    <comment_count>4</comment_count>
      <attachid>335424</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-03-09 05:52:25 -0800</bug_when>
    <thetext>Created attachment 335424
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405157</commentid>
    <comment_count>5</comment_count>
      <attachid>335424</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-03-09 06:03:28 -0800</bug_when>
    <thetext>Comment on attachment 335424
Patch for landing

Clearing flags on attachment: 335424

Committed r229460: &lt;https://trac.webkit.org/changeset/229460&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405158</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-03-09 06:03:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405160</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-09 06:04:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/38300730&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335421</attachid>
            <date>2018-03-09 04:44:22 -0800</date>
            <delta_ts>2018-03-09 05:52:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183511-20180309134420.patch</filename>
            <type>text/plain</type>
            <size>25605</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ5ZmNiYjJkYjg0ODdk
ZmEyZDc1YzE0YWQ4YzVhOWU3ODVlNDIyMS4uMzNkYmNmODY5NmZlNDhjODE0MDFiYTY5ZWMyZWFk
Mzg0NzVkMzQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE4LTAzLTA5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbTmljb3NpYV0gQWRk
IHRocmVhZGVkIFBhaW50aW5nRW5naW5lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM1MTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgTmljb3NpYTo6UGFpbnRpbmdFbmdp
bmVUaHJlYWRlZCwgY2xhc3MgdGhhdCBpbnRlcm5hbGx5IHVzZXMgYSB0aHJlYWQKKyAgICAgICAg
cG9vbCBpbiB3aGljaCBwYWludGluZyB0YXNrcyBhcmUgZXhlY3V0ZWQuCisKKyAgICAgICAgSW1w
bGVtZW50YXRpb24gZm9yIG5vdyBkZWZhdWx0cyB0byB1c2luZyBHTGliJ3MgR1RocmVhZFBvb2ws
IGRlZmF1bHRpbmcKKyAgICAgICAgdG8gNCB0aHJlYWRzIHRoYXQgYXJlIGV4Y2x1c2l2ZSB0byB0
aGlzIHBvb2wuIFRoZXNlIHBhcmFtZXRlcnMgc2hvdWxkIGJlCisgICAgICAgIGZpbmUtdHVuZWQg
aW4gdGhlIGZ1dHVyZSwgb3IgZXZlbiBtYWRlIGNvbmZpZ3VyYWJsZSwgYnV0IGFyZSBhIHNvbGlk
CisgICAgICAgIGJhc2lzIGZvciB0ZXN0aW5nLgorCisgICAgICAgIEluIFBhaW50aW5nRW5naW5l
VGhyZWFkZWQ6OnBhaW50KCksIFBhaW50aW5nQ29udGV4dCBpbXBsZW1lbnRhdGlvbiBpcworICAg
ICAgICB1c2VkIHRvIHJlY29yZCBhbGwgdGhlIG9wZXJhdGlvbnMsIGFuZCB0aGUgZ2F0aGVyZWQg
VmVjdG9yIGlzIGNvbWJpbmVkCisgICAgICAgIHdpdGggdGhlIEJ1ZmZlciBvYmplY3QgYW5kIGRp
c3BhdGNoZWQgaW50byB0aGUgdGhyZWFkIHBvb2wuIEluIHRoZQorICAgICAgICB0aHJlYWQgZnVu
Y3Rpb24sIHRoZSBwcm92aWRlZCBidWZmZXIgYW5kIHBhaW50aW5nIG9wZXJhdGlvbnMgYXJlIHJ1
bgorICAgICAgICB0aHJvdWdoIHRoZSBQYWludGluZ0NvbnRleHQgaW1wbGVtZW50YXRpb24sIHJl
cGxheWluZyBhbGwgdGhlIG9wZXJhdGlvbnMKKyAgICAgICAgb24gYSBwYWludGluZyBjb250ZXh0
IHRoYXQgZHJhd3MgaW50byB0aGUgZ2l2ZW4gYnVmZmVyLgorCisgICAgICAgIFRoZSByZWNvcmRl
ZCBvcGVyYXRpb24gb2JqZWN0cyBpbXBsZW1lbnQgdGhlIFBhaW50aW5nT3BlcmF0aW9uIGludGVy
ZmFjZQorICAgICAgICBjb250YWluIGFsbCB0aGUgZGF0YSBuZWNlc3NhcnkgdG8gcmVwbGF5IGEg
Z2l2ZW4gb3BlcmF0aW9uLiBUaGV5IGNhbiBiZQorICAgICAgICBleGVjdXRlZCBhZ2FpbnN0IGEg
UGFpbnRpbmdPcGVyYXRpb25SZXBsYXkgb2JqZWN0LCBhcyBpcyB0aGUgY2FzZSBkdXJpbmcKKyAg
ICAgICAgUGFpbnRpbmdDb250ZXh0OjpyZXBsYXkoKSwgb3IgdGhleSBjYW4gYmUgZHVtcGVkIGlu
dG8gYSBUZXh0U3RyZWFtCisgICAgICAgIG9iamVjdCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgor
CisgICAgICAgIFBhaW50aW5nQ29udGV4dCBub3cgYWxzbyBwcm92aWRlcyB0aGUgcmVjb3JkKCkg
YW5kIHJlcGxheSgpIHN0YXRpYworICAgICAgICBmdW5jdGlvbnMuIFBhaW50aW5nQ29udGV4dCBv
YmplY3RzIG5vdyBkaWZmZXIgcGVyIHB1cnBvc2UsIHdoaWNoIGNhbiBiZQorICAgICAgICBlaXRo
ZXIgZm9yIHBhaW50aW5nIG9yIGZvciByZWNvcmRpbmcuIHBhaW50KCkgYW5kIHJlcGxheSgpIHVz
ZSBhCisgICAgICAgIGZvci1wYWludGluZyBQYWludGluZ0NvbnRleHQsIGFuZCByZWNvcmQoKSB1
c2VzIGEgZm9yLXJlY29yZGluZyBvbmUuCisgICAgICAgIFRoZSBmb3ItcGFpbnRpbmcgUGFpbnRp
bmdDb250ZXh0IHJlY2VpdmVzIGEgQnVmZmVyIG9iamVjdCwgaS5lLiBhIG1lbW9yeQorICAgICAg
ICBhcmVhIG9uIHdoaWNoIGl0IGNhbiBkcmF3LCB3aGlsZSB0aGUgZm9yLXJlY29yZGluZyBQYWlu
dGluZ0NvbnRleHQgdXNlcworICAgICAgICB0aGUgcGFzc2VkLWluIFBhaW50aW5nT3BlcmF0aW9u
cyBWZWN0b3IgdGhhdCBzaG91bGQgc3RvcmUgYWxsIHRoZQorICAgICAgICByZWNvcmRlZCBvcGVy
YXRpb25zLgorCisgICAgICAgIFRoZSBjdXJyZW50IENhaXJvIGltcGxlbWVudGF0aW9uIG9mIFBh
aW50aW5nQ29udGV4dCBpcyBtb3ZlZCBpbnRvCisgICAgICAgIFBhaW50aW5nQ29udGV4dENhaXJv
OjpGb3JQYWludGluZy4gUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclJlY29yZGluZyBpcworICAg
ICAgICBhZGRlZCBidXQgaXMgY3VycmVudGx5IG5vLW9wIHVudGlsIGEgQ2Fpcm8tc3BlY2lmaWMg
R3JhcGhpY3NDb250ZXh0SW1wbAorICAgICAgICB3aXRoIHJlY29yZGluZyBjYXBhYmlsaXRpZXMg
aXMgYWRkZWQsIGFsbG93aW5nIGFueSBjYWxsIG9uIHRoZQorICAgICAgICBHcmFwaGljc0NvbnRl
eHQgb2JqZWN0IHVzZWQgaW4gUGFpbnRpbmdDb250ZXh0OjpyZWNvcmQoKSB0byBiZSByZWNvcmRl
ZAorICAgICAgICBmb3IgbGF0ZXIgcmVwbGF5LiBQYWludGluZ09wZXJhdGlvblJlcGxheUNhaXJv
LCBpbmhlcml0aW5nIGZyb20KKyAgICAgICAgUGFpbnRpbmdPcGVyYXRpb25SZXBsYXksIHdpbGwg
YmUgdXNlZCBmb3IgcmVwbGF5IHB1cnBvc2VzLCBwcm92aWRpbmcKKyAgICAgICAgb25seSByZWZl
cmVuY2UgdG8gdGhlIFBsYXRmb3JtQ29udGV4dENhaXJvIG9iamVjdCB0aGF0IGlzIGNvbnN0cnVj
dGVkIGluCisgICAgICAgIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZy4KKworICAg
ICAgICBUaGUgQ2Fpcm8tc3BlY2lmaWMgR3JhcGhpY3NDb250ZXh0SW1wbCBpbXBsZW1lbnRhdGlv
biB3aWxsIGJlIGFkZGVkIGluCisgICAgICAgIGEgc2VwYXJhdGUgcGF0Y2guIEFmdGVyIHRoYXQs
IFBhaW50aW5nRW5naW5lOjpjcmVhdGUoKSB3aWxsIGJlIG1vZGlmaWVkCisgICAgICAgIHNvIHRo
YXQgdGhlIE5pY29zaWE6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQgaW1wbGVtZW50YXRpb24gY2Fu
IGJlIHVzZWQKKyAgICAgICAgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHByb2JhYmx5IGJ5IHNldHRp
bmcgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UZXh0dXJl
TWFwcGVyLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YVBhaW50aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0NvbnRleHQ6
OmNyZWF0ZUZvclBhaW50aW5nKToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29udGV4dDo6
Y3JlYXRlRm9yUmVjb3JkaW5nKToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29udGV4dDo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFQYWludGluZ0NvbnRleHQuaDoKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29udGV4
dDo6cGFpbnQpOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0OjpyZWNvcmQpOgor
ICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0OjpyZXBsYXkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKE5pY29zaWE6OnNfdGhyZWFkRnVuYyk6CisgICAgICAgIChOaWNv
c2lhOjpwYWludExheWVyKToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nRW5naW5lVGhyZWFk
ZWQ6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQpOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdF
bmdpbmVUaHJlYWRlZDo6flBhaW50aW5nRW5naW5lVGhyZWFkZWQpOgorICAgICAgICAoTmljb3Np
YTo6UGFpbnRpbmdFbmdpbmVUaHJlYWRlZDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRp
bmdDb250ZXh0LmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29z
aWFQYWludGluZ09wZXJhdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0NvbnRleHQuY3BwLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENh
aXJvLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWlu
dGluZzo6Rm9yUGFpbnRpbmcpOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fp
cm86OkZvclBhaW50aW5nOjp+Rm9yUGFpbnRpbmcpOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRp
bmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpncmFwaGljc0NvbnRleHQpOgorICAgICAgICAo
Tmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpyZXBsYXkpOgorICAg
ICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclJlY29yZGluZzo6Rm9yUmVj
b3JkaW5nKToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNv
cmRpbmc6OmdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0NvbnRl
eHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpyZXBsYXkpOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRp
bmdDb250ZXh0Q2Fpcm86OlBhaW50aW5nQ29udGV4dENhaXJvKTogRGVsZXRlZC4KKyAgICAgICAg
KE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjp+UGFpbnRpbmdDb250ZXh0Q2Fpcm8pOiBE
ZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86OmdyYXBoaWNz
Q29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ09wZXJhdGlvblJlcGxheUNhaXJv
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYVBhaW50aW5nQ29udGV4dC5jcHAuCisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ09w
ZXJhdGlvblJlcGxheUNhaXJvOjpQYWludGluZ09wZXJhdGlvblJlcGxheUNhaXJvKToKKwogMjAx
OC0wMy0wOCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAg
QWRkIGJhc2ljIHN5bmNocm9uaXphdGlvbiBjYXBhYmlsaXR5IHRvIE5pY29zaWE6OkJ1ZmZlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UKaW5kZXggNjNmOTY1
YTE5YjQ5NjViNTk2NjcyZTdhMzI4ZjU5MTdmNjFmMDUwMS4uNGQxM2QzMGNkYTQyNmMyOTAyMmQ4
ZWQ2ZmYwODIyYWVkMTllZmFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJl
TWFwcGVyLmNtYWtlCkBAIC01NCw2ICs1NCw3IEBAIGlmIChVU0VfQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nQ29u
dGV4dC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRp
bmdFbmdpbmUuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBh
aW50aW5nRW5naW5lQmFzaWMuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCiAgICAg
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhUGFpbnRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nQ29udGV4dC5jcHAKaW5kZXggM2ZhMTQwZWI5ZGE2
ODc1YjFjNjhhODhmYjhmOTM0N2Q1Njc5YmI2OS4uNWJlNzU2YWM0MDA3NzYyMjE0NzNlZjdmNGUz
N2YxN2ZkYjA0MDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0NvbnRleHQuY3BwCkBA
IC0zNSwxMyArMzUsMjIgQEAKIAogbmFtZXNwYWNlIE5pY29zaWEgewogCi1zdGQ6OnVuaXF1ZV9w
dHI8UGFpbnRpbmdDb250ZXh0PiBQYWludGluZ0NvbnRleHQ6OmNyZWF0ZShCdWZmZXImIGJ1ZmZl
cikKLXsKICNpZiBVU0UoQ0FJUk8pCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxQYWludGlu
Z0NvbnRleHQ+KG5ldyBQYWludGluZ0NvbnRleHRDYWlybyhidWZmZXIpKTsKK3VzaW5nIEZvclBh
aW50aW5nQ2xhc3MgPSBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc7Cit1c2luZyBG
b3JSZWNvcmRpbmdDbGFzcyA9IFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRpbmc7CiAj
ZWxzZQogI2Vycm9yIEEgTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0IGltcGxlbWVudGF0aW9uIGlz
IHJlcXVpcmVkLgogI2VuZGlmCisKKworc3RkOjp1bmlxdWVfcHRyPFBhaW50aW5nQ29udGV4dD4g
UGFpbnRpbmdDb250ZXh0OjpjcmVhdGVGb3JQYWludGluZyhCdWZmZXImIGJ1ZmZlcikKK3sKKyAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBhaW50aW5nQ29udGV4dD4obmV3IEZvclBhaW50aW5n
Q2xhc3MoYnVmZmVyKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxQYWludGluZ0NvbnRleHQ+IFBh
aW50aW5nQ29udGV4dDo6Y3JlYXRlRm9yUmVjb3JkaW5nKFBhaW50aW5nT3BlcmF0aW9ucyYgcGFp
bnRpbmdPcGVyYXRpb25zKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRpbmdD
b250ZXh0PihuZXcgRm9yUmVjb3JkaW5nQ2xhc3MocGFpbnRpbmdPcGVyYXRpb25zKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdDb250ZXh0LmgK
aW5kZXggYWZlNjlkN2MxYzgxNThkMGExZjk5YzRlMGYxOTI1ZTdkMGQ0ZDgxZC4uNWM0NDAwZTRi
MTJlZGUwZmUwYTdlMDMzYWFkOWE2ODUzY2UxMGMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRp
bmdDb250ZXh0LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJOaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDE3ICs0NSwzMiBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgdm9pZCBwYWludChCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
VCYgcGFpbnRGdW5jdG9yKQogICAgIHsKLSAgICAgICAgYXV0byBwYWludGluZ0NvbnRleHQgPSBQ
YWludGluZ0NvbnRleHQ6OmNyZWF0ZShidWZmZXIpOworICAgICAgICBhdXRvIHBhaW50aW5nQ29u
dGV4dCA9IFBhaW50aW5nQ29udGV4dDo6Y3JlYXRlRm9yUGFpbnRpbmcoYnVmZmVyKTsKICAgICAg
ICAgcGFpbnRGdW5jdG9yKHBhaW50aW5nQ29udGV4dC0+Z3JhcGhpY3NDb250ZXh0KCkpOwogICAg
IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIHZvaWQgcmVjb3JkKFBh
aW50aW5nT3BlcmF0aW9ucyYgcGFpbnRpbmdPcGVyYXRpb25zLCBjb25zdCBUJiByZWNvcmRGdW5j
dG9yKQorICAgIHsKKyAgICAgICAgYXV0byByZWNvcmRpbmdDb250ZXh0ID0gUGFpbnRpbmdDb250
ZXh0OjpjcmVhdGVGb3JSZWNvcmRpbmcocGFpbnRpbmdPcGVyYXRpb25zKTsKKyAgICAgICAgcmVj
b3JkRnVuY3RvcihyZWNvcmRpbmdDb250ZXh0LT5ncmFwaGljc0NvbnRleHQoKSk7CisgICAgfQor
CisgICAgc3RhdGljIHZvaWQgcmVwbGF5KEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBQYWludGluZ09w
ZXJhdGlvbnMmIHBhaW50aW5nT3BlcmF0aW9ucykKKyAgICB7CisgICAgICAgIGF1dG8gcGFpbnRp
bmdDb250ZXh0ID0gUGFpbnRpbmdDb250ZXh0OjpjcmVhdGVGb3JQYWludGluZyhidWZmZXIpOwor
ICAgICAgICBwYWludGluZ0NvbnRleHQtPnJlcGxheShwYWludGluZ09wZXJhdGlvbnMpOworICAg
IH0KKwogICAgIHZpcnR1YWwgflBhaW50aW5nQ29udGV4dCgpID0gZGVmYXVsdDsKIAogcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcGxheShjb25zdCBQYWludGluZ09wZXJhdGlv
bnMmKSA9IDA7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQYWludGlu
Z0NvbnRleHQ+IGNyZWF0ZShCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBh
aW50aW5nQ29udGV4dD4gY3JlYXRlRm9yUGFpbnRpbmcoQnVmZmVyJik7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxQYWludGluZ0NvbnRleHQ+IGNyZWF0ZUZvclJlY29yZGluZyhQYWludGlu
Z09wZXJhdGlvbnMmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5n
RW5naW5lVGhyZWFkZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE2ZmY2
ZDIxNmM5Mjc4OGMyZmM4YzI0ZGFlODMyMjVkOTViNzJjNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5n
aW5lVGhyZWFkZWQuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlh
IFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICog
ICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJOaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5oIgorCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1
ZGUgIk5pY29zaWFCdWZmZXIuaCIKKyNpbmNsdWRlICJOaWNvc2lhUGFpbnRpbmdDb250ZXh0Lmgi
CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKwor
bmFtZXNwYWNlIE5pY29zaWEgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0cnVjdCBU
YXNrRGF0YSB7CisgICAgUmVmPEJ1ZmZlcj4gYnVmZmVyOworICAgIFBhaW50aW5nT3BlcmF0aW9u
cyBwYWludGluZ09wZXJhdGlvbnM7Cit9OworCit2b2lkIHNfdGhyZWFkRnVuYyhncG9pbnRlciBk
YXRhLCBncG9pbnRlcikKK3sKKyAgICBhdXRvKiB0YXNrRGF0YSA9IHN0YXRpY19jYXN0PFRhc2tE
YXRhKj4oZGF0YSk7CisKKyAgICBQYWludGluZ0NvbnRleHQ6OnJlcGxheSh0YXNrRGF0YS0+YnVm
ZmVyLCB0YXNrRGF0YS0+cGFpbnRpbmdPcGVyYXRpb25zKTsKKyAgICB0YXNrRGF0YS0+YnVmZmVy
LT5jb21wbGV0ZVBhaW50aW5nKCk7CisKKyAgICBkZWxldGUgdGFza0RhdGE7Cit9CisKK3N0YXRp
YyB2b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0xheWVy
JiBsYXllciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgbWFwcGVk
U291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgZmxvYXQgY29udGVudHNTY2Fs
ZSwgYm9vbCBzdXBwb3J0c0FscGhhKQoreworICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRl
eHQuY2xpcCh0YXJnZXRSZWN0KTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZSh0YXJnZXRSZWN0Lngo
KSwgdGFyZ2V0UmVjdC55KCkpOworCisgICAgaWYgKHN1cHBvcnRzQWxwaGEpIHsKKyAgICAgICAg
Y29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBzb3VyY2VSZWN0LnNpemUo
KSksIENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIH0KKworICAgIGNvbnRleHQudHJhbnNs
YXRlKC1zb3VyY2VSZWN0LngoKSwgLXNvdXJjZVJlY3QueSgpKTsKKyAgICBjb250ZXh0LnNjYWxl
KEZsb2F0U2l6ZShjb250ZW50c1NjYWxlLCBjb250ZW50c1NjYWxlKSk7CisKKyAgICBsYXllci5w
YWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBtYXBwZWRTb3VyY2VSZWN0KTsKKwor
ICAgIGNvbnRleHQucmVzdG9yZSgpOworfQorCitQYWludGluZ0VuZ2luZVRocmVhZGVkOjpQYWlu
dGluZ0VuZ2luZVRocmVhZGVkKCkKK3sKKyAgICAvLyBGSVhNRTogdGhlc2UgcGFyYW1ldGVycyBz
aG91bGQgYmUgZmluZS10dW5lZCwgb3IgbWF5YmUgbWFkZSBjb25maWd1cmFibGUuCisgICAgbV90
aHJlYWRQb29sID0gZ190aHJlYWRfcG9vbF9uZXcoc190aHJlYWRGdW5jLCBudWxscHRyLCA0LCBU
UlVFLCBudWxscHRyKTsKK30KKworUGFpbnRpbmdFbmdpbmVUaHJlYWRlZDo6flBhaW50aW5nRW5n
aW5lVGhyZWFkZWQoKQoreworICAgIGdfdGhyZWFkX3Bvb2xfZnJlZShtX3RocmVhZFBvb2wsIFRS
VUUsIEZBTFNFKTsKK30KKworYm9vbCBQYWludGluZ0VuZ2luZVRocmVhZGVkOjpwYWludChHcmFw
aGljc0xheWVyJiBsYXllciwgUmVmPEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIG1hcHBlZFNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IHRhcmdldFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCit7CisgICAgYnVmZmVyLT5iZWdpblBh
aW50aW5nKCk7CisKKyAgICBQYWludGluZ09wZXJhdGlvbnMgcGFpbnRpbmdPcGVyYXRpb25zOwor
ICAgIFBhaW50aW5nQ29udGV4dDo6cmVjb3JkKHBhaW50aW5nT3BlcmF0aW9ucywKKyAgICAgICAg
WyZdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgcGFp
bnRMYXllcihjb250ZXh0LCBsYXllciwgc291cmNlUmVjdCwgbWFwcGVkU291cmNlUmVjdCwgdGFy
Z2V0UmVjdCwKKyAgICAgICAgICAgICAgICBjb250ZW50c1NjYWxlLCBidWZmZXItPnN1cHBvcnRz
QWxwaGEoKSk7CisgICAgICAgIH0pOworCisgICAgZ190aHJlYWRfcG9vbF9wdXNoKG1fdGhyZWFk
UG9vbCwgbmV3IFRhc2tEYXRhIHsgV1RGTW92ZShidWZmZXIpLCBXVEZNb3ZlKHBhaW50aW5nT3Bl
cmF0aW9ucykgfSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgTmljb3NpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRl
ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM5MWM4Y2MzZTI4NGE1N2VkZWNhOWVjMTI3MGNjZTQyYmMwZThmNWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmgKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJp
Z2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk5pY29zaWFQYWludGluZ0VuZ2luZS5oIgorCit0
eXBlZGVmIHN0cnVjdCBfR1RocmVhZFBvb2wgR1RocmVhZFBvb2w7CisKK25hbWVzcGFjZSBOaWNv
c2lhIHsKKworY2xhc3MgUGFpbnRpbmdFbmdpbmVUaHJlYWRlZCBmaW5hbCA6IHB1YmxpYyBQYWlu
dGluZ0VuZ2luZSB7CitwdWJsaWM6CisgICAgUGFpbnRpbmdFbmdpbmVUaHJlYWRlZCgpOworICAg
IHZpcnR1YWwgflBhaW50aW5nRW5naW5lVGhyZWFkZWQoKTsKKworcHJpdmF0ZToKKyAgICBib29s
IHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXImLCBSZWY8QnVmZmVyPiYmLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CisKKyAgICBHVGhyZWFkUG9vbCogbV90aHJlYWRQb29s
OworfTsKKworfSAvLyBuYW1lc3BhY2UgTmljb3NpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5n
T3BlcmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNmNzc2Njc5ZTE4OWM2ZmNlNGVmODYyNTdiMDA1ZDEx
Mzc0ZTIyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmgKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30KKworbmFtZXNw
YWNlIE5pY29zaWEgeworCitzdHJ1Y3QgUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkgeyB9OworCitz
dHJ1Y3QgUGFpbnRpbmdPcGVyYXRpb24geworICAgIHZpcnR1YWwgflBhaW50aW5nT3BlcmF0aW9u
KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhaW50aW5nT3BlcmF0aW9u
UmVwbGF5JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpID0g
MDsKK307CisKK3VzaW5nIFBhaW50aW5nT3BlcmF0aW9ucyA9IFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8UGFpbnRpbmdPcGVyYXRpb24+PjsKKworfSAvLyBuYW1lc3BhY2UgTmljb3NpYQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCmluZGV4
IGIwNWY1MzM4MGM4NjYzNWE3NmZjZTIxMmZlNThiZGZjMzhiZjZkOGMuLmIxNWFlMGJkN2U1YmI3
YzdmY2I3NDAxYjJhNjg5NzY1MWU2NjU3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uaCIKICNpbmNsdWRlICJOaWNvc2lhQnVmZmVyLmgiCisjaW5jbHVkZSAiTmljb3NpYVBhaW50
aW5nT3BlcmF0aW9uUmVwbGF5Q2Fpcm8uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWly
by5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KQEAgLTQx
LDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIE5pY29zaWEgewogCi1QYWludGluZ0NvbnRleHRDYWly
bzo6UGFpbnRpbmdDb250ZXh0Q2Fpcm8oQnVmZmVyJiBidWZmZXIpCitQYWludGluZ0NvbnRleHRD
YWlybzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IEJhbGFuY2VkIGJ5IHRoZSBkZXJlZiBpbiB0aGUgc19idWZmZXJLZXkgdXNlciBkYXRhIGRlc3Ry
b3kgY2FsbGJhY2suCiAgICAgYnVmZmVyLnJlZigpOwpAQCAtNTEsMTAgKzUyLDEwIEBAIFBhaW50
aW5nQ29udGV4dENhaXJvOjpQYWludGluZ0NvbnRleHRDYWlybyhCdWZmZXImIGJ1ZmZlcikKIAog
ICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19idWZmZXJLZXk7CiAgICAgY2Fpcm9f
c3VyZmFjZV9zZXRfdXNlcl9kYXRhKG1fY2Fpcm8uc3VyZmFjZS5nZXQoKSwgJnNfYnVmZmVyS2V5
LAotICAgICAgICBuZXcgc3RkOjpwYWlyPEJ1ZmZlciosIFBhaW50aW5nQ29udGV4dENhaXJvKj4g
eyAmYnVmZmVyLCB0aGlzIH0sCisgICAgICAgIG5ldyBzdGQ6OnBhaXI8QnVmZmVyKiwgRm9yUGFp
bnRpbmcqPiB7ICZidWZmZXIsIHRoaXMgfSwKICAgICAgICAgW10odm9pZCogZGF0YSkKICAgICAg
ICAgewotICAgICAgICAgICAgYXV0byogdXNlckRhdGEgPSBzdGF0aWNfY2FzdDxzdGQ6OnBhaXI8
QnVmZmVyKiwgUGFpbnRpbmdDb250ZXh0Q2Fpcm8qPio+KGRhdGEpOworICAgICAgICAgICAgYXV0
byogdXNlckRhdGEgPSBzdGF0aWNfY2FzdDxzdGQ6OnBhaXI8QnVmZmVyKiwgRm9yUGFpbnRpbmcq
Pio+KGRhdGEpOwogCiAgICAgICAgICAgICAvLyBEZXJlZiB0aGUgQnVmZmVyIG9iamVjdC4KICAg
ICAgICAgICAgIHVzZXJEYXRhLT5maXJzdC0+ZGVyZWYoKTsKQEAgLTcyLDcgKzczLDcgQEAgUGFp
bnRpbmdDb250ZXh0Q2Fpcm86OlBhaW50aW5nQ29udGV4dENhaXJvKEJ1ZmZlciYgYnVmZmVyKQog
ICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ+KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9y
eSgqbV9wbGF0Zm9ybUNvbnRleHQpKTsKIH0KIAotUGFpbnRpbmdDb250ZXh0Q2Fpcm86On5QYWlu
dGluZ0NvbnRleHRDYWlybygpCitQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6On5G
b3JQYWludGluZygpCiB7CiAgICAgY2Fpcm9fc3VyZmFjZV9mbHVzaChtX2NhaXJvLnN1cmZhY2Uu
Z2V0KCkpOwogCkBAIC04OCwxMSArODksNDAgQEAgUGFpbnRpbmdDb250ZXh0Q2Fpcm86On5QYWlu
dGluZ0NvbnRleHRDYWlybygpCiAgICAgQVNTRVJUKG1fZGVsZXRpb25Db21wbGV0ZSk7CiB9CiAK
LVdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OmdyYXBoaWNz
Q29udGV4dCgpCitXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIFBhaW50aW5nQ29udGV4dENhaXJv
OjpGb3JQYWludGluZzo6Z3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICByZXR1cm4gKm1fZ3JhcGhp
Y3NDb250ZXh0OwogfQogCit2b2lkIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6
cmVwbGF5KGNvbnN0IFBhaW50aW5nT3BlcmF0aW9ucyYgcGFpbnRpbmdPcGVyYXRpb25zKQorewor
ICAgIFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5Q2Fpcm8gb3BlcmF0aW9uUmVwbGF5IHsgKm1fcGxh
dGZvcm1Db250ZXh0IH07CisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBwYWludGluZ09wZXJh
dGlvbnMpCisgICAgICAgIG9wZXJhdGlvbi0+ZXhlY3V0ZShvcGVyYXRpb25SZXBsYXkpOworfQor
CitQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcoUGFpbnRp
bmdPcGVyYXRpb25zJiBwYWludGluZ09wZXJhdGlvbnMpCit7CisgICAgbV9ncmFwaGljc0NvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oCisgICAgICAg
IFsmcGFpbnRpbmdPcGVyYXRpb25zXShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiByZXR1cm4gYSBHcmFwaGljc0NvbnRl
eHRJbXBsIHdpdGggcmVjb3JkaW5nIGNhcGFiaWxpdGllcy4KKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB9KTsKK30KKworUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclJlY29y
ZGluZzo6fkZvclJlY29yZGluZygpID0gZGVmYXVsdDsKKworV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpncmFwaGljc0NvbnRleHQo
KQoreworICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7Cit9CisKK3ZvaWQgUGFpbnRpbmdD
b250ZXh0Q2Fpcm86OkZvclJlY29yZGluZzo6cmVwbGF5KGNvbnN0IFBhaW50aW5nT3BlcmF0aW9u
cyYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIE5p
Y29zaWEKIAogI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENh
aXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFQYWludGluZ0NvbnRleHRDYWlyby5oCmluZGV4IGVmMzgxZTI3OTA4Y2U3YzA1YmNjZDZl
YWUyYWMzZjJhOGM3MWFiNDguLjE4ZWU0ODI2YTI5NmVkMzVkZjY3OWNhOTYyMzk2ZGE5OTI4MTc5
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fp
cm8uaApAQCAtNDQsMjQgKzQ0LDQwIEBAIGNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvOwogCiBu
YW1lc3BhY2UgTmljb3NpYSB7CiAKLWNsYXNzIFBhaW50aW5nQ29udGV4dENhaXJvIGZpbmFsIDog
cHVibGljIFBhaW50aW5nQ29udGV4dCB7CitjbGFzcyBQYWludGluZ0NvbnRleHRDYWlybyBmaW5h
bCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUGFpbnRpbmdDb250ZXh0Q2Fpcm8oQnVmZmVyJik7
Ci0gICAgdmlydHVhbCB+UGFpbnRpbmdDb250ZXh0Q2Fpcm8oKTsKKyAgICBjbGFzcyBGb3JQYWlu
dGluZyBmaW5hbCA6IHB1YmxpYyBQYWludGluZ0NvbnRleHQgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgZXhwbGljaXQgRm9yUGFpbnRpbmcoQnVmZmVyJik7CisgICAgICAgIHZpcnR1YWwgfkZvclBh
aW50aW5nKCk7CiAKLXByaXZhdGU6Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBncmFw
aGljc0NvbnRleHQoKSBvdmVycmlkZTsKKyAgICBwcml2YXRlOgorICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCgpIG92ZXJyaWRlOworICAgICAgICB2b2lk
IHJlcGxheShjb25zdCBQYWludGluZ09wZXJhdGlvbnMmKSBvdmVycmlkZTsKIAotICAgIHN0cnVj
dCB7Ci0gICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2U7Ci0gICAgICAgIFJl
ZlB0cjxjYWlyb190PiBjb250ZXh0OwotICAgIH0gbV9jYWlybzsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+IG1fcGxhdGZvcm1Db250ZXh0OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fZ3JhcGhpY3NDb250
ZXh0OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gc3VyZmFjZTsKKyAgICAgICAgICAgIFJlZlB0cjxjYWlyb190PiBjb250ZXh0OworICAgICAg
ICB9IG1fY2Fpcm87CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQbGF0Zm9ybUNv
bnRleHRDYWlybz4gbV9wbGF0Zm9ybUNvbnRleHQ7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fZ3JhcGhpY3NDb250ZXh0OwogCiAjaWZuZGVmIE5E
RUJVRwotICAgIGJvb2wgbV9kZWxldGlvbkNvbXBsZXRlIHsgZmFsc2UgfTsKKyAgICAgICAgYm9v
bCBtX2RlbGV0aW9uQ29tcGxldGUgeyBmYWxzZSB9OwogI2VuZGlmCisgICAgfTsKKworICAgIGNs
YXNzIEZvclJlY29yZGluZyBmaW5hbCA6IHB1YmxpYyBQYWludGluZ0NvbnRleHQgeworICAgIHB1
YmxpYzoKKyAgICAgICAgRm9yUmVjb3JkaW5nKFBhaW50aW5nT3BlcmF0aW9ucyYpOworICAgICAg
ICB2aXJ0dWFsIH5Gb3JSZWNvcmRpbmcoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KCkgb3ZlcnJpZGU7CisgICAgICAg
IHZvaWQgcmVwbGF5KGNvbnN0IFBhaW50aW5nT3BlcmF0aW9ucyYpIG92ZXJyaWRlOworCisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fZ3JhcGhpY3ND
b250ZXh0OworICAgIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBOaWNvc2lhCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQ
YWludGluZ09wZXJhdGlvblJlcGxheUNhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ09wZXJhdGlvblJlcGxheUNhaXJv
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2Q4MWVlYjU5M2RlM2U2ZjIwNjgzZjc0NTg4MjE2NjFiM2ZlNWY2OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uUmVwbGF5Q2Fpcm8uaApAQCAtMCwwICsx
LDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IE1ldHJvbG9naWNhbCBHcm91cCBCLlYu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTmljb3NpYVBhaW50aW5nT3Bl
cmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBsYXRmb3JtQ29udGV4dENh
aXJvOworfQorCituYW1lc3BhY2UgTmljb3NpYSB7CisKK3N0cnVjdCBQYWludGluZ09wZXJhdGlv
blJlcGxheUNhaXJvIDogUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkgeworICAgIFBhaW50aW5nT3Bl
cmF0aW9uUmVwbGF5Q2Fpcm8oV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCkKKyAgICAgICAgOiBwbGF0Zm9ybUNvbnRleHQocGxhdGZvcm1Db250ZXh0KQorICAg
IHsgfQorCisgICAgV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dDsKK307CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335424</attachid>
            <date>2018-03-09 05:52:25 -0800</date>
            <delta_ts>2018-03-09 05:52:25 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-183511-20180309145224.patch</filename>
            <type>text/plain</type>
            <size>25615</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ5ZmNiYjJkYjg0ODdk
ZmEyZDc1YzE0YWQ4YzVhOWU3ODVlNDIyMS4uMGVhODk4ZjNhZWE0MzEyMjg3MDgyYmI4ZmYyNzcz
ODBlNjhmNjc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE4LTAzLTA5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbTmljb3NpYV0gQWRk
IHRocmVhZGVkIFBhaW50aW5nRW5naW5lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM1MTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICBBZGQgTmljb3NpYTo6UGFpbnRp
bmdFbmdpbmVUaHJlYWRlZCwgY2xhc3MgdGhhdCBpbnRlcm5hbGx5IHVzZXMgYSB0aHJlYWQKKyAg
ICAgICAgcG9vbCBpbiB3aGljaCBwYWludGluZyB0YXNrcyBhcmUgZXhlY3V0ZWQuCisKKyAgICAg
ICAgSW1wbGVtZW50YXRpb24gZm9yIG5vdyBkZWZhdWx0cyB0byB1c2luZyBHTGliJ3MgR1RocmVh
ZFBvb2wsIGRlZmF1bHRpbmcKKyAgICAgICAgdG8gNCB0aHJlYWRzIHRoYXQgYXJlIGV4Y2x1c2l2
ZSB0byB0aGlzIHBvb2wuIFRoZXNlIHBhcmFtZXRlcnMgc2hvdWxkIGJlCisgICAgICAgIGZpbmUt
dHVuZWQgaW4gdGhlIGZ1dHVyZSwgb3IgZXZlbiBtYWRlIGNvbmZpZ3VyYWJsZSwgYnV0IGFyZSBh
IHNvbGlkCisgICAgICAgIGJhc2lzIGZvciB0ZXN0aW5nLgorCisgICAgICAgIEluIFBhaW50aW5n
RW5naW5lVGhyZWFkZWQ6OnBhaW50KCksIFBhaW50aW5nQ29udGV4dCBpbXBsZW1lbnRhdGlvbiBp
cworICAgICAgICB1c2VkIHRvIHJlY29yZCBhbGwgdGhlIG9wZXJhdGlvbnMsIGFuZCB0aGUgZ2F0
aGVyZWQgVmVjdG9yIGlzIGNvbWJpbmVkCisgICAgICAgIHdpdGggdGhlIEJ1ZmZlciBvYmplY3Qg
YW5kIGRpc3BhdGNoZWQgaW50byB0aGUgdGhyZWFkIHBvb2wuIEluIHRoZQorICAgICAgICB0aHJl
YWQgZnVuY3Rpb24sIHRoZSBwcm92aWRlZCBidWZmZXIgYW5kIHBhaW50aW5nIG9wZXJhdGlvbnMg
YXJlIHJ1bgorICAgICAgICB0aHJvdWdoIHRoZSBQYWludGluZ0NvbnRleHQgaW1wbGVtZW50YXRp
b24sIHJlcGxheWluZyBhbGwgdGhlIG9wZXJhdGlvbnMKKyAgICAgICAgb24gYSBwYWludGluZyBj
b250ZXh0IHRoYXQgZHJhd3MgaW50byB0aGUgZ2l2ZW4gYnVmZmVyLgorCisgICAgICAgIFRoZSBy
ZWNvcmRlZCBvcGVyYXRpb24gb2JqZWN0cyBpbXBsZW1lbnQgdGhlIFBhaW50aW5nT3BlcmF0aW9u
IGludGVyZmFjZQorICAgICAgICBjb250YWluIGFsbCB0aGUgZGF0YSBuZWNlc3NhcnkgdG8gcmVw
bGF5IGEgZ2l2ZW4gb3BlcmF0aW9uLiBUaGV5IGNhbiBiZQorICAgICAgICBleGVjdXRlZCBhZ2Fp
bnN0IGEgUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkgb2JqZWN0LCBhcyBpcyB0aGUgY2FzZSBkdXJp
bmcKKyAgICAgICAgUGFpbnRpbmdDb250ZXh0OjpyZXBsYXkoKSwgb3IgdGhleSBjYW4gYmUgZHVt
cGVkIGludG8gYSBUZXh0U3RyZWFtCisgICAgICAgIG9iamVjdCBmb3IgZGVidWdnaW5nIHB1cnBv
c2VzLgorCisgICAgICAgIFBhaW50aW5nQ29udGV4dCBub3cgYWxzbyBwcm92aWRlcyB0aGUgcmVj
b3JkKCkgYW5kIHJlcGxheSgpIHN0YXRpYworICAgICAgICBmdW5jdGlvbnMuIFBhaW50aW5nQ29u
dGV4dCBvYmplY3RzIG5vdyBkaWZmZXIgcGVyIHB1cnBvc2UsIHdoaWNoIGNhbiBiZQorICAgICAg
ICBlaXRoZXIgZm9yIHBhaW50aW5nIG9yIGZvciByZWNvcmRpbmcuIHBhaW50KCkgYW5kIHJlcGxh
eSgpIHVzZSBhCisgICAgICAgIGZvci1wYWludGluZyBQYWludGluZ0NvbnRleHQsIGFuZCByZWNv
cmQoKSB1c2VzIGEgZm9yLXJlY29yZGluZyBvbmUuCisgICAgICAgIFRoZSBmb3ItcGFpbnRpbmcg
UGFpbnRpbmdDb250ZXh0IHJlY2VpdmVzIGEgQnVmZmVyIG9iamVjdCwgaS5lLiBhIG1lbW9yeQor
ICAgICAgICBhcmVhIG9uIHdoaWNoIGl0IGNhbiBkcmF3LCB3aGlsZSB0aGUgZm9yLXJlY29yZGlu
ZyBQYWludGluZ0NvbnRleHQgdXNlcworICAgICAgICB0aGUgcGFzc2VkLWluIFBhaW50aW5nT3Bl
cmF0aW9ucyBWZWN0b3IgdGhhdCBzaG91bGQgc3RvcmUgYWxsIHRoZQorICAgICAgICByZWNvcmRl
ZCBvcGVyYXRpb25zLgorCisgICAgICAgIFRoZSBjdXJyZW50IENhaXJvIGltcGxlbWVudGF0aW9u
IG9mIFBhaW50aW5nQ29udGV4dCBpcyBtb3ZlZCBpbnRvCisgICAgICAgIFBhaW50aW5nQ29udGV4
dENhaXJvOjpGb3JQYWludGluZy4gUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclJlY29yZGluZyBp
cworICAgICAgICBhZGRlZCBidXQgaXMgY3VycmVudGx5IG5vLW9wIHVudGlsIGEgQ2Fpcm8tc3Bl
Y2lmaWMgR3JhcGhpY3NDb250ZXh0SW1wbAorICAgICAgICB3aXRoIHJlY29yZGluZyBjYXBhYmls
aXRpZXMgaXMgYWRkZWQsIGFsbG93aW5nIGFueSBjYWxsIG9uIHRoZQorICAgICAgICBHcmFwaGlj
c0NvbnRleHQgb2JqZWN0IHVzZWQgaW4gUGFpbnRpbmdDb250ZXh0OjpyZWNvcmQoKSB0byBiZSBy
ZWNvcmRlZAorICAgICAgICBmb3IgbGF0ZXIgcmVwbGF5LiBQYWludGluZ09wZXJhdGlvblJlcGxh
eUNhaXJvLCBpbmhlcml0aW5nIGZyb20KKyAgICAgICAgUGFpbnRpbmdPcGVyYXRpb25SZXBsYXks
IHdpbGwgYmUgdXNlZCBmb3IgcmVwbGF5IHB1cnBvc2VzLCBwcm92aWRpbmcKKyAgICAgICAgb25s
eSByZWZlcmVuY2UgdG8gdGhlIFBsYXRmb3JtQ29udGV4dENhaXJvIG9iamVjdCB0aGF0IGlzIGNv
bnN0cnVjdGVkIGluCisgICAgICAgIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZy4K
KworICAgICAgICBUaGUgQ2Fpcm8tc3BlY2lmaWMgR3JhcGhpY3NDb250ZXh0SW1wbCBpbXBsZW1l
bnRhdGlvbiB3aWxsIGJlIGFkZGVkIGluCisgICAgICAgIGEgc2VwYXJhdGUgcGF0Y2guIEFmdGVy
IHRoYXQsIFBhaW50aW5nRW5naW5lOjpjcmVhdGUoKSB3aWxsIGJlIG1vZGlmaWVkCisgICAgICAg
IHNvIHRoYXQgdGhlIE5pY29zaWE6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQgaW1wbGVtZW50YXRp
b24gY2FuIGJlIHVzZWQKKyAgICAgICAgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHByb2JhYmx5IGJ5
IHNldHRpbmcgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9U
ZXh0dXJlTWFwcGVyLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYVBhaW50aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0Nv
bnRleHQ6OmNyZWF0ZUZvclBhaW50aW5nKToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29u
dGV4dDo6Y3JlYXRlRm9yUmVjb3JkaW5nKToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29u
dGV4dDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFQYWludGluZ0NvbnRleHQuaDoKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5n
Q29udGV4dDo6cGFpbnQpOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0OjpyZWNv
cmQpOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0OjpyZXBsYXkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFk
ZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKE5pY29zaWE6OnNfdGhyZWFkRnVuYyk6CisgICAgICAg
IChOaWNvc2lhOjpwYWludExheWVyKToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nRW5naW5l
VGhyZWFkZWQ6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQpOgorICAgICAgICAoTmljb3NpYTo6UGFp
bnRpbmdFbmdpbmVUaHJlYWRlZDo6flBhaW50aW5nRW5naW5lVGhyZWFkZWQpOgorICAgICAgICAo
Tmljb3NpYTo6UGFpbnRpbmdFbmdpbmVUaHJlYWRlZDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
UGFpbnRpbmdDb250ZXh0LmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFQYWludGluZ09wZXJhdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0NvbnRleHQuY3BwLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29u
dGV4dENhaXJvLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjpG
b3JQYWludGluZzo6Rm9yUGFpbnRpbmcpOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250
ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjp+Rm9yUGFpbnRpbmcpOgorICAgICAgICAoTmljb3NpYTo6
UGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpncmFwaGljc0NvbnRleHQpOgorICAg
ICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpyZXBsYXkp
OgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclJlY29yZGluZzo6
Rm9yUmVjb3JkaW5nKToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjpG
b3JSZWNvcmRpbmc6OmdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChOaWNvc2lhOjpQYWludGlu
Z0NvbnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpyZXBsYXkpOgorICAgICAgICAoTmljb3NpYTo6
UGFpbnRpbmdDb250ZXh0Q2Fpcm86OlBhaW50aW5nQ29udGV4dENhaXJvKTogRGVsZXRlZC4KKyAg
ICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjp+UGFpbnRpbmdDb250ZXh0Q2Fp
cm8pOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86Omdy
YXBoaWNzQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ09wZXJhdGlvblJlcGxh
eUNhaXJvLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYVBhaW50aW5nQ29udGV4dC5jcHAuCisgICAgICAgIChOaWNvc2lhOjpQYWlu
dGluZ09wZXJhdGlvblJlcGxheUNhaXJvOjpQYWludGluZ09wZXJhdGlvblJlcGxheUNhaXJvKToK
KwogMjAxOC0wMy0wOCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgQWRkIGJhc2ljIHN5bmNocm9uaXphdGlvbiBjYXBhYmlsaXR5IHRvIE5pY29zaWE6OkJ1
ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UKaW5kZXgg
NjNmOTY1YTE5YjQ5NjViNTk2NjcyZTdhMzI4ZjU5MTdmNjFmMDUwMS4uNGQxM2QzMGNkYTQyNmMy
OTAyMmQ4ZWQ2ZmYwODIyYWVkMTllZmFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
ZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC01NCw2ICs1NCw3IEBAIGlmIChVU0VfQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50
aW5nQ29udGV4dC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
UGFpbnRpbmdFbmdpbmUuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmlj
b3NpYVBhaW50aW5nRW5naW5lQmFzaWMuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lVGhyZWFkZWQuY3BwCiAKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3Bw
CiAgICAgKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhUGFpbnRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nQ29udGV4dC5jcHAKaW5kZXggM2ZhMTQw
ZWI5ZGE2ODc1YjFjNjhhODhmYjhmOTM0N2Q1Njc5YmI2OS4uNWJlNzU2YWM0MDA3NzYyMjE0NzNl
ZjdmNGUzN2YxN2ZkYjA0MDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0NvbnRleHQu
Y3BwCkBAIC0zNSwxMyArMzUsMjIgQEAKIAogbmFtZXNwYWNlIE5pY29zaWEgewogCi1zdGQ6OnVu
aXF1ZV9wdHI8UGFpbnRpbmdDb250ZXh0PiBQYWludGluZ0NvbnRleHQ6OmNyZWF0ZShCdWZmZXIm
IGJ1ZmZlcikKLXsKICNpZiBVU0UoQ0FJUk8pCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxQ
YWludGluZ0NvbnRleHQ+KG5ldyBQYWludGluZ0NvbnRleHRDYWlybyhidWZmZXIpKTsKK3VzaW5n
IEZvclBhaW50aW5nQ2xhc3MgPSBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc7Cit1
c2luZyBGb3JSZWNvcmRpbmdDbGFzcyA9IFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRp
bmc7CiAjZWxzZQogI2Vycm9yIEEgTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0IGltcGxlbWVudGF0
aW9uIGlzIHJlcXVpcmVkLgogI2VuZGlmCisKKworc3RkOjp1bmlxdWVfcHRyPFBhaW50aW5nQ29u
dGV4dD4gUGFpbnRpbmdDb250ZXh0OjpjcmVhdGVGb3JQYWludGluZyhCdWZmZXImIGJ1ZmZlcikK
K3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBhaW50aW5nQ29udGV4dD4obmV3IEZvclBh
aW50aW5nQ2xhc3MoYnVmZmVyKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxQYWludGluZ0NvbnRl
eHQ+IFBhaW50aW5nQ29udGV4dDo6Y3JlYXRlRm9yUmVjb3JkaW5nKFBhaW50aW5nT3BlcmF0aW9u
cyYgcGFpbnRpbmdPcGVyYXRpb25zKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGFp
bnRpbmdDb250ZXh0PihuZXcgRm9yUmVjb3JkaW5nQ2xhc3MocGFpbnRpbmdPcGVyYXRpb25zKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdDb250
ZXh0LmgKaW5kZXggYWZlNjlkN2MxYzgxNThkMGExZjk5YzRlMGYxOTI1ZTdkMGQ0ZDgxZC4uNWM0
NDAwZTRiMTJlZGUwZmUwYTdlMDMzYWFkOWE2ODUzY2UxMGMwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
UGFpbnRpbmdDb250ZXh0LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJOaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDE3ICs0NSwzMiBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgdm9pZCBwYWludChCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgVCYgcGFpbnRGdW5jdG9yKQogICAgIHsKLSAgICAgICAgYXV0byBwYWludGluZ0NvbnRl
eHQgPSBQYWludGluZ0NvbnRleHQ6OmNyZWF0ZShidWZmZXIpOworICAgICAgICBhdXRvIHBhaW50
aW5nQ29udGV4dCA9IFBhaW50aW5nQ29udGV4dDo6Y3JlYXRlRm9yUGFpbnRpbmcoYnVmZmVyKTsK
ICAgICAgICAgcGFpbnRGdW5jdG9yKHBhaW50aW5nQ29udGV4dC0+Z3JhcGhpY3NDb250ZXh0KCkp
OwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIHZvaWQgcmVj
b3JkKFBhaW50aW5nT3BlcmF0aW9ucyYgcGFpbnRpbmdPcGVyYXRpb25zLCBjb25zdCBUJiByZWNv
cmRGdW5jdG9yKQorICAgIHsKKyAgICAgICAgYXV0byByZWNvcmRpbmdDb250ZXh0ID0gUGFpbnRp
bmdDb250ZXh0OjpjcmVhdGVGb3JSZWNvcmRpbmcocGFpbnRpbmdPcGVyYXRpb25zKTsKKyAgICAg
ICAgcmVjb3JkRnVuY3RvcihyZWNvcmRpbmdDb250ZXh0LT5ncmFwaGljc0NvbnRleHQoKSk7Cisg
ICAgfQorCisgICAgc3RhdGljIHZvaWQgcmVwbGF5KEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBQYWlu
dGluZ09wZXJhdGlvbnMmIHBhaW50aW5nT3BlcmF0aW9ucykKKyAgICB7CisgICAgICAgIGF1dG8g
cGFpbnRpbmdDb250ZXh0ID0gUGFpbnRpbmdDb250ZXh0OjpjcmVhdGVGb3JQYWludGluZyhidWZm
ZXIpOworICAgICAgICBwYWludGluZ0NvbnRleHQtPnJlcGxheShwYWludGluZ09wZXJhdGlvbnMp
OworICAgIH0KKwogICAgIHZpcnR1YWwgflBhaW50aW5nQ29udGV4dCgpID0gZGVmYXVsdDsKIAog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcGxheShjb25zdCBQYWludGluZ09w
ZXJhdGlvbnMmKSA9IDA7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQ
YWludGluZ0NvbnRleHQ+IGNyZWF0ZShCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFBhaW50aW5nQ29udGV4dD4gY3JlYXRlRm9yUGFpbnRpbmcoQnVmZmVyJik7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxQYWludGluZ0NvbnRleHQ+IGNyZWF0ZUZvclJlY29yZGluZyhQ
YWludGluZ09wZXJhdGlvbnMmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBh
aW50aW5nRW5naW5lVGhyZWFkZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjQ2MTdmZjMwYWFkNDQ0ODM2NTU1YTBhYTYwNGZkMDFhN2EyMTc5YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50
aW5nRW5naW5lVGhyZWFkZWQuY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJOaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRlZC5oIgorCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgor
I2luY2x1ZGUgIk5pY29zaWFCdWZmZXIuaCIKKyNpbmNsdWRlICJOaWNvc2lhUGFpbnRpbmdDb250
ZXh0LmgiCisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisK
K25hbWVzcGFjZSBOaWNvc2lhIHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdHJ1Y3Qg
VGFza0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgIFJl
ZjxCdWZmZXI+IGJ1ZmZlcjsKKyAgICBQYWludGluZ09wZXJhdGlvbnMgcGFpbnRpbmdPcGVyYXRp
b25zOworfTsKKwordm9pZCBzX3RocmVhZEZ1bmMoZ3BvaW50ZXIgZGF0YSwgZ3BvaW50ZXIpCit7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPiB0YXNrRGF0YShzdGF0aWNfY2FzdDxUYXNr
RGF0YSo+KGRhdGEpKTsKKworICAgIFBhaW50aW5nQ29udGV4dDo6cmVwbGF5KHRhc2tEYXRhLT5i
dWZmZXIsIHRhc2tEYXRhLT5wYWludGluZ09wZXJhdGlvbnMpOworICAgIHRhc2tEYXRhLT5idWZm
ZXItPmNvbXBsZXRlUGFpbnRpbmcoKTsKK30KKworc3RhdGljIHZvaWQgcGFpbnRMYXllcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXImIGxheWVyLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBtYXBwZWRTb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiB0YXJnZXRSZWN0LCBmbG9hdCBjb250ZW50c1NjYWxlLCBib29sIHN1cHBvcnRzQWxwaGEp
Cit7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5jbGlwKHRhcmdldFJlY3QpOwor
ICAgIGNvbnRleHQudHJhbnNsYXRlKHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSk7CisK
KyAgICBpZiAoc3VwcG9ydHNBbHBoYSkgeworICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIHNvdXJjZVJlY3Quc2l6ZSgpKSwgQ29sb3I6OnRyYW5zcGFyZW50
KTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNl
T3Zlcik7CisgICAgfQorCisgICAgY29udGV4dC50cmFuc2xhdGUoLXNvdXJjZVJlY3QueCgpLCAt
c291cmNlUmVjdC55KCkpOworICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKGNvbnRlbnRzU2Nh
bGUsIGNvbnRlbnRzU2NhbGUpKTsKKworICAgIGxheWVyLnBhaW50R3JhcGhpY3NMYXllckNvbnRl
bnRzKGNvbnRleHQsIG1hcHBlZFNvdXJjZVJlY3QpOworCisgICAgY29udGV4dC5yZXN0b3JlKCk7
Cit9CisKK1BhaW50aW5nRW5naW5lVGhyZWFkZWQ6OlBhaW50aW5nRW5naW5lVGhyZWFkZWQoKQor
eworICAgIC8vIEZJWE1FOiB0aGVzZSBwYXJhbWV0ZXJzIHNob3VsZCBiZSBmaW5lLXR1bmVkLCBv
ciBtYXliZSBtYWRlIGNvbmZpZ3VyYWJsZS4KKyAgICBtX3RocmVhZFBvb2wgPSBnX3RocmVhZF9w
b29sX25ldyhzX3RocmVhZEZ1bmMsIG51bGxwdHIsIDQsIFRSVUUsIG51bGxwdHIpOworfQorCitQ
YWludGluZ0VuZ2luZVRocmVhZGVkOjp+UGFpbnRpbmdFbmdpbmVUaHJlYWRlZCgpCit7CisgICAg
Z190aHJlYWRfcG9vbF9mcmVlKG1fdGhyZWFkUG9vbCwgVFJVRSwgRkFMU0UpOworfQorCitib29s
IFBhaW50aW5nRW5naW5lVGhyZWFkZWQ6OnBhaW50KEdyYXBoaWNzTGF5ZXImIGxheWVyLCBSZWY8
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgbWFwcGVkU291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgZmxvYXQgY29u
dGVudHNTY2FsZSkKK3sKKyAgICBidWZmZXItPmJlZ2luUGFpbnRpbmcoKTsKKworICAgIFBhaW50
aW5nT3BlcmF0aW9ucyBwYWludGluZ09wZXJhdGlvbnM7CisgICAgUGFpbnRpbmdDb250ZXh0Ojpy
ZWNvcmQocGFpbnRpbmdPcGVyYXRpb25zLAorICAgICAgICBbJl0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBwYWludExheWVyKGNvbnRleHQsIGxheWVy
LCBzb3VyY2VSZWN0LCBtYXBwZWRTb3VyY2VSZWN0LCB0YXJnZXRSZWN0LCBjb250ZW50c1NjYWxl
LCBidWZmZXItPnN1cHBvcnRzQWxwaGEoKSk7CisgICAgICAgIH0pOworCisgICAgZ190aHJlYWRf
cG9vbF9wdXNoKG1fdGhyZWFkUG9vbCwgbmV3IFRhc2tEYXRhIHsgV1RGTW92ZShidWZmZXIpLCBX
VEZNb3ZlKHBhaW50aW5nT3BlcmF0aW9ucykgfSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgTmljb3NpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdFbmdpbmVUaHJlYWRl
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFp
bnRpbmdFbmdpbmVUaHJlYWRlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5MWM4Y2MzZTI4NGE1N2VkZWNhOWVj
MTI3MGNjZTQyYmMwZThmNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0VuZ2luZVRocmVhZGVkLmgKQEAg
LTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBNZXRyb2xvZ2ljYWwgR3Jv
dXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk5pY29zaWFQYWlu
dGluZ0VuZ2luZS5oIgorCit0eXBlZGVmIHN0cnVjdCBfR1RocmVhZFBvb2wgR1RocmVhZFBvb2w7
CisKK25hbWVzcGFjZSBOaWNvc2lhIHsKKworY2xhc3MgUGFpbnRpbmdFbmdpbmVUaHJlYWRlZCBm
aW5hbCA6IHB1YmxpYyBQYWludGluZ0VuZ2luZSB7CitwdWJsaWM6CisgICAgUGFpbnRpbmdFbmdp
bmVUaHJlYWRlZCgpOworICAgIHZpcnR1YWwgflBhaW50aW5nRW5naW5lVGhyZWFkZWQoKTsKKwor
cHJpdmF0ZToKKyAgICBib29sIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXImLCBSZWY8QnVm
ZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CisKKyAgICBHVGhyZWFk
UG9vbCogbV90aHJlYWRQb29sOworfTsKKworfSAvLyBuYW1lc3BhY2UgTmljb3NpYQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFp
bnRpbmdPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNmNzc2Njc5ZTE4OWM2
ZmNlNGVmODYyNTdiMDA1ZDExMzc0ZTIyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmgK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2ljYWwg
R3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0
cmVhbTsKK30KKworbmFtZXNwYWNlIE5pY29zaWEgeworCitzdHJ1Y3QgUGFpbnRpbmdPcGVyYXRp
b25SZXBsYXkgeyB9OworCitzdHJ1Y3QgUGFpbnRpbmdPcGVyYXRpb24geworICAgIHZpcnR1YWwg
flBhaW50aW5nT3BlcmF0aW9uKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRl
KFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkdW1wKFdU
Rjo6VGV4dFN0cmVhbSYpID0gMDsKK307CisKK3VzaW5nIFBhaW50aW5nT3BlcmF0aW9ucyA9IFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRpbmdPcGVyYXRpb24+PjsKKworfSAvLyBuYW1lc3Bh
Y2UgTmljb3NpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250
ZXh0Q2Fpcm8uY3BwCmluZGV4IGIwNWY1MzM4MGM4NjYzNWE3NmZjZTIxMmZlNThiZGZjMzhiZjZk
OGMuLjcxNjE1YmI1YmFkMmJiNzIwNDk5NzViNTFjYWI2ZWFmNDEwM2U2MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBh
aW50aW5nQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uaCIKICNpbmNsdWRlICJOaWNvc2lhQnVmZmVyLmgiCisjaW5j
bHVkZSAiTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uUmVwbGF5Q2Fpcm8uaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVk
ZSA8Y2Fpcm8uaD4KQEAgLTQxLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIE5pY29zaWEgewogCi1Q
YWludGluZ0NvbnRleHRDYWlybzo6UGFpbnRpbmdDb250ZXh0Q2Fpcm8oQnVmZmVyJiBidWZmZXIp
CitQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHRoZSBkZXJlZiBpbiB0aGUgc19idWZmZXJL
ZXkgdXNlciBkYXRhIGRlc3Ryb3kgY2FsbGJhY2suCiAgICAgYnVmZmVyLnJlZigpOwpAQCAtNTEs
MTAgKzUyLDEwIEBAIFBhaW50aW5nQ29udGV4dENhaXJvOjpQYWludGluZ0NvbnRleHRDYWlybyhC
dWZmZXImIGJ1ZmZlcikKIAogICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19idWZm
ZXJLZXk7CiAgICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKG1fY2Fpcm8uc3VyZmFjZS5n
ZXQoKSwgJnNfYnVmZmVyS2V5LAotICAgICAgICBuZXcgc3RkOjpwYWlyPEJ1ZmZlciosIFBhaW50
aW5nQ29udGV4dENhaXJvKj4geyAmYnVmZmVyLCB0aGlzIH0sCisgICAgICAgIG5ldyBzdGQ6OnBh
aXI8QnVmZmVyKiwgRm9yUGFpbnRpbmcqPiB7ICZidWZmZXIsIHRoaXMgfSwKICAgICAgICAgW10o
dm9pZCogZGF0YSkKICAgICAgICAgewotICAgICAgICAgICAgYXV0byogdXNlckRhdGEgPSBzdGF0
aWNfY2FzdDxzdGQ6OnBhaXI8QnVmZmVyKiwgUGFpbnRpbmdDb250ZXh0Q2Fpcm8qPio+KGRhdGEp
OworICAgICAgICAgICAgYXV0byogdXNlckRhdGEgPSBzdGF0aWNfY2FzdDxzdGQ6OnBhaXI8QnVm
ZmVyKiwgRm9yUGFpbnRpbmcqPio+KGRhdGEpOwogCiAgICAgICAgICAgICAvLyBEZXJlZiB0aGUg
QnVmZmVyIG9iamVjdC4KICAgICAgICAgICAgIHVzZXJEYXRhLT5maXJzdC0+ZGVyZWYoKTsKQEAg
LTcyLDcgKzczLDcgQEAgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OlBhaW50aW5nQ29udGV4dENhaXJv
KEJ1ZmZlciYgYnVmZmVyKQogICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6Y3JlYXRlRmFjdG9yeSgqbV9wbGF0Zm9ybUNvbnRleHQpKTsKIH0KIAotUGFpbnRpbmdD
b250ZXh0Q2Fpcm86On5QYWludGluZ0NvbnRleHRDYWlybygpCitQYWludGluZ0NvbnRleHRDYWly
bzo6Rm9yUGFpbnRpbmc6On5Gb3JQYWludGluZygpCiB7CiAgICAgY2Fpcm9fc3VyZmFjZV9mbHVz
aChtX2NhaXJvLnN1cmZhY2UuZ2V0KCkpOwogCkBAIC04OCwxMSArODksNDAgQEAgUGFpbnRpbmdD
b250ZXh0Q2Fpcm86On5QYWludGluZ0NvbnRleHRDYWlybygpCiAgICAgQVNTRVJUKG1fZGVsZXRp
b25Db21wbGV0ZSk7CiB9CiAKLVdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgUGFpbnRpbmdDb250
ZXh0Q2Fpcm86OmdyYXBoaWNzQ29udGV4dCgpCitXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIFBh
aW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6Z3JhcGhpY3NDb250ZXh0KCkKIHsKICAg
ICByZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0OwogfQogCit2b2lkIFBhaW50aW5nQ29udGV4dENh
aXJvOjpGb3JQYWludGluZzo6cmVwbGF5KGNvbnN0IFBhaW50aW5nT3BlcmF0aW9ucyYgcGFpbnRp
bmdPcGVyYXRpb25zKQoreworICAgIFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5Q2Fpcm8gb3BlcmF0
aW9uUmVwbGF5IHsgKm1fcGxhdGZvcm1Db250ZXh0IH07CisgICAgZm9yIChhdXRvJiBvcGVyYXRp
b24gOiBwYWludGluZ09wZXJhdGlvbnMpCisgICAgICAgIG9wZXJhdGlvbi0+ZXhlY3V0ZShvcGVy
YXRpb25SZXBsYXkpOworfQorCitQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpG
b3JSZWNvcmRpbmcoUGFpbnRpbmdPcGVyYXRpb25zJiBwYWludGluZ09wZXJhdGlvbnMpCit7Cisg
ICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dD4oCisgICAgICAgIFsmcGFpbnRpbmdPcGVyYXRpb25zXShXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBGSVhNRTogcmV0dXJuIGEgR3Jh
cGhpY3NDb250ZXh0SW1wbCB3aXRoIHJlY29yZGluZyBjYXBhYmlsaXRpZXMuCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfSk7Cit9CisKK1BhaW50aW5nQ29udGV4dENhaXJv
OjpGb3JSZWNvcmRpbmc6On5Gb3JSZWNvcmRpbmcoKSA9IGRlZmF1bHQ7CisKK1dlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclJlY29yZGluZzo6Z3JhcGhp
Y3NDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0OworfQorCit2b2lk
IFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRpbmc6OnJlcGxheShjb25zdCBQYWludGlu
Z09wZXJhdGlvbnMmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBOaWNvc2lhCiAKICNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGlu
Z0NvbnRleHRDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uaAppbmRleCBlZjM4MWUyNzkwOGNl
N2MwNWJjY2Q2ZWFlMmFjM2YyYThjNzFhYjQ4Li4xOGVlNDgyNmEyOTZlZDM1ZGY2NzljYTk2MjM5
NmRhOTkyODE3OWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5n
Q29udGV4dENhaXJvLmgKQEAgLTQ0LDI0ICs0NCw0MCBAQCBjbGFzcyBQbGF0Zm9ybUNvbnRleHRD
YWlybzsKIAogbmFtZXNwYWNlIE5pY29zaWEgewogCi1jbGFzcyBQYWludGluZ0NvbnRleHRDYWly
byBmaW5hbCA6IHB1YmxpYyBQYWludGluZ0NvbnRleHQgeworY2xhc3MgUGFpbnRpbmdDb250ZXh0
Q2Fpcm8gZmluYWwgewogcHVibGljOgotICAgIGV4cGxpY2l0IFBhaW50aW5nQ29udGV4dENhaXJv
KEJ1ZmZlciYpOwotICAgIHZpcnR1YWwgflBhaW50aW5nQ29udGV4dENhaXJvKCk7CisgICAgY2xh
c3MgRm9yUGFpbnRpbmcgZmluYWwgOiBwdWJsaWMgUGFpbnRpbmdDb250ZXh0IHsKKyAgICBwdWJs
aWM6CisgICAgICAgIGV4cGxpY2l0IEZvclBhaW50aW5nKEJ1ZmZlciYpOworICAgICAgICB2aXJ0
dWFsIH5Gb3JQYWludGluZygpOwogCi1wcml2YXRlOgotICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYgZ3JhcGhpY3NDb250ZXh0KCkgb3ZlcnJpZGU7CisgICAgcHJpdmF0ZToKKyAgICAgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQoKSBvdmVycmlkZTsKKyAg
ICAgICAgdm9pZCByZXBsYXkoY29uc3QgUGFpbnRpbmdPcGVyYXRpb25zJikgb3ZlcnJpZGU7CiAK
LSAgICBzdHJ1Y3QgewotICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlOwot
ICAgICAgICBSZWZQdHI8Y2Fpcm9fdD4gY29udGV4dDsKLSAgICB9IG1fY2Fpcm87Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJvPiBtX3BsYXRmb3JtQ29u
dGV4dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBtX2dy
YXBoaWNzQ29udGV4dDsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IHN1cmZhY2U7CisgICAgICAgICAgICBSZWZQdHI8Y2Fpcm9fdD4gY29udGV4
dDsKKyAgICAgICAgfSBtX2NhaXJvOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
UGxhdGZvcm1Db250ZXh0Q2Fpcm8+IG1fcGxhdGZvcm1Db250ZXh0OworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBtX2dyYXBoaWNzQ29udGV4dDsKIAog
I2lmbmRlZiBOREVCVUcKLSAgICBib29sIG1fZGVsZXRpb25Db21wbGV0ZSB7IGZhbHNlIH07Cisg
ICAgICAgIGJvb2wgbV9kZWxldGlvbkNvbXBsZXRlIHsgZmFsc2UgfTsKICNlbmRpZgorICAgIH07
CisKKyAgICBjbGFzcyBGb3JSZWNvcmRpbmcgZmluYWwgOiBwdWJsaWMgUGFpbnRpbmdDb250ZXh0
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEZvclJlY29yZGluZyhQYWludGluZ09wZXJhdGlvbnMm
KTsKKyAgICAgICAgdmlydHVhbCB+Rm9yUmVjb3JkaW5nKCk7CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCgpIG92ZXJyaWRl
OworICAgICAgICB2b2lkIHJlcGxheShjb25zdCBQYWludGluZ09wZXJhdGlvbnMmKSBvdmVycmlk
ZTsKKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBt
X2dyYXBoaWNzQ29udGV4dDsKKyAgICB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgTmljb3NpYQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb25SZXBsYXlDYWlyby5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb25S
ZXBsYXlDYWlyby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkODFlZWI1OTNkZTNlNmYyMDY4M2Y3NDU4ODIxNjYx
YjNmZTVmNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ09wZXJhdGlvblJlcGxheUNhaXJvLmgK
QEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2ljYWwg
R3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk5pY29zaWFQ
YWludGluZ09wZXJhdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQbGF0Zm9y
bUNvbnRleHRDYWlybzsKK30KKworbmFtZXNwYWNlIE5pY29zaWEgeworCitzdHJ1Y3QgUGFpbnRp
bmdPcGVyYXRpb25SZXBsYXlDYWlybyA6IFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5IHsKKyAgICBQ
YWludGluZ09wZXJhdGlvblJlcGxheUNhaXJvKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQpCisgICAgICAgIDogcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29u
dGV4dCkKKyAgICB7IH0KKworICAgIFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQ7Cit9OworCit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>