<?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>37877</bug_id>
          
          <creation_ts>2010-04-20 11:38:31 -0700</creation_ts>
          <short_desc>Autogenerate yarr character tables</short_desc>
          <delta_ts>2010-04-20 16:02:34 -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>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>loki</cc>
    
    <cc>ossy</cc>
    
    <cc>pvarga</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>214803</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-20 11:38:31 -0700</bug_when>
    <thetext>Autogenerate yarr character tables</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214806</commentid>
    <comment_count>1</comment_count>
      <attachid>53858</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-20 11:42:50 -0700</bug_when>
    <thetext>Created attachment 53858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214810</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-20 11:48:10 -0700</bug_when>
    <thetext>Attachment 53858 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
JavaScriptCore/assembler/X86Assembler.h:780:  cmpb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/assembler/X86Assembler.h:911:  testb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214814</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-04-20 11:52:34 -0700</bug_when>
    <thetext>Attachment 53858 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/1821004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214832</commentid>
    <comment_count>4</comment_count>
      <attachid>53862</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-20 12:10:33 -0700</bug_when>
    <thetext>Created attachment 53862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214841</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-20 12:16:11 -0700</bug_when>
    <thetext>Attachment 53862 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
JavaScriptCore/assembler/X86Assembler.h:780:  cmpb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/assembler/X86Assembler.h:911:  testb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214879</commentid>
    <comment_count>6</comment_count>
      <attachid>53862</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-04-20 12:47:00 -0700</bug_when>
    <thetext>Comment on attachment 53862
Patch

Please comment the CharacterClass implementation to explain that all classes have ranges; the table is optional.
Ideally I guess we should land the assembler changes first &amp; get the arm port before relying on them – but you should at least give the arm jit devs a heads up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214926</commentid>
    <comment_count>7</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-04-20 13:45:39 -0700</bug_when>
    <thetext>Thank you Gavin letting us know! You are really kind! As far as I see the normal Address and ExtendedAddress will be the same on ARM since both intptr_t and int are four bytes long. Hence we can simply reuse the 32 bit versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214955</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-20 14:36:12 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Thank you Gavin letting us know! You are really kind! As far as I see the
&gt; normal Address and ExtendedAddress will be the same on ARM since both intptr_t
&gt; and int are four bytes long. Hence we can simply reuse the 32 bit versions.

Can you come on irc? we do need additional instructions -- cmpb and testb for BaseIndex addresses</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214957</commentid>
    <comment_count>9</comment_count>
    <who name="Peter Varga">pvarga</who>
    <bug_when>2010-04-20 14:40:45 -0700</bug_when>
    <thetext>I noticed that you didn&apos;t updated Yarr Interpreter for this feature.
Thus the JavaScriptCore can&apos;t be compiled with Yarr Interpreter, because
the linker can&apos;t link the functions of builtin CharacterClasses.

./libjscore.a(RegexInterpreter.o): In function `JSC::Yarr::ByteCompiler::compile()&apos;:
RegexInterpreter.cpp:(.text._ZN3JSC4Yarr12ByteCompiler7compileEv[JSC::Yarr::ByteCompiler::compile()]+0x5e8): undefined reference to `JSC::Yarr::newlineCreate()&apos;
RegexInterpreter.cpp:(.text._ZN3JSC4Yarr12ByteCompiler7compileEv[JSC::Yarr::ByteCompiler::compile()]+0x633): undefined reference to `JSC::Yarr::wordcharCreate()&apos;
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214965</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-20 14:51:57 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I noticed that you didn&apos;t updated Yarr Interpreter for this feature.
&gt; Thus the JavaScriptCore can&apos;t be compiled with Yarr Interpreter, because
&gt; the linker can&apos;t link the functions of builtin CharacterClasses.
&gt; 
&gt; ./libjscore.a(RegexInterpreter.o): In function
&gt; `JSC::Yarr::ByteCompiler::compile()&apos;:
&gt; RegexInterpreter.cpp:(.text._ZN3JSC4Yarr12ByteCompiler7compileEv[JSC::Yarr::ByteCompiler::compile()]+0x5e8):
&gt; undefined reference to `JSC::Yarr::newlineCreate()&apos;
&gt; RegexInterpreter.cpp:(.text._ZN3JSC4Yarr12ByteCompiler7compileEv[JSC::Yarr::ByteCompiler::compile()]+0x633):
&gt; undefined reference to `JSC::Yarr::wordcharCreate()&apos;
&gt; ...

Fixed locally, but still not sure about what to do about the ARM backend as i&apos;m not sure how i can avoid build breakage without someone else doing the code :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214978</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-04-20 15:04:38 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Fixed locally, but still not sure about what to do about the ARM backend as i&apos;m
&gt; not sure how i can avoid build breakage without someone else doing the code :-(

I think Gábor Zoltán or Gábor will submit the ARM 
patch asap, they will start their day at 11pm in PST.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214980</commentid>
    <comment_count>12</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-20 15:05:58 -0700</bug_when>
    <thetext>Committed r57925: &lt;http://trac.webkit.org/changeset/57925&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214982</commentid>
    <comment_count>13</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-20 15:06:58 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Fixed locally, but still not sure about what to do about the ARM backend as i&apos;m
&gt; &gt; not sure how i can avoid build breakage without someone else doing the code :-(
&gt; 
&gt; I think Gábor Zoltán or Gábor will submit the ARM 
&gt; patch asap, they will start their day at 11pm in PST.

Gabor tells me everything builds on arm fine so have landed.  *crosses fingers*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215039</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-20 16:02:34 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57925 might have broken Leopard Intel Release (Tests)
The following changes are on the blame list:
http://trac.webkit.org/changeset/57924
http://trac.webkit.org/changeset/57925</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53858</attachid>
            <date>2010-04-20 11:42:50 -0700</date>
            <delta_ts>2010-04-20 12:10:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37877-20100420114249.patch</filename>
            <type>text/plain</type>
            <size>22739</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA1NGMxMzg5Li41ZDFjOTdkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTAtMDQtMjAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXRvZ2VuZXJhdGUgeWFy
ciBjaGFyYWN0ZXIgdGFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzg3NworCisgICAgICAgIFVzZSBhIHB5dGhvbiBzY3JpcHQgdG8gYXV0b21h
dGljYWxseSBnZW5lcmF0ZSBjaGFyYWN0ZXIgdGFibGVzCisgICAgICAgIGZvciB0aGUgYnVpbHRp
biBZQVJSIGNoYXJhY3RlciBjbGFzc2VzLiAgVGhpcyBhbGxvd3MgdXMgdG8gZ2VuZXJhdGUKKyAg
ICAgICAgYWN0dWFsIHRhYmxlcyBhcyB3ZWxsLCBieSB1c2luZyB0aGVzZSB0YWJsZXMgd2UgY2Fu
IGJvdGggaW5jcmVhc2UKKyAgICAgICAgcGVyZm9ybWFuY2Ugb2YgdGhlIGNoZWNrIChmb3IgY29t
cGxleCBidWlsdGlucykgYW5kIHJlZHVjZSB0aGUgYWN0dWFsCisgICAgICAgIGNvZGUgc2l6ZS4K
KworICAgICAgICA0LTglIHdpbiBvbiBzdHJpbmctdW5wYWNrLWNvZGUsIGJ1dCBsb3RzIG9mIG5v
aXNlIG9uIG90aGVyIHRlc3RzIHNvCisgICAgICAgIGknbSBvbmx5IGNvbmZpZGVudCBzYXlpbmcg
aXRzIGEgMSUgd2luIG92ZXJhbGwuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6RXh0ZW5kZWRBZGRyZXNzOjpFeHRlbmRlZEFkZHJlc3Mp
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlcjo6YnJhbmNoVGVzdDgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6YnJhbmNoVGVzdDgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoVGVzdDgpOgor
ICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjpjbXBiX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp0ZXN0Yl9pbSk6
CisgICAgICAgICogYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcDoKKyAgICAgICAgKEpTQzo6U2Ft
cGxpbmdUb29sOjpkdW1wKToKKyAgICAgICAgKiBjcmVhdGVfcmVnZXhfdGFibGVzOiBBZGRlZC4K
KyAgICAgICAgKiB5YXJyL1JlZ2V4Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpD
aGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAqIHlhcnIvUmVn
ZXhKSVQuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6bWF0Y2hDaGFy
YWN0ZXJDbGFzcyk6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4R2VuZXJhdG9yOjpnZW5lcmF0
ZVBhdHRlcm5DaGFyYWN0ZXJHcmVlZHkpOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVy
YXRvcjo6Z2VuZXJhdGVQYXR0ZXJuQ2hhcmFjdGVyTm9uR3JlZWR5KToKKyAgICAgICAgKEpTQzo6
WWFycjo6UmVnZXhHZW5lcmF0b3I6OmdlbmVyYXRlQ2hhcmFjdGVyQ2xhc3NHcmVlZHkpOgorICAg
ICAgICAqIHlhcnIvUmVnZXhQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OkNoYXJhY3Rl
ckNsYXNzVGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OllhcnI6OkNoYXJhY3RlckNsYXNz
VGFibGU6OkNoYXJhY3RlckNsYXNzVGFibGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpDaGFyYWN0
ZXJDbGFzczo6Q2hhcmFjdGVyQ2xhc3MpOgorCiAyMDEwLTA0LTIwICBDc2FiYSBPc3p0cm9nb27D
oWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIHNwZWN1bGF0
aXZlIGJ1aWxkZml4IGZvciBXaW5DRSBhZnRlciByNTc4ODIKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDllYWNjYWIuLjRmYzljYWQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtNDgsNiArNDgsNyBAQCBhbGwgOiBcCiAgICAgUmVnRXhwT2JqZWN0Lmx1dC5oIFwK
ICAgICBTdHJpbmdQcm90b3R5cGUubHV0LmggXAogICAgIGRvY3MvYnl0ZWNvZGUuaHRtbCBcCisg
ICAgUmVnRXhwSml0VGFibGVzLmggXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMK
QEAgLTc0LDMgKzc1LDcgQEAgY2hhcnRhYmxlcy5jIDogZGZ0YWJsZXMKIAogZG9jcy9ieXRlY29k
ZS5odG1sOiBtYWtlLWJ5dGVjb2RlLWRvY3MucGwgSW50ZXJwcmV0ZXIuY3BwIAogCXBlcmwgJF4g
JEAKKworI2NoYXJhY3RlciB0YWJsZXMgZm9yIFlhcnIKK1JlZ0V4cEppdFRhYmxlcy5oOiBjcmVh
dGVfcmVnZXhfdGFibGVzCisJcHl0aG9uICReID4gJEAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA5ZjVk
MWIuLjNhZjU4NjcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODMyLDYgKzgzMiw4IEBACiAJCTk2OUEw
OTIyMEVEMUUwOUMwMEYxRjY4MSAvKiBDb21wbGV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBsZXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5NkRENzM3ODBGOURBMzEwMDAyN0ZCQ0MgLyogVk1UYWdzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNVGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5N0Y2OTAzQTExNjlERjdGMDBBNkJCNDYgLyogVGVybWluYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUZXJtaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3MThGNjFBMTE3NTRBMjEwMDI0NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwSml0VGFibGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVh
dGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBjcmVh
dGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzI3MDA3NzBE
QUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU05vdEFuT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3MjcwMDc4MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm90QW5PYmplY3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNzI3MDFCMzBEQURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0aW9u
SGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25IZWxw
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDkyLDYgKzEwOTQsNyBAQAog
CQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogSmF2YVNjcmlwdENvcmUgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3MThGODIxMTE3OEVCNEIwMDI0
NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovLAogCQkJCTkzN0I2M0NDMDlFNzY2RDIwMEE2
NzFERCAvKiBEZXJpdmVkU291cmNlcy5tYWtlICovLAogCQkJCUY2OTJBODU0MDI1NTU5N0QwMUZG
NjBGNyAvKiBjcmVhdGVfaGFzaF90YWJsZSAqLywKIAkJCQkxNEI4RUNBNjBBNTY1Mzk4MDA2MkJF
NTQgLyogSmF2YVNjcmlwdENvcmUuZXhwICovLApAQCAtMTI4Myw2ICsxMjg2LDcgQEAKIAkJNjUw
RkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3
IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovLAogCQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAv
KiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQk2NUIxNzRCRTA5RDEwMDAyMDA4MjAzMzkg
LyogY2hhcnRhYmxlcy5jICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJDN0U4MiAvKiBEYXRl
UHJvdG90eXBlLmx1dC5oICovLApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBiL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggYWFkNzBlNC4uZjk2ZTM0YSAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCkBAIC04MSw2
ICs4MSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIGludDMyX3Qgb2Zmc2V0OwogICAgIH07CiAKKyAg
ICBzdHJ1Y3QgRXh0ZW5kZWRBZGRyZXNzIHsKKyAgICAgICAgZXhwbGljaXQgRXh0ZW5kZWRBZGRy
ZXNzKFJlZ2lzdGVySUQgYmFzZSwgaW50cHRyX3Qgb2Zmc2V0ID0gMCkKKyAgICAgICAgICAgIDog
YmFzZShiYXNlKQorICAgICAgICAgICAgLCBvZmZzZXQob2Zmc2V0KQorICAgICAgICB7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIFJlZ2lzdGVySUQgYmFzZTsKKyAgICAgICAgaW50cHRy
X3Qgb2Zmc2V0OworICAgIH07CisKICAgICAvLyBJbXBsaWNpdEFkZHJlc3M6CiAgICAgLy8KICAg
ICAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgZm9yIGV4cGxpY2l0ICdsb2FkJyBhbmQgJ3N0b3JlJyBv
cGVyYXRpb25zCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaCBiL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4
IGU2ZjY5OGYuLmNlMWJlNzggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCkBAIC0zMzEsNiArMzMxLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVy
biBicmFuY2hTdWIzMihjb25kLCBpbW0sIGRlc3QpOwogICAgIH0KKyAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlckJhc2U6OmJyYW5jaFRlc3Q4OworICAgIEp1bXAgYnJhbmNoVGVzdDgoQ29uZGl0aW9u
IGNvbmQsIEV4dGVuZGVkQWRkcmVzcyBhZGRyZXNzLCBJbW0zMiBtYXNrID0gSW1tMzIoLTEpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoVGVzdDgoY29u
ZCwgQWRkcmVzcyhhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KSwgbWFzayk7CisgICAgfQog
I2VuZGlmCiAKIH07CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaCBiL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oCmluZGV4IDA3M2Y1NjMuLjI3YzJmMTUgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC03MzEsNiAr
NzMxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RiX2ltKG1hc2su
bV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgICAgIHJldHVybiBK
dW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CisgICAgCisg
ICAgSnVtcCBicmFuY2hUZXN0OChDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIElt
bTMyIG1hc2sgPSBJbW0zMigtMSkpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gWmVy
bykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0x
KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wYl9pbSgwLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGJfaW0obWFzay5tX3ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAg
ICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAg
IH0KIAogICAgIEp1bXAganVtcCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCBiMzZjMzIzLi4zMzllYWE0IDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtNDA5
LDYgKzQwOSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYWJlbDsKICAgICB9CiAKKyAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDg7CisgICAgSnVtcCBi
cmFuY2hUZXN0OChDb25kaXRpb24gY29uZCwgRXh0ZW5kZWRBZGRyZXNzIGFkZHJlc3MsIEltbTMy
IG1hc2sgPSBJbW0zMigtMSkpCisgICAgeworICAgICAgICBJbW1QdHIgYWRkcihyZWludGVycHJl
dF9jYXN0PHZvaWQqPihhZGRyZXNzLm9mZnNldCkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6bW92ZShhZGRyLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEJhc2VJbmRleChzY3JhdGNo
UmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwgVGltZXNPbmUpLCBtYXNrKTsKKyAgICB9CisKICAgICBM
YWJlbCBsb2FkUHRyV2l0aFBhdGNoVG9MRUEoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBMYWJlbCBsYWJlbCh0aGlzKTsKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaAppbmRleCA1N2I4MTFjLi4xNGEwMmY3IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC03NzYsNiArNzc2LDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1Bf
Q01QLCBiYXNlLCBvZmZzZXQpOwogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7
CiAgICAgfQorICAgIAorICAgIHZvaWQgY21wYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4
KGltbSk7CisgICAgfQogCiAgICAgdm9pZCBjbXBsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAgIHsKQEAgLTkw
MSw2ICs5MDcsMTIgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAzX0ViSWIsIEdST1VQM19PUF9URVNULCBiYXNlLCBvZmZzZXQpOwogICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgdGVzdGJfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAz
X0ViSWIsIEdST1VQM19PUF9URVNULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CiAKICAgICB2b2lkIHRlc3Rs
X2kzMm0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU2FtcGxpbmdUb29sLmNwcCBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9v
bC5jcHAKaW5kZXggM2YwYmFiYy4uODUyMmU0NSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
YW1wbGluZ1Rvb2wuY3BwCkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBTYW1wbGluZ1Rvb2w6OmR1
bXAoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgICAgIGlmIChibG9ja1BlcmNlbnQgPj0gMSkgewog
ICAgICAgICAgICAgLy9JbnN0cnVjdGlvbiogY29kZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsKLSAgICAgICAgICAgIHByaW50ZigiIyVkOiAlczolZDogJWQgLyAlbGxkICgl
LjNmJSUpXG4iLCBpICsgMSwgcmVjb3JkLT5tX2V4ZWN1dGFibGUtPnNvdXJjZVVSTCgpLlVURjhT
dHJpbmcoKS5jX3N0cigpLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChl
eGVjLCAwKSwgcmVjb3JkLT5tX3NhbXBsZUNvdW50LCBtX3NhbXBsZUNvdW50LCBibG9ja1BlcmNl
bnQpOworICAgICAgICAgICAgcHJpbnRmKCIjJWQ6ICVzOiVkOiAlZCAvICVsbGQgKCUuM2YlJSlc
biIsIGkgKyAxLCByZWNvcmQtPm1fZXhlY3V0YWJsZS0+c291cmNlVVJMKCkuYXNjaWkoKSwgY29k
ZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoZXhlYywgMCksIHJlY29yZC0+bV9z
YW1wbGVDb3VudCwgbV9zYW1wbGVDb3VudCwgYmxvY2tQZXJjZW50KTsKICAgICAgICAgICAgIGlm
IChpIDwgMTApIHsKICAgICAgICAgICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLHVuc2lnbmVkPiBs
aW5lQ291bnRzOwogICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcChleGVjKTsKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9yZWdleF90YWJsZXMgYi9KYXZhU2NyaXB0Q29y
ZS9jcmVhdGVfcmVnZXhfdGFibGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjJkOTliZDEKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfcmVnZXhf
dGFibGVzCkBAIC0wLDAgKzEsODkgQEAKK3R5cGVzID0geworICAgICJ3b3JkY2hhciI6IHsgIlVz
ZVRhYmxlIiA6IFRydWUsICJkYXRhIjogWydfJywgKCcwJywnOScpLCAoJ0EnLCAnWicpLCAoJ2En
LCd6JyldfSwKKyAgICAibm9ud29yZGNoYXIiOiB7ICJVc2VUYWJsZSIgOiBUcnVlLCAiSW52ZXJz
ZSI6ICJ3b3JkY2hhciIsICJkYXRhIjogWydgJywgKDAsIG9yZCgnMCcpIC0gMSksIChvcmQoJzkn
KSArIDEsIG9yZCgnQScpIC0gMSksIChvcmQoJ1onKSArIDEsIG9yZCgnXycpIC0gMSksIChvcmQo
J3onKSArIDEsIDB4ZmZmZildfSwKKyAgICAibmV3bGluZSI6IHsgIlVzZVRhYmxlIiA6IEZhbHNl
LCAiZGF0YSI6IFsnXG4nLCAnXHInLCAweDIwMjgsIDB4MjAyOV19LAorICAgICJzcGFjZXMiOiB7
ICJVc2VUYWJsZSIgOiBUcnVlLCAiZGF0YSI6IFsnICcsICgnXHQnLCAnXHInKSwgMHhhMCwgMHgx
NjgwLCAweDE4MGUsIDB4MjAyOCwgMHgyMDI5LCAweDIwMmYsIDB4MjA1ZiwgMHgzMDAwLCAoMHgy
MDAwLCAweDIwMGEpXX0sCisgICAgIm5vbnNwYWNlcyI6IHsgIlVzZVRhYmxlIiA6IFRydWUsICJJ
bnZlcnNlIjogInNwYWNlcyIsICJkYXRhIjogWygwLCBvcmQoJ1x0JykgLSAxKSwgKG9yZCgnXHIn
KSArIDEsIG9yZCgnICcpIC0gMSksIChvcmQoJyAnKSArIDEsIDB4MDA5ZiksICgweDAwYTEsIDB4
MTY3ZiksICgweDE2ODEsIDB4MTgwZCksICgweDE4MGYsIDB4MWZmZiksICgweDIwMGIsIDB4MjAy
NyksICgweDIwMmEsIDB4MjAyZSksICgweDIwMzAsIDB4MjA1ZSksICgweDIwNjAsIDB4MmZmZiks
ICgweDMwMDEsIDB4ZmZmZildfSwKKyAgICAiZGlnaXRzIjogeyAiVXNlVGFibGUiIDogRmFsc2Us
ICJkYXRhIjogWygnMCcsICc5JyldfSwKKyAgICAibm9uZGlnaXRzIjogeyAiVXNlVGFibGUiIDog
RmFsc2UsICJJbnZlcnNlIjogImRpZ2l0cyIsICJkYXRhIjogWygwLCBvcmQoJzAnKSAtIDEpLCAo
b3JkKCc5JykgKyAxLCAweGZmZmYpXSB9Cit9CitlbnRyaWVzUGVyTGluZSA9IDUwCithcnJheXMg
PSAiIjsKK2Z1bmN0aW9ucyA9ICIiOworCitmb3IgbmFtZSwgY2xhc3NlcyBpbiB0eXBlcy5pdGVt
cygpOgorICAgIHJhbmdlcyA9IFtdOworICAgIHNpemUgPSAwOworICAgIGZvciBfY2xhc3MgaW4g
Y2xhc3Nlc1siZGF0YSJdOgorICAgICAgICBpZiB0eXBlKF9jbGFzcykgPT0gc3RyOgorICAgICAg
ICAgICAgcmFuZ2VzLmFwcGVuZCgob3JkKF9jbGFzcyksIG9yZChfY2xhc3MpKSkKKyAgICAgICAg
ZWxpZiB0eXBlKF9jbGFzcykgPT0gaW50OgorICAgICAgICAgICAgcmFuZ2VzLmFwcGVuZCgoX2Ns
YXNzLCBfY2xhc3MpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgKG1pbiwgbWF4KSA9IF9j
bGFzczsKKyAgICAgICAgICAgIGlmIHR5cGUobWluKSA9PSBzdHI6CisgICAgICAgICAgICAgICAg
bWluID0gb3JkKG1pbikKKyAgICAgICAgICAgIGlmIHR5cGUobWF4KSA9PSBzdHI6CisgICAgICAg
ICAgICAgICAgbWF4ID0gb3JkKG1heCkKKyAgICAgICAgICAgIGlmIG1heCA+IDB4N2YgYW5kIG1p
biA8PSAweDdmOgorICAgICAgICAgICAgICAgIHJhbmdlcy5hcHBlbmQoKG1pbiwgMHg3ZikpCisg
ICAgICAgICAgICAgICAgbWluID0gMHg4MAorICAgICAgICAgICAgcmFuZ2VzLmFwcGVuZCgobWlu
LG1heCkpCisgICAgcmFuZ2VzLnNvcnQoKTsKKyAgICAKKyAgICBpZiBjbGFzc2VzWyJVc2VUYWJs
ZSJdIGFuZCAobm90ICJJbnZlcnNlIiBpbiBjbGFzc2VzKToKKyAgICAgICAgYXJyYXkgPSAoInN0
YXRpYyBjb25zdCBjaGFyIF8lc0RhdGFbNjU1MzZdID0ge1xuIiAlIG5hbWUpOworICAgICAgICBp
ID0gMAorICAgICAgICBmb3IgKG1pbixtYXgpIGluIHJhbmdlczoKKyAgICAgICAgICAgIHdoaWxl
IGkgPCBtaW46CisgICAgICAgICAgICAgICAgaSA9IGkgKyAxCisgICAgICAgICAgICAgICAgYXJy
YXkgKz0gKCcwLCcpCisgICAgICAgICAgICAgICAgaWYgKGkgJSBlbnRyaWVzUGVyTGluZSA9PSAw
KSBhbmQgKGkgIT0gMCk6CisgICAgICAgICAgICAgICAgICAgIGFycmF5ICs9ICgnXG4nKQorICAg
ICAgICAgICAgd2hpbGUgaSA8PSBtYXg6CisgICAgICAgICAgICAgICAgaSA9IGkgKyAxCisgICAg
ICAgICAgICAgICAgaWYgKGkgPT0gNjU1MzYpOgorICAgICAgICAgICAgICAgICAgICBhcnJheSAr
PSAoIjEiKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGFycmF5
ICs9ICgnMSwnKQorICAgICAgICAgICAgICAgIGlmIChpICUgZW50cmllc1BlckxpbmUgPT0gMCkg
YW5kIChpICE9IDApOgorICAgICAgICAgICAgICAgICAgICBhcnJheSArPSAoJ1xuJykKKyAgICAg
ICAgd2hpbGUgaSA8IDB4ZmZmZjoKKyAgICAgICAgICAgIGFycmF5ICs9ICgiMCwiKQorICAgICAg
ICAgICAgaSA9IGkgKyAxOworICAgICAgICAgICAgaWYgKGkgJSBlbnRyaWVzUGVyTGluZSA9PSAw
KSBhbmQgKGkgIT0gMCk6CisgICAgICAgICAgICAgICAgYXJyYXkgKz0gKCdcbicpCisgICAgICAg
IGlmIGkgPT0gMHhmZmZmOgorICAgICAgICAgICAgYXJyYXkgKz0gKCIwIikKKyAgICAgICAgYXJy
YXkgKz0gKCJcbn07XG5cbiIpOworICAgICAgICBhcnJheXMgKz0gYXJyYXkKKyAgICAKKyAgICAj
IEdlbmVyYXRlIGNyZWF0ZUZ1bmN0aW9uOgorICAgIGZ1bmN0aW9uID0gIiI7CisgICAgZnVuY3Rp
b24gKz0gKCJDaGFyYWN0ZXJDbGFzcyogJXNDcmVhdGUoKVxuIiAlIG5hbWUpCisgICAgZnVuY3Rp
b24gKz0gKCJ7XG4iKQorICAgIGlmIGNsYXNzZXNbIlVzZVRhYmxlIl06CisgICAgICAgIGlmICJJ
bnZlcnNlIiBpbiBjbGFzc2VzOgorICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgQ2hhcmFj
dGVyQ2xhc3MqIGNoYXJhY3RlckNsYXNzID0gbmV3IENoYXJhY3RlckNsYXNzKENoYXJhY3RlckNs
YXNzVGFibGU6OmNyZWF0ZShfJXNEYXRhLCB0cnVlKSk7XG4iICUgKGNsYXNzZXNbIkludmVyc2Ui
XSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBDaGFyYWN0
ZXJDbGFzcyogY2hhcmFjdGVyQ2xhc3MgPSBuZXcgQ2hhcmFjdGVyQ2xhc3MoQ2hhcmFjdGVyQ2xh
c3NUYWJsZTo6Y3JlYXRlKF8lc0RhdGEsIGZhbHNlKSk7XG4iICUgKG5hbWUpKQorICAgIGVsc2U6
CisgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIENoYXJhY3RlckNsYXNzKiBjaGFyYWN0ZXJDbGFz
cyA9IG5ldyBDaGFyYWN0ZXJDbGFzcygwKTtcbiIpCisgICAgZm9yIChtaW4sIG1heCkgaW4gcmFu
Z2VzOgorICAgICAgICBpZiAobWluID09IG1heCk6CisgICAgICAgICAgICBpZiAobWluID4gMTI3
KToKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBjaGFyYWN0ZXJDbGFzcy0+bV9t
YXRjaGVzVW5pY29kZS5hcHBlbmQoMHglMDR4KTtcbiIgJSBtaW4pCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGNoYXJhY3RlckNsYXNzLT5tX21h
dGNoZXMuYXBwZW5kKDB4JTAyeCk7XG4iICUgbWluKQorICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgaWYgKG1pbiA+IDEyNykgb3IgKG1heCA+IDEyNyk6CisgICAgICAgICAgICBmdW5jdGlv
biArPSAoIiAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0
ZXJSYW5nZSgweCUwNHgsIDB4JTA0eCkpO1xuIiAlIChtaW4sIG1heCkpCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMu
YXBwZW5kKENoYXJhY3RlclJhbmdlKDB4JTAyeCwgMHglMDJ4KSk7XG4iICUgKG1pbiwgbWF4KSkK
KyAgICBmdW5jdGlvbiArPSAoIiAgICByZXR1cm4gY2hhcmFjdGVyQ2xhc3M7XG4iKQorICAgIGZ1
bmN0aW9uICs9ICgifVxuXG4iKQorICAgIGZ1bmN0aW9ucyArPSBmdW5jdGlvbgorCitwcmludChh
cnJheXMpCitwcmludChmdW5jdGlvbnMpCisKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3lh
cnIvUmVnZXhDb21waWxlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4Q29tcGlsZXIu
Y3BwCmluZGV4IDZhZDAxMDYuLmU2ZmY2ODIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3lh
cnIvUmVnZXhDb21waWxlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUveWFyci9SZWdleENvbXBp
bGVyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKIAogICAgIENoYXJhY3RlckNsYXNz
KiBjaGFyQ2xhc3MoKQogICAgIHsKLSAgICAgICAgQ2hhcmFjdGVyQ2xhc3MqIGNoYXJhY3RlckNs
YXNzID0gbmV3IENoYXJhY3RlckNsYXNzKCk7CisgICAgICAgIENoYXJhY3RlckNsYXNzKiBjaGFy
YWN0ZXJDbGFzcyA9IG5ldyBDaGFyYWN0ZXJDbGFzcygwKTsKIAogICAgICAgICBjaGFyYWN0ZXJD
bGFzcy0+bV9tYXRjaGVzLmFwcGVuZChtX21hdGNoZXMpOwogICAgICAgICBjaGFyYWN0ZXJDbGFz
cy0+bV9yYW5nZXMuYXBwZW5kKG1fcmFuZ2VzKTsKQEAgLTIzMywxMDUgKzIzMyw2IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPENoYXJhY3RlclJhbmdlPiBtX3Jhbmdlc1VuaWNvZGU7CiB9OwogCi0K
LUNoYXJhY3RlckNsYXNzKiBuZXdsaW5lQ3JlYXRlKCkKLXsKLSAgICBDaGFyYWN0ZXJDbGFzcyog
Y2hhcmFjdGVyQ2xhc3MgPSBuZXcgQ2hhcmFjdGVyQ2xhc3MoKTsKLQotICAgIGNoYXJhY3RlckNs
YXNzLT5tX21hdGNoZXMuYXBwZW5kKCdcbicpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX21hdGNo
ZXMuYXBwZW5kKCdccicpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX21hdGNoZXNVbmljb2RlLmFw
cGVuZCgweDIwMjgpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX21hdGNoZXNVbmljb2RlLmFwcGVu
ZCgweDIwMjkpOwotICAgIAotICAgIHJldHVybiBjaGFyYWN0ZXJDbGFzczsKLX0KLQotQ2hhcmFj
dGVyQ2xhc3MqIGRpZ2l0c0NyZWF0ZSgpCi17Ci0gICAgQ2hhcmFjdGVyQ2xhc3MqIGNoYXJhY3Rl
ckNsYXNzID0gbmV3IENoYXJhY3RlckNsYXNzKCk7Ci0KLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9y
YW5nZXMuYXBwZW5kKENoYXJhY3RlclJhbmdlKCcwJywgJzknKSk7Ci0gICAgCi0gICAgcmV0dXJu
IGNoYXJhY3RlckNsYXNzOwotfQotCi1DaGFyYWN0ZXJDbGFzcyogc3BhY2VzQ3JlYXRlKCkKLXsK
LSAgICBDaGFyYWN0ZXJDbGFzcyogY2hhcmFjdGVyQ2xhc3MgPSBuZXcgQ2hhcmFjdGVyQ2xhc3Mo
KTsKLQotICAgIGNoYXJhY3RlckNsYXNzLT5tX21hdGNoZXMuYXBwZW5kKCcgJyk7Ci0gICAgY2hh
cmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgnXHQnLCAnXHInKSk7
Ci0gICAgY2hhcmFjdGVyQ2xhc3MtPm1fbWF0Y2hlc1VuaWNvZGUuYXBwZW5kKDB4MDBhMCk7Ci0g
ICAgY2hhcmFjdGVyQ2xhc3MtPm1fbWF0Y2hlc1VuaWNvZGUuYXBwZW5kKDB4MTY4MCk7Ci0gICAg
Y2hhcmFjdGVyQ2xhc3MtPm1fbWF0Y2hlc1VuaWNvZGUuYXBwZW5kKDB4MTgwZSk7Ci0gICAgY2hh
cmFjdGVyQ2xhc3MtPm1fbWF0Y2hlc1VuaWNvZGUuYXBwZW5kKDB4MjAyOCk7Ci0gICAgY2hhcmFj
dGVyQ2xhc3MtPm1fbWF0Y2hlc1VuaWNvZGUuYXBwZW5kKDB4MjAyOSk7Ci0gICAgY2hhcmFjdGVy
Q2xhc3MtPm1fbWF0Y2hlc1VuaWNvZGUuYXBwZW5kKDB4MjAyZik7Ci0gICAgY2hhcmFjdGVyQ2xh
c3MtPm1fbWF0Y2hlc1VuaWNvZGUuYXBwZW5kKDB4MjA1Zik7Ci0gICAgY2hhcmFjdGVyQ2xhc3Mt
Pm1fbWF0Y2hlc1VuaWNvZGUuYXBwZW5kKDB4MzAwMCk7Ci0gICAgY2hhcmFjdGVyQ2xhc3MtPm1f
cmFuZ2VzVW5pY29kZS5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHgyMDAwLCAweDIwMGEpKTsKLSAg
ICAKLSAgICByZXR1cm4gY2hhcmFjdGVyQ2xhc3M7Ci19Ci0KLUNoYXJhY3RlckNsYXNzKiB3b3Jk
Y2hhckNyZWF0ZSgpCi17Ci0gICAgQ2hhcmFjdGVyQ2xhc3MqIGNoYXJhY3RlckNsYXNzID0gbmV3
IENoYXJhY3RlckNsYXNzKCk7Ci0KLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzLmFwcGVu
ZCgnXycpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hhcmFjdGVyUmFu
Z2UoJzAnLCAnOScpKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBwZW5kKENoYXJh
Y3RlclJhbmdlKCdBJywgJ1onKSk7Ci0gICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLmFwcGVu
ZChDaGFyYWN0ZXJSYW5nZSgnYScsICd6JykpOwotICAgIAotICAgIHJldHVybiBjaGFyYWN0ZXJD
bGFzczsKLX0KLQotQ2hhcmFjdGVyQ2xhc3MqIG5vbmRpZ2l0c0NyZWF0ZSgpCi17Ci0gICAgQ2hh
cmFjdGVyQ2xhc3MqIGNoYXJhY3RlckNsYXNzID0gbmV3IENoYXJhY3RlckNsYXNzKCk7Ci0KLSAg
ICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBwZW5kKENoYXJhY3RlclJhbmdlKDAsICcwJyAt
IDEpKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBwZW5kKENoYXJhY3RlclJhbmdl
KCc5JyArIDEsIDB4N2YpKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFw
cGVuZChDaGFyYWN0ZXJSYW5nZSgweDgwLCAweGZmZmYpKTsKLSAgICAKLSAgICByZXR1cm4gY2hh
cmFjdGVyQ2xhc3M7Ci19Ci0KLUNoYXJhY3RlckNsYXNzKiBub25zcGFjZXNDcmVhdGUoKQotewot
ICAgIENoYXJhY3RlckNsYXNzKiBjaGFyYWN0ZXJDbGFzcyA9IG5ldyBDaGFyYWN0ZXJDbGFzcygp
OwotCi0gICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgw
LCAnXHQnIC0gMSkpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hhcmFj
dGVyUmFuZ2UoJ1xyJyArIDEsICcgJyAtIDEpKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5n
ZXMuYXBwZW5kKENoYXJhY3RlclJhbmdlKCcgJyArIDEsIDB4N2YpKTsKLSAgICBjaGFyYWN0ZXJD
bGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDAwODAsIDB4MDA5
ZikpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlc1VuaWNvZGUuYXBwZW5kKENoYXJhY3Rl
clJhbmdlKDB4MDBhMSwgMHgxNjdmKSk7Ci0gICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzVW5p
Y29kZS5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHgxNjgxLCAweDE4MGQpKTsKLSAgICBjaGFyYWN0
ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDE4MGYsIDB4
MWZmZikpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlc1VuaWNvZGUuYXBwZW5kKENoYXJh
Y3RlclJhbmdlKDB4MjAwYiwgMHgyMDI3KSk7Ci0gICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2Vz
VW5pY29kZS5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHgyMDJhLCAweDIwMmUpKTsKLSAgICBjaGFy
YWN0ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDIwMzAs
IDB4MjA1ZSkpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlc1VuaWNvZGUuYXBwZW5kKENo
YXJhY3RlclJhbmdlKDB4MjA2MCwgMHgyZmZmKSk7Ci0gICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFu
Z2VzVW5pY29kZS5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHgzMDAxLCAweGZmZmYpKTsKLSAgICAK
LSAgICByZXR1cm4gY2hhcmFjdGVyQ2xhc3M7Ci19Ci0KLUNoYXJhY3RlckNsYXNzKiBub253b3Jk
Y2hhckNyZWF0ZSgpCi17Ci0gICAgQ2hhcmFjdGVyQ2xhc3MqIGNoYXJhY3RlckNsYXNzID0gbmV3
IENoYXJhY3RlckNsYXNzKCk7Ci0KLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzLmFwcGVu
ZCgnYCcpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hhcmFjdGVyUmFu
Z2UoMCwgJzAnIC0gMSkpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hh
cmFjdGVyUmFuZ2UoJzknICsgMSwgJ0EnIC0gMSkpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jh
bmdlcy5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoJ1onICsgMSwgJ18nIC0gMSkpOwotICAgIGNoYXJh
Y3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoJ3onICsgMSwgMHg3Zikp
OwotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlc1VuaWNvZGUuYXBwZW5kKENoYXJhY3RlclJh
bmdlKDB4ODAsIDB4ZmZmZikpOwotCi0gICAgcmV0dXJuIGNoYXJhY3RlckNsYXNzOwotfQotCi0K
IGNsYXNzIFJlZ2V4UGF0dGVybkNvbnN0cnVjdG9yIHsKIHB1YmxpYzoKICAgICBSZWdleFBhdHRl
cm5Db25zdHJ1Y3RvcihSZWdleFBhdHRlcm4mIHBhdHRlcm4pCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1JlZ2V4SklULmNwcCBiL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhKSVQu
Y3BwCmluZGV4IGYzN2FiYmYuLmMwYmYyNDggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3lh
cnIvUmVnZXhKSVQuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhKSVQuY3BwCkBA
IC00MCw2ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgWWFyciB7CiAKKyNpbmNsdWRlICJSZWdFeHBKaXRUYWJsZXMuaCIKIAogY2xhc3Mg
UmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICBmcmllbmQgdm9p
ZCBqaXRDb21waWxlUmVnZXgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBSZWdleENvZGVCbG9j
ayYgaml0T2JqZWN0LCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCB1bnNpZ25lZCYgbnVtU3VicGF0
dGVybnMsIGNvbnN0IGNoYXIqJiBlcnJvciwgYm9vbCBpZ25vcmVDYXNlLCBib29sIG11bHRpbGlu
ZSk7CkBAIC0xNTUsNiArMTU2LDExIEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAKICAgICB2b2lkIG1hdGNoQ2hhcmFjdGVyQ2xhc3MoUmVnaXN0ZXJJ
RCBjaGFyYWN0ZXIsIEp1bXBMaXN0JiBtYXRjaERlc3QsIGNvbnN0IENoYXJhY3RlckNsYXNzKiBj
aGFyQ2xhc3MpCiAgICAgeworICAgICAgICBpZiAoY2hhckNsYXNzLT5tX3RhYmxlKSB7CisgICAg
ICAgICAgICBFeHRlbmRlZEFkZHJlc3MgdGFibGVFbnRyeShjaGFyYWN0ZXIsIHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGNoYXJDbGFzcy0+bV90YWJsZS0+bV90YWJsZSkpOworICAgICAgICAg
ICAgbWF0Y2hEZXN0LmFwcGVuZChicmFuY2hUZXN0OChjaGFyQ2xhc3MtPm1fdGFibGUtPm1faW52
ZXJ0ZWQgPyBaZXJvIDogTm9uWmVybywgdGFibGVFbnRyeSkpOyAgIAorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAgICAgICAgIEp1bXAgdW5pY29kZUZhaWw7CiAgICAgICAgIGlmIChj
aGFyQ2xhc3MtPm1fbWF0Y2hlc1VuaWNvZGUuc2l6ZSgpIHx8IGNoYXJDbGFzcy0+bV9yYW5nZXNV
bmljb2RlLnNpemUoKSkgewogICAgICAgICAgICAgSnVtcCBpc0FzY2lpID0gYnJhbmNoMzIoTGVz
c1RoYW5PckVxdWFsLCBjaGFyYWN0ZXIsIEltbTMyKDB4N2YpKTsKQEAgLTYwOSw5ICs2MTUsMTQg
QEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAg
ICAgICAgIEFTU0VSVCghbV9wYXR0ZXJuLm1faWdub3JlQ2FzZSB8fCAoVW5pY29kZTo6dG9Mb3dl
cihjaCkgPT0gVW5pY29kZTo6dG9VcHBlcihjaCkpKTsKICAgICAgICAgICAgIGZhaWx1cmVzLmFw
cGVuZChqdW1wSWZDaGFyTm90RXF1YWxzKGNoLCBzdGF0ZS5pbnB1dE9mZnNldCgpKSk7CiAgICAg
ICAgIH0KKwogICAgICAgICBhZGQzMihJbW0zMigxKSwgY291bnRSZWdpc3Rlcik7CiAgICAgICAg
IGFkZDMyKEltbTMyKDEpLCBpbmRleCk7Ci0gICAgICAgIGJyYW5jaDMyKE5vdEVxdWFsLCBjb3Vu
dFJlZ2lzdGVyLCBJbW0zMih0ZXJtLnF1YW50aXR5Q291bnQpKS5saW5rVG8obG9vcCwgdGhpcyk7
CisgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5Q291bnQgIT0gMHhmZmZmZmZmZikKKyAgICAgICAg
ICAgIGJyYW5jaDMyKE5vdEVxdWFsLCBjb3VudFJlZ2lzdGVyLCBJbW0zMih0ZXJtLnF1YW50aXR5
Q291bnQpKS5saW5rVG8obG9vcCwgdGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGp1
bXAobG9vcCk7CisKICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGp1bXAoKSk7CiAKICAgICAgICAg
TGFiZWwgYmFja3RyYWNrQmVnaW4odGhpcyk7CkBAIC02NDYsNyArNjU3LDggQEAgY2xhc3MgUmVn
ZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgbG9hZEZyb21G
cmFtZSh0ZXJtLmZyYW1lTG9jYXRpb24sIGNvdW50UmVnaXN0ZXIpOwogCiAgICAgICAgIGF0RW5k
T2ZJbnB1dCgpLmxpbmtUbyhoYXJkRmFpbCwgdGhpcyk7Ci0gICAgICAgIGJyYW5jaDMyKEVxdWFs
LCBjb3VudFJlZ2lzdGVyLCBJbW0zMih0ZXJtLnF1YW50aXR5Q291bnQpLCBoYXJkRmFpbCk7Cisg
ICAgICAgIGlmICh0ZXJtLnF1YW50aXR5Q291bnQgIT0gMHhmZmZmZmZmZikKKyAgICAgICAgICAg
IGJyYW5jaDMyKEVxdWFsLCBjb3VudFJlZ2lzdGVyLCBJbW0zMih0ZXJtLnF1YW50aXR5Q291bnQp
LCBoYXJkRmFpbCk7CiAgICAgICAgIGlmIChtX3BhdHRlcm4ubV9pZ25vcmVDYXNlICYmIGlzQVND
SUlBbHBoYShjaCkpIHsKICAgICAgICAgICAgIHJlYWRDaGFyYWN0ZXIoc3RhdGUuaW5wdXRPZmZz
ZXQoKSwgY2hhcmFjdGVyKTsKICAgICAgICAgICAgIG9yMzIoSW1tMzIoMzIpLCBjaGFyYWN0ZXIp
OwpAQCAtNzMyLDcgKzc0NCwxMSBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogCiAgICAgICAgIGFkZDMyKEltbTMyKDEpLCBjb3VudFJlZ2lzdGVyKTsK
ICAgICAgICAgYWRkMzIoSW1tMzIoMSksIGluZGV4KTsKLSAgICAgICAgYnJhbmNoMzIoTm90RXF1
YWwsIGNvdW50UmVnaXN0ZXIsIEltbTMyKHRlcm0ucXVhbnRpdHlDb3VudCkpLmxpbmtUbyhsb29w
LCB0aGlzKTsKKyAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlDb3VudCAhPSAweGZmZmZmZmZmKQor
ICAgICAgICAgICAgYnJhbmNoMzIoTm90RXF1YWwsIGNvdW50UmVnaXN0ZXIsIEltbTMyKHRlcm0u
cXVhbnRpdHlDb3VudCkpLmxpbmtUbyhsb29wLCB0aGlzKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAganVtcChsb29wKTsKKwogICAgICAgICBmYWlsdXJlcy5hcHBlbmQoanVtcCgpKTsKIAog
ICAgICAgICBMYWJlbCBiYWNrdHJhY2tCZWdpbih0aGlzKTsKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3lhcnIvUmVnZXhQYXR0ZXJuLmggYi9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4UGF0
dGVybi5oCmluZGV4IDY5YmVlMGMuLmE5Mzk5YmQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3lhcnIvUmVnZXhQYXR0ZXJuLmgKKysrIGIvSmF2YVNjcmlwdENvcmUveWFyci9SZWdleFBhdHRl
cm4uaApAQCAtNTYsMTEgKzU2LDMyIEBAIHN0cnVjdCBDaGFyYWN0ZXJSYW5nZSB7CiAgICAgfQog
fTsKIAorc3RydWN0IENoYXJhY3RlckNsYXNzVGFibGUgOiBSZWZDb3VudGVkPENoYXJhY3RlckNs
YXNzVGFibGU+IHsKKyAgICBjb25zdCBjaGFyKiBtX3RhYmxlOworICAgIGJvb2wgbV9pbnZlcnRl
ZDsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDaGFyYWN0ZXJDbGFzc1RhYmxlPiBjcmVhdGUoY29u
c3QgY2hhciogdGFibGUsIGJvb2wgaW52ZXJ0ZWQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENoYXJhY3RlckNsYXNzVGFibGUodGFibGUsIGludmVydGVkKSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIENoYXJhY3RlckNsYXNzVGFibGUoY29uc3QgY2hhciogdGFibGUsIGJv
b2wgaW52ZXJ0ZWQpCisgICAgICAgIDogbV90YWJsZSh0YWJsZSkKKyAgICAgICAgLCBtX2ludmVy
dGVkKGludmVydGVkKQorICAgIHsKKyAgICB9Cit9OworCiBzdHJ1Y3QgQ2hhcmFjdGVyQ2xhc3Mg
OiBGYXN0QWxsb2NCYXNlIHsKKyAgICBDaGFyYWN0ZXJDbGFzcyhQYXNzUmVmUHRyPENoYXJhY3Rl
ckNsYXNzVGFibGU+IHRhYmxlKQorICAgICAgICA6IG1fdGFibGUodGFibGUpCisgICAgeworICAg
IH0KICAgICBWZWN0b3I8VUNoYXI+IG1fbWF0Y2hlczsKICAgICBWZWN0b3I8Q2hhcmFjdGVyUmFu
Z2U+IG1fcmFuZ2VzOwogICAgIFZlY3RvcjxVQ2hhcj4gbV9tYXRjaGVzVW5pY29kZTsKICAgICBW
ZWN0b3I8Q2hhcmFjdGVyUmFuZ2U+IG1fcmFuZ2VzVW5pY29kZTsKKyAgICBSZWZQdHI8Q2hhcmFj
dGVyQ2xhc3NUYWJsZT4gbV90YWJsZTsKIH07CiAKIGVudW0gUXVhbnRpZmllclR5cGUgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53862</attachid>
            <date>2010-04-20 12:10:33 -0700</date>
            <delta_ts>2010-04-20 12:47:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37877-20100420121032.patch</filename>
            <type>text/plain</type>
            <size>23424</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA1NGMxMzg5Li41ZDFjOTdkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTAtMDQtMjAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXRvZ2VuZXJhdGUgeWFy
ciBjaGFyYWN0ZXIgdGFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzg3NworCisgICAgICAgIFVzZSBhIHB5dGhvbiBzY3JpcHQgdG8gYXV0b21h
dGljYWxseSBnZW5lcmF0ZSBjaGFyYWN0ZXIgdGFibGVzCisgICAgICAgIGZvciB0aGUgYnVpbHRp
biBZQVJSIGNoYXJhY3RlciBjbGFzc2VzLiAgVGhpcyBhbGxvd3MgdXMgdG8gZ2VuZXJhdGUKKyAg
ICAgICAgYWN0dWFsIHRhYmxlcyBhcyB3ZWxsLCBieSB1c2luZyB0aGVzZSB0YWJsZXMgd2UgY2Fu
IGJvdGggaW5jcmVhc2UKKyAgICAgICAgcGVyZm9ybWFuY2Ugb2YgdGhlIGNoZWNrIChmb3IgY29t
cGxleCBidWlsdGlucykgYW5kIHJlZHVjZSB0aGUgYWN0dWFsCisgICAgICAgIGNvZGUgc2l6ZS4K
KworICAgICAgICA0LTglIHdpbiBvbiBzdHJpbmctdW5wYWNrLWNvZGUsIGJ1dCBsb3RzIG9mIG5v
aXNlIG9uIG90aGVyIHRlc3RzIHNvCisgICAgICAgIGknbSBvbmx5IGNvbmZpZGVudCBzYXlpbmcg
aXRzIGEgMSUgd2luIG92ZXJhbGwuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6RXh0ZW5kZWRBZGRyZXNzOjpFeHRlbmRlZEFkZHJlc3Mp
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlcjo6YnJhbmNoVGVzdDgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6YnJhbmNoVGVzdDgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoVGVzdDgpOgor
ICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjpjbXBiX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp0ZXN0Yl9pbSk6
CisgICAgICAgICogYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcDoKKyAgICAgICAgKEpTQzo6U2Ft
cGxpbmdUb29sOjpkdW1wKToKKyAgICAgICAgKiBjcmVhdGVfcmVnZXhfdGFibGVzOiBBZGRlZC4K
KyAgICAgICAgKiB5YXJyL1JlZ2V4Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpD
aGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAqIHlhcnIvUmVn
ZXhKSVQuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6bWF0Y2hDaGFy
YWN0ZXJDbGFzcyk6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4R2VuZXJhdG9yOjpnZW5lcmF0
ZVBhdHRlcm5DaGFyYWN0ZXJHcmVlZHkpOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVy
YXRvcjo6Z2VuZXJhdGVQYXR0ZXJuQ2hhcmFjdGVyTm9uR3JlZWR5KToKKyAgICAgICAgKEpTQzo6
WWFycjo6UmVnZXhHZW5lcmF0b3I6OmdlbmVyYXRlQ2hhcmFjdGVyQ2xhc3NHcmVlZHkpOgorICAg
ICAgICAqIHlhcnIvUmVnZXhQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OkNoYXJhY3Rl
ckNsYXNzVGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OllhcnI6OkNoYXJhY3RlckNsYXNz
VGFibGU6OkNoYXJhY3RlckNsYXNzVGFibGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpDaGFyYWN0
ZXJDbGFzczo6Q2hhcmFjdGVyQ2xhc3MpOgorCiAyMDEwLTA0LTIwICBDc2FiYSBPc3p0cm9nb27D
oWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIHNwZWN1bGF0
aXZlIGJ1aWxkZml4IGZvciBXaW5DRSBhZnRlciByNTc4ODIKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDllYWNjYWIuLjRmYzljYWQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtNDgsNiArNDgsNyBAQCBhbGwgOiBcCiAgICAgUmVnRXhwT2JqZWN0Lmx1dC5oIFwK
ICAgICBTdHJpbmdQcm90b3R5cGUubHV0LmggXAogICAgIGRvY3MvYnl0ZWNvZGUuaHRtbCBcCisg
ICAgUmVnRXhwSml0VGFibGVzLmggXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMK
QEAgLTc0LDMgKzc1LDcgQEAgY2hhcnRhYmxlcy5jIDogZGZ0YWJsZXMKIAogZG9jcy9ieXRlY29k
ZS5odG1sOiBtYWtlLWJ5dGVjb2RlLWRvY3MucGwgSW50ZXJwcmV0ZXIuY3BwIAogCXBlcmwgJF4g
JEAKKworI2NoYXJhY3RlciB0YWJsZXMgZm9yIFlhcnIKK1JlZ0V4cEppdFRhYmxlcy5oOiBjcmVh
dGVfcmVnZXhfdGFibGVzCisJcHl0aG9uICReID4gJEAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLnBybyBiL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLnBy
bwppbmRleCBhYzViNTFjLi43YzVhYWQ4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5wcm8KKysrIGIvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMucHJvCkBA
IC05MywzICs5Myw5IEBAIGN0Z2VuLmNvbW1hbmRzID0gcGVybCAkJGN0Z2VuLndrU2NyaXB0ICR7
UU1BS0VfRklMRV9PVVR9ICQkUFJFUFJPQ0VTU09SCiBjdGdlbi5jbGVhbiA9ICR7UU1BS0VfRklM
RV9PVVR9ICR7UU1BS0VfVkFSX0pTQ19HRU5FUkFURURfU09VUkNFU19ESVJ9JHtRTUFLRV9GSUxF
X0JBU0V9CiBhZGRFeHRyYUNvbXBpbGVyKGN0Z2VuKQogCisjR0VORVJBVE9SOiAiUmVnRXhwSml0
VGFibGVzLmgiOiB0YWJsZXMgdXNlZCBieSBZYXJyCityZXRnZW4ub3V0cHV0ID0gJCRKU0NfR0VO
RVJBVEVEX1NPVVJDRVNfRElSL1JlZ0V4cEppdFRhYmxlcy5oCityZXRnZW4ud2tTY3JpcHQgPSAk
JFBXRC9jcmVhdGVfcmVnZXhfdGFibGVzIAorcmV0Z2VuLmlucHV0ID0gcmV0Z2VuLndrU2NyaXB0
CityZXRnZW4uY29tbWFuZHMgPSBweXRob24gJCRyZXRnZW4ud2tTY3JpcHQgPiAke1FNQUtFX0ZJ
TEVfT1VUfQorYWRkRXh0cmFDb21waWxlcihyZXRnZW4pCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwOWY1
ZDFiLi4zYWY1ODY3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgzMiw2ICs4MzIsOCBAQAogCQk5NjlB
MDkyMjBFRDFFMDlDMDBGMUY2ODEgLyogQ29tcGxldGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb21wbGV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTZERDczNzgwRjlEQTMxMDAwMjdGQkNDIC8qIFZNVGFncy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWTVRhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTdGNjkwM0ExMTY5REY3RjAwQTZCQjQ2IC8qIFRlcm1pbmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVybWluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEppdFRhYmxlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcgLyogY3Jl
YXRlX3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gY3Jl
YXRlX3JlZ2V4X3RhYmxlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyNzAwNzcw
REFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNOb3RBbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzI3MDA3ODBEQUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vdEFuT2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyNzAxQjMwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlv
bkhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uSGVs
cGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA5Miw2ICsxMDk0LDcgQEAK
IAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIEphdmFTY3JpcHRDb3JlICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBNzE4RjgyMTExNzhFQjRCMDAy
NDY1QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLywKIAkJCQk5MzdCNjNDQzA5RTc2NkQyMDBB
NjcxREQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAqLywKIAkJCQlGNjkyQTg1NDAyNTU1OTdEMDFG
RjYwRjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi8sCiAJCQkJMTRCOEVDQTYwQTU2NTM5ODAwNjJC
RTU0IC8qIEphdmFTY3JpcHRDb3JlLmV4cCAqLywKQEAgLTEyODMsNiArMTI4Niw3IEBACiAJCTY1
MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3MThGNjFBMTE3NTRBMjEwMDI0NjVB
NyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLywKIAkJCQlCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0NjAg
LyogQXJyYXlQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJNjVCMTc0QkUwOUQxMDAwMjAwODIwMzM5
IC8qIGNoYXJ0YWJsZXMuYyAqLywKIAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0
ZVByb3RvdHlwZS5sdXQuaCAqLywKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCmluZGV4IGFhZDcwZTQuLmY5NmUzNGEgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtODEs
NiArODEsMTcgQEAgcHVibGljOgogICAgICAgICBpbnQzMl90IG9mZnNldDsKICAgICB9OwogCisg
ICAgc3RydWN0IEV4dGVuZGVkQWRkcmVzcyB7CisgICAgICAgIGV4cGxpY2l0IEV4dGVuZGVkQWRk
cmVzcyhSZWdpc3RlcklEIGJhc2UsIGludHB0cl90IG9mZnNldCA9IDApCisgICAgICAgICAgICA6
IGJhc2UoYmFzZSkKKyAgICAgICAgICAgICwgb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgeworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBSZWdpc3RlcklEIGJhc2U7CisgICAgICAgIGludHB0
cl90IG9mZnNldDsKKyAgICB9OworCiAgICAgLy8gSW1wbGljaXRBZGRyZXNzOgogICAgIC8vCiAg
ICAgLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGZvciBleHBsaWNpdCAnbG9hZCcgYW5kICdzdG9yZScg
b3BlcmF0aW9ucwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmggYi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRl
eCBlNmY2OThmLi5jZTFiZTc4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaApAQCAtMzMxLDYgKzMzMSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1
cm4gYnJhbmNoU3ViMzIoY29uZCwgaW1tLCBkZXN0KTsKICAgICB9CisgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hUZXN0ODsKKyAgICBKdW1wIGJyYW5jaFRlc3Q4KENvbmRpdGlv
biBjb25kLCBFeHRlbmRlZEFkZHJlc3MgYWRkcmVzcywgSW1tMzIgbWFzayA9IEltbTMyKC0xKSkK
KyAgICB7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaFRlc3Q4KGNv
bmQsIEFkZHJlc3MoYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCksIG1hc2spOworICAgIH0K
ICNlbmRpZgogCiB9OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmggYi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaAppbmRleCAwNzNmNTYzLi4yN2MyZjE1IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtNzMxLDYg
KzczMSwxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0Yl9pbShtYXNr
Lm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgICAgICByZXR1cm4g
SnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQorICAgIAor
ICAgIEp1bXAgYnJhbmNoVGVzdDgoQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRyZXNzLCBJ
bW0zMiBtYXNrID0gSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IFpl
cm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAt
MSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGJfaW0oMCwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RiX2ltKG1hc2subV92YWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAg
ICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKKyAg
ICB9CiAKICAgICBKdW1wIGp1bXAoKQogICAgIHsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggYjM2YzMyMy4uMzM5ZWFhNCAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysr
IGIvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTQw
OSw2ICs0MDksMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQogCisg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4OworICAgIEp1bXAg
YnJhbmNoVGVzdDgoQ29uZGl0aW9uIGNvbmQsIEV4dGVuZGVkQWRkcmVzcyBhZGRyZXNzLCBJbW0z
MiBtYXNrID0gSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgSW1tUHRyIGFkZHIocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oYWRkcmVzcy5vZmZzZXQpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246Om1vdmUoYWRkciwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBCYXNlSW5kZXgoc2NyYXRj
aFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UsIFRpbWVzT25lKSwgbWFzayk7CisgICAgfQorCiAgICAg
TGFiZWwgbG9hZFB0cldpdGhQYXRjaFRvTEVBKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgTGFiZWwgbGFiZWwodGhpcyk7CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggYi9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggNTdiODExYy4uMTRhMDJmNyAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtNzc2LDYgKzc3NiwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09Q
X0NNUCwgYmFzZSwgb2Zmc2V0KTsKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0p
OwogICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9DTVAsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgIH0KIAogICAgIHZvaWQgY21wbF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKICAgICB7CkBAIC05
MDEsNiArOTA3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQM19FYkliLCBHUk9VUDNfT1BfVEVTVCwgYmFzZSwgb2Zmc2V0KTsKICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgIH0KKyAgICAKKyAgICB2b2lkIHRlc3RiX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
M19FYkliLCBHUk9VUDNfT1BfVEVTVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQogCiAgICAgdm9pZCB0ZXN0
bF9pMzJtKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQogICAgIHsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NhbXBsaW5nVG9vbC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rv
b2wuY3BwCmluZGV4IDNmMGJhYmMuLjg1MjJlNDUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U2FtcGxpbmdUb29sLmNwcApAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgU2FtcGxpbmdUb29sOjpk
dW1wKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgICAgICBpZiAoYmxvY2tQZXJjZW50ID49IDEpIHsK
ICAgICAgICAgICAgIC8vSW5zdHJ1Y3Rpb24qIGNvZGUgPSBjb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCk7Ci0gICAgICAgICAgICBwcmludGYoIiMlZDogJXM6JWQ6ICVkIC8gJWxsZCAo
JS4zZiUlKVxuIiwgaSArIDEsIHJlY29yZC0+bV9leGVjdXRhYmxlLT5zb3VyY2VVUkwoKS5VVEY4
U3RyaW5nKCkuY19zdHIoKSwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQo
ZXhlYywgMCksIHJlY29yZC0+bV9zYW1wbGVDb3VudCwgbV9zYW1wbGVDb3VudCwgYmxvY2tQZXJj
ZW50KTsKKyAgICAgICAgICAgIHByaW50ZigiIyVkOiAlczolZDogJWQgLyAlbGxkICglLjNmJSUp
XG4iLCBpICsgMSwgcmVjb3JkLT5tX2V4ZWN1dGFibGUtPnNvdXJjZVVSTCgpLmFzY2lpKCksIGNv
ZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGV4ZWMsIDApLCByZWNvcmQtPm1f
c2FtcGxlQ291bnQsIG1fc2FtcGxlQ291bnQsIGJsb2NrUGVyY2VudCk7CiAgICAgICAgICAgICBp
ZiAoaSA8IDEwKSB7CiAgICAgICAgICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCx1bnNpZ25lZD4g
bGluZUNvdW50czsKICAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmR1bXAoZXhlYyk7CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfcmVnZXhfdGFibGVzIGIvSmF2YVNjcmlwdENv
cmUvY3JlYXRlX3JlZ2V4X3RhYmxlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yZDk5YmQxCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvY3JlYXRlX3JlZ2V4
X3RhYmxlcwpAQCAtMCwwICsxLDg5IEBACit0eXBlcyA9IHsKKyAgICAid29yZGNoYXIiOiB7ICJV
c2VUYWJsZSIgOiBUcnVlLCAiZGF0YSI6IFsnXycsICgnMCcsJzknKSwgKCdBJywgJ1onKSwgKCdh
JywneicpXX0sCisgICAgIm5vbndvcmRjaGFyIjogeyAiVXNlVGFibGUiIDogVHJ1ZSwgIkludmVy
c2UiOiAid29yZGNoYXIiLCAiZGF0YSI6IFsnYCcsICgwLCBvcmQoJzAnKSAtIDEpLCAob3JkKCc5
JykgKyAxLCBvcmQoJ0EnKSAtIDEpLCAob3JkKCdaJykgKyAxLCBvcmQoJ18nKSAtIDEpLCAob3Jk
KCd6JykgKyAxLCAweGZmZmYpXX0sCisgICAgIm5ld2xpbmUiOiB7ICJVc2VUYWJsZSIgOiBGYWxz
ZSwgImRhdGEiOiBbJ1xuJywgJ1xyJywgMHgyMDI4LCAweDIwMjldfSwKKyAgICAic3BhY2VzIjog
eyAiVXNlVGFibGUiIDogVHJ1ZSwgImRhdGEiOiBbJyAnLCAoJ1x0JywgJ1xyJyksIDB4YTAsIDB4
MTY4MCwgMHgxODBlLCAweDIwMjgsIDB4MjAyOSwgMHgyMDJmLCAweDIwNWYsIDB4MzAwMCwgKDB4
MjAwMCwgMHgyMDBhKV19LAorICAgICJub25zcGFjZXMiOiB7ICJVc2VUYWJsZSIgOiBUcnVlLCAi
SW52ZXJzZSI6ICJzcGFjZXMiLCAiZGF0YSI6IFsoMCwgb3JkKCdcdCcpIC0gMSksIChvcmQoJ1xy
JykgKyAxLCBvcmQoJyAnKSAtIDEpLCAob3JkKCcgJykgKyAxLCAweDAwOWYpLCAoMHgwMGExLCAw
eDE2N2YpLCAoMHgxNjgxLCAweDE4MGQpLCAoMHgxODBmLCAweDFmZmYpLCAoMHgyMDBiLCAweDIw
MjcpLCAoMHgyMDJhLCAweDIwMmUpLCAoMHgyMDMwLCAweDIwNWUpLCAoMHgyMDYwLCAweDJmZmYp
LCAoMHgzMDAxLCAweGZmZmYpXX0sCisgICAgImRpZ2l0cyI6IHsgIlVzZVRhYmxlIiA6IEZhbHNl
LCAiZGF0YSI6IFsoJzAnLCAnOScpXX0sCisgICAgIm5vbmRpZ2l0cyI6IHsgIlVzZVRhYmxlIiA6
IEZhbHNlLCAiSW52ZXJzZSI6ICJkaWdpdHMiLCAiZGF0YSI6IFsoMCwgb3JkKCcwJykgLSAxKSwg
KG9yZCgnOScpICsgMSwgMHhmZmZmKV0gfQorfQorZW50cmllc1BlckxpbmUgPSA1MAorYXJyYXlz
ID0gIiI7CitmdW5jdGlvbnMgPSAiIjsKKworZm9yIG5hbWUsIGNsYXNzZXMgaW4gdHlwZXMuaXRl
bXMoKToKKyAgICByYW5nZXMgPSBbXTsKKyAgICBzaXplID0gMDsKKyAgICBmb3IgX2NsYXNzIGlu
IGNsYXNzZXNbImRhdGEiXToKKyAgICAgICAgaWYgdHlwZShfY2xhc3MpID09IHN0cjoKKyAgICAg
ICAgICAgIHJhbmdlcy5hcHBlbmQoKG9yZChfY2xhc3MpLCBvcmQoX2NsYXNzKSkpCisgICAgICAg
IGVsaWYgdHlwZShfY2xhc3MpID09IGludDoKKyAgICAgICAgICAgIHJhbmdlcy5hcHBlbmQoKF9j
bGFzcywgX2NsYXNzKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIChtaW4sIG1heCkgPSBf
Y2xhc3M7CisgICAgICAgICAgICBpZiB0eXBlKG1pbikgPT0gc3RyOgorICAgICAgICAgICAgICAg
IG1pbiA9IG9yZChtaW4pCisgICAgICAgICAgICBpZiB0eXBlKG1heCkgPT0gc3RyOgorICAgICAg
ICAgICAgICAgIG1heCA9IG9yZChtYXgpCisgICAgICAgICAgICBpZiBtYXggPiAweDdmIGFuZCBt
aW4gPD0gMHg3ZjoKKyAgICAgICAgICAgICAgICByYW5nZXMuYXBwZW5kKChtaW4sIDB4N2YpKQor
ICAgICAgICAgICAgICAgIG1pbiA9IDB4ODAKKyAgICAgICAgICAgIHJhbmdlcy5hcHBlbmQoKG1p
bixtYXgpKQorICAgIHJhbmdlcy5zb3J0KCk7CisgICAgCisgICAgaWYgY2xhc3Nlc1siVXNlVGFi
bGUiXSBhbmQgKG5vdCAiSW52ZXJzZSIgaW4gY2xhc3Nlcyk6CisgICAgICAgIGFycmF5ID0gKCJz
dGF0aWMgY29uc3QgY2hhciBfJXNEYXRhWzY1NTM2XSA9IHtcbiIgJSBuYW1lKTsKKyAgICAgICAg
aSA9IDAKKyAgICAgICAgZm9yIChtaW4sbWF4KSBpbiByYW5nZXM6CisgICAgICAgICAgICB3aGls
ZSBpIDwgbWluOgorICAgICAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAgICAgICAgICAgIGFy
cmF5ICs9ICgnMCwnKQorICAgICAgICAgICAgICAgIGlmIChpICUgZW50cmllc1BlckxpbmUgPT0g
MCkgYW5kIChpICE9IDApOgorICAgICAgICAgICAgICAgICAgICBhcnJheSArPSAoJ1xuJykKKyAg
ICAgICAgICAgIHdoaWxlIGkgPD0gbWF4OgorICAgICAgICAgICAgICAgIGkgPSBpICsgMQorICAg
ICAgICAgICAgICAgIGlmIChpID09IDY1NTM2KToKKyAgICAgICAgICAgICAgICAgICAgYXJyYXkg
Kz0gKCIxIikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBhcnJh
eSArPSAoJzEsJykKKyAgICAgICAgICAgICAgICBpZiAoaSAlIGVudHJpZXNQZXJMaW5lID09IDAp
IGFuZCAoaSAhPSAwKToKKyAgICAgICAgICAgICAgICAgICAgYXJyYXkgKz0gKCdcbicpCisgICAg
ICAgIHdoaWxlIGkgPCAweGZmZmY6CisgICAgICAgICAgICBhcnJheSArPSAoIjAsIikKKyAgICAg
ICAgICAgIGkgPSBpICsgMTsKKyAgICAgICAgICAgIGlmIChpICUgZW50cmllc1BlckxpbmUgPT0g
MCkgYW5kIChpICE9IDApOgorICAgICAgICAgICAgICAgIGFycmF5ICs9ICgnXG4nKQorICAgICAg
ICBpZiBpID09IDB4ZmZmZjoKKyAgICAgICAgICAgIGFycmF5ICs9ICgiMCIpCisgICAgICAgIGFy
cmF5ICs9ICgiXG59O1xuXG4iKTsKKyAgICAgICAgYXJyYXlzICs9IGFycmF5CisgICAgCisgICAg
IyBHZW5lcmF0ZSBjcmVhdGVGdW5jdGlvbjoKKyAgICBmdW5jdGlvbiA9ICIiOworICAgIGZ1bmN0
aW9uICs9ICgiQ2hhcmFjdGVyQ2xhc3MqICVzQ3JlYXRlKClcbiIgJSBuYW1lKQorICAgIGZ1bmN0
aW9uICs9ICgie1xuIikKKyAgICBpZiBjbGFzc2VzWyJVc2VUYWJsZSJdOgorICAgICAgICBpZiAi
SW52ZXJzZSIgaW4gY2xhc3NlczoKKyAgICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIENoYXJh
Y3RlckNsYXNzKiBjaGFyYWN0ZXJDbGFzcyA9IG5ldyBDaGFyYWN0ZXJDbGFzcyhDaGFyYWN0ZXJD
bGFzc1RhYmxlOjpjcmVhdGUoXyVzRGF0YSwgdHJ1ZSkpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNl
Il0pKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgQ2hhcmFj
dGVyQ2xhc3MqIGNoYXJhY3RlckNsYXNzID0gbmV3IENoYXJhY3RlckNsYXNzKENoYXJhY3RlckNs
YXNzVGFibGU6OmNyZWF0ZShfJXNEYXRhLCBmYWxzZSkpO1xuIiAlIChuYW1lKSkKKyAgICBlbHNl
OgorICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBDaGFyYWN0ZXJDbGFzcyogY2hhcmFjdGVyQ2xh
c3MgPSBuZXcgQ2hhcmFjdGVyQ2xhc3MoMCk7XG4iKQorICAgIGZvciAobWluLCBtYXgpIGluIHJh
bmdlczoKKyAgICAgICAgaWYgKG1pbiA9PSBtYXgpOgorICAgICAgICAgICAgaWYgKG1pbiA+IDEy
Nyk6CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgY2hhcmFjdGVyQ2xhc3MtPm1f
bWF0Y2hlc1VuaWNvZGUuYXBwZW5kKDB4JTA0eCk7XG4iICUgbWluKQorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBjaGFyYWN0ZXJDbGFzcy0+bV9t
YXRjaGVzLmFwcGVuZCgweCUwMngpO1xuIiAlIG1pbikKKyAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgIGlmIChtaW4gPiAxMjcpIG9yIChtYXggPiAxMjcpOgorICAgICAgICAgICAgZnVuY3Rp
b24gKz0gKCIgICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzVW5pY29kZS5hcHBlbmQoQ2hhcmFj
dGVyUmFuZ2UoMHglMDR4LCAweCUwNHgpKTtcbiIgJSAobWluLCBtYXgpKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2Vz
LmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweCUwMngsIDB4JTAyeCkpO1xuIiAlIChtaW4sIG1heCkp
CisgICAgZnVuY3Rpb24gKz0gKCIgICAgcmV0dXJuIGNoYXJhY3RlckNsYXNzO1xuIikKKyAgICBm
dW5jdGlvbiArPSAoIn1cblxuIikKKyAgICBmdW5jdGlvbnMgKz0gZnVuY3Rpb24KKworcHJpbnQo
YXJyYXlzKQorcHJpbnQoZnVuY3Rpb25zKQorCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS95
YXJyL1JlZ2V4Q29tcGlsZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUveWFyci9SZWdleENvbXBpbGVy
LmNwcAppbmRleCA2YWQwMTA2Li5lNmZmNjgyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS95
YXJyL1JlZ2V4Q29tcGlsZXIuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhDb21w
aWxlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAKICAgICBDaGFyYWN0ZXJDbGFz
cyogY2hhckNsYXNzKCkKICAgICB7Ci0gICAgICAgIENoYXJhY3RlckNsYXNzKiBjaGFyYWN0ZXJD
bGFzcyA9IG5ldyBDaGFyYWN0ZXJDbGFzcygpOworICAgICAgICBDaGFyYWN0ZXJDbGFzcyogY2hh
cmFjdGVyQ2xhc3MgPSBuZXcgQ2hhcmFjdGVyQ2xhc3MoMCk7CiAKICAgICAgICAgY2hhcmFjdGVy
Q2xhc3MtPm1fbWF0Y2hlcy5hcHBlbmQobV9tYXRjaGVzKTsKICAgICAgICAgY2hhcmFjdGVyQ2xh
c3MtPm1fcmFuZ2VzLmFwcGVuZChtX3Jhbmdlcyk7CkBAIC0yMzMsMTA1ICsyMzMsNiBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxDaGFyYWN0ZXJSYW5nZT4gbV9yYW5nZXNVbmljb2RlOwogfTsKIAot
Ci1DaGFyYWN0ZXJDbGFzcyogbmV3bGluZUNyZWF0ZSgpCi17Ci0gICAgQ2hhcmFjdGVyQ2xhc3Mq
IGNoYXJhY3RlckNsYXNzID0gbmV3IENoYXJhY3RlckNsYXNzKCk7Ci0KLSAgICBjaGFyYWN0ZXJD
bGFzcy0+bV9tYXRjaGVzLmFwcGVuZCgnXG4nKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRj
aGVzLmFwcGVuZCgnXHInKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzVW5pY29kZS5h
cHBlbmQoMHgyMDI4KTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzVW5pY29kZS5hcHBl
bmQoMHgyMDI5KTsKLSAgICAKLSAgICByZXR1cm4gY2hhcmFjdGVyQ2xhc3M7Ci19Ci0KLUNoYXJh
Y3RlckNsYXNzKiBkaWdpdHNDcmVhdGUoKQotewotICAgIENoYXJhY3RlckNsYXNzKiBjaGFyYWN0
ZXJDbGFzcyA9IG5ldyBDaGFyYWN0ZXJDbGFzcygpOwotCi0gICAgY2hhcmFjdGVyQ2xhc3MtPm1f
cmFuZ2VzLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgnMCcsICc5JykpOwotICAgIAotICAgIHJldHVy
biBjaGFyYWN0ZXJDbGFzczsKLX0KLQotQ2hhcmFjdGVyQ2xhc3MqIHNwYWNlc0NyZWF0ZSgpCi17
Ci0gICAgQ2hhcmFjdGVyQ2xhc3MqIGNoYXJhY3RlckNsYXNzID0gbmV3IENoYXJhY3RlckNsYXNz
KCk7Ci0KLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzLmFwcGVuZCgnICcpOwotICAgIGNo
YXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoJ1x0JywgJ1xyJykp
OwotICAgIGNoYXJhY3RlckNsYXNzLT5tX21hdGNoZXNVbmljb2RlLmFwcGVuZCgweDAwYTApOwot
ICAgIGNoYXJhY3RlckNsYXNzLT5tX21hdGNoZXNVbmljb2RlLmFwcGVuZCgweDE2ODApOwotICAg
IGNoYXJhY3RlckNsYXNzLT5tX21hdGNoZXNVbmljb2RlLmFwcGVuZCgweDE4MGUpOwotICAgIGNo
YXJhY3RlckNsYXNzLT5tX21hdGNoZXNVbmljb2RlLmFwcGVuZCgweDIwMjgpOwotICAgIGNoYXJh
Y3RlckNsYXNzLT5tX21hdGNoZXNVbmljb2RlLmFwcGVuZCgweDIwMjkpOwotICAgIGNoYXJhY3Rl
ckNsYXNzLT5tX21hdGNoZXNVbmljb2RlLmFwcGVuZCgweDIwMmYpOwotICAgIGNoYXJhY3RlckNs
YXNzLT5tX21hdGNoZXNVbmljb2RlLmFwcGVuZCgweDIwNWYpOwotICAgIGNoYXJhY3RlckNsYXNz
LT5tX21hdGNoZXNVbmljb2RlLmFwcGVuZCgweDMwMDApOwotICAgIGNoYXJhY3RlckNsYXNzLT5t
X3Jhbmdlc1VuaWNvZGUuYXBwZW5kKENoYXJhY3RlclJhbmdlKDB4MjAwMCwgMHgyMDBhKSk7Ci0g
ICAgCi0gICAgcmV0dXJuIGNoYXJhY3RlckNsYXNzOwotfQotCi1DaGFyYWN0ZXJDbGFzcyogd29y
ZGNoYXJDcmVhdGUoKQotewotICAgIENoYXJhY3RlckNsYXNzKiBjaGFyYWN0ZXJDbGFzcyA9IG5l
dyBDaGFyYWN0ZXJDbGFzcygpOwotCi0gICAgY2hhcmFjdGVyQ2xhc3MtPm1fbWF0Y2hlcy5hcHBl
bmQoJ18nKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBwZW5kKENoYXJhY3RlclJh
bmdlKCcwJywgJzknKSk7Ci0gICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLmFwcGVuZChDaGFy
YWN0ZXJSYW5nZSgnQScsICdaJykpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBl
bmQoQ2hhcmFjdGVyUmFuZ2UoJ2EnLCAneicpKTsKLSAgICAKLSAgICByZXR1cm4gY2hhcmFjdGVy
Q2xhc3M7Ci19Ci0KLUNoYXJhY3RlckNsYXNzKiBub25kaWdpdHNDcmVhdGUoKQotewotICAgIENo
YXJhY3RlckNsYXNzKiBjaGFyYWN0ZXJDbGFzcyA9IG5ldyBDaGFyYWN0ZXJDbGFzcygpOwotCi0g
ICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgwLCAnMCcg
LSAxKSk7Ci0gICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLmFwcGVuZChDaGFyYWN0ZXJSYW5n
ZSgnOScgKyAxLCAweDdmKSk7Ci0gICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzVW5pY29kZS5h
cHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHg4MCwgMHhmZmZmKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNo
YXJhY3RlckNsYXNzOwotfQotCi1DaGFyYWN0ZXJDbGFzcyogbm9uc3BhY2VzQ3JlYXRlKCkKLXsK
LSAgICBDaGFyYWN0ZXJDbGFzcyogY2hhcmFjdGVyQ2xhc3MgPSBuZXcgQ2hhcmFjdGVyQ2xhc3Mo
KTsKLQotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2Uo
MCwgJ1x0JyAtIDEpKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBwZW5kKENoYXJh
Y3RlclJhbmdlKCdccicgKyAxLCAnICcgLSAxKSk7Ci0gICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFu
Z2VzLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgnICcgKyAxLCAweDdmKSk7Ci0gICAgY2hhcmFjdGVy
Q2xhc3MtPm1fcmFuZ2VzVW5pY29kZS5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHgwMDgwLCAweDAw
OWYpKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0
ZXJSYW5nZSgweDAwYTEsIDB4MTY3ZikpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlc1Vu
aWNvZGUuYXBwZW5kKENoYXJhY3RlclJhbmdlKDB4MTY4MSwgMHgxODBkKSk7Ci0gICAgY2hhcmFj
dGVyQ2xhc3MtPm1fcmFuZ2VzVW5pY29kZS5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHgxODBmLCAw
eDFmZmYpKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFy
YWN0ZXJSYW5nZSgweDIwMGIsIDB4MjAyNykpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdl
c1VuaWNvZGUuYXBwZW5kKENoYXJhY3RlclJhbmdlKDB4MjAyYSwgMHgyMDJlKSk7Ci0gICAgY2hh
cmFjdGVyQ2xhc3MtPm1fcmFuZ2VzVW5pY29kZS5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHgyMDMw
LCAweDIwNWUpKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChD
aGFyYWN0ZXJSYW5nZSgweDIwNjAsIDB4MmZmZikpOwotICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jh
bmdlc1VuaWNvZGUuYXBwZW5kKENoYXJhY3RlclJhbmdlKDB4MzAwMSwgMHhmZmZmKSk7Ci0gICAg
Ci0gICAgcmV0dXJuIGNoYXJhY3RlckNsYXNzOwotfQotCi1DaGFyYWN0ZXJDbGFzcyogbm9ud29y
ZGNoYXJDcmVhdGUoKQotewotICAgIENoYXJhY3RlckNsYXNzKiBjaGFyYWN0ZXJDbGFzcyA9IG5l
dyBDaGFyYWN0ZXJDbGFzcygpOwotCi0gICAgY2hhcmFjdGVyQ2xhc3MtPm1fbWF0Y2hlcy5hcHBl
bmQoJ2AnKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBwZW5kKENoYXJhY3RlclJh
bmdlKDAsICcwJyAtIDEpKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBwZW5kKENo
YXJhY3RlclJhbmdlKCc5JyArIDEsICdBJyAtIDEpKTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9y
YW5nZXMuYXBwZW5kKENoYXJhY3RlclJhbmdlKCdaJyArIDEsICdfJyAtIDEpKTsKLSAgICBjaGFy
YWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBwZW5kKENoYXJhY3RlclJhbmdlKCd6JyArIDEsIDB4N2Yp
KTsKLSAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0ZXJS
YW5nZSgweDgwLCAweGZmZmYpKTsKLQotICAgIHJldHVybiBjaGFyYWN0ZXJDbGFzczsKLX0KLQot
CiBjbGFzcyBSZWdleFBhdHRlcm5Db25zdHJ1Y3RvciB7CiBwdWJsaWM6CiAgICAgUmVnZXhQYXR0
ZXJuQ29uc3RydWN0b3IoUmVnZXhQYXR0ZXJuJiBwYXR0ZXJuKQpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUveWFyci9SZWdleEpJVC5jcHAgYi9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4SklU
LmNwcAppbmRleCBmMzdhYmJmLi5jMGJmMjQ4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS95
YXJyL1JlZ2V4SklULmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4SklULmNwcApA
QCAtNDAsNiArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFlhcnIgewogCisjaW5jbHVkZSAiUmVnRXhwSml0VGFibGVzLmgiCiAKIGNsYXNz
IFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgZnJpZW5kIHZv
aWQgaml0Q29tcGlsZVJlZ2V4KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgUmVnZXhDb2RlQmxv
Y2smIGppdE9iamVjdCwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQmIG51bVN1YnBh
dHRlcm5zLCBjb25zdCBjaGFyKiYgZXJyb3IsIGJvb2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxp
bmUpOwpAQCAtMTU1LDYgKzE1NiwxMSBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogCiAgICAgdm9pZCBtYXRjaENoYXJhY3RlckNsYXNzKFJlZ2lzdGVy
SUQgY2hhcmFjdGVyLCBKdW1wTGlzdCYgbWF0Y2hEZXN0LCBjb25zdCBDaGFyYWN0ZXJDbGFzcyog
Y2hhckNsYXNzKQogICAgIHsKKyAgICAgICAgaWYgKGNoYXJDbGFzcy0+bV90YWJsZSkgeworICAg
ICAgICAgICAgRXh0ZW5kZWRBZGRyZXNzIHRhYmxlRW50cnkoY2hhcmFjdGVyLCByZWludGVycHJl
dF9jYXN0PGludHB0cl90PihjaGFyQ2xhc3MtPm1fdGFibGUtPm1fdGFibGUpKTsKKyAgICAgICAg
ICAgIG1hdGNoRGVzdC5hcHBlbmQoYnJhbmNoVGVzdDgoY2hhckNsYXNzLT5tX3RhYmxlLT5tX2lu
dmVydGVkID8gWmVybyA6IE5vblplcm8sIHRhYmxlRW50cnkpKTsgICAKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogICAgICAgICBKdW1wIHVuaWNvZGVGYWlsOwogICAgICAgICBpZiAo
Y2hhckNsYXNzLT5tX21hdGNoZXNVbmljb2RlLnNpemUoKSB8fCBjaGFyQ2xhc3MtPm1fcmFuZ2Vz
VW5pY29kZS5zaXplKCkpIHsKICAgICAgICAgICAgIEp1bXAgaXNBc2NpaSA9IGJyYW5jaDMyKExl
c3NUaGFuT3JFcXVhbCwgY2hhcmFjdGVyLCBJbW0zMigweDdmKSk7CkBAIC02MDksOSArNjE1LDE0
IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
ICAgICAgICBBU1NFUlQoIW1fcGF0dGVybi5tX2lnbm9yZUNhc2UgfHwgKFVuaWNvZGU6OnRvTG93
ZXIoY2gpID09IFVuaWNvZGU6OnRvVXBwZXIoY2gpKSk7CiAgICAgICAgICAgICBmYWlsdXJlcy5h
cHBlbmQoanVtcElmQ2hhck5vdEVxdWFscyhjaCwgc3RhdGUuaW5wdXRPZmZzZXQoKSkpOwogICAg
ICAgICB9CisKICAgICAgICAgYWRkMzIoSW1tMzIoMSksIGNvdW50UmVnaXN0ZXIpOwogICAgICAg
ICBhZGQzMihJbW0zMigxKSwgaW5kZXgpOwotICAgICAgICBicmFuY2gzMihOb3RFcXVhbCwgY291
bnRSZWdpc3RlciwgSW1tMzIodGVybS5xdWFudGl0eUNvdW50KSkubGlua1RvKGxvb3AsIHRoaXMp
OworICAgICAgICBpZiAodGVybS5xdWFudGl0eUNvdW50ICE9IDB4ZmZmZmZmZmYpCisgICAgICAg
ICAgICBicmFuY2gzMihOb3RFcXVhbCwgY291bnRSZWdpc3RlciwgSW1tMzIodGVybS5xdWFudGl0
eUNvdW50KSkubGlua1RvKGxvb3AsIHRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBq
dW1wKGxvb3ApOworCiAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChqdW1wKCkpOwogCiAgICAgICAg
IExhYmVsIGJhY2t0cmFja0JlZ2luKHRoaXMpOwpAQCAtNjQ2LDcgKzY1Nyw4IEBAIGNsYXNzIFJl
Z2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIGxvYWRGcm9t
RnJhbWUodGVybS5mcmFtZUxvY2F0aW9uLCBjb3VudFJlZ2lzdGVyKTsKIAogICAgICAgICBhdEVu
ZE9mSW5wdXQoKS5saW5rVG8oaGFyZEZhaWwsIHRoaXMpOwotICAgICAgICBicmFuY2gzMihFcXVh
bCwgY291bnRSZWdpc3RlciwgSW1tMzIodGVybS5xdWFudGl0eUNvdW50KSwgaGFyZEZhaWwpOwor
ICAgICAgICBpZiAodGVybS5xdWFudGl0eUNvdW50ICE9IDB4ZmZmZmZmZmYpCisgICAgICAgICAg
ICBicmFuY2gzMihFcXVhbCwgY291bnRSZWdpc3RlciwgSW1tMzIodGVybS5xdWFudGl0eUNvdW50
KSwgaGFyZEZhaWwpOwogICAgICAgICBpZiAobV9wYXR0ZXJuLm1faWdub3JlQ2FzZSAmJiBpc0FT
Q0lJQWxwaGEoY2gpKSB7CiAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKHN0YXRlLmlucHV0T2Zm
c2V0KCksIGNoYXJhY3Rlcik7CiAgICAgICAgICAgICBvcjMyKEltbTMyKDMyKSwgY2hhcmFjdGVy
KTsKQEAgLTczMiw3ICs3NDQsMTEgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1h
Y3JvQXNzZW1ibGVyIHsKIAogICAgICAgICBhZGQzMihJbW0zMigxKSwgY291bnRSZWdpc3Rlcik7
CiAgICAgICAgIGFkZDMyKEltbTMyKDEpLCBpbmRleCk7Ci0gICAgICAgIGJyYW5jaDMyKE5vdEVx
dWFsLCBjb3VudFJlZ2lzdGVyLCBJbW0zMih0ZXJtLnF1YW50aXR5Q291bnQpKS5saW5rVG8obG9v
cCwgdGhpcyk7CisgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5Q291bnQgIT0gMHhmZmZmZmZmZikK
KyAgICAgICAgICAgIGJyYW5jaDMyKE5vdEVxdWFsLCBjb3VudFJlZ2lzdGVyLCBJbW0zMih0ZXJt
LnF1YW50aXR5Q291bnQpKS5saW5rVG8obG9vcCwgdGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGp1bXAobG9vcCk7CisKICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGp1bXAoKSk7CiAK
ICAgICAgICAgTGFiZWwgYmFja3RyYWNrQmVnaW4odGhpcyk7CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1JlZ2V4UGF0dGVybi5oIGIvSmF2YVNjcmlwdENvcmUveWFyci9SZWdleFBh
dHRlcm4uaAppbmRleCA2OWJlZTBjLi5hOTM5OWJkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1JlZ2V4UGF0dGVybi5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhQYXR0
ZXJuLmgKQEAgLTU2LDExICs1NiwzMiBAQCBzdHJ1Y3QgQ2hhcmFjdGVyUmFuZ2UgewogICAgIH0K
IH07CiAKK3N0cnVjdCBDaGFyYWN0ZXJDbGFzc1RhYmxlIDogUmVmQ291bnRlZDxDaGFyYWN0ZXJD
bGFzc1RhYmxlPiB7CisgICAgY29uc3QgY2hhciogbV90YWJsZTsKKyAgICBib29sIG1faW52ZXJ0
ZWQ7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2hhcmFjdGVyQ2xhc3NUYWJsZT4gY3JlYXRlKGNv
bnN0IGNoYXIqIHRhYmxlLCBib29sIGludmVydGVkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDaGFyYWN0ZXJDbGFzc1RhYmxlKHRhYmxlLCBpbnZlcnRlZCkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBDaGFyYWN0ZXJDbGFzc1RhYmxlKGNvbnN0IGNoYXIqIHRhYmxlLCBi
b29sIGludmVydGVkKQorICAgICAgICA6IG1fdGFibGUodGFibGUpCisgICAgICAgICwgbV9pbnZl
cnRlZChpbnZlcnRlZCkKKyAgICB7CisgICAgfQorfTsKKwogc3RydWN0IENoYXJhY3RlckNsYXNz
IDogRmFzdEFsbG9jQmFzZSB7CisgICAgQ2hhcmFjdGVyQ2xhc3MoUGFzc1JlZlB0cjxDaGFyYWN0
ZXJDbGFzc1RhYmxlPiB0YWJsZSkKKyAgICAgICAgOiBtX3RhYmxlKHRhYmxlKQorICAgIHsKKyAg
ICB9CiAgICAgVmVjdG9yPFVDaGFyPiBtX21hdGNoZXM7CiAgICAgVmVjdG9yPENoYXJhY3RlclJh
bmdlPiBtX3JhbmdlczsKICAgICBWZWN0b3I8VUNoYXI+IG1fbWF0Y2hlc1VuaWNvZGU7CiAgICAg
VmVjdG9yPENoYXJhY3RlclJhbmdlPiBtX3Jhbmdlc1VuaWNvZGU7CisgICAgUmVmUHRyPENoYXJh
Y3RlckNsYXNzVGFibGU+IG1fdGFibGU7CiB9OwogCiBlbnVtIFF1YW50aWZpZXJUeXBlIHsK
</data>
<flag name="review"
          id="37687"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>