<?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>189121</bug_id>
          
          <creation_ts>2018-08-29 16:34:17 -0700</creation_ts>
          <short_desc>[WHLSL] Not all functions should be able to run in all shader stages</short_desc>
          <delta_ts>2018-10-13 14:51:37 -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>WebGPU</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>
          
          <blocked>176199</blocked>
    
    <blocked>189202</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>rmorisset</cc>
    
    <cc>tdenney</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1454998</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-29 16:34:17 -0700</bug_when>
    <thetext>Derivative functions can only run in fragment shaders. There are probably others like this.

Same for built-in variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455006</commentid>
    <comment_count>1</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-29 16:38:20 -0700</bug_when>
    <thetext>Barriers can only be used in compute shaders</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455055</commentid>
    <comment_count>2</comment_count>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-08-29 17:18:57 -0700</bug_when>
    <thetext>When these functions are introduced in the standard library it would be nice if we could add the restriction there, e.g.

native fragment float ddx(float)

And then enforce that native functions with the fragment annotation can only be called from inside fragment shaders. I’d prefer to have a syntactic restriction like this than something that the interpreter/spec has to worry about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459214</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-12 18:51:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/44403005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462331</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-22 01:59:22 -0700</bug_when>
    <thetext>The built-in variables are handled in https://bugs.webkit.org/show_bug.cgi?id=189134</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462346</commentid>
    <comment_count>5</comment_count>
      <attachid>350512</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-22 02:59:08 -0700</bug_when>
    <thetext>Created attachment 350512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462363</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-22 04:24:55 -0700</bug_when>
    <thetext>I&apos;m not sure that additions to the grammar are a good idea. If we add new keywords here, it seems we should also be doing it in https://bugs.webkit.org/show_bug.cgi?id=189122, but I don&apos;t think a proliferation of these keywords are a good idea. It seems like the compiler could &quot;just know&quot; which functions have which properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462411</commentid>
    <comment_count>7</comment_count>
      <attachid>350533</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-22 14:00:11 -0700</bug_when>
    <thetext>Created attachment 350533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463033</commentid>
    <comment_count>8</comment_count>
      <attachid>350533</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-24 17:29:22 -0700</bug_when>
    <thetext>Comment on attachment 350533
Patch

Rejecting attachment 350533 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 350533, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=350533&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=189121&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Processing patch 350533 from bug 189121.
Fetching: https://bugs.webkit.org/attachment.cgi?id=350533
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Filip Pizlo&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 15 diffs from patch file(s).
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/WebGPUShadingLanguageRI/All.js
patching file Tools/WebGPUShadingLanguageRI/CheckNativeFuncStages.js
patching file Tools/WebGPUShadingLanguageRI/Intrinsics.js
Hunk #1 succeeded at 715 (offset 4 lines).
Hunk #2 succeeded at 822 (offset 4 lines).
patching file Tools/WebGPUShadingLanguageRI/LateChecker.js
Hunk #1 succeeded at 72 with fuzz 2 (offset 2 lines).
patching file Tools/WebGPUShadingLanguageRI/NativeFunc.js
patching file Tools/WebGPUShadingLanguageRI/Parse.js
Hunk #1 FAILED at 1171.
Hunk #2 succeeded at 1290 (offset 53 lines).
Hunk #3 succeeded at 1300 (offset 55 lines).
Hunk #4 succeeded at 1320 (offset 55 lines).
1 out of 4 hunks FAILED -- saving rejects to file Tools/WebGPUShadingLanguageRI/Parse.js.rej
patching file Tools/WebGPUShadingLanguageRI/Prepare.js
patching file Tools/WebGPUShadingLanguageRI/SPIRV.html
patching file Tools/WebGPUShadingLanguageRI/StandardLibrary.js
Hunk #4 succeeded at 1794 (offset 9 lines).
Hunk #5 FAILED at 1905.
Hunk #6 FAILED at 1915.
2 out of 6 hunks FAILED -- saving rejects to file Tools/WebGPUShadingLanguageRI/StandardLibrary.js.rej
patching file Tools/WebGPUShadingLanguageRI/StatementCloner.js
Hunk #1 succeeded at 46 (offset 3 lines).
patching file Tools/WebGPUShadingLanguageRI/Test.html
patching file Tools/WebGPUShadingLanguageRI/Test.js
patching file Tools/WebGPUShadingLanguageRI/WSyntaxError.js
patching file Tools/WebGPUShadingLanguageRI/index.html

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Filip Pizlo&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/9338063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463104</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-24 23:36:18 -0700</bug_when>
    <thetext>Committed r236455: &lt;https://trac.webkit.org/changeset/236455&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463280</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-25 12:35:10 -0700</bug_when>
    <thetext>Committed r236470: &lt;https://trac.webkit.org/changeset/236470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468844</commentid>
    <comment_count>11</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 14:51:37 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/59</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350512</attachid>
            <date>2018-09-22 02:59:08 -0700</date>
            <delta_ts>2018-09-22 14:00:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189121-20180922185907.patch</filename>
            <type>text/plain</type>
            <size>19263</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MzY3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ExZmEyMzljNDU1ODk5ZTY4OGMyMjNmZmJmZTlhZGQy
OTliMTliNy4uYmY4M2ZiZDA3MGJhOWM4MWM2MThiZWQwYWRjYjA1OWM0NDQ2NzI1ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDE4LTA5LTIyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBOb3QgYWxsIGZ1bmN0aW9ucyBzaG91bGQgYmUgYWJsZSB0byBy
dW4gaW4gYWxsIHNoYWRlciBzdGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4OTEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGRkeCgpIGFuZCBkZHkoKSBjYW4gb25seSBydW4gaW4gZnJhZ21lbnQg
c2hhZGVycywgYW5kIHRoZSBiYXJyaWVyIGZ1bmN0aW9ucyBjYW4gb25seSBydW4gaW4gY29tcHV0
ZSBzaGFkZXJzLgorICAgICAgICBkZHhfY29hcnNlKCkgJiBmcmllbmRzIGFyZSBjdXJyZW50bHkg
aW1wbGVtZW50ZWQgYXMganVzdCBjYWxsaW5nIGRkeCgpLCBzbyB3ZSBvbmx5IG5lZWQgdG8gbW9k
aWZ5IHRob3NlIGZ1bmN0aW9ucworICAgICAgICBpZi93aGVuIHdlIG1ha2UgdGhlbSBuYXRpdmUu
CisKKyAgICAgICAgVGhlIHRleHR1cmUgc2FtcGxpbmcgZnVuY3Rpb25zIHRoYXQgdXNlIGltcGxp
Y2l0IGRlcml2YXRpdmVzIGNhbiBydW4gaW4gYW55IHNoYWRlciBzdGFnZSAtIHRoZXkganVzdCB1
c2UgYSBMT0Qgb2YKKyAgICAgICAgMC4gVGhlcmVmb3JlLCB0aG9zZSBmdW5jdGlvbnMgYXJlIHVu
Y2hhbmdlZC4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qczoKKyAg
ICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzOgorICAgICAgICAoTGF0ZUNo
ZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5cGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanM6CisgICAgICAgIChOYXRpdmVGdW5jKToKKyAgICAg
ICAgKE5hdGl2ZUZ1bmMucHJvdG90eXBlLmdldCBzdGFnZSk6CisgICAgICAgIChOYXRpdmVGdW5j
LnByb3RvdHlwZS50b0RlY2xTdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1BhcnNlLmpzOgorICAgICAgICAocGFyc2VGdW5jRGVjbCk6CisgICAgICAgIChwYXJzZU5h
dGl2ZUZ1bmMpOgorICAgICAgICAocGFyc2VOYXRpdmUpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1ByZXBhcmUuanM6CisgICAgICAgIChsZXQucHJlcGFyZSk6CisgICAgICAg
ICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbDoKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanM6CisgICAgICAgIChsZXQuc3RhbmRh
cmRMaWJyYXJ5KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRD
bG9uZXIuanM6CisgICAgICAgIChTdGF0ZW1lbnRDbG9uZXIucHJvdG90eXBlLnZpc2l0TmF0aXZl
RnVuYyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sOgorICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanM6CisgICAgICAgICh0ZXN0cy5z
aGFkZXJTdGFnZXMpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1dTeW50YXhF
cnJvci5qczoKKyAgICAgICAgKFdTeW50YXhFcnJvci5wcm90b3R5cGUudG9TdHJpbmcpOgorICAg
ICAgICAoV1N5bnRheEVycm9yKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9p
bmRleC5odG1sOgorCiAyMDE4LTA5LTIxICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dITFNMXSBMb2NhbCB2YXJpYWJsZXMgc2hvdWxkIGJlIHN0YXRpY2Fs
bHkgYWxsb2NhdGVkCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9B
bGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggZTI5MTBk
NzlkNmMyMzU5Yjc2MzE2MTk4MDMxNmFmZjA5NDIyNzBmMy4uZTZkZjJmY2UzNDNlN2Q2OTJmNzAz
ZDE2YWMzOTg1N2Y3MDRhY2IzOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvQWxsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpA
QCAtNTYsNiArNTYsNyBAQCBsb2FkKCJDYXN0cy5qcyIpOwogbG9hZCgiQ2hlY2suanMiKTsKIGxv
YWQoIkNoZWNrTGl0ZXJhbFR5cGVzLmpzIik7CiBsb2FkKCJDaGVja0xvb3BzLmpzIik7Citsb2Fk
KCJDaGVja05hdGl2ZUZ1bmNTdGFnZXMuanMiKTsKIGxvYWQoIkNoZWNrUmVjdXJzaW9uLmpzIik7
CiBsb2FkKCJDaGVja1JlY3Vyc2l2ZVR5cGVzLmpzIik7CiBsb2FkKCJDaGVja1JldHVybnMuanMi
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3Mu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCmluZGV4IDY4
YjBkZDU3M2ZjMDJlYTM4NTE3OTU1ZDgzODhhNjQ2YWE5MGE1OTYuLjQ0OGNjY2JkYTg4MGZlZmQ5
OTkzM2UyNTAxNmU0NTQ2YWUxYzEzNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0ludHJpbnNpY3MuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvSW50cmluc2ljcy5qcwpAQCAtNzExLDEzICs3MTEsMTMgQEAgY2xhc3MgSW50cmluc2ljcyB7
CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAg
Im5hdGl2ZSBmbG9hdCBkZHgoZmxvYXQpIiwKKyAgICAgICAgICAgICJuYXRpdmUgZnJhZ21lbnQg
ZmxvYXQgZGR4KGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KDApOwogICAgICAg
ICAgICAgfSk7CiAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUg
ZmxvYXQgZGR5KGZsb2F0KSIsCisgICAgICAgICAgICAibmF0aXZlIGZyYWdtZW50IGZsb2F0IGRk
eShmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCgwKTsKICAgICAgICAgICAgIH0p
OwpAQCAtODE4LDE5ICs4MTgsMTkgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAgICAgICAgICAgICB9
KTsKIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSB2b2lkIEFs
bE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCkiLAorICAgICAgICAgICAgIm5hdGl2ZSBjb21w
dXRlIHZvaWQgQWxsTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMoKSIsCiAgICAgICAgICAgICBm
dW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gZnVuY3Rpb24o
KSB7fTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAg
ICAgICAibmF0aXZlIHZvaWQgRGV2aWNlTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMoKSIsCisg
ICAgICAgICAgICAibmF0aXZlIGNvbXB1dGUgdm9pZCBEZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdy
b3VwU3luYygpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbigpIHt9OwogICAgICAgICAgICAgfSk7CiAKICAgICAg
ICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUgdm9pZCBHcm91cE1lbW9yeUJh
cnJpZXJXaXRoR3JvdXBTeW5jKCkiLAorICAgICAgICAgICAgIm5hdGl2ZSBjb21wdXRlIHZvaWQg
R3JvdXBNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygpIiwKICAgICAgICAgICAgIGZ1bmMgPT4g
ewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbigpIHt9Owog
ICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9MYXRlQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVj
a2VyLmpzCmluZGV4IGViNWVlNjk2OWMxZDkzMzYzYWUxNTY1YzE3ZGNjYzBhYWIwYTFiYzMuLmVi
MWNlOTE0YTc5MDM5ZWZmOTMwMTM0ODczODc0ZWEyNDQ4YzliYmIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzCkBAIC03MCw2ICs3MCw4IEBAIGNsYXNz
IExhdGVDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgImNvbXB1dGUiOgorICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgInRlc3QiOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9OYXRpdmVGdW5jLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZl
RnVuYy5qcwppbmRleCBmMDg2NTM0MmYyZWRkN2RlYzQ3YmY1MmQxNTk4NjEwYzMyNGYwZjJjLi41
YjA2OTE4NWY1OGM0M2Y0MDM0MzFiMzViYzI3YTcwNzJjY2U2MjU2IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanMKQEAgLTI1LDkgKzI1LDEwIEBACiAidXNl
IHN0cmljdCI7CiAKIGNsYXNzIE5hdGl2ZUZ1bmMgZXh0ZW5kcyBGdW5jIHsKLSAgICBjb25zdHJ1
Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVy
VHlwZSkKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRl
cnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSwgc3RhZ2UgPSBudWxsKQogICAgIHsKICAgICAgICAgc3Vw
ZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBpc0Nhc3QsIHNoYWRlclR5
cGUpOworICAgICAgICB0aGlzLl9zdGFnZSA9IHN0YWdlOwogICAgICAgICB0aGlzLmlzUmVzdHJp
Y3RlZCA9IGZhbHNlOwogICAgICAgICB0aGlzLmltcGxlbWVudGF0aW9uID0gbnVsbDsKICAgICAg
ICAgdGhpcy5faW1wbGVtZW50YXRpb25EYXRhID0gbnVsbDsKQEAgLTM1LDEzICszNiwxOCBAQCBj
bGFzcyBOYXRpdmVGdW5jIGV4dGVuZHMgRnVuYyB7CiAgICAgfQogCiAgICAgZ2V0IGlzTmF0aXZl
KCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGdldCBzdGFnZSgpIHsgcmV0dXJuIHRoaXMuX3N0YWdl
OyB9CiAKICAgICBnZXQgaW1wbGVtZW50YXRpb25EYXRhKCkgeyByZXR1cm4gdGhpcy5faW1wbGVt
ZW50YXRpb25EYXRhOyB9CiAgICAgc2V0IGltcGxlbWVudGF0aW9uRGF0YShuZXdJbXBsRGF0YSkg
eyB0aGlzLl9pbXBsZW1lbnRhdGlvbkRhdGEgPSBuZXdJbXBsRGF0YTsgfQogCiAgICAgdG9EZWNs
U3RyaW5nKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAibmF0aXZlICIgKyBzdXBlci50b0RlY2xT
dHJpbmcoKTsKKyAgICAgICAgbGV0IHJlc3VsdCA9ICJuYXRpdmUgIjsKKyAgICAgICAgaWYgKHRo
aXMuc3RhZ2UpCisgICAgICAgICAgICByZXN1bHQgKz0gYCR7dGhpcy5zdGFnZX0gYDsKKyAgICAg
ICAgcmVzdWx0ICs9IHN1cGVyLnRvRGVjbFN0cmluZygpOworICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UGFyc2UuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCA3
ZDEzODFmMmUzYzVhMzBhZDFlM2Q5N2Y2MjM1NDdiY2U4YjA0NWU2Li45MzA4ZDY5OTNiMTA0NGQy
NTJlZjk1MGIwNWNmMTNkN2MyYTUxMjA3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9QYXJzZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Q
YXJzZS5qcwpAQCAtMTE3MSw3ICsxMTcxLDcgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3Jp
Z2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgbmFt
ZSA9ICJvcGVyYXRvciBjYXN0IjsKICAgICAgICAgICAgIGlzQ2FzdCA9IHRydWU7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBzaGFkZXJUeXBlID0gdHJ5Q29uc3VtZSgidmVydGV4Iiwg
ImZyYWdtZW50IiwgInRlc3QiKTsKKyAgICAgICAgICAgIHNoYWRlclR5cGUgPSB0cnlDb25zdW1l
KCJ2ZXJ0ZXgiLCAiZnJhZ21lbnQiLCAiY29tcHV0ZSIsICJ0ZXN0Iik7CiAgICAgICAgICAgICBy
ZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7CiAgICAgICAgICAgICBpZiAocmV0dXJuVHlwZSBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuVHlwZTsK
QEAgLTEyMzcsNyArMTIzNyw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3Jp
Z2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKLSAgICBmdW5jdGlvbiBwYXJzZU5hdGl2ZUZ1bmMoKQorICAgIGZ1bmN0aW9uIHBh
cnNlTmF0aXZlRnVuYyhzdGFnZSA9IG51bGwpCiAgICAgewogICAgICAgICBsZXQgZnVuYyA9IHBh
cnNlRnVuY0RlY2woKTsKICAgICAgICAgaWYgKGZ1bmMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CkBAIC0xMjQ1LDcgKzEyNDUsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9y
aWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCBtYXliZUVycm9y
ID0gY29uc3VtZSgiOyIpOwogICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwotICAgICAgICByZXR1cm4g
bmV3IE5hdGl2ZUZ1bmMoZnVuYy5vcmlnaW4sIGZ1bmMubmFtZSwgZnVuYy5yZXR1cm5UeXBlLCBm
dW5jLnBhcmFtZXRlcnMsIGZ1bmMuaXNDYXN0LCBmdW5jLnNoYWRlclR5cGUpOworICAgICAgICBy
ZXR1cm4gbmV3IE5hdGl2ZUZ1bmMoZnVuYy5vcmlnaW4sIGZ1bmMubmFtZSwgZnVuYy5yZXR1cm5U
eXBlLCBmdW5jLnBhcmFtZXRlcnMsIGZ1bmMuaXNDYXN0LCBmdW5jLnNoYWRlclR5cGUsIHN0YWdl
KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZU5hdGl2ZSgpCkBAIC0xMjY1LDcgKzEyNjUs
MTAgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVt
YmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAg
ICAgICAgICAgcmV0dXJuIE5hdGl2ZVR5cGUuY3JlYXRlKG9yaWdpbiwgbmFtZS50ZXh0LCBhcmdz
KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gcGFyc2VOYXRpdmVGdW5jKCk7CisgICAgICAg
IGxldCBzdGFnZSA9IHRyeUNvbnN1bWUoInZlcnRleCIsICJmcmFnbWVudCIsICJjb21wdXRlIik7
CisgICAgICAgIGlmIChzdGFnZSkKKyAgICAgICAgICAgIHN0YWdlID0gc3RhZ2UudGV4dDsKKyAg
ICAgICAgcmV0dXJuIHBhcnNlTmF0aXZlRnVuYyhzdGFnZSk7CiAgICAgfQogCiAgICAgZnVuY3Rp
b24gcGFyc2VSZXN0cmljdGVkRnVuY0RlZigpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UHJlcGFyZS5qcwppbmRleCA5ZmUzNmJhOGM3Yjg2MWVlMmFjZDBhMzA4NTQ4YWI5ZjZmOWUzZGYw
Li5jMTE1OGNmN2FlYWE1MTFlNTM2NDdmZTVlOWRhMGU3NmY3Yjc1MmQ2IDEwMDY0NAotLS0gYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMKQEAgLTcwLDYgKzcwLDcgQEAgbGV0IHByZXBh
cmUgPSAoKCkgPT4gewogICAgICAgICBhbGxvY2F0ZUF0RW50cnlQb2ludHMocHJvZ3JhbSk7CiAg
ICAgICAgIHByb2dyYW0udmlzaXQobmV3IFN0cnVjdExheW91dEJ1aWxkZXIoKSk7CiAgICAgICAg
IGxhdGVDaGVja0FuZExheW91dEJ1ZmZlcnMocHJvZ3JhbSk7CisgICAgICAgIGNoZWNrTmF0aXZl
RnVuY1N0YWdlcyhwcm9ncmFtKTsKICAgICAgICAgaWYgKHNob3VsZElubGluZSkKICAgICAgICAg
ICAgIGlubGluZShwcm9ncmFtKTsKICAgICAgICAgcmV0dXJuIHByb2dyYW07CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAppbmRleCA4OTE4NjcxMWZmNWMwMTBmNTcyMGUx
Njg4ZmYzY2E1ZGZkZWUyNGVhLi44ZjIzNTA4MjUzMzJlMTM5ZDMxODhiNGNhM2YwNWI2NTFlOTc5
YzlmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1s
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKQEAgLTM5LDYg
KzM5LDcgQEAgdGQgewogICAgIDxzY3JpcHQgc3JjPSJDaGVjay5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNoZWNrTGl0ZXJhbFR5cGVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iQ2hlY2tMb29wcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNoZWNrTmF0
aXZlRnVuY1N0YWdlcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNoZWNrUmVjdXJz
aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ2hlY2tSZWN1cnNpdmVUeXBlcy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNoZWNrUmV0dXJucy5qcyI+PC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJh
cnkuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMK
aW5kZXggY2YzMDkzYmJlOGNmMzdiMjkzZDM4YTc5ZTZlNzY5MTE2YzQ0OTMzOC4uZDg5M2IxMjI3
ZGNkNDY4MWEyNzQzOTZmZmM4ZGZmZjM1NTY5OGYzOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwpAQCAtODAzLDcgKzgwMyw4IEBAIGxl
dCBzdGFuZGFyZExpYnJhcnkgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgIC8vIFRoZXNlIGZ1bmN0
aW9ucyBhcmUgdW5hcnkgZmxvYXRpbmctcG9pbnQgc2NhbGFyIGZ1bmN0aW9ucywKICAgICAgICAg
Ly8gd2hpY2ggY2FuIGFsc28gYmUgYXBwbGllZCB0byB2ZWN0b3JzIGFuZCBtYXRyaWNlcyBjb21w
b25lbnQtd2lzZS4KICAgICAgICAgKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGV0IG5hdGl2
ZUZ1bmN0aW9ucyA9IFtgY29zYCwgYHNpbmAsIGB0YW5gLCBgYWNvc2AsIGBhc2luYCwgYGF0YW5g
LCBgY29zaGAsIGBzaW5oYCwgYHRhbmhgLCBgY2VpbGAsIGBleHBgLCBgZmxvb3JgLCBgbG9nYCwg
YHJvdW5kYCwgYHRydW5jYCwgYGRkeGAsIGBkZHlgXTsKKyAgICAgICAgICAgIGxldCBuYXRpdmVG
dW5jdGlvbnMgPSBbYGNvc2AsIGBzaW5gLCBgdGFuYCwgYGFjb3NgLCBgYXNpbmAsIGBhdGFuYCwg
YGNvc2hgLCBgc2luaGAsIGB0YW5oYCwgYGNlaWxgLCBgZXhwYCwgYGZsb29yYCwgYGxvZ2AsIGBy
b3VuZGAsIGB0cnVuY2BdOworICAgICAgICAgICAgbGV0IG5hdGl2ZUZyYWdtZW50RnVuY3Rpb25z
ID0gW2BkZHhgLCBgZGR5YF07CiAgICAgICAgICAgICBsZXQgbm9uTmF0aXZlRnVuY3Rpb25zID0g
W2BzcXJ0YCwgYGxvZzJgLCBgbG9nMTBgLCBgZnJhY2AsIGBleHAyYCwgYGRlZ3JlZXNgLCBgcmFk
aWFuc2AsIGByY3BgLCBgcnNxcnRgLCBgc2F0dXJhdGVgLCBgZGR4X2NvYXJzZWAsIGBkZHhfZmlu
ZWAsIGBkZHlfY29hcnNlYCwgYGRkeV9maW5lYCwgYGZ3aWR0aGBdOwogICAgICAgICAKICAgICAg
ICAgICAgIGZvciAobGV0IG5hdGl2ZUZ1bmN0aW9uIG9mIG5hdGl2ZUZ1bmN0aW9ucykgewpAQCAt
ODEzLDYgKzgxNCwxMyBAQCBsZXQgc3RhbmRhcmRMaWJyYXJ5ID0gKGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgICAgIHByaW50KGB9YCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIAorICAgICAg
ICAgICAgZm9yIChsZXQgbmF0aXZlRnVuY3Rpb24gb2YgbmF0aXZlRnJhZ21lbnRGdW5jdGlvbnMp
IHsKKyAgICAgICAgICAgICAgICBwcmludChgbmF0aXZlIGZyYWdtZW50IGZsb2F0ICR7bmF0aXZl
RnVuY3Rpb259KGZsb2F0KTtgKTsKKyAgICAgICAgICAgICAgICBwcmludChgaGFsZiAke25hdGl2
ZUZ1bmN0aW9ufShoYWxmIHgpIHtgKTsKKyAgICAgICAgICAgICAgICBwcmludChgICAgIHJldHVy
biBoYWxmKCR7bmF0aXZlRnVuY3Rpb259KGZsb2F0KHgpKSk7YCk7CisgICAgICAgICAgICAgICAg
cHJpbnQoYH1gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgICAgICBmb3IgKGxl
dCB0eXBlIG9mIFtgaGFsZmAsIGBmbG9hdGBdKSB7CiAgICAgICAgICAgICAgICAgcHJpbnQoYCR7
dHlwZX0gc3FydCgke3R5cGV9IHgpIHtgKTsKICAgICAgICAgICAgICAgICBwcmludChgICAgIHJl
dHVybiBwb3coeCwgMC41KTtgKTsKQEAgLTg2MCw3ICs4NjgsNyBAQCBsZXQgc3RhbmRhcmRMaWJy
YXJ5ID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHByaW50KGAgICAgcmV0dXJuIGFi
cyhkZHgoeCkpICsgYWJzKGRkeSh4KSk7YCk7CiAgICAgICAgICAgICAgICAgcHJpbnQoYH1gKTsK
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgZm9yIChsZXQgb3V0cHV0RnVuY3Rpb24gb2YgbmF0
aXZlRnVuY3Rpb25zLmNvbmNhdChub25OYXRpdmVGdW5jdGlvbnMpKSB7CisgICAgICAgICAgICAg
ICAgZm9yIChsZXQgb3V0cHV0RnVuY3Rpb24gb2YgbmF0aXZlRnVuY3Rpb25zLmNvbmNhdChuYXRp
dmVGcmFnbWVudEZ1bmN0aW9ucy5jb25jYXQobm9uTmF0aXZlRnVuY3Rpb25zKSkpIHsKICAgICAg
ICAgICAgICAgICAgICAgZm9yIChsZXQgc2l6ZSBvZiBbMiwgMywgNF0pIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHByaW50KGAke3R5cGV9JHtzaXplfSAke291dHB1dEZ1bmN0aW9ufSgke3R5
cGV9JHtzaXplfSB4KSB7YCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludChgICAgICR7
dHlwZX0ke3NpemV9IHJlc3VsdDtgKTsKQEAgLTE3NzcsOSArMTc4NSw5IEBAIGxldCBzdGFuZGFy
ZExpYnJhcnkgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgIH0KICAgICAgICAgcHJpbnQoKTsKICAg
ICAgICAgCi0gICAgICAgIHByaW50KGBuYXRpdmUgdm9pZCBBbGxNZW1vcnlCYXJyaWVyV2l0aEdy
b3VwU3luYygpO2ApOwotICAgICAgICBwcmludChgbmF0aXZlIHZvaWQgRGV2aWNlTWVtb3J5QmFy
cmllcldpdGhHcm91cFN5bmMoKTtgKTsKLSAgICAgICAgcHJpbnQoYG5hdGl2ZSB2b2lkIEdyb3Vw
TWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMoKTtgKTsKKyAgICAgICAgcHJpbnQoYG5hdGl2ZSBj
b21wdXRlIHZvaWQgQWxsTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMoKTtgKTsKKyAgICAgICAg
cHJpbnQoYG5hdGl2ZSBjb21wdXRlIHZvaWQgRGV2aWNlTWVtb3J5QmFycmllcldpdGhHcm91cFN5
bmMoKTtgKTsKKyAgICAgICAgcHJpbnQoYG5hdGl2ZSBjb21wdXRlIHZvaWQgR3JvdXBNZW1vcnlC
YXJyaWVyV2l0aEdyb3VwU3luYygpO2ApOwogICAgICAgICBwcmludCgpOwogICAgICAgICAKICAg
ICAgICAgZm9yIChsZXQgdHlwZSBvZiBbYHVjaGFyYCwgYHVzaG9ydGAsIGB1aW50YCwgYGNoYXJg
LCBgc2hvcnRgLCBgaW50YCwgYGhhbGZgLCBgZmxvYXRgXSkgewpAQCAtMTg4OCw2ICsxODk2LDcg
QEAgbGV0IHN0YW5kYXJkTGlicmFyeSA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICBwcmludCgpOworCiAgICAgICAgIC8qCiAgICAgICAgIGZvciAobGV0
IHR5cGUgb2YgW2B1aW50YCwgYGludGBdKSB7CiAgICAgICAgICAgICBmb3IgKGxldCBmdW5jdGlv
bk5hbWUgb2YgW2BBZGRgLCBgQW5kYCwgYEV4Y2hhbmdlYCwgYE1heGAsIGBNaW5gLCBgT3JgLCBg
WG9yYF0pIHsKQEAgLTE4OTcsNiArMTkwNiw5IEBAIGxldCBzdGFuZGFyZExpYnJhcnkgPSAoZnVu
Y3Rpb24oKSB7CiAgICAgICAgIH0KICAgICAgICAgcHJpbnQoKTsKICAgICAgICAgKi8KKworICAg
ICAgICAvLyBZb3UgbWlnaHQgdGhpbmsgdGhhdCB0aGUgc2FtcGxpbmcgZnVuY3Rpb25zIHRoYXQg
cmVseSBvbiBpbXBsaWNpdCBkZXJpdmF0aXZlcyBjYW4ndCBiZSBjYWxsZWQgaW4gdmVydGV4IHNo
YWRlcnMuCisgICAgICAgIC8vIEhvd2V2ZXIsIHRoZXkgZG8gd29yazsgdGhleSBqdXN0IGEgbGV2
ZWwgb2YgMC4KICAgICAgICAgZm9yIChsZXQgdHlwZSBvZiBbYHVjaGFyYCwgYHVzaG9ydGAsIGB1
aW50YCwgYGNoYXJgLCBgc2hvcnRgLCBgaW50YCwgYGhhbGZgLCBgZmxvYXRgXSkgewogICAgICAg
ICAgICAgZm9yIChsZXQgbGVuZ3RoIG9mIFtgYCwgYDJgLCBgM2AsIGA0YF0pIHsKICAgICAgICAg
ICAgICAgICBwcmludChgbmF0aXZlICR7dHlwZX0ke2xlbmd0aH0gU2FtcGxlKFRleHR1cmUxRDwk
e3R5cGV9JHtsZW5ndGh9Piwgc2FtcGxlciwgZmxvYXQgbG9jYXRpb24pO2ApOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzCmluZGV4IDBkMDcx
NWE5ODU0ZGVmMWJmZDJhODA4Yzc0MDQxMTJiYTFhNGEwYzEuLmMxMjEwYjI2N2JkMmRmOWQyODFh
OGMyYmJjNDFlMzc5NWQ3MGMxY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1N0YXRlbWVudENsb25lci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9TdGF0ZW1lbnRDbG9uZXIuanMKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgU3RhdGVtZW50
Q2xvbmVyIGV4dGVuZHMgUmV3cml0ZXIgewogICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUu
bmFtZSwKICAgICAgICAgICAgIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlzKSwKICAgICAgICAg
ICAgIG5vZGUucGFyYW1ldGVycy5tYXAocGFyYW1ldGVyID0+IHBhcmFtZXRlci52aXNpdCh0aGlz
KSksCi0gICAgICAgICAgICBub2RlLmlzQ2FzdCwgbm9kZS5zaGFkZXJUeXBlKTsKKyAgICAgICAg
ICAgIG5vZGUuaXNDYXN0LCBub2RlLnNoYWRlclR5cGUsIG5vZGUuc3RhZ2UpOwogICAgICAgICBy
ZXN1bHQuaXNSZXN0cmljdGVkID0gbm9kZS5pc1Jlc3RyaWN0ZWQ7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VGVzdC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCmluZGV4
IDk4ZTM4NTFmMTY5OWFhNmNlNjhiZmQ1YWI4NDYxYWU5N2RlZWQxYzEuLjhlOWY1ZWIxZGVlZGMz
OTA2MGVlMTZjYWJjYzdkNjRkYjNmNDFkOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UZXN0Lmh0bWwKQEAgLTMzLDYgKzMzLDcgQEAKIDxzY3JpcHQgc3JjPSJDaGVjay5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tMaXRlcmFsVHlwZXMuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IkNoZWNrTG9vcHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNoZWNrTmF0
aXZlRnVuY1N0YWdlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tSZWN1cnNpb24u
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrUmVjdXJzaXZlVHlwZXMuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrUmV0dXJucy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCBiZjlmNTVlMzE1Mzc4NGI2ZDAwNzRiZTFiOWE5
MTQ4YmEyZTQyNDllLi42NzgyZGNjZTY1OTg3MmFkN2ViMWQwZWY3OTk1MjNkZGJkNTNjM2FkIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKQEAgLTU3NTksNiArNTc1OSwxMzIg
QEAgdGVzdHMuYW5kUmV0dXJuZWRBcnJheVJlZiA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ludChw
cm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMzU0KTsKIH0KIAordGVz
dHMuc2hhZGVyU3RhZ2VzID0gZnVuY3Rpb24oKQoreworICAgIGRvUHJlcChgCisgICAgICAgIHN0
cnVjdCBSZXN1bHQgeworICAgICAgICAgICAgZmxvYXQ0IG91dHB1dDsKKyAgICAgICAgfQorICAg
ICAgICBmcmFnbWVudCBSZXN1bHQgZm9vKCkKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQg
eCA9IDc7CisgICAgICAgICAgICBmbG9hdCBkeCA9IGRkeCh4KTsKKyAgICAgICAgICAgIGZsb2F0
IGR5ID0gZGR5KHgpOworICAgICAgICAgICAgUmVzdWx0IHI7CisgICAgICAgICAgICByLm91dHB1
dCA9IGZsb2F0NCgxLCAyLCAzLCA0KTsKKyAgICAgICAgICAgIHJldHVybiByOworICAgICAgICB9
CisgICAgYCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAgY29tcHV0ZSB2b2lkIGZvbygpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFsbE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7CisgICAg
ICAgICAgICBEZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygpOworICAgICAgICAgICAg
R3JvdXBNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygpOworICAgICAgICB9CisgICAgYCk7Cisg
ICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgc3RydWN0
IFJlc3VsdCB7CisgICAgICAgICAgICAgICAgZmxvYXQ0IG91dHB1dDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHZlcnRleCBSZXN1bHQgZm9vKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBmbG9hdCB4ID0gNzsKKyAgICAgICAgICAgICAgICBmbG9hdCBkeCA9IGRkeCh4KTsK
KyAgICAgICAgICAgICAgICBmbG9hdCBkeSA9IGRkeSh4KTsKKyAgICAgICAgICAgICAgICBSZXN1
bHQgcjsKKyAgICAgICAgICAgICAgICByLm91dHB1dCA9IGZsb2F0NCgxLCAyLCAzLCA0KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAg
ICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAg
ICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIHN0cnVjdCBSZXN1bHQgeworICAgICAgICAg
ICAgICAgIGZsb2F0NCBvdXRwdXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2ZXJ0ZXgg
UmVzdWx0IGZvbygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQWxsTWVtb3J5QmFy
cmllcldpdGhHcm91cFN5bmMoKTsKKyAgICAgICAgICAgICAgICBSZXN1bHQgcjsKKyAgICAgICAg
ICAgICAgICByLm91dHB1dCA9IGZsb2F0NCgxLCAyLCAzLCA0KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIGUgPT4gZSBpbnN0
YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVw
KGAKKyAgICAgICAgICAgIHN0cnVjdCBSZXN1bHQgeworICAgICAgICAgICAgICAgIGZsb2F0NCBv
dXRwdXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcmFnbWVudCBSZXN1bHQgZm9vKCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBbGxNZW1vcnlCYXJyaWVyV2l0aEdyb3Vw
U3luYygpOworICAgICAgICAgICAgICAgIFJlc3VsdCByOworICAgICAgICAgICAgICAgIHIub3V0
cHV0ID0gZmxvYXQ0KDEsIDIsIDMsIDQpOworICAgICAgICAgICAgICAgIHJldHVybiByOworICAg
ICAgICAgICAgfQorICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVF
cnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAg
ICAgc3RydWN0IFJlc3VsdCB7CisgICAgICAgICAgICAgICAgZmxvYXQ0IG91dHB1dDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHZlcnRleCBSZXN1bHQgZm9vKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBEZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygpOworICAg
ICAgICAgICAgICAgIFJlc3VsdCByOworICAgICAgICAgICAgICAgIHIub3V0cHV0ID0gZmxvYXQ0
KDEsIDIsIDMsIDQpOworICAgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgfQor
ICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAg
Y2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgc3RydWN0IFJl
c3VsdCB7CisgICAgICAgICAgICAgICAgZmxvYXQ0IG91dHB1dDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGZyYWdtZW50IFJlc3VsdCBmb28oKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIERldmljZU1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7CisgICAgICAgICAgICAg
ICAgUmVzdWx0IHI7CisgICAgICAgICAgICAgICAgci5vdXRwdXQgPSBmbG9hdDQoMSwgMiwgMywg
NCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgIGAp
LAorICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwo
CisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBzdHJ1Y3QgUmVzdWx0IHsKKyAg
ICAgICAgICAgICAgICBmbG9hdDQgb3V0cHV0OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
dmVydGV4IFJlc3VsdCBmb28oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEdyb3Vw
TWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMoKTsKKyAgICAgICAgICAgICAgICBSZXN1bHQgcjsK
KyAgICAgICAgICAgICAgICByLm91dHB1dCA9IGZsb2F0NCgxLCAyLCAzLCA0KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIGUg
PT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkg
PT4gZG9QcmVwKGAKKyAgICAgICAgICAgIHN0cnVjdCBSZXN1bHQgeworICAgICAgICAgICAgICAg
IGZsb2F0NCBvdXRwdXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcmFnbWVudCBSZXN1
bHQgZm9vKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBHcm91cE1lbW9yeUJhcnJp
ZXJXaXRoR3JvdXBTeW5jKCk7CisgICAgICAgICAgICAgICAgUmVzdWx0IHI7CisgICAgICAgICAg
ICAgICAgci5vdXRwdXQgPSBmbG9hdDQoMSwgMiwgMywgNCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgIGApLAorICAgICAgICBlID0+IGUgaW5zdGFu
Y2VvZiBXVHlwZUVycm9yKTsKK30KKwogdGVzdHMuY2FzdHMgPSBmdW5jdGlvbigpCiB7CiAgICAg
bGV0IHByb2dyYW0gPSBkb1ByZXAoYApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvV1N5bnRheEVycm9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
V1N5bnRheEVycm9yLmpzCmluZGV4IDc4MWIwZWU5YTdhZTlhZjJkOGZiNTRkY2I0MjllODBiMDdl
ZGU3MjkuLjg1YjU0NjVmZGI3M2MzNTZkMzQzNDRjZWNhM2FhMjJhYmYzMjEzNDAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1dTeW50YXhFcnJvci5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XU3ludGF4RXJyb3IuanMKQEAgLTMxLDUgKzMx
LDEwIEBAIGNsYXNzIFdTeW50YXhFcnJvciB7CiAgICAgICAgIHRoaXMub3JpZ2luU3RyaW5nID0g
b3JpZ2luU3RyaW5nOwogICAgICAgICB0aGlzLnN5bnRheEVycm9yTWVzc2FnZSA9IG1lc3NhZ2U7
CiAgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucGF5
bG9hZDsKKyAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL2luZGV4Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1s
CmluZGV4IDA4ZjRlZDViMDkzMWI2YmZiM2E0MjI4OTc4MzdlZWY4YTFhYzMyOTAuLmVlNWEyZjQ4
NjgxZThmNWZlZTczNDExY2FhNGJhZWY4YWE5ODA1MzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvaW5kZXguaHRtbApAQCAtMzMsNiArMzMsNyBAQAogPHNjcmlwdCBzcmM9IkNoZWNr
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja0xpdGVyYWxUeXBlcy5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tMb29wcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Q2hlY2tOYXRpdmVGdW5jU3RhZ2VzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja1Jl
Y3Vyc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tSZWN1cnNpdmVUeXBlcy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tSZXR1cm5zLmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350533</attachid>
            <date>2018-09-22 14:00:11 -0700</date>
            <delta_ts>2018-09-24 17:29:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189121-20180923060010.patch</filename>
            <type>text/plain</type>
            <size>21778</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MzY3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ExZmEyMzljNDU1ODk5ZTY4OGMyMjNmZmJmZTlhZGQy
OTliMTliNy4uYmY4M2ZiZDA3MGJhOWM4MWM2MThiZWQwYWRjYjA1OWM0NDQ2NzI1ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDE4LTA5LTIyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBOb3QgYWxsIGZ1bmN0aW9ucyBzaG91bGQgYmUgYWJsZSB0byBy
dW4gaW4gYWxsIHNoYWRlciBzdGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4OTEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGRkeCgpIGFuZCBkZHkoKSBjYW4gb25seSBydW4gaW4gZnJhZ21lbnQg
c2hhZGVycywgYW5kIHRoZSBiYXJyaWVyIGZ1bmN0aW9ucyBjYW4gb25seSBydW4gaW4gY29tcHV0
ZSBzaGFkZXJzLgorICAgICAgICBkZHhfY29hcnNlKCkgJiBmcmllbmRzIGFyZSBjdXJyZW50bHkg
aW1wbGVtZW50ZWQgYXMganVzdCBjYWxsaW5nIGRkeCgpLCBzbyB3ZSBvbmx5IG5lZWQgdG8gbW9k
aWZ5IHRob3NlIGZ1bmN0aW9ucworICAgICAgICBpZi93aGVuIHdlIG1ha2UgdGhlbSBuYXRpdmUu
CisKKyAgICAgICAgVGhlIHRleHR1cmUgc2FtcGxpbmcgZnVuY3Rpb25zIHRoYXQgdXNlIGltcGxp
Y2l0IGRlcml2YXRpdmVzIGNhbiBydW4gaW4gYW55IHNoYWRlciBzdGFnZSAtIHRoZXkganVzdCB1
c2UgYSBMT0Qgb2YKKyAgICAgICAgMC4gVGhlcmVmb3JlLCB0aG9zZSBmdW5jdGlvbnMgYXJlIHVu
Y2hhbmdlZC4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qczoKKyAg
ICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzOgorICAgICAgICAoTGF0ZUNo
ZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5cGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanM6CisgICAgICAgIChOYXRpdmVGdW5jKToKKyAgICAg
ICAgKE5hdGl2ZUZ1bmMucHJvdG90eXBlLmdldCBzdGFnZSk6CisgICAgICAgIChOYXRpdmVGdW5j
LnByb3RvdHlwZS50b0RlY2xTdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1BhcnNlLmpzOgorICAgICAgICAocGFyc2VGdW5jRGVjbCk6CisgICAgICAgIChwYXJzZU5h
dGl2ZUZ1bmMpOgorICAgICAgICAocGFyc2VOYXRpdmUpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1ByZXBhcmUuanM6CisgICAgICAgIChsZXQucHJlcGFyZSk6CisgICAgICAg
ICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbDoKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanM6CisgICAgICAgIChsZXQuc3RhbmRh
cmRMaWJyYXJ5KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRD
bG9uZXIuanM6CisgICAgICAgIChTdGF0ZW1lbnRDbG9uZXIucHJvdG90eXBlLnZpc2l0TmF0aXZl
RnVuYyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sOgorICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanM6CisgICAgICAgICh0ZXN0cy5z
aGFkZXJTdGFnZXMpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1dTeW50YXhF
cnJvci5qczoKKyAgICAgICAgKFdTeW50YXhFcnJvci5wcm90b3R5cGUudG9TdHJpbmcpOgorICAg
ICAgICAoV1N5bnRheEVycm9yKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9p
bmRleC5odG1sOgorCiAyMDE4LTA5LTIxICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dITFNMXSBMb2NhbCB2YXJpYWJsZXMgc2hvdWxkIGJlIHN0YXRpY2Fs
bHkgYWxsb2NhdGVkCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9B
bGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggZTI5MTBk
NzlkNmMyMzU5Yjc2MzE2MTk4MDMxNmFmZjA5NDIyNzBmMy4uZTZkZjJmY2UzNDNlN2Q2OTJmNzAz
ZDE2YWMzOTg1N2Y3MDRhY2IzOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvQWxsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpA
QCAtNTYsNiArNTYsNyBAQCBsb2FkKCJDYXN0cy5qcyIpOwogbG9hZCgiQ2hlY2suanMiKTsKIGxv
YWQoIkNoZWNrTGl0ZXJhbFR5cGVzLmpzIik7CiBsb2FkKCJDaGVja0xvb3BzLmpzIik7Citsb2Fk
KCJDaGVja05hdGl2ZUZ1bmNTdGFnZXMuanMiKTsKIGxvYWQoIkNoZWNrUmVjdXJzaW9uLmpzIik7
CiBsb2FkKCJDaGVja1JlY3Vyc2l2ZVR5cGVzLmpzIik7CiBsb2FkKCJDaGVja1JldHVybnMuanMi
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrTmF0aXZl
RnVuY1N0YWdlcy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrTmF0aXZl
RnVuY1N0YWdlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2MwNDdmODI0OWQyM2Q2ZjdjODRhMTk5ODExNWJh
NTc4ZDRhNDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQ2hlY2tOYXRpdmVGdW5jU3RhZ2VzLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworInVzZSBzdHJpY3QiOworCitmdW5jdGlv
biBjaGVja05hdGl2ZUZ1bmNTdGFnZXMocHJvZ3JhbSkKK3sKKyAgICBjbGFzcyBDaGVja05hdGl2
ZUZ1bmNTdGFnZXMgZXh0ZW5kcyBWaXNpdG9yIHsKKyAgICAgICAgY29uc3RydWN0b3IoZW50cnlQ
b2ludCkgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIHRoaXMuX2VudHJ5UG9p
bnQgPSBlbnRyeVBvaW50OworICAgICAgICB9CisKKyAgICAgICAgdmlzaXRDYWxsRXhwcmVzc2lv
bihub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoKG5vZGUuZnVuYyBpbnN0YW5jZW9m
IE5hdGl2ZUZ1bmMpICYmIG5vZGUuZnVuYy5zdGFnZSAmJiBub2RlLmZ1bmMuc3RhZ2UgIT0gdGhp
cy5fZW50cnlQb2ludC5zaGFkZXJUeXBlKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlw
ZUVycm9yKG5vZGUub3JpZ2luLCBgQ2Fubm90IGNhbGwgJHtub2RlLmZ1bmMuc3RhZ2V9IGZ1bmN0
aW9uICR7bm9kZS5mdW5jLm5hbWV9IGluc2lkZSAke3RoaXMuX2VudHJ5UG9pbnQuc2hhZGVUeXBl
fSBlbnRyeSBwb2ludGApOworICAgICAgICAgICAgbm9kZS5mdW5jLnZpc2l0KHRoaXMpOworICAg
ICAgICB9CisgICAgfQorICAgIGZvciAobGV0IFtuYW1lLCBmdW5jRGVmc10gb2YgcHJvZ3JhbS5m
dW5jdGlvbnMpIHsKKyAgICAgICAgZm9yIChsZXQgZnVuY0RlZiBvZiBmdW5jRGVmcykgeworICAg
ICAgICAgICAgaWYgKGZ1bmNEZWYuaXNFbnRyeVBvaW50KQorICAgICAgICAgICAgICAgIGZ1bmNE
ZWYudmlzaXQobmV3IENoZWNrTmF0aXZlRnVuY1N0YWdlcyhmdW5jRGVmKSk7CisgICAgICAgIH0K
KyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRy
aW5zaWNzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwpp
bmRleCA2OGIwZGQ1NzNmYzAyZWEzODUxNzk1NWQ4Mzg4YTY0NmFhOTBhNTk2Li40NDhjY2NiZGE4
ODBmZWZkOTk5MzNlMjUwMTZlNDU0NmFlMWMxMzU1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0ludHJpbnNpY3MuanMKQEAgLTcxMSwxMyArNzExLDEzIEBAIGNsYXNzIEludHJp
bnNpY3MgewogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAg
ICAgICAgICJuYXRpdmUgZmxvYXQgZGR4KGZsb2F0KSIsCisgICAgICAgICAgICAibmF0aXZlIGZy
YWdtZW50IGZsb2F0IGRkeChmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAg
ICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCgwKTsK
ICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAi
bmF0aXZlIGZsb2F0IGRkeShmbG9hdCkiLAorICAgICAgICAgICAgIm5hdGl2ZSBmcmFnbWVudCBm
bG9hdCBkZHkoZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAg
IGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goMCk7CiAgICAgICAg
ICAgICB9KTsKQEAgLTgxOCwxOSArODE4LDE5IEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAg
ICAgICAgfSk7CiAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUg
dm9pZCBBbGxNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygpIiwKKyAgICAgICAgICAgICJuYXRp
dmUgY29tcHV0ZSB2b2lkIEFsbE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCkiLAogICAgICAg
ICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IGZ1
bmN0aW9uKCkge307CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAot
ICAgICAgICAgICAgIm5hdGl2ZSB2b2lkIERldmljZU1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5j
KCkiLAorICAgICAgICAgICAgIm5hdGl2ZSBjb21wdXRlIHZvaWQgRGV2aWNlTWVtb3J5QmFycmll
cldpdGhHcm91cFN5bmMoKSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gZnVuY3Rpb24oKSB7fTsKICAgICAgICAgICAgIH0pOwog
CiAgICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIHZvaWQgR3JvdXBN
ZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygpIiwKKyAgICAgICAgICAgICJuYXRpdmUgY29tcHV0
ZSB2b2lkIEdyb3VwTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMoKSIsCiAgICAgICAgICAgICBm
dW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gZnVuY3Rpb24o
KSB7fTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvTGF0ZUNoZWNrZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9M
YXRlQ2hlY2tlci5qcwppbmRleCBlYjVlZTY5NjljMWQ5MzM2M2FlMTU2NWMxN2RjY2MwYWFiMGEx
YmMzLi5lYjFjZTkxNGE3OTAzOWVmZjkzMDEzNDg3Mzg3NGVhMjQ0OGM5YmJiIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MYXRlQ2hlY2tlci5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MYXRlQ2hlY2tlci5qcwpAQCAtNzAsNiArNzAsOCBA
QCBjbGFzcyBMYXRlQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJjb21wdXRl
IjoKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICJ0ZXN0IjoKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L05hdGl2ZUZ1bmMuanMKaW5kZXggZjA4NjUzNDJmMmVkZDdkZWM0N2JmNTJkMTU5ODYxMGMzMjRm
MGYyYy4uNWIwNjkxODVmNThjNDNmNDAzNDMxYjM1YmMyN2E3MDcyY2NlNjI1NiAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzCkBAIC0yNSw5ICsyNSwxMCBA
QAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBOYXRpdmVGdW5jIGV4dGVuZHMgRnVuYyB7Ci0gICAg
Y29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBpc0Nhc3Qs
IHNoYWRlclR5cGUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBw
YXJhbWV0ZXJzLCBpc0Nhc3QsIHNoYWRlclR5cGUsIHN0YWdlID0gbnVsbCkKICAgICB7CiAgICAg
ICAgIHN1cGVyKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBz
aGFkZXJUeXBlKTsKKyAgICAgICAgdGhpcy5fc3RhZ2UgPSBzdGFnZTsKICAgICAgICAgdGhpcy5p
c1Jlc3RyaWN0ZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5pbXBsZW1lbnRhdGlvbiA9IG51bGw7
CiAgICAgICAgIHRoaXMuX2ltcGxlbWVudGF0aW9uRGF0YSA9IG51bGw7CkBAIC0zNSwxMyArMzYs
MTggQEAgY2xhc3MgTmF0aXZlRnVuYyBleHRlbmRzIEZ1bmMgewogICAgIH0KIAogICAgIGdldCBp
c05hdGl2ZSgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBnZXQgc3RhZ2UoKSB7IHJldHVybiB0aGlz
Ll9zdGFnZTsgfQogCiAgICAgZ2V0IGltcGxlbWVudGF0aW9uRGF0YSgpIHsgcmV0dXJuIHRoaXMu
X2ltcGxlbWVudGF0aW9uRGF0YTsgfQogICAgIHNldCBpbXBsZW1lbnRhdGlvbkRhdGEobmV3SW1w
bERhdGEpIHsgdGhpcy5faW1wbGVtZW50YXRpb25EYXRhID0gbmV3SW1wbERhdGE7IH0KIAogICAg
IHRvRGVjbFN0cmluZygpCiAgICAgewotICAgICAgICByZXR1cm4gIm5hdGl2ZSAiICsgc3VwZXIu
dG9EZWNsU3RyaW5nKCk7CisgICAgICAgIGxldCByZXN1bHQgPSAibmF0aXZlICI7CisgICAgICAg
IGlmICh0aGlzLnN0YWdlKQorICAgICAgICAgICAgcmVzdWx0ICs9IGAke3RoaXMuc3RhZ2V9IGA7
CisgICAgICAgIHJlc3VsdCArPSBzdXBlci50b0RlY2xTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMK
aW5kZXggN2QxMzgxZjJlM2M1YTMwYWQxZTNkOTdmNjIzNTQ3YmNlOGIwNDVlNi4uOTMwOGQ2OTkz
YjEwNDRkMjUyZWY5NTBiMDVjZjEzZDdjMmE1MTIwNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUGFyc2UuanMKQEAgLTExNzEsNyArMTE3MSw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dy
YW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAg
ICAgIG5hbWUgPSAib3BlcmF0b3IgY2FzdCI7CiAgICAgICAgICAgICBpc0Nhc3QgPSB0cnVlOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2hhZGVyVHlwZSA9IHRyeUNvbnN1bWUoInZl
cnRleCIsICJmcmFnbWVudCIsICJ0ZXN0Iik7CisgICAgICAgICAgICBzaGFkZXJUeXBlID0gdHJ5
Q29uc3VtZSgidmVydGV4IiwgImZyYWdtZW50IiwgImNvbXB1dGUiLCAidGVzdCIpOwogICAgICAg
ICAgICAgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOwogICAgICAgICAgICAgaWYgKHJldHVyblR5
cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVy
blR5cGU7CkBAIC0xMjM3LDcgKzEyMzcsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmln
aW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gcGFyc2VOYXRpdmVGdW5jKCkKKyAgICBmdW5j
dGlvbiBwYXJzZU5hdGl2ZUZ1bmMoc3RhZ2UgPSBudWxsKQogICAgIHsKICAgICAgICAgbGV0IGZ1
bmMgPSBwYXJzZUZ1bmNEZWNsKCk7CiAgICAgICAgIGlmIChmdW5jIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQpAQCAtMTI0NSw3ICsxMjQ1LDcgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3Jp
Z2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBsZXQgbWF5
YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKLSAgICAgICAg
cmV0dXJuIG5ldyBOYXRpdmVGdW5jKGZ1bmMub3JpZ2luLCBmdW5jLm5hbWUsIGZ1bmMucmV0dXJu
VHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBmdW5jLmlzQ2FzdCwgZnVuYy5zaGFkZXJUeXBlKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyBOYXRpdmVGdW5jKGZ1bmMub3JpZ2luLCBmdW5jLm5hbWUsIGZ1bmMu
cmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBmdW5jLmlzQ2FzdCwgZnVuYy5zaGFkZXJUeXBl
LCBzdGFnZSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VOYXRpdmUoKQpAQCAtMTI2NSw3
ICsxMjY1LDEwIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwg
bGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKICAgICAgICAgICAgIHJldHVybiBOYXRpdmVUeXBlLmNyZWF0ZShvcmlnaW4sIG5hbWUudGV4
dCwgYXJncyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBhcnNlTmF0aXZlRnVuYygpOwor
ICAgICAgICBsZXQgc3RhZ2UgPSB0cnlDb25zdW1lKCJ2ZXJ0ZXgiLCAiZnJhZ21lbnQiLCAiY29t
cHV0ZSIpOworICAgICAgICBpZiAoc3RhZ2UpCisgICAgICAgICAgICBzdGFnZSA9IHN0YWdlLnRl
eHQ7CisgICAgICAgIHJldHVybiBwYXJzZU5hdGl2ZUZ1bmMoc3RhZ2UpOwogICAgIH0KIAogICAg
IGZ1bmN0aW9uIHBhcnNlUmVzdHJpY3RlZEZ1bmNEZWYoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1ByZXBhcmUuanMKaW5kZXggOWZlMzZiYThjN2I4NjFlZTJhY2QwYTMwODU0OGFiOWY2
ZjllM2RmMC4uYzExNThjZjdhZWFhNTExZTUzNjQ3ZmU1ZTlkYTBlNzZmN2I3NTJkNiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCkBAIC03MCw2ICs3MCw3IEBAIGxl
dCBwcmVwYXJlID0gKCgpID0+IHsKICAgICAgICAgYWxsb2NhdGVBdEVudHJ5UG9pbnRzKHByb2dy
YW0pOwogICAgICAgICBwcm9ncmFtLnZpc2l0KG5ldyBTdHJ1Y3RMYXlvdXRCdWlsZGVyKCkpOwog
ICAgICAgICBsYXRlQ2hlY2tBbmRMYXlvdXRCdWZmZXJzKHByb2dyYW0pOworICAgICAgICBjaGVj
a05hdGl2ZUZ1bmNTdGFnZXMocHJvZ3JhbSk7CiAgICAgICAgIGlmIChzaG91bGRJbmxpbmUpCiAg
ICAgICAgICAgICBpbmxpbmUocHJvZ3JhbSk7CiAgICAgICAgIHJldHVybiBwcm9ncmFtOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbCBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKaW5kZXggODkxODY3MTFmZjVjMDEw
ZjU3MjBlMTY4OGZmM2NhNWRmZGVlMjRlYS4uOGYyMzUwODI1MzMyZTEzOWQzMTg4YjRjYTNmMDVi
NjUxZTk3OWM5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJ
UlYuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sCkBA
IC0zOSw2ICszOSw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iQ2hlY2suanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJDaGVja0xpdGVyYWxUeXBlcy5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNoZWNrTG9vcHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJD
aGVja05hdGl2ZUZ1bmNTdGFnZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDaGVj
a1JlY3Vyc2lvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNoZWNrUmVjdXJzaXZl
VHlwZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDaGVja1JldHVybnMuanMiPjwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRh
cmRMaWJyYXJ5LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJy
YXJ5LmpzCmluZGV4IGNmMzA5M2JiZThjZjM3YjI5M2QzOGE3OWU2ZTc2OTExNmM0NDkzMzguLmQ4
OTNiMTIyN2RjZDQ2ODFhMjc0Mzk2ZmZjOGRmZmYzNTU2OThmMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKQEAgLTgwMyw3ICs4MDMs
OCBAQCBsZXQgc3RhbmRhcmRMaWJyYXJ5ID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAvLyBUaGVz
ZSBmdW5jdGlvbnMgYXJlIHVuYXJ5IGZsb2F0aW5nLXBvaW50IHNjYWxhciBmdW5jdGlvbnMsCiAg
ICAgICAgIC8vIHdoaWNoIGNhbiBhbHNvIGJlIGFwcGxpZWQgdG8gdmVjdG9ycyBhbmQgbWF0cmlj
ZXMgY29tcG9uZW50LXdpc2UuCiAgICAgICAgIChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxl
dCBuYXRpdmVGdW5jdGlvbnMgPSBbYGNvc2AsIGBzaW5gLCBgdGFuYCwgYGFjb3NgLCBgYXNpbmAs
IGBhdGFuYCwgYGNvc2hgLCBgc2luaGAsIGB0YW5oYCwgYGNlaWxgLCBgZXhwYCwgYGZsb29yYCwg
YGxvZ2AsIGByb3VuZGAsIGB0cnVuY2AsIGBkZHhgLCBgZGR5YF07CisgICAgICAgICAgICBsZXQg
bmF0aXZlRnVuY3Rpb25zID0gW2Bjb3NgLCBgc2luYCwgYHRhbmAsIGBhY29zYCwgYGFzaW5gLCBg
YXRhbmAsIGBjb3NoYCwgYHNpbmhgLCBgdGFuaGAsIGBjZWlsYCwgYGV4cGAsIGBmbG9vcmAsIGBs
b2dgLCBgcm91bmRgLCBgdHJ1bmNgXTsKKyAgICAgICAgICAgIGxldCBuYXRpdmVGcmFnbWVudEZ1
bmN0aW9ucyA9IFtgZGR4YCwgYGRkeWBdOwogICAgICAgICAgICAgbGV0IG5vbk5hdGl2ZUZ1bmN0
aW9ucyA9IFtgc3FydGAsIGBsb2cyYCwgYGxvZzEwYCwgYGZyYWNgLCBgZXhwMmAsIGBkZWdyZWVz
YCwgYHJhZGlhbnNgLCBgcmNwYCwgYHJzcXJ0YCwgYHNhdHVyYXRlYCwgYGRkeF9jb2Fyc2VgLCBg
ZGR4X2ZpbmVgLCBgZGR5X2NvYXJzZWAsIGBkZHlfZmluZWAsIGBmd2lkdGhgXTsKICAgICAgICAg
CiAgICAgICAgICAgICBmb3IgKGxldCBuYXRpdmVGdW5jdGlvbiBvZiBuYXRpdmVGdW5jdGlvbnMp
IHsKQEAgLTgxMyw2ICs4MTQsMTMgQEAgbGV0IHN0YW5kYXJkTGlicmFyeSA9IChmdW5jdGlvbigp
IHsKICAgICAgICAgICAgICAgICBwcmludChgfWApOwogICAgICAgICAgICAgfQogICAgICAgICAK
KyAgICAgICAgICAgIGZvciAobGV0IG5hdGl2ZUZ1bmN0aW9uIG9mIG5hdGl2ZUZyYWdtZW50RnVu
Y3Rpb25zKSB7CisgICAgICAgICAgICAgICAgcHJpbnQoYG5hdGl2ZSBmcmFnbWVudCBmbG9hdCAk
e25hdGl2ZUZ1bmN0aW9ufShmbG9hdCk7YCk7CisgICAgICAgICAgICAgICAgcHJpbnQoYGhhbGYg
JHtuYXRpdmVGdW5jdGlvbn0oaGFsZiB4KSB7YCk7CisgICAgICAgICAgICAgICAgcHJpbnQoYCAg
ICByZXR1cm4gaGFsZigke25hdGl2ZUZ1bmN0aW9ufShmbG9hdCh4KSkpO2ApOworICAgICAgICAg
ICAgICAgIHByaW50KGB9YCk7CisgICAgICAgICAgICB9CisgICAgICAgIAogICAgICAgICAgICAg
Zm9yIChsZXQgdHlwZSBvZiBbYGhhbGZgLCBgZmxvYXRgXSkgewogICAgICAgICAgICAgICAgIHBy
aW50KGAke3R5cGV9IHNxcnQoJHt0eXBlfSB4KSB7YCk7CiAgICAgICAgICAgICAgICAgcHJpbnQo
YCAgICByZXR1cm4gcG93KHgsIDAuNSk7YCk7CkBAIC04NjAsNyArODY4LDcgQEAgbGV0IHN0YW5k
YXJkTGlicmFyeSA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBwcmludChgICAgIHJl
dHVybiBhYnMoZGR4KHgpKSArIGFicyhkZHkoeCkpO2ApOwogICAgICAgICAgICAgICAgIHByaW50
KGB9YCk7CiAgICAgICAgIAotICAgICAgICAgICAgICAgIGZvciAobGV0IG91dHB1dEZ1bmN0aW9u
IG9mIG5hdGl2ZUZ1bmN0aW9ucy5jb25jYXQobm9uTmF0aXZlRnVuY3Rpb25zKSkgeworICAgICAg
ICAgICAgICAgIGZvciAobGV0IG91dHB1dEZ1bmN0aW9uIG9mIG5hdGl2ZUZ1bmN0aW9ucy5jb25j
YXQobmF0aXZlRnJhZ21lbnRGdW5jdGlvbnMuY29uY2F0KG5vbk5hdGl2ZUZ1bmN0aW9ucykpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHNpemUgb2YgWzIsIDMsIDRdKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBwcmludChgJHt0eXBlfSR7c2l6ZX0gJHtvdXRwdXRGdW5jdGlv
bn0oJHt0eXBlfSR7c2l6ZX0geCkge2ApOwogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQo
YCAgICAke3R5cGV9JHtzaXplfSByZXN1bHQ7YCk7CkBAIC0xNzc3LDkgKzE3ODUsOSBAQCBsZXQg
c3RhbmRhcmRMaWJyYXJ5ID0gKGZ1bmN0aW9uKCkgewogICAgICAgICB9CiAgICAgICAgIHByaW50
KCk7CiAgICAgICAgIAotICAgICAgICBwcmludChgbmF0aXZlIHZvaWQgQWxsTWVtb3J5QmFycmll
cldpdGhHcm91cFN5bmMoKTtgKTsKLSAgICAgICAgcHJpbnQoYG5hdGl2ZSB2b2lkIERldmljZU1l
bW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7YCk7Ci0gICAgICAgIHByaW50KGBuYXRpdmUgdm9p
ZCBHcm91cE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7YCk7CisgICAgICAgIHByaW50KGBu
YXRpdmUgY29tcHV0ZSB2b2lkIEFsbE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7YCk7Cisg
ICAgICAgIHByaW50KGBuYXRpdmUgY29tcHV0ZSB2b2lkIERldmljZU1lbW9yeUJhcnJpZXJXaXRo
R3JvdXBTeW5jKCk7YCk7CisgICAgICAgIHByaW50KGBuYXRpdmUgY29tcHV0ZSB2b2lkIEdyb3Vw
TWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMoKTtgKTsKICAgICAgICAgcHJpbnQoKTsKICAgICAg
ICAgCiAgICAgICAgIGZvciAobGV0IHR5cGUgb2YgW2B1Y2hhcmAsIGB1c2hvcnRgLCBgdWludGAs
IGBjaGFyYCwgYHNob3J0YCwgYGludGAsIGBoYWxmYCwgYGZsb2F0YF0pIHsKQEAgLTE4ODgsNiAr
MTg5Niw3IEBAIGxldCBzdGFuZGFyZExpYnJhcnkgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgcHJpbnQoKTsKKwogICAgICAgICAvKgogICAgICAgICBm
b3IgKGxldCB0eXBlIG9mIFtgdWludGAsIGBpbnRgXSkgewogICAgICAgICAgICAgZm9yIChsZXQg
ZnVuY3Rpb25OYW1lIG9mIFtgQWRkYCwgYEFuZGAsIGBFeGNoYW5nZWAsIGBNYXhgLCBgTWluYCwg
YE9yYCwgYFhvcmBdKSB7CkBAIC0xODk3LDYgKzE5MDYsOSBAQCBsZXQgc3RhbmRhcmRMaWJyYXJ5
ID0gKGZ1bmN0aW9uKCkgewogICAgICAgICB9CiAgICAgICAgIHByaW50KCk7CiAgICAgICAgICov
CisKKyAgICAgICAgLy8gWW91IG1pZ2h0IHRoaW5rIHRoYXQgdGhlIHNhbXBsaW5nIGZ1bmN0aW9u
cyB0aGF0IHJlbHkgb24gaW1wbGljaXQgZGVyaXZhdGl2ZXMgY2FuJ3QgYmUgY2FsbGVkIGluIHZl
cnRleCBzaGFkZXJzLgorICAgICAgICAvLyBIb3dldmVyLCB0aGV5IGRvIHdvcms7IHRoZXkganVz
dCBhIGxldmVsIG9mIDAuCiAgICAgICAgIGZvciAobGV0IHR5cGUgb2YgW2B1Y2hhcmAsIGB1c2hv
cnRgLCBgdWludGAsIGBjaGFyYCwgYHNob3J0YCwgYGludGAsIGBoYWxmYCwgYGZsb2F0YF0pIHsK
ICAgICAgICAgICAgIGZvciAobGV0IGxlbmd0aCBvZiBbYGAsIGAyYCwgYDNgLCBgNGBdKSB7CiAg
ICAgICAgICAgICAgICAgcHJpbnQoYG5hdGl2ZSAke3R5cGV9JHtsZW5ndGh9IFNhbXBsZShUZXh0
dXJlMUQ8JHt0eXBlfSR7bGVuZ3RofT4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTtgKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5q
cyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qcwppbmRl
eCAwZDA3MTVhOTg1NGRlZjFiZmQyYTgwOGM3NDA0MTEyYmExYTRhMGMxLi5jMTIxMGIyNjdiZDJk
ZjlkMjgxYThjMmJiYzQxZTM3OTVkNzBjMWNiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRDbG9uZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFN0
YXRlbWVudENsb25lciBleHRlbmRzIFJld3JpdGVyIHsKICAgICAgICAgICAgIG5vZGUub3JpZ2lu
LCBub2RlLm5hbWUsCiAgICAgICAgICAgICBub2RlLnJldHVyblR5cGUudmlzaXQodGhpcyksCiAg
ICAgICAgICAgICBub2RlLnBhcmFtZXRlcnMubWFwKHBhcmFtZXRlciA9PiBwYXJhbWV0ZXIudmlz
aXQodGhpcykpLAotICAgICAgICAgICAgbm9kZS5pc0Nhc3QsIG5vZGUuc2hhZGVyVHlwZSk7Cisg
ICAgICAgICAgICBub2RlLmlzQ2FzdCwgbm9kZS5zaGFkZXJUeXBlLCBub2RlLnN0YWdlKTsKICAg
ICAgICAgcmVzdWx0LmlzUmVzdHJpY3RlZCA9IG5vZGUuaXNSZXN0cmljdGVkOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRt
bAppbmRleCA5OGUzODUxZjE2OTlhYTZjZTY4YmZkNWFiODQ2MWFlOTdkZWVkMWMxLi44ZTlmNWVi
MWRlZWRjMzkwNjBlZTE2Y2FiY2M3ZDY0ZGIzZjQxZDhlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVGVzdC5odG1sCkBAIC0zMyw2ICszMyw3IEBACiA8c2NyaXB0IHNyYz0iQ2hlY2su
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrTGl0ZXJhbFR5cGVzLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJDaGVja0xvb3BzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJD
aGVja05hdGl2ZUZ1bmNTdGFnZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrUmVj
dXJzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja1JlY3Vyc2l2ZVR5cGVzLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja1JldHVybnMuanMiPjwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKaW5kZXggYmY5ZjU1ZTMxNTM3ODRiNmQwMDc0
YmUxYjlhOTE0OGJhMmU0MjQ5ZS4uNjc4MmRjY2U2NTk4NzJhZDdlYjFkMGVmNzk5NTIzZGRiZDUz
YzNhZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCkBAIC01NzU5LDYgKzU3
NTksMTMyIEBAIHRlc3RzLmFuZFJldHVybmVkQXJyYXlSZWYgPSBmdW5jdGlvbigpCiAgICAgY2hl
Y2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDM1NCk7CiB9
CiAKK3Rlc3RzLnNoYWRlclN0YWdlcyA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkb1ByZXAoYAorICAg
ICAgICBzdHJ1Y3QgUmVzdWx0IHsKKyAgICAgICAgICAgIGZsb2F0NCBvdXRwdXQ7CisgICAgICAg
IH0KKyAgICAgICAgZnJhZ21lbnQgUmVzdWx0IGZvbygpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZsb2F0IHggPSA3OworICAgICAgICAgICAgZmxvYXQgZHggPSBkZHgoeCk7CisgICAgICAgICAg
ICBmbG9hdCBkeSA9IGRkeSh4KTsKKyAgICAgICAgICAgIFJlc3VsdCByOworICAgICAgICAgICAg
ci5vdXRwdXQgPSBmbG9hdDQoMSwgMiwgMywgNCk7CisgICAgICAgICAgICByZXR1cm4gcjsKKyAg
ICAgICAgfQorICAgIGApOworICAgIGRvUHJlcChgCisgICAgICAgIGNvbXB1dGUgdm9pZCBmb28o
KQorICAgICAgICB7CisgICAgICAgICAgICBBbGxNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygp
OworICAgICAgICAgICAgRGV2aWNlTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMoKTsKKyAgICAg
ICAgICAgIEdyb3VwTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMoKTsKKyAgICAgICAgfQorICAg
IGApOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAg
IHN0cnVjdCBSZXN1bHQgeworICAgICAgICAgICAgICAgIGZsb2F0NCBvdXRwdXQ7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB2ZXJ0ZXggUmVzdWx0IGZvbygpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZmxvYXQgeCA9IDc7CisgICAgICAgICAgICAgICAgZmxvYXQgZHggPSBk
ZHgoeCk7CisgICAgICAgICAgICAgICAgZmxvYXQgZHkgPSBkZHkoeCk7CisgICAgICAgICAgICAg
ICAgUmVzdWx0IHI7CisgICAgICAgICAgICAgICAgci5vdXRwdXQgPSBmbG9hdDQoMSwgMiwgMywg
NCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgIGAp
LAorICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwo
CisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBzdHJ1Y3QgUmVzdWx0IHsKKyAg
ICAgICAgICAgICAgICBmbG9hdDQgb3V0cHV0OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
dmVydGV4IFJlc3VsdCBmb28oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFsbE1l
bW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7CisgICAgICAgICAgICAgICAgUmVzdWx0IHI7Cisg
ICAgICAgICAgICAgICAgci5vdXRwdXQgPSBmbG9hdDQoMSwgMiwgMywgNCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgIGApLAorICAgICAgICBlID0+
IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+
IGRvUHJlcChgCisgICAgICAgICAgICBzdHJ1Y3QgUmVzdWx0IHsKKyAgICAgICAgICAgICAgICBm
bG9hdDQgb3V0cHV0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJhZ21lbnQgUmVzdWx0
IGZvbygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQWxsTWVtb3J5QmFycmllcldp
dGhHcm91cFN5bmMoKTsKKyAgICAgICAgICAgICAgICBSZXN1bHQgcjsKKyAgICAgICAgICAgICAg
ICByLm91dHB1dCA9IGZsb2F0NCgxLCAyLCAzLCA0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9m
IFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAg
ICAgICAgICAgIHN0cnVjdCBSZXN1bHQgeworICAgICAgICAgICAgICAgIGZsb2F0NCBvdXRwdXQ7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2ZXJ0ZXggUmVzdWx0IGZvbygpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgRGV2aWNlTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMo
KTsKKyAgICAgICAgICAgICAgICBSZXN1bHQgcjsKKyAgICAgICAgICAgICAgICByLm91dHB1dCA9
IGZsb2F0NCgxLCAyLCAzLCA0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3Ip
OworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIHN0
cnVjdCBSZXN1bHQgeworICAgICAgICAgICAgICAgIGZsb2F0NCBvdXRwdXQ7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBmcmFnbWVudCBSZXN1bHQgZm9vKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBEZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygpOworICAgICAg
ICAgICAgICAgIFJlc3VsdCByOworICAgICAgICAgICAgICAgIHIub3V0cHV0ID0gZmxvYXQ0KDEs
IDIsIDMsIDQpOworICAgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgfQorICAg
ICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hl
Y2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgc3RydWN0IFJlc3Vs
dCB7CisgICAgICAgICAgICAgICAgZmxvYXQ0IG91dHB1dDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHZlcnRleCBSZXN1bHQgZm9vKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBHcm91cE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7CisgICAgICAgICAgICAgICAgUmVz
dWx0IHI7CisgICAgICAgICAgICAgICAgci5vdXRwdXQgPSBmbG9hdDQoMSwgMiwgMywgNCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgIGApLAorICAg
ICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAg
ICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBzdHJ1Y3QgUmVzdWx0IHsKKyAgICAgICAg
ICAgICAgICBmbG9hdDQgb3V0cHV0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJhZ21l
bnQgUmVzdWx0IGZvbygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgR3JvdXBNZW1v
cnlCYXJyaWVyV2l0aEdyb3VwU3luYygpOworICAgICAgICAgICAgICAgIFJlc3VsdCByOworICAg
ICAgICAgICAgICAgIHIub3V0cHV0ID0gZmxvYXQ0KDEsIDIsIDMsIDQpOworICAgICAgICAgICAg
ICAgIHJldHVybiByOworICAgICAgICAgICAgfQorICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBl
IGluc3RhbmNlb2YgV1R5cGVFcnJvcik7Cit9CisKIHRlc3RzLmNhc3RzID0gZnVuY3Rpb24oKQog
ewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1dTeW50YXhFcnJvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1dTeW50YXhFcnJvci5qcwppbmRleCA3ODFiMGVlOWE3YWU5YWYyZDhmYjU0ZGNiNDI5
ZTgwYjA3ZWRlNzI5Li44NWI1NDY1ZmRiNzNjMzU2ZDM0MzQ0Y2VjYTNhYTIyYWJmMzIxMzQwIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XU3ludGF4RXJyb3IuanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvV1N5bnRheEVycm9yLmpzCkBAIC0z
MSw1ICszMSwxMCBAQCBjbGFzcyBXU3ludGF4RXJyb3IgewogICAgICAgICB0aGlzLm9yaWdpblN0
cmluZyA9IG9yaWdpblN0cmluZzsKICAgICAgICAgdGhpcy5zeW50YXhFcnJvck1lc3NhZ2UgPSBt
ZXNzYWdlOwogICAgIH0KKworICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLnBheWxvYWQ7CisgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9pbmRleC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5k
ZXguaHRtbAppbmRleCAwOGY0ZWQ1YjA5MzFiNmJmYjNhNDIyODk3ODM3ZWVmOGExYWMzMjkwLi5l
ZTVhMmY0ODY4MWU4ZjVmZWU3MzQxMWNhYTRiYWVmOGFhOTgwNTM2IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKQEAgLTMzLDYgKzMzLDcgQEAKIDxzY3JpcHQgc3Jj
PSJDaGVjay5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tMaXRlcmFsVHlwZXMuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrTG9vcHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IkNoZWNrTmF0aXZlRnVuY1N0YWdlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Q2hlY2tSZWN1cnNpb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrUmVjdXJzaXZl
VHlwZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrUmV0dXJucy5qcyI+PC9zY3Jp
cHQ+Cg==
</data>
<flag name="review"
          id="367966"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="368119"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>