<?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>148934</bug_id>
          
          <creation_ts>2015-09-07 10:53:27 -0700</creation_ts>
          <short_desc>Implement control flow statements in WebAssembly</short_desc>
          <delta_ts>2015-09-08 16:05:12 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>146064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sukolsak Sakshuwong">sukolsak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>saam</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1124139</commentid>
    <comment_count>0</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-07 10:53:27 -0700</bug_when>
    <thetext>This patch implements if, while, do, label, break, and continue statements in WebAssembly. Switches will be implemented in a subsequent patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124140</commentid>
    <comment_count>1</comment_count>
      <attachid>260741</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-07 10:58:52 -0700</bug_when>
    <thetext>Created attachment 260741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124141</commentid>
    <comment_count>2</comment_count>
      <attachid>260742</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-07 11:10:12 -0700</bug_when>
    <thetext>Created attachment 260742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124225</commentid>
    <comment_count>3</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-08 07:27:02 -0700</bug_when>
    <thetext>When we implement an LLVM IR generator for WebAssembly, JumpTarget will be just an LLVM Basic Block. The code will look like this:

typedef LBasicBlock JumpTarget;

LBasicBlock newTarget()
{
    return m_out.newBlock();
}

void linkTarget(LBasicBlock target)
{
    m_out.jump(target);
    m_out.appendTo(target);
}
    
void jumpToTarget(LBasicBlock target)
{
    m_out.jump(target);
}
    
void jumpToTargetIf(JumpCondition condition, LValue expression, LBasicBlock target)
{
    LBasicBlock notTaken = m_out.newBlock();
    m_out.branch((condition == JumpCondition::Zero) ? m_out.isZero32(expression) : m_out.notZero32(expression), FTL::unsure(target), FTL::unsure(notTaken));
    m_out.appendTo(notTaken);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124308</commentid>
    <comment_count>4</comment_count>
      <attachid>260742</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-08 11:13:19 -0700</bug_when>
    <thetext>Comment on attachment 260742
Patch

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

r=me

&gt; Source/JavaScriptCore/wasm/WASMFunctionCompiler.h:407
&gt; +    void endLabel()
&gt; +    {
&gt; +        linkTarget(m_breakLabelTargets.last());
&gt; +
&gt; +        m_breakLabelTargets.removeLast();
&gt; +        m_continueLabelTargets.removeLast();
&gt; +    }

Is it guaranteed that WASM can&apos;t have arbitrary gotos? (An arbitrary goto would make the push/pop model of labels invalid.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124331</commentid>
    <comment_count>5</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-08 11:36:15 -0700</bug_when>
    <thetext>Thanks!

(In reply to comment #4)
&gt; Comment on attachment 260742 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260742&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/WASMFunctionCompiler.h:407
&gt; &gt; +    void endLabel()
&gt; &gt; +    {
&gt; &gt; +        linkTarget(m_breakLabelTargets.last());
&gt; &gt; +
&gt; &gt; +        m_breakLabelTargets.removeLast();
&gt; &gt; +        m_continueLabelTargets.removeLast();
&gt; &gt; +    }
&gt; 
&gt; Is it guaranteed that WASM can&apos;t have arbitrary gotos? (An arbitrary goto
&gt; would make the push/pop model of labels invalid.)

goto is not part of the MVP, but it is under consideration for a future version. &lt;https://github.com/WebAssembly/design/blob/master/FutureFeatures.md#more-expressive-control-flow&gt; The WASM format that we are using doesn&apos;t have goto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124432</commentid>
    <comment_count>6</comment_count>
      <attachid>260742</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-08 16:05:08 -0700</bug_when>
    <thetext>Comment on attachment 260742
Patch

Clearing flags on attachment: 260742

Committed r189514: &lt;http://trac.webkit.org/changeset/189514&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124433</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-08 16:05:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260741</attachid>
            <date>2015-09-07 10:58:52 -0700</date>
            <delta_ts>2015-09-07 11:10:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148934-20150907105849.patch</filename>
            <type>text/plain</type>
            <size>20085</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTc2NmNhYWVhYThlOTk4NDljODdlYWE0NjBjNDZhNzIyMTNjZjgzLi41ODRlMGRjODgzMThjMWZi
ZDQ1YTYwNGU3YzYxOTFlODVkYmY5YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNS0wOS0wNyAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdt
YWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgY29udHJvbCBmbG93IHN0YXRlbWVudHMgaW4g
V2ViQXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0ODkzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBpZiwgd2hpbGUsIGRvLCBsYWJlbCwgYnJlYWssIGFu
ZCBjb250aW51ZQorICAgICAgICBzdGF0ZW1lbnRzIGluIFdlYkFzc2VtYmx5LiBTd2l0Y2hlcyB3
aWxsIGJlIGltcGxlbWVudGVkIGluIGEgc3Vic2VxdWVudAorICAgICAgICBwYXRjaC4KKworICAg
ICAgICAqIHRlc3RzL3N0cmVzcy93YXNtLWNvbnRyb2wtZmxvdy5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3dhc20vY29udHJvbC1mbG93Lndh
c206IEFkZGVkLgorICAgICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIuaDoKKyAgICAg
ICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmxpbmtUYXJnZXQpOgorICAgICAgICAoSlND
OjpXQVNNRnVuY3Rpb25Db21waWxlcjo6anVtcFRvVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V0FT
TUZ1bmN0aW9uQ29tcGlsZXI6Omp1bXBUb1RhcmdldElmKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uQ29tcGlsZXI6OnN0YXJ0TG9vcCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNv
bXBpbGVyOjplbmRMb29wKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OnN0
YXJ0U3dpdGNoKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmVuZFN3aXRj
aCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNvbXBpbGVyOjpzdGFydExhYmVsKToKKyAg
ICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmVuZExhYmVsKToKKyAgICAgICAgKEpT
Qzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmJyZWFrVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V0FT
TUZ1bmN0aW9uQ29tcGlsZXI6OmNvbnRpbnVlVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uQ29tcGlsZXI6OmJyZWFrTGFiZWxUYXJnZXQpOgorICAgICAgICAoSlNDOjpXQVNNRnVu
Y3Rpb25Db21waWxlcjo6Y29udGludWVMYWJlbFRhcmdldCk6CisgICAgICAgICogd2FzbS9XQVNN
RnVuY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OnBh
cnNlSWZTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNl
SWZFbHNlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJz
ZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJz
ZURvU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUxh
YmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUJy
ZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUJy
ZWFrTGFiZWxTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OnBh
cnNlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6
OnBhcnNlQ29udGludWVMYWJlbFN0YXRlbWVudCk6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rp
b25QYXJzZXIuaDoKKyAgICAgICAgKiB3YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaDoK
KyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6bGlua1RhcmdldCk6Cisg
ICAgICAgIChKU0M6OldBU01GdW5jdGlvblN5bnRheENoZWNrZXI6Omp1bXBUb1RhcmdldCk6Cisg
ICAgICAgIChKU0M6OldBU01GdW5jdGlvblN5bnRheENoZWNrZXI6Omp1bXBUb1RhcmdldElmKToK
KyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6c3RhcnRMb29wKToKKyAg
ICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6ZW5kTG9vcCk6CisgICAgICAg
IChKU0M6OldBU01GdW5jdGlvblN5bnRheENoZWNrZXI6OnN0YXJ0U3dpdGNoKToKKyAgICAgICAg
KEpTQzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6ZW5kU3dpdGNoKToKKyAgICAgICAgKEpT
Qzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6c3RhcnRMYWJlbCk6CisgICAgICAgIChKU0M6
OldBU01GdW5jdGlvblN5bnRheENoZWNrZXI6OmVuZExhYmVsKToKKyAgICAgICAgKEpTQzo6V0FT
TUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6YnJlYWtUYXJnZXQpOgorICAgICAgICAoSlNDOjpXQVNN
RnVuY3Rpb25TeW50YXhDaGVja2VyOjpjb250aW51ZVRhcmdldCk6CisgICAgICAgIChKU0M6OldB
U01GdW5jdGlvblN5bnRheENoZWNrZXI6OmJyZWFrTGFiZWxUYXJnZXQpOgorICAgICAgICAoSlND
OjpXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyOjpjb250aW51ZUxhYmVsVGFyZ2V0KToKKwogMjAx
NS0wOS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgR2FyZGVu
aW5nOiBmaXggYnJva2VuIFdpbmRvd3MgYnVpbGQgYWZ0ZXIgcjE4OTQ1NC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvd2FzbS1jb250cm9sLWZsb3cuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dhc20tY29udHJvbC1mbG93Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBlNDYyZTZkMDIxZGMyYmExNDJmOWU0NTE0M2MwYWNkNTlhZDljNzEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dhc20t
Y29udHJvbC1mbG93LmpzCkBAIC0wLDAgKzEsMjQ3IEBACisvL0Agc2tpcAorCitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
LyoKK3dhc20vY29udHJvbC1mbG93Lndhc20gaXMgZ2VuZXJhdGVkIGJ5IHBhY2stYXNtanMgPGh0
dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9wb2x5ZmlsbC1wcm90b3R5cGUtMT4gZnJvbSB0
aGUgZm9sbG93aW5nIHNjcmlwdDoKKworZnVuY3Rpb24gYXNtTW9kdWxlKGdsb2JhbCwgZW52LCBi
dWZmZXIpIHsKKyAgICAidXNlIGFzbSI7CisKKyAgICBmdW5jdGlvbiBpZlRydWUoKSB7CisgICAg
ICAgIHZhciB4ID0gMDsKKyAgICAgICAgeCA9IDU7CisgICAgICAgIGlmICgoeCB8IDApID4gMCkK
KyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBpZkZhbHNlKCkgeworICAgICAgICB2YXIgeCA9IDA7CisgICAgICAgIGlmICgoeCB8
IDApID4gMCkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBpZkVsc2VUcnVlKCkgeworICAgICAgICB2YXIgeCA9IDA7CisgICAg
ICAgIHggPSA1OworICAgICAgICBpZiAoKHggfCAwKSA+IDApCisgICAgICAgICAgICByZXR1cm4g
MTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gaWZFbHNlRmFsc2UoKSB7CisgICAgICAgIHZhciB4ID0gMDsKKyAgICAgICAgaWYgKCh4
IHwgMCkgPiAwKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHJldHVybiAyOworICAgIH0KKworICAgIGZ1bmN0aW9uIGlmSW5JZigpIHsKKyAgICAgICAg
dmFyIHggPSAwLCB5ID0gMDsKKyAgICAgICAgeCA9IDE7CisgICAgICAgIGlmICh4ID09IDApIHsK
KyAgICAgICAgICAgIGlmICh5ID09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpZiAoeSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAzOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gd2hpbGVMb29wKCkgeworICAgICAgICB2YXIgeCA9IDAsIGkgPSAw
OworICAgICAgICB3aGlsZSAoKGkgfCAwKSA8IDUpIHsKKyAgICAgICAgICAgIHggPSAoeCArIDEp
IHwgMDsKKyAgICAgICAgICAgIGkgPSAoaSArIDEpIHwgMDsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4geDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB3aGlsZUJyZWFrKCkgeworICAgICAgICB2
YXIgeCA9IDAsIGkgPSAwOworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgaWYgKGkg
PT0gMikKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHggPSAoeCArIDEpIHwg
MDsKKyAgICAgICAgICAgIGkgPSAoaSArIDEpIHwgMDsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4geDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB3aGlsZUNvbnRpbnVlKCkgeworICAgICAgICB2
YXIgeCA9IDAsIGkgPSAwOworICAgICAgICB3aGlsZSAoKGkgfCAwKSA8IDUpIHsKKyAgICAgICAg
ICAgIGlmIChpID09IDIpIHsKKyAgICAgICAgICAgICAgICBpID0gMzsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHggPSAoeCArIDEpIHwgMDsK
KyAgICAgICAgICAgIGkgPSAoaSArIDEpIHwgMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
eDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB3aGlsZUluV2hpbGUoKSB7CisgICAgICAgIHZhciB4
ID0gMCwgaSA9IDAsIGogPSAwOworICAgICAgICB3aGlsZSAoKGkgfCAwKSA8IDUpIHsKKyAgICAg
ICAgICAgIGogPSAwOworICAgICAgICAgICAgd2hpbGUgKChqIHwgMCkgPCAyKSB7CisgICAgICAg
ICAgICAgICAgeCA9ICh4ICsgMSkgfCAwOworICAgICAgICAgICAgICAgIGogPSAoaiArIDEpIHwg
MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGkgPSAoaSArIDEpIHwgMDsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4geDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkb0xvb3AoKSB7Cisg
ICAgICAgIHZhciB4ID0gMCwgaSA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHggPSAo
eCArIDEpIHwgMDsKKyAgICAgICAgICAgIGkgPSAoaSArIDEpIHwgMDsKKyAgICAgICAgfSB3aGls
ZSAoKGkgfCAwKSA8IDApOworICAgICAgICByZXR1cm4geDsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBkb0JyZWFrKCkgeworICAgICAgICB2YXIgeCA9IDAsIGkgPSAwOworICAgICAgICBkbyB7Cisg
ICAgICAgICAgICBpZiAoaSA9PSAyKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgeCA9ICh4ICsgMSkgfCAwOworICAgICAgICAgICAgaSA9IChpICsgMSkgfCAwOworICAgICAg
ICB9IHdoaWxlICgxKTsKKyAgICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgZnVuY3Rpb24g
ZG9Db250aW51ZSgpIHsKKyAgICAgICAgdmFyIHggPSAwLCBpID0gMDsKKyAgICAgICAgZG8gewor
ICAgICAgICAgICAgaWYgKGkgPT0gMikgeworICAgICAgICAgICAgICAgIGkgPSAzOworICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeCA9ICh4ICsg
MSkgfCAwOworICAgICAgICAgICAgaSA9IChpICsgMSkgfCAwOworICAgICAgICB9IHdoaWxlICgo
aSB8IDApIDwgNSk7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIGZ1bmN0aW9uIGxh
YmVsQnJlYWsoKSB7CisgICAgICAgIHZhciB4ID0gMDsKKyAgICAgICAgbGFiZWw6IGRvIHsKKyAg
ICAgICAgICAgIHggPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB4ID0gMjsK
KyAgICAgICAgfSB3aGlsZSAoMCk7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIGZ1
bmN0aW9uIGxhYmVsQ29udGludWUoKSB7CisgICAgICAgIHZhciB4ID0gMDsKKyAgICAgICAgbGFi
ZWw6IGRvIHsKKyAgICAgICAgICAgIGlmICh4ID09IDEpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB4ID0gMTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
eCA9IDI7CisgICAgICAgIH0gd2hpbGUgKDApOworICAgICAgICByZXR1cm4geDsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBsYWJlbEluTGFiZWxCcmVha0lubmVyKCkgeworICAgICAgICB2YXIgeCA9
IDA7CisgICAgICAgIG91dGVyOiBkbyB7CisgICAgICAgICAgICB4ID0gMTsKKyAgICAgICAgICAg
IGlubmVyOiBkbyB7CisgICAgICAgICAgICAgICAgeCA9IDI7CisgICAgICAgICAgICAgICAgYnJl
YWsgaW5uZXI7CisgICAgICAgICAgICAgICAgeCA9IDM7CisgICAgICAgICAgICB9IHdoaWxlICgw
KTsKKyAgICAgICAgICAgIHggPSA0OworICAgICAgICB9IHdoaWxlICgwKTsKKyAgICAgICAgcmV0
dXJuIHg7CisgICAgfQorCisgICAgZnVuY3Rpb24gbGFiZWxJbkxhYmVsQnJlYWtPdXRlcigpIHsK
KyAgICAgICAgdmFyIHggPSAwOworICAgICAgICBvdXRlcjogZG8geworICAgICAgICAgICAgeCA9
IDE7CisgICAgICAgICAgICBpbm5lcjogZG8geworICAgICAgICAgICAgICAgIHggPSAyOworICAg
ICAgICAgICAgICAgIGJyZWFrIG91dGVyOworICAgICAgICAgICAgICAgIHggPSAzOworICAgICAg
ICAgICAgfSB3aGlsZSAoMCk7CisgICAgICAgICAgICB4ID0gNDsKKyAgICAgICAgfSB3aGlsZSAo
MCk7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIGZ1bmN0aW9uIHdoaWxlSW5XaGls
ZUJyZWFrT3V0ZXIoKSB7CisgICAgICAgIHZhciB4ID0gMCwgaSA9IDAsIGogPSAwOworICAgICAg
ICBsYWJlbDoKKyAgICAgICAgd2hpbGUgKChpIHwgMCkgPCA1KSB7CisgICAgICAgICAgICBqID0g
MDsKKyAgICAgICAgICAgIHdoaWxlICgoaiB8IDApIDwgMikgeworICAgICAgICAgICAgICAgIHgg
PSAoeCArIDEpIHwgMDsKKyAgICAgICAgICAgICAgICBpZiAoeCA9PSA4KQorICAgICAgICAgICAg
ICAgICAgICBicmVhayBsYWJlbDsKKyAgICAgICAgICAgICAgICBqID0gKGogKyAxKSB8IDA7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpID0gKGkgKyAxKSB8IDA7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgcmV0dXJuIHsKKyAgICAgICAgaWZUcnVlOiBp
ZlRydWUsCisgICAgICAgIGlmRmFsc2U6IGlmRmFsc2UsCisgICAgICAgIGlmRWxzZVRydWU6IGlm
RWxzZVRydWUsCisgICAgICAgIGlmRWxzZUZhbHNlOiBpZkVsc2VGYWxzZSwKKyAgICAgICAgaWZJ
bklmOiBpZkluSWYsCisgICAgICAgIHdoaWxlTG9vcDogd2hpbGVMb29wLAorICAgICAgICB3aGls
ZUJyZWFrOiB3aGlsZUJyZWFrLAorICAgICAgICB3aGlsZUNvbnRpbnVlOiB3aGlsZUNvbnRpbnVl
LAorICAgICAgICB3aGlsZUluV2hpbGU6IHdoaWxlSW5XaGlsZSwKKyAgICAgICAgZG9Mb29wOiBk
b0xvb3AsCisgICAgICAgIGRvQnJlYWs6IGRvQnJlYWssCisgICAgICAgIGRvQ29udGludWU6IGRv
Q29udGludWUsCisgICAgICAgIGxhYmVsQnJlYWs6IGxhYmVsQnJlYWssCisgICAgICAgIGxhYmVs
Q29udGludWU6IGxhYmVsQ29udGludWUsCisgICAgICAgIGxhYmVsSW5MYWJlbEJyZWFrSW5uZXI6
IGxhYmVsSW5MYWJlbEJyZWFrSW5uZXIsCisgICAgICAgIGxhYmVsSW5MYWJlbEJyZWFrT3V0ZXI6
IGxhYmVsSW5MYWJlbEJyZWFrT3V0ZXIsCisgICAgICAgIHdoaWxlSW5XaGlsZUJyZWFrT3V0ZXI6
IHdoaWxlSW5XaGlsZUJyZWFrT3V0ZXIsCisgICAgfTsKK30KKyovCisKK3ZhciBtb2R1bGUgPSBs
b2FkV2ViQXNzZW1ibHkoIndhc20vY29udHJvbC1mbG93Lndhc20iKTsKKworc2hvdWxkQmUobW9k
dWxlLmlmVHJ1ZSgpLCAxKTsKK3Nob3VsZEJlKG1vZHVsZS5pZkZhbHNlKCksIDApOworc2hvdWxk
QmUobW9kdWxlLmlmRWxzZVRydWUoKSwgMSk7CitzaG91bGRCZShtb2R1bGUuaWZFbHNlRmFsc2Uo
KSwgMik7CitzaG91bGRCZShtb2R1bGUuaWZJbklmKCksIDMpOworc2hvdWxkQmUobW9kdWxlLndo
aWxlTG9vcCgpLCA1KTsKK3Nob3VsZEJlKG1vZHVsZS53aGlsZUJyZWFrKCksIDIpOworc2hvdWxk
QmUobW9kdWxlLndoaWxlQ29udGludWUoKSwgNCk7CitzaG91bGRCZShtb2R1bGUud2hpbGVJbldo
aWxlKCksIDEwKTsKK3Nob3VsZEJlKG1vZHVsZS5kb0xvb3AoKSwgMSk7CitzaG91bGRCZShtb2R1
bGUuZG9CcmVhaygpLCAyKTsKK3Nob3VsZEJlKG1vZHVsZS5kb0NvbnRpbnVlKCksIDQpOworc2hv
dWxkQmUobW9kdWxlLmxhYmVsQnJlYWsoKSwgMSk7CitzaG91bGRCZShtb2R1bGUubGFiZWxDb250
aW51ZSgpLCAxKTsKK3Nob3VsZEJlKG1vZHVsZS5sYWJlbEluTGFiZWxCcmVha0lubmVyKCksIDQp
Oworc2hvdWxkQmUobW9kdWxlLmxhYmVsSW5MYWJlbEJyZWFrT3V0ZXIoKSwgMik7CitzaG91bGRC
ZShtb2R1bGUud2hpbGVJbldoaWxlQnJlYWtPdXRlcigpLCA4KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvd2FzbS9jb250cm9sLWZsb3cud2FzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvd2FzbS9jb250cm9sLWZsb3cud2FzbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NmMwNzNkM2FmYTIwN2ZiMjAzMzRhMWQ0MjE2YTBiYTU0MmIyNDBlCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCA2MjUKemNtWlhQJVQ5d3A2byFZUC1mRVJndVBZdmI2LSFxZE8t
UCEhRj4jRzQjRUNlVlVlZkpBVXhjQTs7JHVMYyU7OEw3Cnp0Zzt5WF5QVF92WEojRU5LNl9uTWU7
Uy17U1Z9ZjMpIUUqPER8M1N6ZDVWPXtkdDFeWClmJHl5IyU7SUVQMGU8egp6ZFpJWTB0K0M1Ky0+
ZGN9Vz1fZGRye1lFXzJzZEBodCV9aEp0Wmpmem9OZ3pvd1VHJldtaU42d0EoSnhhKDU0TWsKenhG
QCFZe0syMWlTYkJzZjtiTnN4cmckaU5qRWA2JHJsSU9zWllnUiRRQWlsVFIqV15hJkRwTjhEdmxi
eSE5I2QrCnpiN1FASmklOSQpQlh3YGhCR0pveTYoVTVVcnl5UjBORiZqc195ZmRKJVo1JU9wWlhF
JXRsdm8tUEx0I2RvcUBjYwp6aHJ0SXIybU8lSEM3fmtrMCFwOTApQEYxJE9KTHc/bVBtSlptYkJM
RUlDdStWJCRPeU4pKHc8Q293ZzMyKHJ9SiQKUnxNQlA1UWdHdzxSIUVmR2B+aSVFJiRze3AKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNRnVuY3Rpb25Db21waWxlci5oCmluZGV4IDA1OGMxZGI4ZGE2MWNmMmNhMjExZTdjNjk5MjE0
ZTg0NmNmYzI5NjQuLjUxMTQ1ODI4ZDA5NWRmNjcwODlhYjFjYjdjMmE0MDUxYzcwMzgzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIu
aApAQCAtNjMsNiArNjMsMTEgQEAgY2xhc3MgV0FTTUZ1bmN0aW9uQ29tcGlsZXIgOiBwcml2YXRl
IENDYWxsSGVscGVycyB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBpbnQgRXhwcmVzc2lvbjsKICAg
ICB0eXBlZGVmIGludCBTdGF0ZW1lbnQ7CisgICAgc3RydWN0IEp1bXBUYXJnZXQgeworICAgICAg
ICBMYWJlbCBsYWJlbDsKKyAgICAgICAgSnVtcExpc3QganVtcExpc3Q7CisgICAgfTsKKyAgICBl
bnVtIGNsYXNzIEp1bXBDb25kaXRpb24geyBaZXJvLCBOb25aZXJvIH07CiAKICAgICBXQVNNRnVu
Y3Rpb25Db21waWxlcihWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBzdGFj
a0hlaWdodCkKICAgICAgICAgOiBDQ2FsbEhlbHBlcnMoJnZtLCBjb2RlQmxvY2spCkBAIC0zMzgs
NiArMzQzLDg5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFVOVVNFRDsKICAgICB9CiAKKyAg
ICB2b2lkIGxpbmtUYXJnZXQoSnVtcFRhcmdldCYgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgdGFy
Z2V0LmxhYmVsID0gbGFiZWwoKTsKKyAgICAgICAgdGFyZ2V0Lmp1bXBMaXN0LmxpbmsodGhpcyk7
CisgICAgfQorCisgICAgdm9pZCBqdW1wVG9UYXJnZXQoSnVtcFRhcmdldCYgdGFyZ2V0KQorICAg
IHsKKyAgICAgICAgaWYgKHRhcmdldC5sYWJlbC5pc1NldCgpKQorICAgICAgICAgICAganVtcCh0
YXJnZXQubGFiZWwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0YXJnZXQuanVtcExpc3Qu
YXBwZW5kKGp1bXAoKSk7CisgICAgfQorCisgICAgdm9pZCBqdW1wVG9UYXJnZXRJZihKdW1wQ29u
ZGl0aW9uIGNvbmRpdGlvbiwgaW50LCBKdW1wVGFyZ2V0JiB0YXJnZXQpCisgICAgeworICAgICAg
ICBsb2FkMzIodGVtcG9yYXJ5QWRkcmVzcyhtX3RlbXBTdGFja1RvcCAtIDEpLCBHUFJJbmZvOjpy
ZWdUMCk7CisgICAgICAgIG1fdGVtcFN0YWNrVG9wLS07CisgICAgICAgIEp1bXAgdGFrZW4gPSBi
cmFuY2hUZXN0MzIoKGNvbmRpdGlvbiA9PSBKdW1wQ29uZGl0aW9uOjpaZXJvKSA/IFplcm8gOiBO
b25aZXJvLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIGlmICh0YXJnZXQubGFiZWwuaXNTZXQo
KSkKKyAgICAgICAgICAgIHRha2VuLmxpbmtUbyh0YXJnZXQubGFiZWwsIHRoaXMpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB0YXJnZXQuanVtcExpc3QuYXBwZW5kKHRha2VuKTsKKyAgICB9
CisKKyAgICB2b2lkIHN0YXJ0TG9vcCgpCisgICAgeworICAgICAgICBtX2JyZWFrVGFyZ2V0cy5h
cHBlbmQoSnVtcFRhcmdldCgpKTsKKyAgICAgICAgbV9jb250aW51ZVRhcmdldHMuYXBwZW5kKEp1
bXBUYXJnZXQoKSk7CisgICAgfQorCisgICAgdm9pZCBlbmRMb29wKCkKKyAgICB7CisgICAgICAg
IG1fYnJlYWtUYXJnZXRzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgbV9jb250aW51ZVRhcmdldHMu
cmVtb3ZlTGFzdCgpOworICAgIH0KKworICAgIHZvaWQgc3RhcnRTd2l0Y2goKQorICAgIHsKKyAg
ICAgICAgbV9icmVha1RhcmdldHMuYXBwZW5kKEp1bXBUYXJnZXQoKSk7CisgICAgfQorCisgICAg
dm9pZCBlbmRTd2l0Y2goKQorICAgIHsKKyAgICAgICAgbV9icmVha1RhcmdldHMucmVtb3ZlTGFz
dCgpOworICAgIH0KKworICAgIHZvaWQgc3RhcnRMYWJlbCgpCisgICAgeworICAgICAgICBtX2Jy
ZWFrTGFiZWxUYXJnZXRzLmFwcGVuZChKdW1wVGFyZ2V0KCkpOworICAgICAgICBtX2NvbnRpbnVl
TGFiZWxUYXJnZXRzLmFwcGVuZChKdW1wVGFyZ2V0KCkpOworCisgICAgICAgIGxpbmtUYXJnZXQo
bV9jb250aW51ZUxhYmVsVGFyZ2V0cy5sYXN0KCkpOworICAgIH0KKworICAgIHZvaWQgZW5kTGFi
ZWwoKQorICAgIHsKKyAgICAgICAgbGlua1RhcmdldChtX2JyZWFrTGFiZWxUYXJnZXRzLmxhc3Qo
KSk7CisKKyAgICAgICAgbV9icmVha0xhYmVsVGFyZ2V0cy5yZW1vdmVMYXN0KCk7CisgICAgICAg
IG1fY29udGludWVMYWJlbFRhcmdldHMucmVtb3ZlTGFzdCgpOworICAgIH0KKworICAgIEp1bXBU
YXJnZXQmIGJyZWFrVGFyZ2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2JyZWFrVGFyZ2V0
cy5sYXN0KCk7CisgICAgfQorCisgICAgSnVtcFRhcmdldCYgY29udGludWVUYXJnZXQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fY29udGludWVUYXJnZXRzLmxhc3QoKTsKKyAgICB9CisKKyAg
ICBKdW1wVGFyZ2V0JiBicmVha0xhYmVsVGFyZ2V0KHVpbnQzMl90IGxhYmVsSW5kZXgpCisgICAg
eworICAgICAgICByZXR1cm4gbV9icmVha0xhYmVsVGFyZ2V0c1tsYWJlbEluZGV4XTsKKyAgICB9
CisKKyAgICBKdW1wVGFyZ2V0JiBjb250aW51ZUxhYmVsVGFyZ2V0KHVpbnQzMl90IGxhYmVsSW5k
ZXgpCisgICAgeworICAgICAgICByZXR1cm4gbV9jb250aW51ZUxhYmVsVGFyZ2V0c1tsYWJlbElu
ZGV4XTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdW5pb24gU3RhY2tTbG90IHsKICAgICAgICAg
aW50MzJfdCBpbnRWYWx1ZTsKQEAgLTM4Niw2ICs0NzQsMTEgQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCBtX251bWJlck9mTG9jYWxzOwogICAgIHVuc2lnbmVkIG1fdGVtcFN0YWNrVG9wIHsgMCB9
OwogCisgICAgVmVjdG9yPEp1bXBUYXJnZXQ+IG1fYnJlYWtUYXJnZXRzOworICAgIFZlY3RvcjxK
dW1wVGFyZ2V0PiBtX2NvbnRpbnVlVGFyZ2V0czsKKyAgICBWZWN0b3I8SnVtcFRhcmdldD4gbV9i
cmVha0xhYmVsVGFyZ2V0czsKKyAgICBWZWN0b3I8SnVtcFRhcmdldD4gbV9jb250aW51ZUxhYmVs
VGFyZ2V0czsKKwogICAgIExhYmVsIG1fYmVnaW5MYWJlbDsKICAgICBKdW1wIG1fc3RhY2tPdmVy
ZmxvdzsKICAgICBKdW1wTGlzdCBtX2RpdmlkZUVycm9ySnVtcExpc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcAppbmRleCBmYWIyZWI0
MjgwN2IxZDZiZWM3NTk2MWExNmZiYTVjNjMzMDYwNjQyLi4yYmFlMDgxMGIxZGZkNzA2NjM2MGUy
YzNhMDUzMTg1MGUyMGJmNGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01GdW5jdGlvblBhcnNlci5jcHAKQEAgLTI1MSw0NCArMjUxLDc3IEBAIENvbnRleHRTdGF0
ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUJsb2NrU3RhdGVtZW50KENvbnRleHQmIGNv
bnRleHQpCiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KIENvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZUlmU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
cGFyc2VFeHByZXNzaW9uSTMyKGNvbnRleHQpOworICAgIENvbnRleHRKdW1wVGFyZ2V0IGVuZDsK
KworICAgIENvbnRleHRFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb25JMzIo
Y29udGV4dCk7CiAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisKKyAgICBjb250ZXh0Lmp1bXBUb1Rh
cmdldElmKENvbnRleHQ6Okp1bXBDb25kaXRpb246Olplcm8sIGV4cHJlc3Npb24sIGVuZCk7CisK
ICAgICBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgaW5zdHJ1Y3Rpb24uCisgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisKKyAgICBjb250ZXh0Lmxp
bmtUYXJnZXQoZW5kKTsKICAgICByZXR1cm4gVU5VU0VEOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3Mg
Q29udGV4dD4KIENvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUlmRWxz
ZVN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0KQogewotICAgIHBhcnNlRXhwcmVzc2lvbkkzMihj
b250ZXh0KTsKKyAgICBDb250ZXh0SnVtcFRhcmdldCBlbHNlVGFyZ2V0OworICAgIENvbnRleHRK
dW1wVGFyZ2V0IGVuZDsKKworICAgIENvbnRleHRFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJz
ZUV4cHJlc3Npb25JMzIoY29udGV4dCk7CiAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisKKyAgICBj
b250ZXh0Lmp1bXBUb1RhcmdldElmKENvbnRleHQ6Okp1bXBDb25kaXRpb246Olplcm8sIGV4cHJl
c3Npb24sIGVsc2VUYXJnZXQpOworCiAgICAgcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAg
UFJPUEFHQVRFX0VSUk9SKCk7CisKKyAgICBjb250ZXh0Lmp1bXBUb1RhcmdldChlbmQpOworICAg
IGNvbnRleHQubGlua1RhcmdldChlbHNlVGFyZ2V0KTsKKwogICAgIHBhcnNlU3RhdGVtZW50KGNv
bnRleHQpOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBpbnN0cnVjdGlvbi4KKyAgICBQ
Uk9QQUdBVEVfRVJST1IoKTsKKworICAgIGNvbnRleHQubGlua1RhcmdldChlbmQpOwogICAgIHJl
dHVybiBVTlVTRUQ7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgogQ29udGV4dFN0YXRl
bWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlV2hpbGVTdGF0ZW1lbnQoQ29udGV4dCYgY29u
dGV4dCkKIHsKLSAgICBwYXJzZUV4cHJlc3Npb25JMzIoY29udGV4dCk7CisgICAgY29udGV4dC5z
dGFydExvb3AoKTsKKyAgICBjb250ZXh0LmxpbmtUYXJnZXQoY29udGV4dC5jb250aW51ZVRhcmdl
dCgpKTsKKworICAgIENvbnRleHRFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Np
b25JMzIoY29udGV4dCk7CiAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CiAKKyAgICBjb250ZXh0Lmp1
bXBUb1RhcmdldElmKENvbnRleHQ6Okp1bXBDb25kaXRpb246Olplcm8sIGV4cHJlc3Npb24sIGNv
bnRleHQuYnJlYWtUYXJnZXQoKSk7CisKICAgICBtX2JyZWFrU2NvcGVEZXB0aCsrOwogICAgIG1f
Y29udGludWVTY29wZURlcHRoKys7CiAgICAgcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAg
UFJPUEFHQVRFX0VSUk9SKCk7CiAgICAgbV9jb250aW51ZVNjb3BlRGVwdGgtLTsKICAgICBtX2Jy
ZWFrU2NvcGVEZXB0aC0tOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBpbnN0cnVjdGlv
bi4KKworICAgIGNvbnRleHQuanVtcFRvVGFyZ2V0KGNvbnRleHQuY29udGludWVUYXJnZXQoKSk7
CisKKyAgICBjb250ZXh0LmxpbmtUYXJnZXQoY29udGV4dC5icmVha1RhcmdldCgpKTsKKyAgICBj
b250ZXh0LmVuZExvb3AoKTsKICAgICByZXR1cm4gVU5VU0VEOwogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgQ29udGV4dD4KIENvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZURv
U3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCiB7CisgICAgY29udGV4dC5zdGFydExvb3AoKTsK
KworICAgIENvbnRleHRKdW1wVGFyZ2V0IHRvcE9mTG9vcDsKKyAgICBjb250ZXh0LmxpbmtUYXJn
ZXQodG9wT2ZMb29wKTsKKwogICAgIG1fYnJlYWtTY29wZURlcHRoKys7CiAgICAgbV9jb250aW51
ZVNjb3BlRGVwdGgrKzsKICAgICBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKQEAgLTI5Niw1NSAr
MzI5LDYzIEBAIENvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZURvU3Rh
dGVtZW50KENvbnRleHQmIGNvbnRleHQpCiAgICAgbV9jb250aW51ZVNjb3BlRGVwdGgtLTsKICAg
ICBtX2JyZWFrU2NvcGVEZXB0aC0tOwogCi0gICAgcGFyc2VFeHByZXNzaW9uSTMyKGNvbnRleHQp
OwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBpbnN0cnVjdGlvbi4KKyAgICBjb250ZXh0
LmxpbmtUYXJnZXQoY29udGV4dC5jb250aW51ZVRhcmdldCgpKTsKKworICAgIENvbnRleHRFeHBy
ZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb25JMzIoY29udGV4dCk7CisgICAgUFJP
UEFHQVRFX0VSUk9SKCk7CisKKyAgICBjb250ZXh0Lmp1bXBUb1RhcmdldElmKENvbnRleHQ6Okp1
bXBDb25kaXRpb246Ok5vblplcm8sIGV4cHJlc3Npb24sIHRvcE9mTG9vcCk7CisKKyAgICBjb250
ZXh0LmxpbmtUYXJnZXQoY29udGV4dC5icmVha1RhcmdldCgpKTsKKyAgICBjb250ZXh0LmVuZExv
b3AoKTsKICAgICByZXR1cm4gVU5VU0VEOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4K
IENvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUxhYmVsU3RhdGVtZW50
KENvbnRleHQmIGNvbnRleHQpCiB7CisgICAgY29udGV4dC5zdGFydExhYmVsKCk7CiAgICAgbV9s
YWJlbERlcHRoKys7CiAgICAgcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgUFJPUEFHQVRF
X0VSUk9SKCk7CiAgICAgbV9sYWJlbERlcHRoLS07Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzIGluc3RydWN0aW9uLgorICAgIGNvbnRleHQuZW5kTGFiZWwoKTsKICAgICByZXR1cm4gVU5V
U0VEOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KLUNvbnRleHRTdGF0ZW1lbnQgV0FT
TUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUJyZWFrU3RhdGVtZW50KENvbnRleHQmKQorQ29udGV4dFN0
YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlQnJlYWtTdGF0ZW1lbnQoQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICBGQUlMX0lGX0ZBTFNFKG1fYnJlYWtTY29wZURlcHRoLCAiJ2JyZWFr
JyBpcyBvbmx5IHZhbGlkIGluc2lkZSBhIHN3aXRjaCBvciBsb29wIHN0YXRlbWVudC4iKTsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24uCisgICAgY29udGV4dC5qdW1w
VG9UYXJnZXQoY29udGV4dC5icmVha1RhcmdldCgpKTsKICAgICByZXR1cm4gVU5VU0VEOwogfQog
CiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KLUNvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9u
UGFyc2VyOjpwYXJzZUJyZWFrTGFiZWxTdGF0ZW1lbnQoQ29udGV4dCYpCitDb250ZXh0U3RhdGVt
ZW50IFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VCcmVha0xhYmVsU3RhdGVtZW50KENvbnRleHQm
IGNvbnRleHQpCiB7CiAgICAgdWludDMyX3QgbGFiZWxJbmRleDsKICAgICBSRUFEX0NPTVBBQ1Rf
VUlOVDMyX09SX0ZBSUwobGFiZWxJbmRleCwgIkNhbm5vdCByZWFkIHRoZSBsYWJlbCBpbmRleC4i
KTsKICAgICBGQUlMX0lGX0ZBTFNFKGxhYmVsSW5kZXggPCBtX2xhYmVsRGVwdGgsICJUaGUgbGFi
ZWwgaW5kZXggaXMgaW5jb3JyZWN0LiIpOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBp
bnN0cnVjdGlvbi4KKyAgICBjb250ZXh0Lmp1bXBUb1RhcmdldChjb250ZXh0LmJyZWFrTGFiZWxU
YXJnZXQobGFiZWxJbmRleCkpOwogICAgIHJldHVybiBVTlVTRUQ7CiB9CiAKIHRlbXBsYXRlIDxj
bGFzcyBDb250ZXh0PgotQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNl
Q29udGludWVTdGF0ZW1lbnQoQ29udGV4dCYpCitDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VDb250aW51ZVN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0KQogewogICAg
IEZBSUxfSUZfRkFMU0UobV9jb250aW51ZVNjb3BlRGVwdGgsICInY29udGludWUnIGlzIG9ubHkg
dmFsaWQgaW5zaWRlIGEgbG9vcCBzdGF0ZW1lbnQuIik7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzIGluc3RydWN0aW9uLgorICAgIGNvbnRleHQuanVtcFRvVGFyZ2V0KGNvbnRleHQuY29u
dGludWVUYXJnZXQoKSk7CiAgICAgcmV0dXJuIFVOVVNFRDsKIH0KIAogdGVtcGxhdGUgPGNsYXNz
IENvbnRleHQ+Ci1Db250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VDb250
aW51ZUxhYmVsU3RhdGVtZW50KENvbnRleHQmKQorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rp
b25QYXJzZXI6OnBhcnNlQ29udGludWVMYWJlbFN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIHVpbnQzMl90IGxhYmVsSW5kZXg7CiAgICAgUkVBRF9DT01QQUNUX1VJTlQzMl9PUl9G
QUlMKGxhYmVsSW5kZXgsICJDYW5ub3QgcmVhZCB0aGUgbGFiZWwgaW5kZXguIik7CiAgICAgRkFJ
TF9JRl9GQUxTRShsYWJlbEluZGV4IDwgbV9sYWJlbERlcHRoLCAiVGhlIGxhYmVsIGluZGV4IGlz
IGluY29ycmVjdC4iKTsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24u
CisgICAgY29udGV4dC5qdW1wVG9UYXJnZXQoY29udGV4dC5jb250aW51ZUxhYmVsVGFyZ2V0KGxh
YmVsSW5kZXgpKTsKICAgICByZXR1cm4gVU5VU0VEOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCmluZGV4IDI2OWNmMzFlZTdhODJhNzAx
MTdhODViMDNjYWM1YjQzYWNmMmQyN2YuLjE5MGNkMzcwNWU1ZmY3MjM3NTQ1NTlhNjliZTA0ODll
MmQ4MzA3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5j
dGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlv
blBhcnNlci5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNkZWZpbmUgQ29udGV4dEV4cHJlc3Npb24g
dHlwZW5hbWUgQ29udGV4dDo6RXhwcmVzc2lvbgogI2RlZmluZSBDb250ZXh0U3RhdGVtZW50IHR5
cGVuYW1lIENvbnRleHQ6OlN0YXRlbWVudAorI2RlZmluZSBDb250ZXh0SnVtcFRhcmdldCB0eXBl
bmFtZSBDb250ZXh0OjpKdW1wVGFyZ2V0CiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmgK
aW5kZXggNTE5ODU1M2U0MzgwNDE3NTIyMTcxZGE4YjY2Y2ExY2VlN2NhMGM0MS4uY2IxNzk1YWJl
MGU1NGFlMWQ4ZjY2MWFjMWNmYmQyYTJlZjQ1Y2UyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaApAQCAtMzYsNiAr
MzYsOCBAQCBjbGFzcyBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyIHsKIHB1YmxpYzoKICAgICB0
eXBlZGVmIGludCBFeHByZXNzaW9uOwogICAgIHR5cGVkZWYgaW50IFN0YXRlbWVudDsKKyAgICB0
eXBlZGVmIGludCBKdW1wVGFyZ2V0OworICAgIGVudW0gY2xhc3MgSnVtcENvbmRpdGlvbiB7IFpl
cm8sIE5vblplcm8gfTsKIAogICAgIHZvaWQgc3RhcnRGdW5jdGlvbihjb25zdCBWZWN0b3I8V0FT
TVR5cGU+JiBhcmd1bWVudHMsIHVpbnQzMl90IG51bWJlck9mSTMyTG9jYWxWYXJpYWJsZXMsIHVp
bnQzMl90IG51bWJlck9mRjMyTG9jYWxWYXJpYWJsZXMsIHVpbnQzMl90IG51bWJlck9mRjY0TG9j
YWxWYXJpYWJsZXMpCiAgICAgewpAQCAtODQsNiArODYsMjUgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gVU5VU0VEOwogICAgIH0KIAorICAgIHZvaWQgbGlua1RhcmdldChjb25zdCBpbnQmKSB7
IH0KKyAgICB2b2lkIGp1bXBUb1RhcmdldChjb25zdCBpbnQmKSB7IH0KKyAgICB2b2lkIGp1bXBU
b1RhcmdldElmKEp1bXBDb25kaXRpb24sIGludCwgY29uc3QgaW50JikKKyAgICB7CisgICAgICAg
IG1fdGVtcFN0YWNrVG9wLS07CisgICAgfQorCisgICAgdm9pZCBzdGFydExvb3AoKSB7IH0KKyAg
ICB2b2lkIGVuZExvb3AoKSB7IH0KKyAgICB2b2lkIHN0YXJ0U3dpdGNoKCkgeyB9CisgICAgdm9p
ZCBlbmRTd2l0Y2goKSB7IH0KKyAgICB2b2lkIHN0YXJ0TGFiZWwoKSB7IH0KKyAgICB2b2lkIGVu
ZExhYmVsKCkgeyB9CisKKyAgICBpbnQgYnJlYWtUYXJnZXQoKSB7IHJldHVybiBVTlVTRUQ7IH0K
KyAgICBpbnQgY29udGludWVUYXJnZXQoKSB7IHJldHVybiBVTlVTRUQ7IH0KKyAgICBpbnQgYnJl
YWtMYWJlbFRhcmdldCh1aW50MzJfdCkgeyByZXR1cm4gVU5VU0VEOyB9CisgICAgaW50IGNvbnRp
bnVlTGFiZWxUYXJnZXQodWludDMyX3QpIHsgcmV0dXJuIFVOVVNFRDsgfQorCiAgICAgdW5zaWdu
ZWQgc3RhY2tIZWlnaHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbnVtYmVyT2ZMb2NhbHMg
KyBtX3RlbXBTdGFja0hlaWdodDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260742</attachid>
            <date>2015-09-07 11:10:12 -0700</date>
            <delta_ts>2015-09-08 16:05:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148934-20150907111009.patch</filename>
            <type>text/plain</type>
            <size>20103</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTc2NmNhYWVhYThlOTk4NDljODdlYWE0NjBjNDZhNzIyMTNjZjgzLi41ODRlMGRjODgzMThjMWZi
ZDQ1YTYwNGU3YzYxOTFlODVkYmY5YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNS0wOS0wNyAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdt
YWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgY29udHJvbCBmbG93IHN0YXRlbWVudHMgaW4g
V2ViQXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0ODkzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBpZiwgd2hpbGUsIGRvLCBsYWJlbCwgYnJlYWssIGFu
ZCBjb250aW51ZQorICAgICAgICBzdGF0ZW1lbnRzIGluIFdlYkFzc2VtYmx5LiBTd2l0Y2hlcyB3
aWxsIGJlIGltcGxlbWVudGVkIGluIGEgc3Vic2VxdWVudAorICAgICAgICBwYXRjaC4KKworICAg
ICAgICAqIHRlc3RzL3N0cmVzcy93YXNtLWNvbnRyb2wtZmxvdy5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3dhc20vY29udHJvbC1mbG93Lndh
c206IEFkZGVkLgorICAgICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIuaDoKKyAgICAg
ICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmxpbmtUYXJnZXQpOgorICAgICAgICAoSlND
OjpXQVNNRnVuY3Rpb25Db21waWxlcjo6anVtcFRvVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V0FT
TUZ1bmN0aW9uQ29tcGlsZXI6Omp1bXBUb1RhcmdldElmKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uQ29tcGlsZXI6OnN0YXJ0TG9vcCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNv
bXBpbGVyOjplbmRMb29wKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OnN0
YXJ0U3dpdGNoKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmVuZFN3aXRj
aCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNvbXBpbGVyOjpzdGFydExhYmVsKToKKyAg
ICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmVuZExhYmVsKToKKyAgICAgICAgKEpT
Qzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmJyZWFrVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V0FT
TUZ1bmN0aW9uQ29tcGlsZXI6OmNvbnRpbnVlVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uQ29tcGlsZXI6OmJyZWFrTGFiZWxUYXJnZXQpOgorICAgICAgICAoSlNDOjpXQVNNRnVu
Y3Rpb25Db21waWxlcjo6Y29udGludWVMYWJlbFRhcmdldCk6CisgICAgICAgICogd2FzbS9XQVNN
RnVuY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OnBh
cnNlSWZTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNl
SWZFbHNlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJz
ZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJz
ZURvU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUxh
YmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUJy
ZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUJy
ZWFrTGFiZWxTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OnBh
cnNlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6
OnBhcnNlQ29udGludWVMYWJlbFN0YXRlbWVudCk6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rp
b25QYXJzZXIuaDoKKyAgICAgICAgKiB3YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaDoK
KyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6bGlua1RhcmdldCk6Cisg
ICAgICAgIChKU0M6OldBU01GdW5jdGlvblN5bnRheENoZWNrZXI6Omp1bXBUb1RhcmdldCk6Cisg
ICAgICAgIChKU0M6OldBU01GdW5jdGlvblN5bnRheENoZWNrZXI6Omp1bXBUb1RhcmdldElmKToK
KyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6c3RhcnRMb29wKToKKyAg
ICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6ZW5kTG9vcCk6CisgICAgICAg
IChKU0M6OldBU01GdW5jdGlvblN5bnRheENoZWNrZXI6OnN0YXJ0U3dpdGNoKToKKyAgICAgICAg
KEpTQzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6ZW5kU3dpdGNoKToKKyAgICAgICAgKEpT
Qzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6c3RhcnRMYWJlbCk6CisgICAgICAgIChKU0M6
OldBU01GdW5jdGlvblN5bnRheENoZWNrZXI6OmVuZExhYmVsKToKKyAgICAgICAgKEpTQzo6V0FT
TUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6YnJlYWtUYXJnZXQpOgorICAgICAgICAoSlNDOjpXQVNN
RnVuY3Rpb25TeW50YXhDaGVja2VyOjpjb250aW51ZVRhcmdldCk6CisgICAgICAgIChKU0M6OldB
U01GdW5jdGlvblN5bnRheENoZWNrZXI6OmJyZWFrTGFiZWxUYXJnZXQpOgorICAgICAgICAoSlND
OjpXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyOjpjb250aW51ZUxhYmVsVGFyZ2V0KToKKwogMjAx
NS0wOS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgR2FyZGVu
aW5nOiBmaXggYnJva2VuIFdpbmRvd3MgYnVpbGQgYWZ0ZXIgcjE4OTQ1NC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvd2FzbS1jb250cm9sLWZsb3cuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dhc20tY29udHJvbC1mbG93Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAxZmUxZmY5MjMyOTJhZThkYjQ4MDRjZTVkNmZmZWNmOWJiMzE4NDUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dhc20t
Y29udHJvbC1mbG93LmpzCkBAIC0wLDAgKzEsMjQ3IEBACisvL0Agc2tpcAorCitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
LyoKK3dhc20vY29udHJvbC1mbG93Lndhc20gaXMgZ2VuZXJhdGVkIGJ5IHBhY2stYXNtanMgPGh0
dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9wb2x5ZmlsbC1wcm90b3R5cGUtMT4gZnJvbSB0
aGUgZm9sbG93aW5nIHNjcmlwdDoKKworZnVuY3Rpb24gYXNtTW9kdWxlKGdsb2JhbCwgZW52LCBi
dWZmZXIpIHsKKyAgICAidXNlIGFzbSI7CisKKyAgICBmdW5jdGlvbiBpZlRydWUoKSB7CisgICAg
ICAgIHZhciB4ID0gMDsKKyAgICAgICAgeCA9IDU7CisgICAgICAgIGlmICgoeCB8IDApID4gMCkK
KyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBpZkZhbHNlKCkgeworICAgICAgICB2YXIgeCA9IDA7CisgICAgICAgIGlmICgoeCB8
IDApID4gMCkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBpZkVsc2VUcnVlKCkgeworICAgICAgICB2YXIgeCA9IDA7CisgICAg
ICAgIHggPSA1OworICAgICAgICBpZiAoKHggfCAwKSA+IDApCisgICAgICAgICAgICByZXR1cm4g
MTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gaWZFbHNlRmFsc2UoKSB7CisgICAgICAgIHZhciB4ID0gMDsKKyAgICAgICAgaWYgKCh4
IHwgMCkgPiAwKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHJldHVybiAyOworICAgIH0KKworICAgIGZ1bmN0aW9uIGlmSW5JZigpIHsKKyAgICAgICAg
dmFyIHggPSAwLCB5ID0gMDsKKyAgICAgICAgeCA9IDE7CisgICAgICAgIGlmICh4ID09IDApIHsK
KyAgICAgICAgICAgIGlmICh5ID09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpZiAoeSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAzOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gd2hpbGVMb29wKCkgeworICAgICAgICB2YXIgeCA9IDAsIGkgPSAw
OworICAgICAgICB3aGlsZSAoKGkgfCAwKSA8IDUpIHsKKyAgICAgICAgICAgIHggPSAoeCArIDEp
IHwgMDsKKyAgICAgICAgICAgIGkgPSAoaSArIDEpIHwgMDsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4geDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB3aGlsZUJyZWFrKCkgeworICAgICAgICB2
YXIgeCA9IDAsIGkgPSAwOworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgaWYgKGkg
PT0gMikKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHggPSAoeCArIDEpIHwg
MDsKKyAgICAgICAgICAgIGkgPSAoaSArIDEpIHwgMDsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4geDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB3aGlsZUNvbnRpbnVlKCkgeworICAgICAgICB2
YXIgeCA9IDAsIGkgPSAwOworICAgICAgICB3aGlsZSAoKGkgfCAwKSA8IDUpIHsKKyAgICAgICAg
ICAgIGlmIChpID09IDIpIHsKKyAgICAgICAgICAgICAgICBpID0gMzsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHggPSAoeCArIDEpIHwgMDsK
KyAgICAgICAgICAgIGkgPSAoaSArIDEpIHwgMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
eDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB3aGlsZUluV2hpbGUoKSB7CisgICAgICAgIHZhciB4
ID0gMCwgaSA9IDAsIGogPSAwOworICAgICAgICB3aGlsZSAoKGkgfCAwKSA8IDUpIHsKKyAgICAg
ICAgICAgIGogPSAwOworICAgICAgICAgICAgd2hpbGUgKChqIHwgMCkgPCAyKSB7CisgICAgICAg
ICAgICAgICAgeCA9ICh4ICsgMSkgfCAwOworICAgICAgICAgICAgICAgIGogPSAoaiArIDEpIHwg
MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGkgPSAoaSArIDEpIHwgMDsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4geDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkb0xvb3AoKSB7Cisg
ICAgICAgIHZhciB4ID0gMCwgaSA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHggPSAo
eCArIDEpIHwgMDsKKyAgICAgICAgICAgIGkgPSAoaSArIDEpIHwgMDsKKyAgICAgICAgfSB3aGls
ZSAoKGkgfCAwKSA8IDApOworICAgICAgICByZXR1cm4geDsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBkb0JyZWFrKCkgeworICAgICAgICB2YXIgeCA9IDAsIGkgPSAwOworICAgICAgICBkbyB7Cisg
ICAgICAgICAgICBpZiAoaSA9PSAyKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgeCA9ICh4ICsgMSkgfCAwOworICAgICAgICAgICAgaSA9IChpICsgMSkgfCAwOworICAgICAg
ICB9IHdoaWxlICgxKTsKKyAgICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgZnVuY3Rpb24g
ZG9Db250aW51ZSgpIHsKKyAgICAgICAgdmFyIHggPSAwLCBpID0gMDsKKyAgICAgICAgZG8gewor
ICAgICAgICAgICAgaWYgKGkgPT0gMikgeworICAgICAgICAgICAgICAgIGkgPSAzOworICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeCA9ICh4ICsg
MSkgfCAwOworICAgICAgICAgICAgaSA9IChpICsgMSkgfCAwOworICAgICAgICB9IHdoaWxlICgo
aSB8IDApIDwgNSk7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIGZ1bmN0aW9uIGxh
YmVsQnJlYWsoKSB7CisgICAgICAgIHZhciB4ID0gMDsKKyAgICAgICAgbGFiZWw6IGRvIHsKKyAg
ICAgICAgICAgIHggPSAxOworICAgICAgICAgICAgYnJlYWsgbGFiZWw7CisgICAgICAgICAgICB4
ID0gMjsKKyAgICAgICAgfSB3aGlsZSAoMCk7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGxhYmVsQ29udGludWUoKSB7CisgICAgICAgIHZhciB4ID0gMDsKKyAgICAg
ICAgbGFiZWw6IGRvIHsKKyAgICAgICAgICAgIGlmICh4ID09IDEpCisgICAgICAgICAgICAgICAg
YnJlYWsgbGFiZWw7CisgICAgICAgICAgICB4ID0gMTsKKyAgICAgICAgICAgIGNvbnRpbnVlIGxh
YmVsOworICAgICAgICAgICAgeCA9IDI7CisgICAgICAgIH0gd2hpbGUgKDApOworICAgICAgICBy
ZXR1cm4geDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBsYWJlbEluTGFiZWxCcmVha0lubmVyKCkg
eworICAgICAgICB2YXIgeCA9IDA7CisgICAgICAgIG91dGVyOiBkbyB7CisgICAgICAgICAgICB4
ID0gMTsKKyAgICAgICAgICAgIGlubmVyOiBkbyB7CisgICAgICAgICAgICAgICAgeCA9IDI7Cisg
ICAgICAgICAgICAgICAgYnJlYWsgaW5uZXI7CisgICAgICAgICAgICAgICAgeCA9IDM7CisgICAg
ICAgICAgICB9IHdoaWxlICgwKTsKKyAgICAgICAgICAgIHggPSA0OworICAgICAgICB9IHdoaWxl
ICgwKTsKKyAgICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgZnVuY3Rpb24gbGFiZWxJbkxh
YmVsQnJlYWtPdXRlcigpIHsKKyAgICAgICAgdmFyIHggPSAwOworICAgICAgICBvdXRlcjogZG8g
eworICAgICAgICAgICAgeCA9IDE7CisgICAgICAgICAgICBpbm5lcjogZG8geworICAgICAgICAg
ICAgICAgIHggPSAyOworICAgICAgICAgICAgICAgIGJyZWFrIG91dGVyOworICAgICAgICAgICAg
ICAgIHggPSAzOworICAgICAgICAgICAgfSB3aGlsZSAoMCk7CisgICAgICAgICAgICB4ID0gNDsK
KyAgICAgICAgfSB3aGlsZSAoMCk7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIGZ1
bmN0aW9uIHdoaWxlSW5XaGlsZUJyZWFrT3V0ZXIoKSB7CisgICAgICAgIHZhciB4ID0gMCwgaSA9
IDAsIGogPSAwOworICAgICAgICBsYWJlbDoKKyAgICAgICAgd2hpbGUgKChpIHwgMCkgPCA1KSB7
CisgICAgICAgICAgICBqID0gMDsKKyAgICAgICAgICAgIHdoaWxlICgoaiB8IDApIDwgMikgewor
ICAgICAgICAgICAgICAgIHggPSAoeCArIDEpIHwgMDsKKyAgICAgICAgICAgICAgICBpZiAoeCA9
PSA4KQorICAgICAgICAgICAgICAgICAgICBicmVhayBsYWJlbDsKKyAgICAgICAgICAgICAgICBq
ID0gKGogKyAxKSB8IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpID0gKGkgKyAxKSB8
IDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgcmV0dXJuIHsK
KyAgICAgICAgaWZUcnVlOiBpZlRydWUsCisgICAgICAgIGlmRmFsc2U6IGlmRmFsc2UsCisgICAg
ICAgIGlmRWxzZVRydWU6IGlmRWxzZVRydWUsCisgICAgICAgIGlmRWxzZUZhbHNlOiBpZkVsc2VG
YWxzZSwKKyAgICAgICAgaWZJbklmOiBpZkluSWYsCisgICAgICAgIHdoaWxlTG9vcDogd2hpbGVM
b29wLAorICAgICAgICB3aGlsZUJyZWFrOiB3aGlsZUJyZWFrLAorICAgICAgICB3aGlsZUNvbnRp
bnVlOiB3aGlsZUNvbnRpbnVlLAorICAgICAgICB3aGlsZUluV2hpbGU6IHdoaWxlSW5XaGlsZSwK
KyAgICAgICAgZG9Mb29wOiBkb0xvb3AsCisgICAgICAgIGRvQnJlYWs6IGRvQnJlYWssCisgICAg
ICAgIGRvQ29udGludWU6IGRvQ29udGludWUsCisgICAgICAgIGxhYmVsQnJlYWs6IGxhYmVsQnJl
YWssCisgICAgICAgIGxhYmVsQ29udGludWU6IGxhYmVsQ29udGludWUsCisgICAgICAgIGxhYmVs
SW5MYWJlbEJyZWFrSW5uZXI6IGxhYmVsSW5MYWJlbEJyZWFrSW5uZXIsCisgICAgICAgIGxhYmVs
SW5MYWJlbEJyZWFrT3V0ZXI6IGxhYmVsSW5MYWJlbEJyZWFrT3V0ZXIsCisgICAgICAgIHdoaWxl
SW5XaGlsZUJyZWFrT3V0ZXI6IHdoaWxlSW5XaGlsZUJyZWFrT3V0ZXIsCisgICAgfTsKK30KKyov
CisKK3ZhciBtb2R1bGUgPSBsb2FkV2ViQXNzZW1ibHkoIndhc20vY29udHJvbC1mbG93Lndhc20i
KTsKKworc2hvdWxkQmUobW9kdWxlLmlmVHJ1ZSgpLCAxKTsKK3Nob3VsZEJlKG1vZHVsZS5pZkZh
bHNlKCksIDApOworc2hvdWxkQmUobW9kdWxlLmlmRWxzZVRydWUoKSwgMSk7CitzaG91bGRCZSht
b2R1bGUuaWZFbHNlRmFsc2UoKSwgMik7CitzaG91bGRCZShtb2R1bGUuaWZJbklmKCksIDMpOwor
c2hvdWxkQmUobW9kdWxlLndoaWxlTG9vcCgpLCA1KTsKK3Nob3VsZEJlKG1vZHVsZS53aGlsZUJy
ZWFrKCksIDIpOworc2hvdWxkQmUobW9kdWxlLndoaWxlQ29udGludWUoKSwgNCk7CitzaG91bGRC
ZShtb2R1bGUud2hpbGVJbldoaWxlKCksIDEwKTsKK3Nob3VsZEJlKG1vZHVsZS5kb0xvb3AoKSwg
MSk7CitzaG91bGRCZShtb2R1bGUuZG9CcmVhaygpLCAyKTsKK3Nob3VsZEJlKG1vZHVsZS5kb0Nv
bnRpbnVlKCksIDQpOworc2hvdWxkQmUobW9kdWxlLmxhYmVsQnJlYWsoKSwgMSk7CitzaG91bGRC
ZShtb2R1bGUubGFiZWxDb250aW51ZSgpLCAxKTsKK3Nob3VsZEJlKG1vZHVsZS5sYWJlbEluTGFi
ZWxCcmVha0lubmVyKCksIDQpOworc2hvdWxkQmUobW9kdWxlLmxhYmVsSW5MYWJlbEJyZWFrT3V0
ZXIoKSwgMik7CitzaG91bGRCZShtb2R1bGUud2hpbGVJbldoaWxlQnJlYWtPdXRlcigpLCA4KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvd2FzbS9jb250
cm9sLWZsb3cud2FzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvd2FzbS9j
b250cm9sLWZsb3cud2FzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGFkN2FlMmUwMTE0MzFmNGNhNmY2OGZhZDQ5
YzYzNWI3YzgyM2I2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2MjgKemNtWlhQJVQ5d3A2byFZ
UC1zKikqVGhSQFZ6PjF8UzglOz0+eEdgfiFETVRVO2hQTFQ7cGZBRWVOcWh8R2xSMkN6CnomPzx9
SktpflAhZWBlUDE7ITdXKj05QSFyTCtmUiQ1fUI2VEx6TzheJHI5V3ZUSXohNGlQV2tUUT5JJjBy
YkBiMQp6SHh2MEA3ME5jbkJmQm5ET3dFY1ZYM2RtfTZRO19WUnArLXl1KDFKRmFaPXAldCZLPkso
YDtuI2EqPnBweURufHEKemh1ZUhSJm1hR1pob3lVWDZ3WCZGUmV+cUhOMTFfVyZjfnF+WGphdCNj
N0ZpNTJie1NmKElUVlUqNCVUe0AockhBCnp2KWZDeyYyeEM+a0FlRURPSXFOKyN3IW5Aejwra2Jn
QD5mVGY4dXxEU1pMOVoxSyVOemp8U19IQW9PTllebz5xSAp6S0V8SD1pQjNVSkJlRHojJnBVKENB
I2FUdG96RWl9eFJeKTZKKUIzS14paHRkeS1ASGcmfFR7cU57N3JraGVMPUwKU3FubSZIV3dxcDdJ
b3R8fmZ+JnYxOHFkSzEKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25Db21waWxlci5oCmluZGV4IDA1OGMxZGI4ZGE2
MWNmMmNhMjExZTdjNjk5MjE0ZTg0NmNmYzI5NjQuLjUxMTQ1ODI4ZDA5NWRmNjcwODlhYjFjYjdj
MmE0MDUxYzcwMzgzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01GdW5jdGlvbkNvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUZ1bmN0aW9uQ29tcGlsZXIuaApAQCAtNjMsNiArNjMsMTEgQEAgY2xhc3MgV0FTTUZ1bmN0aW9u
Q29tcGlsZXIgOiBwcml2YXRlIENDYWxsSGVscGVycyB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBp
bnQgRXhwcmVzc2lvbjsKICAgICB0eXBlZGVmIGludCBTdGF0ZW1lbnQ7CisgICAgc3RydWN0IEp1
bXBUYXJnZXQgeworICAgICAgICBMYWJlbCBsYWJlbDsKKyAgICAgICAgSnVtcExpc3QganVtcExp
c3Q7CisgICAgfTsKKyAgICBlbnVtIGNsYXNzIEp1bXBDb25kaXRpb24geyBaZXJvLCBOb25aZXJv
IH07CiAKICAgICBXQVNNRnVuY3Rpb25Db21waWxlcihWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrLCB1bnNpZ25lZCBzdGFja0hlaWdodCkKICAgICAgICAgOiBDQ2FsbEhlbHBlcnMoJnZtLCBj
b2RlQmxvY2spCkBAIC0zMzgsNiArMzQzLDg5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFVO
VVNFRDsKICAgICB9CiAKKyAgICB2b2lkIGxpbmtUYXJnZXQoSnVtcFRhcmdldCYgdGFyZ2V0KQor
ICAgIHsKKyAgICAgICAgdGFyZ2V0LmxhYmVsID0gbGFiZWwoKTsKKyAgICAgICAgdGFyZ2V0Lmp1
bXBMaXN0LmxpbmsodGhpcyk7CisgICAgfQorCisgICAgdm9pZCBqdW1wVG9UYXJnZXQoSnVtcFRh
cmdldCYgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgaWYgKHRhcmdldC5sYWJlbC5pc1NldCgpKQor
ICAgICAgICAgICAganVtcCh0YXJnZXQubGFiZWwpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB0YXJnZXQuanVtcExpc3QuYXBwZW5kKGp1bXAoKSk7CisgICAgfQorCisgICAgdm9pZCBqdW1w
VG9UYXJnZXRJZihKdW1wQ29uZGl0aW9uIGNvbmRpdGlvbiwgaW50LCBKdW1wVGFyZ2V0JiB0YXJn
ZXQpCisgICAgeworICAgICAgICBsb2FkMzIodGVtcG9yYXJ5QWRkcmVzcyhtX3RlbXBTdGFja1Rv
cCAtIDEpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIG1fdGVtcFN0YWNrVG9wLS07CisgICAg
ICAgIEp1bXAgdGFrZW4gPSBicmFuY2hUZXN0MzIoKGNvbmRpdGlvbiA9PSBKdW1wQ29uZGl0aW9u
OjpaZXJvKSA/IFplcm8gOiBOb25aZXJvLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIGlmICh0
YXJnZXQubGFiZWwuaXNTZXQoKSkKKyAgICAgICAgICAgIHRha2VuLmxpbmtUbyh0YXJnZXQubGFi
ZWwsIHRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0YXJnZXQuanVtcExpc3QuYXBw
ZW5kKHRha2VuKTsKKyAgICB9CisKKyAgICB2b2lkIHN0YXJ0TG9vcCgpCisgICAgeworICAgICAg
ICBtX2JyZWFrVGFyZ2V0cy5hcHBlbmQoSnVtcFRhcmdldCgpKTsKKyAgICAgICAgbV9jb250aW51
ZVRhcmdldHMuYXBwZW5kKEp1bXBUYXJnZXQoKSk7CisgICAgfQorCisgICAgdm9pZCBlbmRMb29w
KCkKKyAgICB7CisgICAgICAgIG1fYnJlYWtUYXJnZXRzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAg
bV9jb250aW51ZVRhcmdldHMucmVtb3ZlTGFzdCgpOworICAgIH0KKworICAgIHZvaWQgc3RhcnRT
d2l0Y2goKQorICAgIHsKKyAgICAgICAgbV9icmVha1RhcmdldHMuYXBwZW5kKEp1bXBUYXJnZXQo
KSk7CisgICAgfQorCisgICAgdm9pZCBlbmRTd2l0Y2goKQorICAgIHsKKyAgICAgICAgbV9icmVh
a1RhcmdldHMucmVtb3ZlTGFzdCgpOworICAgIH0KKworICAgIHZvaWQgc3RhcnRMYWJlbCgpCisg
ICAgeworICAgICAgICBtX2JyZWFrTGFiZWxUYXJnZXRzLmFwcGVuZChKdW1wVGFyZ2V0KCkpOwor
ICAgICAgICBtX2NvbnRpbnVlTGFiZWxUYXJnZXRzLmFwcGVuZChKdW1wVGFyZ2V0KCkpOworCisg
ICAgICAgIGxpbmtUYXJnZXQobV9jb250aW51ZUxhYmVsVGFyZ2V0cy5sYXN0KCkpOworICAgIH0K
KworICAgIHZvaWQgZW5kTGFiZWwoKQorICAgIHsKKyAgICAgICAgbGlua1RhcmdldChtX2JyZWFr
TGFiZWxUYXJnZXRzLmxhc3QoKSk7CisKKyAgICAgICAgbV9icmVha0xhYmVsVGFyZ2V0cy5yZW1v
dmVMYXN0KCk7CisgICAgICAgIG1fY29udGludWVMYWJlbFRhcmdldHMucmVtb3ZlTGFzdCgpOwor
ICAgIH0KKworICAgIEp1bXBUYXJnZXQmIGJyZWFrVGFyZ2V0KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2JyZWFrVGFyZ2V0cy5sYXN0KCk7CisgICAgfQorCisgICAgSnVtcFRhcmdldCYgY29u
dGludWVUYXJnZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29udGludWVUYXJnZXRzLmxh
c3QoKTsKKyAgICB9CisKKyAgICBKdW1wVGFyZ2V0JiBicmVha0xhYmVsVGFyZ2V0KHVpbnQzMl90
IGxhYmVsSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gbV9icmVha0xhYmVsVGFyZ2V0c1ts
YWJlbEluZGV4XTsKKyAgICB9CisKKyAgICBKdW1wVGFyZ2V0JiBjb250aW51ZUxhYmVsVGFyZ2V0
KHVpbnQzMl90IGxhYmVsSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gbV9jb250aW51ZUxh
YmVsVGFyZ2V0c1tsYWJlbEluZGV4XTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdW5pb24gU3Rh
Y2tTbG90IHsKICAgICAgICAgaW50MzJfdCBpbnRWYWx1ZTsKQEAgLTM4Niw2ICs0NzQsMTEgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX251bWJlck9mTG9jYWxzOwogICAgIHVuc2lnbmVkIG1f
dGVtcFN0YWNrVG9wIHsgMCB9OwogCisgICAgVmVjdG9yPEp1bXBUYXJnZXQ+IG1fYnJlYWtUYXJn
ZXRzOworICAgIFZlY3RvcjxKdW1wVGFyZ2V0PiBtX2NvbnRpbnVlVGFyZ2V0czsKKyAgICBWZWN0
b3I8SnVtcFRhcmdldD4gbV9icmVha0xhYmVsVGFyZ2V0czsKKyAgICBWZWN0b3I8SnVtcFRhcmdl
dD4gbV9jb250aW51ZUxhYmVsVGFyZ2V0czsKKwogICAgIExhYmVsIG1fYmVnaW5MYWJlbDsKICAg
ICBKdW1wIG1fc3RhY2tPdmVyZmxvdzsKICAgICBKdW1wTGlzdCBtX2RpdmlkZUVycm9ySnVtcExp
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25Q
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2Vy
LmNwcAppbmRleCBmYWIyZWI0MjgwN2IxZDZiZWM3NTk2MWExNmZiYTVjNjMzMDYwNjQyLi4yYmFl
MDgxMGIxZGZkNzA2NjM2MGUyYzNhMDUzMTg1MGUyMGJmNGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHAKQEAgLTI1MSw0NCArMjUx
LDc3IEBAIENvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUJsb2NrU3Rh
dGVtZW50KENvbnRleHQmIGNvbnRleHQpCiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KIENvbnRl
eHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUlmU3RhdGVtZW50KENvbnRleHQm
IGNvbnRleHQpCiB7Ci0gICAgcGFyc2VFeHByZXNzaW9uSTMyKGNvbnRleHQpOworICAgIENvbnRl
eHRKdW1wVGFyZ2V0IGVuZDsKKworICAgIENvbnRleHRFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBw
YXJzZUV4cHJlc3Npb25JMzIoY29udGV4dCk7CiAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisKKyAg
ICBjb250ZXh0Lmp1bXBUb1RhcmdldElmKENvbnRleHQ6Okp1bXBDb25kaXRpb246Olplcm8sIGV4
cHJlc3Npb24sIGVuZCk7CisKICAgICBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKLSAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24uCisgICAgUFJPUEFHQVRFX0VSUk9SKCk7
CisKKyAgICBjb250ZXh0LmxpbmtUYXJnZXQoZW5kKTsKICAgICByZXR1cm4gVU5VU0VEOwogfQog
CiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KIENvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9u
UGFyc2VyOjpwYXJzZUlmRWxzZVN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0KQogewotICAgIHBh
cnNlRXhwcmVzc2lvbkkzMihjb250ZXh0KTsKKyAgICBDb250ZXh0SnVtcFRhcmdldCBlbHNlVGFy
Z2V0OworICAgIENvbnRleHRKdW1wVGFyZ2V0IGVuZDsKKworICAgIENvbnRleHRFeHByZXNzaW9u
IGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb25JMzIoY29udGV4dCk7CiAgICAgUFJPUEFHQVRF
X0VSUk9SKCk7CisKKyAgICBjb250ZXh0Lmp1bXBUb1RhcmdldElmKENvbnRleHQ6Okp1bXBDb25k
aXRpb246Olplcm8sIGV4cHJlc3Npb24sIGVsc2VUYXJnZXQpOworCiAgICAgcGFyc2VTdGF0ZW1l
bnQoY29udGV4dCk7CiAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisKKyAgICBjb250ZXh0Lmp1bXBU
b1RhcmdldChlbmQpOworICAgIGNvbnRleHQubGlua1RhcmdldChlbHNlVGFyZ2V0KTsKKwogICAg
IHBhcnNlU3RhdGVtZW50KGNvbnRleHQpOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBp
bnN0cnVjdGlvbi4KKyAgICBQUk9QQUdBVEVfRVJST1IoKTsKKworICAgIGNvbnRleHQubGlua1Rh
cmdldChlbmQpOwogICAgIHJldHVybiBVTlVTRUQ7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBDb250
ZXh0PgogQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlV2hpbGVTdGF0
ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBwYXJzZUV4cHJlc3Npb25JMzIoY29udGV4
dCk7CisgICAgY29udGV4dC5zdGFydExvb3AoKTsKKyAgICBjb250ZXh0LmxpbmtUYXJnZXQoY29u
dGV4dC5jb250aW51ZVRhcmdldCgpKTsKKworICAgIENvbnRleHRFeHByZXNzaW9uIGV4cHJlc3Np
b24gPSBwYXJzZUV4cHJlc3Npb25JMzIoY29udGV4dCk7CiAgICAgUFJPUEFHQVRFX0VSUk9SKCk7
CiAKKyAgICBjb250ZXh0Lmp1bXBUb1RhcmdldElmKENvbnRleHQ6Okp1bXBDb25kaXRpb246Olpl
cm8sIGV4cHJlc3Npb24sIGNvbnRleHQuYnJlYWtUYXJnZXQoKSk7CisKICAgICBtX2JyZWFrU2Nv
cGVEZXB0aCsrOwogICAgIG1fY29udGludWVTY29wZURlcHRoKys7CiAgICAgcGFyc2VTdGF0ZW1l
bnQoY29udGV4dCk7CiAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CiAgICAgbV9jb250aW51ZVNjb3Bl
RGVwdGgtLTsKICAgICBtX2JyZWFrU2NvcGVEZXB0aC0tOwotICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyBpbnN0cnVjdGlvbi4KKworICAgIGNvbnRleHQuanVtcFRvVGFyZ2V0KGNvbnRleHQu
Y29udGludWVUYXJnZXQoKSk7CisKKyAgICBjb250ZXh0LmxpbmtUYXJnZXQoY29udGV4dC5icmVh
a1RhcmdldCgpKTsKKyAgICBjb250ZXh0LmVuZExvb3AoKTsKICAgICByZXR1cm4gVU5VU0VEOwog
fQogCiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KIENvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZURvU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCiB7CisgICAgY29u
dGV4dC5zdGFydExvb3AoKTsKKworICAgIENvbnRleHRKdW1wVGFyZ2V0IHRvcE9mTG9vcDsKKyAg
ICBjb250ZXh0LmxpbmtUYXJnZXQodG9wT2ZMb29wKTsKKwogICAgIG1fYnJlYWtTY29wZURlcHRo
Kys7CiAgICAgbV9jb250aW51ZVNjb3BlRGVwdGgrKzsKICAgICBwYXJzZVN0YXRlbWVudChjb250
ZXh0KTsKQEAgLTI5Niw1NSArMzI5LDYzIEBAIENvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9u
UGFyc2VyOjpwYXJzZURvU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCiAgICAgbV9jb250aW51
ZVNjb3BlRGVwdGgtLTsKICAgICBtX2JyZWFrU2NvcGVEZXB0aC0tOwogCi0gICAgcGFyc2VFeHBy
ZXNzaW9uSTMyKGNvbnRleHQpOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBpbnN0cnVj
dGlvbi4KKyAgICBjb250ZXh0LmxpbmtUYXJnZXQoY29udGV4dC5jb250aW51ZVRhcmdldCgpKTsK
KworICAgIENvbnRleHRFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb25JMzIo
Y29udGV4dCk7CisgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisKKyAgICBjb250ZXh0Lmp1bXBUb1Rh
cmdldElmKENvbnRleHQ6Okp1bXBDb25kaXRpb246Ok5vblplcm8sIGV4cHJlc3Npb24sIHRvcE9m
TG9vcCk7CisKKyAgICBjb250ZXh0LmxpbmtUYXJnZXQoY29udGV4dC5icmVha1RhcmdldCgpKTsK
KyAgICBjb250ZXh0LmVuZExvb3AoKTsKICAgICByZXR1cm4gVU5VU0VEOwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgQ29udGV4dD4KIENvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpw
YXJzZUxhYmVsU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCiB7CisgICAgY29udGV4dC5zdGFy
dExhYmVsKCk7CiAgICAgbV9sYWJlbERlcHRoKys7CiAgICAgcGFyc2VTdGF0ZW1lbnQoY29udGV4
dCk7CiAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CiAgICAgbV9sYWJlbERlcHRoLS07Ci0gICAgLy8g
RklYTUU6IEltcGxlbWVudCB0aGlzIGluc3RydWN0aW9uLgorICAgIGNvbnRleHQuZW5kTGFiZWwo
KTsKICAgICByZXR1cm4gVU5VU0VEOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KLUNv
bnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUJyZWFrU3RhdGVtZW50KENv
bnRleHQmKQorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlQnJlYWtT
dGF0ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBGQUlMX0lGX0ZBTFNFKG1fYnJlYWtT
Y29wZURlcHRoLCAiJ2JyZWFrJyBpcyBvbmx5IHZhbGlkIGluc2lkZSBhIHN3aXRjaCBvciBsb29w
IHN0YXRlbWVudC4iKTsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24u
CisgICAgY29udGV4dC5qdW1wVG9UYXJnZXQoY29udGV4dC5icmVha1RhcmdldCgpKTsKICAgICBy
ZXR1cm4gVU5VU0VEOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KLUNvbnRleHRTdGF0
ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUJyZWFrTGFiZWxTdGF0ZW1lbnQoQ29udGV4
dCYpCitDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VCcmVha0xhYmVs
U3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgdWludDMyX3QgbGFiZWxJbmRleDsK
ICAgICBSRUFEX0NPTVBBQ1RfVUlOVDMyX09SX0ZBSUwobGFiZWxJbmRleCwgIkNhbm5vdCByZWFk
IHRoZSBsYWJlbCBpbmRleC4iKTsKICAgICBGQUlMX0lGX0ZBTFNFKGxhYmVsSW5kZXggPCBtX2xh
YmVsRGVwdGgsICJUaGUgbGFiZWwgaW5kZXggaXMgaW5jb3JyZWN0LiIpOwotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcyBpbnN0cnVjdGlvbi4KKyAgICBjb250ZXh0Lmp1bXBUb1RhcmdldChj
b250ZXh0LmJyZWFrTGFiZWxUYXJnZXQobGFiZWxJbmRleCkpOwogICAgIHJldHVybiBVTlVTRUQ7
CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgotQ29udGV4dFN0YXRlbWVudCBXQVNNRnVu
Y3Rpb25QYXJzZXI6OnBhcnNlQ29udGludWVTdGF0ZW1lbnQoQ29udGV4dCYpCitDb250ZXh0U3Rh
dGVtZW50IFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VDb250aW51ZVN0YXRlbWVudChDb250ZXh0
JiBjb250ZXh0KQogewogICAgIEZBSUxfSUZfRkFMU0UobV9jb250aW51ZVNjb3BlRGVwdGgsICIn
Y29udGludWUnIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGEgbG9vcCBzdGF0ZW1lbnQuIik7Ci0gICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzIGluc3RydWN0aW9uLgorICAgIGNvbnRleHQuanVtcFRv
VGFyZ2V0KGNvbnRleHQuY29udGludWVUYXJnZXQoKSk7CiAgICAgcmV0dXJuIFVOVVNFRDsKIH0K
IAogdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+Ci1Db250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VDb250aW51ZUxhYmVsU3RhdGVtZW50KENvbnRleHQmKQorQ29udGV4dFN0
YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlQ29udGludWVMYWJlbFN0YXRlbWVudChD
b250ZXh0JiBjb250ZXh0KQogewogICAgIHVpbnQzMl90IGxhYmVsSW5kZXg7CiAgICAgUkVBRF9D
T01QQUNUX1VJTlQzMl9PUl9GQUlMKGxhYmVsSW5kZXgsICJDYW5ub3QgcmVhZCB0aGUgbGFiZWwg
aW5kZXguIik7CiAgICAgRkFJTF9JRl9GQUxTRShsYWJlbEluZGV4IDwgbV9sYWJlbERlcHRoLCAi
VGhlIGxhYmVsIGluZGV4IGlzIGluY29ycmVjdC4iKTsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMgaW5zdHJ1Y3Rpb24uCisgICAgY29udGV4dC5qdW1wVG9UYXJnZXQoY29udGV4dC5jb250
aW51ZUxhYmVsVGFyZ2V0KGxhYmVsSW5kZXgpKTsKICAgICByZXR1cm4gVU5VU0VEOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCmluZGV4
IDI2OWNmMzFlZTdhODJhNzAxMTdhODViMDNjYWM1YjQzYWNmMmQyN2YuLjE5MGNkMzcwNWU1ZmY3
MjM3NTQ1NTlhNjliZTA0ODllMmQ4MzA3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNkZWZpbmUg
Q29udGV4dEV4cHJlc3Npb24gdHlwZW5hbWUgQ29udGV4dDo6RXhwcmVzc2lvbgogI2RlZmluZSBD
b250ZXh0U3RhdGVtZW50IHR5cGVuYW1lIENvbnRleHQ6OlN0YXRlbWVudAorI2RlZmluZSBDb250
ZXh0SnVtcFRhcmdldCB0eXBlbmFtZSBDb250ZXh0OjpKdW1wVGFyZ2V0CiAKIG5hbWVzcGFjZSBK
U0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rp
b25TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rp
b25TeW50YXhDaGVja2VyLmgKaW5kZXggNTE5ODU1M2U0MzgwNDE3NTIyMTcxZGE4YjY2Y2ExY2Vl
N2NhMGM0MS4uY2IxNzk1YWJlMGU1NGFlMWQ4ZjY2MWFjMWNmYmQyYTJlZjQ1Y2UyNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENo
ZWNrZXIuaApAQCAtMzYsNiArMzYsOCBAQCBjbGFzcyBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2Vy
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIGludCBFeHByZXNzaW9uOwogICAgIHR5cGVkZWYgaW50
IFN0YXRlbWVudDsKKyAgICB0eXBlZGVmIGludCBKdW1wVGFyZ2V0OworICAgIGVudW0gY2xhc3Mg
SnVtcENvbmRpdGlvbiB7IFplcm8sIE5vblplcm8gfTsKIAogICAgIHZvaWQgc3RhcnRGdW5jdGlv
bihjb25zdCBWZWN0b3I8V0FTTVR5cGU+JiBhcmd1bWVudHMsIHVpbnQzMl90IG51bWJlck9mSTMy
TG9jYWxWYXJpYWJsZXMsIHVpbnQzMl90IG51bWJlck9mRjMyTG9jYWxWYXJpYWJsZXMsIHVpbnQz
Ml90IG51bWJlck9mRjY0TG9jYWxWYXJpYWJsZXMpCiAgICAgewpAQCAtODQsNiArODYsMjUgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gVU5VU0VEOwogICAgIH0KIAorICAgIHZvaWQgbGlua1Rh
cmdldChjb25zdCBpbnQmKSB7IH0KKyAgICB2b2lkIGp1bXBUb1RhcmdldChjb25zdCBpbnQmKSB7
IH0KKyAgICB2b2lkIGp1bXBUb1RhcmdldElmKEp1bXBDb25kaXRpb24sIGludCwgY29uc3QgaW50
JikKKyAgICB7CisgICAgICAgIG1fdGVtcFN0YWNrVG9wLS07CisgICAgfQorCisgICAgdm9pZCBz
dGFydExvb3AoKSB7IH0KKyAgICB2b2lkIGVuZExvb3AoKSB7IH0KKyAgICB2b2lkIHN0YXJ0U3dp
dGNoKCkgeyB9CisgICAgdm9pZCBlbmRTd2l0Y2goKSB7IH0KKyAgICB2b2lkIHN0YXJ0TGFiZWwo
KSB7IH0KKyAgICB2b2lkIGVuZExhYmVsKCkgeyB9CisKKyAgICBpbnQgYnJlYWtUYXJnZXQoKSB7
IHJldHVybiBVTlVTRUQ7IH0KKyAgICBpbnQgY29udGludWVUYXJnZXQoKSB7IHJldHVybiBVTlVT
RUQ7IH0KKyAgICBpbnQgYnJlYWtMYWJlbFRhcmdldCh1aW50MzJfdCkgeyByZXR1cm4gVU5VU0VE
OyB9CisgICAgaW50IGNvbnRpbnVlTGFiZWxUYXJnZXQodWludDMyX3QpIHsgcmV0dXJuIFVOVVNF
RDsgfQorCiAgICAgdW5zaWduZWQgc3RhY2tIZWlnaHQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fbnVtYmVyT2ZMb2NhbHMgKyBtX3RlbXBTdGFja0hlaWdodDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>