<?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>174847</bug_id>
          
          <creation_ts>2017-07-25 17:26:29 -0700</creation_ts>
          <short_desc>[WebIDL] Remove custom bindings for HTMLCanvasElement</short_desc>
          <delta_ts>2017-07-25 21:31:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1332186</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-07-25 17:26:29 -0700</bug_when>
    <thetext>[WebIDL] Remove custom bindings for HTMLCanvasElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332187</commentid>
    <comment_count>1</comment_count>
      <attachid>316412</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-07-25 17:28:12 -0700</bug_when>
    <thetext>Created attachment 316412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332200</commentid>
    <comment_count>2</comment_count>
      <attachid>316412</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-25 18:09:42 -0700</bug_when>
    <thetext>Comment on attachment 316412
Patch

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

Apparently we don’t have enough included for WPE to build successfully.

&gt; Source/WebCore/html/HTMLCanvasElement.cpp:70
&gt; +#if ENABLE(WEBGL2)
&gt; +#include &quot;WebGL2RenderingContext.h&quot;
&gt; +#endif

Can. we put this in a second paragraph rather than nesting it inside #if ENABLE(WEBGL). The separate paragraph can have #if ENABLE(WEBGL) &amp;&amp; ENABLE(WEBGL2) or just #if ENABLE(WEBGL2), but would be nicer without the nesting.

&gt; Source/WebCore/html/HTMLCanvasElement.cpp:237
&gt; +        auto scope = DECLARE_THROW_SCOPE(state.vm());
&gt; +        auto attributes = convert&lt;IDLDictionary&lt;WebGLContextAttributes&gt;&gt;(state, !arguments.isEmpty() ? arguments[0].get() : JSC::jsUndefined());
&gt; +        RETURN_IF_EXCEPTION(scope, Exception { ExistingExceptionError });

This is so sad. It’s like we had to move the bindings into the DOM, rather than automatically generating them. I don’t want to overreact though, since there are a lot of benefits to the simplification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332201</commentid>
    <comment_count>3</comment_count>
      <attachid>316413</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-07-25 18:10:40 -0700</bug_when>
    <thetext>Created attachment 316413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332204</commentid>
    <comment_count>4</comment_count>
      <attachid>316413</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-25 18:12:20 -0700</bug_when>
    <thetext>Comment on attachment 316413
Patch

My comments are on the last version of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332248</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-07-25 21:30:40 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 316412 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=316412&amp;action=review
&gt; 
&gt; Apparently we don’t have enough included for WPE to build successfully.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLCanvasElement.cpp:70
&gt; &gt; +#if ENABLE(WEBGL2)
&gt; &gt; +#include &quot;WebGL2RenderingContext.h&quot;
&gt; &gt; +#endif
&gt; 
&gt; Can. we put this in a second paragraph rather than nesting it inside #if
&gt; ENABLE(WEBGL). The separate paragraph can have #if ENABLE(WEBGL) &amp;&amp;
&gt; ENABLE(WEBGL2) or just #if ENABLE(WEBGL2), but would be nicer without the
&gt; nesting.

Done.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLCanvasElement.cpp:237
&gt; &gt; +        auto scope = DECLARE_THROW_SCOPE(state.vm());
&gt; &gt; +        auto attributes = convert&lt;IDLDictionary&lt;WebGLContextAttributes&gt;&gt;(state, !arguments.isEmpty() ? arguments[0].get() : JSC::jsUndefined());
&gt; &gt; +        RETURN_IF_EXCEPTION(scope, Exception { ExistingExceptionError });
&gt; 
&gt; This is so sad. It’s like we had to move the bindings into the DOM, rather
&gt; than automatically generating them. I don’t want to overreact though, since
&gt; there are a lot of benefits to the simplification.

Yeah, this is a rare case where WebIDL is not expressive enough and the spec has specific language on what to do. I&apos;ve opted to move this one into the implementation, since it&apos;s so small, but it is conversation that needs to be had as we move toward the final pieces. I will probably come back to this one as we implement more of getContext() (We only implement a bit of it; there are other types of contexts and other attribute dictionaries) and see if there is a generalization we can do that makes sense.

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332249</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-07-25 21:31:43 -0700</bug_when>
    <thetext>Committed r219902: &lt;http://trac.webkit.org/changeset/219902&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316412</attachid>
            <date>2017-07-25 17:28:12 -0700</date>
            <delta_ts>2017-07-25 18:10:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174847-20170725172811.patch</filename>
            <type>text/plain</type>
            <size>17620</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTg5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE3LTA3LTI1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3ZlIGN1c3RvbSBi
aW5kaW5ncyBmb3IgSFRNTENhbnZhc0VsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDg0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxl
bWVudEN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgIFJlbW92ZSBKU0hUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dDJkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0V2ViR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRXZWJHUFUpOgorICAgICAgICAqIGh0bWwv
SFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50Lmlk
bDoKKyAgICAgICAgTW92ZSBjb250ZXh0IHBpY2tpbmcgY29kZSB0byBIVE1MQ2FudmFzRWxlbWVu
dC4gR2l2ZSBtb3JlCisgICAgICAgIGV4YWN0IHR5cGVzIHRvIHJlbWFpbmluZyBjb250ZXh0IGdl
dHRlcnMuCisKIDIwMTctMDctMjUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIE1ha2UgU3R5bGVSZXNvbHZlcjo6aXNWYWxpZHtDdWUsIFJlZ2lvbn1TdHlsZVBy
b3BlcnR5KCkgc3RhdGljLCBpbmxpbmUsIG5vbi1tZW1iZXIgZnVuY3Rpb25zCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjE5ODc0KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExODUsNyArMTE4NSw2IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50
Q3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjE5ODc0KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNzY0LDcg
KzM3NjQsNiBAQAogCQk5MzkxQTk5QzE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM5MUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmNwcCAqLzsgfTsKIAkJOTM5MUE5OUQxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzkxQTk5QjE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5MzkyMTQ2OTE4QTZENzkxMDAwRUU2ODggLyogVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTIxNDY4MThBNkQ3
OTEwMDBFRTY4OCAvKiBUZXh0SXRlcmF0b3JCZWhhdmlvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzOTIyNjJEMTAzMjEwN0IwMDZFN0Q1RCAv
KiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTIyNjJDMTAzMjEwN0IwMDZFN0Q1RCAvKiBKU0hUTUxD
YW52YXNFbGVtZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJOTM5MjI2MkYxMDMyMTA4NDAwNkU3RDVE
IC8qIEpTQ1NTUnVsZUxpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM5MjI2MkUxMDMyMTA4NDAwNkU3RDVEIC8qIEpTQ1NTUnVsZUxp
c3RDdXN0b20uY3BwICovOyB9OwogCQk5MzkyRjE0MjBBRDE4NUY0MDA2OTFCRDQgLyogUmVuZGVy
Q291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM5MkYxNDEwQUQxODVGNDAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIuaCAqLzsgfTsKIAkJOTM5
MkYxNDQwQUQxODVGRTAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MkYxNDMwQUQxODVGRTAwNjkxQkQ0
IC8qIFJlbmRlckNvdW50ZXIuY3BwICovOyB9OwpAQCAtMTE5MDQsNyArMTE5MDMsNiBAQAogCQk5
MzkxQTk5QTE2MjlENkZGMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkxQTk5QjE2MjlE
NzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MjE0NjgxOEE2RDc5MTAwMEVFNjg4IC8qIFRleHRJ
dGVyYXRvckJlaGF2aW9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJ
dGVyYXRvckJlaGF2aW9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzOTIyNjJD
MTAzMjEwN0IwMDZFN0Q1RCAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkyMjYyRTEwMzIxMDg0MDA2RTdE
NUQgLyogSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM5MkYxNDEwQUQxODVGNDAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckNvdW50ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MkYxNDMwQUQxODVGRTAwNjkxQkQ0IC8qIFJlbmRlckNv
dW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckNv
dW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM1MTAsNyArMjM1MDgs
NiBAQAogCQkJCUJDRDlDMjVFMEMxN0FBNjcwMDVDOTBBMiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5j
cHAgKi8sCiAJCQkJNjUyRkJCQkIwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9t
LmggKi8sCiAJCQkJQkNFN0IxOTIwRDRFODY5NjAwNzVBNTM5IC8qIEpTSGlzdG9yeUN1c3RvbS5j
cHAgKi8sCi0JCQkJOTM5MjI2MkMxMDMyMTA3QjAwNkU3RDVEIC8qIEpTSFRNTENhbnZhc0VsZW1l
bnRDdXN0b20uY3BwICovLAogCQkJCUJDNTgyM0Y0MEMwQTk4REYwMDUzRjFCNSAvKiBKU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlENkY3OTYwQzE2NkZGRUNFMDA3NkREMTggLyogSlNI
VE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0UxQzQzRjBEOTgzMEY0MDAz
QjAyRjIgLyogSlNMb2NhdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0zMTgzNCw3ICszMTgzMSw2IEBA
CiAJCQkJMUFFMkFBMjQwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEJSRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBODBFN0VBMDBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MQnV0dG9u
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzhFNjY2MDA5RjA5QjgxMDA4QTQ4RUMg
LyogSlNIVE1MQ2FudmFzRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5MzkyMjYyRDEw
MzIxMDdCMDA2RTdENUQgLyogSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0NCQUQ0MDBDMThDMTQyMDBDRTg5MEYgLyogSlNIVE1MQ29sbGVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0NCQUQzQjBDMThCRkY4MDBDRTg5MEYgLyogSlNIVE1M
Q29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzY3NTg3RTFDNTZFOTlC
MDA4QTEwODcgLyogSlNIVE1MRGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJ
KHJldmlzaW9uIDIxOTg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDYgQEAKICNpbmNsdWRl
ICJKU0V2ZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuY3BwIgogI2lu
Y2x1ZGUgIkpTRXZlbnRUYXJnZXRDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTSFRNTENhbnZhc0Vs
ZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwIgog
I2luY2x1ZGUgIkpTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxFbGVt
ZW50Q3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMTk4NzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNw
cAkobm9uZXhpc3RlbnQpCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMTYsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTSFRNTENhbnZhc0VsZW1lbnQuaCIKLQotI2lu
Y2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnREaWN0aW9uYXJ5LmgiCi0jaW5jbHVk
ZSAiSlNET01Db252ZXJ0TnVsbGFibGUuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdz
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR0wpCi0jaW5jbHVkZSAiSlNXZWJHTENvbnRleHRBdHRyaWJ1
dGVzLmgiCi0jaW5jbHVkZSAiSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKLSNpZiBFTkFCTEUo
V0VCR0wyKQotI2luY2x1ZGUgIkpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgotI2VuZGlmCi0j
ZW5kaWYKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0jaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmgiCi0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1KU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0
YXRlJiBzdGF0ZSkKLXsKLSAgICBhdXRvJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgaWYgKFVOTElLRUxZKHN0YXRlLmFy
Z3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBh
dXRvIGNvbnRleHRJZCA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUo
KSk7Ci0KLSAgICBpZiAoSFRNTENhbnZhc0VsZW1lbnQ6OmlzMmRUeXBlKGNvbnRleHRJZCkpCi0g
ICAgICAgIHJldHVybiB0b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ+Pj4oc3RhdGUsICpnbG9iYWxPYmplY3QoKSwgc3RhdGljX2Nhc3Q8Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEKj4od3JhcHBlZCgpLmdldENvbnRleHQyZChjb250ZXh0SWQpKSk7
Ci0KLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgaWYgKEhUTUxDYW52YXNFbGVtZW50OjppczNkVHlw
ZShjb250ZXh0SWQpKSB7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IGNvbnZlcnQ8SURMRGlj
dGlvbmFyeTxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPj4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDEp
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAg
ICAgICBpZiAoYXV0byBjb250ZXh0ID0gd3JhcHBlZCgpLmdldENvbnRleHRXZWJHTChjb250ZXh0
SWQsIFdURk1vdmUoYXR0cmlidXRlcykpKSB7Ci0gICAgICAgICAgICBpZiAoaXM8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0PigqY29udGV4dCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRvSlM8SURM
TnVsbGFibGU8SURMSW50ZXJmYWNlPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4+PihzdGF0ZSwgKmds
b2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihjb250ZXh0
KSk7Ci0jaWYgRU5BQkxFKFdFQkdMMikKLSAgICAgICAgICAgIGlmIChpczxXZWJHTDJSZW5kZXJp
bmdDb250ZXh0PigqY29udGV4dCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRvSlM8SURMTnVs
bGFibGU8SURMSW50ZXJmYWNlPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+Pj4oc3RhdGUsICpnbG9i
YWxPYmplY3QoKSwgc3RhdGljX2Nhc3Q8V2ViR0wyUmVuZGVyaW5nQ29udGV4dCo+KGNvbnRleHQp
KTsKLSNlbmRpZgotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotICAgIGlmIChIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKGNvbnRleHRJZCkpCi0g
ICAgICAgIHJldHVybiB0b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxXZWJHUFVSZW5kZXJp
bmdDb250ZXh0Pj4+KHN0YXRlLCAqZ2xvYmFsT2JqZWN0KCksIHN0YXRpY19jYXN0PFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQqPih3cmFwcGVkKCkuZ2V0Q29udGV4dFdlYkdQVShjb250ZXh0SWQpKSk7
Ci0jZW5kaWYKLQotICAgIHJldHVybiBqc051bGwoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0
eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNp
b24gMjE5ODc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDEwIEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIgotI2luY2x1ZGUgIldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKKyNp
ZiBFTkFCTEUoV0VCR0wyKQorI2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIKKyNl
bmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCR1BVKQpAQCAtMjE5LDYgKzIyMiw0NCBAQCBz
dGF0aWMgaW5saW5lIHNpemVfdCBtYXhBY3RpdmVQaXhlbE1lbW9yCiAgICAgcmV0dXJuIG1heFBp
eGVsTWVtb3J5OwogfQogCitFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRl
eHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IGNvbnN0IFN0cmluZyYgY29udGV4dElkLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3du
Pj4mJiBhcmd1bWVudHMpCit7CisgICAgaWYgKGlzMmRUeXBlKGNvbnRleHRJZCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8gY29udGV4dCA9IGdldENvbnRleHQyZChjb250ZXh0SWQpKQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEPiB7IGNvbnRleHQgfSB9OworICAgICAgICByZXR1cm4gc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OworICAgIH0KKworI2lm
IEVOQUJMRShXRUJHTCkKKyAgICBpZiAoaXMzZFR5cGUoY29udGV4dElkKSkgeworICAgICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgpKTsKKyAgICAgICAgYXV0
byBhdHRyaWJ1dGVzID0gY29udmVydDxJRExEaWN0aW9uYXJ5PFdlYkdMQ29udGV4dEF0dHJpYnV0
ZXM+PihzdGF0ZSwgIWFyZ3VtZW50cy5pc0VtcHR5KCkgPyBhcmd1bWVudHNbMF0uZ2V0KCkgOiBK
U0M6OmpzVW5kZWZpbmVkKCkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBF
eGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworCisgICAgICAgIGlmIChhdXRv
IGNvbnRleHQgPSBnZXRDb250ZXh0V2ViR0woY29udGV4dElkLCBXVEZNb3ZlKGF0dHJpYnV0ZXMp
KSkgeworICAgICAgICAgICAgaWYgKGlzPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oKmNvbnRleHQp
KQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+
IHsgUmVmUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4geyAmZG93bmNhc3Q8V2ViR0xSZW5kZXJp
bmdDb250ZXh0PigqY29udGV4dCkgfSB9OworI2lmIEVOQUJMRShXRUJHTDIpCisgICAgICAgICAg
ICBpZiAoaXM8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oKmNvbnRleHQpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ+IHsgJmRvd25jYXN0PFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+KCpj
b250ZXh0KSB9IH07CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICB9
CisjZW5kaWYKKworI2lmIEVOQUJMRShXRUJHUFUpCisgICAgaWYgKGlzV2ViR1BVVHlwZShjb250
ZXh0SWQpKSB7CisgICAgICAgIGlmIChhdXRvIGNvbnRleHQgPSBnZXRDb250ZXh0V2ViR1BVKGNv
bnRleHRJZCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250
ZXh0PiB7IFJlZlB0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PiB7IGNvbnRleHQgfSB9OworICAg
ICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9w
dCB9OworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
Q29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKK30KKwogQ2FudmFzUmVuZGVyaW5nQ29udGV4dCog
SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAg
IGlmIChIVE1MQ2FudmFzRWxlbWVudDo6aXMyZFR5cGUodHlwZSkpCkBAIC0yNDIsMTIgKzI4Mywx
MyBAQCBib29sIEhUTUxDYW52YXNFbGVtZW50OjppczJkVHlwZShjb25zdCBTCiAgICAgcmV0dXJu
IHR5cGUgPT0gIjJkIjsKIH0KIAotQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0Vs
ZW1lbnQ6OmdldENvbnRleHQyZChjb25zdCBTdHJpbmcmIHR5cGUpCitDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0MmQoY29uc3QgU3RyaW5nJiB0
eXBlKQogewogICAgIEFTU0VSVF9VTlVTRUQoSFRNTENhbnZhc0VsZW1lbnQ6OmlzMmRUeXBlKHR5
cGUpLCB0eXBlKTsKIAogICAgIGlmIChtX2NvbnRleHQgJiYgIW1fY29udGV4dC0+aXMyZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIGlmICghbV9jb250ZXh0KSB7CiAgICAgICAg
IGJvb2wgdXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlID0gZmFsc2U7CiAjaWYgRU5BQkxF
KERBU0hCT0FSRF9TVVBQT1JUKQpAQCAtMjc4LDcgKzMyMCw3IEBAIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQqIEhUTUxDYW52YXNFbGVtZW4KICNlbmRpZgogICAgIH0KIAotICAgIHJldHVybiBtX2Nv
bnRleHQuZ2V0KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRCo+KG1fY29udGV4dC5nZXQoKSk7CiB9CiAKICNpZiBFTkFCTEUoV0VCR0wpCkBAIC0zMTIs
NyArMzU0LDcgQEAgYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6aXMzZFR5cGUoY29uc3QgUwogICAg
ICAgICB8fCB0eXBlID09ICJ3ZWJraXQtM2QiOwogfQogCi1DYW52YXNSZW5kZXJpbmdDb250ZXh0
KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdMKGNvbnN0IFN0cmluZyYgdHlwZSwg
V2ViR0xDb250ZXh0QXR0cmlidXRlcyYmIGF0dHJzKQorV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRXZWJHTChjb25zdCBTdHJpbmcmIHR5cGUs
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMmJiBhdHRycykKIHsKICAgICBBU1NFUlQoSFRNTENhbnZh
c0VsZW1lbnQ6OmlzM2RUeXBlKHR5cGUpKTsKIApAQCAtMzMyLDcgKzM3NCw3IEBAIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW4KICAgICAgICAgfQogICAgIH0KIAotICAg
IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqPihtX2NvbnRleHQuZ2V0KCkpOwogfQogI2VuZGlmCiAKQEAgLTM0
Miw3ICszODQsNyBAQCBib29sIEhUTUxDYW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUoY29uCiAg
ICAgcmV0dXJuIHR5cGUgPT0gIndlYmdwdSI7CiB9CiAKLUNhbnZhc1JlbmRlcmluZ0NvbnRleHQq
IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0V2ViR1BVKGNvbnN0IFN0cmluZyYgdHlwZSkK
K1dlYkdQVVJlbmRlcmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0V2Vi
R1BVKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIEhUTUxD
YW52YXNFbGVtZW50Ojppc1dlYkdQVVR5cGUodHlwZSkpOwogCkBAIC0zNjIsNyArNDA0LDcgQEAg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbgogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2ViR1BVUmVuZGVyaW5nQ29udGV4dCo+KG1fY29udGV4dC5nZXQoKSk7CiB9CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAkocmV2aXNpb24gMjE5
ODc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJs
b2JDYWxsYmFjazsKK2NsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDsKIGNsYXNzIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyOwpAQCAtNTAsNiArNTEsOCBAQCBjbGFzcyBJbWFnZUJ1ZmZlcjsK
IGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIE1lZGlhU2FtcGxlOwogY2xhc3MgTWVkaWFTdHJlYW07
CitjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOworY2xhc3MgV2ViR1BVUmVuZGVyaW5n
Q29udGV4dDsKIHN0cnVjdCBVbmNhY2hlZFN0cmluZzsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0
IHsKQEAgLTk2LDE4ICs5OSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJlc2V0KCk7CiAgICAgfQog
CisgICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0Pj4gZ2V0Q29u
dGV4dChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYgY29udGV4dElkLCBWZWN0b3I8SlND
OjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOworCiAgICAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCogZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmKTsKIAogICAgIHN0YXRpYyBib29s
IGlzMmRUeXBlKGNvbnN0IFN0cmluZyYpOwotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGdl
dENvbnRleHQyZChjb25zdCBTdHJpbmcmKTsKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQq
IGdldENvbnRleHQyZChjb25zdCBTdHJpbmcmKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICBz
dGF0aWMgYm9vbCBpczNkVHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBDYW52YXNSZW5kZXJpbmdD
b250ZXh0KiBnZXRDb250ZXh0V2ViR0woY29uc3QgU3RyaW5nJiwgV2ViR0xDb250ZXh0QXR0cmli
dXRlcyYmID0geyB9KTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBnZXRDb250ZXh0
V2ViR0woY29uc3QgU3RyaW5nJiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyYmID0geyB9KTsKICNl
bmRpZgogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAgc3RhdGljIGJvb2wgaXNXZWJHUFVUeXBlKGNv
bnN0IFN0cmluZyYpOwotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGdldENvbnRleHRXZWJH
UFUoY29uc3QgU3RyaW5nJik7CisgICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogZ2V0Q29udGV4
dFdlYkdQVShjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhj
ZXB0aW9uT3I8VW5jYWNoZWRTdHJpbmc+IHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBKU0M6OkpTVmFsdWUgcXVhbGl0eSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmlkbAkocmV2aXNpb24gMjE5ODc0KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDE3IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi10eXBlZGVmIChDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQgb3IgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSkgUmVuZGVyaW5nQ29udGV4dDsKKyB0eXBl
ZGVmICgKKyAjaWYgZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTAorICAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQgb3IKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChFTkFCTEVfV0VC
R0wyKSAmJiBFTkFCTEVfV0VCR0wyCisgICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQgb3IKKyAj
ZW5kaWYKKyAjaWYgZGVmaW5lZChFTkFCTEVfV0VCR1BVKSAmJiBFTkFCTEVfV0VCR1BVCisgICAg
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQgb3IKKyAjZW5kaWYKKyAgICAgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEKSBSZW5kZXJpbmdDb250ZXh0OwogCiBbCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZl
T2JqZWN0LApAQCAtMzQsNyArNDQsNyBAQCB0eXBlZGVmIChDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQgb3IgV2ViCiAgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7CiAgICAgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OwogCi0gICAgW0N1c3RvbV0gUmVuZGVyaW5nQ29udGV4
dD8gZ2V0Q29udGV4dChET01TdHJpbmcgY29udGV4dElkLCBhbnkuLi4gYXJndW1lbnRzKTsKKyAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBSZW5kZXJpbmdDb250
ZXh0PyBnZXRDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQsIGFueS4uLiBhcmd1bWVudHMpOwog
CiAgICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgdG9EYXRhVVJMKG9wdGlvbmFsIERP
TVN0cmluZyB0eXBlLCBvcHRpb25hbCBhbnkgcXVhbGl0eSk7CiAgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHRvQmxvYihCbG9iQ2Fs
bGJhY2sgY2FsbGJhY2ssIG9wdGlvbmFsIERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBhbnkgcXVh
bGl0eSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316413</attachid>
            <date>2017-07-25 18:10:40 -0700</date>
            <delta_ts>2017-07-25 18:12:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174847-20170725181039.patch</filename>
            <type>text/plain</type>
            <size>17859</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTg5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE3LTA3LTI1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3ZlIGN1c3RvbSBi
aW5kaW5ncyBmb3IgSFRNTENhbnZhc0VsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDg0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxl
bWVudEN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgIFJlbW92ZSBKU0hUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dDJkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0V2ViR0wpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRXZWJHUFUpOgorICAgICAgICAqIGh0bWwv
SFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50Lmlk
bDoKKyAgICAgICAgTW92ZSBjb250ZXh0IHBpY2tpbmcgY29kZSB0byBIVE1MQ2FudmFzRWxlbWVu
dC4gR2l2ZSBtb3JlCisgICAgICAgIGV4YWN0IHR5cGVzIHRvIHJlbWFpbmluZyBjb250ZXh0IGdl
dHRlcnMuCisKIDIwMTctMDctMjUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIE1ha2UgU3R5bGVSZXNvbHZlcjo6aXNWYWxpZHtDdWUsIFJlZ2lvbn1TdHlsZVBy
b3BlcnR5KCkgc3RhdGljLCBpbmxpbmUsIG5vbi1tZW1iZXIgZnVuY3Rpb25zCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjE5ODc0KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExODUsNyArMTE4NSw2IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50
Q3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjE5ODc0KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNzY0LDcg
KzM3NjQsNiBAQAogCQk5MzkxQTk5QzE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM5MUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmNwcCAqLzsgfTsKIAkJOTM5MUE5OUQxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzkxQTk5QjE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5MzkyMTQ2OTE4QTZENzkxMDAwRUU2ODggLyogVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTIxNDY4MThBNkQ3
OTEwMDBFRTY4OCAvKiBUZXh0SXRlcmF0b3JCZWhhdmlvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzOTIyNjJEMTAzMjEwN0IwMDZFN0Q1RCAv
KiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTIyNjJDMTAzMjEwN0IwMDZFN0Q1RCAvKiBKU0hUTUxD
YW52YXNFbGVtZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJOTM5MjI2MkYxMDMyMTA4NDAwNkU3RDVE
IC8qIEpTQ1NTUnVsZUxpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM5MjI2MkUxMDMyMTA4NDAwNkU3RDVEIC8qIEpTQ1NTUnVsZUxp
c3RDdXN0b20uY3BwICovOyB9OwogCQk5MzkyRjE0MjBBRDE4NUY0MDA2OTFCRDQgLyogUmVuZGVy
Q291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM5MkYxNDEwQUQxODVGNDAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIuaCAqLzsgfTsKIAkJOTM5
MkYxNDQwQUQxODVGRTAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MkYxNDMwQUQxODVGRTAwNjkxQkQ0
IC8qIFJlbmRlckNvdW50ZXIuY3BwICovOyB9OwpAQCAtMTE5MDQsNyArMTE5MDMsNiBAQAogCQk5
MzkxQTk5QTE2MjlENkZGMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkxQTk5QjE2MjlE
NzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MjE0NjgxOEE2RDc5MTAwMEVFNjg4IC8qIFRleHRJ
dGVyYXRvckJlaGF2aW9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJ
dGVyYXRvckJlaGF2aW9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzOTIyNjJD
MTAzMjEwN0IwMDZFN0Q1RCAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkyMjYyRTEwMzIxMDg0MDA2RTdE
NUQgLyogSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM5MkYxNDEwQUQxODVGNDAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckNvdW50ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MkYxNDMwQUQxODVGRTAwNjkxQkQ0IC8qIFJlbmRlckNv
dW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckNv
dW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM1MTAsNyArMjM1MDgs
NiBAQAogCQkJCUJDRDlDMjVFMEMxN0FBNjcwMDVDOTBBMiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5j
cHAgKi8sCiAJCQkJNjUyRkJCQkIwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9t
LmggKi8sCiAJCQkJQkNFN0IxOTIwRDRFODY5NjAwNzVBNTM5IC8qIEpTSGlzdG9yeUN1c3RvbS5j
cHAgKi8sCi0JCQkJOTM5MjI2MkMxMDMyMTA3QjAwNkU3RDVEIC8qIEpTSFRNTENhbnZhc0VsZW1l
bnRDdXN0b20uY3BwICovLAogCQkJCUJDNTgyM0Y0MEMwQTk4REYwMDUzRjFCNSAvKiBKU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlENkY3OTYwQzE2NkZGRUNFMDA3NkREMTggLyogSlNI
VE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0UxQzQzRjBEOTgzMEY0MDAz
QjAyRjIgLyogSlNMb2NhdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0zMTgzNCw3ICszMTgzMSw2IEBA
CiAJCQkJMUFFMkFBMjQwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEJSRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBODBFN0VBMDBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MQnV0dG9u
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzhFNjY2MDA5RjA5QjgxMDA4QTQ4RUMg
LyogSlNIVE1MQ2FudmFzRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5MzkyMjYyRDEw
MzIxMDdCMDA2RTdENUQgLyogSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0NCQUQ0MDBDMThDMTQyMDBDRTg5MEYgLyogSlNIVE1MQ29sbGVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0NCQUQzQjBDMThCRkY4MDBDRTg5MEYgLyogSlNIVE1M
Q29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzY3NTg3RTFDNTZFOTlC
MDA4QTEwODcgLyogSlNIVE1MRGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJ
KHJldmlzaW9uIDIxOTg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDYgQEAKICNpbmNsdWRl
ICJKU0V2ZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuY3BwIgogI2lu
Y2x1ZGUgIkpTRXZlbnRUYXJnZXRDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTSFRNTENhbnZhc0Vs
ZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwIgog
I2luY2x1ZGUgIkpTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxFbGVt
ZW50Q3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMTk4NzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNw
cAkobm9uZXhpc3RlbnQpCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMTYsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTSFRNTENhbnZhc0VsZW1lbnQuaCIKLQotI2lu
Y2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnREaWN0aW9uYXJ5LmgiCi0jaW5jbHVk
ZSAiSlNET01Db252ZXJ0TnVsbGFibGUuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdz
LmgiCi0KLSNpZiBFTkFCTEUoV0VCR0wpCi0jaW5jbHVkZSAiSlNXZWJHTENvbnRleHRBdHRyaWJ1
dGVzLmgiCi0jaW5jbHVkZSAiSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKLSNpZiBFTkFCTEUo
V0VCR0wyKQotI2luY2x1ZGUgIkpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgotI2VuZGlmCi0j
ZW5kaWYKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0jaW5jbHVkZSAiSlNXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmgiCi0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1KU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0
YXRlJiBzdGF0ZSkKLXsKLSAgICBhdXRvJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgaWYgKFVOTElLRUxZKHN0YXRlLmFy
Z3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBh
dXRvIGNvbnRleHRJZCA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUo
KSk7Ci0KLSAgICBpZiAoSFRNTENhbnZhc0VsZW1lbnQ6OmlzMmRUeXBlKGNvbnRleHRJZCkpCi0g
ICAgICAgIHJldHVybiB0b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ+Pj4oc3RhdGUsICpnbG9iYWxPYmplY3QoKSwgc3RhdGljX2Nhc3Q8Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEKj4od3JhcHBlZCgpLmdldENvbnRleHQyZChjb250ZXh0SWQpKSk7
Ci0KLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgaWYgKEhUTUxDYW52YXNFbGVtZW50OjppczNkVHlw
ZShjb250ZXh0SWQpKSB7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IGNvbnZlcnQ8SURMRGlj
dGlvbmFyeTxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPj4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDEp
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAg
ICAgICBpZiAoYXV0byBjb250ZXh0ID0gd3JhcHBlZCgpLmdldENvbnRleHRXZWJHTChjb250ZXh0
SWQsIFdURk1vdmUoYXR0cmlidXRlcykpKSB7Ci0gICAgICAgICAgICBpZiAoaXM8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0PigqY29udGV4dCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRvSlM8SURM
TnVsbGFibGU8SURMSW50ZXJmYWNlPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4+PihzdGF0ZSwgKmds
b2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihjb250ZXh0
KSk7Ci0jaWYgRU5BQkxFKFdFQkdMMikKLSAgICAgICAgICAgIGlmIChpczxXZWJHTDJSZW5kZXJp
bmdDb250ZXh0PigqY29udGV4dCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRvSlM8SURMTnVs
bGFibGU8SURMSW50ZXJmYWNlPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+Pj4oc3RhdGUsICpnbG9i
YWxPYmplY3QoKSwgc3RhdGljX2Nhc3Q8V2ViR0wyUmVuZGVyaW5nQ29udGV4dCo+KGNvbnRleHQp
KTsKLSNlbmRpZgotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCR1BV
KQotICAgIGlmIChIVE1MQ2FudmFzRWxlbWVudDo6aXNXZWJHUFVUeXBlKGNvbnRleHRJZCkpCi0g
ICAgICAgIHJldHVybiB0b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxXZWJHUFVSZW5kZXJp
bmdDb250ZXh0Pj4+KHN0YXRlLCAqZ2xvYmFsT2JqZWN0KCksIHN0YXRpY19jYXN0PFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQqPih3cmFwcGVkKCkuZ2V0Q29udGV4dFdlYkdQVShjb250ZXh0SWQpKSk7
Ci0jZW5kaWYKLQotICAgIHJldHVybiBqc051bGwoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0
eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNp
b24gMjE5ODc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRp
b21zLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0RGljdGlvbmFyeS5oIgogI2luY2x1
ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiUmVuZGVySFRNTENhbnZhcy5oIgpAQCAtNjQsNyArNjUsMTAgQEAKIAogI2lmIEVOQUJM
RShXRUJHTCkKICNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgiCi0jaW5jbHVkZSAi
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29u
dGV4dC5oIgorI2lmIEVOQUJMRShXRUJHTDIpCisjaW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5oIgorI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHUFUpCkBAIC0yMTksNiAr
MjIzLDQ0IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IG1heEFjdGl2ZVBpeGVsTWVtb3IKICAgICBy
ZXR1cm4gbWF4UGl4ZWxNZW1vcnk7CiB9CiAKK0V4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8UmVu
ZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQsIFZlY3RvcjxKU0M6OlN0cm9uZzxK
U0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKK3sKKyAgICBpZiAoaXMyZFR5cGUoY29udGV4dElk
KSkgeworICAgICAgICBpZiAoYXV0byBjb250ZXh0ID0gZ2V0Q29udGV4dDJkKGNvbnRleHRJZCkp
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJl
ZlB0cjxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+IHsgY29udGV4dCB9IH07CisgICAgICAgIHJl
dHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07Cisg
ICAgfQorCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmIChpczNkVHlwZShjb250ZXh0SWQpKSB7
CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLnZtKCkpOwor
ICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb252ZXJ0PElETERpY3Rpb25hcnk8V2ViR0xDb250
ZXh0QXR0cmlidXRlcz4+KHN0YXRlLCAhYXJndW1lbnRzLmlzRW1wdHkoKSA/IGFyZ3VtZW50c1sw
XS5nZXQoKSA6IEpTQzo6anNVbmRlZmluZWQoKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisKKyAgICAg
ICAgaWYgKGF1dG8gY29udGV4dCA9IGdldENvbnRleHRXZWJHTChjb250ZXh0SWQsIFdURk1vdmUo
YXR0cmlidXRlcykpKSB7CisgICAgICAgICAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0
PigqY29udGV4dCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nQ29udGV4dD4geyBSZWZQdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSB9IH07CisjaWYgRU5BQkxFKFdFQkdMMikK
KyAgICAgICAgICAgIGlmIChpczxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PigqY29udGV4dCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBS
ZWZQdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4geyAmZG93bmNhc3Q8V2ViR0wyUmVuZGVyaW5n
Q29udGV4dD4oKmNvbnRleHQpIH0gfTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9w
dCB9OworICAgIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKyAgICBpZiAoaXNXZWJH
UFVUeXBlKGNvbnRleHRJZCkpIHsKKyAgICAgICAgaWYgKGF1dG8gY29udGV4dCA9IGdldENvbnRl
eHRXZWJHUFUoY29udGV4dElkKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+IHsgY29udGV4
dCB9IH07CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsg
c3RkOjpudWxsb3B0IH07CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OworfQorCiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25zdCBTdHJpbmcmIHR5
cGUpCiB7CiAgICAgaWYgKEhUTUxDYW52YXNFbGVtZW50OjppczJkVHlwZSh0eXBlKSkKQEAgLTI0
MiwxMiArMjg0LDEzIEBAIGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OmlzMmRUeXBlKGNvbnN0IFMK
ICAgICByZXR1cm4gdHlwZSA9PSAiMmQiOwogfQogCi1DYW52YXNSZW5kZXJpbmdDb250ZXh0KiBI
VE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dDJkKGNvbnN0IFN0cmluZyYgdHlwZSkKK0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQyZChjb25z
dCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChIVE1MQ2FudmFzRWxlbWVudDo6
aXMyZFR5cGUodHlwZSksIHR5cGUpOwogCiAgICAgaWYgKG1fY29udGV4dCAmJiAhbV9jb250ZXh0
LT5pczJkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgaWYgKCFtX2NvbnRleHQp
IHsKICAgICAgICAgYm9vbCB1c2VzRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZTsK
ICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBAIC0yNzgsNyArMzIxLDcgQEAgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbgogI2VuZGlmCiAgICAgfQogCi0gICAg
cmV0dXJuIG1fY29udGV4dC5nZXQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEKj4obV9jb250ZXh0LmdldCgpKTsKIH0KIAogI2lmIEVOQUJMRShXRUJH
TCkKQEAgLTMxMiw3ICszNTUsNyBAQCBib29sIEhUTUxDYW52YXNFbGVtZW50OjppczNkVHlwZShj
b25zdCBTCiAgICAgICAgIHx8IHR5cGUgPT0gIndlYmtpdC0zZCI7CiB9CiAKLUNhbnZhc1JlbmRl
cmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0V2ViR0woY29uc3QgU3Ry
aW5nJiB0eXBlLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzJiYgYXR0cnMpCitXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdMKGNvbnN0IFN0
cmluZyYgdHlwZSwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyYmIGF0dHJzKQogewogICAgIEFTU0VS
VChIVE1MQ2FudmFzRWxlbWVudDo6aXMzZFR5cGUodHlwZSkpOwogCkBAIC0zMzIsNyArMzc1LDcg
QEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbgogICAgICAgICB9CiAg
ICAgfQogCi0gICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+KG1fY29udGV4dC5nZXQoKSk7CiB9CiAjZW5k
aWYKIApAQCAtMzQyLDcgKzM4NSw3IEBAIGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BV
VHlwZShjb24KICAgICByZXR1cm4gdHlwZSA9PSAid2ViZ3B1IjsKIH0KIAotQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRXZWJHUFUoY29uc3QgU3Ry
aW5nJiB0eXBlKQorV2ViR1BVUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6Omdl
dENvbnRleHRXZWJHUFUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIEFTU0VSVF9VTlVTRUQo
dHlwZSwgSFRNTENhbnZhc0VsZW1lbnQ6OmlzV2ViR1BVVHlwZSh0eXBlKSk7CiAKQEAgLTM2Miw3
ICs0MDUsNyBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVuCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXZWJHUFVSZW5kZXJpbmdDb250ZXh0Kj4obV9jb250ZXh0LmdldCgpKTsKIH0K
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCShy
ZXZpc2lvbiAyMTk4NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQmxvYkNhbGxiYWNrOworY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOwog
Y2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI7CkBAIC01MCw2ICs1MSw4IEBAIGNsYXNzIElt
YWdlQnVmZmVyOwogY2xhc3MgSW1hZ2VEYXRhOwogY2xhc3MgTWVkaWFTYW1wbGU7CiBjbGFzcyBN
ZWRpYVN0cmVhbTsKK2NsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CitjbGFzcyBXZWJH
UFVSZW5kZXJpbmdDb250ZXh0Owogc3RydWN0IFVuY2FjaGVkU3RyaW5nOwogCiBuYW1lc3BhY2Ug
RGlzcGxheUxpc3QgewpAQCAtOTYsMTggKzk5LDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmVzZXQo
KTsKICAgICB9CiAKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRl
eHQ+PiBnZXRDb250ZXh0KEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQs
IFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7CisKICAgICBD
YW52YXNSZW5kZXJpbmdDb250ZXh0KiBnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYpOwogCiAgICAg
c3RhdGljIGJvb2wgaXMyZFR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCogZ2V0Q29udGV4dDJkKGNvbnN0IFN0cmluZyYpOworICAgIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRCogZ2V0Q29udGV4dDJkKGNvbnN0IFN0cmluZyYpOwogCiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIHN0YXRpYyBib29sIGlzM2RUeXBlKGNvbnN0IFN0cmluZyYpOwotICAgIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQqIGdldENvbnRleHRXZWJHTChjb25zdCBTdHJpbmcmLCBXZWJHTENv
bnRleHRBdHRyaWJ1dGVzJiYgPSB7IH0pOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
IGdldENvbnRleHRXZWJHTChjb25zdCBTdHJpbmcmLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzJiYg
PSB7IH0pOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkdQVSkKICAgICBzdGF0aWMgYm9vbCBpc1dl
YkdQVVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogZ2V0
Q29udGV4dFdlYkdQVShjb25zdCBTdHJpbmcmKTsKKyAgICBXZWJHUFVSZW5kZXJpbmdDb250ZXh0
KiBnZXRDb250ZXh0V2ViR1BVKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25PcjxVbmNhY2hlZFN0cmluZz4gdG9EYXRhVVJMKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEpTQzo6SlNWYWx1ZSBxdWFsaXR5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyMTk4NzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NyArMjQsMTcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLXR5cGVkZWYgKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRCBvciBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKSBSZW5kZXJpbmdDb250
ZXh0OworIHR5cGVkZWYgKAorICNpZiBkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dF
QkdMCisgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCBvcgorICNlbmRpZgorICNpZiBkZWZpbmVk
KEVOQUJMRV9XRUJHTDIpICYmIEVOQUJMRV9XRUJHTDIKKyAgICAgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dCBvcgorICNlbmRpZgorICNpZiBkZWZpbmVkKEVOQUJMRV9XRUJHUFUpICYmIEVOQUJMRV9X
RUJHUFUKKyAgICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dCBvcgorICNlbmRpZgorICAgICBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQpIFJlbmRlcmluZ0NvbnRleHQ7CiAKIFsKICAgICBKU0dlbmVy
YXRlVG9OYXRpdmVPYmplY3QsCkBAIC0zNCw3ICs0NCw3IEBAIHR5cGVkZWYgKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRCBvciBXZWIKICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsK
ICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CiAKLSAgICBbQ3VzdG9tXSBSZW5k
ZXJpbmdDb250ZXh0PyBnZXRDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQsIGFueS4uLiBhcmd1
bWVudHMpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIFJl
bmRlcmluZ0NvbnRleHQ/IGdldENvbnRleHQoRE9NU3RyaW5nIGNvbnRleHRJZCwgYW55Li4uIGFy
Z3VtZW50cyk7CiAKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyB0b0RhdGFVUkwo
b3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUsIG9wdGlvbmFsIGFueSBxdWFsaXR5KTsKICAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgdG9C
bG9iKEJsb2JDYWxsYmFjayBjYWxsYmFjaywgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUsIG9wdGlv
bmFsIGFueSBxdWFsaXR5KTsK
</data>
<flag name="review"
          id="337112"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>