<?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>93348</bug_id>
          
          <creation_ts>2012-08-07 02:27:34 -0700</creation_ts>
          <short_desc>Refactor magic numbers in the ARM port of DFG-JIT</short_desc>
          <delta_ts>2012-08-07 15:55:23 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Gabor Ballabas">gaborb</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gaborb</cc>
    
    <cc>loki</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>688979</commentid>
    <comment_count>0</comment_count>
    <who name="Gabor Ballabas">gaborb</who>
    <bug_when>2012-08-07 02:27:34 -0700</bug_when>
    <thetext>This port currently uses a lot of magic numbers hard-coded into the code and the ones with names are often have not easily understandable abbreviations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689018</commentid>
    <comment_count>1</comment_count>
      <attachid>156906</attachid>
    <who name="Gabor Ballabas">gaborb</who>
    <bug_when>2012-08-07 03:46:54 -0700</bug_when>
    <thetext>Created attachment 156906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689431</commentid>
    <comment_count>2</comment_count>
      <attachid>156906</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-07 14:53:27 -0700</bug_when>
    <thetext>Comment on attachment 156906
Patch

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689525</commentid>
    <comment_count>3</comment_count>
      <attachid>156906</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 15:55:20 -0700</bug_when>
    <thetext>Comment on attachment 156906
Patch

Clearing flags on attachment: 156906

Committed r124930: &lt;http://trac.webkit.org/changeset/124930&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689526</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 15:55:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156906</attachid>
            <date>2012-08-07 03:46:54 -0700</date>
            <delta_ts>2012-08-07 15:55:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0002-magic-numbers.patch</filename>
            <type>text/plain</type>
            <size>35982</size>
            <attacher name="Gabor Ballabas">gaborb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDY2NzY0MGIuLjZmYmQ2MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc1IEBACiAyMDEyLTA4LTA3ICBHYWJvciBCYWxsYWJh
cyAgPGdhYm9yYkBpbmYudS1zemVnZWQuaHU+CiAKKyAgICAgICAgUmVmYWN0b3IgbWFnaWMgbnVt
YmVycyBpbiB0aGUgQVJNIHBvcnQgb2YgREZHLUpJVAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgbmV3IG5hbWVzIGZvciBoYXJkLWNvZGVk
IG1hZ2ljIG51bWJlcnMuCisgICAgICAgIFJlZmFjdG9yIGNvbnN0YW50IHdpdGggY29uZnVzaW5n
IG5hbWVzIHRvIG1vcmUgZGVzY3JpcHRpdmUgb25lcy4KKworICAgICAgICAqIGFzc2VtYmxlci9B
Uk1Bc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnBhdGNoQ29uc3Rh
bnRQb29sTG9hZCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6Z2V0T3AyKToKKyAgICAg
ICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpnZW5JbnQpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJs
ZXI6OmdldEltbSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bW92ZUltbSk6CisgICAg
ICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZW5jb2RlQ29tcGxleEltbSk6CisgICAgICAgIChKU0M6
OkFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyMzIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJs
ZXI6OmRhdGFUcmFuc2ZlcjE2KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpkYXRhVHJh
bnNmZXJGbG9hdCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZXhlY3V0YWJsZUNvcHkp
OgorICAgICAgICAqIGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjplbWl0SW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6
OmFuZHNfcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZW9yc19yKToKKyAgICAgICAg
KEpTQzo6QVJNQXNzZW1ibGVyOjpzdWJzX3IpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6
OnJzYnNfcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6YWRkc19yKToKKyAgICAgICAg
KEpTQzo6QVJNQXNzZW1ibGVyOjphZGNzX3IpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6
OnNiY3Nfcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6cnNjc19yKToKKyAgICAgICAg
KEpTQzo6QVJNQXNzZW1ibGVyOjp0c3Rfcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6
dGVxX3IpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmNtcF9yKToKKyAgICAgICAgKEpT
Qzo6QVJNQXNzZW1ibGVyOjpjbW5fcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6b3Jy
c19yKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptb3ZzX3IpOgorICAgICAgICAoSlND
OjpBUk1Bc3NlbWJsZXI6OmJpY3Nfcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bXZu
c19yKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptdWxzX3IpOgorICAgICAgICAoSlND
OjpBUk1Bc3NlbWJsZXI6Omxkcl9pbW0pOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6Omxk
cl91bl9pbW0pOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmR0cl91KToKKyAgICAgICAg
KEpTQzo6QVJNQXNzZW1ibGVyOjpkdHJfdXIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6
OmR0cl9kcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZHRyaF91KToKKyAgICAgICAg
KEpTQzo6QVJNQXNzZW1ibGVyOjpkdHJoX3VyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVy
OjpmZHRyX3UpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnB1c2hfcik6CisgICAgICAg
IChKU0M6OkFSTUFzc2VtYmxlcjo6cG9wX3IpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6
OmdldExkckltbUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmdldExkcklt
bUFkZHJlc3NPblBvb2wpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnBhdGNoQ29uc3Rh
bnRQb29sTG9hZCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6cmVwYXRjaENvbXBhY3Qp
OgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAg
IChKU0M6OkFSTUFzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbik6CisgICAgICAgIChKU0M6
OkFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6
Z2V0T3AySGFsZik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6Z2V0SW1tMTZPcDIpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnBsYWNlQ29uc3RhbnRQb29sQmFycmllcik6Cisg
ICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6Z2V0Q29uZGl0aW9uYWxGaWVsZCk6CisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk06OmxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTo6YW5kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNoMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNoVGVzdDMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMik6
CisKKzIwMTItMDgtMDcgIEdhYm9yIEJhbGxhYmFzICA8Z2Fib3JiQGluZi51LXN6ZWdlZC5odT4K
KwogICAgICAgICBSZWZhY3RvciBlbWl0Kkluc3QgZnVuY3Rpb25zIGFuZCBpbnRyb2R1Y2UgdG9B
Uk1Xb3JkIGZ1bmN0aW9ucyBpbiBERkctSklUJ3MgdHJhZGl0aW9uYWwgQVJNIHBvcnQKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMjY2CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcAppbmRleCAz
NjJmY2M2Li41MzM2NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTUFzc2VtYmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BUk1Bc3NlbWJsZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgQVJNQXNzZW1ibGVyOjpw
YXRjaENvbnN0YW50UG9vbExvYWQodm9pZCogbG9hZEFkZHIsIHZvaWQqIGNvbnN0UG9vbEFkZHIp
CiAgICAgICAgIEFTU0VSVChkaWZmIDw9IDB4ZmZmKTsKICAgICAgICAgKmxkciA9ICgqbGRyICYg
fjB4ZmZmKSB8IGRpZmY7CiAgICAgfSBlbHNlCi0gICAgICAgICpsZHIgPSAoKmxkciAmIH4oMHhm
ZmYgfCBBUk1Bc3NlbWJsZXI6OkRUX1VQKSkgfCBzaXplb2YoQVJNV29yZCk7CisgICAgICAgICps
ZHIgPSAoKmxkciAmIH4oMHhmZmYgfCBBUk1Bc3NlbWJsZXI6OkRhdGFUcmFuc2ZlclVwKSkgfCBz
aXplb2YoQVJNV29yZCk7CiB9CiAKIC8vIEhhbmRsZSBpbW1lZGlhdGVzCkBAIC01Niw3ICs1Niw3
IEBAIEFSTVdvcmQgQVJNQXNzZW1ibGVyOjpnZXRPcDIoQVJNV29yZCBpbW0pCiAgICAgaW50IHJv
bDsKIAogICAgIGlmIChpbW0gPD0gMHhmZikKLSAgICAgICAgcmV0dXJuIE9QMl9JTU0gfCBpbW07
CisgICAgICAgIHJldHVybiBPcDJJbW1lZGlhdGUgfCBpbW07CiAKICAgICBpZiAoKGltbSAmIDB4
ZmYwMDAwMDApID09IDApIHsKICAgICAgICAgaW1tIDw8PSA4OwpAQCAtODMsOSArODMsOSBAQCBB
Uk1Xb3JkIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKEFSTVdvcmQgaW1tKQogICAgIH0KIAogICAgIGlm
ICgoaW1tICYgMHgwMGZmZmZmZikgPT0gMCkKLSAgICAgICAgcmV0dXJuIE9QMl9JTU0gfCAoaW1t
ID4+IDI0KSB8IChyb2wgPDwgOCk7CisgICAgICAgIHJldHVybiBPcDJJbW1lZGlhdGUgfCAoaW1t
ID4+IDI0KSB8IChyb2wgPDwgOCk7CiAKLSAgICByZXR1cm4gSU5WQUxJRF9JTU07CisgICAgcmV0
dXJuIEludmFsaWRJbW1lZGlhdGU7CiB9CiAKIGludCBBUk1Bc3NlbWJsZXI6OmdlbkludChpbnQg
cmVnLCBBUk1Xb3JkIGltbSwgYm9vbCBwb3NpdGl2ZSkKQEAgLTEyOSwxMCArMTI5LDEwIEBAIGlu
dCBBUk1Bc3NlbWJsZXI6OmdlbkludChpbnQgcmVnLCBBUk1Xb3JkIGltbSwgYm9vbCBwb3NpdGl2
ZSkKICAgICBBU1NFUlQoKGltbSAmIDB4ZmYpID09IDApOwogCiAgICAgaWYgKChpbW0gJiAweGZm
MDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgIGltbTEgPSBPUDJfSU1NIHwgKChpbW0gPj4gMTYpICYg
MHhmZikgfCAoKChyb2wgKyA0KSAmIDB4ZikgPDwgOCk7Ci0gICAgICAgIGltbTIgPSBPUDJfSU1N
IHwgKChpbW0gPj4gOCkgJiAweGZmKSB8ICgoKHJvbCArIDgpICYgMHhmKSA8PCA4KTsKKyAgICAg
ICAgaW1tMSA9IE9wMkltbWVkaWF0ZSB8ICgoaW1tID4+IDE2KSAmIDB4ZmYpIHwgKCgocm9sICsg
NCkgJiAweGYpIDw8IDgpOworICAgICAgICBpbW0yID0gT3AySW1tZWRpYXRlIHwgKChpbW0gPj4g
OCkgJiAweGZmKSB8ICgoKHJvbCArIDgpICYgMHhmKSA8PCA4KTsKICAgICB9IGVsc2UgaWYgKGlt
bSAmIDB4YzAwMDAwMDApIHsKLSAgICAgICAgaW1tMSA9IE9QMl9JTU0gfCAoKGltbSA+PiAyNCkg
JiAweGZmKSB8ICgocm9sICYgMHhmKSA8PCA4KTsKKyAgICAgICAgaW1tMSA9IE9wMkltbWVkaWF0
ZSB8ICgoaW1tID4+IDI0KSAmIDB4ZmYpIHwgKChyb2wgJiAweGYpIDw8IDgpOwogICAgICAgICBp
bW0gPDw9IDg7CiAgICAgICAgIHJvbCArPSA0OwogCkBAIC0xNTIsNyArMTUyLDcgQEAgaW50IEFS
TUFzc2VtYmxlcjo6Z2VuSW50KGludCByZWcsIEFSTVdvcmQgaW1tLCBib29sIHBvc2l0aXZlKQog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKChpbW0gJiAweDAwZmZmZmZmKSA9PSAwKQotICAgICAg
ICAgICAgaW1tMiA9IE9QMl9JTU0gfCAoaW1tID4+IDI0KSB8ICgocm9sICYgMHhmKSA8PCA4KTsK
KyAgICAgICAgICAgIGltbTIgPSBPcDJJbW1lZGlhdGUgfCAoaW1tID4+IDI0KSB8ICgocm9sICYg
MHhmKSA8PCA4KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfSBl
bHNlIHsKQEAgLTE2Niw3ICsxNjYsNyBAQCBpbnQgQVJNQXNzZW1ibGVyOjpnZW5JbnQoaW50IHJl
ZywgQVJNV29yZCBpbW0sIGJvb2wgcG9zaXRpdmUpCiAgICAgICAgICAgICByb2wgKz0gMTsKICAg
ICAgICAgfQogCi0gICAgICAgIGltbTEgPSBPUDJfSU1NIHwgKChpbW0gPj4gMjQpICYgMHhmZikg
fCAoKHJvbCAmIDB4ZikgPDwgOCk7CisgICAgICAgIGltbTEgPSBPcDJJbW1lZGlhdGUgfCAoKGlt
bSA+PiAyNCkgJiAweGZmKSB8ICgocm9sICYgMHhmKSA8PCA4KTsKICAgICAgICAgaW1tIDw8PSA4
OwogICAgICAgICByb2wgKz0gNDsKIApAQCAtMTgxLDcgKzE4MSw3IEBAIGludCBBUk1Bc3NlbWJs
ZXI6OmdlbkludChpbnQgcmVnLCBBUk1Xb3JkIGltbSwgYm9vbCBwb3NpdGl2ZSkKICAgICAgICAg
fQogCiAgICAgICAgIGlmICgoaW1tICYgMHgwMGZmZmZmZikgPT0gMCkKLSAgICAgICAgICAgIGlt
bTIgPSBPUDJfSU1NIHwgKGltbSA+PiAyNCkgfCAoKHJvbCAmIDB4ZikgPDwgOCk7CisgICAgICAg
ICAgICBpbW0yID0gT3AySW1tZWRpYXRlIHwgKGltbSA+PiAyNCkgfCAoKHJvbCAmIDB4ZikgPDwg
OCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTIwMywx
MyArMjAzLDEzIEBAIEFSTVdvcmQgQVJNQXNzZW1ibGVyOjpnZXRJbW0oQVJNV29yZCBpbW0sIGlu
dCB0bXBSZWcsIGJvb2wgaW52ZXJ0KQogCiAgICAgLy8gRG8gaXQgYnkgMSBpbnN0cnVjdGlvbgog
ICAgIHRtcCA9IGdldE9wMihpbW0pOwotICAgIGlmICh0bXAgIT0gSU5WQUxJRF9JTU0pCisgICAg
aWYgKHRtcCAhPSBJbnZhbGlkSW1tZWRpYXRlKQogICAgICAgICByZXR1cm4gdG1wOwogCiAgICAg
dG1wID0gZ2V0T3AyKH5pbW0pOwotICAgIGlmICh0bXAgIT0gSU5WQUxJRF9JTU0pIHsKKyAgICBp
ZiAodG1wICE9IEludmFsaWRJbW1lZGlhdGUpIHsKICAgICAgICAgaWYgKGludmVydCkKLSAgICAg
ICAgICAgIHJldHVybiB0bXAgfCBPUDJfSU5WX0lNTTsKKyAgICAgICAgICAgIHJldHVybiB0bXAg
fCBPcDJJbnZlcnRlZEltbWVkaWF0ZTsKICAgICAgICAgbXZuX3IodG1wUmVnLCB0bXApOwogICAg
ICAgICByZXR1cm4gdG1wUmVnOwogICAgIH0KQEAgLTIyMywxMyArMjIzLDEzIEBAIHZvaWQgQVJN
QXNzZW1ibGVyOjptb3ZlSW1tKEFSTVdvcmQgaW1tLCBpbnQgZGVzdCkKIAogICAgIC8vIERvIGl0
IGJ5IDEgaW5zdHJ1Y3Rpb24KICAgICB0bXAgPSBnZXRPcDIoaW1tKTsKLSAgICBpZiAodG1wICE9
IElOVkFMSURfSU1NKSB7CisgICAgaWYgKHRtcCAhPSBJbnZhbGlkSW1tZWRpYXRlKSB7CiAgICAg
ICAgIG1vdl9yKGRlc3QsIHRtcCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICB0bXAg
PSBnZXRPcDIofmltbSk7Ci0gICAgaWYgKHRtcCAhPSBJTlZBTElEX0lNTSkgeworICAgIGlmICh0
bXAgIT0gSW52YWxpZEltbWVkaWF0ZSkgewogICAgICAgICBtdm5fcihkZXN0LCB0bXApOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQxLDcgKzI0MSw3IEBAIEFSTVdvcmQgQVJNQXNzZW1i
bGVyOjplbmNvZGVDb21wbGV4SW1tKEFSTVdvcmQgaW1tLCBpbnQgZGVzdCkKIHsKICNpZiBXVEZf
QVJNX0FSQ0hfQVRfTEVBU1QoNykKICAgICBBUk1Xb3JkIHRtcCA9IGdldEltbTE2T3AyKGltbSk7
Ci0gICAgaWYgKHRtcCAhPSBJTlZBTElEX0lNTSkgeworICAgIGlmICh0bXAgIT0gSW52YWxpZElt
bWVkaWF0ZSkgewogICAgICAgICBtb3Z3X3IoZGVzdCwgdG1wKTsKICAgICAgICAgcmV0dXJuIGRl
c3Q7CiAgICAgfQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJh
bnNmZXIzMihEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIFJlZ2lzdGVySUQgc3JjCiAg
ICAgICAgIGlmIChvZmZzZXQgPD0gMHhmZmYpCiAgICAgICAgICAgICBkdHJfdSh0cmFuc2ZlclR5
cGUsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICAgICAgZWxzZSBpZiAob2Zmc2V0IDw9IDB4
ZmZmZmYpIHsKLSAgICAgICAgICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9QMl9J
TU0gfCAob2Zmc2V0ID4+IDEyKSB8ICgxMCA8PCA4KSk7CisgICAgICAgICAgICBhZGRfcihBUk1S
ZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAob2Zmc2V0ID4+IDEyKSB8ICgxMCA8
PCA4KSk7CiAgICAgICAgICAgICBkdHJfdSh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0
ZXJzOjpTMCwgKG9mZnNldCAmIDB4ZmZmKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBtb3ZlSW1tKG9mZnNldCwgQVJNUmVnaXN0ZXJzOjpTMCk7CkBAIC0yNzgsNyArMjc4LDcgQEAg
dm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGVBIHRyYW5z
ZmVyVHlwZSwgUmVnaXN0ZXJJRCBzcmMKICAgICAgICAgaWYgKG9mZnNldCA+PSAtMHhmZmYpCiAg
ICAgICAgICAgICBkdHJfZCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgLW9mZnNldCk7CiAg
ICAgICAgIGVsc2UgaWYgKG9mZnNldCA+PSAtMHhmZmZmZikgewotICAgICAgICAgICAgc3ViX3Io
QVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lNTSB8ICgtb2Zmc2V0ID4+IDEyKSB8ICgxMCA8
PCA4KSk7CisgICAgICAgICAgICBzdWJfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1l
ZGlhdGUgfCAoLW9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOwogICAgICAgICAgICAgZHRyX2Qo
dHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsICgtb2Zmc2V0ICYgMHhmZmYp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1vdmVJbW0ob2Zmc2V0LCBBUk1SZWdp
c3RlcnM6OlMwKTsKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIEFSTUFzc2VtYmxlcjo6ZGF0YVRy
YW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBSZWdpc3RlcklEIHNyYwog
ICAgICAgICBpZiAob2Zmc2V0IDw9IDB4ZmYpCiAgICAgICAgICAgICBkdHJoX3UodHJhbnNmZXJU
eXBlLCBzcmNEc3QsIGJhc2UsIGdldE9wMkhhbGYob2Zmc2V0KSk7CiAgICAgICAgIGVsc2UgaWYg
KG9mZnNldCA8PSAweGZmZmYpIHsKLSAgICAgICAgICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzAs
IGJhc2UsIE9QMl9JTU0gfCAob2Zmc2V0ID4+IDgpIHwgKDEyIDw8IDgpKTsKKyAgICAgICAgICAg
IGFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8IChvZmZzZXQgPj4g
OCkgfCAoMTIgPDwgOCkpOwogICAgICAgICAgICAgZHRyaF91KHRyYW5zZmVyVHlwZSwgc3JjRHN0
LCBBUk1SZWdpc3RlcnM6OlMwLCBnZXRPcDJIYWxmKG9mZnNldCAmIDB4ZmYpKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIG1vdmVJbW0ob2Zmc2V0LCBBUk1SZWdpc3RlcnM6OlMwKTsK
QEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIEFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyMTYoRGF0
YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBSZWdpc3RlcklEIHNyYwogICAgICAgICBpZiAo
b2Zmc2V0ID49IC0weGZmKQogICAgICAgICAgICAgZHRyaF9kKHRyYW5zZmVyVHlwZSwgc3JjRHN0
LCBiYXNlLCBnZXRPcDJIYWxmKC1vZmZzZXQpKTsKICAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID49
IC0weGZmZmYpIHsKLSAgICAgICAgICAgIHN1Yl9yKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9Q
Ml9JTU0gfCAoLW9mZnNldCA+PiA4KSB8ICgxMiA8PCA4KSk7CisgICAgICAgICAgICBzdWJfcihB
Uk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAoLW9mZnNldCA+PiA4KSB8ICgx
MiA8PCA4KSk7CiAgICAgICAgICAgICBkdHJoX2QodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJl
Z2lzdGVyczo6UzAsIGdldE9wMkhhbGYoLW9mZnNldCAmIDB4ZmYpKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIG1vdmVJbW0ob2Zmc2V0LCBBUk1SZWdpc3RlcnM6OlMwKTsKQEAgLTM0
Niw3ICszNDYsNyBAQCB2b2lkIEFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyRmxvYXQoRGF0YVRy
YW5zZmVyVHlwZUZsb2F0IHRyYW5zZmVyVHlwZSwgRlBSZWdpcwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0g
MCkgewotICAgICAgICAgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT1AyX0lNTSB8
IChvZmZzZXQgPj4gMTApIHwgKDExIDw8IDgpKTsKKyAgICAgICAgICAgIGFkZF9yKEFSTVJlZ2lz
dGVyczo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8IChvZmZzZXQgPj4gMTApIHwgKDExIDw8IDgp
KTsKICAgICAgICAgICAgIGZkdHJfdSh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJz
OjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlckZs
b2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0cmFuc2ZlclR5cGUsIEZQUmVnaXMKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAob2Zmc2V0IDw9IDB4M2ZmZmYgJiYg
b2Zmc2V0ID49IDApIHsKLSAgICAgICAgICAgIHN1Yl9yKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2Us
IE9QMl9JTU0gfCAob2Zmc2V0ID4+IDEwKSB8ICgxMSA8PCA4KSk7CisgICAgICAgICAgICBzdWJf
cihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAob2Zmc2V0ID4+IDEwKSB8
ICgxMSA8PCA4KSk7CiAgICAgICAgICAgICBmZHRyX2QodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFS
TVJlZ2lzdGVyczo6UzAsIChvZmZzZXQgPj4gMikgJiAweGZmKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMzkyLDEwICszOTIsMTAgQEAgUGFzc1JlZlB0cjxFeGVjdXRhYmxl
TWVtb3J5SGFuZGxlPiBBUk1Bc3NlbWJsZXI6OmV4ZWN1dGFibGVDb3B5KEpTR2xvYmFsRGF0YSYg
Z2wKICAgICAgICAgQVJNV29yZCogYWRkciA9IGdldExkckltbUFkZHJlc3MobGRyQWRkcik7CiAg
ICAgICAgIGlmICgqYWRkciAhPSBJbnZhbGlkQnJhbmNoVGFyZ2V0KSB7CiAgICAgICAgICAgICBp
ZiAoIShpdGVyLT5tX29mZnNldCAmIDEpKSB7Ci0gICAgICAgICAgICAgICAgaW50cHRyX3QgZGlm
ZmVyZW5jZSA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEFSTVdvcmQqPihkYXRhICsgKmFkZHIpIC0g
KGxkckFkZHIgKyBEZWZhdWx0UHJlZmV0Y2hpbmcpOworICAgICAgICAgICAgICAgIGludHB0cl90
IGRpZmZlcmVuY2UgPSByZWludGVycHJldF9jYXN0X3B0cjxBUk1Xb3JkKj4oZGF0YSArICphZGRy
KSAtIChsZHJBZGRyICsgRGVmYXVsdFByZWZldGNoT2Zmc2V0KTsKIAotICAgICAgICAgICAgICAg
IGlmICgoZGlmZmVyZW5jZSA8PSBCT0ZGU0VUX01BWCAmJiBkaWZmZXJlbmNlID49IEJPRkZTRVRf
TUlOKSkgewotICAgICAgICAgICAgICAgICAgICAqbGRyQWRkciA9IEIgfCBnZXRDb25kaXRpb25h
bEZpZWxkKCpsZHJBZGRyKSB8IChkaWZmZXJlbmNlICYgQlJBTkNIX01BU0spOworICAgICAgICAg
ICAgICAgIGlmICgoZGlmZmVyZW5jZSA8PSBNYXhpbXVtQnJhbmNoT2Zmc2V0RGlzdGFuY2UgJiYg
ZGlmZmVyZW5jZSA+PSBNaW5pbXVtQnJhbmNoT2Zmc2V0RGlzdGFuY2UpKSB7CisgICAgICAgICAg
ICAgICAgICAgICpsZHJBZGRyID0gQiB8IGdldENvbmRpdGlvbmFsRmllbGQoKmxkckFkZHIpIHwg
KGRpZmZlcmVuY2UgJiBCcmFuY2hPZmZzZXRNYXNrKTsKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgKaW5kZXggOTYyNzI0Zi4uYWM5MThm
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJs
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5o
CkBAIC0xNzksNTIgKzE3OSw1MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfTsKIAogICAg
ICAgICBlbnVtIHsKLSAgICAgICAgICAgIE9QMl9JTU0gPSAoMSA8PCAyNSksCi0gICAgICAgICAg
ICBPUDJfSU1NX0hBTEYgPSAoMSA8PCAyMiksCi0gICAgICAgICAgICBPUDJfSU5WX0lNTSA9ICgx
IDw8IDI2KSwKLSAgICAgICAgICAgIFNFVF9DQyA9ICgxIDw8IDIwKSwKLSAgICAgICAgICAgIE9Q
Ml9PRlNSRUcgPSAoMSA8PCAyNSksCisgICAgICAgICAgICBPcDJJbW1lZGlhdGUgPSAoMSA8PCAy
NSksCisgICAgICAgICAgICBJbW1lZGlhdGVGb3JIYWxmV29yZFRyYW5zZmVyID0gKDEgPDwgMjIp
LAorICAgICAgICAgICAgT3AySW52ZXJ0ZWRJbW1lZGlhdGUgPSAoMSA8PCAyNiksCisgICAgICAg
ICAgICBTZXRDb25kaXRpb25hbENvZGVzID0gKDEgPDwgMjApLAorICAgICAgICAgICAgT3AySXNS
ZWdpc3RlckFyZ3VtZW50ID0gKDEgPDwgMjUpLAogICAgICAgICAgICAgLy8gRGF0YSB0cmFuc2Zl
ciBmbGFncy4KLSAgICAgICAgICAgIERUX1VQID0gKDEgPDwgMjMpLAotICAgICAgICAgICAgRFRf
V0IgPSAoMSA8PCAyMSksCi0gICAgICAgICAgICBEVF9QUkUgPSAoMSA8PCAyNCksCi0gICAgICAg
ICAgICBEVF9MT0FEID0gKDEgPDwgMjApLAotICAgICAgICAgICAgRFRfQllURSA9ICgxIDw8IDIy
KSwKKyAgICAgICAgICAgIERhdGFUcmFuc2ZlclVwID0gKDEgPDwgMjMpLAorICAgICAgICAgICAg
RGF0YVRyYW5zZmVyV3JpdGVCYWNrID0gKDEgPDwgMjEpLAorICAgICAgICAgICAgRGF0YVRyYW5z
ZmVyUG9zdFVwZGF0ZSA9ICgxIDw8IDI0KSwKKyAgICAgICAgICAgIERhdGFUcmFuc2ZlckxvYWQg
PSAoMSA8PCAyMCksCisgICAgICAgICAgICBCeXRlRGF0YVRyYW5zZmVyID0gKDEgPDwgMjIpLAog
ICAgICAgICB9OwogCiAgICAgICAgIGVudW0gRGF0YVRyYW5zZmVyVHlwZUEgewotICAgICAgICAg
ICAgTG9hZFVpbnQzMiA9IDB4MDUwMDAwMDAgfCBEVF9MT0FELAotICAgICAgICAgICAgTG9hZFVp
bnQ4ID0gMHgwNTQwMDAwMCB8IERUX0xPQUQsCisgICAgICAgICAgICBMb2FkVWludDMyID0gMHgw
NTAwMDAwMCB8IERhdGFUcmFuc2ZlckxvYWQsCisgICAgICAgICAgICBMb2FkVWludDggPSAweDA1
NDAwMDAwIHwgRGF0YVRyYW5zZmVyTG9hZCwKICAgICAgICAgICAgIFN0b3JlVWludDMyID0gMHgw
NTAwMDAwMCwKICAgICAgICAgICAgIFN0b3JlVWludDggPSAweDA1NDAwMDAwLAogICAgICAgICB9
OwogCiAgICAgICAgIGVudW0gRGF0YVRyYW5zZmVyVHlwZUIgewotICAgICAgICAgICAgTG9hZFVp
bnQxNiA9IDB4MDEwMDAwYjAgfCBEVF9MT0FELAotICAgICAgICAgICAgTG9hZEludDE2ID0gMHgw
MTAwMDBmMCB8IERUX0xPQUQsCi0gICAgICAgICAgICBMb2FkSW50OCA9IDB4MDEwMDAwZDAgfCBE
VF9MT0FELAorICAgICAgICAgICAgTG9hZFVpbnQxNiA9IDB4MDEwMDAwYjAgfCBEYXRhVHJhbnNm
ZXJMb2FkLAorICAgICAgICAgICAgTG9hZEludDE2ID0gMHgwMTAwMDBmMCB8IERhdGFUcmFuc2Zl
ckxvYWQsCisgICAgICAgICAgICBMb2FkSW50OCA9IDB4MDEwMDAwZDAgfCBEYXRhVHJhbnNmZXJM
b2FkLAogICAgICAgICAgICAgU3RvcmVVaW50MTYgPSAweDAxMDAwMGIwLAogICAgICAgICB9Owog
CiAgICAgICAgIGVudW0gRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHsKLSAgICAgICAgICAgIExvYWRG
bG9hdCA9IDB4MGQwMDBhMDAgfCBEVF9MT0FELAotICAgICAgICAgICAgTG9hZERvdWJsZSA9IDB4
MGQwMDBiMDAgfCBEVF9MT0FELAorICAgICAgICAgICAgTG9hZEZsb2F0ID0gMHgwZDAwMGEwMCB8
IERhdGFUcmFuc2ZlckxvYWQsCisgICAgICAgICAgICBMb2FkRG91YmxlID0gMHgwZDAwMGIwMCB8
IERhdGFUcmFuc2ZlckxvYWQsCiAgICAgICAgICAgICBTdG9yZUZsb2F0ID0gMHgwZDAwMGEwMCwK
ICAgICAgICAgICAgIFN0b3JlRG91YmxlID0gMHgwZDAwMGIwMCwKICAgICAgICAgfTsKIAogICAg
ICAgICAvLyBNYXNrcyBvZiBBUk0gaW5zdHJ1Y3Rpb25zCiAgICAgICAgIGVudW0gewotICAgICAg
ICAgICAgQlJBTkNIX01BU0sgPSAweDAwZmZmZmZmLAotICAgICAgICAgICAgTk9OQVJNID0gMHhm
MDAwMDAwMCwKLSAgICAgICAgICAgIFNEVF9NQVNLID0gMHgwYzAwMDAwMCwKLSAgICAgICAgICAg
IFNEVF9PRkZTRVRfTUFTSyA9IDB4ZmZmLAorICAgICAgICAgICAgQnJhbmNoT2Zmc2V0TWFzayA9
IDB4MDBmZmZmZmYsCisgICAgICAgICAgICBDb25kaXRpb25hbEZpZWxkTWFzayA9IDB4ZjAwMDAw
MDAsCisgICAgICAgICAgICBEYXRhVHJhbnNmZXJPZmZzZXRNYXNrID0gMHhmZmYsCiAgICAgICAg
IH07CiAKICAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBCT0ZGU0VUX01JTiA9IC0weDAwODAw
MDAwLAotICAgICAgICAgICAgQk9GRlNFVF9NQVggPSAweDAwN2ZmZmZmLAotICAgICAgICAgICAg
U0RUID0gMHgwNDAwMDAwMCwKKyAgICAgICAgICAgIE1pbmltdW1CcmFuY2hPZmZzZXREaXN0YW5j
ZSA9IC0weDAwODAwMDAwLAorICAgICAgICAgICAgTWF4aW11bUJyYW5jaE9mZnNldERpc3RhbmNl
ID0gMHgwMDdmZmZmZiwKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIHsKQEAgLTIzMywxNSAr
MjMxLDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcGFkRm9yQWxpZ24zMiA9IDB4
ZTEyZmZmN2YgLy8gJ2JrcHQgMHhmZmZmJyBpbnN0cnVjdGlvbi4KICAgICAgICAgfTsKIAotICAg
ICAgICBzdGF0aWMgY29uc3QgQVJNV29yZCBJTlZBTElEX0lNTSA9IDB4ZjAwMDAwMDA7CisgICAg
ICAgIHN0YXRpYyBjb25zdCBBUk1Xb3JkIEludmFsaWRJbW1lZGlhdGUgPSAweGYwMDAwMDAwOwog
ICAgICAgICBzdGF0aWMgY29uc3QgQVJNV29yZCBJbnZhbGlkQnJhbmNoVGFyZ2V0ID0gMHhmZmZm
ZmZmZjsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBEZWZhdWx0UHJlZmV0Y2hpbmcgPSAyOwor
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IERlZmF1bHRQcmVmZXRjaE9mZnNldCA9IDI7CisKKyAg
ICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgQmx4SW5zdHJ1Y3Rpb25NYXNrID0gMHgwMTJmZmYz
MDsKKyAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgTGRyT3JBZGRJbnN0cnVjdGlvbk1hc2sg
PSAweDBmZjAwMDAwOworICAgICAgICBzdGF0aWMgY29uc3QgQVJNV29yZCBMZHJQY0ltbWVkaWF0
ZUluc3RydWN0aW9uTWFzayA9IDB4MGY3ZjAwMDA7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IEFS
TVdvcmQgQWRkSW1tZWRpYXRlSW5zdHJ1Y3Rpb24gPSAweDAyODAwMDAwOworICAgICAgICBzdGF0
aWMgY29uc3QgQVJNV29yZCBCbHhJbnN0cnVjdGlvbiA9IDB4MDEyZmZmMzA7CisgICAgICAgIHN0
YXRpYyBjb25zdCBBUk1Xb3JkIExkckltbWVkaWF0ZUluc3RydWN0aW9uID0gMHgwNTkwMDAwMDsK
KyAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbiA9
IDB4MDUxZjAwMDA7CiAKICAgICAgICAgLy8gSW5zdHJ1Y3Rpb24gZm9ybWF0aW5nCiAKICAgICAg
ICAgdm9pZCBlbWl0SW5zdHJ1Y3Rpb24oQVJNV29yZCBvcCwgaW50IHJkLCBpbnQgcm4sIEFSTVdv
cmQgb3AyKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoKChvcDIgJiB+T1AyX0lNTSkg
PD0gMHhmZmYpIHx8ICgoKG9wMiAmIH5PUDJfSU1NX0hBTEYpIDw9IDB4ZmZmKSkpOworICAgICAg
ICAgICAgQVNTRVJUKCgob3AyICYgfk9wMkltbWVkaWF0ZSkgPD0gMHhmZmYpIHx8ICgoKG9wMiAm
IH5JbW1lZGlhdGVGb3JIYWxmV29yZFRyYW5zZmVyKSA8PSAweGZmZikpKTsKICAgICAgICAgICAg
IG1fYnVmZmVyLnB1dEludChvcCB8IFJOKHJuKSB8IFJEKHJkKSB8IG9wMik7CiAgICAgICAgIH0K
IApAQCAtMjY4LDcgKzI3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYW5k
c19yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQU5EIHwg
U0VUX0NDLCByZCwgcm4sIG9wMik7CisgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1X
b3JkKGNjKSB8IEFORCB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHZvaWQgZW9yX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBD
b25kaXRpb24gY2MgPSBBTCkKQEAgLTI3OCw3ICsyODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICB2b2lkIGVvcnNfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlv
biBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1X
b3JkKGNjKSB8IEVPUiB8IFNFVF9DQywgcmQsIHJuLCBvcDIpOworICAgICAgICAgICAgZW1pdElu
c3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBFT1IgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwg
cm4sIG9wMik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHN1Yl9yKGludCByZCwgaW50IHJu
LCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCkBAIC0yODgsNyArMjk1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBzdWJzX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdv
cmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgZW1pdElu
c3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBTVUIgfCBTRVRfQ0MsIHJkLCBybiwgb3AyKTsKKyAg
ICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgU1VCIHwgU2V0Q29uZGl0
aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCByc2Jf
cihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQpAQCAtMjk4
LDcgKzMwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcnNic19yKGludCBy
ZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgUlNCIHwgU0VUX0NDLCBy
ZCwgcm4sIG9wMik7CisgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8
IFJTQiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHZvaWQgYWRkX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24g
Y2MgPSBBTCkKQEAgLTMwOCw3ICszMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2
b2lkIGFkZHNfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFM
KQogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8
IEFERCB8IFNFVF9DQywgcmQsIHJuLCBvcDIpOworICAgICAgICAgICAgZW1pdEluc3RydWN0aW9u
KHRvQVJNV29yZChjYykgfCBBREQgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGFkY19yKGludCByZCwgaW50IHJuLCBBUk1Xb3Jk
IG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCkBAIC0zMTgsNyArMzI1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgdm9pZCBhZGNzX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBD
b25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9u
KHRvQVJNV29yZChjYykgfCBBREMgfCBTRVRfQ0MsIHJkLCBybiwgb3AyKTsKKyAgICAgICAgICAg
IGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQURDIHwgU2V0Q29uZGl0aW9uYWxDb2Rl
cywgcmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBzYmNfcihpbnQgcmQs
IGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQpAQCAtMzI4LDcgKzMzNSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgc2Jjc19yKGludCByZCwgaW50IHJu
LCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgU0JDIHwgU0VUX0NDLCByZCwgcm4sIG9w
Mik7CisgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFNCQyB8IFNl
dENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgcnNjX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
QEAgLTMzOCwyNyArMzQ1LDI3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcnNj
c19yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgUlNDIHwg
U0VUX0NDLCByZCwgcm4sIG9wMik7CisgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1X
b3JkKGNjKSB8IFJTQyB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHZvaWQgdHN0X3IoaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9u
IGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdv
cmQoY2MpIHwgVFNUIHwgU0VUX0NDLCAwLCBybiwgb3AyKTsKKyAgICAgICAgICAgIGVtaXRJbnN0
cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVFNUIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgMCwgcm4s
IG9wMik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHRlcV9yKGludCBybiwgQVJNV29yZCBv
cDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFRFUSB8IFNFVF9DQywgMCwgcm4sIG9wMik7CisgICAgICAg
ICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFRFUSB8IFNldENvbmRpdGlvbmFs
Q29kZXMsIDAsIHJuLCBvcDIpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBjbXBfcihpbnQg
cm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAg
ICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBDTVAgfCBTRVRfQ0MsIDAsIHJuLCBv
cDIpOworICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBDTVAgfCBT
ZXRDb25kaXRpb25hbENvZGVzLCAwLCBybiwgb3AyKTsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgY21uX3IoaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQ01OIHwgU0VU
X0NDLCAwLCBybiwgb3AyKTsKKyAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQo
Y2MpIHwgQ01OIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgMCwgcm4sIG9wMik7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIG9ycl9yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0
aW9uIGNjID0gQUwpCkBAIC0zNjgsNyArMzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdm9pZCBvcnJzX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2Mg
PSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChj
YykgfCBPUlIgfCBTRVRfQ0MsIHJkLCBybiwgb3AyKTsKKyAgICAgICAgICAgIGVtaXRJbnN0cnVj
dGlvbih0b0FSTVdvcmQoY2MpIHwgT1JSIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBv
cDIpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBtb3ZfcihpbnQgcmQsIEFSTVdvcmQgb3Ay
LCBDb25kaXRpb24gY2MgPSBBTCkKQEAgLTM5Miw3ICszOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICB2b2lkIG1vdnNfcihpbnQgcmQsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2Mg
PSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChj
YykgfCBNT1YgfCBTRVRfQ0MsIHJkLCBBUk1SZWdpc3RlcnM6OnIwLCBvcDIpOworICAgICAgICAg
ICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBNT1YgfCBTZXRDb25kaXRpb25hbENv
ZGVzLCByZCwgQVJNUmVnaXN0ZXJzOjpyMCwgb3AyKTsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgYmljX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
QEAgLTQwMiw3ICs0MDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGJpY3Nf
cihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEJJQyB8IFNF
VF9DQywgcmQsIHJuLCBvcDIpOworICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29y
ZChjYykgfCBCSUMgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAgICAg
IH0KIAogICAgICAgICB2b2lkIG12bl9yKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBj
YyA9IEFMKQpAQCAtNDEyLDcgKzQxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZv
aWQgbXZuc19yKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1WTiB8IFNF
VF9DQywgcmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7CisgICAgICAgICAgICBlbWl0SW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1WTiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBBUk1S
ZWdpc3RlcnM6OnIwLCBvcDIpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBtdWxfcihpbnQg
cmQsIGludCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKQEAgLTQyMiw3ICs0MjksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIG11bHNfcihpbnQgcmQsIGludCBybiwg
aW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZm
ZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBNVUwgfCBTRVRfQ0MgfCBSTihyZCkgfCBSUyhybikg
fCBSTShybSkpOworICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBN
VUwgfCBTZXRDb25kaXRpb25hbENvZGVzIHwgUk4ocmQpIHwgUlMocm4pIHwgUk0ocm0pKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgbXVsbF9yKGludCByZGhpLCBpbnQgcmRsbywgaW50IHJu
LCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQpAQCAtNDc3LDIyICs0ODQsMjIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBsZHJfaW1tKGludCByZCwgQVJNV29yZCBpbW0sIENv
bmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRX
aXRoQ29uc3RhbnRJbnQodG9BUk1Xb3JkKGNjKSB8IExvYWRVaW50MzIgfCBEVF9VUCB8IFJOKEFS
TVJlZ2lzdGVyczo6cGMpIHwgUkQocmQpLCBpbW0sIHRydWUpOworICAgICAgICAgICAgbV9idWZm
ZXIucHV0SW50V2l0aENvbnN0YW50SW50KHRvQVJNV29yZChjYykgfCBMb2FkVWludDMyIHwgRGF0
YVRyYW5zZmVyVXAgfCBSTihBUk1SZWdpc3RlcnM6OnBjKSB8IFJEKHJkKSwgaW1tLCB0cnVlKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgbGRyX3VuX2ltbShpbnQgcmQsIEFSTVdvcmQgaW1t
LCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0
SW50V2l0aENvbnN0YW50SW50KHRvQVJNV29yZChjYykgfCBMb2FkVWludDMyIHwgRFRfVVAgfCBS
TihBUk1SZWdpc3RlcnM6OnBjKSB8IFJEKHJkKSwgaW1tKTsKKyAgICAgICAgICAgIG1fYnVmZmVy
LnB1dEludFdpdGhDb25zdGFudEludCh0b0FSTVdvcmQoY2MpIHwgTG9hZFVpbnQzMiB8IERhdGFU
cmFuc2ZlclVwIHwgUk4oQVJNUmVnaXN0ZXJzOjpwYykgfCBSRChyZCksIGltbSk7CiAgICAgICAg
IH0KIAogICAgICAgICB2b2lkIGR0cl91KERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwg
aW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAg
ewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5
cGUgfCBEVF9VUCwgcmQsIHJiLCBvcDIpOworICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRv
QVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUgfCBEYXRhVHJhbnNmZXJVcCwgcmQsIHJiLCBvcDIp
OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkdHJfdXIoRGF0YVRyYW5zZmVyVHlwZUEgdHJh
bnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKICAg
ICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFu
c2ZlclR5cGUgfCBEVF9VUCB8IE9QMl9PRlNSRUcsIHJkLCByYiwgcm0pOworICAgICAgICAgICAg
ZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUgfCBEYXRhVHJhbnNm
ZXJVcCB8IE9wMklzUmVnaXN0ZXJBcmd1bWVudCwgcmQsIHJiLCBybSk7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIGR0cl9kKERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwgaW50IHJk
LCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKQEAgLTUwMiwxNyArNTA5
LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZHRyX2RyKERhdGFUcmFuc2Zl
clR5cGVBIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIGludCBybSwgQ29uZGl0aW9uIGNj
ID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQo
Y2MpIHwgdHJhbnNmZXJUeXBlIHwgT1AyX09GU1JFRywgcmQsIHJiLCBybSk7CisgICAgICAgICAg
ICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSB8IE9wMklzUmVn
aXN0ZXJBcmd1bWVudCwgcmQsIHJiLCBybSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGR0
cmhfdShEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJiLCBBUk1X
b3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJ
bnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJhbnNmZXJUeXBlIHwgRFRfVVAsIHJkLCByYiwg
b3AyKTsKKyAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJhbnNm
ZXJUeXBlIHwgRGF0YVRyYW5zZmVyVXAsIHJkLCByYiwgb3AyKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHZvaWQgZHRyaF91cihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIGludCByZCwg
aW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSB8IERUX1VQLCBy
ZCwgcm4sIHJtKTsKKyAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwg
dHJhbnNmZXJUeXBlIHwgRGF0YVRyYW5zZmVyVXAsIHJkLCBybiwgcm0pOwogICAgICAgICB9CiAK
ICAgICAgICAgdm9pZCBkdHJoX2QoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQg
cmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQpAQCAtNTI5LDcgKzUz
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQob3Ay
IDw9IDB4ZmYgJiYgcmQgPD0gMTUpOwogICAgICAgICAgICAgLyogT25seSBkMC1kMTUgYW5kIHMw
LCBzMiwgczQgLi4uIHMzMCBhcmUgc3VwcG9ydGVkLiAqLwotICAgICAgICAgICAgbV9idWZmZXIu
cHV0SW50KHRvQVJNV29yZChjYykgfCBEVF9VUCB8IHR5cGUgfCAocmQgPDwgMTIpIHwgUk4ocmIp
IHwgb3AyKTsKKyAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgRGF0
YVRyYW5zZmVyVXAgfCB0eXBlIHwgKHJkIDw8IDEyKSB8IFJOKHJiKSB8IG9wMik7CiAgICAgICAg
IH0KIAogICAgICAgICB2b2lkIGZkdHJfZChEYXRhVHJhbnNmZXJUeXBlRmxvYXQgdHlwZSwgaW50
IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKQEAgLTU0MiwxMyAr
NTQ5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHB1c2hfcihpbnQgcmVnLCBD
b25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKEFSTVdvcmQo
cmVnKSA8PSAweGYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykg
fCBTdG9yZVVpbnQzMiB8IERUX1dCIHwgUk4oQVJNUmVnaXN0ZXJzOjpzcCkgfCBSRChyZWcpIHwg
MHg0KTsKKyAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgU3RvcmVV
aW50MzIgfCBEYXRhVHJhbnNmZXJXcml0ZUJhY2sgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJE
KHJlZykgfCAweDQpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBwb3BfcihpbnQgcmVnLCBD
b25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKEFSTVdvcmQo
cmVnKSA8PSAweGYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykg
fCAoTG9hZFVpbnQzMiBeIERUX1BSRSkgfCBEVF9VUCB8IFJOKEFSTVJlZ2lzdGVyczo6c3ApIHwg
UkQocmVnKSB8IDB4NCk7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNj
KSB8IChMb2FkVWludDMyIF4gRGF0YVRyYW5zZmVyUG9zdFVwZGF0ZSkgfCBEYXRhVHJhbnNmZXJV
cCB8IFJOKEFSTVJlZ2lzdGVyczo6c3ApIHwgUkQocmVnKSB8IDB4NCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBpbmxpbmUgdm9pZCBwb2tlX3IoaW50IHJlZywgQ29uZGl0aW9uIGNjID0gQUwpCkBA
IC03NzMsMjggKzc4MCwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEFSTVdv
cmQqIGdldExkckltbUFkZHJlc3MoQVJNV29yZCogaW5zbikKICAgICAgICAgewogICAgICAgICAg
ICAgLy8gQ2hlY2sgZm9yIGNhbGwKLSAgICAgICAgICAgIGlmICgoKmluc24gJiAweDBmN2YwMDAw
KSAhPSAweDA1MWYwMDAwKSB7CisgICAgICAgICAgICBpZiAoKCppbnNuICYgTGRyUGNJbW1lZGlh
dGVJbnN0cnVjdGlvbk1hc2spICE9IExkclBjSW1tZWRpYXRlSW5zdHJ1Y3Rpb24pIHsKICAgICAg
ICAgICAgICAgICAvLyBNdXN0IGJlIEJMWAotICAgICAgICAgICAgICAgIEFTU0VSVCgoKmluc24g
JiAweDAxMmZmZjMwKSA9PSAweDAxMmZmZjMwKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoKCpp
bnNuICYgQmx4SW5zdHJ1Y3Rpb25NYXNrKSA9PSBCbHhJbnN0cnVjdGlvbik7CiAgICAgICAgICAg
ICAgICAgaW5zbi0tOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBNdXN0IGJlIGFu
IGxkciAuLi4sIFtwYyArLy0gaW1tXQotICAgICAgICAgICAgQVNTRVJUKCgqaW5zbiAmIDB4MGY3
ZjAwMDApID09IDB4MDUxZjAwMDApOworICAgICAgICAgICAgQVNTRVJUKCgqaW5zbiAmIExkclBj
SW1tZWRpYXRlSW5zdHJ1Y3Rpb25NYXNrKSA9PSBMZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9uKTsK
IAotICAgICAgICAgICAgQVJNV29yZCBhZGRyID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihp
bnNuKSArIERlZmF1bHRQcmVmZXRjaGluZyAqIHNpemVvZihBUk1Xb3JkKTsKLSAgICAgICAgICAg
IGlmICgqaW5zbiAmIERUX1VQKQotICAgICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PEFSTVdvcmQqPihhZGRyICsgKCppbnNuICYgU0RUX09GRlNFVF9NQVNLKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oYWRkciAtICgqaW5zbiAmIFNE
VF9PRkZTRVRfTUFTSykpOworICAgICAgICAgICAgQVJNV29yZCBhZGRyID0gcmVpbnRlcnByZXRf
Y2FzdDxBUk1Xb3JkPihpbnNuKSArIERlZmF1bHRQcmVmZXRjaE9mZnNldCAqIHNpemVvZihBUk1X
b3JkKTsKKyAgICAgICAgICAgIGlmICgqaW5zbiAmIERhdGFUcmFuc2ZlclVwKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEFSTVdvcmQqPihhZGRyICsgKCppbnNuICYg
RGF0YVRyYW5zZmVyT2Zmc2V0TWFzaykpOworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8QVJNV29yZCo+KGFkZHIgLSAoKmluc24gJiBEYXRhVHJhbnNmZXJPZmZzZXRNYXNrKSk7
CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgQVJNV29yZCogZ2V0TGRySW1tQWRkcmVzc09u
UG9vbChBUk1Xb3JkKiBpbnNuLCB1aW50MzJfdCogY29uc3RQb29sKQogICAgICAgICB7CiAgICAg
ICAgICAgICAvLyBNdXN0IGJlIGFuIGxkciAuLi4sIFtwYyArLy0gaW1tXQotICAgICAgICAgICAg
QVNTRVJUKCgqaW5zbiAmIDB4MGY3ZjAwMDApID09IDB4MDUxZjAwMDApOworICAgICAgICAgICAg
QVNTRVJUKCgqaW5zbiAmIExkclBjSW1tZWRpYXRlSW5zdHJ1Y3Rpb25NYXNrKSA9PSBMZHJQY0lt
bWVkaWF0ZUluc3RydWN0aW9uKTsKIAogICAgICAgICAgICAgaWYgKCppbnNuICYgMHgxKQotICAg
ICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEFSTVdvcmQqPihjb25zdFBvb2wg
KyAoKCppbnNuICYgU0RUX09GRlNFVF9NQVNLKSA+PiAxKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGNvbnN0UG9vbCArICgoKmluc24gJiBEYXRh
VHJhbnNmZXJPZmZzZXRNYXNrKSA+PiAxKSk7CiAgICAgICAgICAgICByZXR1cm4gZ2V0TGRySW1t
QWRkcmVzcyhpbnNuKTsKICAgICAgICAgfQogCkBAIC04MDgsOCArODE1LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBBUk1Xb3JkIHBhdGNoQ29uc3RhbnRQb29sTG9hZChBUk1X
b3JkIGxvYWQsIEFSTVdvcmQgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhbHVlID0g
KHZhbHVlIDw8IDEpICsgMTsKLSAgICAgICAgICAgIEFTU0VSVCghKHZhbHVlICYgfjB4ZmZmKSk7
Ci0gICAgICAgICAgICByZXR1cm4gKGxvYWQgJiB+MHhmZmYpIHwgdmFsdWU7CisgICAgICAgICAg
ICBBU1NFUlQoISh2YWx1ZSAmIH5EYXRhVHJhbnNmZXJPZmZzZXRNYXNrKSk7CisgICAgICAgICAg
ICByZXR1cm4gKGxvYWQgJiB+RGF0YVRyYW5zZmVyT2Zmc2V0TWFzaykgfCB2YWx1ZTsKICAgICAg
ICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoQ29uc3RhbnRQb29sTG9hZCh2b2lkKiBs
b2FkQWRkciwgdm9pZCogY29uc3RQb29sQWRkcik7CkBAIC04MzksNyArODQ2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0
X2Nhc3Q8QVJNV29yZCo+KHdoZXJlKTsKICAgICAgICAgICAgIEFTU0VSVCgoKmluc3RydWN0aW9u
ICYgMHgwZjcwMDAwMCkgPT0gTG9hZFVpbnQzMik7CiAgICAgICAgICAgICBpZiAodmFsdWUgPj0g
MCkKLSAgICAgICAgICAgICAgICAqaW5zdHJ1Y3Rpb24gPSAoKmluc3RydWN0aW9uICYgMHhmZjdm
ZjAwMCkgfCBEVF9VUCB8IHZhbHVlOworICAgICAgICAgICAgICAgICppbnN0cnVjdGlvbiA9ICgq
aW5zdHJ1Y3Rpb24gJiAweGZmN2ZmMDAwKSB8IERhdGFUcmFuc2ZlclVwIHwgdmFsdWU7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKmluc3RydWN0aW9uID0gKCppbnN0cnVjdGlv
biAmIDB4ZmY3ZmYwMDApIHwgLXZhbHVlOwogICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVj
dGlvbiwgc2l6ZW9mKEFSTVdvcmQpKTsKQEAgLTg5MSwxMyArODk4LDEzIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rp
b25TdGFydCwgdm9pZCogdG8pCiAgICAgICAgIHsKICAgICAgICAgICAgIEFSTVdvcmQqIGluc3Ry
dWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCkgLSAx
OwotICAgICAgICAgICAgaW50cHRyX3QgZGlmZmVyZW5jZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KHRvKSAtIChyZWludGVycHJldF9jYXN0PGludHB0cl90PihpbnN0cnVjdGlvbikgKyBE
ZWZhdWx0UHJlZmV0Y2hpbmcgKiBzaXplb2YoQVJNV29yZCkpOworICAgICAgICAgICAgaW50cHRy
X3QgZGlmZmVyZW5jZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAtIChyZWludGVy
cHJldF9jYXN0PGludHB0cl90PihpbnN0cnVjdGlvbikgKyBEZWZhdWx0UHJlZmV0Y2hPZmZzZXQg
KiBzaXplb2YoQVJNV29yZCkpOwogCiAgICAgICAgICAgICBpZiAoIShkaWZmZXJlbmNlICYgMSkp
IHsKICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlID4+PSAyOwotICAgICAgICAgICAgICAgIGlm
ICgoZGlmZmVyZW5jZSA8PSBCT0ZGU0VUX01BWCAmJiBkaWZmZXJlbmNlID49IEJPRkZTRVRfTUlO
KSkgeworICAgICAgICAgICAgICAgIGlmICgoZGlmZmVyZW5jZSA8PSBNYXhpbXVtQnJhbmNoT2Zm
c2V0RGlzdGFuY2UgJiYgZGlmZmVyZW5jZSA+PSBNaW5pbXVtQnJhbmNoT2Zmc2V0RGlzdGFuY2Up
KSB7CiAgICAgICAgICAgICAgICAgICAgICAvLyBEaXJlY3QgYnJhbmNoLgotICAgICAgICAgICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSBCIHwgQUwgfCAoZGlmZmVyZW5jZSAmIEJSQU5DSF9N
QVNLKTsKKyAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uWzBdID0gQiB8IEFMIHwgKGRp
ZmZlcmVuY2UgJiBCcmFuY2hPZmZzZXRNYXNrKTsKICAgICAgICAgICAgICAgICAgICAgIGNhY2hl
Rmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihBUk1Xb3JkKSk7CiAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtOTE5LDkgKzkyNiw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgQVJNV29yZCogaW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9j
YXN0PEFSTVdvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsKICAgICAgICAgICAgIGNhY2hlRmx1c2go
aW5zdHJ1Y3Rpb24sIHNpemVvZihBUk1Xb3JkKSk7CiAKLSAgICAgICAgICAgIEFTU0VSVCgoKmlu
c3RydWN0aW9uICYgMHgwZmYwMDAwMCkgPT0gMHgwMjgwMDAwMCB8fCAoKmluc3RydWN0aW9uICYg
MHgwZmYwMDAwMCkgPT0gMHgwNTkwMDAwMCk7Ci0gICAgICAgICAgICBpZiAoKCppbnN0cnVjdGlv
biAmIDB4MGZmMDAwMDApID09IDB4MDI4MDAwMDApIHsKLSAgICAgICAgICAgICAgICAgKmluc3Ry
dWN0aW9uID0gKCppbnN0cnVjdGlvbiAmIDB4ZjAwZmZmZmYpIHwgMHgwNTkwMDAwMDsKKyAgICAg
ICAgICAgIEFTU0VSVCgoKmluc3RydWN0aW9uICYgTGRyT3JBZGRJbnN0cnVjdGlvbk1hc2spID09
IEFkZEltbWVkaWF0ZUluc3RydWN0aW9uIHx8ICgqaW5zdHJ1Y3Rpb24gJiBMZHJPckFkZEluc3Ry
dWN0aW9uTWFzaykgPT0gTGRySW1tZWRpYXRlSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgaWYg
KCgqaW5zdHJ1Y3Rpb24gJiBMZHJPckFkZEluc3RydWN0aW9uTWFzaykgPT0gQWRkSW1tZWRpYXRl
SW5zdHJ1Y3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgKmluc3RydWN0aW9uID0gKCppbnN0cnVj
dGlvbiAmIH5MZHJPckFkZEluc3RydWN0aW9uTWFzaykgfCBMZHJJbW1lZGlhdGVJbnN0cnVjdGlv
bjsKICAgICAgICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKEFSTVdv
cmQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTMxLDkgKzkzOCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgQVJNV29yZCogaW5zdHJ1Y3Rpb24gPSByZWludGVycHJl
dF9jYXN0PEFSTVdvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsKICAgICAgICAgICAgIGNhY2hlRmx1
c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihBUk1Xb3JkKSk7CiAKLSAgICAgICAgICAgIEFTU0VSVCgo
Kmluc3RydWN0aW9uICYgMHgwZmYwMDAwMCkgPT0gMHgwMjgwMDAwMCB8fCAoKmluc3RydWN0aW9u
ICYgMHgwZmYwMDAwMCkgPT0gMHgwNTkwMDAwMCk7Ci0gICAgICAgICAgICBpZiAoKCppbnN0cnVj
dGlvbiAmIDB4MGZmMDAwMDApID09IDB4MDU5MDAwMDApIHsKLSAgICAgICAgICAgICAgICAgKmlu
c3RydWN0aW9uID0gKCppbnN0cnVjdGlvbiAmIDB4ZjAwZmZmZmYpIHwgMHgwMjgwMDAwMDsKKyAg
ICAgICAgICAgIEFTU0VSVCgoKmluc3RydWN0aW9uICYgTGRyT3JBZGRJbnN0cnVjdGlvbk1hc2sp
ID09IEFkZEltbWVkaWF0ZUluc3RydWN0aW9uIHx8ICgqaW5zdHJ1Y3Rpb24gJiBMZHJPckFkZElu
c3RydWN0aW9uTWFzaykgPT0gTGRySW1tZWRpYXRlSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAg
aWYgKCgqaW5zdHJ1Y3Rpb24gJiBMZHJPckFkZEluc3RydWN0aW9uTWFzaykgPT0gTGRySW1tZWRp
YXRlSW5zdHJ1Y3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgKmluc3RydWN0aW9uID0gKCppbnN0
cnVjdGlvbiAmIH5MZHJPckFkZEluc3RydWN0aW9uTWFzaykgfCBBZGRJbW1lZGlhdGVJbnN0cnVj
dGlvbjsKICAgICAgICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKEFS
TVdvcmQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTY1LDEzICs5NzIsMTMgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBBUk1Xb3JkIGdldE9wMkJ5dGUoQVJNV29y
ZCBpbW0pCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpbW0gPD0gMHhmZik7Ci0gICAg
ICAgICAgICByZXR1cm4gT1AyX0lNTSB8IGltbTsKKyAgICAgICAgICAgIHJldHVybiBPcDJJbW1l
ZGlhdGUgfCBpbW07CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgQVJNV29yZCBnZXRPcDJI
YWxmKEFSTVdvcmQgaW1tKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaW1tIDw9IDB4
ZmYpOwotICAgICAgICAgICAgcmV0dXJuIE9QMl9JTU1fSEFMRiB8IChpbW0gJiAweDBmKSB8ICgo
aW1tICYgMHhmMCkgPDwgNCk7CisgICAgICAgICAgICByZXR1cm4gSW1tZWRpYXRlRm9ySGFsZldv
cmRUcmFuc2ZlciB8IChpbW0gJiAweDBmKSB8ICgoaW1tICYgMHhmMCkgPDwgNCk7CiAgICAgICAg
IH0KIAogI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQpAQCAtOTc5LDcgKzk4Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaW1tIDw9IDB4ZmZmZikK
ICAgICAgICAgICAgICAgICByZXR1cm4gKGltbSAmIDB4ZjAwMCkgPDwgNCB8IChpbW0gJiAweGZm
Zik7Ci0gICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9JTU07CisgICAgICAgICAgICByZXR1cm4g
SW52YWxpZEltbWVkaWF0ZTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIEFSTVdvcmQgZ2V0
SW1tKEFSTVdvcmQgaW1tLCBpbnQgdG1wUmVnLCBib29sIGludmVydCA9IGZhbHNlKTsKQEAgLTEw
MDAsOCArMTAwNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgQVJNV29yZCBw
bGFjZUNvbnN0YW50UG9vbEJhcnJpZXIoaW50IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAg
ICAgb2Zmc2V0ID0gKG9mZnNldCAtIHNpemVvZihBUk1Xb3JkKSkgPj4gMjsKLSAgICAgICAgICAg
IEFTU0VSVCgob2Zmc2V0IDw9IEJPRkZTRVRfTUFYICYmIG9mZnNldCA+PSBCT0ZGU0VUX01JTikp
OwotICAgICAgICAgICAgcmV0dXJuIEFMIHwgQiB8IChvZmZzZXQgJiBCUkFOQ0hfTUFTSyk7Cisg
ICAgICAgICAgICBBU1NFUlQoKG9mZnNldCA8PSBNYXhpbXVtQnJhbmNoT2Zmc2V0RGlzdGFuY2Ug
JiYgb2Zmc2V0ID49IE1pbmltdW1CcmFuY2hPZmZzZXREaXN0YW5jZSkpOworICAgICAgICAgICAg
cmV0dXJuIEFMIHwgQiB8IChvZmZzZXQgJiBCcmFuY2hPZmZzZXRNYXNrKTsKICAgICAgICAgfQog
CiAjaWYgT1MoTElOVVgpICYmIENPTVBJTEVSKFJWQ1QpCkBAIC0xMDY3LDcgKzEwNzQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgQVJNV29yZCBnZXRDb25kaXRpb25hbEZp
ZWxkKEFSTVdvcmQgaSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGkgJiAweGYwMDAw
MDAwOworICAgICAgICAgICAgcmV0dXJuIGkgJiBDb25kaXRpb25hbEZpZWxkTWFzazsKICAgICAg
ICAgfQogCiAgICAgICAgIHN0YXRpYyBBUk1Xb3JkIHRvQVJNV29yZChDb25kaXRpb24gY2MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk0uY3BwCmluZGV4IDM0MDhjMTIuLmEyNTFhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwCkBAIC04Nyw3ICs4Nyw3
IEBAIHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk06OmxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMo
QmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVyCiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmVJbW0o
YWRkcmVzcy5vZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgICAgICBtX2Fzc2VtYmxlci5h
ZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBvcDIpOwogICAgICAgICBt
X2Fzc2VtYmxlci5kdHJoX3VyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgYWRkcmVz
cy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJN
UmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpPUDJfSU1NIHwg
MHgyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVn
aXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpPcDJJbW1lZGlhdGUgfCAweDIpOwogICAgICAgICBt
X2Fzc2VtYmxlci5kdHJoX3VyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgQVJNUmVnaXN0ZXJz
OjpTMCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKICAgICB9CiAgICAgbV9hc3Nl
bWJsZXIub3JyX3IoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIubHNsKEFSTVJlZ2lzdGVyczo6UzAs
IDE2KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNLmgKaW5kZXggNTMwZjYyYi4uODVkMGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApAQCAtMTM3LDggKzEz
Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFSTVdvcmQgdyA9IG1fYXNzZW1ibGVyLmdldEltbShp
bW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCwgdHJ1ZSk7Ci0gICAgICAgIGlmICh3ICYgQVJN
QXNzZW1ibGVyOjpPUDJfSU5WX0lNTSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJpY3Nfcihk
ZXN0LCBkZXN0LCB3ICYgfkFSTUFzc2VtYmxlcjo6T1AyX0lOVl9JTU0pOworICAgICAgICBpZiAo
dyAmIEFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpCisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5iaWNzX3IoZGVzdCwgZGVzdCwgdyAmIH5BUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVk
SW1tZWRpYXRlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYW5kc19y
KGRlc3QsIGRlc3QsIHcpOwogICAgIH0KQEAgLTE0Niw4ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgQVJNV29yZCB3ID0gbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5t
X3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwLCB0cnVlKTsKLSAgICAgICAgaWYgKHcgJiBBUk1Bc3Nl
bWJsZXI6Ok9QMl9JTlZfSU1NKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmljc19yKGRlc3Qs
IHNyYywgdyAmIH5BUk1Bc3NlbWJsZXI6Ok9QMl9JTlZfSU1NKTsKKyAgICAgICAgaWYgKHcgJiBB
Uk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKQorICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYmljc19yKGRlc3QsIHNyYywgdyAmIH5BUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRp
YXRlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYW5kc19yKGRlc3Qs
IHNyYywgdyk7CiAgICAgfQpAQCAtNTU1LDggKzU1NSw4IEBAIHB1YmxpYzoKIAogICAgIEp1bXAg
YnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0
ZWRJbW0zMiByaWdodCwgaW50IHVzZUNvbnN0YW50UG9vbCA9IDApCiAgICAgewotICAgICAgICBB
Uk1Xb3JkIHRtcCA9IChyaWdodC5tX3ZhbHVlID09IDB4ODAwMDAwMDApID8gQVJNQXNzZW1ibGVy
OjpJTlZBTElEX0lNTSA6IG1fYXNzZW1ibGVyLmdldE9wMigtcmlnaHQubV92YWx1ZSk7Ci0gICAg
ICAgIGlmICh0bXAgIT0gQVJNQXNzZW1ibGVyOjpJTlZBTElEX0lNTSkKKyAgICAgICAgQVJNV29y
ZCB0bXAgPSAocmlnaHQubV92YWx1ZSA9PSAweDgwMDAwMDAwKSA/IEFSTUFzc2VtYmxlcjo6SW52
YWxpZEltbWVkaWF0ZSA6IG1fYXNzZW1ibGVyLmdldE9wMigtcmlnaHQubV92YWx1ZSk7CisgICAg
ICAgIGlmICh0bXAgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKQogICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuY21uX3IobGVmdCwgdG1wKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuY21wX3IobGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1fdmFs
dWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKQEAgLTYxNyw4ICs2MTcsOCBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwog
ICAgICAgICBBUk1Xb3JkIHcgPSBtX2Fzc2VtYmxlci5nZXRJbW0obWFzay5tX3ZhbHVlLCBBUk1S
ZWdpc3RlcnM6OlMwLCB0cnVlKTsKLSAgICAgICAgaWYgKHcgJiBBUk1Bc3NlbWJsZXI6Ok9QMl9J
TlZfSU1NKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmljc19yKEFSTVJlZ2lzdGVyczo6UzAs
IHJlZywgdyAmIH5BUk1Bc3NlbWJsZXI6Ok9QMl9JTlZfSU1NKTsKKyAgICAgICAgaWYgKHcgJiBB
Uk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKQorICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYmljc19yKEFSTVJlZ2lzdGVyczo6UzAsIHJlZywgdyAmIH5BUk1Bc3NlbWJsZXI6Ok9wMklu
dmVydGVkSW1tZWRpYXRlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIu
dHN0X3IocmVnLCB3KTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNv
bmRpdGlvbihjb25kKSkpOwpAQCAtMTE1Miw3ICsxMTUyLDcgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5iaWNfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1B
c3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkpOwogCiAgICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2Vt
Ymxlcjo6Z2V0T3AyKDB4ODAwMDAwMDApOwotICAgICAgICBBU1NFUlQodyAhPSBBUk1Bc3NlbWJs
ZXI6OklOVkFMSURfSU1NKTsKKyAgICAgICAgQVNTRVJUKHcgIT0gQVJNQXNzZW1ibGVyOjpJbnZh
bGlkSW1tZWRpYXRlKTsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IoQVJNUmVnaXN0ZXJzOjpT
MCwgdyk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChicmFuY2hUeXBlID09
IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQgPyBBUk1Bc3NlbWJsZXI6OkVRIDogQVJNQXNzZW1ibGVy
OjpORSkpOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>