This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

c++/343: gcc reports internal compiler error #98



>Number:         343
>Category:       c++
>Synopsis:       gcc reports internal compiler error #98
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Jun 22 08:06:01 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     green@rhythm.com
>Release:        unknown-1.0
>Organization:
>Environment:
c++ -v
Reading specs from /usr/lib/gcc-lib/alpha-redhat-linux/egcs-2.91.66/specs
gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
>Description:
The following command line:

c++ -v -save-files -O2 -ftemplate-depth-1024 -c
-DSYSV -DMOTIF -DXT_CODE -Ih -Iui -I../h
-I/software/thalia/h -I/usr/X11R6/include
-o obj/linux6-alpha-std/NRHY_Access.o nrhy/NRHY_Access.c

Produces the following messages:

Reading specs from /usr/lib/gcc-lib/alpha-redhat-linux/egcs-2.91.66/specs
c++: unrecognized option `-save-files'
gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
 /usr/lib/gcc-lib/alpha-redhat-linux/egcs-2.91.66/cpp -lang-c++ -v -Ih -Iui -I../h -I/software/thalia/h -I/usr/X11R6/include -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91 -Dlinux -Dunix -D_LONGLONG -D__alpha__ -D__ELF__ -D__linux__ -D__unix__ -D_LONGLONG -D__alpha__ -D__ELF__ -D__linux -D__unix -Asystem(linux) -D__EXCEPTIONS -D__OPTIMIZE__ -D__LANGUAGE_C__ -D__LANGUAGE_C -DLANGUAGE_C -Acpu(alpha) -Amachine(alpha) -D__alpha -D__alpha__ -D__alpha_ev4__ -Acpu(ev4) -DSYSV -DMOTIF -DXT_CODE nrhy/NRHY_Access.c /tmp/ccCLiGbx.ii
GNU CPP version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) (Alpha GNU/Linux for ELF)
#include "..." search starts here:
#include <...> search starts here:
 h
 ui
 ../h
 /software/thalia/h
 /usr/X11R6/include
 /usr/include/g++-2
 /usr/local/include
 /usr/alpha-redhat-linux/include
 /usr/lib/gcc-lib/alpha-redhat-linux/egcs-2.91.66/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/alpha-redhat-linux/egcs-2.91.66/cc1plus /tmp/ccCLiGbx.ii -quiet -dumpbase NRHY_Access.cc -O2 -version -ftemplate-depth-1024 -o /tmp/cc8wR72A.s
GNU C++ version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) (alpha-redhat-linux) compiled by GNU C version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release).
nrhy/NRHY_Access.c: In method `void Chordump::DoCamera()':
nrhy/NRHY_Access.c:612: warning: name lookup of `i' changed for new ANSI `for' scoping
nrhy/NRHY_Access.c:607: warning:   using obsolete binding at `i'
nrhy/NRHY_Access.c: In method `void Chordump::DoStereo(short int, short int)':
nrhy/NRHY_Access.c:635: warning: name lookup of `i' changed for new ANSI `for' scoping
nrhy/NRHY_Access.c:627: warning:   using obsolete binding at `i'
h/nrhy_templateFind.h: In method `class NRHY_classMuscle * NRHY_find<NRHY_classMuscle>::FastFind<NRHY_classMuscle>()':
h/nrhy_templateFind.h:145:   instantiated from `NRHY_find<NRHY_classMuscle>::findItemForRead<NRHY_classMuscle>()'
h/nrhy_templateFind.h:120:   instantiated from `NRHY_find<NRHY_classMuscle>::findItem<NRHY_classMuscle>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classMuscle>::FindItem<NRHY_classMuscle>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classMuscle>::FindItemAsThing<NRHY_classMuscle>(bool, bool, bool)'
h/nrhy_templateMatch.c:2306:   instantiated from `NRHY_match<NRHY_classLayer>::matchAllOfOneClass<NRHY_classLayer>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classLayer>::Matchem<NRHY_classLayer>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classLayer>::findItem<NRHY_classLayer>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classLayer>::FindItem<NRHY_classLayer>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classLayer>::FindItemAsThing<NRHY_classLayer>(bool, bool, bool)'
h/nrhy_templateMatch.c:2304:   instantiated from `NRHY_match<NRHY_classFur>::matchAllOfOneClass<NRHY_classFur>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classFur>::Matchem<NRHY_classFur>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classFur>::findItem<NRHY_classFur>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classFur>::FindItem<NRHY_classFur>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classFur>::FindItemAsThing<NRHY_classFur>(bool, bool, bool)'
h/nrhy_templateMatch.c:2302:   instantiated from `NRHY_match<NRHY_classKlist>::matchAllOfOneClass<NRHY_classKlist>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classKlist>::Matchem<NRHY_classKlist>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classKlist>::findItem<NRHY_classKlist>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classKlist>::FindItem<NRHY_classKlist>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classKlist>::FindItemAsThing<NRHY_classKlist>(bool, bool, bool)'
h/nrhy_templateMatch.c:2300:   instantiated from `NRHY_match<NRHY_classRoot>::matchAllOfOneClass<NRHY_classRoot>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classRoot>::Matchem<NRHY_classRoot>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classRoot>::findItem<NRHY_classRoot>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classRoot>::FindItem<NRHY_classRoot>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classRoot>::FindItemAsThing<NRHY_classRoot>(bool, bool, bool)'
h/nrhy_templateMatch.c:2298:   instantiated from `NRHY_match<NRHY_classApparition>::matchAllOfOneClass<NRHY_classApparition>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classApparition>::Matchem<NRHY_classApparition>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classApparition>::findItem<NRHY_classApparition>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classApparition>::FindItem<NRHY_classApparition>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classApparition>::FindItemAsThing<NRHY_classApparition>(bool, bool, bool)'
h/nrhy_templateMatch.c:2296:   instantiated from `NRHY_match<NRHY_classTrack>::matchAllOfOneClass<NRHY_classTrack>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classTrack>::Matchem<NRHY_classTrack>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classTrack>::findItem<NRHY_classTrack>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classTrack>::FindItem<NRHY_classTrack>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classTrack>::FindItemAsThing<NRHY_classTrack>(bool, bool, bool)'
h/nrhy_templateMatch.c:2294:   instantiated from `NRHY_match<NRHY_classScaffold>::matchAllOfOneClass<NRHY_classScaffold>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classScaffold>::Matchem<NRHY_classScaffold>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classScaffold>::findItem<NRHY_classScaffold>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classScaffold>::FindItem<NRHY_classScaffold>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classScaffold>::FindItemAsThing<NRHY_classScaffold>(bool, bool, bool)'
h/nrhy_templateMatch.c:2292:   instantiated from `NRHY_match<NRHY_classInky>::matchAllOfOneClass<NRHY_classInky>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classInky>::Matchem<NRHY_classInky>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classInky>::findItem<NRHY_classInky>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classInky>::FindItem<NRHY_classInky>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classInky>::FindItemAsThing<NRHY_classInky>(bool, bool, bool)'
h/nrhy_templateMatch.c:2290:   instantiated from `NRHY_match<NRHY_classCollision>::matchAllOfOneClass<NRHY_classCollision>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classCollision>::Matchem<NRHY_classCollision>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classCollision>::findItem<NRHY_classCollision>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classCollision>::FindItem<NRHY_classCollision>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classCollision>::FindItemAsThing<NRHY_classCollision>(bool, bool, bool)'
h/nrhy_templateMatch.c:2288:   instantiated from `NRHY_match<NRHY_classGenerator>::matchAllOfOneClass<NRHY_classGenerator>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classGenerator>::Matchem<NRHY_classGenerator>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classGenerator>::findItem<NRHY_classGenerator>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classGenerator>::FindItem<NRHY_classGenerator>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classGenerator>::FindItemAsThing<NRHY_classGenerator>(bool, bool, bool)'
h/nrhy_templateMatch.c:2286:   instantiated from `NRHY_match<NRHY_classForce>::matchAllOfOneClass<NRHY_classForce>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classForce>::Matchem<NRHY_classForce>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classForce>::findItem<NRHY_classForce>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classForce>::FindItem<NRHY_classForce>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classForce>::FindItemAsThing<NRHY_classForce>(bool, bool, bool)'
h/nrhy_templateMatch.c:2284:   instantiated from `NRHY_match<NRHY_classDynamics>::matchAllOfOneClass<NRHY_classDynamics>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classDynamics>::Matchem<NRHY_classDynamics>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classDynamics>::findItem<NRHY_classDynamics>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classDynamics>::FindItem<NRHY_classDynamics>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classDynamics>::FindItemAsThing<NRHY_classDynamics>(bool, bool, bool)'
h/nrhy_templateMatch.c:2282:   instantiated from `NRHY_match<NRHY_classSound>::matchAllOfOneClass<NRHY_classSound>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classSound>::Matchem<NRHY_classSound>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classSound>::findItem<NRHY_classSound>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classSound>::FindItem<NRHY_classSound>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classSound>::FindItemAsThing<NRHY_classSound>(bool, bool, bool)'
h/nrhy_templateMatch.c:2280:   instantiated from `NRHY_match<NRHY_classUseMap>::matchAllOfOneClass<NRHY_classUseMap>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classUseMap>::Matchem<NRHY_classUseMap>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classUseMap>::findItem<NRHY_classUseMap>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classUseMap>::FindItem<NRHY_classUseMap>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classUseMap>::FindItemAsThing<NRHY_classUseMap>(bool, bool, bool)'
h/nrhy_templateMatch.c:2278:   instantiated from `NRHY_match<NRHY_classMap>::matchAllOfOneClass<NRHY_classMap>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classMap>::Matchem<NRHY_classMap>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classMap>::findItem<NRHY_classMap>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classMap>::FindItem<NRHY_classMap>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classMap>::FindItemAsThing<NRHY_classMap>(bool, bool, bool)'
h/nrhy_templateMatch.c:2276:   instantiated from `NRHY_match<NRHY_classMaterial>::matchAllOfOneClass<NRHY_classMaterial>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classMaterial>::Matchem<NRHY_classMaterial>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classMaterial>::findItem<NRHY_classMaterial>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classMaterial>::FindItem<NRHY_classMaterial>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classMaterial>::FindItemAsThing<NRHY_classMaterial>(bool, bool, bool)'
h/nrhy_templateMatch.c:2274:   instantiated from `NRHY_match<NRHY_classTex>::matchAllOfOneClass<NRHY_classTex>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classTex>::Matchem<NRHY_classTex>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classTex>::findItem<NRHY_classTex>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classTex>::FindItem<NRHY_classTex>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classTex>::FindItemAsThing<NRHY_classTex>(bool, bool, bool)'
h/nrhy_templateMatch.c:2272:   instantiated from `NRHY_match<NRHY_classRoto>::matchAllOfOneClass<NRHY_classRoto>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classRoto>::Matchem<NRHY_classRoto>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classRoto>::findItem<NRHY_classRoto>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classRoto>::FindItem<NRHY_classRoto>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classRoto>::FindItemAsThing<NRHY_classRoto>(bool, bool, bool)'
h/nrhy_templateMatch.c:2270:   instantiated from `NRHY_match<NRHY_classHome>::matchAllOfOneClass<NRHY_classHome>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classHome>::Matchem<NRHY_classHome>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classHome>::findItem<NRHY_classHome>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classHome>::FindItem<NRHY_classHome>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classHome>::FindItemAsThing<NRHY_classHome>(bool, bool, bool)'
h/nrhy_templateMatch.c:2268:   instantiated from `NRHY_match<NRHY_classModel>::matchAllOfOneClass<NRHY_classModel>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classModel>::Matchem<NRHY_classModel>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classModel>::findItem<NRHY_classModel>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classModel>::FindItem<NRHY_classModel>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classModel>::FindItemAsThing<NRHY_classModel>(bool, bool, bool)'
h/nrhy_templateMatch.c:2266:   instantiated from `NRHY_match<NRHY_classLight>::matchAllOfOneClass<NRHY_classLight>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classLight>::Matchem<NRHY_classLight>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classLight>::findItem<NRHY_classLight>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classLight>::FindItem<NRHY_classLight>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classLight>::FindItemAsThing<NRHY_classLight>(bool, bool, bool)'
h/nrhy_templateMatch.c:2264:   instantiated from `NRHY_match<NRHY_classCamera>::matchAllOfOneClass<NRHY_classCamera>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classCamera>::Matchem<NRHY_classCamera>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classCamera>::findItem<NRHY_classCamera>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classCamera>::FindItem<NRHY_classCamera>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classCamera>::FindItemAsThing<NRHY_classCamera>(bool, bool, bool)'
h/nrhy_templateMatch.c:2262:   instantiated from `NRHY_match<NRHY_classObject>::matchAllOfOneClass<NRHY_classObject>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classObject>::Matchem<NRHY_classObject>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classObject>::findItem<NRHY_classObject>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classObject>::FindItem<NRHY_classObject>(bool, bool, bool)'
h/nrhy_templateFind.h:73:   instantiated from `NRHY_find<NRHY_classObject>::FindItemAsThing<NRHY_classObject>(bool, bool, bool)'
h/nrhy_templateMatch.c:2260:   instantiated from `NRHY_match<NRHY_classThing>::matchAllOfOneClass<NRHY_classThing>(const char *)'
h/nrhy_templateMatch.c:598:   instantiated from `NRHY_match<NRHY_classThing>::Matchem<NRHY_classThing>(const char *)'
h/nrhy_templateFind.h:132:   instantiated from `NRHY_find<NRHY_classThing>::findItem<NRHY_classThing>()'
h/nrhy_templateFind.h:63:   instantiated from `NRHY_find<NRHY_classThing>::FindItem<NRHY_classThing>(bool, bool, bool)'
nrhy/NRHY_Access.c:238:   instantiated from here
h/nrhy_templateFind.h:102: Internal compiler error 98.
h/nrhy_templateFind.h:102: Please submit a full bug report to `egcs-bugs@egcs.cygnus.com'.
h/nrhy_templateFind.h:102: See <URL:http://egcs.cygnus.com/faq.html#bugreport> for details. 
>How-To-Repeat:
c++ -O2 -ftemplate-depth-1024 -o NRHY_Access.o NRHY_Access.ii

>Fix:
Unknown.  We may need to rewrite this code ( probably
a good thing ) to avoid this error.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="NRHY_Access.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="NRHY_Access.ii"

IyAxICJucmh5L05SSFlfQWNjZXNzLmMiCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi9zb2Z0
d2FyZS90aGFsaWEvaC9zdGR0eXBlcy5oIiAxCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAojIDEg
Ii91c3IvaW5jbHVkZS9tYXRoLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKCgogCgoKCgoKCgogCiMgMTM3ICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMwoKCiAKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIyAxOTUgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgogCgoKCgogCgojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoK
CgoKIAoKCgoKCgoKCiAKCgoKCiMgNzEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCiAK
CgoKCgoKCiAKCgoKIyAxMDMgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCgogCgoKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoK
CgoKIyAyNDkgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKCgogCgoKCgoKCgoKIAoKCgoK
CiAKCiAKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIyAyNzcgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKCgoK
CiMgMjcgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCmV4dGVybiAiQyIgeyAKCiAKCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgojIDUyICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAzCgoKCiAK
CiMgODcgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDMKCiMgMzMgIi91c3IvaW5jbHVk
ZS9tYXRoLmgiIDIgMwoKCiAKCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiMgNzQgIi91c3IvaW5jbHVkZS9iaXRzL21h
dGhkZWYuaCIgMwoKCgogCgoKCiMgNDAgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAK
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFjb3MgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7
IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYWNvcyAgICAgICAgICAoZG91YmxlICBfX3gpICAg
ICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBhc2luICAgICAgICAgIChkb3VibGUgIF9f
eCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2FzaW4gICAgICAgICAgKGRvdWJsZSAg
X194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXRhbiAgICAgICAgICAoZG91
YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19hdGFuICAgICAgICAgIChk
b3VibGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGF0YW4yICAgICAg
ICAgIChkb3VibGUgIF9feSwgZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX19hdGFuMiAgICAgICAgICAoZG91YmxlICBfX3ksIGRvdWJsZSAgX194KSAgICAgIDsKCiAK
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNvcyAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsg
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19jb3MgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAg
IDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgc2luICAgICAgICAgIChkb3VibGUgIF9feCkg
ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NpbiAgICAgICAgICAoZG91YmxlICBfX3gp
ICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICB0YW4gICAgICAgICAgKGRvdWJsZSAg
X194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fdGFuICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgICA7CgoKCgoKCgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBjb3NoICAg
ICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Nvc2gg
ICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAg
c2luaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAg
X19zaW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIHRhbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAg
ICAgICAgIF9fdGFuaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCiAKZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgIGFjb3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4g
ICBkb3VibGUgICAgICAgICBfX2Fjb3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CiAK
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFzaW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAg
OyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2FzaW5oICAgICAgICAgIChkb3VibGUgIF9feCkg
ICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGF0YW5oICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2F0YW5oICAgICAgICAgIChkb3Vi
bGUgIF9feCkgICAgICA7CgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZXhwICAgICAg
ICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2V4cCAgICAg
ICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCgoKCgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgIGZyZXhwICAgICAgICAgIChkb3VibGUgIF9feCwgaW50ICpfX2V4cG9uZW50KSAgICA7IGV4
dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZnJleHAgICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQg
Kl9fZXhwb25lbnQpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbGRleHAgICAg
ICAgICAgKGRvdWJsZSAgX194LCBpbnQgX19leHBvbmVudCkgICAgOyBleHRlcm4gICBkb3VibGUg
ICAgICAgICBfX2xkZXhwICAgICAgICAgIChkb3VibGUgIF9feCwgaW50IF9fZXhwb25lbnQpICAg
ICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nICAgICAgICAgIChkb3VibGUgIF9f
eCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZyAgICAgICAgICAoZG91YmxlICBf
X3gpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nMTAgICAgICAgICAgKGRv
dWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbG9nMTAgICAgICAgICAg
KGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIG1vZGYgICAg
ICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgICpfX2lwdHIpICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19tb2RmICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICAqX19pcHRyKSAg
ICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBleHBtMSAgICAgICAgICAoZG91Ymxl
ICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19leHBtMSAgICAgICAgICAoZG91
YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nMXAgICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbG9nMXAgICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGxv
Z2IgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f
bG9nYiAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCgoKCgoKCgoKCiAKCiAKZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgIHBvdyAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195
KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fcG93ICAgICAgICAgIChkb3VibGUgIF9f
eCwgZG91YmxlICBfX3kpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgc3FydCAg
ICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19zcXJ0
ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAg
ICAgaHlwb3QgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBleHRlcm4g
ICBkb3VibGUgICAgICAgICBfX2h5cG90ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBf
X3kpICAgICAgOwoKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBjYnJ0ICAgICAgICAgIChk
b3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2NicnQgICAgICAgICAg
KGRvdWJsZSAgX194KSAgICAgIDsKCgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgY2Vp
bCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19j
ZWlsICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAg
ICAgICBmYWJzICAgICAgICAgIChkb3VibGUgIF9feCkgICAgIF9fYXR0cmlidXRlX18gKCAgICAo
X19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19mYWJzICAgICAgICAgIChk
b3VibGUgIF9feCkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKIApl
eHRlcm4gICBkb3VibGUgICAgICAgICAgZmxvb3IgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7
IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZmxvb3IgICAgICAgICAgKGRvdWJsZSAgX194KSAg
ICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGZtb2QgICAgICAgICAgKGRvdWJsZSAg
X194LCBkb3VibGUgIF9feSkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Ztb2QgICAg
ICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgoKIAoKZXh0ZXJuICBpbnQg
ICAgIF9faXNpbmYgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgIF9fZmluaXRlICAgICAgKGRvdWJsZSAgX192YWx1
ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIAoKZXh0ZXJuICBpbnQgICAgIGlz
aW5mICAgICAgKGRvdWJsZSAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgogCmV4dGVybiAgaW50ICAgICBmaW5pdGUgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKCgoKCgpleHRlcm4gICBkb3VibGUgICAgICAgICAg
aW5mbmFuICAgICAgICAgIChpbnQgX19lcnJvcikgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19j
b25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19pbmZuYW4gICAgICAgICAgKGlu
dCBfX2Vycm9yKSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgogCmV4
dGVybiAgIGRvdWJsZSAgICAgICAgICBkcmVtICAgICAgICAgIChkb3VibGUgIF9feCwgZG91Ymxl
ICBfX3kpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19kcmVtICAgICAgICAgIChkb3Vi
bGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IHNpZ25pZmljYW5kICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUg
ICAgICAgICBfX3NpZ25pZmljYW5kICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKCiAK
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNvcHlzaWduICAgICAgICAgIChkb3VibGUgIF9feCwg
ZG91YmxlICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVy
biAgIGRvdWJsZSAgICAgICAgIF9fY29weXNpZ24gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3Vi
bGUgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKCgoKCgoK
CiAKZXh0ZXJuICBpbnQgICAgIF9faXNuYW4gICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCmV4dGVybiAgaW50ICAgICBpc25hbiAgICAgIChk
b3VibGUgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4g
ICBkb3VibGUgICAgICAgICAgajAgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91
YmxlICAgICAgICAgX19qMCAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJs
ZSAgICAgICAgICBqMSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAg
ICAgICBfX2oxICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgIGpuICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX19qbiAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIHkwICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAg
IF9feTAgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAg
eTEgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX195MSAg
ICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICB5biAgICAg
ICAgICAoaW50LCBkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9feW4gICAg
ICAgICAgKGludCwgZG91YmxlICkgICAgICA7CgoKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAg
ICBlcmYgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19l
cmYgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAgZXJm
YyAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2VyZmMg
ICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAgbGdhbW1h
ICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbGdhbW1h
ICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHRnYW1t
YSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3RnYW1t
YSAgICAgICAgICAoZG91YmxlICkgICAgICA7CgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f
Z2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgICAgOwoKCgogCgoKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGxnYW1tYV9yICAgICAgICAgICAgICAoZG91YmxlICwgaW50ICpfX3NpZ25nYW1wKSAg
ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbGdhbW1hX3IgICAgICAgICAgICAgIChkb3Vi
bGUgLCBpbnQgKl9fc2lnbmdhbXApICAgICAgOwoKCgoKIAoKZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgIHJpbnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg
ICAgIF9fcmludCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3Vi
bGUgICAgICAgICAgbmV4dGFmdGVyICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kp
ICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGRvdWJsZSAg
ICAgICAgIF9fbmV4dGFmdGVyICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAg
ICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCgoKCiAKZXh0ZXJuICAgZG91
YmxlICAgICAgICAgIHJlbWFpbmRlciAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195
KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fcmVtYWluZGVyICAgICAgICAgIChkb3Vi
bGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IHNjYWxiICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX24pICAgIDsgZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgX19zY2FsYiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX19u
KSAgICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzY2FsYm4gICAgICAgICAgKGRv
dWJsZSAgX194LCBpbnQgX19uKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2NhbGJu
ICAgICAgICAgIChkb3VibGUgIF9feCwgaW50IF9fbikgICAgICA7CgogCmV4dGVybiAgIGludCAg
ICAgICAgaWxvZ2IgICAgICAgIChkb3VibGUgIF9feCkgICA7IGV4dGVybiAgIGludCAgICAgICAg
X19pbG9nYiAgICAgICAgKGRvdWJsZSAgX194KSAgICA7CgoKIyAzMzYgIi91c3IvaW5jbHVkZS9i
aXRzL21hdGhjYWxscy5oIiAzCgojIDYzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKCgoKCgoK
CiAKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKZXh0
ZXJuICAgZmxvYXQgICAgICAgICAgYWNvc2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0
ZXJuICAgZmxvYXQgICAgICAgICBfX2Fjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBhc2luZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg
OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXNpbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
ICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGF0YW5mICAgICAgICAgKGZsb2F0ICAgX194
KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19hdGFuZiAgICAgICAgIChmbG9hdCAgIF9f
eCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgYXRhbjJmICAgICAgICAgKGZsb2F0
ICAgX195LCBmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXRhbjJm
ICAgICAgICAgKGZsb2F0ICAgX195LCBmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGZs
b2F0ICAgICAgICAgIGNvc2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX2Nvc2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIHNpbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAg
ZmxvYXQgICAgICAgICBfX3NpbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVy
biAgIGZsb2F0ICAgICAgICAgIHRhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJu
ICAgZmxvYXQgICAgICAgICBfX3RhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCgoK
CgoKIAoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBjb3NoZiAgICAgICAgIChmbG9hdCAgIF9f
eCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fY29zaGYgICAgICAgICAoZmxvYXQgICBf
X3gpICAgICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNpbmhmICAgICAgICAgKGZsb2F0
ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19zaW5oZiAgICAgICAgIChmbG9h
dCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgdGFuaGYgICAgICAgICAo
ZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3RhbmhmICAgICAgICAg
KGZsb2F0ICAgX194KSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGFjb3NoZiAg
ICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYWNvc2hm
ICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBh
c2luaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBf
X2FzaW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAg
ICAgICAgYXRhbmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAg
ICAgICAgX19hdGFuaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCiAKCiAKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4g
ICBmbG9hdCAgICAgICAgIF9fZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKCgoK
CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmcmV4cGYgICAgICAgICAoZmxvYXQgICBfX3gs
IGludCAqX19leHBvbmVudCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZnJleHBmICAg
ICAgICAgKGZsb2F0ICAgX194LCBpbnQgKl9fZXhwb25lbnQpICAgICAgOwoKIApleHRlcm4gICBm
bG9hdCAgICAgICAgICBsZGV4cGYgICAgICAgICAoZmxvYXQgICBfX3gsIGludCBfX2V4cG9uZW50
KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sZGV4cGYgICAgICAgICAoZmxvYXQgICBf
X3gsIGludCBfX2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbG9n
ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbG9n
ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAg
IGxvZzEwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAg
IF9fbG9nMTBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQg
ICAgICAgICAgbW9kZmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgKl9faXB0cikgICAg
OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbW9kZmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZs
b2F0ICAgKl9faXB0cikgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBleHBtMWYg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2V4cG0x
ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAg
IGxvZzFwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAg
IF9fbG9nMXBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQg
ICAgICAgICAgbG9nYmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQg
ICAgICAgICBfX2xvZ2JmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCgoKCgoKCgoKCgog
CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHBvd2YgICAgICAgICAoZmxvYXQgICBfX3gsIGZs
b2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19wb3dmICAgICAgICAgKGZs
b2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAg
IHNxcnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAg
X19zcXJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAg
ICAgICAgICBoeXBvdGYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICA7IGV4
dGVybiAgIGZsb2F0ICAgICAgICAgX19oeXBvdGYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0
ICAgX195KSAgICAgIDsKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBjYnJ0ZiAgICAgICAg
IChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fY2JydGYgICAgICAg
ICAoZmxvYXQgICBfX3gpICAgICAgOwoKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGNl
aWxmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19j
ZWlsZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIGZhYnNmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChf
X2NvbnN0X18pICApOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZmFic2YgICAgICAgICAoZmxv
YXQgICBfX3gpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCiAKZXh0
ZXJuICAgZmxvYXQgICAgICAgICAgZmxvb3JmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4
dGVybiAgIGZsb2F0ICAgICAgICAgX19mbG9vcmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAg
OwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmbW9kZiAgICAgICAgIChmbG9hdCAgIF9feCwg
ZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2Ztb2RmICAgICAgICAg
KGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7CgoKIAoKZXh0ZXJuICBpbnQgICAgX19p
c2luZmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKIApleHRlcm4gIGludCAgICBfX2Zpbml0ZWYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCiAKCmV4dGVybiAgaW50ICAgIGlzaW5mZiAgICAg
KGZsb2F0ICAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVy
biAgaW50ICAgIGZpbml0ZWYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKIAoKCgoKCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGluZm5hbmYgICAg
ICAgICAoaW50IF9fZXJyb3IpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7
IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19pbmZuYW5mICAgICAgICAgKGludCBfX2Vycm9yKSAg
ICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgogCmV4dGVybiAgIGZsb2F0
ICAgICAgICAgIGRyZW1mICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgOyBl
eHRlcm4gICBmbG9hdCAgICAgICAgIF9fZHJlbWYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0
ICAgX195KSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNpZ25pZmljYW5kZiAg
ICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc2lnbmlm
aWNhbmRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCgoKIApleHRlcm4gICBmbG9hdCAg
ICAgICAgICBjb3B5c2lnbmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAg
X19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9hdCAgICAgICAg
IF9fY29weXNpZ25mICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgIF9fYXR0
cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKCgoKCgoKCiAKZXh0ZXJuICBpbnQgICAg
X19pc25hbmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCiAKZXh0ZXJuICBpbnQgICAgaXNuYW5mICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgajBm
ICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2owZiAgICAg
ICAgIChmbG9hdCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgajFmICAgICAgICAg
KGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2oxZiAgICAgICAgIChmbG9h
dCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgam5mICAgICAgICAgKGludCwgZmxv
YXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fam5mICAgICAgICAgKGludCwgZmxv
YXQgICkgICAgICA7CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHkwZiAgICAgICAgIChmbG9hdCAg
KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX195MGYgICAgICAgICAoZmxvYXQgICkgICAg
ICA7CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHkxZiAgICAgICAgIChmbG9hdCAgKSAgICA7IGV4
dGVybiAgIGZsb2F0ICAgICAgICAgX195MWYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVy
biAgIGZsb2F0ICAgICAgICAgIHluZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgIDsgZXh0ZXJu
ICAgZmxvYXQgICAgICAgICBfX3luZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgICAgOwoKCgoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBlcmZmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0
ZXJuICAgZmxvYXQgICAgICAgICBfX2VyZmYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVy
biAgIGZsb2F0ICAgICAgICAgIGVyZmNmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAg
ZmxvYXQgICAgICAgICBfX2VyZmNmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBm
bG9hdCAgICAgICAgICBsZ2FtbWFmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX2xnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAgIGZs
b2F0ICAgICAgICAgIHRnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fdGdhbW1hZiAgICAgICAgIChmbG9hdCAgKSAgICAgIDsKCgoKIApleHRlcm4g
ICBmbG9hdCAgICAgICAgICBnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBm
bG9hdCAgICAgICAgIF9fZ2FtbWFmICAgICAgICAgKGZsb2F0ICApICAgICAgOwoKCgogCgoKZXh0
ZXJuICAgZmxvYXQgICAgICAgICAgbGdhbW1hZl9yICAgICAgICAgICAgKGZsb2F0ICAsIGludCAq
X19zaWduZ2FtcCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbGdhbW1hZl9yICAgICAg
ICAgICAgKGZsb2F0ICAsIGludCAqX19zaWduZ2FtcCkgICAgICA7CgoKCgogCgpleHRlcm4gICBm
bG9hdCAgICAgICAgICByaW50ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBm
bG9hdCAgICAgICAgIF9fcmludGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKIApleHRl
cm4gICBmbG9hdCAgICAgICAgICBuZXh0YWZ0ZXJmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9h
dCAgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAg
ZmxvYXQgICAgICAgICBfX25leHRhZnRlcmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAg
X195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoKCgogCmV4dGVy
biAgIGZsb2F0ICAgICAgICAgIHJlbWFpbmRlcmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0
ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19yZW1haW5kZXJmICAgICAgICAg
KGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAg
ICAgICBzY2FsYmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX19uKSAgICA7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX19zY2FsYmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAg
X19uKSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNjYWxibmYgICAgICAgICAo
ZmxvYXQgICBfX3gsIGludCBfX24pICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3NjYWxi
bmYgICAgICAgICAoZmxvYXQgICBfX3gsIGludCBfX24pICAgICAgOwoKIApleHRlcm4gICBpbnQg
ICAgICAgaWxvZ2JmICAgICAgIChmbG9hdCAgIF9feCkgICA7IGV4dGVybiAgIGludCAgICAgICBf
X2lsb2diZiAgICAgICAoZmxvYXQgICBfX3gpICAgIDsKCgojIDMzNiAiL3Vzci9pbmNsdWRlL2Jp
dHMvbWF0aGNhbGxzLmgiIDMKCiMgODIgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgoKIyAx
MDMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKCgoKCgoKCgoKIApleHRlcm4gaW50IHNpZ25nYW07
CgoKCiAKIyAyMzIgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKCgoKIAp0eXBlZGVmIGVudW0Kewog
IF9JRUVFXyA9IC0xLAkgCiAgX1NWSURfLAkgCiAgX1hPUEVOXywJIAogIF9QT1NJWF8sCiAgX0lT
T0NfCSAKfSBfTElCX1ZFUlNJT05fVFlQRTsKCiAKCgpleHRlcm4gX0xJQl9WRVJTSU9OX1RZUEUg
X0xJQl9WRVJTSU9OOwoKCgoKIAoKCgoKCnN0cnVjdCBfX2V4Y2VwdGlvbgoKCgogIHsKICAgIGlu
dCB0eXBlOwogICAgY2hhciAqbmFtZTsKICAgIGRvdWJsZSBhcmcxOwogICAgZG91YmxlIGFyZzI7
CiAgICBkb3VibGUgcmV0dmFsOwogIH07CgoKZXh0ZXJuIGludCBtYXRoZXJyICAoc3RydWN0IF9f
ZXhjZXB0aW9uICpfX2V4YykgIHRocm93ICgpICA7CgoKCgoKCiAKCgoKCgoKCiAKCiMgMSAiL3Vz
ci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvZmxv
YXQuaCIgMSAzCiAKCgogCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAK
CgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCgogICAgCgoKICAgIAoKCiAgICAK
CgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgoKICAgIAoKCiAgICAK
CgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKCgojIDI4
OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKIyAyOTkgIi91c3IvaW5jbHVkZS9tYXRoLmgi
IDMKCgoKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCiMgMzM2ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAz
CgoKCiAKCgoKCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDEgMwog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA1OSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0
aGlubGluZS5oIiAzCgoKCgoKCgoKCgoKX19pbmxpbmUgICAgZmxvYXQgCSBfX2NvcHlzaWduZiAg
KCAgZmxvYXQgIF9feCwgICBmbG9hdCAgX195KQl7CSAgZmxvYXQgIF9fejsJX19hc20gKCJjcHlz
ICUxLCAlMiwgJTAiIDogIj1mIiAoX196KSA6ICJmIiAoX195KSwgImYiIChfX3gpKTsJcmV0dXJu
IF9fejsJfSAKX19pbmxpbmUgICAgZmxvYXQgCSBjb3B5c2lnbmYgICggIGZsb2F0ICBfX3gsICAg
ZmxvYXQgIF9feSkJewkgIGZsb2F0ICBfX3o7CV9fYXNtICgiY3B5cyAlMSwgJTIsICUwIiA6ICI9
ZiIgKF9feikgOiAiZiIgKF9feSksICJmIiAoX194KSk7CXJldHVybiBfX3o7CX0gCl9faW5saW5l
ICAgIGRvdWJsZSAJIF9fY29weXNpZ24gICggIGRvdWJsZSAgX194LCAgIGRvdWJsZSAgX195KQl7
CSAgZG91YmxlICBfX3o7CV9fYXNtICgiY3B5cyAlMSwgJTIsICUwIiA6ICI9ZiIgKF9feikgOiAi
ZiIgKF9feSksICJmIiAoX194KSk7CXJldHVybiBfX3o7CX0gCl9faW5saW5lICAgIGRvdWJsZSAJ
IGNvcHlzaWduICAoICBkb3VibGUgIF9feCwgICBkb3VibGUgIF9feSkJewkgIGRvdWJsZSAgX196
OwlfX2FzbSAoImNweXMgJTEsICUyLCAlMCIgOiAiPWYiIChfX3opIDogImYiIChfX3kpLCAiZiIg
KF9feCkpOwlyZXR1cm4gX196Owl9IAoKCgoKCl9faW5saW5lICBmbG9hdCBfX2ZhYnNmIChmbG9h
dCBfX3gpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzZiAoX194KTsgfQpfX2lubGluZSAgZmxvYXQg
ZmFic2YgKGZsb2F0IF9feCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNmIChfX3gpOyB9Cl9faW5s
aW5lICBkb3VibGUgX19mYWJzIChkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFicyAo
X194KTsgfQpfX2lubGluZSAgZG91YmxlIGZhYnMgKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fYnVp
bHRpbl9mYWJzIChfX3gpOyB9CiMgOTkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIg
MwoKCgogCgoKCl9faW5saW5lICBmbG9hdApfX2Zsb29yZiAoZmxvYXQgX194KQp7CiAgIAogIGlm
IChfX3ggIT0gMCAmJiBmYWJzZiAoX194KSA8IDE2Nzc3MjE2LjBmKSAgIAogICAgewogICAgICAg
CgoKCgogICAgICBmbG9hdCBfX3RtcDEsIF9fdG1wMjsKCiAgICAgIF9fYXNtICgiY3Z0c3QvcyAl
MywlMlxuXHQiCgoKCgkgICAgICJjdnR0cS9zdm0gJTIsJTFcblx0IgoKCSAgICAgImN2dHF0L20g
JTEsJTBcblx0IgoJICAgICA6ICI9ZiIoX194KSwgIj0mZiIoX190bXAxKSwgIj0mZiIoX190bXAy
KQoJICAgICA6ICJmIihfX3gpKTsKICAgIH0KICByZXR1cm4gX194Owp9CgpfX2lubGluZSAgZG91
YmxlCl9fZmxvb3IgKGRvdWJsZSBfX3gpCnsKICBpZiAoX194ICE9IDAgJiYgZmFicyAoX194KSA8
IDkwMDcxOTkyNTQ3NDA5OTIuMCkgICAKICAgIHsKICAgICAgZG91YmxlIF9fdG1wMTsKICAgICAg
X19hc20gKAoKCgoJICAgICAiY3Z0dHEvc3ZtICUyLCUxXG5cdCIKCgkgICAgICJjdnRxdC9tICUx
LCUwXG5cdCIKCSAgICAgOiAiPWYiKF9feCksICI9JmYiKF9fdG1wMSkKCSAgICAgOiAiZiIoX194
KSk7CiAgICB9CiAgcmV0dXJuIF9feDsKfQoKX19pbmxpbmUgIGZsb2F0IGZsb29yZiAoZmxvYXQg
X194KSB7IHJldHVybiBfX2Zsb29yZihfX3gpOyB9Cl9faW5saW5lICBkb3VibGUgZmxvb3IgKGRv
dWJsZSBfX3gpIHsgcmV0dXJuIF9fZmxvb3IoX194KTsgfQoKCl9faW5saW5lICBmbG9hdCBfX2Zk
aW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkKewogIHJldHVybiBfX3ggPCBfX3kgPyAwLjBmIDog
X194IC0gX195Owp9CgpfX2lubGluZSAgZmxvYXQgZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQgX195
KQp7CiAgcmV0dXJuIF9feCA8IF9feSA/IDAuMGYgOiBfX3ggLSBfX3k7Cn0KCl9faW5saW5lICBk
b3VibGUgX19mZGltIChkb3VibGUgX194LCBkb3VibGUgX195KQp7CiAgcmV0dXJuIF9feCA8IF9f
eSA/IDAuMCA6IF9feCAtIF9feTsKfQoKX19pbmxpbmUgIGRvdWJsZSBmZGltIChkb3VibGUgX194
LCBkb3VibGUgX195KQp7CiAgcmV0dXJuIF9feCA8IF9feSA/IDAuMCA6IF9feCAtIF9feTsKfQoj
IDM0OCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgojIDQwNyAiL3Vzci9pbmNsdWRlL21h
dGguaCIgMwoKCn0gCgoKCiMgMjQgIi9zb2Z0d2FyZS90aGFsaWEvaC9zdGR0eXBlcy5oIiAyCgoj
IDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgogCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIu
OTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2Mt
bGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51
eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQt
bGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGxvbmcgdW5zaWduZWQgaW50IHNpemVfdDsK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyODMgIi91
c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0
ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxp
bnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoK
CgoKIAp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwkJCSAKICAgIGludCByZW07CQkJ
IAogIH0gZGl2X3Q7CgogCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CQkg
CiAgICBsb25nIGludCByZW07CQkgCiAgfSBsZGl2X3Q7CgoKCiMgNjUgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwoKCgogCgoKCiAKCgoKCgogCgpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21i
X2N1cl9tYXggICh2b2lkKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBkb3VibGUgYXRvZiAgKF9f
Y29uc3QgY2hhciAqX19ucHRyKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IGF0b2kgIChfX2Nv
bnN0IGNoYXIgKl9fbnB0cikgIHRocm93ICgpICA7CiAKZXh0ZXJuIGxvbmcgaW50IGF0b2wgIChf
X2NvbnN0IGNoYXIgKl9fbnB0cikgIHRocm93ICgpICA7CgoKIApfX2V4dGVuc2lvbl9fIGV4dGVy
biBsb25nIGxvbmcgaW50IGF0b2xsICAoX19jb25zdCBjaGFyICpfX25wdHIpICB0aHJvdyAoKSAg
OwoKCiAKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgIChfX2NvbnN0IGNoYXIgKiAgIF9fbnB0ciwKCQkJ
ICAgY2hhciAqKiAgIF9fZW5kcHRyKSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKCiAKZXh0ZXJuIGxv
bmcgaW50IHN0cnRvbCAgKF9fY29uc3QgY2hhciAqICAgX19ucHRyLAoJCQkgICAgIGNoYXIgKiog
ICBfX2VuZHB0ciwgaW50IF9fYmFzZSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgaW50IHN0cnRvdWwgIChfX2NvbnN0IGNoYXIgKiAgIF9fbnB0ciwKCQkJCSAgICAgICBjaGFy
ICoqICAgX19lbmRwdHIsCgkJCQkgICAgICAgaW50IF9fYmFzZSkgIHRocm93ICgpICA7CgoKIApf
X2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAgKF9fY29uc3QgY2hhciAq
ICAgX19ucHRyLAoJCQkJICBjaGFyICoqICAgX19lbmRwdHIsIGludCBfX2Jhc2UpICB0aHJvdyAo
KSAgOwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91
cSAgKF9fY29uc3QgY2hhciAqICAgX19ucHRyLAoJCQkJCSAgICBjaGFyICoqICAgX19lbmRwdHIs
CgkJCQkJICAgIGludCBfX2Jhc2UpICB0aHJvdyAoKSAgOwoKCgogCgogCl9fZXh0ZW5zaW9uX18K
ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCAgKF9fY29uc3QgY2hhciAqICAgX19ucHRyLAoJ
CQkJICAgY2hhciAqKiAgIF9fZW5kcHRyLCBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKIApfX2V4
dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsICAoX19jb25z
dCBjaGFyICogICBfX25wdHIsCgkJCQkJICAgICBjaGFyICoqICAgX19lbmRwdHIsCgkJCQkJICAg
ICBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKCgoKIyAxOTAgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMwoKCgogCgoKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5hbCAgKF9fY29uc3QgY2hh
ciAqICAgX19ucHRyLAoJCQkJICAgICAgY2hhciAqKiAgIF9fZW5kcHRyLAoJCQkJICAgICAgaW50
IF9fZ3JvdXApICB0aHJvdyAoKSAgOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgIChf
X2NvbnN0IGNoYXIgKiAgIF9fbnB0ciwKCQkJCSAgICAgY2hhciAqKiAgIF9fZW5kcHRyLCBpbnQg
X19ncm91cCkgIHRocm93ICgpICA7CmV4dGVybiBsb25nIGRvdWJsZSAgX19zdHJ0b2xkX2ludGVy
bmFsICAoX19jb25zdCBjaGFyICoKCQkJCQkJICBfX25wdHIsCgkJCQkJCWNoYXIgKiogICBfX2Vu
ZHB0ciwKCQkJCQkJaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGxvbmcgaW50IF9f
c3RydG9sX2ludGVybmFsICAoX19jb25zdCBjaGFyICogICBfX25wdHIsCgkJCQkJY2hhciAqKiAg
IF9fZW5kcHRyLAoJCQkJCWludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKCgoK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9pbnRlcm5hbCAgKF9fY29uc3QgY2hh
ciAqCgkJCQkJCSAgICBfX25wdHIsCgkJCQkJCSAgY2hhciAqKiAgIF9fZW5kcHRyLAoJCQkJCQkg
IGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKCgoKCl9fZXh0ZW5zaW9uX18K
ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2ludGVybmFsICAoX19jb25zdCBjaGFyICog
ICBfX25wdHIsCgkJCQkJICAgICAgY2hhciAqKiAgIF9fZW5kcHRyLAoJCQkJCSAgICAgIGludCBf
X2Jhc2UsIGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKCgoKX19leHRlbnNpb25fXwpleHRlcm4g
dW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2ludGVybmFsICAoX19jb25zdCBjaGFy
ICoKCQkJCQkJCSAgX19ucHRyLAoJCQkJCQkJY2hhciAqKgoJCQkJCQkJICBfX2VuZHB0ciwKCQkJ
CQkJCWludCBfX2Jhc2UsCgkJCQkJCQlpbnQgX19ncm91cCkgIHRocm93ICgpICA7CgoKCgoKCiAK
CmV4dGVybiBfX2lubGluZSBkb3VibGUKc3RydG9kIChfX2NvbnN0IGNoYXIgKiAgIF9fbnB0ciwg
Y2hhciAqKiAgIF9fZW5kcHRyKSB0aHJvdyAoKSAKewogIHJldHVybiBfX3N0cnRvZF9pbnRlcm5h
bCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CnN0cnRv
bCAoX19jb25zdCBjaGFyICogICBfX25wdHIsIGNoYXIgKiogICBfX2VuZHB0ciwKCWludCBfX2Jh
c2UpIHRocm93ICgpIAp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFsIChfX25wdHIsIF9fZW5k
cHRyLCBfX2Jhc2UsIDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGludApzdHJ0
b3VsIChfX2NvbnN0IGNoYXIgKiAgIF9fbnB0ciwgY2hhciAqKiAgIF9fZW5kcHRyLAoJIGludCBf
X2Jhc2UpIHRocm93ICgpIAp7CiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBf
X2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKIyAyNzEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoK
CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19j
b25zdCBjaGFyICogICBfX25wdHIsIGNoYXIgKiogICBfX2VuZHB0ciwKCWludCBfX2Jhc2UpIHRo
cm93ICgpIAp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwg
X19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25n
IGxvbmcgaW50CnN0cnRvdXEgKF9fY29uc3QgY2hhciAqICAgX19ucHRyLCBjaGFyICoqICAgX19l
bmRwdHIsCgkgaW50IF9fYmFzZSkgdGhyb3cgKCkgCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRl
cm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCgpfX2V4dGVuc2lvbl9fIGV4
dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvbGwgKF9fY29uc3QgY2hhciAqICAgX19u
cHRyLCBjaGFyICoqICAgX19lbmRwdHIsCgkgaW50IF9fYmFzZSkgdGhyb3cgKCkgCnsKICByZXR1
cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9f
ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91
bGwgKF9fY29uc3QgY2hhciAqICAgX19ucHRyLCBjaGFyICoqICAgX19lbmRwdHIsCgkgIGludCBf
X2Jhc2UpIHRocm93ICgpIAp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwg
X19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlCmF0b2YgKF9f
Y29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKSAKewogIHJldHVybiBzdHJ0b2QgKF9fbnB0ciwg
KGNoYXIgKiopIF9fbnVsbCApOwp9CmV4dGVybiBfX2lubGluZSBpbnQKYXRvaSAoX19jb25zdCBj
aGFyICpfX25wdHIpIHRocm93ICgpIAp7CiAgcmV0dXJuIChpbnQpIHN0cnRvbCAoX19ucHRyLCAo
Y2hhciAqKikgX19udWxsICwgMTApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludAphdG9sIChf
X2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkgCnsKICByZXR1cm4gc3RydG9sIChfX25wdHIs
IChjaGFyICoqKSBfX251bGwgLCAxMCk7Cn0KCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGlu
ZSBsb25nIGxvbmcgaW50CmF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkgCnsK
ICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgX19udWxsICwgMTApOwp9CgoKCgoK
IAoKCmV4dGVybiBjaGFyICpsNjRhICAobG9uZyBpbnQgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0
ZXJuIGxvbmcgaW50IGE2NGwgIChfX2NvbnN0IGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKIyAx
ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCmV4dGVybiAiQyIgeyAKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1y
ZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoK
IyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxp
Yi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgog
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2dj
Yy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2Nz
LTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xp
Yi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIu
OTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGli
L2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAy
IDMKCgogCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBpbnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgaW50IF9fdV9sb25nOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9f
dV9xdWFkX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19xdWFkX3Q7CnR5cGVkZWYgc2lnbmVkIGNoYXIg
X19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVk
IHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2
X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9f
dWludDMyX3Q7CnR5cGVkZWYgc2lnbmVkIGxvbmcgaW50IF9faW50NjRfdDsKdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGludCBfX3VpbnQ2NF90Owp0eXBlZGVmIF9fcXVhZF90ICpfX3FhZGRyX3Q7Cgp0
eXBlZGVmIF9fdWludDY0X3QgX19kZXZfdDsJCSAKdHlwZWRlZiBfX3VpbnQzMl90IF9fdWlkX3Q7
CQkgCnR5cGVkZWYgX191aW50MzJfdCBfX2dpZF90OwkJIAp0eXBlZGVmIF9fdWludDMyX3QgX19p
bm9fdDsJCSAKdHlwZWRlZiBfX3VpbnQ2NF90IF9faW5vNjRfdDsJCSAKdHlwZWRlZiBfX3VpbnQz
Ml90IF9fbW9kZV90OwkJIAp0eXBlZGVmIF9fdWludDMyX3QgX19ubGlua190OyAJCSAKdHlwZWRl
ZiBfX2ludDY0X3QgIF9fb2ZmX3Q7CQkgCnR5cGVkZWYgX19pbnQ2NF90ICBfX29mZjY0X3Q7CQkg
CnR5cGVkZWYgX19pbnQ2NF90ICBfX2xvZmZfdDsJCSAKdHlwZWRlZiBfX2ludDMyX3QgIF9fcGlk
X3Q7CQkgCnR5cGVkZWYgX19pbnQ2NF90ICBfX3NzaXplX3Q7CQkgCnR5cGVkZWYgX19pbnQ2NF90
ICBfX3JsaW1fdDsJCSAKdHlwZWRlZiBfX2ludDY0X3QgIF9fcmxpbTY0X3Q7CQkgCnR5cGVkZWYg
X191aW50MzJfdCAgX19ibGtjbnRfdDsJCSAKdHlwZWRlZiBfX3VpbnQ2NF90ICBfX2Jsa2NudDY0
X3Q7CSAKdHlwZWRlZiBfX2ludDMyX3QgX19mc2Jsa2NudF90OwkJIAp0eXBlZGVmIF9faW50NjRf
dCBfX2ZzYmxrY250NjRfdDsJIAp0eXBlZGVmIF9fdWludDMyX3QgX19mc2ZpbGNudF90OwkgCnR5
cGVkZWYgX191aW50NjRfdCBfX2ZzZmlsY250NjRfdDsJIAp0eXBlZGVmIF9fdWludDMyX3QgX19p
ZF90OwkJIAoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRf
dDsJCQkJIAoKIAp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CQkJIAp0eXBlZGVmIGNoYXIgKl9fY2Fk
ZHJfdDsJCSAKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3
YmxrX3Q7CQkgCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190Owp0eXBlZGVmIGludCBfX2tleV90
OwkJCSAKCiAKdHlwZWRlZiBpbnQgX19pcGNfcGlkX3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBpbnQgX19mZF9tYXNrOwoKIAoKCgoKIAoKCiAKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QKICB7CiAg
ICAgCgoKCgoKICAgIF9fZmRfbWFzayBfX2Zkc19iaXRzWzEwMjQgIC8gKDggKiBzaXplb2YgKF9f
ZmRfbWFzaykpIF07CgoKICB9IF9fZmRfc2V0OwoKIAp0eXBlZGVmIGludCBfX3Rfc2NhbGFyX3Q7
CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdF91c2NhbGFyX3Q7CgogCnR5cGVkZWYgbG9uZyBpbnQg
X19pbnRwdHJfdDsKCgogCgoKCgoKIyAzMCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK
CgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5
cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19x
dWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lk
X3QgZnNpZF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3Qg
aW5vX3Q7CgoKCgoKCgoKCgp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0eXBlZGVmIF9fZ2lk
X3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKCgoKCnR5cGVkZWYgX19ubGlu
a190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7CgoKCgoKdHlwZWRlZiBfX29m
Zl90IG9mZl90OwoKCgoKCgoKCgoKCnR5cGVkZWYgX19waWRfdCBwaWRfdDsKCgoKCnR5cGVkZWYg
X19pZF90IGlkX3Q7CgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9f
ZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9f
a2V5X3Qga2V5X3Q7CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoK
CgojIDYyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgoKCgoKIAp0eXBlZGVmIF9fdGltZV90
IHRpbWVfdDsKCgoKCgojIDg5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgojIDI3OSAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDEyMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAy
IDMKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEu
NjYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGli
L2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgog
CgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9l
Z2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGlu
dXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3Iv
bGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0
LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbGli
L2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2Vn
Y3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiMgMTI0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgogCnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKCgogCgojIDE1OCAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAzCgoKIAoKCgoKCgoKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoICBfX1FJX18gKSkpIDsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKCAgX19ISV9fICkpKSA7CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fICggIF9fU0lfXyApKSkgOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoICBfX0RJX18gKSkpIDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1
X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19RSV9fICkpKSA7CnR5cGVkZWYg
dW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ISV9f
ICkpKSA7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKCAgX19TSV9fICkpKSA7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBfX2F0
dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ESV9fICkpKSA7Cgp0eXBlZGVmIGludCByZWdpc3Rl
cl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18pKSk7CgoKIAoKCgoKCgogCiMg
MSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwogCgoKCgoKCiMg
MzUgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCgoKIAoKCgoKCgoKCgoKCgoKIyAxOTAgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2Vs
ZWN0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCiAKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgojIDMxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgogCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYg
aW50IF9fc2lnX2F0b21pY190OwoKIAoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWduZWQg
bG9uZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkg
XTsKICB9IF9fc2lnc2V0X3Q7CgoKCgogCgoKCgoKIyAxMjUgIi91c3IvaW5jbHVkZS9iaXRzL3Np
Z3NldC5oIiAzCgojIDM0ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgogCgojIDEg
Ii91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCiMgNTEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA2MiAiL3Vzci9pbmNsdWRlL3Rp
bWUuaCIgMwoKCgojIDczICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgoKCgoKIAoKc3RydWN0
IHRpbWVzcGVjCiAgewogICAgbG9uZyBpbnQgdHZfc2VjOwkJIAogICAgbG9uZyBpbnQgdHZfbnNl
YzsJCSAKICB9OwoKCgoKCiMgMjc5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgMzggIi91
c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCmV4dGVybiAiQyIgeyAKCiAKCgoKc3RydWN0
IHRpbWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKIAp0eXBlZGVmIF9fZmRfc2V0
IGZkX3NldDsKCiAKCgoKIAoKCgoKIAoKCgoKCgogCgoKCgpleHRlcm4gaW50IF9fc2VsZWN0ICAo
aW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVhZGZkcywKCQkJICBfX2ZkX3NldCAqX193cml0ZWZk
cywgX19mZF9zZXQgKl9fZXhjZXB0ZmRzLAoJCQkgIHN0cnVjdCB0aW1ldmFsICpfX3RpbWVvdXQp
ICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNlbGVjdCAgKGludCBfX25mZHMsIF9fZmRfc2V0ICpf
X3JlYWRmZHMsCgkJCV9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRmZHMs
CgkJCXN0cnVjdCB0aW1ldmFsICpfX3RpbWVvdXQpICB0aHJvdyAoKSAgOwoKIyA5MSAiL3Vzci9p
bmNsdWRlL3N5cy9zZWxlY3QuaCIgMwoKCn0gCgoKIyAxOTMgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMwogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIyAxOTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMiAzCgoKCgogCgp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250X3Q7CSAgCnR5cGVkZWYgX19m
c2Jsa2NudF90IGZzYmxrY250X3Q7ICAKdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsg
IAoKCgoKCgoKCgoKCgp9IAoKCiMgMzM5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCiAK
CgoKIApleHRlcm4gaW50MzJfdCByYW5kb20gICh2b2lkKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJu
IHZvaWQgc3JhbmRvbSAgKHVuc2lnbmVkIGludCBfX3NlZWQpICB0aHJvdyAoKSAgOwoKIAoKCgpl
eHRlcm4gdm9pZCAqICBpbml0c3RhdGUgICh1bnNpZ25lZCBpbnQgX19zZWVkLCB2b2lkICogIF9f
c3RhdGVidWYsCgkJCSAgICAgICBzaXplX3QgX19zdGF0ZWxlbikgIHRocm93ICgpICA7CgogCgpl
eHRlcm4gdm9pZCAqICBzZXRzdGF0ZSAgKHZvaWQgKiAgX19zdGF0ZWJ1ZikgIHRocm93ICgpICA7
CgoKCiAKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsJCSAKICAg
IGludDMyX3QgKnJwdHI7CQkgCiAgICBpbnQzMl90ICpzdGF0ZTsJCSAKICAgIGludCByYW5kX3R5
cGU7CQkgCiAgICBpbnQgcmFuZF9kZWc7CQkgCiAgICBpbnQgcmFuZF9zZXA7CQkgCiAgICBpbnQz
Ml90ICplbmRfcHRyOwkJIAogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yICAoc3RydWN0IHJhbmRv
bV9kYXRhICogICBfX2J1ZiwKCQkJICBpbnQzMl90ICogICBfX3Jlc3VsdCkgIHRocm93ICgpICA7
CgpleHRlcm4gaW50IHNyYW5kb21fciAgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5k
b21fZGF0YSAqX19idWYpICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGludCBpbml0c3RhdGVfciAgKHVu
c2lnbmVkIGludCBfX3NlZWQsCgkJCSAgICAgdm9pZCAqICAgIF9fc3RhdGVidWYsCgkJCSAgICAg
c2l6ZV90IF9fc3RhdGVsZW4sCgkJCSAgICAgc3RydWN0IHJhbmRvbV9kYXRhICogICBfX2J1Zikg
IHRocm93ICgpICA7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgICh2b2lkICogICAgX19zdGF0ZWJ1
ZiwKCQkJICAgIHN0cnVjdCByYW5kb21fZGF0YSAqICAgX19idWYpICB0aHJvdyAoKSAgOwoKCgoK
IApleHRlcm4gaW50IHJhbmQgICh2b2lkKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gdm9pZCBzcmFu
ZCAgKHVuc2lnbmVkIGludCBfX3NlZWQpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCByYW5k
X3IgICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkgIHRocm93ICgpICA7CgoKCgogCgogCmV4dGVybiBk
b3VibGUgZHJhbmQ0OCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gZG91YmxlIGVyYW5kNDgg
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgIHRocm93ICgpICA7CgogCmV4dGVybiBs
b25nIGludCBscmFuZDQ4ICAodm9pZCkgIHRocm93ICgpICA7CmV4dGVybiBsb25nIGludCBucmFu
ZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICB0aHJvdyAoKSAgOwoKIApleHRl
cm4gbG9uZyBpbnQgbXJhbmQ0OCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gbG9uZyBpbnQg
anJhbmQ0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSAgdGhyb3cgKCkgIDsKCiAK
ZXh0ZXJuIHZvaWQgc3JhbmQ0OCAgKGxvbmcgaW50IF9fc2VlZHZhbCkgIHRocm93ICgpICA7CmV4
dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3Nl
ZWQxNnZbM10pICB0aHJvdyAoKSAgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICAodW5zaWduZWQgc2hv
cnQgaW50IF9fcGFyYW1bN10pICB0aHJvdyAoKSAgOwoKIApzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAg
ewogICAgdW5zaWduZWQgc2hvcnQgaW50IHhbM107CSAKICAgIHVuc2lnbmVkIHNob3J0IGludCBh
WzNdOwkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsJIAogICAgdW5zaWduZWQgc2hvcnQgaW50
IG9sZF94WzNdOyAgCiAgICBpbnQgaW5pdDsJCQkgCiAgfTsKCgogCmV4dGVybiBpbnQgZHJhbmQ0
OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqICAgX19idWZmZXIsCgkJCSAgIGRvdWJsZSAqICAg
X19yZXN1bHQpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGVyYW5kNDhfciAgKHVuc2lnbmVkIHNo
b3J0IGludCBfX3hzdWJpWzNdLAoJCQkgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICogICBfX2J1ZmZl
ciwKCQkJICAgZG91YmxlICogICBfX3Jlc3VsdCkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQg
bHJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqICAgX19idWZmZXIsCgkJCSAgIGxvbmcg
aW50ICogICBfX3Jlc3VsdCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICAodW5z
aWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKiAg
IF9fYnVmZmVyLAoJCQkgICBsb25nIGludCAqICAgX19yZXN1bHQpICB0aHJvdyAoKSAgOwoKIApl
eHRlcm4gaW50IG1yYW5kNDhfciAgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKiAgIF9fYnVmZmVyLAoJ
CQkgICBsb25nIGludCAqICAgX19yZXN1bHQpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGpyYW5k
NDhfciAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAoJCQkgICBzdHJ1Y3QgZHJhbmQ0
OF9kYXRhICogICBfX2J1ZmZlciwKCQkJICAgbG9uZyBpbnQgKiAgIF9fcmVzdWx0KSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIGludCBzcmFuZDQ4X3IgIChsb25nIGludCBfX3NlZWR2YWwsIHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgc2VlZDQ4
X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAoJCQkgIHN0cnVjdCBkcmFuZDQ4
X2RhdGEgKl9fYnVmZmVyKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICAodW5z
aWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
YnVmZmVyKSAgdGhyb3cgKCkgIDsKCgoKCgoKCiAKZXh0ZXJuIHZvaWQgKiAgbWFsbG9jICAoc2l6
ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAoc2l6ZV90
IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpICB0aHJvdyAoKSAgOwoKCgogCgpleHRlcm4gdm9pZCAq
ICByZWFsbG9jICAodm9pZCAqICBfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CiAK
ZXh0ZXJuIHZvaWQgZnJlZSAgKHZvaWQgKiAgX19wdHIpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJu
IHZvaWQgY2ZyZWUgICh2b2lkICogIF9fcHRyKSAgdGhyb3cgKCkgIDsKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYWxsb2NhLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xp
Yi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYu
aCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51
eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYx
ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoj
IDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvYWxwaGEt
cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoK
IAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42
Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVk
aGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcg
Ii91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjUgIi91c3IvaW5jbHVk
ZS9hbGxvY2EuaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoKIAoKCiAKZXh0ZXJuIHZvaWQgKiAgYWxs
b2NhICAoc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CgoKCgoKfSAKCgojIDQ5MiAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCiAKZXh0ZXJuIHZvaWQgKiAgdmFsbG9jICAoc2l6ZV90
IF9fc2l6ZSkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIHZvaWQgYWJvcnQgICh2b2lkKSAgdGhy
b3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKIApleHRlcm4gaW50IGF0
ZXhpdCAgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIGlu
dCBfX29uX2V4aXQgICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICogIF9fYXJn
KSwKCQkJICAgdm9pZCAqICBfX2FyZykgIHRocm93ICgpICA7CmV4dGVybiBpbnQgb25fZXhpdCAg
KHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKiAgX19hcmcpLAoJCQkgdm9pZCAq
ICBfX2FyZykgIHRocm93ICgpICA7CgoKIAoKCmV4dGVybiB2b2lkIGV4aXQgIChpbnQgX19zdGF0
dXMpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCgoKCgog
CmV4dGVybiBjaGFyICpnZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgIHRocm93ICgpICA7
CgogCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52ICAoX19jb25zdCBjaGFyICpfX25hbWUp
ICB0aHJvdyAoKSAgOwoKCiAKIAoKZXh0ZXJuIGludCBwdXRlbnYgIChfX2NvbnN0IGNoYXIgKl9f
c3RyaW5nKSAgdGhyb3cgKCkgIDsKCgoKIAoKZXh0ZXJuIGludCBzZXRlbnYgIChfX2NvbnN0IGNo
YXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLAoJCQlpbnQgX19yZXBsYWNlKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgdW5zZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg
IHRocm93ICgpICA7CgoKCiAKCgpleHRlcm4gaW50IGNsZWFyZW52ICAodm9pZCkgIHRocm93ICgp
ICA7CgoKCgogCgoKCmV4dGVybiBjaGFyICpta3RlbXAgIChjaGFyICpfX3RlbXBsYXRlKSAgdGhy
b3cgKCkgIDsKCiAKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAgKGNoYXIgKl9fdGVtcGxhdGUpICB0
aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgc3lzdGVtICAoX19jb25zdCBjaGFyICpfX2NvbW1h
bmQpICB0aHJvdyAoKSAgOwoKCgoKCgoKCgoKIAoKCgoKCmV4dGVybiBjaGFyICpyZWFscGF0aCAg
KF9fY29uc3QgY2hhciAqICAgX19uYW1lLAoJCQkgICAgY2hhciAqICAgX19yZXNvbHZlZCkgIHRo
cm93ICgpICA7CgoKCiAKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpICAoX19jb25zdCB2
b2lkICogLCBfX2NvbnN0IHZvaWQgKiApICA7CgoKCgoKCiAKCmV4dGVybiB2b2lkICogIGJzZWFy
Y2ggIChfX2NvbnN0IHZvaWQgKiAgX19rZXksIF9fY29uc3Qgdm9pZCAqICBfX2Jhc2UsCgkJCSAg
ICAgICBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKCQkJICAgICAgIF9fY29tcGFyX2Zu
X3QgX19jb21wYXIpICA7CgogCgpleHRlcm4gdm9pZCBxc29ydCAgKHZvaWQgKiAgX19iYXNlLCBz
aXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKCQkJICBfX2NvbXBhcl9mbl90IF9fY29tcGFy
KSAgOwoKCiAKZXh0ZXJuIGludCBhYnMgIChpbnQgX194KSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsb25nIGludCBsYWJzICAobG9uZyBpbnQgX194KSAg
dGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCiAKCiAKZXh0ZXJu
IGRpdl90IGRpdiAgKGludCBfX251bWVyLCBpbnQgX19kZW5vbSkgIHRocm93ICgpICAgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYgIChsb25nIGludCBfX251
bWVyLCBsb25nIGludCBfX2Rlbm9tKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgoKCgoKCgogCgoKIAoKCmV4dGVybiBjaGFyICplY3Z0ICAoZG91YmxlIF9f
dmFsdWUsIGludCBfX25kaWdpdCwgaW50ICogICBfX2RlY3B0LAoJCQlpbnQgKiAgIF9fc2lnbikg
IHRocm93ICgpICA7CgogCgoKZXh0ZXJuIGNoYXIgKmZjdnQgIChkb3VibGUgX192YWx1ZSwgaW50
IF9fbmRpZ2l0LCBpbnQgKiAgIF9fZGVjcHQsCgkJCWludCAqICAgX19zaWduKSAgdGhyb3cgKCkg
IDsKCiAKCgpleHRlcm4gY2hhciAqZ2N2dCAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs
IGNoYXIgKl9fYnVmKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNoYXIgKnFlY3Z0ICAobG9uZyBk
b3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqICAgX19kZWNwdCwgaW50ICog
ICBfX3NpZ24pICB0aHJvdyAoKSAgOwpleHRlcm4gY2hhciAqcWZjdnQgIChsb25nIGRvdWJsZSAg
X192YWx1ZSwgaW50IF9fbmRpZ2l0LAoJCQkgaW50ICogICBfX2RlY3B0LCBpbnQgKiAgIF9fc2ln
bikgIHRocm93ICgpICA7CmV4dGVybiBjaGFyICpxZ2N2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVl
LCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSAgdGhyb3cgKCkgIDsKCgoKIAoKZXh0ZXJuIGlu
dCBlY3Z0X3IgIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKiAgIF9fZGVjcHQs
CgkJCWludCAqICAgX19zaWduLCBjaGFyICogICBfX2J1ZiwKCQkJc2l6ZV90IF9fbGVuKSAgdGhy
b3cgKCkgIDsKZXh0ZXJuIGludCBmY3Z0X3IgIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0
LCBpbnQgKiAgIF9fZGVjcHQsCgkJCWludCAqICAgX19zaWduLCBjaGFyICogICBfX2J1ZiwKCQkJ
c2l6ZV90IF9fbGVuKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgcWVjdnRfciAgKGxvbmcgZG91
YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJCSBpbnQgKiAgIF9fZGVjcHQsIGludCAqICAg
X19zaWduLAoJCQkgY2hhciAqICAgX19idWYsIHNpemVfdCBfX2xlbikgIHRocm93ICgpICA7CmV4
dGVybiBpbnQgcWZjdnRfciAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJ
CSBpbnQgKiAgIF9fZGVjcHQsIGludCAqICAgX19zaWduLAoJCQkgY2hhciAqICAgX19idWYsIHNp
emVfdCBfX2xlbikgIHRocm93ICgpICA7CgoKCgogCgpleHRlcm4gaW50IG1ibGVuICAoX19jb25z
dCBjaGFyICpfX3MsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwogCgpleHRlcm4gaW50IG1idG93
YyAgKHdjaGFyX3QgKiAgIF9fcHdjLAoJCQlfX2NvbnN0IGNoYXIgKiAgIF9fcywgc2l6ZV90IF9f
bikgIHRocm93ICgpICA7CiAKCmV4dGVybiBpbnQgd2N0b21iICAoY2hhciAqX19zLCB3Y2hhcl90
IF9fd2NoYXIpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAgKHdjaGFy
X3QgKiAgICBfX3B3Y3MsCgkJCSAgICAgX19jb25zdCBjaGFyICogICBfX3MsIHNpemVfdCBfX24p
ICB0aHJvdyAoKSAgOwogCmV4dGVybiBzaXplX3Qgd2NzdG9tYnMgIChjaGFyICogICBfX3MsCgkJ
CSAgICAgX19jb25zdCB3Y2hhcl90ICogICBfX3B3Y3MsIHNpemVfdCBfX24pICB0aHJvdyAoKSAg
OwoKCgogCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAgKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkg
IHRocm93ICgpICA7CgoKCiMgNzMyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKIyA3NTYg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCiMgNzY2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDMKCgoKCgp9IAoKCiMgMjUgIi9zb2Z0d2FyZS90aGFsaWEvaC9zdGR0eXBlcy5oIiAyCgojIDEg
Ii91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
ZXh0ZXJuICJDIiB7IAoKIAoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGlu
dXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vz
ci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1y
ZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvYWxw
aGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoK
CiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGli
L2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMg
MjgzICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJl
ZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgogCmV4dGVy
biB2b2lkICogIG1lbWNweSAgKHZvaWQgKiAgICBfX2Rlc3QsCgkJCSAgICBfX2NvbnN0IHZvaWQg
KiAgICBfX3NyYywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CiAKCmV4dGVybiB2b2lkICogIG1l
bW1vdmUgICh2b2lkICogIF9fZGVzdCwgX19jb25zdCB2b2lkICogIF9fc3JjLAoJCQkgICAgIHNp
emVfdCBfX24pICB0aHJvdyAoKSAgOwoKIAoKCgpleHRlcm4gdm9pZCAqICBtZW1jY3B5ICAodm9p
ZCAqICBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICBpbnQgX19jLCBzaXpl
X3QgX19uKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gdm9pZCAqICBtZW1zZXQgICh2b2lkICog
IF9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgbWVt
Y21wICAoX19jb25zdCB2b2lkICogIF9fczEsIF9fY29uc3Qgdm9pZCAqICBfX3MyLAoJCQlzaXpl
X3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtY2hyICAoX19jb25zdCB2
b2lkICogIF9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgoKCgoKCgoKIApl
eHRlcm4gY2hhciAqc3RyY3B5ICAoY2hhciAqICAgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAq
ICAgX19zcmMpICB0aHJvdyAoKSAgOwogCmV4dGVybiBjaGFyICpzdHJuY3B5ICAoY2hhciAqICAg
X19kZXN0LAoJCQkgICBfX2NvbnN0IGNoYXIgKiAgIF9fc3JjLCBzaXplX3QgX19uKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIGNoYXIgKnN0cmNhdCAgKGNoYXIgKiAgIF9fZGVzdCwKCQkJICBfX2Nv
bnN0IGNoYXIgKiAgIF9fc3JjKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gY2hhciAqc3RybmNhdCAg
KGNoYXIgKiAgIF9fZGVzdCwKCQkJICAgX19jb25zdCBjaGFyICogICBfX3NyYywgc2l6ZV90IF9f
bikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgc3RyY21wICAoX19jb25zdCBjaGFyICpfX3Mx
LCBfX2NvbnN0IGNoYXIgKl9fczIpICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgc3RybmNtcCAg
KF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIGludCBzdHJjb2xsICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2Nv
bnN0IGNoYXIgKl9fczIpICB0aHJvdyAoKSAgOwogCmV4dGVybiBzaXplX3Qgc3RyeGZybSAgKGNo
YXIgKiAgIF9fZGVzdCwKCQkJICAgIF9fY29uc3QgY2hhciAqICAgX19zcmMsIHNpemVfdCBfX24p
ICB0aHJvdyAoKSAgOwoKIyAxMDcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgogCmV4dGVy
biBjaGFyICpfX3N0cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKZXh0ZXJu
IGNoYXIgKnN0cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKCgogCgoKCgoK
CiMgMTQzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgogCmV4dGVybiBjaGFyICpzdHJjaHIg
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7CiAKZXh0ZXJuIGNoYXIg
KnN0cnJjaHIgIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7CgoKCgoK
CgogCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBj
aGFyICpfX3JlamVjdCkgIHRocm93ICgpICA7CiAKCmV4dGVybiBzaXplX3Qgc3Ryc3BuICAoX19j
b25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpICB0aHJvdyAoKSAgOwogCmV4
dGVybiBjaGFyICpzdHJwYnJrICAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19h
Y2NlcHQpICB0aHJvdyAoKSAgOwogCmV4dGVybiBjaGFyICpzdHJzdHIgIChfX2NvbnN0IGNoYXIg
Kl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpICB0aHJvdyAoKSAgOwoKCgoKCgoK
CgogCmV4dGVybiBjaGFyICpzdHJ0b2sgIChjaGFyICogICBfX3MsCgkJCSAgX19jb25zdCBjaGFy
ICogICBfX2RlbGltKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cnRva19yICAo
Y2hhciAqICAgX19zLAoJCQkgICAgICBfX2NvbnN0IGNoYXIgKiAgIF9fZGVsaW0sCgkJCSAgICAg
IGNoYXIgKiogICBfX3NhdmVfcHRyKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBjaGFyICpzdHJ0b2tf
ciAgKGNoYXIgKiAgIF9fcywKCQkJICAgIF9fY29uc3QgY2hhciAqICAgX19kZWxpbSwKCQkJICAg
IGNoYXIgKiogICBfX3NhdmVfcHRyKSAgdGhyb3cgKCkgIDsKCgojIDIwMyAiL3Vzci9pbmNsdWRl
L3N0cmluZy5oIiAzCgoKCiAKZXh0ZXJuIHNpemVfdCBzdHJsZW4gIChfX2NvbnN0IGNoYXIgKl9f
cykgIHRocm93ICgpICA7CgoKCgoKCgoKIApleHRlcm4gY2hhciAqc3RyZXJyb3IgIChpbnQgX19l
cnJudW0pICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGNoYXIgKl9fc3RyZXJyb3JfciAgKGludCBf
X2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgIHRocm93ICgpICA7CmV4dGVy
biBjaGFyICpzdHJlcnJvcl9yICAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9f
YnVmbGVuKSAgdGhyb3cgKCkgIDsKCgogCgpleHRlcm4gdm9pZCBfX2J6ZXJvICAodm9pZCAqICBf
X3MsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHZvaWQgYmNvcHkgIChfX2Nv
bnN0IHZvaWQgKiAgX19zcmMsIHZvaWQgKiAgX19kZXN0LCBzaXplX3QgX19uKSAgdGhyb3cgKCkg
IDsKCiAKZXh0ZXJuIHZvaWQgYnplcm8gICh2b2lkICogIF9fcywgc2l6ZV90IF9fbikgIHRocm93
ICgpICA7CgogCmV4dGVybiBpbnQgYmNtcCAgKF9fY29uc3Qgdm9pZCAqICBfX3MxLCBfX2NvbnN0
IHZvaWQgKiAgX19zMiwgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiBjaGFyICpp
bmRleCAgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJu
IGNoYXIgKnJpbmRleCAgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSAgdGhyb3cgKCkgIDsK
CiAKCmV4dGVybiBpbnQgX19mZnMgIChpbnQgX19pKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9f
ICgoY29uc3QpKTsKZXh0ZXJuIGludCBmZnMgIChpbnQgX19pKSAgdGhyb3cgKCkgICBfX2F0dHJp
YnV0ZV9fICgoY29uc3QpKTsKCiAKCgoKCgoKCgoKIApleHRlcm4gaW50IF9fc3RyY2FzZWNtcCAg
KF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKSAgdGhyb3cgKCkgIDsKZXh0
ZXJuIGludCBzdHJjYXNlY21wICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9f
czIpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHN0cm5jYXNlY21wICAoX19jb25zdCBjaGFy
ICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCgkJCSAgICAgc2l6ZV90IF9fbikgIHRocm93ICgp
ICA7CgoKIyAyNzcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgogCgpleHRlcm4gY2hhciAq
c3Ryc2VwICAoY2hhciAqKiAgIF9fc3RyaW5ncCwKCQkJICBfX2NvbnN0IGNoYXIgKiAgIF9fZGVs
aW0pICB0aHJvdyAoKSAgOwoKCiMgMzE5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKCiMg
MzQ3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKfSAKCgojIDI2ICIvc29mdHdhcmUvdGhh
bGlhL2gvc3RkdHlwZXMuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5ncy5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1s
aW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIv
dXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9z
dGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2FscGhh
LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9h
bHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgog
CgoKIyAxODggIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42
Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3IvbGliL2djYy1s
aWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
IyAyODMgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvYWxwaGEt
cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiMgMjQgIi91c3IvaW5jbHVkZS9zdHJpbmdzLmgiIDIgMwoKCmV4dGVy
biAiQyIgeyAKCiAKZXh0ZXJuIGludCBiY21wICAoX19jb25zdCB2b2lkICogIF9fczEsIF9fY29u
c3Qgdm9pZCAqICBfX3MyLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQg
YmNvcHkgIChfX2NvbnN0IHZvaWQgKiAgX19zcmMsIHZvaWQgKiAgX19kZXN0LCBzaXplX3QgX19u
KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgYnplcm8gICh2b2lkICogIF9fcywgc2l6ZV90
IF9fbikgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IGZmcyAgKGludCBfX2kpICB0aHJvdyAo
KSAgOwoKIApleHRlcm4gY2hhciAqaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykg
IHRocm93ICgpICA7CgogCmV4dGVybiBjaGFyICpyaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywg
aW50IF9fYykgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgc3RyY2FzZWNtcCAgKF9fY29uc3Qg
Y2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGlu
dCBzdHJuY2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAoJ
CQkgICAgIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKfSAKCgojIDI3ICIvc29mdHdhcmUvdGhh
bGlhL2gvc3RkdHlwZXMuaCIgMgoKCgoKCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCgoKIyAxICIv
dXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhh
dC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAK
CgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgog
CgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkx
LjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIv
YWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoK
IAoKCgoKIAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3Mt
Mi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvYWxw
aGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoK
IyAzMTcgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzMgIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVk
aGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhh
dC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS92YS1hbHBoYS5oIiAxIDMKIAoKIAoKCgoKIAoK
CgoKIAoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICBjaGFyICpfX2Jhc2U7CQkJIAogIGludCBfX29m
ZnNldDsJCQkgCn0gX19nbnVjX3ZhX2xpc3Q7CgoKCgogCgoKIyAxMjggIi91c3IvbGliL2djYy1s
aWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3ZhLWFscGhhLmgiIDMK
CiMgMzYgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9p
bmNsdWRlL3N0ZGFyZy5oIiAyIDMKCiMgMTI2ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhh
dC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKCgoKCgojIDIwMiAi
L3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUv
c3RkYXJnLmgiIDMKCgoKCiMgMzggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCgoKCgoK
IAp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5j
bHVkZS9fR19jb25maWcuaCIgMSAzCiAKCgoKCgogCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoK
CgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0y
LjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9s
aWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVm
LmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91
c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0
ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1s
aW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2
OSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCAgd2ludF90OwoK
CgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3Mt
Mi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMg
MTQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5
cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7
CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18p
KSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKIAoKCgoKCgoKCgoKCgoKCiMgMzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKCgoKCgoK
CgoKCgoKCgoKCiAKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdj
cy0yLjkxLjY2L2luY2x1ZGUvc3RkYXJnLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3Mt
Mi45MS42Ni9pbmNsdWRlL3ZhLWFscGhhLmgiIDEgMwogCgogCgoKCgogCgojIDI1ICIvdXNyL2xp
Yi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS92YS1hbHBo
YS5oIiAzCgoKIAoKCiMgMTI4ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9l
Z2NzLTIuOTEuNjYvaW5jbHVkZS92YS1hbHBoYS5oIiAzCgojIDM2ICIvdXNyL2xpYi9nY2MtbGli
L2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRhcmcuaCIgMiAzCgoj
IDEyNiAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2lu
Y2x1ZGUvc3RkYXJnLmgiIDMKCgoKCgoKCgoKIyAyMDIgIi91c3IvbGliL2djYy1saWIvYWxwaGEt
cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoKCgojIDQ4ICIv
dXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCgoKCgoKCgojIDY3ICIvdXNyL2luY2x1ZGUvbGliaW8u
aCIgMwoKCiAKCgoKCgoKCgoKCgoKCgoKCgojIDk4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
c3RydWN0IF9JT19qdW1wX3Q7ICBzdHJ1Y3QgX0lPX0ZJTEU7CgogCgoKCgoKCgp0eXBlZGVmIHZv
aWQgX0lPX2xvY2tfdDsKCgoKIAoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFy
a2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwogICAKCiAgIAogIGludCBfcG9z
OwojIDE4NiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKCn07CgpzdHJ1Y3QgX0lPX0ZJTEUgewog
IGludCBfZmxhZ3M7CQkgCgoKICAgCiAgIAogIGNoYXIqIF9JT19yZWFkX3B0cjsJIAogIGNoYXIq
IF9JT19yZWFkX2VuZDsJIAogIGNoYXIqIF9JT19yZWFkX2Jhc2U7CSAKICBjaGFyKiBfSU9fd3Jp
dGVfYmFzZTsJIAogIGNoYXIqIF9JT193cml0ZV9wdHI7CSAKICBjaGFyKiBfSU9fd3JpdGVfZW5k
OwkgCiAgY2hhciogX0lPX2J1Zl9iYXNlOwkgCiAgY2hhciogX0lPX2J1Zl9lbmQ7CSAKICAgCiAg
Y2hhciAqX0lPX3NhdmVfYmFzZTsgIAogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsgICAKICBjaGFy
ICpfSU9fc2F2ZV9lbmQ7ICAKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1
Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9f
b2ZmX3QgICBfb2xkX29mZnNldDsgIAoKCiAgIAogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1u
OwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKICAg
CgogIF9JT19sb2NrX3QgKl9sb2NrOwoKCgoKCgoKCiAgX19vZmY2NF90ICAgX29mZnNldDsKICAg
CiAgaW50IF91bnVzZWQyWzE2XTsKCn07CgoKCgoKc3RydWN0IF9JT19GSUxFX3BsdXM7CmV4dGVy
biBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9f
RklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9J
T18yXzFfc3RkZXJyXzsKCgoKCgoKCgoKCgogCgogCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3Jl
YWRfZm4gICh2b2lkICogIF9fY29va2llLCBjaGFyICpfX2J1ZiwKCQkJCSAgICAgICBzaXplX3Qg
X19uYnl0ZXMpICA7CgogCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAgKHZv
aWQgKiAgX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCgkJCQkgICAgICBzaXplX3QgX19u
KSAgOwoKIAoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAgKHZvaWQgKiAgX19jb29raWUs
IF9fb2ZmX3QgICBfX3BvcywgaW50IF9fdykgIDsKCiAKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9m
biAgKHZvaWQgKiAgX19jb29raWUpICA7CgoKIyAzMTEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAz
CgoKCgpleHRlcm4gIkMiIHsKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93ICAoX0lPX0ZJTEUgKikg
IHRocm93ICgpICA7CmV4dGVybiBpbnQgX191ZmxvdyAgKF9JT19GSUxFICopICB0aHJvdyAoKSAg
OwpleHRlcm4gaW50IF9fb3ZlcmZsb3cgIChfSU9fRklMRSAqLCBpbnQpICB0aHJvdyAoKSAgOwoK
CgoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBfSU9fZ2V0YyAgKF9JT19GSUxFICpfX2ZwKSAgdGhy
b3cgKCkgIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAgKGludCBfX2MsIF9JT19GSUxFICpfX2ZwKSAg
dGhyb3cgKCkgIDsKZXh0ZXJuIGludCBfSU9fZmVvZiAgKF9JT19GSUxFICpfX2ZwKSAgdGhyb3cg
KCkgIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAg
OwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAo
KSAgOwoKIAoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlICAoX0lPX0ZJTEUgKikgIHRocm93
ICgpICA7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAgKF9JT19GSUxFICopICB0aHJvdyAo
KSAgOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgdGhyb3cgKCkg
IDsKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAgKF9JT19GSUxFICogICwgY29u
c3QgY2hhciAqICAsCgkJCSAgICAgX19nbnVjX3ZhX2xpc3QgLCBpbnQgKiAgKSAgdGhyb3cgKCkg
IDsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgIChfSU9fRklMRSAqICAsIGNvbnN0IGNoYXIgKiAg
LAoJCQkgICAgICBfX2dudWNfdmFfbGlzdCApICB0aHJvdyAoKSAgOwpleHRlcm4gX19zc2l6ZV90
ICAgX0lPX3BhZG4gIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCAgKSAgdGhyb3cgKCkgIDsK
ZXh0ZXJuIHNpemVfdCAgIF9JT19zZ2V0biAgKF9JT19GSUxFICosIHZvaWQgKiwgc2l6ZV90ICAp
ICB0aHJvdyAoKSAgOwoKZXh0ZXJuIF9fb2ZmNjRfdCAgIF9JT19zZWVrb2ZmICAoX0lPX0ZJTEUg
KiwgX19vZmY2NF90ICAsIGludCwgaW50KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIF9fb2ZmNjRfdCAg
IF9JT19zZWVrcG9zICAoX0lPX0ZJTEUgKiwgX19vZmY2NF90ICAsIGludCkgIHRocm93ICgpICA7
CgpleHRlcm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAgKF9JT19GSUxFICopICB0aHJvdyAo
KSAgOwoKCn0KCgoKIyA1NyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCiAKCnR5cGVkZWYg
X19vZmZfdCAgZnBvc190OwoKCgoKCgoKIAoKCgoKCiAKCgoKCgogCgoKCgoKCiAKCgoKCgoKCiAK
CgoKCiAKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDExMCAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDIgMwoKCgogCmV4dGVybiBGSUxFICpzdGRpbjsJCSAKZXh0ZXJuIEZJTEUgKnN0ZG91
dDsJCSAKZXh0ZXJuIEZJTEUgKnN0ZGVycjsJCSAKCgogCmV4dGVybiBpbnQgcmVtb3ZlICAoX19j
b25zdCBjaGFyICpfX2ZpbGVuYW1lKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IHJlbmFtZSAg
KF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpICB0aHJvdyAoKSAgOwoK
CiAKCmV4dGVybiBGSUxFICp0bXBmaWxlICAodm9pZCkgIHRocm93ICgpICA7CgoKCgoKCgoKCgog
CmV4dGVybiBjaGFyICp0bXBuYW0gIChjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVy
biBjaGFyICp0bXBuYW1fciAgKGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKCgogCgoKCgoKCmV4
dGVybiBjaGFyICp0ZW1wbmFtICAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpf
X3BmeCkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBmY2xvc2UgIChGSUxFICpfX3N0cmVh
bSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBmZmx1c2ggIChGSUxFICpfX3N0cmVhbSkgIHRo
cm93ICgpICA7CgoKIApleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFt
KSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKIApleHRlcm4gRklMRSAqZm9wZW4gIChfX2NvbnN0IGNo
YXIgKiAgIF9fZmlsZW5hbWUsCgkJCSBfX2NvbnN0IGNoYXIgKiAgIF9fbW9kZXMpICB0aHJvdyAo
KSAgOwogCmV4dGVybiBGSUxFICpmcmVvcGVuICAoX19jb25zdCBjaGFyICogICBfX2ZpbGVuYW1l
LAoJCQkgICBfX2NvbnN0IGNoYXIgKiAgIF9fbW9kZXMsCgkJCSAgIEZJTEUgKiAgIF9fc3RyZWFt
KSAgdGhyb3cgKCkgIDsKIyAxOTcgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCgoKCgoKCgog
CmV4dGVybiBGSUxFICpmZG9wZW4gIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSAg
dGhyb3cgKCkgIDsKCgojIDIyMyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKIAoKZXh0ZXJu
IHZvaWQgc2V0YnVmICAoRklMRSAqICAgX19zdHJlYW0sIGNoYXIgKiAgIF9fYnVmKSAgdGhyb3cg
KCkgIDsKIAoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAgKEZJTEUgKiAgIF9fc3RyZWFtLCBjaGFyICog
ICBfX2J1ZiwKCQkJIGludCBfX21vZGVzLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCgogCgpl
eHRlcm4gdm9pZCBzZXRidWZmZXIgIChGSUxFICogICBfX3N0cmVhbSwgY2hhciAqICAgX19idWYs
CgkJCSAgICBzaXplX3QgX19zaXplKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgc2V0bGlu
ZWJ1ZiAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IGZwcmlu
dGYgIChGSUxFICogICBfX3N0cmVhbSwKCQkJIF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4u
LikgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBwcmludGYgIChfX2NvbnN0IGNoYXIgKiAgIF9f
Zm9ybWF0LCAuLi4pICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgc3ByaW50ZiAgKGNoYXIgKiAg
IF9fcywKCQkJIF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4uLikgIHRocm93ICgpICA7Cgog
CmV4dGVybiBpbnQgdmZwcmludGYgIChGSUxFICogICBfX3MsCgkJCSAgX19jb25zdCBjaGFyICog
ICBfX2Zvcm1hdCwKCQkJICBfX2dudWNfdmFfbGlzdCAgX19hcmcpICB0aHJvdyAoKSAgOwogCmV4
dGVybiBpbnQgdnByaW50ZiAgKF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsCgkJCSBfX2dudWNf
dmFfbGlzdCAgX19hcmcpICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgdnNwcmludGYgIChjaGFy
ICogICBfX3MsCgkJCSAgX19jb25zdCBjaGFyICogICBfX2Zvcm1hdCwKCQkJICBfX2dudWNfdmFf
bGlzdCAgX19hcmcpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBzbnByaW50ZiAgKGNoYXIg
KiAgIF9fcywgc2l6ZV90IF9fbWF4bGVuLAoJCQkgIF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQs
IC4uLikgIHRocm93ICgpICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmlu
dGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgX192c25wcmludGYgIChjaGFyICogICBfX3MsIHNp
emVfdCBfX21heGxlbiwKCQkJICAgICBfX2NvbnN0IGNoYXIgKiAgIF9fZm9ybWF0LAoJCQkgICAg
IF9fZ251Y192YV9saXN0ICBfX2FyZykgIHRocm93ICgpICAKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKZXh0ZXJuIGludCB2c25wcmludGYgIChj
aGFyICogICBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJICAgX19jb25zdCBjaGFyICogICBfX2Zv
cm1hdCwKCQkJICAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwoKCiMgMzAyICIvdXNy
L2luY2x1ZGUvc3RkaW8uaCIgMwoKCgogCmV4dGVybiBpbnQgZnNjYW5mICAoRklMRSAqICAgX19z
dHJlYW0sCgkJCV9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4uLikgIHRocm93ICgpICA7CiAK
ZXh0ZXJuIGludCBzY2FuZiAgKF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4uLikgIHRocm93
ICgpICA7CiAKZXh0ZXJuIGludCBzc2NhbmYgIChfX2NvbnN0IGNoYXIgKiAgIF9fcywKCQkJX19j
b25zdCBjaGFyICogICBfX2Zvcm1hdCwgLi4uKSAgdGhyb3cgKCkgIDsKCiMgMzMwICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwoKCgogCmV4dGVybiBpbnQgZmdldGMgIChGSUxFICpfX3N0cmVhbSkg
IHRocm93ICgpICA7CmV4dGVybiBpbnQgZ2V0YyAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkg
IDsKCiAKZXh0ZXJuIGludCBnZXRjaGFyICAodm9pZCkgIHRocm93ICgpICA7CgogCgoKCgogCmV4
dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0
ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkICAodm9pZCkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJu
IGludCBmZ2V0Y191bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApl
eHRlcm4gaW50IGZwdXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwpl
eHRlcm4gaW50IHB1dGMgIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7Cgog
CmV4dGVybiBpbnQgcHV0Y2hhciAgKGludCBfX2MpICB0aHJvdyAoKSAgOwoKIAoKCgoKIApleHRl
cm4gaW50IGZwdXRjX3VubG9ja2VkICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAo
KSAgOwoKCgogCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAgKGludCBfX2MsIEZJTEUgKl9fc3Ry
ZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkICAoaW50IF9fYykg
IHRocm93ICgpICA7CgoKCgogCmV4dGVybiBpbnQgZ2V0dyAgKEZJTEUgKl9fc3RyZWFtKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdXR3ICAoaW50IF9fdywgRklMRSAqX19zdHJlYW0pICB0
aHJvdyAoKSAgOwoKCgogCmV4dGVybiBjaGFyICpmZ2V0cyAgKGNoYXIgKiAgIF9fcywgaW50IF9f
biwKCQkJIEZJTEUgKiAgIF9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKCgoKCiAKCmV4dGVybiBj
aGFyICpnZXRzICAoY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKCgojIDQyMCAiL3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDMKCgoKIApleHRlcm4gaW50IGZwdXRzICAoX19jb25zdCBjaGFyICogICBfX3Ms
CgkJICAgICAgIEZJTEUgKiAgIF9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKCgoKCiAKZXh0ZXJu
IGludCBwdXRzICAoX19jb25zdCBjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGlu
dCB1bmdldGMgIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKIApleHRl
cm4gc2l6ZV90IGZyZWFkICAodm9pZCAqICAgX19wdHIsIHNpemVfdCBfX3NpemUsCgkJCSAgc2l6
ZV90IF9fbiwgRklMRSAqICAgX19zdHJlYW0pICB0aHJvdyAoKSAgOwogCmV4dGVybiBzaXplX3Qg
ZndyaXRlICAoX19jb25zdCB2b2lkICogICBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJICAgc2l6
ZV90IF9fbiwgRklMRSAqICAgX19zKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBzaXplX3QgZnJl
YWRfdW5sb2NrZWQgICh2b2lkICogICBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJCSAgIHNpemVf
dCBfX24sIEZJTEUgKiAgIF9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHNpemVfdCBmd3Jp
dGVfdW5sb2NrZWQgIChfX2NvbnN0IHZvaWQgKiAgIF9fcHRyLAoJCQkJICAgIHNpemVfdCBfX3Np
emUsIHNpemVfdCBfX24sCgkJCQkgICAgRklMRSAqICAgX19zdHJlYW0pICB0aHJvdyAoKSAgOwoK
CgogCmV4dGVybiBpbnQgZnNlZWsgIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYsIGlu
dCBfX3doZW5jZSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsICAoRklMRSAq
X19zdHJlYW0pICB0aHJvdyAoKSAgOwogCmV4dGVybiB2b2lkIHJld2luZCAgKEZJTEUgKl9fc3Ry
ZWFtKSAgdGhyb3cgKCkgIDsKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCmV4dGVy
biBpbnQgZmdldHBvcyAgKEZJTEUgKiAgIF9fc3RyZWFtLAoJCQkgZnBvc190ICogICBfX3Bvcykg
IHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBmc2V0cG9zICAoRklMRSAqX19zdHJlYW0sIF9fY29u
c3QgZnBvc190ICpfX3BvcykgIHRocm93ICgpICA7CiMgNTE5ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMwoKCiMgNTI5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCiAKZXh0ZXJuIHZvaWQgY2xl
YXJlcnIgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBmZW9mICAo
RklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgZmVycm9yICAoRklMRSAq
X19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQg
IChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAg
KEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQg
IChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIHZvaWQgcGVycm9yICAo
X19jb25zdCBjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBpbnQgc3lzX25lcnI7
CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qgc3lzX2Vycmxpc3RbXTsKCgoKCgoKCgogCmV4
dGVybiBpbnQgZmlsZW5vICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgogCmV4dGVy
biBpbnQgZmlsZW5vX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgoK
CiAKZXh0ZXJuIEZJTEUgKnBvcGVuICAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3Qg
Y2hhciAqX19tb2RlcykgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcGNsb3NlICAoRklMRSAq
X19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgoKIApleHRlcm4gY2hhciAqY3Rlcm1pZCAgKGNoYXIg
Kl9fcykgIHRocm93ICgpICA7CgoKCgoKCgoKCiMgNjAzICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MwoKCgoKIAoKIApleHRlcm4gdm9pZCBmbG9ja2ZpbGUgIChGSUxFICpfX3N0cmVhbSkgIHRocm93
ICgpICA7CgogCgpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAgKEZJTEUgKl9fc3RyZWFtKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgIChGSUxFICpfX3N0cmVhbSkgIHRo
cm93ICgpICA7CgoKCgoKCgoKCgogCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAx
IDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKaW5saW5lICBpbnQKdnByaW50ZiAo
X19jb25zdCBjaGFyICogICBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSB0aHJvdyAoKSAK
ewogIHJldHVybiB2ZnByaW50ZiAoc3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgogCmlubGluZSAg
aW50CmdldGNoYXIgKHZvaWQpIHRocm93ICgpIAp7CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7
Cn0KCgoKIAppbmxpbmUgIGludApnZXRjX3VubG9ja2VkIChGSUxFICpfX2ZwKSB0aHJvdyAoKSAK
ewogIHJldHVybiAoKCBfX2ZwICktPl9JT19yZWFkX3B0ciA+PSAoIF9fZnAgKS0+X0lPX3JlYWRf
ZW5kID8gX191ZmxvdyAoIF9fZnAgKSA6ICoodW5zaWduZWQgY2hhciAqKSAoIF9fZnAgKS0+X0lP
X3JlYWRfcHRyKyspIDsKfQoKIAppbmxpbmUgIGludApnZXRjaGFyX3VubG9ja2VkICh2b2lkKSB0
aHJvdyAoKSAKewogIHJldHVybiAoKCBzdGRpbiApLT5fSU9fcmVhZF9wdHIgPj0gKCBzdGRpbiAp
LT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93ICggc3RkaW4gKSA6ICoodW5zaWduZWQgY2hhciAqKSAo
IHN0ZGluICktPl9JT19yZWFkX3B0cisrKSA7Cn0KCgoKIAppbmxpbmUgIGludApwdXRjaGFyIChp
bnQgX19jKSB0aHJvdyAoKSAKewogIHJldHVybiBfSU9fcHV0YyAoX19jLCBzdGRvdXQpOwp9CgoK
CiAKaW5saW5lICBpbnQKZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKSAKewogIHJldHVybiAoKCggIF9fc3RyZWFtICktPl9JT193cml0ZV9wdHIgPj0gKCAg
X19zdHJlYW0gKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93ICggIF9fc3RyZWFtICwgKHVu
c2lnbmVkIGNoYXIpICggX19jICkpIDogKHVuc2lnbmVkIGNoYXIpICgqKCAgX19zdHJlYW0gKS0+
X0lPX3dyaXRlX3B0cisrID0gKCBfX2MgKSkpIDsKfQoKCgoKIAppbmxpbmUgIGludApwdXRjX3Vu
bG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgCnsKICByZXR1cm4gKCgo
ICBfX3N0cmVhbSApLT5fSU9fd3JpdGVfcHRyID49ICggIF9fc3RyZWFtICktPl9JT193cml0ZV9l
bmQpID8gX19vdmVyZmxvdyAoICBfX3N0cmVhbSAsICh1bnNpZ25lZCBjaGFyKSAoIF9fYyApKSA6
ICh1bnNpZ25lZCBjaGFyKSAoKiggIF9fc3RyZWFtICktPl9JT193cml0ZV9wdHIrKyA9ICggX19j
ICkpKSA7Cn0KCiAKaW5saW5lICBpbnQKcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykgdGhyb3cg
KCkgCnsKICByZXR1cm4gKCgoICBzdGRvdXQgKS0+X0lPX3dyaXRlX3B0ciA+PSAoICBzdGRvdXQg
KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93ICggIHN0ZG91dCAsICh1bnNpZ25lZCBjaGFy
KSAoIF9fYyApKSA6ICh1bnNpZ25lZCBjaGFyKSAoKiggIHN0ZG91dCApLT5fSU9fd3JpdGVfcHRy
KysgPSAoIF9fYyApKSkgOwp9CgoKCgoKCgoKCgoKCgoKIAppbmxpbmUgIGludApmZW9mX3VubG9j
a2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgCnsKICByZXR1cm4gKCgoIF9fc3RyZWFtICkt
Pl9mbGFncyAmIDB4MTAgKSAhPSAwKSA7Cn0KCiAKaW5saW5lICBpbnQKZmVycm9yX3VubG9ja2Vk
IChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgCnsKICByZXR1cm4gKCgoIF9fc3RyZWFtICktPl9m
bGFncyAmIDB4MjAgKSAhPSAwKSA7Cn0KCgoKCgoKIAoKIyAxNDkgIi91c3IvaW5jbHVkZS9iaXRz
L3N0ZGlvLmgiIDMKCgojIDE2NSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwoKCiAKCiMg
NjMxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCn0gCgoKCgojIDM2ICIvc29mdHdhcmUv
dGhhbGlhL2gvc3RkdHlwZXMuaCIgMgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCnR5cGVkZWYgc2hv
cnQgICBTSE9SVDsKdHlwZWRlZiBsb25nICAgIExPTkc7CnR5cGVkZWYgaW50ICAgICBJTlQ7Cgp0
eXBlZGVmIGZsb2F0ICAgRkxPQVQ7CiAKCgoKCgoKdHlwZWRlZiBkb3VibGUgIERPVUJMRTsKCgoK
CnR5cGVkZWYgRkxPQVQgICBSRUFMOwoKCnR5cGVkZWYgZmxvYXQgICBNQVRIOyAgCgoKCgogCgoK
CgoKIAoKCgoKCiAKCgoKdHlwZWRlZiBzaG9ydCAgIEJPT0xFQU47CnR5cGVkZWYgdm9pZCAqICBQ
VFI7CnR5cGVkZWYgY2hhciAqICBDVExfRkxBRzsKdHlwZWRlZiBjaGFyICAgIENIQVI7CgogCgoK
IAoKCgoKCgoKIAoKIAoKCgoKCgoKIAoKIAoKCgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIFVf
U0hPUlQ7CiAKCiAKCgoKdHlwZWRlZiBpbnQgSU5ERVg7CnR5cGVkZWYgY2hhciBOQU1FWzQwXTsK
IAoKCiAKCgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBVX0NIQVI7CgoKdHlwZWRlZiB2b2lkICAg
ICgqRlVOQykoIHZvaWQpOwp0eXBlZGVmIGNoYXIgICAgU1RSSU5HWzI1Nl07CgoKCnR5cGVkZWYg
c3RydWN0IF9WRUNUT1IKewogICBSRUFMIHgsIHksIHo7Cn0gVkVDVE9SOwoKdHlwZWRlZiBWRUNU
T1IgIFBPSU5UOwp0eXBlZGVmIFZFQ1RPUiBWRVJURVg7CgojIDE2MyAiL3NvZnR3YXJlL3RoYWxp
YS9oL3N0ZHR5cGVzLmgiCgoKdHlwZWRlZiBzdHJ1Y3QgX1ZFQ1Q0RAp7CiAgIFJFQUwgeCwgeSwg
eiwgdzsKfSBWRUNUNEQ7Cgp0eXBlZGVmIHN0cnVjdCBfVkVSVDJECnsKICAgIFJFQUwgdSx2Owp9
IFZFUlQyRDsKCnR5cGVkZWYgc3RydWN0IF9QT0lOVDJECnsKICAgIFJFQUwgeCwgeTsKfSBQT0lO
VDJEOwoKdHlwZWRlZiBSRUFMIE1BVFJJWFs0XVs0XTsKICAgIAoKIAoKCgp0eXBlZGVmIHVuaW9u
IHsKICAgIFJFQUwgICAgYWxsWzE2XTsKICAgIFJFQUwgICAgZWxlbVs0XVs0XTsKfSBUUkFOU0ZP
Uk07CgoKIAoKCmlubGluZSBjb25zdCBjaGFyICpjbGFzc05hbWUoIFZFQ1RPUiApIHsgcmV0dXJu
ICJWRUNUT1IiOyB9Owp9OwppbmxpbmUgY29uc3QgY2hhciAqY2xhc3NOYW1lKCBjb25zdCBQT0lO
VDJEICYgKSB7IHJldHVybiAiUE9JTlQyRCI7IH07CgoKIyAxICIvc29mdHdhcmUvdGhhbGlhL2gv
c3lzcHJvdG9zLnAiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5j
bHVkZS9zeXMvdGltZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCmV4dGVybiAi
QyIgeyAKCgoKCiAKCgojIDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2Vn
Y3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGli
L2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0
LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJl
ZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgojIDE4
OCAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBo
YS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAi
L3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQt
bGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIyAzOCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKIAoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgog
CgoKCgoKIAoKCgoKCgoKIyA1OSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzCgojIDQyICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgogCgoKCgoKCgoKCgoKCgoKIAp0eXBlZGVmIF9fY2xv
Y2tfdCBjbG9ja190OwoKCgoKIyA3MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKIyA4OSAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCiAKc3RydWN0IHRtCnsKICBpbnQgdG1fc2VjOwkJ
CSAKICBpbnQgdG1fbWluOwkJCSAKICBpbnQgdG1faG91cjsJCQkgCiAgaW50IHRtX21kYXk7CQkJ
IAogIGludCB0bV9tb247CQkJIAogIGludCB0bV95ZWFyOwkJCSAKICBpbnQgdG1fd2RheTsJCQkg
CiAgaW50IHRtX3lkYXk7CQkJIAogIGludCB0bV9pc2RzdDsJCQkgCgoKICBsb25nIGludCB0bV9n
bXRvZmY7CQkgCiAgX19jb25zdCBjaGFyICp0bV96b25lOwkgCgoKCgp9OwoKCiAKCmV4dGVybiBj
bG9ja190IGNsb2NrICAodm9pZCkgIHRocm93ICgpICA7CgogCmV4dGVybiB0aW1lX3QgdGltZSAg
KHRpbWVfdCAqX190aW1lcikgIHRocm93ICgpICA7CgogCmV4dGVybiBkb3VibGUgZGlmZnRpbWUg
ICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGltZTApICB0aHJvdyAoKSAgCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gdGltZV90IG1rdGltZSAgKHN0cnVjdCB0
bSAqX190cCkgIHRocm93ICgpICA7CgoKIAoKCmV4dGVybiBzaXplX3Qgc3RyZnRpbWUgIChjaGFy
ICogICBfX3MsIHNpemVfdCBfX21heHNpemUsCgkJCSAgICAgX19jb25zdCBjaGFyICogICBfX2Zv
cm1hdCwKCQkJICAgICBfX2NvbnN0IHN0cnVjdCB0bSAqICAgX190cCkgIHRocm93ICgpICA7CgoK
CgoKCgoKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAgKF9fY29uc3QgdGltZV90ICpfX3Rp
bWVyKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZSAgKF9fY29u
c3QgdGltZV90ICpfX3RpbWVyKSAgdGhyb3cgKCkgIDsKCgogCgpleHRlcm4gc3RydWN0IHRtICpf
X2dtdGltZV9yICAoX19jb25zdCB0aW1lX3QgKiAgIF9fdGltZXIsCgkJCQkgICBzdHJ1Y3QgdG0g
KiAgIF9fdHApICB0aHJvdyAoKSAgOwpleHRlcm4gc3RydWN0IHRtICpnbXRpbWVfciAgKF9fY29u
c3QgdGltZV90ICogICBfX3RpbWVyLAoJCQkJIHN0cnVjdCB0bSAqICAgX190cCkgIHRocm93ICgp
ICA7CgogCgpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWVfciAgKF9fY29uc3QgdGltZV90ICog
ICBfX3RpbWVyLAoJCQkJICAgIHN0cnVjdCB0bSAqICAgX190cCkgIHRocm93ICgpICA7CgoKIAoK
ZXh0ZXJuIGNoYXIgKmFzY3RpbWUgIChfX2NvbnN0IHN0cnVjdCB0bSAqX190cCkgIHRocm93ICgp
ICA7CgogCmV4dGVybiBjaGFyICpjdGltZSAgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSAgdGhy
b3cgKCkgIDsKCgogCgogCgpleHRlcm4gY2hhciAqYXNjdGltZV9yICAoX19jb25zdCBzdHJ1Y3Qg
dG0gKiAgIF9fdHAsCgkJCSAgICAgY2hhciAqICAgX19idWYpICB0aHJvdyAoKSAgOwoKIApleHRl
cm4gY2hhciAqY3RpbWVfciAgKF9fY29uc3QgdGltZV90ICogICBfX3RpbWVyLAoJCQkgICBjaGFy
ICogICBfX2J1ZikgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGNoYXIgKl9fdHpuYW1lWzJdOwkg
CmV4dGVybiBpbnQgX19kYXlsaWdodDsJCSAKZXh0ZXJuIGxvbmcgaW50IF9fdGltZXpvbmU7CSAK
CgoKIApleHRlcm4gY2hhciAqdHpuYW1lWzJdOwoKIAoKZXh0ZXJuIHZvaWQgdHpzZXQgICh2b2lk
KSAgdGhyb3cgKCkgIDsKCgoKZXh0ZXJuIGludCBkYXlsaWdodDsKZXh0ZXJuIGxvbmcgaW50IHRp
bWV6b25lOwoKCgogCgpleHRlcm4gaW50IHN0aW1lICAoX19jb25zdCB0aW1lX3QgKl9fd2hlbikg
IHRocm93ICgpICA7CgoKCiAKCgoKCgoKIAoKCiAKZXh0ZXJuIHRpbWVfdCB0aW1lZ20gIChzdHJ1
Y3QgdG0gKl9fdHApICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdGltZV90IHRpbWVsb2NhbCAgKHN0
cnVjdCB0bSAqX190cCkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgZHlzaXplICAoaW50IF9f
eWVhcikgIHRocm93ICgpICA7CgoKCgogCmV4dGVybiBpbnQgbmFub3NsZWVwICAoX19jb25zdCBz
dHJ1Y3QgdGltZXNwZWMgKl9fcmVxdWVzdGVkX3RpbWUsCgkJCSAgIHN0cnVjdCB0aW1lc3BlYyAq
X19yZW1haW5pbmcpICB0aHJvdyAoKSAgOwoKCgojIDI2NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MwoKCiMgMjc0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCn0gCgoKCgojIDI0ICIvdXNyL2lu
Y2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgojIDQzICIvdXNyL2luY2x1ZGUvYml0cy90aW1l
LmgiIDMKCgoKCgoKCgogCgpzdHJ1Y3QgdGltZXZhbAogIHsKICAgIF9fdGltZV90IHR2X3NlYzsJ
CSAKICAgIF9fdGltZV90IHR2X3VzZWM7CQkgCiAgfTsKCgojIDI4ICIvdXNyL2luY2x1ZGUvc3lz
L3RpbWUuaCIgMiAzCgoKCmV4dGVybiAiQyIgeyAKCiAKCgoKCgoKCgoKCiAKCnN0cnVjdCB0aW1l
em9uZQogIHsKICAgIGludCB0el9taW51dGVzd2VzdDsJCSAKICAgIGludCB0el9kc3R0aW1lOwkJ
IAogIH07CgogCgoKCgpleHRlcm4gaW50IGdldHRpbWVvZmRheSAgKHN0cnVjdCB0aW1ldmFsICpf
X3R2LAoJCQkgICAgICBzdHJ1Y3QgdGltZXpvbmUgKl9fdHopICB0aHJvdyAoKSAgOwoKIAoKZXh0
ZXJuIGludCBzZXR0aW1lb2ZkYXkgIChfX2NvbnN0IHN0cnVjdCB0aW1ldmFsICpfX3R2LAoJCQkg
ICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lem9uZSAqX190eikgIHRocm93ICgpICA7CgogCgoKCmV4
dGVybiBpbnQgYWRqdGltZSAgKF9fY29uc3Qgc3RydWN0IHRpbWV2YWwgKl9fZGVsdGEsCgkJCSBz
dHJ1Y3QgdGltZXZhbCAqX19vbGRkZWx0YSkgIHRocm93ICgpICA7CgoKIAplbnVtIF9faXRpbWVy
X3doaWNoCiAgewogICAgIAogICAgSVRJTUVSX1JFQUwgPSAwLAoKICAgICAKICAgIElUSU1FUl9W
SVJUVUFMID0gMSwKCiAgICAgCgogICAgSVRJTUVSX1BST0YgPSAyCgogIH07CgogCgpzdHJ1Y3Qg
aXRpbWVydmFsCiAgewogICAgIAogICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAg
CiAgICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKICB9OwoKIAoKZXh0ZXJuIGludCBnZXRpdGlt
ZXIgIChlbnVtIF9faXRpbWVyX3doaWNoIF9fd2hpY2gsCgkJCSAgIHN0cnVjdCBpdGltZXJ2YWwg
Kl9fdmFsdWUpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBpbnQgc2V0aXRpbWVyICAoZW51bSBf
X2l0aW1lcl93aGljaCBfX3doaWNoLAoJCQkgICBfX2NvbnN0IHN0cnVjdCBpdGltZXJ2YWwgKl9f
bmV3LAoJCQkgICBzdHJ1Y3QgaXRpbWVydmFsICpfX29sZCkgIHRocm93ICgpICA7CgogCgpleHRl
cm4gaW50IHV0aW1lcyAgKF9fY29uc3QgY2hhciAqX19maWxlLCBzdHJ1Y3QgdGltZXZhbCBfX3R2
cFsyXSkgIHRocm93ICgpICA7CgoKIAoKCgoKCgoKCiMgMTMzICIvdXNyL2luY2x1ZGUvc3lzL3Rp
bWUuaCIgMwoKIyAxNDIgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCgp9IAoKCiMgNzAgIi9z
b2Z0d2FyZS90aGFsaWEvaC9zeXNwcm90b3MucCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCiAKCgog
CgoKCiAKCgogCgoKIAoKCiAKCgoKIAoKCgogCgoKCiAKCgoKIAoKCgoKCgogCgoKIAoKCgoKIAoK
CiAKCgogCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvcG9zaXhfb3B0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgogCgoK
IAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgoKIAoKCiAKCgogCgoK
IAoKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKIAoKIAoKCiAKCiAKCgogCgoKIAoKCgoKCiMgMTc1
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCiAKCgoKCiAKCgoKCgogCgoKCgoKCgoKCgoj
IDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvYWxwaGEt
cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoK
CgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45
MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2Nz
LTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2Nj
LWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMK
CgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgv
ZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxp
Yi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgog
CgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkx
LjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxOTkg
Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKIyAyMzEgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMwoKCgoKCgoKCgogCgoKCgoKCiAKZXh0ZXJuIGludCBhY2Nlc3MgIChfX2NvbnN0IGNoYXIg
Kl9fbmFtZSwgaW50IF9fdHlwZSkgIHRocm93ICgpICA7CgoKCgoKCgoKIAoKCgoKCgoKIAoKCgoK
CgogCgoKCgpleHRlcm4gX19vZmZfdCBfX2xzZWVrICAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZz
ZXQsIGludCBfX3doZW5jZSkgIHRocm93ICgpICA7CgpleHRlcm4gX19vZmZfdCBsc2VlayAgKGlu
dCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpICB0aHJvdyAoKSAgOwojIDI4
OSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoKCgoKIApleHRlcm4gaW50IF9fY2xvc2UgIChp
bnQgX19mZCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgY2xvc2UgIChpbnQgX19mZCkgIHRocm93
ICgpICA7CgogCgpleHRlcm4gc3NpemVfdCAgX19yZWFkICAoaW50IF9fZmQsIHZvaWQgKiAgX19i
dWYsIHNpemVfdCBfX25ieXRlcykgIHRocm93ICgpICA7CmV4dGVybiBzc2l6ZV90ICByZWFkICAo
aW50IF9fZmQsIHZvaWQgKiAgX19idWYsIHNpemVfdCBfX25ieXRlcykgIHRocm93ICgpICA7Cgog
CmV4dGVybiBzc2l6ZV90ICBfX3dyaXRlICAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqICBfX2J1
Ziwgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CmV4dGVybiBzc2l6ZV90ICB3cml0ZSAgKGludCBf
X2ZkLCBfX2NvbnN0IHZvaWQgKiAgX19idWYsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKIyAz
NDMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoKCiAKCgoKZXh0ZXJuIGludCBwaXBlICAoaW50
IF9fcGlwZWRlc1syXSkgIHRocm93ICgpICA7CgogCgoKCgoKCmV4dGVybiB1bnNpZ25lZCBpbnQg
YWxhcm0gICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKSAgdGhyb3cgKCkgIDsKCiAKCgoKCgoKZXh0
ZXJuIHVuc2lnbmVkIGludCBzbGVlcCAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpICB0aHJvdyAo
KSAgOwoKCiAKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCB1YWxhcm0gICh1bnNpZ25lZCBpbnQgX192
YWx1ZSwKCQkJCSB1bnNpZ25lZCBpbnQgX19pbnRlcnZhbCkgIHRocm93ICgpICA7CgogCgpleHRl
cm4gdm9pZCB1c2xlZXAgICh1bnNpZ25lZCBpbnQgX191c2Vjb25kcykgIHRocm93ICgpICA7CgoK
CiAKCmV4dGVybiBpbnQgcGF1c2UgICh2b2lkKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBpbnQg
Y2hvd24gIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLAoJCSAgICAgICBf
X2dpZF90IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBmY2hvd24gIChpbnQg
X19mZCwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKCiAK
CmV4dGVybiBpbnQgbGNob3duICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25l
ciwKCQkJX19naWRfdCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IGNoZGly
ICAoX19jb25zdCBjaGFyICpfX3BhdGgpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBmY2hk
aXIgIChpbnQgX19mZCkgIHRocm93ICgpICA7CgoKIAoKCgoKCgpleHRlcm4gY2hhciAqZ2V0Y3dk
ICAoY2hhciAqX19idWYsIHNpemVfdCBfX3NpemUpICB0aHJvdyAoKSAgOwoKCgoKCgoKCgogCgoK
ZXh0ZXJuIGNoYXIgKmdldHdkICAoY2hhciAqX19idWYpICB0aHJvdyAoKSAgOwoKCgogCmV4dGVy
biBpbnQgZHVwICAoaW50IF9fZmQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IGR1cDIgIChp
bnQgX19mZCwgaW50IF9fZmQyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNoYXIgKipfX2Vudmly
b247CgoKCgoKIAoKZXh0ZXJuIGludCBleGVjdmUgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hh
ciAqX19jb25zdCBfX2FyZ3ZbXSwKCQkJY2hhciAqX19jb25zdCBfX2VudnBbXSkgIHRocm93ICgp
ICA7CgoKCgoKCgoKCgogCmV4dGVybiBpbnQgZXhlY3YgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwg
Y2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IGV4ZWNs
ZSAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pICB0aHJv
dyAoKSAgOwoKIAoKZXh0ZXJuIGludCBleGVjbCAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2Nv
bnN0IGNoYXIgKl9fYXJnLCAuLi4pICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCBleGVjdnAg
IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgIHRocm93ICgp
ICA7CgogCgoKZXh0ZXJuIGludCBleGVjbHAgIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25z
dCBjaGFyICpfX2FyZywgLi4uKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IG5pY2UgIChp
bnQgX19pbmMpICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiB2b2lkIF9leGl0ICAoaW50IF9fc3Rh
dHVzKSAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgogCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9jb25mbmFtZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAplbnVt
CiAgewogICAgX1BDX0xJTktfTUFYLAoKICAgIF9QQ19NQVhfQ0FOT04sCgogICAgX1BDX01BWF9J
TlBVVCwKCiAgICBfUENfTkFNRV9NQVgsCgogICAgX1BDX1BBVEhfTUFYLAoKICAgIF9QQ19QSVBF
X0JVRiwKCiAgICBfUENfQ0hPV05fUkVTVFJJQ1RFRCwKCiAgICBfUENfTk9fVFJVTkMsCgogICAg
X1BDX1ZESVNBQkxFLAoKICAgIF9QQ19TWU5DX0lPLAoKICAgIF9QQ19BU1lOQ19JTywKCiAgICBf
UENfUFJJT19JTywKCiAgICBfUENfU09DS19NQVhCVUYsCgogICAgX1BDX0ZJTEVTSVpFQklUUwoK
ICB9OwoKIAplbnVtCiAgewogICAgX1NDX0FSR19NQVgsCgogICAgX1NDX0NISUxEX01BWCwKCiAg
ICBfU0NfQ0xLX1RDSywKCiAgICBfU0NfTkdST1VQU19NQVgsCgogICAgX1NDX09QRU5fTUFYLAoK
ICAgIF9TQ19TVFJFQU1fTUFYLAoKICAgIF9TQ19UWk5BTUVfTUFYLAoKICAgIF9TQ19KT0JfQ09O
VFJPTCwKCiAgICBfU0NfU0FWRURfSURTLAoKICAgIF9TQ19SRUFMVElNRV9TSUdOQUxTLAoKICAg
IF9TQ19QUklPUklUWV9TQ0hFRFVMSU5HLAoKICAgIF9TQ19USU1FUlMsCgogICAgX1NDX0FTWU5D
SFJPTk9VU19JTywKCiAgICBfU0NfUFJJT1JJVElaRURfSU8sCgogICAgX1NDX1NZTkNIUk9OSVpF
RF9JTywKCiAgICBfU0NfRlNZTkMsCgogICAgX1NDX01BUFBFRF9GSUxFUywKCiAgICBfU0NfTUVN
TE9DSywKCiAgICBfU0NfTUVNTE9DS19SQU5HRSwKCiAgICBfU0NfTUVNT1JZX1BST1RFQ1RJT04s
CgogICAgX1NDX01FU1NBR0VfUEFTU0lORywKCiAgICBfU0NfU0VNQVBIT1JFUywKCiAgICBfU0Nf
U0hBUkVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19BSU9fTElTVElPX01BWCwKCiAgICBfU0Nf
QUlPX01BWCwKCiAgICBfU0NfQUlPX1BSSU9fREVMVEFfTUFYLAoKICAgIF9TQ19ERUxBWVRJTUVS
X01BWCwKCiAgICBfU0NfTVFfT1BFTl9NQVgsCgogICAgX1NDX01RX1BSSU9fTUFYLAoKICAgIF9T
Q19WRVJTSU9OLAoKICAgIF9TQ19QQUdFU0laRSwKCgogICAgX1NDX1JUU0lHX01BWCwKCiAgICBf
U0NfU0VNX05TRU1TX01BWCwKCiAgICBfU0NfU0VNX1ZBTFVFX01BWCwKCiAgICBfU0NfU0lHUVVF
VUVfTUFYLAoKICAgIF9TQ19USU1FUl9NQVgsCgoKICAgICAKCiAgICBfU0NfQkNfQkFTRV9NQVgs
CgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAgX1NDX0JDX1NDQUxFX01BWCwKCiAgICBfU0NfQkNf
U1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9XRUlHSFRTX01BWCwKCiAgICBfU0NfRVFVSVZfQ0xB
U1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1RfTUFYLAoKICAgIF9TQ19MSU5FX01BWCwKCiAgICBf
U0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hBUkNMQVNTX05BTUVfTUFYLAoKCiAgICBfU0NfMl9W
RVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwKCiAgICBfU0NfMl9DX0RFViwKCiAgICBfU0NfMl9G
T1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JVTiwKCiAgICBfU0NfMl9TV19ERVYsCgogICAgX1ND
XzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJLAoKICAgIF9TQ19QSUlfWFRJLAoKICAgIF9TQ19Q
SUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5URVJORVQsCgogICAgX1NDX1BJSV9PU0ksCgogICAg
X1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwKCiAgICBfU0NfVUlPX01BWElPViwKCiAgICBfU0Nf
UElJX0lOVEVSTkVUX1NUUkVBTSwKCiAgICBfU0NfUElJX0lOVEVSTkVUX0RHUkFNLAoKICAgIF9T
Q19QSUlfT1NJX0NPVFMsCgogICAgX1NDX1BJSV9PU0lfQ0xUUywKCiAgICBfU0NfUElJX09TSV9N
LAoKICAgIF9TQ19UX0lPVl9NQVgsCgoKICAgICAKICAgIF9TQ19USFJFQURTLAoKICAgIF9TQ19U
SFJFQURfU0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAgX1ND
X0dFVFBXX1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19UVFlf
TkFNRV9NQVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAgX1ND
X1RIUkVBRF9LRVlTX01BWCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0NfVEhS
RUFEX1RIUkVBRFNfTUFYLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAgX1ND
X1RIUkVBRF9BVFRSX1NUQUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJ
TkcsCgogICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklPX1BS
T1RFQ1QsCgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9DRVNT
T1JTX0NPTkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFHRVMs
CgogICAgX1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0NfUEFT
U19NQVgsCgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lP
TiwKCiAgICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1NDX1hP
UEVOX0VOSF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVSTSwK
CiAgICBfU0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5fWFBH
MiwKCiAgICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAgX1NDX0NI
QVJfQklULAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgogICAgX1NDX0lO
VF9NQVgsCgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoKICAgIF9TQ19XT1JE
X0JJVCwKCiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8sCgogICAgX1NDX1NTSVpF
X01BWCwKCiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9NSU4sCgogICAgX1NDX1NI
UlRfTUFYLAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJfTUFYLAoKICAgIF9TQ19V
SU5UX01BWCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hSVF9NQVgsCgoKICAgIF9T
Q19OTF9BUkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1NDX05MX01TR01BWCwKCiAg
ICBfU0NfTkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFYLAoK
CiAgICBfU0NfWEJTNV9JTFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcsCgog
ICAgX1NDX1hCUzVfTFA2NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoKICAg
IF9TQ19YT1BFTl9MRUdBQ1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19YT1BF
Tl9SRUFMVElNRV9USFJFQURTCgogIH07CgoKCgogCmVudW0KICB7CiAgICBfQ1NfUEFUSAkJCSAK
CgojIDM3MCAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMwoKCiMgNDA2ICIvdXNyL2lu
Y2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCgogIH07CgojIDQ5NyAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAyIDMKCgogCmV4dGVybiBsb25nIGludCBwYXRoY29uZiAgKF9fY29uc3QgY2hhciAqX19w
YXRoLCBpbnQgX19uYW1lKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29u
ZiAgKGludCBfX2ZkLCBpbnQgX19uYW1lKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGxvbmcgaW50
IHN5c2NvbmYgIChpbnQgX19uYW1lKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBzaXplX3QgY29u
ZnN0ciAgKGludCBfX25hbWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pICB0aHJvdyAoKSAg
OwoKCgogCmV4dGVybiBfX3BpZF90IF9fZ2V0cGlkICAodm9pZCkgIHRocm93ICgpICA7CmV4dGVy
biBfX3BpZF90IGdldHBpZCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gX19waWRfdCBn
ZXRwcGlkICAodm9pZCkgIHRocm93ICgpICA7CgogCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAg
KHZvaWQpICB0aHJvdyAoKSAgOwoKCgoKCgoKCiAKZXh0ZXJuIF9fcGlkX3QgX19nZXRwZ2lkICAo
X19waWRfdCBfX3BpZCkgIHRocm93ICgpICA7CgoKCgoKIAoKCmV4dGVybiBpbnQgX19zZXRwZ2lk
ICAoX19waWRfdCBfX3BpZCwgX19waWRfdCBfX3BnaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50
IHNldHBnaWQgIChfX3BpZF90IF9fcGlkLCBfX3BpZF90IF9fcGdpZCkgIHRocm93ICgpICA7CgoK
IAoKCgoKCgoKCgoKCiAKCmV4dGVybiBpbnQgc2V0cGdycCAgKHZvaWQpICB0aHJvdyAoKSAgOwoK
IyA1NzMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoKCgogCgoKZXh0ZXJuIF9fcGlkX3Qgc2V0
c2lkICAodm9pZCkgIHRocm93ICgpICA7CgoKCgoKCiAKZXh0ZXJuIF9fdWlkX3QgZ2V0dWlkICAo
dm9pZCkgIHRocm93ICgpICA7CgogCmV4dGVybiBfX3VpZF90IGdldGV1aWQgICh2b2lkKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICAodm9pZCkgIHRocm93ICgpICA7Cgog
CmV4dGVybiBfX2dpZF90IGdldGVnaWQgICh2b2lkKSAgdGhyb3cgKCkgIDsKCiAKCgpleHRlcm4g
aW50IGdldGdyb3VwcyAgKGludCBfX3NpemUsIF9fZ2lkX3QgX19saXN0W10pICB0aHJvdyAoKSAg
OwoKCgoKCgogCgoKCmV4dGVybiBpbnQgc2V0dWlkICAoX191aWRfdCBfX3VpZCkgIHRocm93ICgp
ICA7CgoKIAoKZXh0ZXJuIGludCBzZXRyZXVpZCAgKF9fdWlkX3QgX19ydWlkLCBfX3VpZF90IF9f
ZXVpZCkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBzZXRldWlkICAoX191aWRfdCBfX3Vp
ZCkgIHRocm93ICgpICA7CgoKIAoKCgpleHRlcm4gaW50IHNldGdpZCAgKF9fZ2lkX3QgX19naWQp
ICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVybiBpbnQgc2V0cmVnaWQgIChfX2dpZF90IF9fcmdpZCwg
X19naWRfdCBfX2VnaWQpICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgc2V0ZWdpZCAgKF9f
Z2lkX3QgX19naWQpICB0aHJvdyAoKSAgOwoKCgogCgoKZXh0ZXJuIF9fcGlkX3QgX19mb3JrICAo
dm9pZCkgIHRocm93ICgpICA7CmV4dGVybiBfX3BpZF90IGZvcmsgICh2b2lkKSAgdGhyb3cgKCkg
IDsKCgogCgoKCmV4dGVybiBfX3BpZF90IHZmb3JrICAodm9pZCkgIHRocm93ICgpICA7CgoKCiAK
CmV4dGVybiBjaGFyICp0dHluYW1lICAoaW50IF9fZmQpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJu
IGludCB0dHluYW1lX3IgIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxlbikg
IHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IGlzYXR0eSAgKGludCBfX2ZkKSAgdGhyb3cgKCkg
IDsKCgogCgpleHRlcm4gaW50IHR0eXNsb3QgICh2b2lkKSAgdGhyb3cgKCkgIDsKCgoKIApleHRl
cm4gaW50IGxpbmsgIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSAg
dGhyb3cgKCkgIDsKCgogCmV4dGVybiBpbnQgc3ltbGluayAgKF9fY29uc3QgY2hhciAqX19mcm9t
LCBfX2NvbnN0IGNoYXIgKl9fdG8pICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBpbnQgcmVhZGxp
bmsgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgIHRo
cm93ICgpICA7CgoKIApleHRlcm4gaW50IHVubGluayAgKF9fY29uc3QgY2hhciAqX19uYW1lKSAg
dGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBybWRpciAgKF9fY29uc3QgY2hhciAqX19wYXRoKSAg
dGhyb3cgKCkgIDsKCgogCmV4dGVybiBfX3BpZF90IHRjZ2V0cGdycCAgKGludCBfX2ZkKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIGludCB0Y3NldHBncnAgIChpbnQgX19mZCwgX19waWRfdCBfX3Bn
cnBfaWQpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGNoYXIgKmdldGxvZ2luICAodm9pZCkgIHRo
cm93ICgpICA7CgoKCgoKCgoKIApleHRlcm4gaW50IHNldGxvZ2luICAoX19jb25zdCBjaGFyICpf
X25hbWUpICB0aHJvdyAoKSAgOwoKCgoKIAoKCgojIDEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCiAKCgoKCgpleHRl
cm4gY2hhciAqb3B0YXJnOwoKIAoKCgoKCgoKCgoKCmV4dGVybiBpbnQgb3B0aW5kOwoKIAoKCmV4
dGVybiBpbnQgb3B0ZXJyOwoKIAoKZXh0ZXJuIGludCBvcHRvcHQ7CgojIDEwMiAiL3Vzci9pbmNs
dWRlL2dldG9wdC5oIiAzCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgpleHRlcm4g
aW50IGdldG9wdCAoaW50IF9fYXJnYywgY2hhciAqY29uc3QgKl9fYXJndiwgY29uc3QgY2hhciAq
X19zaG9ydG9wdHMpOwoKCgoKIyAxNTEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwoKIyAxNjAg
Ii91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwoKCgp9CgoKIAoKCgojIDcyNCAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAyIDMKCgoKCgoKIAoKCmV4dGVybiBpbnQgZ2V0aG9zdG5hbWUgIChjaGFyICpf
X25hbWUsIHNpemVfdCBfX2xlbikgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IHNldGhvc3Ru
YW1lICAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgIHRocm93ICgpICA7Cgog
CgpleHRlcm4gaW50IHNldGhvc3RpZCAgKGxvbmcgaW50IF9faWQpICB0aHJvdyAoKSAgOwoKCiAK
CgpleHRlcm4gaW50IGdldGRvbWFpbm5hbWUgIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikg
IHRocm93ICgpICA7CmV4dGVybiBpbnQgc2V0ZG9tYWlubmFtZSAgKF9fY29uc3QgY2hhciAqX19u
YW1lLCBzaXplX3QgX19sZW4pICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBmc3luYyAgKGlu
dCBfX2ZkKSAgdGhyb3cgKCkgIDsKCgogCgoKZXh0ZXJuIGludCB2aGFuZ3VwICAodm9pZCkgIHRo
cm93ICgpICA7CgogCmV4dGVybiBpbnQgcmV2b2tlICAoX19jb25zdCBjaGFyICpfX2ZpbGUpICB0
aHJvdyAoKSAgOwoKCiAKCgoKCmV4dGVybiBpbnQgcHJvZmlsICAodW5zaWduZWQgc2hvcnQgaW50
ICpfX3NhbXBsZV9idWZmZXIsIHNpemVfdCBfX3NpemUsCgkJCXNpemVfdCBfX29mZnNldCwgdW5z
aWduZWQgaW50IF9fc2NhbGUpICB0aHJvdyAoKSAgOwoKCiAKCgpleHRlcm4gaW50IGFjY3QgIChf
X2NvbnN0IGNoYXIgKl9fbmFtZSkgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IGNocm9vdCAg
KF9fY29uc3QgY2hhciAqX19wYXRoKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBjaGFyICpnZXR1
c2Vyc2hlbGwgICh2b2lkKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHZvaWQgZW5kdXNlcnNoZWxsICAo
dm9pZCkgIHRocm93ICgpICA7ICAKZXh0ZXJuIHZvaWQgc2V0dXNlcnNoZWxsICAodm9pZCkgIHRo
cm93ICgpICA7ICAKCgogCgpleHRlcm4gY2hhciAqZ2V0cGFzcyAgKF9fY29uc3QgY2hhciAqX19w
cm9tcHQpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBpbnQgZGFlbW9uICAoaW50IF9fbm9jaGRp
ciwgaW50IF9fbm9jbG9zZSkgIHRocm93ICgpICA7CgoKCgoKCiAKZXh0ZXJuIGxvbmcgaW50IGdl
dGhvc3RpZCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHN5bmMgICh2b2lkKSAg
dGhyb3cgKCkgIDsKCgogCgpleHRlcm4gaW50IF9fZ2V0cGFnZXNpemUgICh2b2lkKSAgdGhyb3cg
KCkgIDsKZXh0ZXJuIGludCBnZXRwYWdlc2l6ZSAgKHZvaWQpICB0aHJvdyAoKSAgOwoKCiAKCmV4
dGVybiBpbnQgdHJ1bmNhdGUgIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmZfdCBfX2xlbmd0
aCkgIHRocm93ICgpICA7CiMgODI3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKCgogCmV4
dGVybiBpbnQgX19mdHJ1bmNhdGUgIChpbnQgX19mZCwgX19vZmZfdCBfX2xlbmd0aCkgIHRocm93
ICgpICA7CgpleHRlcm4gaW50IGZ0cnVuY2F0ZSAgKGludCBfX2ZkLCBfX29mZl90IF9fbGVuZ3Ro
KSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKCgoKCiAKCmV4dGVybiBpbnQgZ2V0ZHRhYmxlc2l6ZSAg
KHZvaWQpICB0aHJvdyAoKSAgOwoKCgoKCgogCgpleHRlcm4gaW50IGJyayAgKHZvaWQgKiAgX19h
ZGRyKSAgdGhyb3cgKCkgIDsKCgojIDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxp
bnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91
c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0
ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvYWxwaGEt
cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRl
ZiBsb25nIGludCBwdHJkaWZmX3Q7CgoKCgoKCgoKCiAKCgoKCiAKCiAKCiMgMTkwICIvdXNyL2xp
Yi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGlu
dXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9saWIvZ2Nj
LWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMK
CgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0y
LjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA4
NjMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKIAoKCgpleHRlcm4gdm9pZCAqICBfX3Ni
cmsgIChwdHJkaWZmX3QgX19kZWx0YSkgIHRocm93ICgpICA7CmV4dGVybiB2b2lkICogIHNicmsg
IChwdHJkaWZmX3QgX19kZWx0YSkgIHRocm93ICgpICA7CgoKCgogCgoKCgoKCgoKCmV4dGVybiBs
b25nIGludCBzeXNjYWxsICAobG9uZyBpbnQgX19zeXNubywgLi4uKSAgdGhyb3cgKCkgIDsKCgoK
CgogCgoKCiAKCgoKCgoKCgoKZXh0ZXJuIGludCBsb2NrZiAgKGludCBfX2ZkLCBpbnQgX19jbWQs
IF9fb2ZmX3QgX19sZW4pICB0aHJvdyAoKSAgOwoKCgoKCgoKCgoKCgoKCiMgOTQwICIvdXNyL2lu
Y2x1ZGUvdW5pc3RkLmgiIDMKCgoKIAoKZXh0ZXJuIGludCBmZGF0YXN5bmMgIChpbnQgX19maWxk
ZXMpICB0aHJvdyAoKSAgOwoKCgogCgojIDk2OCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoK
CiAKCiMgOTgzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKCiAKCiAKCgoKCgoKCgoKZXh0
ZXJuIGludCBwdGhyZWFkX2F0Zm9yayAgKHZvaWQgKCpfX3ByZXBhcmUpICh2b2lkKSwKCQkJCXZv
aWQgKCpfX3BhcmVudCkgKHZvaWQpLAoJCQkJdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgIHRocm93
ICgpICA7CgoKfSAKCgojIDcxICIvc29mdHdhcmUvdGhhbGlhL2gvc3lzcHJvdG9zLnAiIDIKCgp2
b2lkIF9jbGVhbnVwICh2b2lkKTsKIAoKIAoKCmludCBmbG9jayhpbnQsIGludCk7CgogCmludCBC
U0RnZXRwZ3JwKGludCBwaWQpOwoKCn07CgoKIyAyMDEgIi9zb2Z0d2FyZS90aGFsaWEvaC9zdGR0
eXBlcy5oIiAyCgoKCgoKCgoKCgoKCgoKCgojIDIyICJucmh5L05SSFlfQWNjZXNzLmMiIDIKCiMg
MSAiaC9QbHVnaW5UZW1wbGF0ZS5oIiAxCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAK
IAoKY2xhc3MgUGx1Z2luQ2xhc3MgewpwdWJsaWM6CiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgICpH
ZXROYW1lICAgICgpID0gMDsgIAogICAgdmlydHVhbCBjb25zdCBjaGFyICAqR2V0QWxpYXNlcyAo
KSB7IHJldHVybiAiIjsgfQogICAgdmlydHVhbCB+UGx1Z2luQ2xhc3MgICAgICAgICAgICAoKSB7
fTsKfTsKCiAKdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFBsdWdpbkVudHJ5OwoKIAogCiAKIAoK
IAogCiAKIAogCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUGx1Z2luVGFibGUgewog
ICAgZnJpZW5kIGNsYXNzIFBsdWdpbkVudHJ5PFQ+Owpwcml2YXRlOgogICAgCiAgICBzdGF0aWMg
VCAqKnRhYmxlOwogICAgc3RhdGljIGludCBtYXhFbnRyaWVzOwogICAgc3RhdGljIGludCBuZXh0
RW50cnk7CiAgICBzdGF0aWMgaW50IG51bUVudHJpZXM7CiAgICBzdGF0aWMgQk9PTEVBTiBjaGVj
a1RhYmxlU2l6ZSAgICAgICAoKTsKCnB1YmxpYzoKICAgIAogICAgc3RhdGljIGludCBHZXRGaXJz
dEluZGV4ICAgICAgICAgICAgKCkgeyByZXR1cm4gR2V0TmV4dEluZGV4ICgwKTsgfQogICAgc3Rh
dGljIGludCBHZXROZXh0SW5kZXggICAgICAgICAgICAgKGludCk7CiAgICBzdGF0aWMgaW50IEdl
dE51bUFjdGl2ZUVudHJpZXMgICAgICAoKTsKICAgIHN0YXRpYyBpbnQgR2V0TmV4dEluZGV4ICAg
ICAgICAgICAgIChjb25zdCBjaGFyICosIGludCk7CiAgICBzdGF0aWMgaW50IEdldEluZGV4ICAg
ICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKTsKICAgIHN0YXRpYyBpbnQgR2V0RXhhY3RJbmRl
eCAgICAgICAgICAgIChjb25zdCBjaGFyICpuYW1lKTsKICAgIHN0YXRpYyBUICpHZXRFbnRyeSAg
ICAgICAgICAgICAgICAgIChpbnQpOwogICAgc3RhdGljIFQgKkdldEVudHJ5ICAgICAgICAgICAg
ICAgICAgKGNvbnN0IGNoYXIgKik7CiAgICBzdGF0aWMgVCAqR2V0RXhhY3RFbnRyeSAgICAgICAg
ICAgICAoY29uc3QgY2hhciAqKTsKICAgIHN0YXRpYyBjb25zdCBjaGFyICpDaGVja0FsaWFzICAg
ICAgIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICphbGlhc2VzKTsKICAgIHN0YXRpYyBp
bnQgR2V0TnVtRW50cmllcyAgICAgICAgICAgICgpIHsgcmV0dXJuIChudW1FbnRyaWVzKTsgfQog
ICAgc3RhdGljIGludCBHZXRUb3RhbFNpemUgICAgICAgICAgICAgKCkgeyByZXR1cm4gKG5leHRF
bnRyeSk7IH0KCiAgICBzdGF0aWMgY2hhciAqR2V0QWxsTWF0Y2hlcyAgICAgICAgICAoY29uc3Qg
Y2hhciAqbmFtZSk7CiAgICBzdGF0aWMgaW50IEdldEFsaWFzSW5kZXggICAgICAgICAgICAoY29u
c3QgY2hhciAqKTsKCiAgICAKICAgIFQgJm9wZXJhdG9yIFtdICAgICAgICAgICAgICAgICAgICAg
IChjb25zdCBjaGFyICpuYW1lKTsKICAgIFQgJm9wZXJhdG9yIFtdICAgICAgICAgICAgICAgICAg
ICAgIChpbnQgaW5kZXgpOwp9OyAgCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUGx1Z2luRW50
cnkgewpwdWJsaWM6CiAgICAKICAgIGNvbnN0IGludCBJbmRleDsKCiAgICAKICAgIAogICAgUGx1
Z2luRW50cnkgKFQgKik7CiAgICB+UGx1Z2luRW50cnkgKCk7CgogICAgCiAgICBUICZvcGVyYXRv
ciAqKCkgIHsgcmV0dXJuICgqKFBsdWdpblRhYmxlPFQ+Ojp0YWJsZVtJbmRleF0pKTsgfQogICAg
VCAqb3BlcmF0b3IgLT4oKSB7IHJldHVybiAoUGx1Z2luVGFibGU8VD46OnRhYmxlW0luZGV4XSk7
IH0KICAgIG9wZXJhdG9yIGludCgpICAgeyByZXR1cm4gSW5kZXg7IH0KfTsgIAoKCiMgMSAiaC9Q
bHVnaW5UZW1wbGF0ZS5jIiAxCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICJoL1BsdWdpblRl
bXBsYXRlLmgiIDEKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTA5ICJoL1BsdWdpblRlbXBsYXRl
LmgiCgojIDIzICJoL1BsdWdpblRlbXBsYXRlLmMiIDIKCiMgMSAiL3NvZnR3YXJlL3RoYWxpYS9o
L3V0aWwuaCIgMQoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3NvZnR3YXJlL3Ro
YWxpYS9oL3N0ZHR5cGVzLmgiIDEKCiAKCgoKCgoKCgoKCgoKCgoKCgojIDIwMyAiL3NvZnR3YXJl
L3RoYWxpYS9oL3N0ZHR5cGVzLmgiCgoKCgoKCgoKCgoKCgoKIyAyOSAiL3NvZnR3YXJlL3RoYWxp
YS9oL3V0aWwuaCIgMgoKIyAxICIvc29mdHdhcmUvdGhhbGlhL2gvbWFjaGluZS5oIiAxCgogCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgoK
CgoKCgoKIyAzMCAiL3NvZnR3YXJlL3RoYWxpYS9oL3V0aWwuaCIgMgoKCiMgMSAiL3NvZnR3YXJl
L3RoYWxpYS9oL21lbW0uaCIgMQogCgoKCgoKCgojIDEgIi9zb2Z0d2FyZS90aGFsaWEvaC9zdGR0
eXBlcy5oIiAxCgogCgoKCgoKCgoKCgoKCgoKCgoKIyAyMDMgIi9zb2Z0d2FyZS90aGFsaWEvaC9z
dGR0eXBlcy5oIgoKCgoKCgoKCgoKCgoKCiMgOSAiL3NvZnR3YXJlL3RoYWxpYS9oL21lbW0uaCIg
MgoKCgp0eXBlZGVmIHN0cnVjdAogICAgewogICAgSU5UICAgICBvcGNvZGU7CiAgICBJTlQgICAg
IGtleTsKICAgIElOVCAgICAgdXNlcjsKICAgIElOVCAgICAgam9iOwogICAgSU5UICAgICBzaXpl
OwogICAgTE9ORyAgICBjdGltZTsKICAgIFNUUklORyAgZGF0YUZpbGU7CiAgICBTVFJJTkcgIGZp
bGU7CiAgICBTVFJJTkcgIHR5cGU7CiAgICB9ICBNRU1NX0lURU07CgoKCgogCgoKCgoKCgogCgoK
CgoKCgoKIAoKCiAKCgogCgoKIAoKCiAKCgoKCgoKCgoKIAoKCiMgMzIgIi9zb2Z0d2FyZS90aGFs
aWEvaC91dGlsLmgiIDIKCiMgMSAiL3NvZnR3YXJlL3RoYWxpYS9oL2Rpc2tjLmgiIDEKIAoKCgoK
CiMgMSAiL3NvZnR3YXJlL3RoYWxpYS9oL3N0ZHR5cGVzLmgiIDEKCiAKCgoKCgoKCgoKCgoKCgoK
CgojIDIwMyAiL3NvZnR3YXJlL3RoYWxpYS9oL3N0ZHR5cGVzLmgiCgoKCgoKCgoKCgoKCgoKIyA3
ICIvc29mdHdhcmUvdGhhbGlhL2gvZGlza2MuaCIgMgoKCgp0eXBlZGVmIHN0cnVjdAogICAgewog
ICAgSU5UICAgICBvcGNvZGU7CiAgICBJTlQgICAgIGtleTsKICAgIElOVCAgICAgdXNlcjsKICAg
IElOVCAgICAgam9iOwogICAgSU5UICAgICBzaXplOwogICAgTE9ORyAgICBjdGltZTsKICAgIExP
TkcgICAgYWNjZXNzVGltZTsKICAgIFNUUklORyAgY2FjaGVkRmlsZTsKICAgIFNUUklORyAgZGF0
YUZpbGU7CiAgICBTVFJJTkcgIGZpbGU7CiAgICB9ICBESVNLQ19GSUxFOwoKCgogCgoKCgogCgoK
CgoKCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgoKIyAzMyAiL3Nv
ZnR3YXJlL3RoYWxpYS9oL3V0aWwuaCIgMgoKCiMgMSAiL3NvZnR3YXJlL3RoYWxpYS9oL3BhcnNl
LmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgT19M
SVNUCiAgICB7IAogICAgY2hhciAgICAqZmxhZzsKICAgIGludCAgICAgbWluaW11bTsKICAgIGlu
dCAgICAgbWF4aW11bTsKICAgIGludCAgICAgdHlwZTsKICAgIGNoYXIgICAgKmRlc3RpbmF0aW9u
OwogICAgaW50ICAgICBjb3VudDsKICAgIGludCAgICAgaGl0Q291bnQ7CiAgICBjaGFyICAgICoq
cHJvbXB0czsKICAgIH0gT19MSVNUOwoKCiMgMzUgIi9zb2Z0d2FyZS90aGFsaWEvaC91dGlsLmgi
IDIKCiMgMSAiL3NvZnR3YXJlL3RoYWxpYS9oL25ldGZpbGUuaCIgMQoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIyAxICIvc29mdHdhcmUvdGhhbGlhL2gvc3RkdHlwZXMuaCIgMQoKIAoKCgoK
CgoKCgoKCgoKCgoKCiMgMjAzICIvc29mdHdhcmUvdGhhbGlhL2gvc3RkdHlwZXMuaCIKCgoKCgoK
CgoKCgoKCgojIDI4ICIvc29mdHdhcmUvdGhhbGlhL2gvbmV0ZmlsZS5oIiAyCgoKCgogCnR5cGVk
ZWYgc3RydWN0IE5FVEZJTEVfQ09NTUFORAp7CgogICAgX19pbnQzMl90ICAgICAgIG9wY29kZTsK
ICAgIGNoYXIgICAgICAgICAgICBmaWxlbmFtZVsyNTZdOwogICAgdm9pZCAgICAgICAgICAgICpm
cDsgICAgCiAgICBjaGFyICAgICAgICAgICAgY1BhcmFtWzhdOwogICAgX19pbnQzMl90ICAgICAg
IGlQYXJhbTE7CiAgICBfX2ludDMyX3QgICAgICAgaVBhcmFtMjsKCn0gIE5FVEZJTEVfQ09NTUFO
RDsKCgogCgoKc3RydWN0IF9uZXRmaWxlX2ZpbGUKewoKICAgIEZJTEUgICAgKmZwOyAgICAgICAg
ICAgICAgICAgCiAgICBpbnQgICAgIHNvY2s7ICAgICAgICAgICAgICAgIAogICAgaW50ICAgICBj
aHVua1NpemU7ICAgICAgICAgICAKICAgIGludCAgICAgYnVmZmVyU2l6ZTsgICAgICAgICAgCiAg
ICBpbnQgICAgIGN1cnJlbnRCdWZMb2M7ICAgICAgIAogICAgaW50ICAgICBmaWxlQmFzZUxvYzsg
ICAgICAgICAKICAgIGNoYXIgICAgYWNjZXNzWzhdOyAgICAgICAgICAgCiAgICBjaGFyICAgICpi
dWZmZXI7ICAgICAgICAgICAgIAoKfTsKdHlwZWRlZiBzdHJ1Y3QgX25ldGZpbGVfZmlsZSBORVRG
SUxFX0ZJTEU7CgoKCgogCgoKCgoKCgoKCiMgMSAiL3NvZnR3YXJlL3RoYWxpYS9oL25ldGZpbGUu
cCIgMQogCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgogCgp2b2lkICAgIE5FVEZJTEVfRW5h
YmxlKAogICAgICAgIHZvaWQKCSk7Cgp2b2lkICAgIE5FVEZJTEVfRGlzYWJsZSgKICAgICAgICB2
b2lkCgkpOwoKTkVURklMRV9GSUxFICAgICpORVRGSUxFX0ZvcGVuKAogICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAgKmZpbGVuYW1lLAogICAgICAgICAgICAgICAgY29uc3QgY2hhciAgKmFjY2Vz
cwoJKTsKCmludCAgICAgTkVURklMRV9GcmVhZCgKICAgICAgICB2b2lkICAgICAgICAgICAgKnB0
ciwKICAgICAgICBzaXplX3QgICAgICAgICAgc2l6ZSwKICAgICAgICBzaXplX3QgICAgICAgICAg
bml0ZW1zLAogICAgICAgIE5FVEZJTEVfRklMRSAgICAqbmZwCgkpOwoKaW50ICAgICBORVRGSUxF
X0Z3cml0ZSgKICAgICAgICBjb25zdCB2b2lkICAgICAgKnB0ciwKICAgICAgICBzaXplX3QgICAg
ICAgICAgc2l6ZSwKICAgICAgICBzaXplX3QgICAgICAgICAgbml0ZW1zLAogICAgICAgIE5FVEZJ
TEVfRklMRSAgICAqbmZwCgkpOwoKaW50ICAgICBORVRGSUxFX0ZwdXRjKAogICAgICAgIGludCAg
ICAgICAgICAgICB0aGVDaGFyLAogICAgICAgIE5FVEZJTEVfRklMRSAgICAqbmZwCgkpOwoKY2hh
ciAgICAgICAgKk5FVEZJTEVfRmdldHMoCiAgICAgICAgY2hhciAgICAgICAgICAgICpzdHJpbmcs
CiAgICAgICAgaW50ICAgICAgICAgICAgIG1heCwKICAgICAgICBORVRGSUxFX0ZJTEUgICAgKm5m
cAoJKTsKCmludCAgICAgTkVURklMRV9GcHV0cygKICAgICAgICBjb25zdCBjaGFyICAgICAgICAg
ICpzdHJpbmcsCiAgICAgICAgTkVURklMRV9GSUxFICAgICpuZnAKCSk7CgppbnQgICAgIE5FVEZJ
TEVfRnNlZWsoCiAgICAgICAgTkVURklMRV9GSUxFICAgICpuZnAsCiAgICAgICAgaW50ICAgICAg
ICAgICAgIG9mZnNldCwKICAgICAgICBpbnQgICAgICAgICAgICAgd2hlbmNlCgkpOwoKaW50ICAg
ICBORVRGSUxFX0Z0ZWxsKAogICAgICAgIE5FVEZJTEVfRklMRSAgICAqbmZwCgkpOwoKaW50ICAg
ICBORVRGSUxFX0ZmbHVzaCgKICAgICAgICBORVRGSUxFX0ZJTEUgICAgKm5mcAoJKTsKCmludCAg
ICAgTkVURklMRV9GY2xvc2UoIAogICAgICAgIE5FVEZJTEVfRklMRSAgICAqbmZwCgkpOwoKdm9p
ZCAgICBORVRGSUxFX0luaXRpYXRlQ29uY3VycmVudCggCiAgICAgICAgY29uc3QgY2hhciAgKm5h
bWUKCSk7Cgp2b2lkICAgIE5FVEZJTEVfVGVybWluYXRlQ29uY3VycmVudCggCiAgICAgICAgdm9p
ZAoJKTsKCnNob3J0IE5FVEZJTEVfR2V0RG9OZXRGaWxlc0ZsYWcgKAogICAgdm9pZAoJKTsKCmlu
dCBORVRGSUxFX0dldFNhdmVkRXJybm8gKAogICAgdm9pZAoJKTsKCgogCgpORVRGSUxFX0ZJTEUg
Kk5FVEZJTEVfRm9wZW5SZWN5Y2xlICgKICAgIGNvbnN0IGNoYXIgICpmaWxlbmFtZSwKICAgIGNv
bnN0IGNoYXIgICphY2Nlc3NDb2RlCgkpOwoKaW50IE5FVEZJTEVfRmNsb3NlUmVjeWNsZSAoCiAg
ICBORVRGSUxFX0ZJTEUgICAgKm5mcAoJKTsKCgp9CgoKCgoKIyA3NyAiL3NvZnR3YXJlL3RoYWxp
YS9oL25ldGZpbGUuaCIgMgoKCgojIDM2ICIvc29mdHdhcmUvdGhhbGlhL2gvdXRpbC5oIiAyCgoK
dHlwZWRlZiBzdHJ1Y3QgU1REX0ZJTEVfSEVBREVSCiAgICB7CiAgICBpbnQgIGhlYWRTaXplOyAg
ICAgICAKICAgIHNob3J0IG1hY2hpbmU7ICAgICAgIAogICAgc2hvcnQgZmlsZVR5cGU7ICAgICAg
CiAgICBzaG9ydCB2ZXJzaW9uOyAgICAgICAKICAgIHNob3J0IGhlYWRWZXJzaW9uOwogICAgaW50
ICBkYXRlOyAgICAgICAgICAgCiAgICBjaGFyIHByb2dyYW1bNDhdOwogICAgfSBTVERfRklMRV9I
RUFERVI7CgoKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCgoKCgogCgoKIAoKCgogCgoK
CgogCiAKdHlwZWRlZiBzdHJ1Y3QgRlJBTkdFCiAgICB7CiAgICBmbG9hdCAgICAgICBiZWdpbjsK
ICAgIGZsb2F0ICAgICAgIGVuZDsKICAgIGZsb2F0ICAgICAgIGluYzsKICAgIH0gRlJBTkdFOwoK
CmlubGluZSBjb25zdCBjaGFyICpjbGFzc05hbWUoIEZSQU5HRSApIHsgcmV0dXJuICJGUkFOR0Ui
OyB9OwoKCiAKCgoKCiMgMSAiL3NvZnR3YXJlL3RoYWxpYS9oL3V0aWwuZSIgMQoKIAoKCgoKCgog
CgoKIyAxICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42
Ni9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIAoKCiAKCgoKCgogCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3lzbGltaXRzLmgiIDEg
MwogCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIu
OTEuNjYvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiAKCgogCgojIDExNCAiL3Vzci9saWIvZ2NjLWxp
Yi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvbGltaXRzLmgiIDMKCgoK
IyAxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgoK
IAoKCiAKCgogCgoKIAoKCiAKCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoK
IAoKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy9sb2NhbF9saW0uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKIyAxICIvdXNy
L2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMwoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyNyAiL3Vz
ci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDIgMwoKCiAKCgoKCgogCgogCgoKIAoKIAoKCiAK
CiAKCgogCgoKCiAKCiMgMTI2ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDIgMwoK
CgoKCgoKCiAKCgoKCgoKCiMgMzAgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoKCgojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgogCgoKIAoKCiAKCgogCgoKIAoKCgoKIAoKCgoKIAoKCgogCgoKIAoKCgogCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzQgIi91c3IvaW5jbHVkZS9s
aW1pdHMuaCIgMiAzCgoKCgoKCgoKIAoKCgoKCiAKCiMgMTIxICIvdXNyL2luY2x1ZGUvbGltaXRz
LmgiIDMKCgoKCiAgCgoKCgoKCgoKIyAxMTcgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0
LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCiMgNyAiL3Vzci9s
aWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3lzbGlt
aXRzLmgiIDIgMwoKCiMgMTEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2Vn
Y3MtMi45MS42Ni9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCgogCgoKCiAKCgoKIAoKCgoKIAoK
CgoKCiAKCgoKIAoKCgoKCgoKCgoKCgogCgogCgoKCgogCgoKCiAKCgoKCgoKCgogCgoKCiAKCgoK
CgoKCgoKCgoKCiAKCgoKIyAxMDcgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4
L2VnY3MtMi45MS42Ni9pbmNsdWRlL2xpbWl0cy5oIiAzCgoKCgogCgoKCgoKCgoKCiMgMjMgIi91
c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW50Lmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9h
bHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoK
CgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkx
LjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIv
Z2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3Iv
bGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKIAoKIyAxOTAgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4
L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgoKCiAKCgojIDI2OSAiL3Vz
ci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9l
Z2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9n
Y2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDI4ICIvdXNyL2luY2x1ZGUvc3RkaW50Lmgi
IDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCgojIDI5ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDIgMwoKCiAKCiAKCiAKIyA0NyAi
L3Vzci9pbmNsdWRlL3N0ZGludC5oIiAzCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGNoYXIJCXVpbnQ4
X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50CXVpbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVk
IGludAkJdWludDMyX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50CXVpbnQ2NF90OwoKCgoK
CgogCgogCnR5cGVkZWYgc2lnbmVkIGNoYXIJCWludF9sZWFzdDhfdDsKdHlwZWRlZiBzaG9ydCBp
bnQJCWludF9sZWFzdDE2X3Q7CnR5cGVkZWYgaW50CQkJaW50X2xlYXN0MzJfdDsKCnR5cGVkZWYg
bG9uZyBpbnQJCWludF9sZWFzdDY0X3Q7CgoKCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGNoYXIJCXVp
bnRfbGVhc3Q4X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50CXVpbnRfbGVhc3QxNl90Owp0
eXBlZGVmIHVuc2lnbmVkIGludAkJdWludF9sZWFzdDMyX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgaW50CXVpbnRfbGVhc3Q2NF90OwoKCgoKCgogCgogCnR5cGVkZWYgc2lnbmVkIGNoYXIJCWlu
dF9mYXN0OF90OwoKdHlwZWRlZiBsb25nIGludAkJaW50X2Zhc3QxNl90Owp0eXBlZGVmIGxvbmcg
aW50CQlpbnRfZmFzdDMyX3Q7CnR5cGVkZWYgbG9uZyBpbnQJCWludF9mYXN0NjRfdDsKCgoKCgoK
CiAKdHlwZWRlZiB1bnNpZ25lZCBjaGFyCQl1aW50X2Zhc3Q4X3Q7Cgp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgaW50CXVpbnRfZmFzdDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQJdWludF9m
YXN0MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludAl1aW50X2Zhc3Q2NF90OwoKCgoKCgoK
CiAKCgp0eXBlZGVmIGxvbmcgaW50CQlpbnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
aW50CXVpbnRwdHJfdDsKCgoKCgoKCgoKIAoKdHlwZWRlZiBsb25nIGludAkJaW50bWF4X3Q7CnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQJdWludG1heF90OwoKCgoKCgoKCiAKCiMgMjgwICIvdXNy
L2luY2x1ZGUvc3RkaW50LmgiIDMKCgoKIAoKIyAzMTYgIi91c3IvaW5jbHVkZS9zdGRpbnQuaCIg
MwoKCgojIDI0ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAyIDMKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9zb2NrZXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAx
ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJl
ZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoK
CiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEu
NjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0y
LjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1s
aWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
CgoKIAoKCgoKIAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2Vn
Y3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIv
YWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoK
IAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42
Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjkgIi91
c3IvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAyIDMKCgojIDEgIi91c3IvbGliL2djYy1saWIvYWxw
aGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIAoKCiAK
CiMgMTE0ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYv
aW5jbHVkZS9saW1pdHMuaCIgMwoKCgoKCgoKIyAzMSAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0
LmgiIDIgMwoKCgogCnR5cGVkZWYgdW5zaWduZWQgaW50IHNvY2tsZW5fdDsKCiAKZW51bSBfX3Nv
Y2tldF90eXBlCnsKICBTT0NLX1NUUkVBTSA9IDEsCQkgCgoKICBTT0NLX0RHUkFNID0gMiwJCSAK
CgogIFNPQ0tfUkFXID0gMywJCQkgCgogIFNPQ0tfUkRNID0gNCwJCQkgCgogIFNPQ0tfU0VRUEFD
S0VUID0gNSwJCSAKCgogIFNPQ0tfUEFDS0VUID0gMTAJCSAKCgoKfTsKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgogCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2thZGRyLmgiIDEgMwogCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCiAKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgc2FfZmFtaWx5
X3Q7CgogCgoKCgoKCgoKIAoKZXh0ZXJuIGludCBfX2xpYmNfc2FfbGVuICAoc2FfZmFtaWx5X3Qg
X19hZikgIHRocm93ICgpICA7CgoKIyAxMzMgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAy
IDMKCgogCnN0cnVjdCBzb2NrYWRkcgogIHsKICAgIHNhX2ZhbWlseV90ICBzYV9mYW1pbHkgOwkg
CiAgICBjaGFyIHNhX2RhdGFbMTRdOwkJIAogIH07CgoKIAoKCgoKCgoKCgpzdHJ1Y3Qgc29ja2Fk
ZHJfc3RvcmFnZQogIHsKICAgIHNhX2ZhbWlseV90ICBfX3NzX2ZhbWlseSA7CSAKICAgIF9fdWlu
dDY0X3QgIF9fc3NfYWxpZ247CSAKICAgIGNoYXIgX19zc19wYWRkaW5nWygxMjggIC0gKDIgKiBz
aXplb2YgKF9fdWludDY0X3QgKSkpIF07CiAgfTsKCgogCmVudW0KICB7CiAgICBNU0dfT09CCQk9
IDB4MDEsCSAKCiAgICBNU0dfUEVFSwkJPSAweDAyLAkgCgogICAgTVNHX0RPTlRST1VURQk9IDB4
MDQsCSAKCgoKCgoKICAgIE1TR19DVFJVTkMJCT0gMHgwOCwJIAoKICAgIE1TR19QUk9YWQkJPSAw
eDEwLAkgCgogICAgTVNHX1RSVU5DCQk9IDB4MjAsCgogICAgTVNHX0RPTlRXQUlUCT0gMHg0MCwg
IAoKICAgIE1TR19FT1IJCT0gMHg4MCwgIAoKICAgIE1TR19XQUlUQUxMCQk9IDB4MTAwLCAgCgog
ICAgTVNHX0ZJTgkJPSAweDIwMCwKCiAgICBNU0dfU1lOCQk9IDB4NDAwLAoKICAgIE1TR19VUkcJ
CT0gMHg4MDAsCgogICAgTVNHX1JTVAkJPSAweDEwMDAsCgogICAgTVNHX0VSUlFVRVVFCT0gMHgy
MDAwLCAgCgogICAgTVNHX05PU0lHTkFMCT0gMHg0MDAwICAgCgogIH07CgoKIAoKc3RydWN0IG1z
Z2hkcgogIHsKICAgIHZvaWQgKiAgbXNnX25hbWU7CQkgCiAgICBzb2NrbGVuX3QgbXNnX25hbWVs
ZW47CSAKCiAgICBzdHJ1Y3QgaW92ZWMgKm1zZ19pb3Y7CSAKICAgIHNpemVfdCBtc2dfaW92bGVu
OwkJIAoKICAgIHZvaWQgKiAgbXNnX2NvbnRyb2w7CSAKICAgIHNpemVfdCBtc2dfY29udHJvbGxl
bjsJIAoKICAgIGludCBtc2dfZmxhZ3M7CQkgCiAgfTsKCiAKc3RydWN0IGNtc2doZHIKICB7CiAg
ICBzaXplX3QgY21zZ19sZW47CQkgCgogICAgaW50IGNtc2dfbGV2ZWw7CQkgCiAgICBpbnQgY21z
Z190eXBlOwkJIAoKICAgIHVuc2lnbmVkIGNoYXIgX19jbXNnX2RhdGFbMF07ICAKICAgICAKCiAg
fTsKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIHN0cnVjdCBjbXNnaGRyICpfX2Ntc2dfbnh0aGRy
ICAoc3RydWN0IG1zZ2hkciAqX19taGRyLAoJCQkJCSAgIHN0cnVjdCBjbXNnaGRyICpfX2Ntc2cp
ICB0aHJvdyAoKSAgOwoKCgoKZXh0ZXJuIF9faW5saW5lICBzdHJ1Y3QgY21zZ2hkciAqCl9fY21z
Z19ueHRoZHIgKHN0cnVjdCBtc2doZHIgKl9fbWhkciwgc3RydWN0IGNtc2doZHIgKl9fY21zZykg
dGhyb3cgKCkgCnsKICBpZiAoKHNpemVfdCkgX19jbXNnLT5jbXNnX2xlbiA8IHNpemVvZiAoc3Ry
dWN0IGNtc2doZHIpKQogICAgIAogICAgcmV0dXJuIDA7CgogIF9fY21zZyA9IChzdHJ1Y3QgY21z
Z2hkciAqKSAoKHVuc2lnbmVkIGNoYXIgKikgX19jbXNnCgkJCSAgICAgICArICgoKCBfX2Ntc2ct
PmNtc2dfbGVuICkgKyBzaXplb2YgKHNpemVfdCkgLSAxKSAmIH4oc2l6ZW9mIChzaXplX3QpIC0g
MSkpICk7CiAgaWYgKCh1bnNpZ25lZCBjaGFyICopIChfX2Ntc2cgKyAxKSA+PSAoKHVuc2lnbmVk
IGNoYXIgKikgX19taGRyLT5tc2dfY29udHJvbAoJCQkJCSArIF9fbWhkci0+bXNnX2NvbnRyb2xs
ZW4pCiAgICAgIHx8ICgodW5zaWduZWQgY2hhciAqKSBfX2Ntc2cgKyAoKCggX19jbXNnLT5jbXNn
X2xlbiApICsgc2l6ZW9mIChzaXplX3QpIC0gMSkgJiB+KHNpemVvZiAoc2l6ZV90KSAtIDEpKSAK
CSAgPj0gKCh1bnNpZ25lZCBjaGFyICopIF9fbWhkci0+bXNnX2NvbnRyb2wgKyBfX21oZHItPm1z
Z19jb250cm9sbGVuKSkpCiAgICAgCiAgICByZXR1cm4gMDsKICByZXR1cm4gX19jbXNnOwp9CgoK
IAoKZW51bQogIHsKICAgIFNDTV9SSUdIVFMgPSAweDAxLAkJIAoKCiAgICBTQ01fQ1JFREVOVElB
TFMgPSAweDAyLCAgICAgIAoKCiAgICBfX1NDTV9DT05ORUNUID0gMHgwMwkgCiAgfTsKCiAKCnN0
cnVjdCB1Y3JlZAp7CiAgcGlkX3QgIHBpZDsJCQkgCiAgdWlkX3QgIHVpZDsJCQkgCiAgZ2lkX3Qg
IGdpZDsJCQkgCn07CgogCiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9zb2NrZXQuaCIgMSAzCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2FzbS9zb2NraW9zLmgiIDEgMwoKCgogCgoKCgoKCgoKCgoKIyA0ICIv
dXNyL2luY2x1ZGUvYXNtL3NvY2tldC5oIiAyIDMKCgogCiAKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgogCgoKCgoKCgoKIAoKCgogCgoKCgoKIyAyOTUgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tl
dC5oIiAyIDMKCgoKIApzdHJ1Y3QgbGluZ2VyCiAgewogICAgaW50IGxfb25vZmY7CQkgCiAgICBp
bnQgbF9saW5nZXI7CQkgCiAgfTsKCgojIDI3ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAy
IDMKCgoKZXh0ZXJuICJDIiB7IAoKIAplbnVtCiAgewogICAgSVBQUk9UT19JUCA9IDAsCSAgICAK
ICAgIElQUFJPVE9fSE9QT1BUUyA9IDAsICAgIAogICAgSVBQUk9UT19JQ01QID0gMSwJICAgIAog
ICAgSVBQUk9UT19JR01QID0gMiwJICAgIAogICAgSVBQUk9UT19JUElQID0gNCwJICAgIAogICAg
SVBQUk9UT19UQ1AgPSA2LAkgICAgCiAgICBJUFBST1RPX0VHUCA9IDgsCSAgICAKICAgIElQUFJP
VE9fUFVQID0gMTIsCSAgICAKICAgIElQUFJPVE9fVURQID0gMTcsCSAgICAKICAgIElQUFJPVE9f
SURQID0gMjIsCSAgICAKICAgIElQUFJPVE9fVFAgPSAyOSwJICAgIAogICAgSVBQUk9UT19JUFY2
ID0gNDEsICAgICAgCiAgICBJUFBST1RPX1JPVVRJTkcgPSA0MywgICAKICAgIElQUFJPVE9fRlJB
R01FTlQgPSA0NCwgIAogICAgSVBQUk9UT19SU1ZQID0gNDYsCSAgICAKICAgIElQUFJPVE9fR1JF
ID0gNDcsCSAgICAKICAgIElQUFJPVE9fRVNQID0gNTAsICAgICAgIAogICAgSVBQUk9UT19BSCA9
IDUxLCAgICAgICAgCiAgICBJUFBST1RPX0lDTVBWNiA9IDU4LCAgICAKICAgIElQUFJPVE9fTk9O
RSA9IDU5LCAgICAgIAogICAgSVBQUk9UT19EU1RPUFRTID0gNjAsICAgCiAgICBJUFBST1RPX01U
UCA9IDkyLAkgICAgCiAgICBJUFBST1RPX0VOQ0FQID0gOTgsCSAgICAKICAgIElQUFJPVE9fUElN
ID0gMTAzLAkgICAgCiAgICBJUFBST1RPX0NPTVAgPSAxMDgsCSAgICAKICAgIElQUFJPVE9fUkFX
ID0gMjU1LAkgICAgCiAgICBJUFBST1RPX01BWAogIH07CgogCmVudW0KICB7CiAgICBJUFBPUlRf
RUNITyA9IDcsCQkgCiAgICBJUFBPUlRfRElTQ0FSRCA9IDksCQkgCiAgICBJUFBPUlRfU1lTVEFU
ID0gMTEsCQkgCiAgICBJUFBPUlRfREFZVElNRSA9IDEzLAkgCiAgICBJUFBPUlRfTkVUU1RBVCA9
IDE1LAkgCiAgICBJUFBPUlRfRlRQID0gMjEsCQkgCiAgICBJUFBPUlRfVEVMTkVUID0gMjMsCQkg
CiAgICBJUFBPUlRfU01UUCA9IDI1LAkJIAogICAgSVBQT1JUX1RJTUVTRVJWRVIgPSAzNywJIAog
ICAgSVBQT1JUX05BTUVTRVJWRVIgPSA0MiwJIAogICAgSVBQT1JUX1dIT0lTID0gNDMsCQkgCiAg
ICBJUFBPUlRfTVRQID0gNTcsCgogICAgSVBQT1JUX1RGVFAgPSA2OSwJCSAKICAgIElQUE9SVF9S
SkUgPSA3NywKICAgIElQUE9SVF9GSU5HRVIgPSA3OSwJCSAKICAgIElQUE9SVF9UVFlMSU5LID0g
ODcsCiAgICBJUFBPUlRfU1VQRFVQID0gOTUsCQkgCgoKICAgIElQUE9SVF9FWEVDU0VSVkVSID0g
NTEyLAkgCiAgICBJUFBPUlRfTE9HSU5TRVJWRVIgPSA1MTMsCSAKICAgIElQUE9SVF9DTURTRVJW
RVIgPSA1MTQsCiAgICBJUFBPUlRfRUZTU0VSVkVSID0gNTIwLAoKICAgICAKICAgIElQUE9SVF9C
SUZGVURQID0gNTEyLAogICAgSVBQT1JUX1dIT1NFUlZFUiA9IDUxMywKICAgIElQUE9SVF9ST1VU
RVNFUlZFUiA9IDUyMCwKCiAgICAgCiAgICBJUFBPUlRfUkVTRVJWRUQgPSAxMDI0LAoKICAgICAK
ICAgIElQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCiAgfTsKCgogCnN0cnVjdCBpbl9hZGRyCiAg
ewogICAgdWludDMyX3Qgc19hZGRyOwogIH07CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgogCgogCgogCgoKIAoKIAoKCgoKIAoKCgoKCgogCnN0cnVjdCBpbjZfYWRkcgogIHsKICAgIHVu
aW9uCiAgICAgIHsKCXVpbnQ4X3QJCXU2X2FkZHI4WzE2XTsKCXVpbnQxNl90CXU2X2FkZHIxNls4
XTsKCXVpbnQzMl90CXU2X2FkZHIzMls0XTsKCgl1aW50NjRfdAl1Nl9hZGRyNjRbMl07CgogICAg
ICB9IGluNl91OwoKCgoKICB9OwoKZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbjZfYWRkciBpbjZhZGRy
X2FueTsgICAgICAgICAKZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbjZfYWRkciBpbjZhZGRyX2xvb3Bi
YWNrOyAgICAKCgoKCgoKIAoKCgogCnN0cnVjdCBzb2NrYWRkcl9pbgogIHsKICAgIHNhX2ZhbWls
eV90ICBzaW5fZmFtaWx5IDsKICAgIHVpbnQxNl90IHNpbl9wb3J0OwkJCSAKICAgIHN0cnVjdCBp
bl9hZGRyIHNpbl9hZGRyOwkJIAoKICAgICAKICAgIHVuc2lnbmVkIGNoYXIgc2luX3plcm9bc2l6
ZW9mIChzdHJ1Y3Qgc29ja2FkZHIpIC0KCQkJICAgKHNpemVvZiAodW5zaWduZWQgc2hvcnQgaW50
KSkgIC0KCQkJICAgc2l6ZW9mICh1aW50MTZfdCkgLQoJCQkgICBzaXplb2YgKHN0cnVjdCBpbl9h
ZGRyKV07CiAgfTsKCiAKc3RydWN0IHNvY2thZGRyX2luNgogIHsKICAgIHNhX2ZhbWlseV90ICBz
aW42X2ZhbWlseSA7CiAgICB1aW50MTZfdCBzaW42X3BvcnQ7CQkgCiAgICB1aW50MzJfdCBzaW42
X2Zsb3dpbmZvOwkgCiAgICBzdHJ1Y3QgaW42X2FkZHIgc2luNl9hZGRyOwkgCiAgfTsKCiAKc3Ry
dWN0IGlwdjZfbXJlcQogIHsKICAgICAKICAgIHN0cnVjdCBpbjZfYWRkciBpcHY2bXJfbXVsdGlh
ZGRyOwoKICAgICAKICAgIHVuc2lnbmVkIGludCBpcHY2bXJfaW50ZXJmYWNlOwogIH07CgogCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvaW4uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAKCgoKCiAKCgoKCgoKIAoKCnN0cnVjdCBpcF9v
cHRzCiAgewogICAgc3RydWN0IGluX2FkZHIgaXBfZHN0OwkgCiAgICBjaGFyIGlwX29wdHNbNDBd
OwkJIAogIH07CgogCnN0cnVjdCBpcF9tcmVxCiAgewogICAgc3RydWN0IGluX2FkZHIgaW1yX211
bHRpYWRkcjsJIAogICAgc3RydWN0IGluX2FkZHIgaW1yX2ludGVyZmFjZTsJIAogIH07CgogCnN0
cnVjdCBpcF9tcmVxbgogIHsKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9tdWx0aWFkZHI7CSAKICAg
IHN0cnVjdCBpbl9hZGRyIGltcl9hZGRyZXNzOwkJIAogICAgaW50CWltcl9pZmluZGV4OwkJCSAK
ICB9OwoKIApzdHJ1Y3QgaW5fcGt0aW5mbwogIHsKICAgIGludCBpcGlfaWZpbmRleDsJCQkgCiAg
ICBzdHJ1Y3QgaW5fYWRkciBpcGlfc3BlY19kc3Q7CSAKICAgIHN0cnVjdCBpbl9hZGRyIGlwaV9h
ZGRyOwkJIAogIH07CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKIyAyMjUg
Ii91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDIgMwoKCiAKCgoKCgoKZXh0ZXJuIHVpbnQzMl90
IG50b2hsICAodWludDMyX3QgX19uZXRsb25nKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHVpbnQxNl90
IG50b2hzICAodWludDE2X3QgX19uZXRzaG9ydCkgIHRocm93ICgpICA7CmV4dGVybiB1aW50MzJf
dCBodG9ubCAgKHVpbnQzMl90IF9faG9zdGxvbmcpICB0aHJvdyAoKSAgOwpleHRlcm4gdWludDE2
X3QgaHRvbnMgICh1aW50MTZfdCBfX2hvc3RzaG9ydCkgIHRocm93ICgpICA7CgoKCiAKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgojIDI0MiAiL3Vzci9p
bmNsdWRlL25ldGluZXQvaW4uaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKZXh0ZXJuIGludCBiaW5kcmVzdnBvcnQgIChpbnQgX19zb2NrZmQs
IHN0cnVjdCBzb2NrYWRkcl9pbiAqX19zb2NrX2luKSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKCgoK
CgoKCgoKIApzdHJ1Y3QgaW42X3BrdGluZm8KICB7CiAgICBzdHJ1Y3QgaW42X2FkZHIJaXBpNl9h
ZGRyOyAgICAgCiAgICB1bnNpZ25lZCBpbnQJaXBpNl9pZmluZGV4OyAgCiAgfTsKCn0gCgoKIyAx
MiAiL3NvZnR3YXJlL3RoYWxpYS9oL3V0aWwuZSIgMgoKIyAxICIvc29mdHdhcmUvdGhhbGlhL2gv
dXRpbC5wIiAxCiAKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCiAKCkZJTEUgKlVfU3RkQmlu
T3BlblJlYWQoCiAgICAgICAgY2hhciAqZmlsZSwKICAgICAgICBjaGFyICp0eXBlLCAgICAgIAog
ICAgICAgIFNURF9GSUxFX0hFQURFUiAqaGVhZAogKTsKCmludCBVX1N0ZEJpbk9wZW5SZWFkRmQo
CiAgICAgICAgY2hhciAqZmlsZSwKICAgICAgICBjaGFyICp0eXBlLCAgICAgIAogICAgICAgIFNU
RF9GSUxFX0hFQURFUiAqaGVhZAogKTsKCkZJTEUgKlVfU3RkQmluT3BlbldyaXRlKAogICAgICAg
IGNvbnN0IGNoYXIgKmZpbGUsCiAgICAgICAgY29uc3QgY2hhciAqdHlwZSwgICAgICAgIAogICAg
ICAgIGNoYXIgdmVyc2lvbiwKICAgICAgICBjaGFyICpwcm9ncmFtCiApOwoKaW50IFVfU3RkQmlu
T3BlbldyaXRlRmQoCiAgICAgICAgY2hhciAqZmlsZSwKICAgICAgICBjaGFyICp0eXBlLCAgICAg
IAogICAgICAgIGNoYXIgdmVyc2lvbiwKICAgICAgICBjaGFyICpwcm9ncmFtCiApOwoKSU5UIFVf
U3RkRmluZFR5cGUoCiAgICAgICAgY29uc3QgY2hhciAqdHlwZQogKTsKCklOVCBVX1N0ZE91dHB1
dElCaW5GbG9hdHMoCiAgICAgICAgRklMRSAgKmZwdHIsCiAgICAgICAgRkxPQVQgKmZsb2F0cywK
ICAgICAgICBJTlQgICBudW1iCiApOwoKSU5UIFVfU3RkSW5wdXRJQmluRmxvYXRzKAogICAgICAg
IEZJTEUgICpmcHRyLAogICAgICAgIEZMT0FUICpmbG9hdHMsCiAgICAgICAgSU5UICAgbnVtYgog
KTsKCnZvaWQgVV9TdGREdW1wSGVhZGVyKAogICAgICAgIGNoYXIgKmZpbGUKICk7CgpJTlQgVV9T
dGRGaW5kRmlsZSgKICAgICAgICBjb25zdCBjaGFyICppbkZpbGUsCiAgICAgICAgY2hhciAqcHJl
ZmVycmVkW10sCiAgICAgICAgSU5UIG51bWIsCiAgICAgICAgY2hhciAqb3V0RmlsZSwKICAgICAg
ICBJTlQgKmluZGV4LAogICAgICAgIGNvbnN0IGNoYXIgKnVEaXJzCiApOwoKdm9pZCBVX1N0cmlw
RmlsZVBhdGgoIAogICAgY2hhciogZmlsZVBhdGgKICk7CgpJTlQgVV9Db3B5RmlsZSgKICAgICAg
ICBjb25zdCBjaGFyICAqaW4sCiAgICAgICAgY29uc3QgY2hhciAgKm91dAogKTsKCklOVCBVX0Fw
cGVuZEZpbGUoCiAgICAgICAgQ0hBUiAgICAqaW4sCiAgICAgICAgQ0hBUiAgICAqb3V0CiApOwoK
SU5UIFVfRXhpc3RzKAogICAgICAgIGNoYXIgKmZpbGUKICk7CgpJTlQgVV9GaW5kRXhlY3V0YWJs
ZSgKICAgICAgICBDSEFSICAgICppbmZpbGUsCiAgICAgICAgQ0hBUiAgICAqb3V0ZmlsZSwKICAg
ICAgICBDSEFSICAgICp1RGlycwogKTsKCnZvaWQgVV9HZXRCYWNrdXBOYW1lKAogICAgICAgIGNo
YXIgKmZpbGUsCiAgICAgICAgY2hhciAqYmFjawogKTsKCklOVCBVX0ZpbGVUeXBlKAogICAgICAg
IENIQVIgICAgKm5hbWUKICk7Cgp2b2lkIFVfU3RyY2F0KAogICAgICAgIGNoYXIgKmEsCiAgICAg
ICAgY2hhciAqYgogKTsKCgogCgp2b2lkICBCSUxJTkVBUl9CaWxpbmVhckludGVycG9sYXRpb24o
CiAgICBQT0lOVCAgICpwb2ludCwKICAgIFBPSU5UICAgKnN0YXJ0MCwKICAgIFBPSU5UICAgKnN0
YXJ0MSwKICAgIFBPSU5UICAgKmVuZDAsCiAgICBQT0lOVCAgICplbmQxLAogICAgRkxPQVQgICB0
b2xlcmFuY2UsCiAgICBGTE9BVCAgICp3ZWlnaHQwLAogICAgRkxPQVQgICAqd2VpZ2h0MSwKICAg
IEZMT0FUICAgKndlaWdodFN0YXJ0LAogICAgRkxPQVQgICAqd2VpZ2h0RW5kCiApOwoKCiAKCklO
VCBDSE9SRF9Eb1JlbW90ZUNvbW1hbmQoCiAgICBJTlQgICAgICAgICBjb3VudCwKICAgIGNvbnN0
IENIQVIgICoqYXIsCiAgICBDSEFSICAgICAgICAqKmVyciwKICAgIENIQVIgICAgICAgICoqb3V0
CiApOwoKCiAKCklOVCBVX0Vhc2VJbigKICAgICAgICBSRUFMICAgIHkwLAogICAgICAgIFJFQUwg
ICAgdjAsCiAgICAgICAgUkVBTCAgICB5MSwKICAgICAgICBSRUFMICAgIHYxLAogICAgICAgIFJF
QUwgICAgZXhwLAogICAgICAgIElOVCAgICAgbiwKICAgICAgICBSRUFMICAgICpidWYsCiAgICAg
ICAgSU5UICAgICBrZXkKICk7CgpJTlQgVV9FYXNlT3V0KAogICAgICAgIFJFQUwgICAgeTAsCiAg
ICAgICAgUkVBTCAgICB2MCwKICAgICAgICBSRUFMICAgIHkxLAogICAgICAgIFJFQUwgICAgdjEs
CiAgICAgICAgUkVBTCAgICBleHAsCiAgICAgICAgSU5UICAgICBuLAogICAgICAgIFJFQUwgICAg
KmJ1ZiwKICAgICAgICBJTlQgICAgIGtleQogKTsKCklOVCBVX0Vhc2VJbkxpbmVhcigKICAgICAg
ICBSRUFMICAgIHkwLAogICAgICAgIFJFQUwgICAgdjAsCiAgICAgICAgUkVBTCAgICB5MSwKICAg
ICAgICBSRUFMICAgIHYxLAogICAgICAgIElOVCAgICAgbiwKICAgICAgICBJTlQgICAgIG0sCiAg
ICAgICAgUkVBTCAgICAqYnVmCiApOwoKSU5UIFVfRWFzZUluT3V0KAogICAgICAgIFJFQUwgICAg
eTAsCiAgICAgICAgUkVBTCAgICB2MCwKICAgICAgICBSRUFMICAgIHkxLAogICAgICAgIFJFQUwg
ICAgdjEsCiAgICAgICAgUkVBTCAgICBleHAsCiAgICAgICAgSU5UICAgICBuLAogICAgICAgIFJF
QUwgICAgKmJ1ZiwKICAgICAgICBSRUFMICAgIHdlaWdodAogKTsKCklOVCBVX0Vhc2VJbk91dF9F
eHBlcmltZW50YWwgKAogICAgICAgIFJFQUwgICAgeTAsCiAgICAgICAgUkVBTCAgICB2MCwKICAg
ICAgICBSRUFMICAgIHkxLAogICAgICAgIFJFQUwgICAgdjEsCiAgICAgICAgUkVBTCAgICBleHAs
CiAgICAgICAgSU5UICAgICBuLAogICAgICAgIFJFQUwgICAgKmJ1ZiwKICAgICAgICBSRUFMICAg
IHdlaWdodAogKTsKCgogCgpJTlQgVV9QYXJzZURhdGUoCiAgICAgICAgQ0hBUiAgICAqZGF0ZVN0
cgogKTsKCklOVCBVX0RhdGVJZGVudGlmeSgKICAgICAgICBDSEFSICAgICp0b2tlbgogKTsKCklO
VCBVX1NwcmludERhdGUoCiAgICAgICAgQ0hBUiAgICAqcywKICAgICAgICBJTlQgICAgIHRoZURh
dGUsCiAgICAgICAgSU5UICAgICBzdHlsZQogKTsKCklOVCBVX0dldE1vbnRoSW50RnJvbUFzY2lp
KAogICAgICAgIGNoYXIgICAgKm1vbnRoU3RyaW5nCiApOwoKdm9pZCBVX0dldE1vbnRoQXNjaWlG
cm9tSW50KAogICAgICAgIGNoYXIgICAgKm1vbnRoU3RyaW5nLAogICAgICAgIElOVCAgICAgbW9u
dGhJbnQKICk7CgpJTlQgVV9HZXREYXlzSW5Nb250aEFzY2lpKAogICAgICAgIGNoYXIgICAgKm1v
bnRoU3RyaW5nCiApOwoKSU5UIFVfR2V0RGF5c0luTW9udGhJbnQoCiAgICAgICAgSU5UIG1vbnRo
SW50CiApOwoKSU5UIFVfU3VidHJhY3RGcm9tRGF0ZSgKICAgICAgICBJTlQgKm1vbnRoLCAKICAg
ICAgICBJTlQgKmRheSwgCiAgICAgICAgSU5UICp5ZWFyLAogICAgICAgIElOVCBtb250aEFkanVz
dCwgCiAgICAgICAgSU5UIGRheUFkanVzdCwgCiAgICAgICAgSU5UIHllYXJBZGp1c3QKICk7CgpJ
TlQgVV9BZGRUb0RhdGUoCiAgICAgICAgSU5UICptb250aCwgCiAgICAgICAgSU5UICpkYXksIAog
ICAgICAgIElOVCAqeWVhciwKICAgICAgICBJTlQgbW9udGhBZGp1c3QsIAogICAgICAgIElOVCBk
YXlBZGp1c3QsIAogICAgICAgIElOVCB5ZWFyQWRqdXN0CiApOwoKSU5UIFVfR2V0Q29ycmVjdERh
eXNJbk1vbnRoKAogICAgICAgIElOVCBtb250aCwgCiAgICAgICAgSU5UIHllYXIKICk7CgpJTlQg
VV9Db21wYXJlRGF0ZXMoCiAgICAgICAgSU5UIG1vbnRoMSwgCiAgICAgICAgSU5UIGRheTEsIAog
ICAgICAgIElOVCB5ZWFyMSwKICAgICAgICBJTlQgbW9udGgyLCAKICAgICAgICBJTlQgZGF5Miwg
CiAgICAgICAgSU5UIHllYXIyCiApOwoKCiAKCklOVCBVSV9QYXJzZVRoZURhdGUoCiAgICAgICAg
Y2hhciAgICBkYXRlW10sCiAgICAgICAgSU5UICAgICAqbW9udGhOdW1iZXIsIAogICAgICAgIElO
VCAgICAgKmRheU51bWJlciwgCiAgICAgICAgSU5UICAgICAqeWVhck51bWJlcgogKTsKCgogCgpG
TE9BVCBNQVRIX0Rlc2NyZXRpemUoCiAgICAgICAgRkxPQVQgdmFsCiApOwoKRkxPQVQgTUFUSF9B
cmJEZXNjcmV0aXplKAogICAgICAgIEZMT0FUICAgdmFsLAogICAgICAgIElOVCAgICAgbnVtYiwg
ICAgCiAgICAgICAgRkxPQVQgICAqbWFwICAgICAKICk7CgoKIAoKSU5UIERJU0tDX0RlbGV0ZU9s
ZCgKICAgICAgICBJTlQgICAgIGxpZmVTcGFuCiApOwoKdm9pZCAgRElTS0NfUHVyZ2UoCiAgICB2
b2lkIAogKTsKCklOVCBESVNLQ19SZWFkSW5mbygKICAgICAgICBJTlQgICAgICpsaWZlc3Bhbgog
KTsKCklOVCBESVNLQ19Xcml0ZUluZm8oCiAgICAgICAgSU5UICAgICBsaWZlc3BhbgogKTsKCnZv
aWQgIERJU0tDX1JlYWRGaWxlcygKICAgIHZvaWQgCiApOwoKSU5UIERJU0tDX1JlYWRGaWxlbmFt
ZXMoCiAgICBDSEFSICAgICpwcmVmaXgKICk7CgpJTlQgRElTS0NfRGVsZXRlQWxsKAogICAgICAg
ICAgICB2b2lkIAogKTsKCklOVCBESVNLQ19EZWxldGVBbGxVc2VyRGF0YSgKICAgICAgICBJTlQg
ICAgIHVpZAogKTsKCklOVCBESVNLQ19EZWxldGVLZXkoCiAgICAgICAgSU5UICAgICBrZXkKICk7
CgpJTlQgRElTS0NfVGFsaygKICAgICAgICBESVNLQ19GSUxFICAgKmNtZGJ1ZgogKTsKCklOVCAg
ICAgRElTS0NfVXNlRmlsZSgKICAgIENIQVIgICAgKmZpbGVuYW1lLAogICAgQ0hBUiAgICAqZXh0
ZW5zaW9uc1tdLAogICAgSU5UICAgICBudW1FeHRlbnNpb25zLAogICAgQ0hBUiAgICAqdXNlRmls
ZSwKICAgIElOVCAgICAgdmVyYm9zZQogKTsKCgogCgpJTlQgRkZUX1JlYWwxZCgKICAgICAgICBG
TE9BVCAgICpkYXRhLAogICAgICAgIElOVCAgICAgbiwKICAgICAgICBJTlQgICAgIGlzaWduCiAp
OwoKSU5UIEZGVF9SZWFsMmQoCiAgICAgICAgRkxPQVQgICAqZGF0YSwKICAgICAgICBJTlQgICAg
IHhkaW0sCiAgICAgICAgSU5UICAgICB5ZGltLAogICAgICAgIElOVCAgICAgaHNpemUsCiAgICAg
ICAgSU5UICAgICBpc2lnbgogKTsKCgogCgpJTlQgVV9GaW5kRmlsZU1hY2hpbmUoCiAgICAgICAg
Y29uc3QgY2hhciAgKmZpbGVuYW1lLAogICAgICAgIENIQVIgICAgICAgICptYWNoaW5lCiApOwoK
CiAKCnZvaWQgICAgRlBFX0Rpc2FibGVVbmRlcmZsb3coCiAgICAgICAgdm9pZAogKTsKCgogCgpj
b25zdCBjaGFyICpVX1BhcnNlQUZyYW5nZSgKICAgICAgICBjb25zdCBjaGFyICAqcHRyLAogICAg
ICAgIEZSQU5HRSAgICAgICp0aGVGcmFuZ2UsCiAgICAgICAgZmxvYXQgICAgICAgZGVmYXVsdElu
YwogKTsKCmNvbnN0IGNoYXIgKlVfUGFyc2VBRmxvYXQoCiAgICAgICAgY29uc3QgY2hhciAgKnB0
cgogKTsKCmludCBVX1BhcnNlRnJhbmdlKAogICAgICAgIGNvbnN0IGNoYXIgICpmVG9rZW4sCiAg
ICAgICAgRlJBTkdFICAqKmZyYW5nZXMKICk7CgppbnQgVV9Jc0FGcmFtZSgKICAgICAgICBjaGFy
ICAgICp0b2tlbgogKTsKCnZvaWQgICAgIFVfU3ByaW50RnJhbmdlKAogICAgICAgIGNoYXIgICAg
KnN0ciwKICAgICAgICBpbnQgICAgIG51bSwKICAgICAgICBjb25zdCBGUkFOR0UgICAgKmZyYW5n
ZXMKICk7Cgp2b2lkICAgICBVX1NwcmludE5GcmFuZ2UoCiAgICAgICAgY2hhciAgICAqc3RyLAog
ICAgICAgIGludCAgICAgbnVtLAogICAgICAgIGNvbnN0IEZSQU5HRSAgICAqZnJhbmdlcywKICAg
ICAgICBpbnQgICAgIG1heGxlbgogKTsKCnZvaWQgICAgIFVfU3ByaW50TldGRnJhbmdlKAogICAg
ICAgIGNoYXIgICAgICAgICAgICAqc3RyLAogICAgICAgIGludCAgICAgICAgICAgICBudW0sCiAg
ICAgICAgY29uc3QgRlJBTkdFICAgICpmcmFuZ2VzLAogICAgICAgIGludCAgICAgICAgICAgICBt
YXhsZW4sCiAgICAgICAgQk9PTEVBTiAgICAgICAgIHVzZVdmTnVtcwogKTsKCmludCBVX0ZyYW1l
SW5GcmFuZ2UoCiAgICAgICAgaW50ICAgICBmcmFtZSwKICAgICAgICBpbnQgICAgIG51bSwKICAg
ICAgICBGUkFOR0UgICpmcmFuZ2VzCiApOwoKaW50IFVfSXNBRnJhbmdlKAogICAgICAgIGNvbnN0
IGNoYXIgICp0b2tlbgogKTsKCmludCBVX0lzQUZyYW5nZTIoCiAgICAgICAgY29uc3QgY2hhciAg
KnRva2VuCiApOwoKCiAKCnZvaWQgTUVNX0NoZWNrQXZhaWwoCiAgICBpbnQgKmZyZWVtZW0sCiAg
ICBpbnQgKmZyZWVzd3AKICk7CgoKIAoKdm9pZCAgICAgVV9HZXRFeHRlbigKICAgICAgICAgICAg
Q0hBUiAqZmlsZSwgICAgICAKICAgICAgICAgICAgQ0hBUiAqb3V0ZmlsZSwgICAgICAgCiAgICAg
ICAgICAgIGNvbnN0IENIQVIgKmV4dGVuICAgIAogKTsKCklOVCAgICAgVV9FeHRyYWN0RXh0ZW4o
CiAgICAgICAgICAgIGNvbnN0IENIQVIgKmZpbGUsICAgICAgICAKICAgICAgICAgICAgQ0hBUiAq
ZXh0ZW4gIAogKTsKCnZvaWQgICAgIFVfU3RyaXBFeHRlbigKICAgICAgICAgICAgY29uc3QgQ0hB
UiAqZmlsZSwgICAgICAgIAogICAgICAgICAgICBDSEFSICpvdXRmaWxlLCAgICAgICAKICAgICAg
ICAgICAgQ0hBUiAqZXh0ZW4gIAogKTsKCnZvaWQgICAgIFVfQnVpbGRGaWxlTmFtZSgKICAgICAg
ICAgICAgQ0hBUiAgICAqb3JpZywKICAgICAgICAgICAgQ0hBUiAgICAqb3V0LAogICAgICAgICAg
ICBJTlQgICAgIGZyYW1lCiApOwoKdm9pZCAgICAgVV9TcGxpdEZpbGVOYW1lKAogICAgICAgICAg
ICBDSEFSICAgICppbiwKICAgICAgICAgICAgQ0hBUiAgICAqYmFzZSwKICAgICAgICAgICAgSU5U
ICAgICAqZnJhbWUsCiAgICAgICAgICAgIENIQVIgICAgKmV4dG4KICk7Cgp2b2lkICAgICBVX1Nw
bGl0RG90RmlsZU5hbWUoCiAgICAgICAgICAgIENIQVIgICAgKmluLAogICAgICAgICAgICBDSEFS
ICAgICpiYXNlLAogICAgICAgICAgICBJTlQgICAgICpmcmFtZSwKICAgICAgICAgICAgQ0hBUiAg
ICAqZXh0bgogKTsKCnZvaWQgICAgIFVfU3BsaXRGaWxlTmFtZTIoCiAgICAgICAgICAgIENIQVIg
ICAgKmluLAogICAgICAgICAgICBDSEFSICAgICpiYXNlLAogICAgICAgICAgICBJTlQgICAgICpm
cmFtZSwKICAgICAgICAgICAgQ0hBUiAgICAqZXh0bgogKTsKCgogCgpjaGFyICpVX0dldExpbmUo
CiAgICAgICAgRklMRSAgICAqZnB0ciAgICAKICk7CgpSRUFMICpVX1JlYWRWYWx1ZXMoCiAgICAg
ICAgRklMRSAqZnB0ciwKICAgICAgICBJTlQgICpudW1iCiApOwoKCiAKCnZvaWQgTElOS19EZWJ1
ZygKICAgICAgICBpbnQgZmxhZwogKTsKCnZvaWQgKkxJTktfQWxsb2MoCiAgICAgICAgSU5UIHNp
emUsICAgIAogICAgICAgIElOVCBleHRyYSAgICAKICk7Cgp2b2lkIExJTktfRnJlZSgKICAgICAg
ICB2b2lkICpidWYsICAgICAgIAogICAgICAgIHZvaWQgKnB0ciAgICAgICAgCiApOwoKdm9pZCBM
SU5LX0ZyZWVBbGwoCiAgICAgICAgdm9pZCAqYnVmICAgICAgICAKICk7Cgp2b2lkICpMSU5LX0dl
dE5leHRGcmVlKAogICAgICAgIHZvaWQgKmJ1ZgogKTsKCnZvaWQgKkxJTktfSW5kZXgoCiAgICAg
ICAgdm9pZCAqYnVmLAogICAgICAgIGludCBpbmRleAogKTsKCgogCgpJTlQgVV9TZXRMb2NrKAog
ICAgICAgIENIQVIgICAgKmRldmljZSwKICAgICAgICBDSEFSICAgICptZXNzYWdlCiApOwoKSU5U
IFVfQ2xlYXJMb2NrKAogICAgICAgIENIQVIgICAgKmRldmljZQogKTsKCklOVCBVX05ldFNldExv
Y2soCiAgICAgICAgY29uc3QgQ0hBUiAgKmRldmljZSwKICAgICAgICBjb25zdCBDSEFSICAqbWVz
c2FnZQogKTsKCklOVCBVX05ldENsZWFyTG9jaygKICAgICAgICBjb25zdCBDSEFSICAqZGV2aWNl
CiApOwoKCiAKCklOVCBVX0xvZygKICAgICAgICBJTlQgICAgIGpvYiwKICAgICAgICBDSEFSICAg
IG9wZXIsCiAgICAgICAgSU5UICAgICBmcmFtZSwKICAgICAgICBJTlQgICAgIGNwdVNlYywKICAg
ICAgICBjb25zdCBDSEFSICAqZGVzYywKICAgICAgICBjb25zdCBDSEFSICAqbG9nZmlsZQogKTsK
CgogCgp2b2lkIE1BVEhfSW5pdFJhbmQoCiAgICAgICAgaW50IHNlZWQKICk7CgpTSE9SVCBNQVRI
X1Nob3J0UmFuZCgKICAgICAgICB2b2lkCiApOwoKSU5UIE1BVEhfUmFuZG9taXplKAogICAgICAg
IHZvaWQKICk7Cgp2b2lkIE1BVEhfU2VlZCgKICAgICAgICBJTlQgc2VlZAogKTsKCnZvaWQgTUFU
SF9HZXRQbGFuZUVxKAogICAgICAgIFZFUlRFWCAgKnZlcnRzLAogICAgICAgIElOVCAgICAgbnVt
YlZlcnRzLAogICAgICAgIFZFQ1Q0RCAgKnBsZXEKICk7Cgp2b2lkIE1BVEhfR2V0UGxhbmVFcURv
dWJsZSgKICAgICAgICBWRVJURVggICp2ZXJ0cywKICAgICAgICBJTlQgICAgIG51bWJWZXJ0cywK
ICAgICAgICBWRUNUNEQgICpwbGVxCiApOwoKRE9VQkxFIE1BVEhfVHJhc2hSZWdpZVplcm8gKAog
ICAgICAgIHZvaWQKICk7Cgp2b2lkIE1BVEhfR2V0Tm9ybWFsKAogICAgICAgIFZFUlRFWCAgKnZl
cnRzLAogICAgICAgIElOVCAgICAgbnVtYlZlcnRzLAogICAgICAgIFZFUlRFWCAgKm5vcm1hbAog
KTsKCklOVCBNQVRIX0ludGVyc2VjdExpbmUyZCgKICAgICAgICBGTE9BVCB4MWEsCiAgICAgICAg
RkxPQVQgeTFhLAogICAgICAgIEZMT0FUIHgxYiwKICAgICAgICBGTE9BVCB5MWIsCiAgICAgICAg
RkxPQVQgeDJhLAogICAgICAgIEZMT0FUIHkyYSwKICAgICAgICBGTE9BVCB4MmIsCiAgICAgICAg
RkxPQVQgeTJiLAogICAgICAgIEZMT0FUICp4LAogICAgICAgIEZMT0FUICp5CiApOwoKZmxvYXQg
TUFUSF9BdG9mICgKICAgIGNoYXIgICAgKmFzY2lpCiApOwoKdm9pZCBNQVRIX0ZQcmludEZsb2F0
KAogICAgICAgIEZJTEUgKmZwdHIsCiAgICAgICAgZmxvYXQgdmFsdWUKICk7CgpJTlQgTUFUSF9J
bnRlcnNlY3RQbGFuZUxpbmUoCiAgICAgICAgVkVDVDREICAqcGxhbmUsCiAgICAgICAgVkVSVEVY
ICAqcG50MSwKICAgICAgICBWRVJURVggICpwbnQyLAogICAgICAgIFZFUlRFWCAgKm91dAogKTsK
CklOVCBNQVRIX0VsZW1JbnNpZGUyZCgKICAgICAgICBWRVJURVggICpjb29yZHMsCiAgICAgICAg
SU5UICAgICBudW1iLAogICAgICAgIFJFQUwgICAgKnZlcnQsCiAgICAgICAgVkVDVDREICAqcGxh
bmVBcmcKICk7CgpJTlQgSW5zaWRlUG9seTJEKAogICAgICAgIFZFUlRFWCAgKmNvb3JkcywKICAg
ICAgICBJTlQgICAgIG51bWIsCiAgICAgICAgUkVBTCAgICAqdmVydCwKICAgICAgICBJTlQgICAg
IHcgICAgCiApOwoKSU5UIE1BVEhfSW50ZXJzZWN0U2VnMmQoCiAgICAgICAgRkxPQVQgeDFhLAog
ICAgICAgIEZMT0FUIHkxYSwKICAgICAgICBGTE9BVCB4MWIsCiAgICAgICAgRkxPQVQgeTFiLAog
ICAgICAgIEZMT0FUIHgyYSwKICAgICAgICBGTE9BVCB5MmEsCiAgICAgICAgRkxPQVQgeDJiLAog
ICAgICAgIEZMT0FUIHkyYiwKICAgICAgICBGTE9BVCAqeCwKICAgICAgICBGTE9BVCAqeQogKTsK
CklOVCBNQVRIX0ludGVyc2VjdExpbmVTZWcyZCgKICAgICAgICBGTE9BVCB4MWEsCiAgICAgICAg
RkxPQVQgeTFhLAogICAgICAgIEZMT0FUIHgxYiwKICAgICAgICBGTE9BVCB5MWIsCiAgICAgICAg
RkxPQVQgeDJhLAogICAgICAgIEZMT0FUIHkyYSwKICAgICAgICBGTE9BVCB4MmIsCiAgICAgICAg
RkxPQVQgeTJiLAogICAgICAgIEZMT0FUICp4LAogICAgICAgIEZMT0FUICp5CiApOwoKSU5UIE1B
VEhfQ2xpcFNlZ1RvUG9seSgKICAgICAgICBWRVJURVggICp2MEFyZywKICAgICAgICBWRVJURVgg
ICp2MUFyZywKICAgICAgICBWRVJURVggICp2ZXJ0cywKICAgICAgICBJTlQgICAgIG51bVZlcnRz
CiApOwoKSU5UIE1BVEhfQ2xpcExpbmVUb1BvbHkoCiAgICAgICAgVkVSVEVYICAqdjBBcmcsCiAg
ICAgICAgVkVSVEVYICAqdjFBcmcsCiAgICAgICAgVkVSVEVYICAqdmVydHMsCiAgICAgICAgSU5U
ICAgICBudW1WZXJ0cwogKTsKCnZvaWQgTUFUSF9HZXRQbGFuZUNvZGUoCiAgICAgICAgVkVDVDRE
ICAqcGxlcUFyZywKICAgICAgICBJTlQgICAgICp1LCAKICAgICAgICBJTlQgICAgICp2LCAKICAg
ICAgICBJTlQgICAgICp3CiApOwoKdm9pZCBNQVRIX01ha2VUaGlyZENvb3JkKAogICAgICAgIFZF
UlRFWCAgKnZlcnRzQXJnLAogICAgICAgIElOVCAgICAgbnVtVmVydHMsCiAgICAgICAgVkVDVDRE
ICAqcGxlcUFyZwogKTsKCklOVCBNQVRIX01ha2VXQ29vcmQoCiAgICAgICAgVkVSVEVYICAqdmVy
dHNBcmcsCiAgICAgICAgSU5UICAgICBudW1WZXJ0cywKICAgICAgICBWRUNUNEQgICpwbGVxQXJn
LAogICAgICAgIElOVCAgICAgdwogKTsKCnZvaWQgTUFUSF9NYWtlSW50ZXJzZWN0VygKICAgICAg
ICBWRVJURVggKnBudDFBcmcsCiAgICAgICAgVkVSVEVYICpwbnQyQXJnLAogICAgICAgIFZFUlRF
WCAqaW50ZXJBcmcsCiAgICAgICAgSU5UICAgIHcKICk7CgpJTlQgTUFUSF9JbnRlcnNlY3RQbGFu
ZXMoCiAgICAgICAgVkVDVDREICAqcGxlcTEsIAogICAgICAgIFZFQ1Q0RCAgKnBsZXEyLAogICAg
ICAgIFZFUlRFWCAgKnYxLCAKICAgICAgICBWRVJURVggICp2MgogKTsKCklOVCBNQVRIX0ludGVy
c2VjdFBvbHlzKAogICAgICAgIFZFUlRFWCAgKnAxVmVydHMsCiAgICAgICAgSU5UICAgICBudW0x
VmVydHMsCiAgICAgICAgVkVSVEVYICAqcDJWZXJ0cywKICAgICAgICBJTlQgICAgIG51bTJWZXJ0
cywKICAgICAgICBWRVJURVggICp2MSwgCiAgICAgICAgVkVSVEVYICAqdjIKICk7CgpJTlQgTUFU
SF9JbnNpZGVQb2x5M0QoCiAgICAgICAgVkVSVEVYICAqdmVydHMsICAgICAgCiAgICAgICAgaW50
ICAgICBOdW1PZlZlcnRzLAogICAgICAgIFZFQ1Q0RCAgKnBsYW5lLCAgICAgIAogICAgICAgIFZF
UlRFWCAgKmludGVyc2VjdCAgIAogKTsKCklOVCBNQVRIX0luc2lkZVBvbHkyRCgKICAgICAgICBW
RVJURVggICp2ZXJ0cywgICAgICAKICAgICAgICBpbnQgICAgIE51bU9mVmVydHMsCiAgICAgICAg
VkVSVEVYICAqaW50ZXJzZWN0LCAgCiAgICAgICAgSU5UICAgICB3ICAgICAgICAgICAgCiApOwoK
dm9pZCBNQVRIX0ZpbmRTcGhlcmVDb29yZCgKICAgICAgICBWRVJURVggICpvcmlnaW4sCiAgICAg
ICAgVkVSVEVYICAqcG50MiwKICAgICAgICBGTE9BVCAgICp6QW5nbGUsCiAgICAgICAgRkxPQVQg
ICAqeVJvdCwKICAgICAgICBGTE9BVCAgICpyYWRpdXMKICk7Cgp2b2lkIE1BVEhfVmVydGV4QXZl
KAogICAgICAgIFZFUlRFWCAgKnZlcnRzLAogICAgICAgIElOVCAgICAgbnVtYiwKICAgICAgICBS
RUFMICAgICp4LAogICAgICAgIFJFQUwgICAgKnksCiAgICAgICAgUkVBTCAgICAqegogKTsKCklO
VCBNQVRIX1BvaW50T25TZWczRCgKICAgICAgICBWRVJURVggICp2ZXJ0MSwKICAgICAgICBWRVJU
RVggICp2ZXJ0MiwKICAgICAgICBWRVJURVggICpwb2ludCwKICAgICAgICBSRUFMICAgIHRvbAog
KTsKCnZvaWQgTUFUSF9WZXJ0ZXhSZXZlcnNlKAogICAgICAgIFZFUlRFWCAqY29vcmRzLAogICAg
ICAgIElOVCBsZW5nCiApOwoKdm9pZCBNQVRIX0ZhY3RvckFsb25nU2VnbWVudCgKICAgICAgICBW
RVJURVggKnN0YXJ0LCAgIAogICAgICAgIFZFUlRFWCAqZW5kLCAgICAgCiAgICAgICAgVkVSVEVY
ICpwb2ludCwgICAKICAgICAgICBSRUFMICAgKmZhY3RvcgogKTsKClJFQUwgTUFUSF9GYXN0UG93
KAogICAgICAgIFJFQUwgICAgYmFzZSwKICAgICAgICBSRUFMICAgIGV4cG8KICk7CgpSRUFMIE1B
VEhfSVBvdygKICAgICAgICBSRUFMIG51bSwKICAgICAgICBJTlQgZXhwbwogKTsKCklOVCBNQVRI
X1F1YWRyYXRpY0VxdWF0aW9uKAogICAgRkxPQVQgICBBLAogICAgRkxPQVQgICBCLAogICAgRkxP
QVQgICBDLAogICAgRkxPQVQgICAqc29sMSwKICAgIEZMT0FUICAgKnNvbDIsCiAgICBGTE9BVCAg
ICpjaGVjazEsCiAgICBGTE9BVCAgICpjaGVjazIKICk7CgpCT09MRUFOIE1BVEhfUG9seWdvbjJE
Q2xvY2t3aXNlKAogICAgVkVSVDJEICAgICAgKmNvb3JkLAogICAgSU5UICAgICAgICAgbnVtYmVy
Q29vcmRzCiApOwoKQk9PTEVBTiBNQVRIX1BvaW50SW5Qb2x5Z29uMkQoCiAgICBWRVJUMkQgICAg
ICAqcG9pbnQsCiAgICBWRVJUMkQgICAgICAqY29vcmQsCiAgICBJTlQgICAgICAgICBudW1iZXJD
b29yZHMKICk7CgpjaGFyICpNQVRIX0Z0b2EgKAogICAgUkVBTCAgICB2YWx1ZQogKTsKCkJPT0xF
QU4gTUFUSF9TZXRNYXRoRnRvYVZlcmJvc2UgKAogICAgQk9PTEVBTiBzdGF0dXMKICk7CgpCT09M
RUFOIE1BVEhfR2V0TWF0aEZ0b2FWZXJib3NlICgKICAgIHZvaWQgCiApOwoKCiAKCnZvaWQgIE1B
VEhFUlJPUl9Jbml0ICgKICAgIHZvaWQgCiApOwoKSU5UIE1BVEhFUlJPUl9SZXBvcnQgKAogICAg
dm9pZCAKICk7CgoKIAoKdm9pZCBNQVRfSGFyZHdhcmVNdWx0KAogICAgICAgIElOVCBvbl9vZmYK
ICk7Cgp2b2lkIE1BVF9JZGVudGl0eSgKICAgICAgICBNQVRSSVggIG1hdHJpeEFyZwogKTsKCnZv
aWQgTUFUX0NvcHkgKAogICAgICAgIE1BVFJJWCAgZGVzdGluQXJnLCAKICAgICAgICBNQVRSSVgg
IHNvdXJjZUFyZwogKTsKCnZvaWQgTUFUX1dpbmRvdygKICAgICAgICBSRUFMICAgIHdsLCAKICAg
ICAgICBSRUFMICAgIHdyLCAKICAgICAgICBSRUFMICAgIHdiLCAKICAgICAgICBSRUFMICAgIHd0
LAogICAgICAgIFJFQUwgICAgd2gsIAogICAgICAgIFJFQUwgICAgd3ksIAogICAgICAgIFJFQUwg
ICAgd2UsCiAgICAgICAgUkVBTCAgICB3aW5kWzRdWzRdCiApOwoKSU5UIE1BVF9JbnZlcnNlKAog
ICAgICAgIGludCBkLCAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgTUFUUklYICBvcmdN
YXQsCiAgICAgICAgTUFUUklYICBpbnZNYXQKICk7Cgp2b2lkIE1BVF9UcmFuc2xhdGUoCiAgICAg
ICAgUkVBTCAgICB4LCAgICAgICAgICAgIAogICAgICAgIFJFQUwgICAgeSwgCiAgICAgICAgUkVB
TCAgICB6LAogICAgICAgIE1BVFJJWCAgbWF0cml4QXJnICAgIAogKTsKCnZvaWQgTUFUX1JvdGF0
ZSgKICAgICAgICBSRUFMICAgIGFuZ2xlLCAgICAgICAKICAgICAgICBpbnQgICAgIGF4aXMsICAg
ICAgICAKICAgICAgICBNQVRSSVggIG1hdHJpeEFyZyAgICAKICk7Cgp2b2lkIE1BVF9TY2FsZSgK
ICAgICAgICBSRUFMICAgIHgsIAogICAgICAgIFJFQUwgICAgeSwgCiAgICAgICAgUkVBTCAgICB6
LCAgICAgICAgICAgCiAgICAgICAgTUFUUklYICBtYXRyaXhBcmcgICAgCiApOwoKdm9pZCBNQVRf
U2tldygKICAgICAgICBSRUFMICAgIGZhY3RvcjEsIAogICAgICAgIFJFQUwgICAgZmFjdG9yMiwg
ICAgICAgICAKICAgICAgICBJTlQgICAgIGF4aXMsICAgICAgICAgICAgCiAgICAgICAgTUFUUklY
ICBtYXRyaXhBcmcgICAgICAgIAogKTsKCnZvaWQgTUFUX0RvdCgKICAgICAgICBWRUNUT1IgICpp
biwgICAgICAgICAgICAgCiAgICAgICAgUkVBTCAgICAqb3V0LCAgICAgICAgICAgIAogICAgICAg
IElOVCAgICAgbiwgICAgICAgICAgICAgICAKICAgICAgICBWRUNUT1IgICptICAgICAgICAgICAg
ICAgCiApOwoKdm9pZCBNQVRfUG9pbnRUcmFuc2Zvcm0oCiAgICAgICAgVkVDVE9SICAqaW4sICAg
ICAgICAgICAgIAogICAgICAgIFZFQ1RPUiAgKm91dCwgICAgICAgICAgICAKICAgICAgICBJTlQg
ICAgIG4sICAgICAgICAgICAgICAgCiAgICAgICAgTUFUUklYICBtICAgICAgICAgICAgICAgIAog
KTsKCnZvaWQgIE1BVF9Qb2ludFRyYW5zZm9ybSAoCiAgICBWRUNUT1IgICppbiwgICAgIAogICAg
VkVDVE9SICAqb3V0LCAgICAKICAgIElOVCAgICAgbiwgICAgICAgCiAgICBNQVRSSVggIG0gICAg
ICAgIAogKTsKCnZvaWQgIE1BVF9PbmVQb2ludFRyYW5zZm9ybSAoCiAgICAgICAgVkVDVE9SICAq
aW4sICAgICAKICAgICAgICBWRUNUT1IgICpvdXQsICAgIAogICAgICAgIE1BVFJJWCAgbSAgICAg
ICAgCiApOwoKdm9pZCBNQVRfVmVjdG9yVHJhbnNmb3JtKAogICAgICAgIFZFQ1Q0RCAqaW4sICAg
ICAgICAgICAgIAogICAgICAgIFZFQ1Q0RCAqb3V0LCAgICAgICAgICAgIAogICAgICAgIE1BVFJJ
WCBtICAgICAgICAgICAgICAgIAogKTsKCnZvaWQgIE1BVF9WZWN0b3JUcmFuc2Zvcm1Qb3N0TXVs
dCgKICAgICAgICBWRUNUNEQgKmluLCAgICAgICAgICAgICAKICAgICAgICBWRUNUNEQgKm91dCwg
ICAgICAgICAgICAKICAgICAgICBNQVRSSVggbSAgICAgICAgICAgICAgICAKICk7Cgp2b2lkIE1B
VF9BcmJSb3QoCiAgICAgICAgVkVDVE9SICAqcDEsICAgICAgICAgIAogICAgICAgIFZFQ1RPUiAg
KnAyLCAgICAgICAgICAKICAgICAgICBSRUFMICAgIGRlZ3JlZSwgICAgICAgCiAgICAgICAgTUFU
UklYICBtYXRyICAgICAgICAgIAogKTsKCnZvaWQgTUFUX0F4aXNSb3QoCiAgICAgICAgVkVDVE9S
ICpheGlzLCAgICAgICAKICAgICAgICBSRUFMICAgZGVncmVlLCAgICAgIAogICAgICAgIE1BVFJJ
WCBtYXQgICAgICAgICAgCiApOwoKdm9pZCBNQVRfUHJpbnQoCiAgICAgICAgTUFUUklYICBtYXQK
ICk7Cgp2b2lkIE1BVF9GcHJpbnQoCiAgICAgICAgRklMRSAgICAqZnB0ciwKICAgICAgICBNQVRS
SVggIG1hdAogKTsKCnZvaWQgTUFUX0ZwcmludFdpdGhJbmRlbnQoCiAgICAgICAgRklMRSAgICAq
ZnB0ciwKICAgICAgICBJTlQgICAgIGluZGVudCwKICAgICAgICBNQVRSSVggIG1hdAogKTsKCnZv
aWQgTUFUX0VwcmludFdpdGhJbmRlbnQoCiAgICAgICAgRklMRSAgICAqZnB0ciwKICAgICAgICBJ
TlQgICAgIGluZGVudCwKICAgICAgICBNQVRSSVggIG1hdAogKTsKCnZvaWQgTUFUX1Byb2plY3Qo
CiAgICAgICAgUE9JTlQgICAqcG9pbnQsCiAgICAgICAgVkVDVDREICAqcGxhbmUsCiAgICAgICAg
TUFUUklYICBtYXQKICk7Cgp2b2lkIE1BVF9PcnRob1Byb2plY3QoCiAgICAgICAgUE9JTlQgICAq
cG9pbnQsCiAgICAgICAgVkVDVDREICAqcGxhbmUsCiAgICAgICAgTUFUUklYICBtYXQKICk7Cgp2
b2lkIE1BVF9SZWZsZWN0KAogICAgICAgIFZFQ1Q0RCAgKnBsYW5lLAogICAgICAgIE1BVFJJWCAg
bWF0CiApOwoKdm9pZCBNQVRfTWFrZVhmb3JtKAogICAgICAgIElOVCAgICAgZ2ltYmxlWzNdLAog
ICAgICAgIEZMT0FUICAgdHgsCiAgICAgICAgRkxPQVQgICB0eSwKICAgICAgICBGTE9BVCAgIHR6
LAogICAgICAgIEZMT0FUICAgcngsCiAgICAgICAgRkxPQVQgICByeSwKICAgICAgICBGTE9BVCAg
IHJ6LAogICAgICAgIEZMT0FUICAgc3gsCiAgICAgICAgRkxPQVQgICBzeSwKICAgICAgICBGTE9B
VCAgIHN6LAogICAgICAgIE1BVFJJWCAgbWF0CiApOwoKdm9pZCBNQVRfTWFrZUxvY2FsKAogICAg
ICAgIFZFUlRFWCAqY2VudGVyLAogICAgICAgIFZFUlRFWCAqYXhpcywKICAgICAgICBNQVRSSVgg
bWF0CiApOwoKSU5UIE1BVF9QZXJzcGVjdGl2ZSgKICAgICAgICBGTE9BVCAgIHdpZHRoLCAgICAg
CiAgICAgICAgRkxPQVQgICBhc3BlY3QsICAgIAoKICAgICAgICBGTE9BVCAgIGhpdGhlciwgICAg
CgogICAgICAgIEZMT0FUICAgeW9uLCAgICAgICAKICAgICAgICBNQVRSSVggIG1hdCAgICAgICAg
CiApOwoKdm9pZCBNQVRfVmlld3BvcnQoCiAgICAgICAgRkxPQVQgICAgICBsZWZ0LAogICAgICAg
IEZMT0FUICAgICAgcmlnaHQsCiAgICAgICAgRkxPQVQgICAgICBib3R0b20sCiAgICAgICAgRkxP
QVQgICAgICB0b3AsCiAgICAgICAgTUFUUklYICAgICBtYXQKICk7Cgp2b2lkIE1BVF9DYW1lcmEo
CiAgICAgICAgRkxPQVQgZm9jYWxMZW4sCiAgICAgICAgRkxPQVQgYXBlcnR1cmUsCiAgICAgICAg
RkxPQVQgYXNwZWN0LAogICAgICAgIEZMT0FUIGhpdGhlciwKICAgICAgICBGTE9BVCB5b24sCiAg
ICAgICAgTUFUUklYIG1hdAogKTsKCklOVCBNQVRfVmVjdFJvdGF0ZSgKICAgICAgICBWRVJURVgg
ICp0YXJnVmVjdCwKICAgICAgICBWRVJURVggICpjdXJWZWN0LAogICAgICAgIE1BVFJJWCAgbWF0
CiApOwoKSU5UIE1BVF9WZWN0Um90YXRlQWRqdXN0YWJsZSgKICAgICAgICBWRVJURVggICp0YXJn
VmVjdCwKICAgICAgICBWRVJURVggICpjdXJWZWN0LAogICAgICAgIFJFQUwgICAgYW1vdW50LCAg
ICAgIAogICAgICAgIE1BVFJJWCAgbWF0CiApOwoKdm9pZCBNQVRfQ29uY2F0KAogICAgICAgIE1B
VFJJWCBtYXQxLAogICAgICAgIE1BVFJJWCBtYXQyLAogICAgICAgIE1BVFJJWCBtYXQzCiApOwoK
dm9pZCBNQVRfQ29uY2F0KAogICAgICAgIE1BVFJJWCAgbWF0MUFyZywKICAgICAgICBNQVRSSVgg
IG1hdDJBcmcsCiAgICAgICAgTUFUUklYICBtYXQzQXJnCiApOwoKdm9pZCAgTUFUX0F0b01hdCgK
ICAgIGNvbnN0IENIQVIgICoqYXJndiwKICAgIE1BVFJJWCAgbWF0CiApOwoKdm9pZCAgTUFUX1Nw
cmludE1hdCgKICAgIENIQVIgICAgKnN0ciwKICAgIE1BVFJJWCAgbWF0CiApOwoKSU5UIE1BVF9D
b21wYXJlKAogICAgICAgIE1BVFJJWCAgbWF0MSwgCiAgICAgICAgTUFUUklYICBtYXQyCiApOwoK
SU5UIE1BVF9Db21wYXJlSXNDbG9zZSAoCiAgICBNQVRSSVggIG1hdDEsIAogICAgTUFUUklYICBt
YXQyCiApOwoKdm9pZCBNQVRfVHJhbnNwb3NlKAogICAgICAgIE1BVFJJWCAgbWF0MSwKICAgICAg
ICBNQVRSSVggIG1hdDIKICk7Cgp2b2lkIE1BVF9QaXZvdFRocmVlUm90cygKICAgICAgICBSRUFM
ICAgIHhvZmYsIAogICAgICAgIFJFQUwgICAgeW9mZiwgCiAgICAgICAgUkVBTCAgICB6b2ZmLAog
ICAgICAgIFJFQUwgICAgYW5nbGUxLAogICAgICAgIElOVCAgICAgYXhpczEsCiAgICAgICAgUkVB
TCAgICBhbmdsZTIsCiAgICAgICAgSU5UICAgICBheGlzMiwKICAgICAgICBSRUFMICAgIGFuZ2xl
MywKICAgICAgICBJTlQgICAgIGF4aXMzLAogICAgICAgIE1BVFJJWCAgbWF0CiApOwoKdm9pZCBN
QVRfUGl2b3RPbmVSb3QoCiAgICAgICAgUkVBTCAgICB4b2ZmLCAKICAgICAgICBSRUFMICAgIHlv
ZmYsIAogICAgICAgIFJFQUwgICAgem9mZiwKICAgICAgICBSRUFMICAgIGFuZ2xlLAogICAgICAg
IElOVCAgICAgYXhpcywKICAgICAgICBNQVRSSVggIG1hdAogKTsKCklOVCBNQVRfRmluZFJvdHMo
CiAgICAgICAgTUFUUklYICBtLAogICAgICAgIFJFQUwgICAgKnhSb3QsCiAgICAgICAgUkVBTCAg
ICAqeVJvdCwKICAgICAgICBSRUFMICAgICp6Um90CiApOwoKSU5UIE1BVF9GaW5kR2ltYmFsUm90
cygKICAgICAgICBNQVRSSVggIG0sCiAgICAgICAgUkVBTCAgICAqcm90cywKICAgICAgICBJTlQg
ICAgICpnaW1iYWwKICk7CgpSRUFMIE1BVF9EZXRlcm1pbmFudDMzb2Y0NCgKICAgICAgICAgICAg
ICAgIE1BVFJJWCBtCiApOwoKCiAKCnZvaWQgIFRSU01BVF9Db25jYXRYVHJhblRvTWF0ICgKICAg
IE1BVFJJWCAgaW5NYXQsCiAgICBSRUFMICAgIHZhbHVlLAogICAgTUFUUklYICBvdXRNYXQKICk7
Cgp2b2lkICBUUlNNQVRfQ29uY2F0WVRyYW5Ub01hdCAoCiAgICBNQVRSSVggIGluTWF0LAogICAg
UkVBTCAgICB2YWx1ZSwKICAgIE1BVFJJWCAgb3V0TWF0CiApOwoKdm9pZCAgVFJTTUFUX0NvbmNh
dFpUcmFuVG9NYXQgKAogICAgTUFUUklYICBpbk1hdCwKICAgIFJFQUwgICAgdmFsdWUsCiAgICBN
QVRSSVggIG91dE1hdAogKTsKCnZvaWQgIFRSU01BVF9Db25jYXRYU2NhbGVUb01hdCAoCiAgICBN
QVRSSVggIGluTWF0LAogICAgUkVBTCAgICB2YWx1ZSwKICAgIE1BVFJJWCAgb3V0TWF0CiApOwoK
dm9pZCAgVFJTTUFUX0NvbmNhdFlTY2FsZVRvTWF0ICgKICAgIE1BVFJJWCAgaW5NYXQsCiAgICBS
RUFMICAgIHZhbHVlLAogICAgTUFUUklYICBvdXRNYXQKICk7Cgp2b2lkICBUUlNNQVRfQ29uY2F0
WlNjYWxlVG9NYXQgKAogICAgTUFUUklYICBpbk1hdCwKICAgIFJFQUwgICAgdmFsdWUsCiAgICBN
QVRSSVggIG91dE1hdAogKTsKCnZvaWQgIFRSU01BVF9Db25jYXRBU2NhbGVUb01hdCAoCiAgICBN
QVRSSVggIGluTWF0LAogICAgUkVBTCAgICB2YWx1ZSwKICAgIE1BVFJJWCAgb3V0TWF0CiApOwoK
dm9pZCAgVFJTTUFUX0NvbmNhdFhSb3RUb01hdCAoCiAgICBNQVRSSVggIGluTWF0LAogICAgUkVB
TCAgICByYWRpYW5zLAogICAgTUFUUklYICBvdXRNYXQKICk7Cgp2b2lkICBUUlNNQVRfQ29uY2F0
WVJvdFRvTWF0ICgKICAgIE1BVFJJWCAgaW5NYXQsCiAgICBSRUFMICAgIHJhZGlhbnMsCiAgICBN
QVRSSVggIG91dE1hdAogKTsKCnZvaWQgIFRSU01BVF9Db25jYXRaUm90VG9NYXQgKAogICAgTUFU
UklYICBpbk1hdCwKICAgIFJFQUwgICAgcmFkaWFucywKICAgIE1BVFJJWCAgb3V0TWF0CiApOwoK
dm9pZCAgVFJTTUFUX1RyYW5zZm9ybU9uZVZlcnQgKAogICAgVkVSVEVYICAqaW4sCiAgICBWRVJU
RVggICpvdXQsCiAgICBNQVRSSVggIG1hdAogKTsKCnZvaWQgIFRSU01BVF9Qb2ludFRyYW5zZm9y
bSAoCiAgICBWRVJURVggICppbiwKICAgIFZFUlRFWCAgKm91dCwKICAgIElOVCAgICAgbnVtYmVy
LAogICAgTUFUUklYICBtYXQKICk7Cgp2b2lkICBUUlNNQVRfSWRlbnRpdHkgKAogICAgTUFUUklY
ICBtYXRyaXgKICk7CgpCT09MRUFOIFRSU01BVF9DaGVhcFZlcnRYUm90UmFkaWFuICgKICAgIFJF
QUwgICAgcmFkaWFucywKICAgIFZFUlRFWCAgKnZlcnQKICk7CgpCT09MRUFOIFRSU01BVF9DaGVh
cFZlcnRZUm90UmFkaWFuICgKICAgIFJFQUwgICAgcmFkaWFucywKICAgIFZFUlRFWCAgKnZlcnQK
ICk7CgpCT09MRUFOIFRSU01BVF9DaGVhcFZlcnRaUm90UmFkaWFuICgKICAgIFJFQUwgICAgcmFk
aWFucywKICAgIFZFUlRFWCAgKnZlcnQKICk7CgpCT09MRUFOIFRSU01BVF9DaGVhcFZlcnRYUm90
RGVncmVlICgKICAgIFJFQUwgICAgZGVncmVlcywKICAgIFZFUlRFWCAgKnZlcnQKICk7CgpCT09M
RUFOIFRSU01BVF9DaGVhcFZlcnRZUm90RGVncmVlICgKICAgIFJFQUwgICAgZGVncmVlcywKICAg
IFZFUlRFWCAgKnZlcnQKICk7CgpCT09MRUFOIFRSU01BVF9DaGVhcFZlcnRaUm90RGVncmVlICgK
ICAgIFJFQUwgICAgZGVncmVlcywKICAgIFZFUlRFWCAgKnZlcnQKICk7CgpCT09MRUFOIFRSU01B
VF9DaGVhcFZlcnRYUm90RGVncmVlMiAoCiAgICBSRUFMICAgIGRlZ3JlZXMsCiAgICBWRVJURVgg
ICp2ZXJ0SW4sCiAgICBWRVJURVggICp2ZXJ0T3V0CiApOwoKQk9PTEVBTiBUUlNNQVRfQ2hlYXBW
ZXJ0WVJvdERlZ3JlZTIgKAogICAgUkVBTCAgICBkZWdyZWVzLAogICAgVkVSVEVYICAqdmVydElu
LAogICAgVkVSVEVYICAqdmVydE91dAogKTsKCkJPT0xFQU4gVFJTTUFUX0NoZWFwVmVydFpSb3RE
ZWdyZWUyICgKICAgIFJFQUwgICAgZGVncmVlcywKICAgIFZFUlRFWCAgKnZlcnRJbiwKICAgIFZF
UlRFWCAgKnZlcnRPdXQKICk7Cgp2b2lkICBUUlNNQVRfQ29uY2F0ICgKICAgIE1BVFJJWCAgbWF0
MUFyZywKICAgIE1BVFJJWCAgbWF0MkFyZywKICAgIE1BVFJJWCAgbWF0M0FyZwogKTsKCnZvaWQg
IFJPVE1BVF9UcmFuc2Zvcm1PbmVWZXJ0ICgKICAgIFZFUlRFWCAgKmluLAogICAgVkVSVEVYICAq
b3V0LAogICAgTUFUUklYICBtYXQKICk7CgoKIAoKZmxvYXQgVV9DYWxjdWxhdGVTbGljZVRpbWUg
KAogICAgaW50IHdoaWNoU2VnbWVudCwKICAgIGludCB0b3RhbFNsaWNlcywKICAgIGZsb2F0IHNo
dXR0ZXJTdGFydCwKICAgIGZsb2F0IHNodXR0ZXJFbmQKICk7CgoKIAoKdm9pZCBNRU1fSW5pdCgK
ICAgICAgICBJTlQgICAgIGNvbnN0YW50Q2hlY2tpbmcgICAgCiApOwoKdm9pZCBNRU1fS2VlcFN0
YXRzKAogICAgICAgIHZvaWQKICk7Cgp2b2lkIE1FTV9DbG9zZVN0YXRzICgKICAgIHZvaWQKICk7
Cgp2b2lkIE1FTV9NYXJrU3RhdHMoCiAgICAgICAgY2hhciAqbWVzc2FnZQogKTsKCkZJTEUgKk1F
TV9HZXRNZW1GaWxlRnAgKAogICAgICAgIHZvaWQKICk7Cgp2b2lkICpNRU1fQWxsb2MoCiAgICAg
ICAgSU5UIG51bWIsICAgIAogICAgICAgIElOVCBzaXplLCAgICAKICAgICAgICBJTlQgZXh0cmEg
ICAgCiApOwoKSU5UIE1FTV9WZXJpZnkoIAogICAgICAgIHZvaWQgICAgICAgICAgICAqYnVmLAog
ICAgICAgIHJlZ2lzdGVyIGNoYXIgICAqbWVzc2FnZSAgICAgCiApOwoKdm9pZCAqTUVNX0NhbGxv
YygKICAgICAgICBJTlQgbnVtYiwgICAgCiAgICAgICAgSU5UIHNpemUsICAgIAogICAgICAgIElO
VCBleHRyYSAgICAKICk7Cgp2b2lkICpNRU1fQXBwZW5kKCAKICAgICAgICB2b2lkICpidWYsICAg
ICAgICAgICAKICAgICAgICBjb25zdCB2b2lkICphcnJheSwgICAKICAgICAgICBJTlQgbnVtYiAg
ICAgICAgICAgICAKICk7Cgp2b2lkICpNRU1fQ29weSgKICAgICAgICB2b2lkICpvdXQsICAgICAg
IAogICAgICAgIHZvaWQgKmluICAgICAgICAgCiApOwoKdm9pZCAqTUVNX1Jlc2l6ZSgKICAgICAg
ICB2b2lkICpidWYsICAgICAgIAogICAgICAgIElOVCAgbnVtYiAgICAgICAgCiApOwoKdm9pZCAq
TUVNX1RvdGFsU2l6ZSggCiAgICAgICAgdm9pZCAqYnVmLCAgICAgICAKICAgICAgICBJTlQgbnVt
YiAgICAgICAgIAogKTsKCnZvaWQgTUVNX1VzZVVwKCAKICAgICAgICB2b2lkICpidWYsICAgICAg
IAogICAgICAgIElOVCBudW1iICAgICAgICAgCiApOwoKdm9pZCBNRU1fRnJlZSggCiAgICAgICAg
dm9pZCAgICAqYnVmICAgICAgICAgCiApOwoKSU5UIE1FTV9GcmVlX1goIAogICAgICAgIHZvaWQg
ICAgKmJ1ZiwgICAKICAgICAgICBjaGFyICAgICptZXNzYWdlCiApOwoKdm9pZCBNRU1fR2V0TnVt
YiggCiAgICAgICAgdm9pZCAqYnVmLCAgICAgICAKICAgICAgICBJTlQgKm51bWIgICAgICAgIAog
KTsKCnZvaWQgTUVNX0dldFNpemUoIAogICAgICAgIHZvaWQgKmJ1ZiwgIAogICAgICAgIElOVCAq
c2l6ZQogKTsKCnZvaWQgTUVNX0dldE51bWJUaW1lc1NpemUoIAogICAgICAgIHZvaWQgKmJ1ZiwK
ICAgICAgICBJTlQgKnRvdGFsCiApOwoKdm9pZCBNRU1fR2V0VG90YWxCdWZmZXJNZW1vcnlVc2Fn
ZSgKICAgICAgICB2b2lkICAgICpidWYsICAgIAogICAgICAgIElOVCAgICAgKnRvdGFsICAgCiAp
OwoKdm9pZCBNRU1fR2V0TnVtYkV4dHJhKCAKICAgICAgICB2b2lkICpidWYsICAgICAgIAogICAg
ICAgIElOVCAqZXh0cmEgICAgICAgCiApOwoKdm9pZCBNRU1fU2V0TnVtYkV4dHJhKCAKICAgICAg
ICB2b2lkICpidWYsICAgICAgIAogICAgICAgIElOVCBleHRyYSAgICAgICAgCiApOwoKdm9pZCBN
RU1fR2V0SGVhZGVyKCAKICAgICAgICB2b2lkICpidWYsICAgICAgIAogICAgICAgIElOVCAqbnVt
YiwgICAgICAgCiAgICAgICAgSU5UICpzaXplLCAgICAgICAKICAgICAgICBJTlQgKmV4dHJhLCAg
ICAgIAogICAgICAgIElOVCAqYXZhaWwgICAgICAgCiApOwoKdm9pZCAqTUVNX1RtcCgKICAgICAg
ICBJTlQgbnVtYiwgICAgICAgIAogICAgICAgIElOVCBzaXplICAgICAgICAgCiApOwoKdm9pZCAq
TUVNX1RtcENhbGxvYyggCiAgICAgICAgSU5UIG51bWIsICAgCiAgICAgICAgSU5UIHNpemUgCiAp
OwoKdm9pZCBNRU1fRGVsZXRlKCAKICAgICAgICB2b2lkICpidWYKICk7CgpJTlQgTUVNX0RlbGV0
ZVNlZygKICAgICAgICB2b2lkICpidWYsICAgICAgIAogICAgICAgIElOVCBzdGFydCwgICAgICAg
CiAgICAgICAgSU5UIG51bWIgICAgICAgICAKICk7Cgp2b2lkICpNRU1fSW5zZXJ0KCAKICAgICAg
ICB2b2lkICpidWYsICAgICAgCiAgICAgICAgdm9pZCAqYXJyYXksICAgICAKICAgICAgICBJTlQg
c3RhcnQsICAgICAgIAogICAgICAgIElOVCBudW1iICAgICAgICAgCiApOwoKdm9pZCAqTUVNX1Nl
dE51bWIoCiAgICAgICAgdm9pZCAqYnVmLCAgICAgICAKICAgICAgICBJTlQgbnVtYiAgICAgICAg
IAogKTsKCnZvaWQgTUVNX0JyZWFrUG9pbnQoCiAgICAgICAgdm9pZAogKTsKCnZvaWQgTUVNX0No
ZWNrQWxsKAogICAgICAgIHZvaWQKICk7Cgp2b2lkIE1FTV9EZWJ1Z051bWIoCiAgICAgICAgY2hh
ciAqbWVzc2FnZQogKTsKCklOVCBNRU1fR2V0VG90YWwgKAogICAgICAgIHZvaWQKICk7Cgp2b2lk
IE1FTV9QcmludEFsbCgKICAgICAgICBGSUxFICAgICpmcHRyCiApOwoKSU5UIE1FTV9EZWJ1Z1By
aW50b3V0ICgKICAgICAgICB2b2lkICAgICAgICAgICAgKmJ1ZiwKICAgICAgICByZWdpc3RlciBj
aGFyICAgKm1lc3NhZ2UgICAgIAogKTsKCkJPT0xFQU4gTUVNX1NldFZlcmlmeU1lc3NhZ2VTdGF0
dXMgKAogICAgQk9PTEVBTiBzdGF0dXMKICk7CgpCT09MRUFOIE1FTV9HZXRWZXJpZnlNZXNzYWdl
U3RhdHVzICgKICAgIHZvaWQgCiApOwoKQk9PTEVBTiBNRU1fU2V0VmVyaWZ5TWVzc2FnZSAoCiAg
ICBjaGFyICAgICptZXNzYWdlUHRyCiApOwoKdm9pZCAgTUVNX0luaXRWZXJpZnlNZXNzYWdlICgK
ICAgIHZvaWQgCiApOwoKdm9pZCAgTUVNX0NvbmN1cnJlbnQgKAogICAgICAgIElOVCAgICAgZmxh
ZwogKTsKCgogCgpJTlQgICAgIE1OR1JfUmVnaXN0ZXJUYXNrKAogICAgICAgIENIQVIgICAgICAg
ICpwcm9nLAogICAgICAgIElOVCAgICAgICAgIGJlZ2luLAogICAgICAgIElOVCAgICAgICAgIGVu
ZCwKICAgICAgICBJTlQgICAgICAgICBpbmMsCiAgICAgICAgSU5UICAgICAgICAgZnJhbWUsCiAg
ICAgICAgSU5UICAgICAgICAgbXBQcm9jcwogKTsKCgogCgp2b2lkIFVUSUxQQVJTRV9EZWJsYW5r
KAogICAgICAgIGNoYXIgICAgKm9wZXJhbmQKICk7Cgp2b2lkIFVUSUxQQVJTRV9TdHJpcF9YX1do
aXRlc3BhY2UoCiAgICAgICAgY2hhciAgICAqbGluZQogKTsKCnZvaWQgVVRJTFBBUlNFX0RldGFi
KAogICAgICAgIGNoYXIgICAgKmxpbmUKICk7Cgp2b2lkIFVUSUxQQVJTRV9EZWJsYW5rKAogICAg
ICAgIGNoYXIgICAgKm9wZXJhbmQKICk7CgoKIAoKdm9pZCAgUFRSX0Fzc2lnbkFyYml0cmFyeSgg
CiAgICAgICAgdm9pZCAgKmZyb20sIAogICAgICAgIHZvaWQgICp0bwogKTsKCgogCgp2b2lkICBV
X0ZpbmRSb3QoCiAgICBWRVJURVggICpwbnQxLAogICAgVkVSVEVYICAqcG50MiwKICAgIEZMT0FU
ICAgKnpyb3QsCiAgICBGTE9BVCAgICp5cm90CiApOwoKdm9pZCAgVV9VblJvdGF0ZSAoCiAgICBN
QVRSSVggIG1hdHJvdCwKICAgIGZsb2F0ICAgcHJlZlJvbGwsCiAgICBmbG9hdCAgICp5YXcsCiAg
ICBmbG9hdCAgICpwaXRjaCwKICAgIGZsb2F0ICAgKnJvbGwKICk7CgoKIAoKdm9pZCAgTUFUSF9S
b3RhdGVUb1hZUGxhbmUoCiAgICAgICAgVkVSVEVYICpub3JtLAogICAgICAgIFJFQUwgKnhSb3Qs
CiAgICAgICAgUkVBTCAqeVJvdCAKICk7Cgp2b2lkICBNQVRIX1JvdGF0ZVRvWVpQbGFuZSgKICAg
ICAgICBWRVJURVggKm5vcm0sCiAgICAgICAgUkVBTCAqeVJvdCwKICAgICAgICBSRUFMICp6Um90
IAogKTsKCnZvaWQgIE1BVEhfUm90YXRlVG9YWlBsYW5lKAogICAgICAgIFZFUlRFWCAqbm9ybSwK
ICAgICAgICBSRUFMICp4Um90LAogICAgICAgIFJFQUwgKnpSb3QgCiApOwoKCiAKCnZvaWQgTUFU
SF9SdW5nZUt1dHRhNCgKICAgICAgICBSRUFMICAgICpjdXJyZW50U3RhdGUsIAogICAgICAgIFJF
QUwgICAgKm5ld1N0YXRlLCAKICAgICAgICBSRUFMICAgICpkZXJpdnMsCiAgICAgICAgSU5UICAg
ICBudW1iSXRlbXMsIAogICAgICAgIElOVCAgICAgaXRlbVNpemUsCiAgICAgICAgUkVBTCAgICB0
aW1lU2xpY2UsCiAgICAgICAgdm9pZCAgICAgKCpHZXREZXJpdnMpKAogICAgICAgICAgICAgICAg
ICAgIFJFQUwgICAgKmN1cnJlbnRTdGF0ZSwKICAgICAgICAgICAgICAgICAgICBSRUFMICAgICp0
bXBEZXJpdnMsCiAgICAgICAgICAgICAgICAgICAgSU5UICAgICBudW1iSXRlbXMsCiAgICAgICAg
ICAgICAgICAgICAgUFRSICAgICBleHRyYVB0cgogICAgICAgICAgICAgICAgKSwKICAgICAgICBQ
VFIgICAgIGV4dHJhUHRyCiApOwoKdm9pZCBNQVRIX1J1bmdlS3V0dGE0Q2xlYXJEZXJpdnMoCiAg
ICAgICAgUkVBTCAqZGVyaXZzLAogICAgICAgIElOVCAgbnVtYkl0ZW1zLCAKICAgICAgICBJTlQg
IGl0ZW1TaXplCiApOwoKdm9pZCBNQVRIX1J1bmdlS3V0dGE0QXBwbHlEZXJpdnMoCiAgICAgICAg
UkVBTCAqY3VycmVudFN0YXRlLCAKICAgICAgICBSRUFMICpuZXdTdGF0ZSwgCiAgICAgICAgUkVB
TCAqZGVyaXZzLAogICAgICAgIElOVCAgbnVtYkl0ZW1zLCAKICAgICAgICBJTlQgIGl0ZW1TaXpl
LAogICAgICAgIFJFQUwgdGltZVNsaWNlCiApOwoKdm9pZCBNQVRIX1J1bmdlS3V0dGE0Q29tYmlu
ZURlcml2cygKICAgICAgICBSRUFMICpkZXJpdnMsIAogICAgICAgIFJFQUwgKnRtcERlcml2cywK
ICAgICAgICBJTlQgIG51bWJJdGVtcywgCiAgICAgICAgSU5UICBpdGVtU2l6ZSwKICAgICAgICBS
RUFMICBmcmFjdAogKTsKCnZvaWQgTUFUSF9SdW5nZUt1dHRhNENvcHlEZXJpdnMoCiAgICAgICAg
UkVBTCAqZGVyaXZzLCAKICAgICAgICBSRUFMICp0bXBEZXJpdnMsCiAgICAgICAgSU5UICBudW1i
SXRlbXMsIAogICAgICAgIElOVCAgaXRlbVNpemUKICk7CgoKIAoKCiAKCnZvaWQgICAgICpNRU1N
X0dldFNoYXJlZEl0ZW0oCiAgICAgICAgQ0hBUiAgICAqZmlsZW5hbWUsCiAgICAgICAgQ0hBUiAg
ICAqdHlwZSwKICAgICAgICBJTlQgICAgICplcnJvciwKICAgICAgICBJTlQgICAgICptZW1Vc2Fn
ZSwKICAgICAgICBCT09MRUFOIGxvYWRJdGVtLAogICAgICAgIENIQVIgICAgKmxvYWRJdGVtSWQK
ICk7CgpJTlQgTUVNTV9NYWtlU2hhcmVkSXRlbSgKICAgICAgICBDSEFSICAgICpmaWxlbmFtZSwK
ICAgICAgICBDSEFSICAgICp0eXBlLAogICAgICAgIHZvaWQgICAgICpieXRlcywKICAgICAgICBJ
TlQgICAgIHNpemUsCiAgICAgICAgdm9pZCAgICAgKipyZXR1cm5Mb2MsCiAgICAgICAgQk9PTEVB
TiByZXR1cm5Mb2NhdGlvbiwKICAgICAgICBDSEFSICAgICpsb2FkSXRlbUlkLAogICAgICAgIElO
VCAgICAgdmVyYm9zZQogKTsKCklOVCBNRU1NX01ha2VTaGFyZWRJdGVtTm9Db3B5KAogICAgICAg
IENIQVIgICAgKmZpbGVuYW1lLAogICAgICAgIENIQVIgICAgKnR5cGUsCiAgICAgICAgSU5UICAg
ICBzaXplLAogICAgICAgIHZvaWQgICAgICoqcmV0dXJuTG9jLAogICAgICAgIENIQVIgICAgKmxv
YWRJdGVtSWQsCiAgICAgICAgSU5UICAgICB2ZXJib3NlCiApOwoKdm9pZCAgTUVNTV9SZWFkSXRl
bXMoCiAgICAgICAgICAgIHZvaWQgCiApOwoKSU5UIE1FTU1fRGVsZXRlT2xkKAogICAgICAgIElO
VCAgICAgbGlmZVNwYW4KICk7Cgp2b2lkICBNRU1NX1B1cmdlKAogICAgICAgICAgICB2b2lkIAog
KTsKCklOVCBNRU1NX1JlYWRJbmZvKAogICAgICAgIElOVCAgICAgKm1lbSwKICAgICAgICBJTlQg
ICAgICpsaWZlc3BhbgogKTsKCklOVCBNRU1NX1dyaXRlSW5mbygKICAgICAgICBJTlQgICAgIG1l
bSwKICAgICAgICBJTlQgICAgIGxpZmVzcGFuCiApOwoKSU5UIE1FTU1fRGVsZXRlS2V5KAogICAg
ICAgIElOVCAgICAga2V5CiApOwoKSU5UIE1FTU1fRGVsZXRlQWxsVXNlckRhdGEoCiAgICAgICAg
SU5UICAgICB1aWQKICk7CgpJTlQgTUVNTV9EZWxldGVBbGwoCiAgICAgICAgICAgIHZvaWQgCiAp
OwoKSU5UIE1FTU1fTWVtVXNlZCgKICAgICAgICAgICAgdm9pZCAKICk7Cgp2b2lkICAqTUVNTV9H
ZXRTaGFyZWRJdGVtKAogICAgICAgIENIQVIgICAgKmZpbGVuYW1lLAogICAgICAgIENIQVIgICAg
KnR5cGUsCiAgICAgICAgSU5UICAgICAqZXJyb3IsCiAgICAgICAgSU5UICAgICAqbWVtVXNhZ2Us
CiAgICAgICAgQk9PTEVBTiBsb2FkSXRlbSwKICAgICAgICBDSEFSICAgICpsb2FkSXRlbUlkCiAp
OwoKSU5UIE1FTU1fTWFrZVNoYXJlZEl0ZW0oCiAgICAgICAgQ0hBUiAgICAqZmlsZW5hbWUsCiAg
ICAgICAgQ0hBUiAgICAqdHlwZSwKICAgICAgICB2b2lkICAgICAqYnl0ZXMsCiAgICAgICAgSU5U
ICAgICBzaXplLAogICAgICAgIHZvaWQgICAgICoqbG9jLAogICAgICAgIEJPT0xFQU4gcmV0dXJu
TG9jYXRpb24sCiAgICAgICAgQ0hBUiAgICAqbG9hZEl0ZW1JZCwKICAgICAgICBJTlQgICAgIHZl
cmJvc2UKICk7CgpJTlQgTUVNTV9UYWxrKAogICAgICAgIE1FTU1fSVRFTSAgICpjbWRidWYKICk7
CgoKIAoKdm9pZCAgTUFUSF9HZXRTbmFrZU1hdHJpeCgKICAgICAgICBWRVJURVggKnBhdGgsCiAg
ICAgICAgSU5UIGN1ckluZGV4LAogICAgICAgIElOVCBjbG9zZWQsCiAgICAgICAgSU5UIHNlZywK
ICAgICAgICBJTlQgc3RhcnQsCiAgICAgICAgSU5UIGVuZCwKICAgICAgICBJTlQgdW5yb2xsLAog
ICAgICAgIE1BVFJJWCBtYXQgCiApOwoKdm9pZCAgTUFUSF9HZXRSYWlsTWF0cml4KAogICAgICAg
IFZFUlRFWCAgKnJhaWwxLAogICAgICAgIFZFUlRFWCAgKnJhaWwyLAogICAgICAgIElOVCAgICAg
cmFpbExlbmd0aCwgCiAgICAgICAgSU5UICAgICBpbmRleCwKICAgICAgICBWRVJURVggICp1cFZl
Y3QsCiAgICAgICAgVkVSVEVYICAqdmVydDEsCiAgICAgICAgVkVSVEVYICAqdmVydDIsCiAgICAg
ICAgSU5UICAgICBoZWlnaHRSZWxhdGl2ZSwKICAgICAgICBNQVRSSVggIG1hdCAsCiAgICAgICAg
Qk9PTEVBTiBub1NjYWxlCiApOwoKCiAKCnZvaWQgIFNPQ0tfUmVhcGVyKAogICAgICAgIHZvaWQg
CiApOwoKSU5UIFNPQ0tfUmVhZEJ1ZigKICAgICAgICBJTlQgICAgIGZkLAogICAgICAgIHZvaWQg
ICAgICpidWYsCiAgICAgICAgSU5UICAgICBsZW4gCiApOwoKSU5UIFNPQ0tfV3JpdGVCdWYoCiAg
ICAgICAgSU5UICAgICBmZCwKICAgICAgICBjb25zdCB2b2lkICAgKmJ1ZiwKICAgICAgICBJTlQg
ICAgIGxlbiAKICk7CgpJTlQgU09DS19PcGVuKAogICAgICAgIENIQVIgICAgKnNlcnZpY2UgCiAp
OwoKSU5UIFNPQ0tfQ29ubmVjdCgKICAgICAgICBjb25zdCBDSEFSICAqaG9zdCwKICAgICAgICBj
b25zdCBDSEFSICAqc2VydmljZSwKICAgICAgICBJTlQgICAgICplcnJvciAKICk7Cgp2b2lkICBT
T0NLX1NldFRpbWVvdXQoCiAgICAgICAgSU5UICAgICBsZW5ndGggCiApOwoKSU5UICAgICBTT0NL
X1VEUE9wZW4oCiAgICAgICAgQ0hBUiAgKnNlcnZpY2UKICk7CgpJTlQgICAgIFNPQ0tfU2VuZEJ1
ZigKICAgICAgICBJTlQgICAgICAgICAgICAgc29jaywKICAgICAgICBDSEFSICAgICAgICAgICAg
KmJ1ZiwKICAgICAgICBJTlQgICAgICAgICAgICAgbGVuLAogICAgICAgIHN0cnVjdCBpbl9hZGRy
ICAqYWRkciwKICAgICAgICBDSEFSICAgICAgICAgICAgKnNlcnZpY2UKICk7CgpJTlQgICAgIFNP
Q0tfU2VuZFBvcnRCdWYoCiAgICAgICAgSU5UICAgICAgICAgICAgIHNvY2ssCiAgICAgICAgQ0hB
UiAgICAgICAgICAgICpidWYsCiAgICAgICAgSU5UICAgICAgICAgICAgIGxlbiwKICAgICAgICBz
dHJ1Y3QgaW5fYWRkciAgKmFkZHIsCiAgICAgICAgSU5UICAgICAgICAgICAgIHBvcnQKICk7CgpJ
TlQgICAgIFNPQ0tfUmVjdkJ1ZigKICAgICAgICBJTlQgICAgICAgICAgICAgc29jaywKICAgICAg
ICBDSEFSICAgICAgICAgICAgKmJ1ZiwKICAgICAgICBJTlQgICAgICAgICAgICAgbGVuLAogICAg
ICAgIHN0cnVjdCBpbl9hZGRyICAqYWRkciwKICAgICAgICBJTlQgICAgICAgICAgICAgKnBvcnQK
ICk7CgoKIAoKdm9pZCBNQVRfU3RhY2tJbml0KAogICAgICAgIHZvaWQKICk7CgpJTlQgTUFUX1N0
YWNrQ2xlYXIoCiAgICAgICAgdm9pZAogKTsKCklOVCBNQVRfUHVzaCgKICAgICAgICBNQVRSSVgg
ICAgIG1hdAogKTsKCklOVCBNQVRfUHVzaFN0YWNrICgKICAgICAgICB2b2lkCiApOwoKSU5UIE1B
VF9Qb3AgKAogICAgICAgIHZvaWQKICk7CgpJTlQgTUFUX0NvbmNhdE9uU3RhY2soCiAgICAgICAg
TUFUUklYICAgICAgICAgbWF0CiApOwoKSU5UIE1BVF9Db25jYXRBbGwoCiAgICAgICAgTUFUUklY
ICAgICBtYXQKICk7CgpJTlQgTUFUX0dldExhc3RNYXQoCiAgICAgICAgTUFUUklYICBtYXQKICk7
CgpJTlQgTUFUX0xvYWQoCiAgICAgICAgTUFUUklYICAgICBtYXQKICk7CgoKIAoKY2hhciAqU1RS
X0ZuZCgKICAgICAgICBjaGFyICpzLAogICAgICAgIGNoYXIgKnQKICk7CgoKIAoKY2hhciAqVV9H
ZXRUb2tlbigKICAgICAgICBjaGFyICAgICpidWYsICAgICAgICAKICAgICAgICBjaGFyICAgICp0
b2tlbiwgICAgICAKICAgICAgICBpbnQgICAgICpsZW5ndGggICAgICAKICk7Cgp2b2lkIFVfR2V0
MkludHMoCiAgICAgICAgY2hhciAgICAqdG9rZW4sICAgICAgCiAgICAgICAgaW50ICAgICAqZmly
c3QsICAgICAgCiAgICAgICAgaW50ICAgICAqc2Vjb25kLCAgICAgCiAgICAgICAgaW50ICAgICAq
bnVtYmVyICAgICAgCiApOwoKY2hhciAqVV9GYXN0R2V0VG9rZW4oCiAgICAgICAgY29uc3QgY2hh
ciAgKmJ1ZiwgICAgICAgIAogICAgICAgIGNoYXIgICAgKnRva2VuLCAgICAgIAogICAgICAgIGlu
dCAgICAgKmxlbmd0aCAgICAgIAogKTsKCmNoYXIgKlVfR2V0V29yZCgKICAgICAgICBjb25zdCBj
aGFyICAqYnVmLCAgICAgICAgCiAgICAgICAgY2hhciAgICAqdG9rZW4sICAgICAgCiAgICAgICAg
aW50ICAgICAqbGVuZ3RoICAgICAgCiApOwoKSU5UIFVfTG9va3VwVG9rZW4oCiAgICAgICAgQ0hB
UiAgICAqdG9rZW4sCiAgICAgICAgQ0hBUiAgICAqKnRhYmxlLAogICAgICAgIElOVCAgICAgbnVt
LAogICAgICAgIEJPT0xFQU4gKmV4YWN0CiApOwoKSU5UIFVfTG9va3VwRXhhY3RUb2tlbigKICAg
ICAgICBDSEFSICAgICp0b2tlbiwKICAgICAgICBDSEFSICAgICoqdGFibGUsCiAgICAgICAgSU5U
ICAgICBudW0KICk7CgpDSEFSICAgICpVX0dldEFyYlRva2VuKAogICAgICAgIGNvbnN0IENIQVIg
ICpidWYsCiAgICAgICAgQ0hBUiAgICAqdG9rZW4sCiAgICAgICAgSU5UICAgICAqbGVuZ3RoLAog
ICAgICAgIENIQVIgICAgKmRlbGltaXRlcnMsCiAgICAgICAgQ0hBUiAgICAqZGVsY2hhcgogKTsK
CkNIQVIgICAgKlVfR2V0QXJiVG9rZW5BbGwoCiAgICAgICAgQ0hBUiAgICAqYnVmLAogICAgICAg
IENIQVIgICAgKnRva2VuLAogICAgICAgIElOVCAgICAgKmxlbmd0aCwKICAgICAgICBDSEFSICAg
ICpkZWxpbWl0ZXJzLAogICAgICAgIENIQVIgICAgKmRlbGNoYXIKICk7CgpDSEFSICAgICpVX0dl
dEFyYlRva2VuUGFyZW4oCiAgICAgICAgQ0hBUiAgICAqYnVmLAogICAgICAgIENIQVIgICAgKnRv
a2VuLAogICAgICAgIElOVCAgICAgKmxlbmd0aCwKICAgICAgICBDSEFSICAgICpkZWxpbWl0ZXJz
LAogICAgICAgIENIQVIgICAgKmRlbGNoYXIKICk7CgpDSEFSICAgICpVX0dldEFyYlRva2VuUGFy
ZW5BbGwoCiAgICAgICAgQ0hBUiAgICAqYnVmLAogICAgICAgIENIQVIgICAgKnRva2VuLAogICAg
ICAgIElOVCAgICAgKmxlbmd0aCwKICAgICAgICBDSEFSICAgICpkZWxpbWl0ZXJzLAogICAgICAg
IENIQVIgICAgKmRlbGNoYXIKICk7CgpJTlQgVV9XaWxkbWF0KAogICAgICAgIGNoYXIgICAgICAg
KnMsCiAgICAgICAgY2hhciAgICAgICAqcAogKTsKCgogCgp2b2lkIEFsbG9jTG9ja0FyZW5hKCAK
ICAgICAgICBjb25zdCBjaGFyICAqcHJvZ3JhbU5hbWUKICk7Cgp2b2lkICpJbml0TG9jayggCiAg
ICAgICAgdm9pZAogKTsKCnZvaWQgU2V0TG9jayggCiAgICAgICAgdm9pZCAqaGFuZGxlCiApOwoK
dm9pZCBVbnNldExvY2soIAogICAgICAgIHZvaWQqIGhhbmRsZQogKTsKCnZvaWQgRnJlZUxvY2so
CiAgICAgICAgdm9pZCogbG9jawogKTsKCnZvaWQgRnJlZUxvY2tBcmVuYSggCiAgICAgICAgdm9p
ZAogKTsKCgogCgp2b2lkIFVfVW5peFBhcnNlSU8oCiAgICAgICAgdm9pZCAoICpHZXRzICkoIGNo
YXIgKmdldHNCdWYgKSwKICAgICAgICB2b2lkICggKmVycm9yICkoCiAgICAgICAgICAgIGNvbnN0
IGNoYXIgKmJ1ZiwKICAgICAgICAgICAgaW50IHNpemUKICAgICAgICAgICAgKSwKICAgICAgICBG
SUxFICogKCAqcGFnZXJPcGVuICkoIHZvaWQgKSwKICAgICAgICB2b2lkICggKnBhZ2VyQ2xvc2Ug
KSggdm9pZCApCiApOwoKQ0hBUiAqVV9Vbml4UGFyc2UoCiAgICAgICAgSU5UICAgICBhcmdjLAog
ICAgICAgIGNvbnN0IENIQVIgICAgKiphcmd2LAogICAgICAgIE9fTElTVCAgKmZsYWdMaXN0LAog
ICAgICAgIElOVCAgICAgbnVtRmxhZ3MsCiAgICAgICAgSU5UICAgICAqKm9yZGVyLAogICAgICAg
IElOVCAgICAgKm9yZGVyQ291bnQKICk7CgpJTlQgVV9TcGxpdExpbmUoCiAgICAgICAgQ0hBUiAg
ICAqcywKICAgICAgICBDSEFSICAgICoqdgogKTsKCnZvaWQgVV9QcmludFVzYWdlKAogICAgICAg
IGNvbnN0IGNoYXIgICAgKmNvbW1hbmQsCiAgICAgICAgT19MSVNUICAqcGFybSwKICAgICAgICBJ
TlQgICAgIGxlbmcKICk7CgpJTlQgVV9DaGVja0hlbHAoCiAgICAgICAgSU5UICAgICAgICAgICBh
cmdjLAogICAgICAgIGNvbnN0IENIQVIgICAgKiphcmd2LAogICAgICAgIGNvbnN0IENIQVIgICAg
KmNvbW1hbmQsCiAgICAgICAgT19MSVNUICAgICAgICAqZmxhZ0xpc3QsCiAgICAgICAgSU5UICAg
ICAgICAgICBudW1GbGFncywKICAgICAgICBjb25zdCBDSEFSICAgICoqaGVscExpc3QKICk7CgpJ
TlQgVV9HZXRDb3VudCgKICAgICAgICBDSEFSICAgICpmbGFnLAogICAgICAgIE9fTElTVCAgKmZs
YWdMaXN0CiApOwoKSU5UIFVfR2V0SGl0Q291bnQoCiAgICAgICAgQ0hBUiAgICAqZmxhZywKICAg
ICAgICBPX0xJU1QgICpmbGFnTGlzdAogKTsKCnZvaWQgVV9QYXJzZVByb21wdCgKICAgICAgICBp
bnQgb25PZmYKICk7Cgp2b2lkIFVfUmVzZXRVbml4UGFyc2VMZXZlbCAoCiAgICAgICAgdm9pZAog
KTsKCnZvaWQgVV9DbGVhckhpdEFuZENvdW50KAogICAgICAgIE9fTElTVCAgKmZsYWdMaXN0LAog
ICAgICAgIElOVCAgICAgbnVtRmxhZ3MKICk7Cgp2b2lkIFVfRm9yY2VIaXRDb3VudCAoCiAgICBj
b25zdCBDSEFSICAqZmxhZywKICAgIE9fTElTVCAgICAgICpmbGFnTGlzdCwKICAgIElOVCAgICAg
ICAgIG5ld0NvdW50CiApOwoKdm9pZCBVX0luaXRUeXBlQXJyYXlMaXN0ICgKICAgICAgICB2b2lk
CiApOwoKSU5UIFVfTG9hZFR5cGVBcnJheUxpc3QoCiAgICAgICAgY2hhciAgICAqb3B0aW9uLAog
ICAgICAgIElOVCAgICAgbnVtYmVyLAogICAgICAgIElOVCAgICAgKmxpc3RJbnQKICk7CgpJTlQg
VV9Mb2FkVHlwZUFycmF5QXNjaWlMaXN0KAogICAgICAgIGNoYXIgICAgKm9wdGlvbiwKICAgICAg
ICBJTlQgICAgIG51bWJlciwKICAgICAgICBjaGFyICAgICpsaXN0QXNjaWkKICk7CgpJTlQgVV9G
aW5kVW5peFBhcnNlVHlwZSgKICAgICAgICBPX0xJU1QgICp3aGljaCwKICAgICAgICBJTlQgICAg
IGNvdW50CiApOwoKSU5UIFVfTG9hZFVuaXhQYXJzZURlc3RBZHIoCiAgICAgICAgY29uc3QgY2hh
ciAgICAqdG9CZUxvYWRlZCwKICAgICAgICBPX0xJU1QgICp3aGljaCwKICAgICAgICBJTlQgICAg
IHR5cGUKICk7CgpjaGFyICpVX1VuTG9hZFVuaXhQYXJzZURlc3RDb250ZW50cygKICAgICAgICBP
X0xJU1QgICp3aGljaCwKICAgICAgICBJTlQgICAgIHR5cGUsIAogICAgICAgIElOVCAgICAgaXRl
bQogKTsKCkJPT0xFQU4gVV9HZXRBbHBoYWJldGl6YXRpb25GbGFnICgKICAgIHZvaWQgCiApOwoK
Qk9PTEVBTiBVX1NldEFscGhhYmV0aXphdGlvbkZsYWcgKAogICAgQk9PTEVBTiBzdGF0dXMKICk7
CgoKIAoKQ0hBUiAgICAqVV9HZXRQcm9nbmFtZSgKICAgICAgICBDSEFSICAgICoqYXJndgogKTsK
CnZvaWQgVV9CYWlsKAogICAgICAgIENIQVIgKm1lc3NhZ2UKICk7CgpJTlQgVV9QZXJyb3IoCiAg
ICAgICAgQ0hBUiAqbWVzc2FnZQogKTsKCklOVCBVX1N5c3RlbSgKICAgICAgICBjb25zdCBDSEFS
ICAqY29tbWFuZAogKTsKCkNIQVIgKlVfR2V0VmFyaWFibGUoCiAgICAgICAgY29uc3QgQ0hBUiAg
KnZhcmlhYmxlCiApOwoKU1RSSU5HICAqVV9GaW5kVmFyaWFibGUoCiAgICAgICAgY29uc3QgQ0hB
UiAgKm5hbWUKICk7CgpjaGFyICpVX0ZpbmRWYXJpYWJsZVB0cigKICAgIENIQVIgICAgKm5hbWUK
ICk7CgpJTlQgVV9TZXRWYXJpYWJsZSgKICAgICAgICBjb25zdCBDSEFSICAqdmFyaWFibGUsCiAg
ICAgICAgY29uc3QgQ0hBUiAgKmRlZmluaXRpb24KICk7CgpJTlQgVV9HZXROdW1iZXJWYXJpYWJs
ZXMgKAogICAgICAgIHZvaWQKICk7CgpjaGFyICpVX0dldFZhcmlhYmxlTmFtZSgKICAgICAgICBJ
TlQgd2hpY2gKICk7CgpjaGFyICpVX0dldFZhcmlhYmxlRGVmaW5pdGlvbigKICAgICAgICBJTlQg
d2hpY2gKICk7CgpDSEFSICpVX0dldEpvYk5hbWUoCiAgICAgICAgSU5UICAgICBqb2JudW0KICk7
Cgp2b2lkIFVfUHJpbnRDb3B5cmlnaHQoCiAgICAgICAgdm9pZAogKTsKCklOVCBVX0NhdGNoU2ln
bmFscygKICAgICAgICB2b2lkICAgICgqc2lnRnVuYykoKQogKTsKCkNIQVIgKlVfTWtUZW1wKAog
ICAgICAgIENIQVIgICAgKmFzCiApOwoKQ0hBUiAqVV9Na1RlbXBBbnl3aGVyZSgKICAgICAgICBD
SEFSICAgICphcywKICAgICAgICBDSEFSICAgICpsYXN0WAogKTsKCklOVCBVX01rU3RlbXAoCiAg
ICAgICAgQ0hBUiAgICAqYXMKICk7CgoKIAoKSU5UIFdJTERfTWF0Y2goCiAgICAgICAgY29uc3Qg
Q0hBUiAgKndpbGRDYXJkLAogICAgICAgIGNvbnN0IENIQVIgICpuYW1lLAogICAgICAgIElOVCAg
ICAgICAgIGNhc2VJbnNlbnNpdGl2ZQogKTsKCkJPT0xFQU4gV0lMRF9DYXNlSW5kZXBlbmRlbnRN
YXRjaCgKICAgICAgICBjb25zdCBjaGFyICAqcGF0dGVybiwKICAgICAgICBjb25zdCBjaGFyICAq
bmFtZQogKTsKCkJPT0xFQU4gV0lMRF9DYXNlRGVwZW5kZW50TWF0Y2goCiAgICAgICAgY29uc3Qg
Y2hhciAgKnBhdHRlcm4sCiAgICAgICAgY29uc3QgY2hhciAgKnRva2VuCiApOwoKCn0KCgoKCgoj
IDEzICIvc29mdHdhcmUvdGhhbGlhL2gvdXRpbC5lIiAyCgoKZXh0ZXJuIGNoYXIgICAgICpGaWxl
VHlwZXNbXTsgICAgICAgICAgICAgICAgCmV4dGVybiBJTlQgICAgICBVX0JpdHNbXTsgICAgICAg
ICAgICAgICAgICAgIAoKIyAxMTEgIi9zb2Z0d2FyZS90aGFsaWEvaC91dGlsLmgiIDIKCgojIDI0
ICJoL1BsdWdpblRlbXBsYXRlLmMiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMwog
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgpleHRlcm4gIkMiIHsgCgoKIAoKCgoKCgoKCgoK
CgoKCmVudW0KewogIF9JU3VwcGVyID0gKCggMCApIDwgOCA/ICgoMSA8PCAoIDAgKSkgPDwgOCkg
OiAoKDEgPDwgKCAwICkpID4+IDgpKSAsCSAKICBfSVNsb3dlciA9ICgoIDEgKSA8IDggPyAoKDEg
PDwgKCAxICkpIDw8IDgpIDogKCgxIDw8ICggMSApKSA+PiA4KSkgLAkgCiAgX0lTYWxwaGEgPSAo
KCAyICkgPCA4ID8gKCgxIDw8ICggMiApKSA8PCA4KSA6ICgoMSA8PCAoIDIgKSkgPj4gOCkpICwJ
IAogIF9JU2RpZ2l0ID0gKCggMyApIDwgOCA/ICgoMSA8PCAoIDMgKSkgPDwgOCkgOiAoKDEgPDwg
KCAzICkpID4+IDgpKSAsCSAKICBfSVN4ZGlnaXQgPSAoKCA0ICkgPCA4ID8gKCgxIDw8ICggNCAp
KSA8PCA4KSA6ICgoMSA8PCAoIDQgKSkgPj4gOCkpICwJIAogIF9JU3NwYWNlID0gKCggNSApIDwg
OCA/ICgoMSA8PCAoIDUgKSkgPDwgOCkgOiAoKDEgPDwgKCA1ICkpID4+IDgpKSAsCSAKICBfSVNw
cmludCA9ICgoIDYgKSA8IDggPyAoKDEgPDwgKCA2ICkpIDw8IDgpIDogKCgxIDw8ICggNiApKSA+
PiA4KSkgLAkgCiAgX0lTZ3JhcGggPSAoKCA3ICkgPCA4ID8gKCgxIDw8ICggNyApKSA8PCA4KSA6
ICgoMSA8PCAoIDcgKSkgPj4gOCkpICwJIAogIF9JU2JsYW5rID0gKCggOCApIDwgOCA/ICgoMSA8
PCAoIDggKSkgPDwgOCkgOiAoKDEgPDwgKCA4ICkpID4+IDgpKSAsCSAKICBfSVNjbnRybCA9ICgo
IDkgKSA8IDggPyAoKDEgPDwgKCA5ICkpIDw8IDgpIDogKCgxIDw8ICggOSApKSA+PiA4KSkgLAkg
CiAgX0lTcHVuY3QgPSAoKCAxMCApIDwgOCA/ICgoMSA8PCAoIDEwICkpIDw8IDgpIDogKCgxIDw8
ICggMTAgKSkgPj4gOCkpICwJIAogIF9JU2FsbnVtID0gKCggMTEgKSA8IDggPyAoKDEgPDwgKCAx
MSApKSA8PCA4KSA6ICgoMSA8PCAoIDExICkpID4+IDgpKSAJIAp9OwoKCiAKCgoKCgoKCgoKCmV4
dGVybiBfX2NvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwkgCmV4dGVybiBfX2Nv
bnN0IF9faW50MzJfdCAqX19jdHlwZV90b2xvd2VyOyAgCmV4dGVybiBfX2NvbnN0IF9faW50MzJf
dCAqX19jdHlwZV90b3VwcGVyOyAgCgoKCgoKCgoKCiAKCgoKZXh0ZXJuIGludCAgaXNhbG51bSAg
IChpbnQpICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGludCAgaXNhbHBoYSAgIChpbnQpICB0aHJvdyAo
KSAgIDsKZXh0ZXJuIGludCAgaXNjbnRybCAgIChpbnQpICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGlu
dCAgaXNkaWdpdCAgIChpbnQpICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGludCAgaXNsb3dlciAgIChp
bnQpICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGludCAgaXNncmFwaCAgIChpbnQpICB0aHJvdyAoKSAg
IDsKZXh0ZXJuIGludCAgaXNwcmludCAgIChpbnQpICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGludCAg
aXNwdW5jdCAgIChpbnQpICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGludCAgaXNzcGFjZSAgIChpbnQp
ICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGludCAgaXN1cHBlciAgIChpbnQpICB0aHJvdyAoKSAgIDsK
ZXh0ZXJuIGludCAgaXN4ZGlnaXQgICAoaW50KSAgdGhyb3cgKCkgICA7CgoKCgoKCiAKZXh0ZXJu
IGludCB0b2xvd2VyICAoaW50IF9fYykgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgdG91cHBl
ciAgKGludCBfX2MpICB0aHJvdyAoKSAgOwoKCgoKIAoKZXh0ZXJuIGludCBpc2FzY2lpICAoaW50
IF9fYykgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IHRvYXNjaWkgIChpbnQgX19jKSAgdGhy
b3cgKCkgIDsKCgoKCiAKCmV4dGVybiBpbnQgIF90b3VwcGVyICAgKGludCkgIHRocm93ICgpICAg
OwpleHRlcm4gaW50ICBfdG9sb3dlciAgIChpbnQpICB0aHJvdyAoKSAgIDsKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKZXh0ZXJuIF9faW5saW5lIGludAp0b2xvd2VyIChpbnQgX19jKSB0aHJvdyAoKSAK
ewogIHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYgPyBfX2N0eXBlX3RvbG93ZXJbX19j
XSA6IF9fYzsKfQoKZXh0ZXJuIF9faW5saW5lIGludAp0b3VwcGVyIChpbnQgX19jKSB0aHJvdyAo
KSAKewogIHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYgPyBfX2N0eXBlX3RvdXBwZXJb
X19jXSA6IF9fYzsKfQoKCiMgMTg2ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwoKCgoKCgoKCgoK
CgoKIyAyNzMgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCgoKfSAKCgojIDI1ICJoL1BsdWdpblRl
bXBsYXRlLmMiIDIKCgogCiAKIAoKdGVtcGxhdGUgPGNsYXNzIFQ+IFBsdWdpbkVudHJ5PFQ+OjpQ
bHVnaW5FbnRyeSAoVCAqeGYpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IElu
ZGV4IChQbHVnaW5UYWJsZTxUPjo6bmV4dEVudHJ5KQp7CiAgICAKICAgIAogICAgaWYgKHhmICE9
IF9fbnVsbCApIHsKICAgICAgICBmb3IgKGludCBpPTA7IGk8UGx1Z2luVGFibGU8VD46Om5leHRF
bnRyeTsgaSsrKSB7CgogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKFBsdWdpblRhYmxlPFQ+
Ojp0YWJsZVtpXSAhPSBfX251bGwgICYmIAogICAgICAgICAgICAgICAgICAgc3RyY2FzZWNtcCAo
UGx1Z2luVGFibGU8VD46OnRhYmxlW2ldLT5HZXROYW1lKCksIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGYtPkdldE5hbWUoKSkgPT0g
MCkgewogICAgICAgICAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiUFJPR1JBTU1FUiBFUlJPUiAt
IFBsdWdpbkVudHJ5PHR5cGU+IgogICAgICAgICAgICAgICAgICAgICAgICAgIjo6UGx1Z2luRW50
cnkoKSIKICAgICAgICAgICAgICAgICAgICAgICAgICJlbnRyeSAlcyBpcyBhbWJpZ3VvdXMgd2l0
aCAlcyIsIHhmLT5HZXROYW1lICgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIFBsdWdpblRh
YmxlPFQ+Ojp0YWJsZVtpXS0+R2V0TmFtZSAoKSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgoKICAgIAogICAgaWYgKFBsdWdpblRhYmxlPFQ+
OjpjaGVja1RhYmxlU2l6ZSgpKSB7CiAgICAgICAgUGx1Z2luVGFibGU8VD46OnRhYmxlW0luZGV4
XSA9IHhmOwogICAgICAgIFBsdWdpblRhYmxlPFQ+OjpuZXh0RW50cnkgICsrOwogICAgICAgIFBs
dWdpblRhYmxlPFQ+OjpudW1FbnRyaWVzICsrOwogICAgfQp9CgoKdGVtcGxhdGUgPGNsYXNzIFQ+
IFBsdWdpbkVudHJ5PFQ+Ojp+UGx1Z2luRW50cnkgKCkKewogICAgCiAgICBpZiAodGhpcy0+SW5k
ZXggPj0gMCAmJiBQbHVnaW5UYWJsZTxUPjo6dGFibGUgIT0gX19udWxsICAmJiAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbHVnaW5UYWJsZTxUPjo6dGFibGVb
dGhpcy0+SW5kZXhdICE9IF9fbnVsbCApIHsKICAgICAgICBkZWxldGUgUGx1Z2luVGFibGU8VD46
OnRhYmxlW3RoaXMtPkluZGV4XTsKICAgICAgICBQbHVnaW5UYWJsZTxUPjo6dGFibGVbdGhpcy0+
SW5kZXhdID0gX19udWxsIDsKICAgICAgICBQbHVnaW5UYWJsZTxUPjo6bnVtRW50cmllcyAtLTsK
ICAgIH0KCiAgICAKICAgIGlmIChQbHVnaW5UYWJsZTxUPjo6bnVtRW50cmllcyA9PSAwKSB7CiAg
ICAgICAgZnJlZSAoUGx1Z2luVGFibGU8VD46OnRhYmxlKTsKICAgICAgICBQbHVnaW5UYWJsZTxU
Pjo6dGFibGUgPSBfX251bGwgOwogICAgfQp9CgogCiAKIAogCiAKCiAKIAogCnRlbXBsYXRlIDxj
bGFzcyBUPiBUICoqUGx1Z2luVGFibGU8VD46OnRhYmxlICAgICAgPSBfX251bGwgOwp0ZW1wbGF0
ZSA8Y2xhc3MgVD4gaW50IFBsdWdpblRhYmxlPFQ+OjptYXhFbnRyaWVzID0gMDsKdGVtcGxhdGUg
PGNsYXNzIFQ+IGludCBQbHVnaW5UYWJsZTxUPjo6bmV4dEVudHJ5ICA9IDA7CnRlbXBsYXRlIDxj
bGFzcyBUPiBpbnQgUGx1Z2luVGFibGU8VD46Om51bUVudHJpZXMgPSAwOwoKIAoKCgogCiAKIAoK
dGVtcGxhdGUgPGNsYXNzIFQ+IGludCBQbHVnaW5UYWJsZTxUPjo6R2V0TmV4dEluZGV4ICgKICAg
IGludCBzdGFydGluZ0luZGV4CiAgICApCnsKICAgIAogICAgZm9yIChpbnQgaT1zdGFydGluZ0lu
ZGV4OyBpPG5leHRFbnRyeTsgaSsrKSB7CiAgICAgICAgaWYgKHRhYmxlW2ldICE9IF9fbnVsbCAp
CiAgICAgICAgICAgIHJldHVybiBpOwogICAgfQoKICAgIAogICAgcmV0dXJuIC0xIDsKfQoKIAog
CiAKCnRlbXBsYXRlIDxjbGFzcyBUPiBpbnQgUGx1Z2luVGFibGU8VD46OkdldE51bUFjdGl2ZUVu
dHJpZXMgKCkKewogICAgaW50IGNvdW50ID0gMDsKICAgIAogICAgZm9yIChpbnQgaT0wOyBpPG5l
eHRFbnRyeTsgaSsrKSB7CiAgICAgICAgaWYgKHRhYmxlW2ldICE9IF9fbnVsbCApCiAgICAgICAg
ICAgIGNvdW50ICsrOwogICAgfQogICAgcmV0dXJuIGNvdW50Owp9CgogCiAKIAogCiAKIAogCiAK
IAoKdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0IGNoYXIgKlBsdWdpblRhYmxlPFQ+OjpDaGVja0Fs
aWFzICgKICAgIGNvbnN0IGNoYXIgKm5hbWUsIAogICAgY29uc3QgY2hhciAqYWxpYXNlcwogICAg
KQp7CiAgICAKICAgIGNvbnN0IGNoYXIgKmFsaWFzID0gYWxpYXNlczsKICAgIHdoaWxlICgqbmFt
ZSAmJiAqYWxpYXMgJiYgdG9sb3dlcigqbmFtZSkgPT0gdG9sb3dlcigqYWxpYXMpKSB7CiAgICAg
ICAgKm5hbWUgKys7CiAgICAgICAgKmFsaWFzICsrOwogICAgfQoKICAgIAogICAgaWYgKCpuYW1l
ID09ICdcMCcgJiYgKCphbGlhcyA9PSAnICcgfHwgKmFsaWFzID09ICdcMCcpKQogICAgICAgIHJl
dHVybiBfX251bGwgOwogICAgZWxzZSB7CiAgICAgICAgCiAgICAgICAgd2hpbGUgKCphbGlhcyAh
PSAnXDAnICYmICphbGlhcyAhPSAnICcpCiAgICAgICAgICAgIGFsaWFzICsrOwogICAgICAgIHdo
aWxlICgqYWxpYXMgIT0gJ1wwJyAmJiAqYWxpYXMgPT0gJyAnKQogICAgICAgICAgICBhbGlhcyAr
KzsKICAgICAgICByZXR1cm4gYWxpYXM7CiAgICB9Cn0KCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFz
cyBUPiBpbnQgUGx1Z2luVGFibGU8VD46OkdldE5leHRJbmRleCAoCiAgICBjb25zdCBDSEFSICpu
YW1lLCAKICAgIGludCBzdGFydGluZ0luZGV4CiAgICApCnsKICAgIGludCBpLCBmb3VuZFdpbGRD
YXJkID0gMDsKICAgIGNvbnN0IGNoYXIgKndjU2VhcmNoID0gbmFtZTsKICAgIAogICAgCiAgICBm
b3IoIDsgKndjU2VhcmNoIDsgKyt3Y1NlYXJjaCApCiAgICAgICAgaWYgKCAqd2NTZWFyY2ggPT0g
JyonIHx8ICp3Y1NlYXJjaCA9PSAnPycgKSB7CiAgICAgICAgICAgIGZvdW5kV2lsZENhcmQgPSAx
OwogICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgCiAgICAKICAgIGZvciAoaT1z
dGFydGluZ0luZGV4OyBpPG5leHRFbnRyeTsgaSsrKSB7CiAgICAgICAgCiAgICAgICAgaWYgKHRh
YmxlW2ldID09IF9fbnVsbCApCiAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICBpZiAoIGZv
dW5kV2lsZENhcmQgKSB7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoIG5hbWVbMF0gPT0g
JyonICYmIG5hbWVbMV0gPT0gMCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAg
ICAgICB9CiAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChXSUxEX0Nhc2VJbmRlcGVu
ZGVudE1hdGNoIChuYW1lLCB0YWJsZVtpXS0+R2V0TmFtZSgpKSkgewogICAgICAgICAgICAgICAg
cmV0dXJuIGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGVsc2UgewogICAgICAg
ICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRhYmxlTmFtZSA9IHRh
YmxlW2ldLT5HZXROYW1lKCk7CiAgICAgICAgICAgIGlmICggdG9sb3dlciggKm5hbWUgKSA9PSB0
b2xvd2VyKCAqdGFibGVOYW1lICkgJiYKICAgICAgICAgICAgICAgICAhc3RyY2FzZWNtcCggbmFt
ZSwgdGFibGVOYW1lICkgKQogICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgfQoKICAg
IH0KCiAgICAKICAgIHJldHVybiAtMSA7Cn0KCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW50
IFBsdWdpblRhYmxlPFQ+OjpHZXRJbmRleCAoY29uc3QgQ0hBUiAqbmFtZSkKewogICAgCiAgICBp
bnQgcmV0dXJuVmFsdWUgPSBHZXRFeGFjdEluZGV4IChuYW1lKTsKICAgIGlmIChyZXR1cm5WYWx1
ZSA+PSAwKQogICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKCiAgICAKICAgIHJldHVyblZhbHVl
ID0gR2V0TmV4dEluZGV4IChuYW1lLCAwKTsKCiAgICAKICAgIGlmIChyZXR1cm5WYWx1ZSA9PSAt
MSApCiAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwoKICAgIAogICAgaWYgKEdldE5leHRJbmRl
eCAobmFtZSwgcmV0dXJuVmFsdWUgKyAxKSAhPSAtMSApCiAgICAgICAgcmV0dXJuIC0yIDsKCiAg
ICAKICAgIHJldHVybiByZXR1cm5WYWx1ZTsKfQoKCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4g
aW50IFBsdWdpblRhYmxlPFQ+OjpHZXRBbGlhc0luZGV4IChjb25zdCBDSEFSICpuYW1lKQp7CiAg
ICAKICAgIGZvciAoaW50IGk9MDsgaTxuZXh0RW50cnk7IGkrKykgewogICAgICAgIGNvbnN0IGNo
YXIgKmFsaWFzZXMgPSB0YWJsZVtpXS0+R2V0QWxpYXNlcygpOwogICAgICAgIHdoaWxlIChhbGlh
c2VzICYmICphbGlhc2VzICE9ICdcMCcpIHsKICAgICAgICAgICAgYWxpYXNlcyA9IENoZWNrQWxp
YXMgKG5hbWUsIGFsaWFzZXMpOwogICAgICAgICAgICBpZiAoYWxpYXNlcyA9PSBfX251bGwgKQog
ICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgfQogICAgfQoKICAgIAogICAgcmV0dXJu
IC0xIDsKfQoKIAogCiAKdGVtcGxhdGUgPGNsYXNzIFQ+IGludCBQbHVnaW5UYWJsZTxUPjo6R2V0
RXhhY3RJbmRleCAoY29uc3QgQ0hBUiAqbmFtZSkKewogICAgCiAgICBmb3IgKGludCBpPTA7IGk8
bmV4dEVudHJ5OyBpKyspIHsKICAgICAgICBpZiAodGFibGVbaV0gIT0gX19udWxsICAmJiBXSUxE
X0Nhc2VJbmRlcGVuZGVudE1hdGNoIChuYW1lLCB0YWJsZVtpXS0+R2V0TmFtZSgpKSkgewogICAg
ICAgICAgICByZXR1cm4gaTsKICAgICAgICB9CiAgICB9CgogICAgCiAgICByZXR1cm4gLTEgOwp9
CgogCiAKIAoKdGVtcGxhdGUgPGNsYXNzIFQ+IENIQVIgKlBsdWdpblRhYmxlPFQ+OjpHZXRBbGxN
YXRjaGVzIChjb25zdCBDSEFSICpuYW1lKQp7CiAgICBzdGF0aWMgQ0hBUiBhbGxOYW1lc1sxMDI0
XTsKICAgIENIQVIgKnB0ciA9IGFsbE5hbWVzOwoKICAgIAogICAgKnB0ciA9ICdcMCc7CgogICAg
aW50IGkgPSAtMTsKICAgIHdoaWxlICgxICkKICAgICAgICB7CiAgICAgICAgaSA9IEdldE5leHRJ
bmRleCAobmFtZSwgaSsxKTsKICAgICAgICBpZiAoaSA8IDApCiAgICAgICAgICAgIGJyZWFrOwoK
ICAgICAgICAKICAgICAgICBzdHJjcHkgKHB0ciwgR2V0RW50cnkoaSktPkdldE5hbWUoKSk7CiAg
ICAgICAgc3RyY2F0IChwdHIsICIsICIpOwogICAgICAgIHB0ciA9IHN0cmNociAocHRyLCAnXDAn
KTsKICAgICAgICB9CgogICAgCiAgICAqKHB0ci0yKSA9ICdcMCc7IAoKICAgIHJldHVybiBhbGxO
YW1lczsKfQoKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBUPiBUICpQbHVnaW5UYWJsZTxUPjo6R2V0
RW50cnkgKGludCBpKQp7CiAgICAKICAgIGlmIChpIDwgMCB8fCBpID49IG5leHRFbnRyeSkKICAg
ICAgICByZXR1cm4gX19udWxsIDsKCiAgICAKICAgIHJldHVybiAodGFibGVbaV0pOwp9CgogCiAK
IAoKdGVtcGxhdGUgPGNsYXNzIFQ+IFQgKlBsdWdpblRhYmxlPFQ+OjpHZXRFbnRyeSAoY29uc3Qg
Q0hBUiAqbmFtZSkKewogICAgaW50IGkgPSBHZXRJbmRleCAobmFtZSk7CgogICAgaWYgKGkgPCAw
KSAKICAgICAgICByZXR1cm4gX19udWxsIDsKICAgIGVsc2UKICAgICAgICByZXR1cm4gKHRhYmxl
W2ldKTsKfQoKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBUPiBUICpQbHVnaW5UYWJsZTxUPjo6R2V0
RXhhY3RFbnRyeSAoY29uc3QgQ0hBUiAqbmFtZSkKewogICAgaW50IGkgPSBHZXRFeGFjdEluZGV4
IChuYW1lKTsKCiAgICBpZiAoaSA8IDApIAogICAgICAgIHJldHVybiBfX251bGwgOwogICAgZWxz
ZQogICAgICAgIHJldHVybiAodGFibGVbaV0pOwp9CgogCiAKIAoKdGVtcGxhdGUgPGNsYXNzIFQ+
IFQgJlBsdWdpblRhYmxlPFQ+OjpvcGVyYXRvciBbXSAoCiAgICBpbnQgaQogICAgKQp7CiAgICBy
ZXR1cm4gKCpHZXRFbnRyeSAoaSkpOwp9CgogCiAKIAoKdGVtcGxhdGUgPGNsYXNzIFQ+IFQgJlBs
dWdpblRhYmxlPFQ+OjpvcGVyYXRvciBbXSAoCiAgICBjb25zdCBDSEFSICpuYW1lCiAgICApCnsK
ICAgIGludCBpID0gR2V0RXhhY3RJbmRleCAobmFtZSk7CgogICAgaWYgKGkgPCAwKSAKICAgICAg
ICBmcHJpbnRmIChzdGRlcnIsICJQUk9HUkFNTUVSIEVSUk9SIC0gUGx1Z2luVGFibGU8dHlwZT5b
XCIlc1wiXSIKICAgICAgICAgICAgICAgICAgICAgICAgICJkb2VzIG5vdCBleGlzdFxuIiwgbmFt
ZSk7CiAgICByZXR1cm4gKCoodGFibGVbaV0pKTsKfQoKIAogCiAKIAoKdGVtcGxhdGUgPGNsYXNz
IFQ+IEJPT0xFQU4gUGx1Z2luVGFibGU8VD46OmNoZWNrVGFibGVTaXplICgpCnsKICAgIAogICAg
aWYgKG5leHRFbnRyeSA+PSBtYXhFbnRyaWVzKSB7CgogICAgICAgIAogICAgICAgIAogICAgICAg
IAogICAgICAgIGlmICh0YWJsZSA9PSBfX251bGwgKSAKICAgICAgICB7CiAgICAgICAgICAgIHRh
YmxlID0gKFQgKiopIG1hbGxvYyAoMTAwICAqIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoUGx1Z2luQ2xhc3MgKikpOwogICAgICAg
ICAgICBtYXhFbnRyaWVzID0gMTAwIDsKICAgICAgICB9CiAgICAgICAgZWxzZSAKICAgICAgICB7
CiAgICAgICAgICAgIHRhYmxlID0gKFQgKiopIHJlYWxsb2MgKCh2b2lkICopdGFibGUsIChtYXhF
bnRyaWVzICsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MCApICogc2l6ZW9m
IChQbHVnaW5DbGFzcyAqKSk7CiAgICAgICAgICAgIG1heEVudHJpZXMgKz0gNTAgOwogICAgICAg
IH0KICAgIH0KCiAgICAKICAgIGlmICh0YWJsZSA9PSBfX251bGwgKSB7CiAgICAgICAgZnByaW50
ZiAoc3RkZXJyLCAiUFJPR1JBTU1FUiBFUlJPUiAtIFBsdWdpblRhYmxlPHR5cGU+OjoiCiAgICAg
ICAgICAgICAgICAgICAgICAgICAidGFibGUgZGlkIG5vdCBnZXQgYWxsb2NhdGVkLiIpOwogICAg
ICAgIHJldHVybiAwIDsKICAgIH0KCiAgICByZXR1cm4gMSA7Cn0KIyAxMDYgImgvUGx1Z2luVGVt
cGxhdGUuaCIgMgoKCgoKIyAyMyAibnJoeS9OUkhZX0FjY2Vzcy5jIiAyCgojIDEgIi9zb2Z0d2Fy
ZS90aGFsaWEvaC90eHQuaCIgMQogCgoKCgoKCgoKCgoKCgogCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkYXJnLmgiIDEgMwog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIv
YWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3ZhLWFscGhhLmgiIDEgMwog
CgogCgoKCgogCgojIDI1ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2Nz
LTIuOTEuNjYvaW5jbHVkZS92YS1hbHBoYS5oIiAzCgoKIAoKCgoKCgoKCnR5cGVkZWYgX19nbnVj
X3ZhX2xpc3QgdmFfbGlzdDsKCiMgNDkgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxp
bnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3ZhLWFscGhhLmgiIDMKCgogCgogCgoKCgoKCgoKCgoK
CgoKCgogCgplbnVtIHsKICBfX25vX3R5cGVfY2xhc3MgPSAtMSwKICBfX3ZvaWRfdHlwZV9jbGFz
cywKICBfX2ludGVnZXJfdHlwZV9jbGFzcywKICBfX2NoYXJfdHlwZV9jbGFzcywKICBfX2VudW1l
cmFsX3R5cGVfY2xhc3MsCiAgX19ib29sZWFuX3R5cGVfY2xhc3MsCiAgX19wb2ludGVyX3R5cGVf
Y2xhc3MsCiAgX19yZWZlcmVuY2VfdHlwZV9jbGFzcywKICBfX29mZnNldF90eXBlX2NsYXNzLAog
IF9fcmVhbF90eXBlX2NsYXNzLAogIF9fY29tcGxleF90eXBlX2NsYXNzLAogIF9fZnVuY3Rpb25f
dHlwZV9jbGFzcywKICBfX21ldGhvZF90eXBlX2NsYXNzLAogIF9fcmVjb3JkX3R5cGVfY2xhc3Ms
CiAgX191bmlvbl90eXBlX2NsYXNzLAogIF9fYXJyYXlfdHlwZV9jbGFzcywKICBfX3N0cmluZ190
eXBlX2NsYXNzLAogIF9fc2V0X3R5cGVfY2xhc3MsCiAgX19maWxlX3R5cGVfY2xhc3MsCiAgX19s
YW5nX3R5cGVfY2xhc3MKfTsKCiAKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
IyAzNiAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2lu
Y2x1ZGUvc3RkYXJnLmgiIDIgMwoKIyAxMjYgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0
LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoKCgoKCgoKCgogCiAKCgoK
CgoKCgoKCgoKCiMgMTY4ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2Nz
LTIuOTEuNjYvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCiAKCgoKIyAxOTggIi91c3IvbGliL2djYy1s
aWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoK
CgoKCgoKIyAxNiAiL3NvZnR3YXJlL3RoYWxpYS9oL3R4dC5oIiAyCgoKIyAxICIvc29mdHdhcmUv
dGhhbGlhL2gvc3RkdHlwZXMuaCIgMQoKIAoKCgoKCgoKCgoKCgoKCgoKCiMgMjAzICIvc29mdHdh
cmUvdGhhbGlhL2gvc3RkdHlwZXMuaCIKCgoKCgoKCgoKCgoKCgojIDE4ICIvc29mdHdhcmUvdGhh
bGlhL2gvdHh0LmgiIDIKCgogCgoKIAogCiAKIAogCgplbnVtIFNldmVyaXR5IHsKICAgIFNFVl9C
QVNFICAgICAgICA9ICAwLAogICAgU0VWX05PVEUgICAgICAgID0gIDEsCiAgICBTRVZfQ0FVVElP
TiAgICAgPSAgMiwKICAgIFNFVl9XQVJOSU5HICAgICA9ICAzLAogICAgU0VWX0VSUk9SICAgICAg
ID0gIDUsCiAgICBTRVZfUFJPR19FUlJPUiAgPSAgNiwKICAgIFNFVl9TRVJJT1VTICAgICA9ICA3
LAogICAgU0VWX0ZBVEFMICAgICAgID0gIDksCiAgICBTRVZFUklUWV8wICAgICAgPSAgMCwKICAg
IFNFVkVSSVRZXzEgICAgICA9ICAxLAogICAgU0VWRVJJVFlfMiAgICAgID0gIDIsCiAgICBTRVZF
UklUWV8zICAgICAgPSAgMywKICAgIFNFVkVSSVRZXzQgICAgICA9ICA0LAogICAgU0VWRVJJVFlf
NSAgICAgID0gIDUsCiAgICBTRVZFUklUWV82ICAgICAgPSAgNiwKICAgIFNFVkVSSVRZXzcgICAg
ICA9ICA3LAogICAgU0VWRVJJVFlfOCAgICAgID0gIDgsCiAgICBTRVZFUklUWV85ICAgICAgPSAg
OSwKICAgIFNFVl9JTkZPUk1BVElPTiA9IDEwLAogICAgU0VWX0hFTFAgICAgICAgID0gMTEsCiAg
ICBTRVZfUVVFU1RJT04gICAgPSAxMiwKICAgIFNFVl9VU0FHRSAgICAgICA9IDEzLAogICAgU0VW
X0hJTlQgICAgICAgID0gMTQsCiAgICBTRVZfRElBR05PU1RJQyAgPSAxNSwKICAgIFNFVl9EQVRB
ICAgICAgICA9IDE2LAogICAgU0VWX1NUQVRVUyAgICAgID0gMTcsCiAgICBTRVZfVU5LTk9XTiAg
ICAgPSAxOCwKICAgIFNFVl9NT0RBTCAgICAgICA9IDI1NiAgCn07CgogCiAKCnR5cGVkZWYgdm9p
ZCAoKlRYVF9PdXRwdXRDYWxsYmFjaykgICAgIChjb25zdCBjaGFyICosIHZvaWQgKik7CnR5cGVk
ZWYgdm9pZCAoKlRYVF9GaWxlT3V0cHV0Q2FsbGJhY2spIChGSUxFICosIGNvbnN0IGNoYXIgKiwg
dm9pZCAqKTsKdHlwZWRlZiBjaGFyICooKlRYVF9IZWFkZXJDYWxsYmFjaykgICAgKGNvbnN0IGNo
YXIgKik7CgogCmV4dGVybiBjb25zdCBjaGFyICpUWFRfU3JjRnVuYzsKZXh0ZXJuIGNvbnN0IGNo
YXIgKlRYVF9TcmNGaWxlOwpleHRlcm4gaW50ICAgVFhUX1NyY0xpbmU7CmV4dGVybiBpbnQgICBU
WFRfQXNzZXJ0Qm9vbDsKZXh0ZXJuIGNoYXIgKlRYVF9Bc3NlcnRTdHI7CmlubGluZSB2b2lkIFRY
VF9TZXRGdW5jIChjaGFyICpmKSB7IFRYVF9TcmNGdW5jID0gKGYpOyB9CgogCiMgMSAiL3NvZnR3
YXJlL3RoYWxpYS9oL3R4dC5wIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKY2hhciAqVFhUX0dl
dE1lc3NhZ2UgKAogICAgICAgIGNvbnN0IGNoYXIgKmxhYmVsLCAKICAgICAgICAuLi4KCSk7CgpC
T09MRUFOIFRYVF9Bc3NlcnRDb25kICgKICAgICAgICBCT09MRUFOIGNvbmQsIAogICAgICAgIEJP
T0xFQU4gc2hvdWxkQmUsIAogICAgICAgIGNvbnN0IGNoYXIgKmNvbmRTdHJpbmcsCiAgICAgICAg
Y29uc3QgY2hhciAqZmlsZSwKICAgICAgICBpbnQgbGluZQoJKTsKCkJPT0xFQU4gVFhUX0Fzc2Vy
dENvbmQgKAogICAgICAgIEJPT0xFQU4gY29uZCwgCiAgICAgICAgQk9PTEVBTiBzaG91bGRCZSwg
CiAgICAgICAgY29uc3QgY2hhciAqY29uZFN0cmluZwoJKTsKCkJPT0xFQU4gVFhUX0Fzc2VydE91
dHB1dGYgKAogICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgCiAgICAgICAgLi4uCgkpOwoKQk9P
TEVBTiBUWFRfQ2hlY2tOZXN0aW5nICgKICAgICAgICBpbnQgZXhwZWN0ZWRMZXZlbAoJKTsKCnZv
aWQgVFhUX091dHB1dCAoCiAgICAgICAgY29uc3QgY2hhciAqbGFiZWwsIAogICAgICAgIC4uLgoJ
KTsKCnZvaWQgVFhUX091dHB1dCAoCiAgICAgICAgRklMRSAqZnAsIAogICAgICAgIGNvbnN0IGNo
YXIgKmxhYmVsLCAKICAgICAgICAuLi4KCSk7Cgp2b2lkIFRYVF9PdXRwdXRmICgKICAgICAgICBj
b25zdCBjaGFyICpmb3JtYXQsIAogICAgICAgIC4uLgoJKTsKCnZvaWQgVFhUX091dHB1dGYgKAog
ICAgICAgIEZJTEUgKmZwLCAKICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsIAogICAgICAgIC4u
LgoJKTsKCnZvaWQgVFhUX091dHB1dGYgKAogICAgICAgIFNldmVyaXR5IHNldiwgCiAgICAgICAg
Y29uc3QgY2hhciAqZm9ybWF0LCAKICAgICAgICAuLi4KCSk7Cgp2b2lkIFRYVF9PdXRwdXRmICgK
ICAgICAgICBGSUxFICpmcCwgCiAgICAgICAgU2V2ZXJpdHkgc2V2LCAKICAgICAgICBjb25zdCBj
aGFyICpmb3JtYXQsIAogICAgICAgIC4uLgoJKTsKCnZvaWQgVFhUX091dHB1dERpYWdmICgKICAg
ICAgICBjb25zdCBjaGFyICpmb3JtYXQsIAogICAgICAgIC4uLgoJKTsKCnZvaWQgVFhUX091dHB1
dERpYWdmICgKICAgICAgICBGSUxFICpmcCwgCiAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAK
ICAgICAgICAuLi4KCSk7Cgp2b2lkIFRYVF9TZXREZWJ1ZyAoCiAgICAgICAgQk9PTEVBTiBmCgkp
OwoKQk9PTEVBTiBUWFRfR2V0RGVidWcgKCk7Cgp2b2lkIFRYVF9CZWdpbiAoKSAgICAgICAgICAg
ICAgICAgICAgIDsKCnZvaWQgVFhUX0VuZCAoKSAgICAgICAgICAgICAgICAgICA7Cgp2b2lkIFRY
VF9TZXRNaW5TZXZlcml0eSAoCiAgICAgICAgU2V2ZXJpdHkgc2V2CgkpOwoKU2V2ZXJpdHkgVFhU
X0dldE1pblNldmVyaXR5ICgpOwoKdm9pZCBUWFRfU2V0VmVyYm9zZSAoCiAgICAgICAgQk9PTEVB
TiBiCgkpOwoKQk9PTEVBTiBUWFRfR2V0VmVyYm9zZSAoKTsKCnZvaWQgVFhUX1NldERpYWcgKAog
ICAgICAgIEJPT0xFQU4gYgoJKTsKCmludCBUWFRfR2V0RGlhZyAoKTsKCnZvaWQgVFhUX1VzZVN0
eWxlICgKICAgICAgICBCT09MRUFOIGIKCSk7CgppbnQgVFhUX0dldFN0eWxlICgpOwoKdm9pZCBU
WFRfVXNlTGFiZWxzICgKICAgICAgICBCT09MRUFOIGIKCSk7CgpCT09MRUFOIFRYVF9HZXRMYWJl
bHMgKCk7Cgp2b2lkIFRYVF9XcmFwICgKICAgICAgICBCT09MRUFOIGIKCSk7CgpCT09MRUFOIFRY
VF9HZXRXcmFwICgpOwoKdm9pZCBUWFRfSW5kZW50ICgKICAgICAgICBpbnQgaQoJKTsKCmludCBU
WFRfR2V0SW5kZW50ICgpOwoKdm9pZCBUWFRfQXV0b2luZGVudCAoCiAgICAgICAgQk9PTEVBTiBi
CgkpOwoKQk9PTEVBTiBUWFRfR2V0QXV0b2luZGVudCAoKTsKCnZvaWQgVFhUX1NldFdpZHRoICgK
ICAgICAgICBpbnQgdwoJKTsKCmludCBUWFRfR2V0V2lkdGggKCk7Cgp2b2lkIFRYVF9TZXRUcmFj
ZSAoCiAgICAgICAgQk9PTEVBTiBiCgkpOwoKQk9PTEVBTiBUWFRfR2V0VHJhY2UgKCk7Cgp2b2lk
IFRYVF9TZXRQcmVmaXggKAogICAgICAgIGNvbnN0IGNoYXIgKnN0cgoJKTsKCmNvbnN0IGNoYXIg
KlRYVF9HZXRQcmVmaXggKCk7Cgp2b2lkIFRYVF9BZGRSZWZEaXIgKAogICAgICAgIGNvbnN0IGNo
YXIgKmRpcgoJKTsKCnZvaWQgVFhUX1JlZkZpbGUgKAogICAgICAgIGNvbnN0IGNoYXIgKmZpbGUK
CSk7Cgp2b2lkIFRYVF9SZWdpc3RlckluZm9DYWxsYmFjayAoCiAgICAgICAgVFhUX091dHB1dENh
bGxiYWNrIGYsCiAgICAgICAgdm9pZCAqZGF0YQoJKTsKCnZvaWQgVFhUX1JlZ2lzdGVyRXJyb3JD
YWxsYmFjayAoCiAgICAgICAgVFhUX091dHB1dENhbGxiYWNrIGYsCiAgICAgICAgdm9pZCAqZGF0
YQoJKTsKCnZvaWQgVFhUX1JlZ2lzdGVyT3V0cHV0Q2FsbGJhY2sgKAogICAgICAgIFNldmVyaXR5
IHNldiwKICAgICAgICBUWFRfT3V0cHV0Q2FsbGJhY2sgZiwKICAgICAgICB2b2lkICpkYXRhCgkp
OwoKdm9pZCBUWFRfUmVnaXN0ZXJEaWFnQ2FsbGJhY2sgKAogICAgICAgIFRYVF9PdXRwdXRDYWxs
YmFjayBmLAogICAgICAgIHZvaWQgKmRhdGEKCSk7Cgp2b2lkIFRYVF9SZWdpc3RlckZpbGVDYWxs
YmFjayAoCiAgICAgICAgVFhUX0ZpbGVPdXRwdXRDYWxsYmFjayBmLAogICAgICAgIHZvaWQgKmRh
dGEKCSk7Cgp2b2lkIFRYVF9SZWdpc3RlckhlYWRlckNhbGxiYWNrICgKICAgICAgICBjaGFyICoo
KmYpKGNvbnN0IGNoYXIgKikKCSk7CgpjaGFyICpUWFRfRGVmYXVsdE91dHB1dEZvcm1hdCAoCiAg
ICAgICAgY29uc3QgY2hhciAqc3RyCgkpOwoKVFhUX091dHB1dENhbGxiYWNrIFRYVF9HZXRPdXRw
dXRDYWxsYmFjayAoCiAgICAgICAgU2V2ZXJpdHkgc2V2CgkpOwoKdm9pZCAqVFhUX0dldE91dHB1
dERhdGEgKAogICAgICAgIFNldmVyaXR5IHNldgoJKTsKClRYVF9GaWxlT3V0cHV0Q2FsbGJhY2sg
VFhUX0dldEZpbGVPdXRwdXRDYWxsYmFjayAoKTsKCnZvaWQgKlRYVF9HZXRGaWxlT3V0cHV0RGF0
YSAoKTsKClRYVF9IZWFkZXJDYWxsYmFjayBUWFRfR2V0SGVhZGVyQ2FsbGJhY2sgKCk7Cgp2b2lk
IFRYVF9WZlByaW50ICgKICAgICAgICBGSUxFICpmcCwgCiAgICAgICAgY29uc3QgY2hhciAqbGFi
ZWwsIAogICAgICAgIHZhX2xpc3QgYXJncwoJKTsKCnZvaWQgVFhUX1ZmUHJpbnRmICgKICAgICAg
ICBGSUxFICpmcCwgCiAgICAgICAgU2V2ZXJpdHkgc2V2LCAKICAgICAgICBjb25zdCBjaGFyICpm
b3JtYXQsIAogICAgICAgIHZhX2xpc3QgYXJncwoJKTsKCgogCgoKIAoKCiAKCnZvaWQgVFhUX0Zh
dGFsRXJyb3JEaWFsb2cgKAogICAgICAgIGNvbnN0IGNoYXIgKm1zZywgCiAgICAgICAgdm9pZCAq
CgkpOwoKdm9pZCBUWFRfRXJyb3JEaWFsb2cgKAogICAgICAgIGNvbnN0IGNoYXIgKm1zZywgCiAg
ICAgICAgdm9pZCAqCgkpOwoKdm9pZCBUWFRfV2FybmluZ0RpYWxvZyAoCiAgICAgICAgY29uc3Qg
Y2hhciAqbXNnLCAKICAgICAgICB2b2lkICoKCSk7Cgp2b2lkIFRYVF9JbmZvRGlhbG9nICgKICAg
ICAgICBjb25zdCBjaGFyICptc2csIAogICAgICAgIHZvaWQgKgoJKTsKCnZvaWQgVFhUX1F1ZXN0
aW9uRGlhbG9nICgKICAgICAgICBjb25zdCBjaGFyICptc2csIAogICAgICAgIHZvaWQgKgoJKTsK
CmNoYXIgKlRYVF9EaWFsb2dIZWFkZXJDYWxsYmFjayAoCiAgICAgICAgY29uc3QgY2hhciAqc3Ry
CgkpOwoKdm9pZCBUWFRfU2V0VmtEZWZhdWx0cyAoKTsKCgogCgoKCgoKIyA3NiAiL3NvZnR3YXJl
L3RoYWxpYS9oL3R4dC5oIiAyCgoKIAoKY2xhc3MgVFhUX1JlZkRpciB7CnB1YmxpYzoKICAgIFRY
VF9SZWZEaXIoY29uc3QgY2hhciAqZGlyKSB7IFRYVF9BZGRSZWZEaXIgKGRpcik7IH0KfTsKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyNCAibnJoeS9OUkhZX0FjY2Vz
cy5jIiAyCgojIDEgIi9zb2Z0d2FyZS90aGFsaWEvaC9odS5oIiAxCgoKCiAKCgoKIyAxICIvc29m
dHdhcmUvdGhhbGlhL2gvVFdJTkUuaCIgMQoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgp0ZW1wbGF0ZSA8Y2xh
c3MgVHlwZT4gY2xhc3MgTGlzdDsKCmNsYXNzIFR3aW5lIHsKICAgIGNoYXIgICAgICAqc3RyOwog
ICAgaW50ICAgICAgIHNpemU7CgpwdWJsaWM6CiAKCgoKICAgIFR3aW5lKGNvbnN0IFR3aW5lICZz
KTsKICAgIFR3aW5lKGNvbnN0IGNoYXIgKnMpOwogICAgVHdpbmUoY2hhciBjKTsKICAgIFR3aW5l
KCB2b2lkICk7CgogCgoKCiAgICBpbmxpbmUgflR3aW5lKCkgeyBmcmVlKCB0aGlzLT5zdHIgKTsg
fTsKCiAKCgoKICAgIFR3aW5lICAgJm9wZXJhdG9yPShjb25zdCBUd2luZSAmcyk7CiAgICBUd2lu
ZSAgICZvcGVyYXRvcj0oY29uc3QgY2hhciAqcyk7CiAgICBUd2luZSAgICZvcGVyYXRvcj0oY2hh
ciBjKTsKCiAgICBvcGVyYXRvciBjb25zdCBjaGFyKigpIGNvbnN0OwoKICAgIGNoYXIgJm9wZXJh
dG9yW10oaW50IGkpOwogICAgY2hhciBvcGVyYXRvcltdKGludCBpKSBjb25zdDsKCiAKCgoKICAg
IFR3aW5lIG9wZXJhdG9yKyhjb25zdCBUd2luZSAmcykgY29uc3Q7CiAgICBUd2luZSBvcGVyYXRv
cisoY29uc3QgY2hhciAqcykgY29uc3Q7CiAgICBUd2luZSBvcGVyYXRvcisoY2hhciBjKSBjb25z
dDsKCiAgICBmcmllbmQgVHdpbmUgb3BlcmF0b3IrKCBjb25zdCBjaGFyICpzLCBjb25zdCBUd2lu
ZSAmIHQpOwogICAgZnJpZW5kIFR3aW5lIG9wZXJhdG9yKyggY2hhciBjLCBjb25zdCBUd2luZSAm
IHQpOwoKICAgIFR3aW5lICZvcGVyYXRvcis9KGNvbnN0IFR3aW5lICZzKTsKICAgIFR3aW5lICZv
cGVyYXRvcis9KGNvbnN0IGNoYXIgKnMpOwogICAgVHdpbmUgJm9wZXJhdG9yKz0oY2hhciBjKTsK
CgogCgoKCgogICAgaW50IG9wZXJhdG9yPT0oY29uc3QgVHdpbmUgJnMpIGNvbnN0OwogICAgaW50
IG9wZXJhdG9yPT0oY29uc3QgY2hhciAqIHMpIGNvbnN0OwogICAgaW50IG9wZXJhdG9yPT0oY2hh
ciAgYykgY29uc3Q7CiAgICBpbnQgb3BlcmF0b3IhPShjb25zdCBUd2luZSAmcykgY29uc3Q7CiAg
ICBpbnQgb3BlcmF0b3IhPShjb25zdCBjaGFyICpzKSBjb25zdDsKICAgIGludCBvcGVyYXRvciE9
KGNoYXIgYykgY29uc3Q7CiAgICBpbnQgb3BlcmF0b3I8PShjb25zdCBUd2luZSAmcykgY29uc3Q7
CiAgICBpbnQgb3BlcmF0b3I8PShjb25zdCBjaGFyICpzKSBjb25zdDsKICAgIGludCBvcGVyYXRv
cjw9KGNoYXIgYykgY29uc3Q7CiAgICBpbnQgb3BlcmF0b3I+PShjb25zdCBUd2luZSAmcykgY29u
c3Q7CiAgICBpbnQgb3BlcmF0b3I+PShjb25zdCBjaGFyICpzKSBjb25zdDsKICAgIGludCBvcGVy
YXRvcj49KGNoYXIgYykgY29uc3Q7CiAgICBpbnQgb3BlcmF0b3I8KGNvbnN0IFR3aW5lICZzKSBj
b25zdDsKICAgIGludCBvcGVyYXRvcjwoY29uc3QgY2hhciAqcykgY29uc3Q7CiAgICBpbnQgb3Bl
cmF0b3I8KGNoYXIgYykgY29uc3Q7CiAgICBpbnQgb3BlcmF0b3I+KGNvbnN0IFR3aW5lICZzKSBj
b25zdDsKICAgIGludCBvcGVyYXRvcj4oY29uc3QgY2hhciAqcykgY29uc3Q7CiAgICBpbnQgb3Bl
cmF0b3I+KGNoYXIgYykgY29uc3Q7CgoKIAoKCgogICAgaW50IGxlbmd0aCggdm9pZCkgY29uc3Q7
CiAgICBpbnQgd2lsZG1hdGNoKCBjb25zdCBUd2luZSAmKSBjb25zdDsKICAgIGludCB3aWxkbWF0
Y2goIGNvbnN0IGNoYXIgKikgY29uc3Q7CgoKIAoKCgogICAgaW50IFdyaXRlQmluYXJ5KCBORVRG
SUxFX0ZJTEUgKmZwKSBjb25zdDsKICAgIGludCBSZWFkQmluYXJ5KCBORVRGSUxFX0ZJTEUgKmZw
KTsKCgojIDEgIi9zb2Z0d2FyZS90aGFsaWEvaC9UV0lORS5wIiAxCiAKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCmZyaWVuZCBj
aGFyICppbmRleCggVHdpbmUgJiwgaW50ICk7CmZyaWVuZCBjaGFyICpyaW5kZXgoIFR3aW5lICYs
IGludCApOwpmcmllbmQgY2hhciAqc3RyY2hyKCBUd2luZSAmLCBpbnQgKTsKZnJpZW5kIGNoYXIg
KnN0cnJjaHIoIFR3aW5lICYsIGludCApOwpmcmllbmQgY29uc3QgY2hhciAqaW5kZXgoIGNvbnN0
IFR3aW5lICYsIGludCApOwpmcmllbmQgY29uc3QgY2hhciAqcmluZGV4KCBjb25zdCBUd2luZSAm
LCBpbnQgKTsKZnJpZW5kIGNvbnN0IGNoYXIgKnN0cmNociggY29uc3QgVHdpbmUgJiwgaW50ICk7
CmZyaWVuZCBjb25zdCBjaGFyICpzdHJyY2hyKCBjb25zdCBUd2luZSAmLCBpbnQgKTsKCmZyaWVu
ZCBjb25zdCBjaGFyICpmZ2V0cyggVHdpbmUgJiwgRklMRSAqICk7CmZyaWVuZCBjb25zdCBjaGFy
ICpmZ2V0cyggVHdpbmUgJiwgTkVURklMRV9GSUxFICogKTsKZnJpZW5kIGNvbnN0IGNoYXIgKmdl
dHMoIFR3aW5lICYgKTsKZnJpZW5kIExpc3Q8VHdpbmU+OwoKZnJpZW5kIHN0cnVjdCBGUkFOR0Ug
YXRvRlJBTkdFKCBjb25zdCBjaGFyICogKTsKZnJpZW5kIFR3aW5lIEZSQU5HRXRvYSggY29uc3Qg
RlJBTkdFICYsIGZsb2F0ID0gMS4wICk7CmZyaWVuZCBUd2luZSBmdG9hKCBmbG9hdCApOwojIDE2
NyAiL3NvZnR3YXJlL3RoYWxpYS9oL1RXSU5FLmgiIDIKCn07CmlubGluZSBjb25zdCBjaGFyICpj
bGFzc05hbWUoIGNvbnN0IFR3aW5lICYgKSAKICAgIHsKICAgICAgICByZXR1cm4oICJUd2luZSIp
OwogICAgfTsKCmlubGluZSBpbnQgbGVuZ3RoKCBjb25zdCBUd2luZSAmZm9vICkgewogICAgcmV0
dXJuIGZvby5sZW5ndGgoKTsKICAgIH07CgppbnQgZnJlYWQoIFR3aW5lICYsIE5FVEZJTEVfRklM
RSAqZnApOwppbnQgbXJlYWQoIFR3aW5lICYsIGNvbnN0IHZvaWQgKmlvQnVmZmVyKTsKaW50IGZ3
cml0ZSggY29uc3QgVHdpbmUgJiwgTkVURklMRV9GSUxFICpmcCk7CgpjaGFyKiBVX1VuaXhQYXJz
ZSggY29uc3QgTGlzdDxUd2luZT4gYXJndiwgT19MSVNUICpmbGFnTGlzdCwgaW50IG51bUZsYWdz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqKm9yZGVy
LCBpbnQgKm9yZGVyQ291bnQpOwoKCgojIDggIi9zb2Z0d2FyZS90aGFsaWEvaC9odS5oIiAyCgoj
IDEgIi9zb2Z0d2FyZS90aGFsaWEvaC9MaXN0VGVtcGxhdGUuaCIgMQoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgVHlwZT4KY2xhc3MgTGlzdCB7CnByb3RlY3RlZDoK
ICAgIFR5cGUgKmRhdGE7CiAgICBpbnQgc3o7CiAgICBpbnQgbWF4c2l6ZTsKCiAgICB2b2lkIGlu
Y3JlYXNlTWF4c2l6ZSgpOwoKcHVibGljOgogICAgTGlzdCgpOwogICAgfkxpc3QoKTsKICAgIExp
c3QoIGNvbnN0IExpc3QgJiApOwogICAgTGlzdCggY29uc3QgVHlwZSAmICk7CgogICAgTGlzdCAm
ICAgICAgICAgIG9wZXJhdG9yPSggY29uc3QgTGlzdCAmICk7CiAgICBUeXBlICYgICAgICAgICAg
bGFzdCgpOwogICAgY29uc3QgVHlwZSAmICAgIGxhc3QoKSBjb25zdDsKCiAgICBMaXN0ICYgYXBw
ZW5kKCBjb25zdCBUeXBlICYgKTsKICAgIExpc3QgJiBhcHBlbmQoIGNvbnN0IExpc3QgJiApOwog
ICAgTGlzdCAmIHJlbW92ZSggaW50ICk7CiAgICBMaXN0ICYgcmVtb3ZlTGFzdCgpOwogICAgTGlz
dCAmIHJlbW92ZUFsbCgpOyAgICAgICAgICAgICAgICAgIAogICAgTGlzdCAmIGluc2VydCggY29u
c3QgVHlwZSAmLCBpbnQgKTsKICAgIExpc3QgJiBzZXRTaXplKCBpbnQgKTsKCiAgICBpbmxpbmUg
aW50IHNpemUoKSBjb25zdCB7IHJldHVybiBzejsgfTsKICAgIGlubGluZSBUeXBlICYgb3BlcmF0
b3JbXSggaW50IHdoaWNoICkgewogICAgICAgIGlmICggd2hpY2ggPCAwIHx8IHdoaWNoID49IHN6
ICkgewogICAgICAgICAgICBmcHJpbnRmKCBzdGRlcnIsICJjb25zdCBMaXN0W106IGFycmF5IHJl
ZmVyZW5jZSBvdXQgb2YgcmFuZ2UuXG4iICk7CiAgICAgICAgICAgIHJldHVybiBkYXRhWzBdOwog
ICAgICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRhdGFbd2hpY2hdOwogICAgICAgIH0KCiAgICBp
bmxpbmUgY29uc3QgVHlwZSAmIG9wZXJhdG9yW10oIGludCB3aGljaCApIGNvbnN0IHsKICAgICAg
ICBpZiAoIHdoaWNoIDwgMCB8fCB3aGljaCA+PSBzeiApIHsKICAgICAgICAgICAgZnByaW50Zigg
c3RkZXJyLCAiY29uc3QgTGlzdFtdOiBhcnJheSByZWZlcmVuY2Ugb3V0IG9mIHJhbmdlLlxuIiAp
OwogICAgICAgICAgICByZXR1cm4gZGF0YVswXTsKICAgICAgICAgICAgfQogICAgICAgIHJldHVy
biBkYXRhW3doaWNoXTsKICAgICAgICB9CgogICAgaW5saW5lIFR5cGUgJiBvcGVyYXRvcigpKCBp
bnQgd2hpY2ggKSB7CiAgICAgICAgcmV0dXJuIGRhdGFbd2hpY2hdOwogICAgICAgIH0KCiAgICBp
bmxpbmUgY29uc3QgVHlwZSAmIG9wZXJhdG9yKCkoIGludCB3aGljaCApIGNvbnN0IHsKICAgICAg
ICByZXR1cm4gZGF0YVt3aGljaF07CiAgICAgICAgfQoKICAgIH07CgppbmxpbmUgY29uc3QgY2hh
ciAqY2xhc3NOYW1lKCBpbnQgKSB7IHJldHVybiAiaW50IjsgfTsKaW5saW5lIGNvbnN0IGNoYXIg
KmNsYXNzTmFtZSggdW5zaWduZWQgaW50ICkgeyByZXR1cm4gInVuc2lnbmVkIGludCI7IH07Cmlu
bGluZSBjb25zdCBjaGFyICpjbGFzc05hbWUoIGNoYXIgKSB7IHJldHVybiAiY2hhciI7IH07Cmlu
bGluZSBjb25zdCBjaGFyICpjbGFzc05hbWUoIHVuc2lnbmVkIGNoYXIgKSB7IHJldHVybiAidW5z
aWduZWQgY2hhciI7IH07CmlubGluZSBjb25zdCBjaGFyICpjbGFzc05hbWUoIGxvbmcgKSB7IHJl
dHVybiAibG9uZyI7IH07CmlubGluZSBjb25zdCBjaGFyICpjbGFzc05hbWUoIHVuc2lnbmVkIGxv
bmcgKSB7IHJldHVybiAidW5zaWduZWQgbG9uZyI7IH07CmlubGluZSBjb25zdCBjaGFyICpjbGFz
c05hbWUoIHNob3J0ICkgeyByZXR1cm4gInNob3J0IjsgfTsKaW5saW5lIGNvbnN0IGNoYXIgKmNs
YXNzTmFtZSggdW5zaWduZWQgc2hvcnQgKSB7IHJldHVybiAidW5zaWduZWQgc2hvcnQiOyB9Owpp
bmxpbmUgY29uc3QgY2hhciAqY2xhc3NOYW1lKCBmbG9hdCApIHsgcmV0dXJuICJmbG9hdCI7IH07
CmlubGluZSBjb25zdCBjaGFyICpjbGFzc05hbWUoIGRvdWJsZSApIHsgcmV0dXJuICJkb3VibGUi
OyB9OwppbmxpbmUgY29uc3QgY2hhciAqY2xhc3NOYW1lKCB2b2lkICogKSB7IHJldHVybiAidm9p
ZCAqIjsgfTsKaW5saW5lIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSggY29uc3QgY2hhciAqICkgeyBy
ZXR1cm4gImNvbnN0IGNoYXIgKiI7IH07Cgp0ZW1wbGF0ZSA8Y2xhc3MgVHlwZT4KaW50IGxpc3RD
b21wYXJlKCBjb25zdCBUeXBlICplMSwgY29uc3QgVHlwZSAqZTIpOwoKdGVtcGxhdGUgPGNsYXNz
IFR5cGU+CnZvaWQgcXNvcnQoIExpc3Q8VHlwZT4mIGxpc3QpOwoKdGVtcGxhdGUgPGNsYXNzIFR5
cGU+ClR5cGUgKmJzZWFyY2goIGNvbnN0IFR5cGUgKmtleSwgTGlzdDxUeXBlPiYgbGlzdCk7Cgp0
ZW1wbGF0ZSA8Y2xhc3MgVHlwZT4KY29uc3QgY2hhciAqY2xhc3NOYW1lKCBjb25zdCBMaXN0PFR5
cGU+ICYgKTsKCgojIDEgIi9zb2Z0d2FyZS90aGFsaWEvaC9MaXN0VGVtcGxhdGUuYyIgMQoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3NvZnR3YXJlL3RoYWxpYS9oL0xpc3RUZW1wbGF0
ZS5oIiAxCgogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDExMCAiL3NvZnR3YXJlL3RoYWxpYS9oL0xp
c3RUZW1wbGF0ZS5oIgoKIyAyNiAiL3NvZnR3YXJlL3RoYWxpYS9oL0xpc3RUZW1wbGF0ZS5jIiAy
CgoKCgoMCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgVHlwZT4KTGlzdDxU
eXBlPjo6TGlzdCgpIAp7CiAgICBkYXRhID0gMDsKICAgIG1heHNpemUgPSBzeiA9IDA7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBUeXBlPgpMaXN0PFR5cGU+Ojp+TGlzdCgpIAp7CiAgICBpZiAoIGRhdGEg
KSAKICAgICAgICBkZWxldGUgW10gZGF0YTsKfQoKdGVtcGxhdGUgPGNsYXNzIFR5cGU+Ckxpc3Q8
VHlwZT46Okxpc3QoIGNvbnN0IExpc3Q8VHlwZT4mIG9sZCkgCnsKICAgIGludCBpOwoKICAgIGlm
ICggb2xkLm1heHNpemUgKSB7CiAgICAgICAgaWYgKCAoIGRhdGEgPSBuZXcgVHlwZVsgb2xkLm1h
eHNpemUgXSApID09IDAgKSB7CiAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTGlzdDw+OiBv
dXQgb2YgbWVtb3J5IGluIGNvbnN0IGNvbnN0cnVjdG9yLlxuIiApOwogICAgICAgICAgICBzeiA9
IDA7CiAgICAgICAgICAgIG1heHNpemUgPSAwOyAgICAKICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICB9CiAgICAgICAgfQogICAgZWxzZSAKICAgICAgICBkYXRhID0gMDsKCiAgICBtYXhz
aXplID0gb2xkLm1heHNpemU7CiAgICBzeiA9IG9sZC5zejsKCiAgICBmb3IoIGkgPSAwIDsgaSA8
IHN6IDsgaSsrKQogICAgICAgIGRhdGFbaV0gPSBvbGQuZGF0YVtpXTsKfQoKdGVtcGxhdGUgPGNs
YXNzIFR5cGU+Ckxpc3Q8VHlwZT4mIExpc3Q8VHlwZT46Om9wZXJhdG9yPSggY29uc3QgTGlzdDxU
eXBlPiAmIG9sZCApIAp7CiAgICBpbnQgaTsKCiAgICBpZiAoZGF0YSkgZGVsZXRlIFtdIGRhdGE7
CgogICAgaWYgKG9sZC5tYXhzaXplKSB7CiAgICAgICAgaWYgKCAoIGRhdGEgPSBuZXcgVHlwZVtv
bGQubWF4c2l6ZV0gKSA9PSAwICkgewogICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiTGlzdDw+
Ojo9IDogY2FuJ3QgYWxsb2NhdGUgbWVtb3J5LlxuIiApOwogICAgICAgICAgICBzeiA9IDA7CiAg
ICAgICAgICAgIG1heHNpemUgPSAwOwogICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAg
ICAgIH0KICAgICAgICB9CiAgICBlbHNlIAogICAgICAgIGRhdGEgPSAwOwoKICAgIG1heHNpemUg
PSBvbGQubWF4c2l6ZTsKICAgIHN6ID0gb2xkLnN6OwoKICAgIGZvciggaSA9IDAgOyBpIDwgc3og
OyBpKyspCiAgICAgICAgZGF0YVtpXSA9IG9sZC5kYXRhW2ldOwogICAgCiAgICByZXR1cm4gKnRo
aXM7Cn0KCnRlbXBsYXRlIDxjbGFzcyBUeXBlPgpjb25zdCBUeXBlICYgTGlzdDxUeXBlPjo6bGFz
dCgpIGNvbnN0IAp7CiAgICByZXR1cm4gZGF0YVsgc3ogLSAxIF07Cn0KCnRlbXBsYXRlIDxjbGFz
cyBUeXBlPgpUeXBlICYgTGlzdDxUeXBlPjo6bGFzdCgpIAp7CiAgICByZXR1cm4gZGF0YVsgc3og
LSAxIF07Cn0KCnRlbXBsYXRlIDxjbGFzcyBUeXBlPgpMaXN0PFR5cGU+ICYgTGlzdDxUeXBlPjo6
c2V0U2l6ZSggaW50IG5ld1NpemUgKQp7CiAgICBpZiAoIG1heHNpemUgPCBuZXdTaXplICkgewog
ICAgICAgIGludCBvbGRfbWF4c2l6ZSA9IG1heHNpemU7CiAgICAgICAgd2hpbGUoIG1heHNpemUg
PCBuZXdTaXplICkKICAgICAgICAgICAgaW5jcmVhc2VNYXhzaXplKCk7CgogICAgICAgIFR5cGUg
Km5ld0RhdGEgPSBuZXcgVHlwZVsgbWF4c2l6ZSBdOwoKICAgICAgICBpZiAoIG5ld0RhdGEgPT0g
MCApIHsKICAgICAgICAgICAgZnByaW50Ziggc3RkZXJyLCAiTGlzdDw+OjpzZXRTaXplKCVkKTog
Y2FuJ3QgYWxsb2NhdGUgbWVtb3J5LlxuIiwKICAgICAgICAgICAgICAgIG5ld1NpemUgKTsKICAg
ICAgICAgICAgbWF4c2l6ZSA9IG9sZF9tYXhzaXplOwogICAgICAgICAgICByZXR1cm4gKnRoaXM7
CiAgICAgICAgICAgIH0KCiAgICAgICAgZm9yKCBpbnQgaSA9IDAgOyBpIDwgc3ogOyBpKysgKSAK
ICAgICAgICAgICAgbmV3RGF0YVtpXSA9IGRhdGFbaV07CgogICAgICAgIGlmICggZGF0YSApIGRl
bGV0ZSBbXSBkYXRhOwogICAgICAgIGRhdGEgPSBuZXdEYXRhOwogICAgICAgIH0KCiAgICBzeiA9
IG5ld1NpemU7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlIDxjbGFzcyBUeXBlPgpMaXN0
PFR5cGU+JiBMaXN0PFR5cGU+OjphcHBlbmQoIGNvbnN0IFR5cGUgJiBhICkgCnsKICAgIGludCBp
OwogICAgaW50IG9sZF9tYXhzaXplID0gbWF4c2l6ZTsKICAgIFR5cGUgKm9sZERhdGEgPSAwOwoK
ICAgIGlmIChzeiA9PSBtYXhzaXplKSB7CiAgICAgICAgaW5jcmVhc2VNYXhzaXplKCk7CgogICAg
ICAgIFR5cGUgKm5ld0RhdGEgPSBuZXcgVHlwZVsgbWF4c2l6ZSBdOwoKICAgICAgICBpZiAobmV3
RGF0YSA9PSAwKSB7CiAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJMaXN0PD46OmFwcGVuZCgp
OiBjYW4ndCBhbGxvY2F0ZSBtZW1vcnkuXG4iICk7CiAgICAgICAgICAgIG1heHNpemUgPSBvbGRf
bWF4c2l6ZTsKICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgICAgICB9CgogICAgICAg
IGZvciggaSA9IDAgOyBpIDwgc3ogOyBpKyspCiAgICAgICAgICAgIG5ld0RhdGFbaV0gPSBkYXRh
W2ldOwoKICAgICAgICBpZiAoZGF0YSkgCiAgICAgICAgICAgIG9sZERhdGEgPSBkYXRhOwogICAg
ICAgIGRhdGEgPSBuZXdEYXRhOwogICAgICAgIH0gCgogICAgZGF0YVsgc3orKyBdID0gYTsgCgog
ICAgaWYgKCBvbGREYXRhICkgCiAgICAgICAgZGVsZXRlIFtdIG9sZERhdGE7CgogICAgcmV0dXJu
ICp0aGlzOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVHlwZT4KTGlzdDxUeXBlPjo6TGlzdCggY29uc3Qg
VHlwZSAmIGEgKSAKewogICAgbWF4c2l6ZSA9IDE7CiAgICBkYXRhID0gbmV3IFR5cGVbIG1heHNp
emUgXTsKCiAgICBpZiAoIGRhdGEgPT0gMCApIHsKICAgICAgICBmcHJpbnRmKHN0ZGVyciwiTGlz
dDw+KCk6IGNhbid0IGFsbG9jYXRlIG1lbW9yeS5cbiIgKTsKICAgICAgICBzeiA9IDA7CiAgICAg
ICAgcmV0dXJuOwogICAgICAgIH0KCiAgICBkYXRhWzBdID0gYTsKICAgIHN6ID0gMTsKfQoKdGVt
cGxhdGUgPGNsYXNzIFR5cGU+CnZvaWQgTGlzdDxUeXBlPjo6aW5jcmVhc2VNYXhzaXplKCkgCnsK
ICAgIGlmIChtYXhzaXplID09IDApICAgICAgICAgICBtYXhzaXplID0gMTsKICAgIGVsc2UgaWYg
KG1heHNpemUgPT0gMSkgICAgICBtYXhzaXplID0gMjsKICAgIGVsc2UgaWYgKG1heHNpemUgPCA4
KSAgICAgICBtYXhzaXplID0gODsKICAgIGVsc2UgaWYgKG1heHNpemUgPCA2NTUzNikgICBtYXhz
aXplICo9IDI7CiAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgbWF4c2l6ZSArPSA2NTUz
NjsKfQoKdGVtcGxhdGUgPGNsYXNzIFR5cGU+Ckxpc3Q8VHlwZT4mIExpc3Q8VHlwZT46OmFwcGVu
ZCggY29uc3QgTGlzdDxUeXBlPiAmIGEgKSAKewogICAgaW50IGk7CiAgICBpbnQgb2xkX21heHNp
emUgPSBtYXhzaXplOwoKICAgIGlmICggbWF4c2l6ZSA8PSBzeiArIGEuc3ogKSB7CiAgICAgICAg
d2hpbGUoIG1heHNpemUgPCBzeiArIGEuc3ogKSAKICAgICAgICAgICAgaW5jcmVhc2VNYXhzaXpl
KCk7CgogICAgICAgIFR5cGUgKm5ld0RhdGEgPSBuZXcgVHlwZVsgbWF4c2l6ZSBdOwoKICAgICAg
ICBpZiAoIG5ld0RhdGEgPT0gMCApIHsKICAgICAgICAgICAgZnByaW50Ziggc3RkZXJyLCAiTGlz
dDw+OjphcHBlbmQoKTogY2FuJ3QgYWxsb2NhdGUgbWVtb3J5LlxuIiApOwogICAgICAgICAgICBt
YXhzaXplID0gb2xkX21heHNpemU7CiAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAg
ICAgfQoKICAgICAgICBmb3IoIGkgPSAwIDsgaSA8IHN6IDsgaSsrKQogICAgICAgICAgICBuZXdE
YXRhW2ldID0gZGF0YVtpXTsKICAgICAgICBpZiAoZGF0YSkgZGVsZXRlIFtdIGRhdGE7CiAgICAg
ICAgZGF0YSA9IG5ld0RhdGE7CiAgICAgICAgfQoKICAgIGZvciggaSA9IDAgOyBpIDwgYS5zeiA7
IGkrKykKICAgICAgICBkYXRhW3N6ICsgaV0gPSBhLmRhdGFbaV07CiAgICBzeiArPSBhLnN6OwoK
ICAgIHJldHVybiAqdGhpczsKfQoKDAogCgoKCgoKCgoKCgoKCgoKCgoKCgp0ZW1wbGF0ZSA8Y2xh
c3MgVHlwZT4KTGlzdDxUeXBlPiYgTGlzdDxUeXBlPjo6cmVtb3ZlKCBpbnQgd2hpY2ggKSAKewog
ICAgaW50IGk7CgogICAgaWYgKHdoaWNoIDwgMCB8fCB3aGljaCA+PSBzeikgewogICAgICAgIGZw
cmludGYoc3RkZXJyLCJMaXN0PD46OnJlbW92ZSgpOiBjYW4ndCBkZWxldGUgb2ZmIHRoZSBlbmQu
XG4iICk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgIH0KCiAgICBmb3IoIGkgPSB3aGlj
aCA7IGkgPCBzei0xIDsgaSsrKQogICAgICAgIGRhdGFbaV0gPSBkYXRhW2krMV07CgogICAgc3ot
LTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGUgPGNsYXNzIFR5cGU+Ckxpc3Q8VHlwZT4m
IExpc3Q8VHlwZT46OnJlbW92ZUxhc3QoKSAKewogICAgaWYgKCBzeiApIHsKICAgICAgICBzei0t
OwogICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICB9CgogICAgZnByaW50Ziggc3RkZXJyLCAi
TGlzdDw+OjpyZW1vdmVMYXN0KCk6IGxpc3QgaXMgZW1wdHkuXG4iICk7CgogICAgcmV0dXJuICp0
aGlzOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVHlwZT4KTGlzdDxUeXBlPiYgTGlzdDxUeXBlPjo6cmVt
b3ZlQWxsKCkgCnsKICAgIHN6ID0gMDsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGUgPGNs
YXNzIFR5cGU+Ckxpc3Q8VHlwZT4mIExpc3Q8VHlwZT46Omluc2VydCggY29uc3QgVHlwZSAmdmFs
LCBpbnQgd2hpY2ggKSAKewogICAgaW50IGk7CgogICAgaWYgKCB3aGljaCA8IDAgfHwgd2hpY2gg
PiBzeikgewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiTGlzdDw+OjppbnNlcnQoKSBjYW4ndCBp
bnNlcnQgb2ZmIHRoZSBlbmQuXG4iICk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgIH0K
CiAgICBzZXRTaXplKCBzeiArIDEgKTsKCiAgICBmb3IoIGkgPSBzeiAtIDIgOyBpID49IHdoaWNo
IDsgaS0tICkKICAgICAgICBkYXRhWyBpICsgMSBdID0gZGF0YVsgaSBdOwoKICAgIGRhdGFbIHdo
aWNoIF0gPSB2YWw7CiAgICByZXR1cm4gKnRoaXM7Cn0KCgwKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
Cgp0ZW1wbGF0ZSA8Y2xhc3MgVHlwZT4Kdm9pZCBxc29ydCggTGlzdDxUeXBlPiAmIGxpc3QgKSAK
ewogICAgIAogICAgaW50ICgqbXlDb21wYXJlKSggY29uc3QgVHlwZSAqLCBjb25zdCBUeXBlICop
ID0gbGlzdENvbXBhcmU7CgogICAgaWYgKCBsaXN0LnNpemUoKSA+IDEgKQogICAgICAgIHFzb3J0
KCAmKGxpc3RbMF0pLCBsaXN0LnNpemUoKSwgc2l6ZW9mKCBUeXBlICksIAogICAgICAgICAgICAo
aW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpIG15Q29tcGFyZSApOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgVHlwZT4KVHlwZSAqYnNlYXJjaCggY29uc3QgVHlwZSAqa2V5LCBMaXN0PFR5
cGU+ICYgbGlzdCApIAp7CiAgICAgCiAgICBpbnQgKCpteUNvbXBhcmUpKCBjb25zdCBUeXBlICos
IGNvbnN0IFR5cGUgKikgPSBsaXN0Q29tcGFyZTsKCiAgICBpZiAoIGxpc3Quc2l6ZSgpID09IDAg
KQogICAgICAgIHJldHVybiAwOwoKICAgIHJldHVybiAoVHlwZSAqKSA6OmJzZWFyY2goIGtleSwg
JihsaXN0WzBdKSwgbGlzdC5zaXplKCksIHNpemVvZiggVHlwZSApLCAKICAgICAgICAgICAgKGlu
dCAoKikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSBteUNvbXBhcmUgKTsKfQoKdGVtcGxh
dGUgPGNsYXNzIFR5cGU+CmludCBsaXN0Q29tcGFyZSggY29uc3QgVHlwZSAqdGUxLCBjb25zdCBU
eXBlICp0ZTIgKSAKewogICAgaWYgKCAqdGUxIDwgKnRlMiApCiAgICAgICAgcmV0dXJuIC0xOwog
ICAgZWxzZSBpZiAoICp0ZTEgPiAqdGUyICkKICAgICAgICByZXR1cm4gMTsKICAgIGVsc2UKICAg
ICAgICByZXR1cm4gMDsKfQoKdGVtcGxhdGUgPGNsYXNzIFR5cGU+CmNvbnN0IGNoYXIgKmNsYXNz
TmFtZSggY29uc3QgTGlzdDxUeXBlPiAmICkgCnsKICAgIGNoYXIgKmJ1ZiA9IG5ldyBjaGFyWzEw
MDBdOyAgICAgIAogICAgVHlwZSAqZm9vID0gbmV3IFR5cGU7CiAgICBzcHJpbnRmKCBidWYsICJM
aXN0PCVzPiIsIGNsYXNzTmFtZSggKmZvbyApICk7IGRlbGV0ZSBmb287CiAgICByZXR1cm4gYnVm
Owp9CgojIDEwNyAiL3NvZnR3YXJlL3RoYWxpYS9oL0xpc3RUZW1wbGF0ZS5oIiAyCgoKCgojIDkg
Ii9zb2Z0d2FyZS90aGFsaWEvaC9odS5oIiAyCgojIDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEt
cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIAoKCiAKCiMg
MTE0ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5j
bHVkZS9saW1pdHMuaCIgMwoKCgoKCgoKIyAxMCAiL3NvZnR3YXJlL3RoYWxpYS9oL2h1LmgiIDIK
CgoKdHlwZWRlZiBzdHJ1Y3QgT19jbGFzcyBPX0NMQVNTOwp0eXBlZGVmIHN0cnVjdCBPX0xJU1Qg
T19MSVNUOwoKY2xhc3MgRk9fTUVTU0FHRV9JRDsKY2xhc3MgVmVydGV4OwpjbGFzcyBDb2xvcjsK
Y2xhc3MgTWF0cml4NDsKY2xhc3MgRk9fT0JKRUNUOwpjbGFzcyBNX01hdHJpeDsKY2xhc3MgTV9W
ZWN0b3I7CnR5cGVkZWYgc2hvcnQgQk9PTEVBTjsKdHlwZWRlZiBjaGFyIFNUUklOR1syNTZdOwoK
IAoKCmNsYXNzIENhc3RlciB7CnB1YmxpYzoKICAgIHVuaW9uIHsKICAgICAgICBpbnQgICAgICAg
ICAgICAgKmFzSW50OwogICAgICAgIGZsb2F0ICAgICAgICAgICAqYXNGbG9hdDsKICAgICAgICBk
b3VibGUgICAgICAgICAgKmFzRG91YmxlOwogICAgICAgIGNoYXIgICAgICAgICAgICAqYXNDaGFy
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgICAqYXNVQ2hhcjsKICAgICAgICBjb25zdCBjaGFyICog
ICAgKmFzQ1BjaGFyOwogICAgICAgIEZPX09CSkVDVCAqICAgICAqYXNQRk9fT0JKRUNUOwogICAg
ICAgIGZsb2F0ICogICAgICAgICAqYXNQZmxvYXQ7CiAgICAgICAgaW50ICogICAgICAgICAgICph
c1BpbnQ7CiAgICAgICAgVmVydGV4ICAgICAgICAgICphc1ZlcnRleDsKICAgICAgICBDb2xvciAg
ICAgICAgICAgKmFzQ29sb3I7CiAgICAgICAgQk9PTEVBTiAgICAgICAgICphc0JPT0xFQU47CiAg
ICAgICAgQk9PTEVBTiAqICAgICAgICphc1BCT09MRUFOOwogICAgICAgIFR3aW5lICAgICAgICAg
ICAqYXNUd2luZTsKICAgICAgICBUd2luZSAqICAgICAgICAgKmFzUFR3aW5lOwogICAgICAgIFNU
UklORyAgICAgICAgICAqYXNTVFJJTkc7CiAgICAgICAgaW50ICoqKiAgICAgICAgICphc1BQUGlu
dDsKICAgICAgICBNYXRyaXg0ICAgICAgICAgKmFzTWF0cml4NDsKICAgICAgICB9IHU7CiAgICBl
bnVtIHsgX3NjcmV3ZWRfdXAsCiAgICAgICAgX2ludCwgX2Zsb2F0LCBfZG91YmxlLCBfY2hhciwK
ICAgICAgICBfQ1BjaGFyLCBfRk9fT0JKRUNULCBfUGZsb2F0LCBfUGludCwKICAgICAgICBfVmVy
dGV4LCBfQ29sb3IsIF9CT09MRUFOLCBfUEJPT0xFQU4sCiAgICAgICAgX1R3aW5lLCBfUFR3aW5l
LCBfU1RSSU5HLCBfUFBQaW50LCBfdWNoYXIsIF9NYXRyaXg0IH0gdHlwZTsKCiAgICBDYXN0ZXIo
KTsKICAgIENhc3RlciggaW50ICphICk7CiAgICBDYXN0ZXIoIGZsb2F0ICphICk7CiAgICBDYXN0
ZXIoIGRvdWJsZSAqYSApOwogICAgQ2FzdGVyKCBjaGFyICphICk7CiAgICBDYXN0ZXIoIHVuc2ln
bmVkIGNoYXIgKmEgKTsKICAgIENhc3RlciggY29uc3QgY2hhciAqKmEgKTsKICAgIENhc3Rlcigg
Rk9fT0JKRUNUICoqYSApOwogICAgQ2FzdGVyKCBmbG9hdCAqKmEgKTsKICAgIENhc3RlciggaW50
ICoqYSApOwogICAgQ2FzdGVyKCBWZXJ0ZXggKmEgKTsKICAgIENhc3RlciggQ29sb3IgKmEgKTsK
ICAgIENhc3RlciggQk9PTEVBTiAqYSApOwogICAgQ2FzdGVyKCBCT09MRUFOICoqYSk7CiAgICBD
YXN0ZXIoIFR3aW5lICphICk7CiAgICBDYXN0ZXIoIFR3aW5lICoqYSApOwogICAgQ2FzdGVyKCBT
VFJJTkcgKmEgKTsKICAgIENhc3RlciggaW50ICoqKiphICk7CiAgICBDYXN0ZXIoIE1hdHJpeDQg
KmEgKTsKICAgIH07CgppbmxpbmUgY29uc3QgY2hhciAqY2xhc3NOYW1lKCBDYXN0ZXIgKSB7IHJl
dHVybiAiQ2FzdGVyIjsgfTsKCnN0cnVjdCBIVV9QYXJzZXJTdGF0ZUV4dHJhIHsKICAgIHZvaWQg
ICAgICAgICprZXk7CiAgICB2b2lkICAgICAgICAqdmFsdWU7CiAgICB9OwppbmxpbmUgY29uc3Qg
Y2hhciAqY2xhc3NOYW1lKCBIVV9QYXJzZXJTdGF0ZUV4dHJhICkgeyAKICAgICAgICAgICAgcmV0
dXJuICJIVV9QYXJzZXJTdGF0ZUV4dHJhIjsgfTsKCnN0cnVjdCBIVV9QYXJzZXJTdGF0ZSB7CiAg
ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudERlcHRoOwogICAgZW51bSB7IE5v
cm1hbCwgRm91bmRCcmFjZSwgRXhwZWN0aW5nQnJhY2UgfSBicmFjZVN0YXRlOwogICAgaW50ICAg
ICAgICAgICAgICAgICAgICAgICAgIGFsbG93VW5kZWZpbmVkRnVuY3M7CiAgICBUd2luZSAgICAg
ICAgICAgICAgICAgICAgICAgZmlyc3RXb3JkOwogICAgVHdpbmUgICAgICAgICAgICAgICAgICAg
ICAgIHNlY29uZFdvcmQ7CiAgICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgZnJhbWU7CiAg
ICBMaXN0PEZSQU5HRT4gICAgICAgICAgICAgICAgZnJhbmdlczsKICAgIGludCAgICAgICAgICAg
ICAgICAgICAgICAgICBmcmFuZ2VJc0ZpbHRlcjsKICAgIExpc3Q8SFVfUGFyc2VyU3RhdGVFeHRy
YT4gICBleHRyYTsgICAgICAgICAgIAoKICAgIEhVX1BhcnNlclN0YXRlKCk7CiAgICB9OwoKZXh0
ZXJuIEhVX1BhcnNlclN0YXRlIEhVX0RlZmF1bHRTdGF0ZTsKCnN0cnVjdCBIVV9WYWx1ZUd1dHM7
CgpzdHJ1Y3QgSFVfQ2hhblNwZWMgewogICAgVHdpbmUgICAgICAgICAgIG5hbWU7CiAgICBMaXN0
PHZvaWQgKj4gICAgbG9va3VwOwogICAgSFVfUGFyc2VyU3RhdGUgIHN0YXRlOwogICAgfTsKCnN0
cnVjdCBIVV9WYWx1ZSB7CiAgICBIVV9WYWx1ZUd1dHMgICAgICAgICpkYXRhOwoKICAgIEhVX1Zh
bHVlKCk7CiAgICBIVV9WYWx1ZSggY29uc3QgSFVfVmFsdWUgJiBvbGQgKTsKICAgIH5IVV9WYWx1
ZSgpOwogICAgSFVfVmFsdWUgJiBvcGVyYXRvcj0oIGNvbnN0IEhVX1ZhbHVlICYgb2xkICk7Cgog
ICAgb3BlcmF0b3IgZmxvYXQgKCk7CiAgICBvcGVyYXRvciBpbnQgKCk7CiAgICBvcGVyYXRvciBU
d2luZSAoKTsKICAgIG9wZXJhdG9yIE1fVmVjdG9yICgpOwogICAgb3BlcmF0b3IgTV9NYXRyaXgg
KCk7CiAgICBvcGVyYXRvciBIVV9DaGFuU3BlYyAoKTsKICAgIG9wZXJhdG9yIFR3aW5lICgpIGNv
bnN0OwoKICAgIEhVX1ZhbHVlKCBmbG9hdCApOwogICAgSFVfVmFsdWUoIGNvbnN0IFR3aW5lICYg
KTsKICAgIEhVX1ZhbHVlKCBjb25zdCBjaGFyICogKTsgICAgICAgICAgICAKICAgIEhVX1ZhbHVl
KCBjb25zdCBNX1ZlY3RvciAmICk7CiAgICBIVV9WYWx1ZSggY29uc3QgTV9NYXRyaXggJiApOwog
ICAgSFVfVmFsdWUoIGNvbnN0IEhVX0NoYW5TcGVjICYgKTsKCiAgICBpbnQgaXNGbG9hdCgpIGNv
bnN0OwogICAgaW50IGlzVHdpbmUoKSBjb25zdDsKICAgIGludCBpc01fVmVjdG9yKCkgY29uc3Q7
CiAgICBpbnQgaXNNX01hdHJpeCgpIGNvbnN0OwogICAgaW50IGlzSFVfQ2hhblNwZWMoKSBjb25z
dDsKCiAgICB2b2lkIFNldFBhcnNlclN0YXRlKCBIVV9QYXJzZXJTdGF0ZSAmICk7CiAgICB9OwoK
IAppbmxpbmUgVHdpbmUgJiBvcGVyYXRvcis9KCBUd2luZSAmdCwgY29uc3QgSFVfVmFsdWUgJnYg
KSAKICAgIHsgcmV0dXJuIHQgKz0gKFR3aW5lKSh2KTsgfQoKc3RydWN0IEhVX09iamVjdENoYW5u
ZWxOYW1lIHsKICAgIFR3aW5lICAgb2JqZWN0OwogICAgVHdpbmUgICBjaGFubmVsOwoKICAgIGlu
dCBvcGVyYXRvcj09KCBjb25zdCBIVV9PYmplY3RDaGFubmVsTmFtZSAmICkgY29uc3Q7CiAgICBp
bnQgb3BlcmF0b3IhPSggY29uc3QgSFVfT2JqZWN0Q2hhbm5lbE5hbWUgJiApIGNvbnN0OwogICAg
aW50IG9wZXJhdG9yPD0oIGNvbnN0IEhVX09iamVjdENoYW5uZWxOYW1lICYgKSBjb25zdDsKICAg
IGludCBvcGVyYXRvcj49KCBjb25zdCBIVV9PYmplY3RDaGFubmVsTmFtZSAmICkgY29uc3Q7CiAg
ICBpbnQgb3BlcmF0b3I8KCBjb25zdCBIVV9PYmplY3RDaGFubmVsTmFtZSAmICkgY29uc3Q7CiAg
ICBpbnQgb3BlcmF0b3I+KCBjb25zdCBIVV9PYmplY3RDaGFubmVsTmFtZSAmICkgY29uc3Q7CiAg
ICB9OwppbmxpbmUgY29uc3QgY2hhciAqY2xhc3NOYW1lKCBIVV9PYmplY3RDaGFubmVsTmFtZSAp
IAogICAgeyByZXR1cm4gIkhVX09iamVjdENoYW5uZWxOYW1lIjsgfTsKCnN0cnVjdCBIVV9FeHBy
ZXNzaW9uR3V0czsKCnN0cnVjdCBIVV9FeHByZXNzaW9uIHsKICAgICAKICAgIEhVX0V4cHJlc3Np
b25HdXRzICAgICAgICpkYXRhOwoKcHVibGljOgogICAgSFVfRXhwcmVzc2lvbigpOwogICAgfkhV
X0V4cHJlc3Npb24oKTsKICAgIEhVX0V4cHJlc3Npb24oIGNvbnN0IEhVX0V4cHJlc3Npb24gJiAp
OwogICAgSFVfRXhwcmVzc2lvbiAmIG9wZXJhdG9yPSggY29uc3QgSFVfRXhwcmVzc2lvbiAmICk7
CiAgICBIVV9FeHByZXNzaW9uKCBIVV9FeHByZXNzaW9uR3V0cyAqICk7CgogICAgSFVfVmFsdWUg
RXZhbHVhdGUoIEhVX1BhcnNlclN0YXRlICYgPSBIVV9EZWZhdWx0U3RhdGUgKTsKCiAgICBUd2lu
ZSBHZXRPcmlnaW5hbFRleHQoKTsKICAgIFR3aW5lIEdldE9yaWdpbmFsVGV4dCgpIGNvbnN0OwoK
ICAgIGNvbnN0IFR3aW5lICYgVHlwZSgpOwogICAgY29uc3QgVHdpbmUgJiBUeXBlKCkgY29uc3Q7
CgogICAgaW50IENvbnRhaW5zT2JqZWN0KCBjb25zdCBjaGFyICogb2JqZWN0ICk7CiAgICBpbnQg
Q29udGFpbnNPYmplY3QoIGNvbnN0IGNoYXIgKiBvYmplY3QgKSBjb25zdDsKCiAgICBpbnQgQ29u
dGFpbnNPYmplY3RDaGFubmVsKCBjb25zdCBjaGFyICogb2JqZWN0LCBjb25zdCBjaGFyICogY2hh
bm5lbCApOwogICAgaW50IENvbnRhaW5zT2JqZWN0Q2hhbm5lbCggY29uc3QgY2hhciAqIG9iamVj
dCwgY29uc3QgY2hhciAqIGNoYW5uZWwgKWNvbnN0OwoKICAgIHZvaWQgUmVuYW1lT2JqZWN0KCBj
b25zdCBjaGFyICogb2xkT2JqLCBjb25zdCBjaGFyICogbmV3T2JqLAogICAgICAgIEhVX1BhcnNl
clN0YXRlICYgZ2VuZXJpYyA9IEhVX0RlZmF1bHRTdGF0ZSApOwogICAgdm9pZCBSZW5hbWVPYmpl
Y3RDaGFubmVsKCBjb25zdCBjaGFyICogb2xkT2JqLCBjb25zdCBjaGFyICogb2xkQ2hhbiwKICAg
ICAgICBjb25zdCBjaGFyICogbmV3T2JqLCBjb25zdCBjaGFyICogbmV3Q2hhbiwKICAgICAgICBI
VV9QYXJzZXJTdGF0ZSAmIGdlbmVyaWMgPSBIVV9EZWZhdWx0U3RhdGUgKTsKCiAgICBMaXN0PFR3
aW5lPiAgICAgICAgICAgICAgICAgR2V0T2JqZWN0TGlzdCgpOwogICAgTGlzdDxUd2luZT4gICAg
ICAgICAgICAgICAgIEdldE9iamVjdExpc3QoKSBjb25zdDsKCiAgICBMaXN0PEhVX09iamVjdENo
YW5uZWxOYW1lPiAgR2V0T2JqZWN0Q2hhbm5lbExpc3QoKTsKICAgIExpc3Q8SFVfT2JqZWN0Q2hh
bm5lbE5hbWU+ICBHZXRPYmplY3RDaGFubmVsTGlzdCgpIGNvbnN0OwogICAgfTsKCmlubGluZSBj
b25zdCBjaGFyICpjbGFzc05hbWUoIEhVX0V4cHJlc3Npb24gKSB7IHJldHVybiAiSFVfRXhwcmVz
c2lvbiI7IH07CgpjbGFzcyBIVV9BdWRpdFN0cmVhbSB7CiAgICBpbnQgICAgICAgICAgICAgdG9w
T25seTsKICAgIGludCAgICAgICAgICAgICBpZ25vcmVFcnJvcnM7CiAgICBMaXN0PFR3aW5lPiAg
ICAgcXVldWU7CiAgICBpbnQgICAgICAgICAgICAgaXNBdWQyOwogICAgRklMRSAgICAgICAgICAg
ICpmaWxlOwogICAgaW50ICAgICAgICAgICAgIHByZXZpb3VzbHlPcGVuOwogICAgaW50ICAgICAg
ICAgICAgIGlnbm9yZVByb21wdDsKICAgIGNoYXIgICAgICAgICAgICAqZmlsZW5hbWU7CgpwdWJs
aWM6CiAgICBIVV9BdWRpdFN0cmVhbSggaW50IGF1ZFR5cGUgKTsKICAgIH5IVV9BdWRpdFN0cmVh
bSgpOwoKICAgIGludCBHZXRUb3BPbmx5KCk7CiAgICB2b2lkIFNldFRvcE9ubHkoIGludCApOwoK
ICAgIGludCBHZXRJZ25vcmVFcnJvcnMoKTsKICAgIHZvaWQgU2V0SWdub3JlRXJyb3JzKCBpbnQg
KTsKCiAgICBpbnQgR2V0SWdub3JlUHJvbXB0KCk7CiAgICB2b2lkIFNldElnbm9yZVByb21wdCgg
aW50ICk7CgogICAgdm9pZCBQcmludFF1ZXVlKCk7CiAgICB2b2lkIEVtcHR5UXVldWUoKTsKCiAg
ICBUd2luZSBHZXRUZXh0U3RhdHVzKCk7CgogICAgdm9pZCBvcGVyYXRvcigpKCBjb25zdCBMaXN0
PFR3aW5lPiAmIGFyZ3YgKTsKICAgIHZvaWQgb3BlcmF0b3IoKSggY29uc3QgVHdpbmUgJiB0aGVM
aW5lICk7CiAgICB2b2lkIG9wZXJhdG9yKCkoIGNvbnN0IGNoYXIgKiB0aGVMaW5lICk7CgogICAg
RklMRSAqT3BlbigpOwogICAgaW50IENsb3NlKCk7CgogICAgaW50IElzT3BlbigpOwoKICAgIHZv
aWQgU2V0RmlsZW5hbWUoIGNvbnN0IGNoYXIgKm5ld05hbWUgKTsKICAgIFR3aW5lIEdldEZpbGVu
YW1lKCk7CiAgICB9OwoKIyAxICIvc29mdHdhcmUvdGhhbGlhL2gvaHUucCIgMQogCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgogCgoKIAoKdm9pZCBIVV9WYUF1ZGl0ICgKCQljb25zdCBjaGFyICpzdHIK
CQkuLi4KICk7CgoKIAoKdm9pZCBIVV9BZGRCaW5hcnlPcGVyYXRvciAoCiAgICAgICAgY29uc3Qg
Y2hhciAqICAgIG5hbWUsCiAgICAgICAgaW50ICAgICAgICAgICAgIHByaW9yaXR5LAogICAgICAg
IEhVX1ZhbHVlICAgICAgICAoICpldmFsRm4gKSggSFVfRXhwcmVzc2lvbiwgSFVfRXhwcmVzc2lv
biwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICosIEhVX1BhcnNlclN0YXRlICYgKQogKTsKCgogCgoKIAoKdm9pZCBIVV9Jbml0U2ln
bmFscyAoCiAgICB2b2lkCiApOwoKdm9pZCBIVV9Gcm9tQ2JyZWFrICgKICAgIHZvaWQKICk7Cgpp
bnQgSFVfVG9DYnJlYWsgKAogICAgdm9pZAogKTsKCgogCgoKIAoKCiAKCnZvaWQgSFVfQWRkQ2xh
c3MgKCAKICAgICAgICAgICAgICAgICAgICBPX0NMQVNTICpuZXdDbGFzcyAKICk7CgoKIAoKCiAK
CgogCgoKIAoKdm9pZCBIVV9Eb1Jlc2l6ZSAoKTsKCgogCgoKIAoKCiAKCnZvaWQgSFVfRXJyb3Ig
KCAKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptc2cgCiApOwoKdm9pZCBIVV9TeXNF
cnJvciAoIAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZyAKICk7Cgp2b2lkIEhV
X1dhcm4gKCAKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptc2cgCiApOwoKCiAKCnZv
aWQgSFVfQWRkTWFpbiAoIAoJCWNvbnN0IGNoYXIqIGNtZCwgCgkJaW50ICgqZnVuYykoIGNoYXIq
LCBjaGFyKiosIGludCApLAoJCWNvbnN0IGNoYXIqIGhlbHAgCiApOwoKdm9pZCBIVV9BZGRNYWlu
ICggCgkJY29uc3QgY2hhciogY21kLCAKCQlpbnQgKCpmdW5jKSggY29uc3QgY2hhciosIExpc3Q8
IGNvbnN0IGNoYXIqID4gKSwKCQljb25zdCBjaGFyKiBoZWxwIAogKTsKCnZvaWQgSFVfQWRkTWFp
biAoIAoJCWNvbnN0IGNoYXIqIGNtZCwgCgkJaW50ICgqZnVuYykoIGNvbnN0IGNoYXIqLCBMaXN0
PCBjb25zdCBjaGFyICogPiwgdm9pZCAqICksCgkJY29uc3QgY2hhciogaGVscCwKCQl2b2lkKiBj
bGllbnREYXRhCiApOwoKdm9pZCBIVV9BZGRNYWluICggCgkJY29uc3QgY2hhciogY21kLCAKCQlp
bnQgKCpmdW5jKSggdm9pZCogKSwKCQljb25zdCBjaGFyKiBoZWxwLAoJCXZvaWQqIGNsaWVudERh
dGEKICk7Cgp2b2lkIEhVX0FkZE1haW4gKCAKCQljb25zdCBjaGFyKiBjbWQsIAoJCWludCAoKmZ1
bmMpKCBjb25zdCBMaXN0PFR3aW5lPiAmLCB2b2lkICogKSwKCQljb25zdCBjaGFyKiBoZWxwICwK
CQl2b2lkKiBjbGllbnREYXRhCiApOwoKdm9pZCBIVV9BZGRNYWluICggCgkJY29uc3QgY2hhciog
Y21kLCAKCQlpbnQgKCpmdW5jKSgpLAoJCWNvbnN0IGNoYXIqIGhlbHAgCiApOwoKdm9pZCBIVV9B
ZGRNYWluICggCgkJY29uc3QgY2hhciogY21kLCAKCQlpbnQgKCpmdW5jKSggY29uc3QgTGlzdDwg
VHdpbmUgPiYgKSwKCQljb25zdCBjaGFyKiBoZWxwIAogKTsKCnZvaWQgSFVfQWRkTWFpbiAoIAoJ
CWNvbnN0IGNoYXIqIGNtZCwgCgkJaW50ICgqZnVuYykoIExpc3Q8IEhVX0V4cHJlc3Npb24gPiAp
LAoJCWNvbnN0IGNoYXIqIGhlbHAgCiApOwoKdm9pZCBIVV9BZGRNYWluICggCgkJY29uc3QgY2hh
ciogY21kLCAKCQlpbnQgKCpmdW5jKSggTGlzdDwgSFVfRXhwcmVzc2lvbiA+LCB2b2lkKiApLAoJ
CWNvbnN0IGNoYXIqIGhlbHAsCgkJdm9pZCogY2xpZW50RGF0YQogKTsKCkJPT0xFQU4gSFVfRmlu
ZE1haW4gKAoJCSAgICBjb25zdCBjaGFyKiBhcmcKICk7Cgp2b2lkIEhVX1JlbW92ZU1haW4gKAoJ
CSAgIGNvbnN0IGNoYXIqIGNtZAogKTsKCnZvaWQgSFVfQWRkRGVmYXVsdCAoIAoJCSAgIGludCAo
KmZ1bmMpKCBjb25zdCBMaXN0PCBUd2luZSA+JiApIAogKTsKCnZvaWQgSFVfQWRkRGVmYXVsdCAo
CgkJICAgaW50ICgqZnVuYykoIExpc3Q8IEhVX0V4cHJlc3Npb24gPiApCiApOwoKTGlzdDxUd2lu
ZT4gSFVfRXZhbHVhdGUgKAoJCQlMaXN0PCBIVV9FeHByZXNzaW9uID4gZXhwcnMsCgkJCUhVX1Bh
cnNlclN0YXRlJiBnZW5lcmljU3RhdGUKICk7Cgp2b2lkIEhVX0V4ZWN1dGUgKAoJCUxpc3Q8SFVf
RXhwcmVzc2lvbj4gZXhwcnMsCgkJSFVfUGFyc2VyU3RhdGUmIGdlbmVyaWNTdGF0ZQogKTsKCgog
CgoKIAoKTGlzdDxIVV9FeHByZXNzaW9uPiBIVV9FeHBhbmQgKCAKICAgICAgICBjb25zdCBUd2lu
ZSAmIHRoZUxpbmUsCiAgICAgICAgSFVfUGFyc2VyU3RhdGUgICYgZ2VuZXJpY1N0YXRlCiApOwoK
TGlzdDxIVV9FeHByZXNzaW9uPiBIVV9FeHBhbmRNYXRoICgKICAgICAgICBjb25zdCBUd2luZSAm
IHRoZUxpbmUsCiAgICAgICAgSFVfUGFyc2VyU3RhdGUgICYgZ2VuZXJpY1N0YXRlCiApOwoKTGlz
dDxIVV9FeHByZXNzaW9uPiBIVV9FeHBhbmRWYWx1ZSAoCiAgICAgICAgY29uc3QgVHdpbmUgJiB0
aGVMaW5lLAogICAgICAgIEhVX1BhcnNlclN0YXRlICAmIGdlbmVyaWNTdGF0ZQogKTsKCgogCgp2
b2lkIEhVX0FkZE9iamVjdENoYW5uZWxGdW5jdGlvbnMgKAogICAgICAgIExpc3Q8dm9pZCAqPiAo
Kmxvb2t1cEZuKSggY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIEhVX1BhcnNlclN0YXRlICYp
LAogICAgICAgIEhVX1ZhbHVlICAoKmV2YWxGbikoIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
LCBjb25zdCBMaXN0PHZvaWQgKj4gJiAsIEhVX1BhcnNlclN0YXRlICYgKSwKICAgICAgICBpbnQg
ICAgICgqcGFyc2VGbikoIFR3aW5lICYsIFR3aW5lICYgKQogKTsKCnZvaWQgSFVfQWRkT2JqZWN0
Q2hhbm5lbEZ1bmN0aW9ucyAoCiAgICAgICAgTGlzdDx2b2lkICo+ICgqbG9va3VwRm4pKCBjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgSFVfUGFyc2VyU3RhdGUgJiksCiAgICAgICAgSFVfVmFs
dWUgICgqZXZhbEZuKSggY29uc3QgTGlzdDx2b2lkICo+ICYgLCBIVV9QYXJzZXJTdGF0ZSAmICks
CiAgICAgICAgaW50ICAgICAoKnBhcnNlRm4pKCBUd2luZSAmLCBUd2luZSAmICkKICk7Cgp2b2lk
IEhVX0ZsdXNoT2JqZWN0Q2hhbm5lbENhY2hlICgKICAgICAgICB2b2lkCiApOwoKdm9pZCBIVV9H
bG9iYWxSZW5hbWVPYmplY3RDaGFubmVsICgKICAgICAgICBjb25zdCBjaGFyICpvbGROYW1lLAog
ICAgICAgIGNvbnN0IGNoYXIgKm9sZENoYW4sCiAgICAgICAgY29uc3QgY2hhciAqbmV3TmFtZSwK
ICAgICAgICBjb25zdCBjaGFyICpuZXdDaGFuCiApOwoKdm9pZCBIVV9BZGRPYmplY3RGdW5jdGlv
bnMgKAogICAgICAgIExpc3Q8dm9pZCAqPiAoKmxvb2t1cEZuKSggY29uc3QgY2hhciAqLCBIVV9Q
YXJzZXJTdGF0ZSAmKSwKICAgICAgICBIVV9WYWx1ZSAgKCpldmFsRm4pKCBjb25zdCBjaGFyICos
IGNvbnN0IExpc3Q8dm9pZCAqPiAmICwgSFVfUGFyc2VyU3RhdGUgJiApLAogICAgICAgIGludCAg
ICAgKCpwYXJzZUZuKSggVHdpbmUgJiApCiApOwoKdm9pZCBIVV9BZGRPYmplY3RGdW5jdGlvbnMg
KAogICAgICAgIExpc3Q8dm9pZCAqPiAoKmxvb2t1cEZuKSggY29uc3QgY2hhciAqLCBIVV9QYXJz
ZXJTdGF0ZSAmKSwKICAgICAgICBIVV9WYWx1ZSAgKCpldmFsRm4pKCBjb25zdCBMaXN0PHZvaWQg
Kj4gJiAsIEhVX1BhcnNlclN0YXRlICYgKSwKICAgICAgICBpbnQgICAgICgqcGFyc2VGbikoIFR3
aW5lICYgKQogKTsKCnZvaWQgSFVfR2xvYmFsUmVuYW1lT2JqZWN0ICgKICAgICAgICBjb25zdCBj
aGFyICpvbGROYW1lLAogICAgICAgIGNvbnN0IGNoYXIgKm5ld05hbWUKICk7Cgp2b2lkIEhVX0Zs
dXNoT2JqZWN0Q2FjaGUgKAogICAgICAgIHZvaWQKICk7Cgp2b2lkIEhVX0FkZFBvc3RGaXhPcGVy
YXRvciAoCiAgICAgICAgY29uc3QgY2hhciAqICAgIG5hbWUsCiAgICAgICAgaW50ICAgICAgICAg
ICAgIG5BcmdzLAogICAgICAgIEhVX1ZhbHVlICAgICAgICAoICpldmFsRm4gKSggSFVfRXhwcmVz
c2lvbiwgTGlzdDxIVV9FeHByZXNzaW9uPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyICosIEhVX1BhcnNlclN0YXRlICYgKQogKTsKCnZvaWQgSFVfQWRkQ2hh
blNwZWNGdW5jdGlvbnMgKAogICAgICAgIExpc3Q8dm9pZCAqPiAoKmxvb2t1cEZuKSggY29uc3Qg
Y2hhciAqLCBIVV9QYXJzZXJTdGF0ZSAmKSwKICAgICAgICBIVV9WYWx1ZSAoKmV2YWxGbikoY29u
c3QgY2hhciAqLGNvbnN0IExpc3Q8dm9pZCAqPiAmLCBIVV9QYXJzZXJTdGF0ZSAmKSwKICAgICAg
ICBpbnQgICAgICgqcGFyc2VGbikoIFR3aW5lICYgKQogKTsKCnZvaWQgSFVfQWRkQ2hhblNwZWNG
dW5jdGlvbnMgKAogICAgICAgIExpc3Q8dm9pZCAqPiAoKmxvb2t1cEZuKSggY29uc3QgY2hhciAq
LCBIVV9QYXJzZXJTdGF0ZSAmKSwKICAgICAgICBIVV9WYWx1ZSAoKmV2YWxGbikoY29uc3QgY2hh
ciAqLGNvbnN0IExpc3Q8dm9pZCAqPiAmLCBIVV9QYXJzZXJTdGF0ZSAmKSwKICAgICAgICBpbnQg
ICAgICgqcGFyc2VGbikoIFR3aW5lICYgKSwKICAgICAgICBpbnQgICAgICgqcGFyc2VBc0FyZ0Zu
KSggVHdpbmUgJiwgY29uc3QgY2hhciAqLCBpbnQgKQogKTsKCnZvaWQgSFVfRmx1c2hDaGFuU3Bl
Y0NhY2hlICgKICAgICAgICB2b2lkCiApOwoKCiAKCgogCgp2b2lkIEhVX0FkZE1ldGhvZCAoIAog
ICAgICAgICAgICAgICAgICAgIEZPX09CSkVDVCAqdGhlQ2xhc3MsIAogICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKm1ldGhvZE5hbWUsCiAgICAgICAgY29uc3QgY2hhciAqaGVscCwgCiAg
ICAgICAgICAgICAgICAgICAgRk9fTUVTU0FHRV9JRCBtZXNzYWdlSUQgCiApOwoKdm9pZCBIVV9B
ZGRNZXRob2QgKCAKICAgICAgICAgICAgICAgICAgICBGT19PQkpFQ1QgKnRoZUNsYXNzLCAKICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptZXRob2ROYW1lLAogICAgICAgIGNvbnN0IGNo
YXIgKmhlbHAsIAogICAgICAgICAgICAgICAgICAgIEZPX01FU1NBR0VfSUQgbWVzc2FnZUlELCAK
ICAgICAgICAgICAgICAgICAgICB2b2lkICphcmdCYXNlLAogICAgICAgIENhc3RlciBhcmcxIAog
KTsKCnZvaWQgSFVfQWRkTWV0aG9kICggCiAgICAgICAgICAgICAgICAgICAgRk9fT0JKRUNUICp0
aGVDbGFzcywgCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWV0aG9kTmFtZSwKICAg
ICAgICBjb25zdCBjaGFyICpoZWxwLCAKICAgICAgICAgICAgICAgICAgICBGT19NRVNTQUdFX0lE
IG1lc3NhZ2VJRCwgCiAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnQmFzZSwKICAgICAgICBD
YXN0ZXIgYXJnMSwgCiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzIgCiApOwoKdm9pZCBI
VV9BZGRNZXRob2QgKCAKICAgICAgICAgICAgICAgICAgICBGT19PQkpFQ1QgKnRoZUNsYXNzLCAK
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptZXRob2ROYW1lLAogICAgICAgIGNvbnN0
IGNoYXIgKmhlbHAsIAogICAgICAgICAgICAgICAgICAgIEZPX01FU1NBR0VfSUQgbWVzc2FnZUlE
LCAKICAgICAgICAgICAgICAgICAgICB2b2lkICphcmdCYXNlLAogICAgICAgIENhc3RlciBhcmcx
LCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJnMiwgCiAgICAgICAgICAgICAgICAgICAg
Q2FzdGVyIGFyZzMgCiApOwoKdm9pZCBIVV9BZGRNZXRob2QgKCAKICAgICAgICAgICAgICAgICAg
ICBGT19PQkpFQ1QgKnRoZUNsYXNzLCAKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpt
ZXRob2ROYW1lLAogICAgICAgIGNvbnN0IGNoYXIgKmhlbHAsIAogICAgICAgICAgICAgICAgICAg
IEZPX01FU1NBR0VfSUQgbWVzc2FnZUlELCAKICAgICAgICAgICAgICAgICAgICB2b2lkICphcmdC
YXNlLAogICAgICAgIENhc3RlciBhcmcxLCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJn
MiwgCiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzMsIAogICAgICAgICAgICAgICAgICAg
IENhc3RlciBhcmc0IAogKTsKCnZvaWQgSFVfQWRkTWV0aG9kICggCiAgICAgICAgICAgICAgICAg
ICAgRk9fT0JKRUNUICp0aGVDbGFzcywgCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
bWV0aG9kTmFtZSwKICAgICAgICBjb25zdCBjaGFyICpoZWxwLCAKICAgICAgICAgICAgICAgICAg
ICBGT19NRVNTQUdFX0lEIG1lc3NhZ2VJRCwgCiAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJn
QmFzZSwKICAgICAgICBDYXN0ZXIgYXJnMSwgCiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFy
ZzIsIAogICAgICAgICAgICAgICAgICAgIENhc3RlciBhcmczLCAKICAgICAgICAgICAgICAgICAg
ICBDYXN0ZXIgYXJnNCwKICAgICAgICBDYXN0ZXIgYXJnNSAKICk7Cgp2b2lkIEhVX0FkZE1ldGhv
ZCAoIAogICAgICAgICAgICAgICAgICAgIEZPX09CSkVDVCAqdGhlQ2xhc3MsIAogICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhvZE5hbWUsCiAgICAgICAgY29uc3QgY2hhciAqaGVs
cCwgCiAgICAgICAgICAgICAgICAgICAgRk9fTUVTU0FHRV9JRCBtZXNzYWdlSUQsIAogICAgICAg
ICAgICAgICAgICAgIHZvaWQgKmFyZ0Jhc2UsCiAgICAgICAgQ2FzdGVyIGFyZzEsIAogICAgICAg
ICAgICAgICAgICAgIENhc3RlciBhcmcyLCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJn
MywgCiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzQsCiAgICAgICAgQ2FzdGVyIGFyZzUs
IAogICAgICAgICAgICAgICAgICAgIENhc3RlciBhcmc2IAogKTsKCnZvaWQgSFVfQWRkTWV0aG9k
ICggCiAgICAgICAgICAgICAgICAgICAgRk9fT0JKRUNUICp0aGVDbGFzcywgCiAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqbWV0aG9kTmFtZSwKICAgICAgICBjb25zdCBjaGFyICpoZWxw
LCAKICAgICAgICAgICAgICAgICAgICBGT19NRVNTQUdFX0lEIG1lc3NhZ2VJRCwgCiAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqYXJnQmFzZSwKICAgICAgICBDYXN0ZXIgYXJnMSwgCiAgICAgICAg
ICAgICAgICAgICAgQ2FzdGVyIGFyZzIsIAogICAgICAgICAgICAgICAgICAgIENhc3RlciBhcmcz
LCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJnNCwKICAgICAgICBDYXN0ZXIgYXJnNSwg
CiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzYsIAogICAgICAgICAgICAgICAgICAgIENh
c3RlciBhcmc3IAogKTsKCnZvaWQgSFVfQWRkTWV0aG9kICggCiAgICAgICAgICAgICAgICAgICAg
Rk9fT0JKRUNUICp0aGVDbGFzcywgCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWV0
aG9kTmFtZSwKICAgICAgICBjb25zdCBjaGFyICpoZWxwLCAKICAgICAgICAgICAgICAgICAgICBG
T19NRVNTQUdFX0lEIG1lc3NhZ2VJRCwgCiAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnQmFz
ZSwKICAgICAgICBDYXN0ZXIgYXJnMSwgCiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzIs
IAogICAgICAgICAgICAgICAgICAgIENhc3RlciBhcmczLCAKICAgICAgICAgICAgICAgICAgICBD
YXN0ZXIgYXJnNCwKICAgICAgICBDYXN0ZXIgYXJnNSwgCiAgICAgICAgICAgICAgICAgICAgQ2Fz
dGVyIGFyZzYsIAogICAgICAgICAgICAgICAgICAgIENhc3RlciBhcmc3LCAKICAgICAgICAgICAg
ICAgICAgICBDYXN0ZXIgYXJnOCAKICk7Cgp2b2lkIEhVX0FkZE1ldGhvZCAoIAogICAgICAgICAg
ICAgICAgICAgIEZPX09CSkVDVCAqdGhlQ2xhc3MsIAogICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKm1ldGhvZE5hbWUsCiAgICAgICAgY29uc3QgY2hhciAqaGVscCwgCiAgICAgICAgICAg
ICAgICAgICAgRk9fTUVTU0FHRV9JRCBtZXNzYWdlSUQsIAogICAgICAgICAgICAgICAgICAgIHZv
aWQgKmFyZ0Jhc2UsCiAgICAgICAgQ2FzdGVyIGFyZzEsIAogICAgICAgICAgICAgICAgICAgIENh
c3RlciBhcmcyLCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJnMywgCiAgICAgICAgICAg
ICAgICAgICAgQ2FzdGVyIGFyZzQsCiAgICAgICAgQ2FzdGVyIGFyZzUsIAogICAgICAgICAgICAg
ICAgICAgIENhc3RlciBhcmc2LCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJnNywgCiAg
ICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzgsCiAgICAgICAgQ2FzdGVyIGFyZzkgCiApOwoK
dm9pZCBIVV9BZGRNZXRob2QgKCAKICAgICAgICAgICAgICAgICAgICBGT19PQkpFQ1QgKnRoZUNs
YXNzLCAKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptZXRob2ROYW1lLAogICAgICAg
IGNvbnN0IGNoYXIgKmhlbHAsIAogICAgICAgICAgICAgICAgICAgIEZPX01FU1NBR0VfSUQgbWVz
c2FnZUlELCAKICAgICAgICAgICAgICAgICAgICB2b2lkICphcmdCYXNlLAogICAgICAgIENhc3Rl
ciBhcmcxLCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJnMiwgCiAgICAgICAgICAgICAg
ICAgICAgQ2FzdGVyIGFyZzMsIAogICAgICAgICAgICAgICAgICAgIENhc3RlciBhcmc0LAogICAg
ICAgIENhc3RlciBhcmc1LCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJnNiwgCiAgICAg
ICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzcsIAogICAgICAgICAgICAgICAgICAgIENhc3RlciBh
cmc4LAogICAgICAgIENhc3RlciBhcmc5LCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJn
MTAgCiApOwoKdm9pZCBIVV9BZGRNZXRob2QgKCAKICAgICAgICAgICAgICAgICAgICBGT19PQkpF
Q1QgKnRoZUNsYXNzLCAKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptZXRob2ROYW1l
LAogICAgICAgIGNvbnN0IGNoYXIgKmhlbHAsIAogICAgICAgICAgICAgICAgICAgIEZPX01FU1NB
R0VfSUQgbWVzc2FnZUlELCAKICAgICAgICAgICAgICAgICAgICB2b2lkICphcmdCYXNlLAogICAg
ICAgIENhc3RlciBhcmcxLCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJnMiwgCiAgICAg
ICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzMsIAogICAgICAgICAgICAgICAgICAgIENhc3RlciBh
cmc0LAogICAgICAgIENhc3RlciBhcmc1LCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJn
NiwgCiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzcsIAogICAgICAgICAgICAgICAgICAg
IENhc3RlciBhcmc4LAogICAgICAgIENhc3RlciBhcmc5LCAKICAgICAgICAgICAgICAgICAgICBD
YXN0ZXIgYXJnMTAsCiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzExIAogKTsKCnZvaWQg
SFVfQWRkTWV0aG9kICggCiAgICAgICAgICAgICAgICAgICAgRk9fT0JKRUNUICp0aGVDbGFzcywg
CiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWV0aG9kTmFtZSwKICAgICAgICBjb25z
dCBjaGFyICpoZWxwLCAKICAgICAgICAgICAgICAgICAgICBGT19NRVNTQUdFX0lEIG1lc3NhZ2VJ
RCwgCiAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnQmFzZSwKICAgICAgICBDYXN0ZXIgYXJn
MSwgCiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzIsIAogICAgICAgICAgICAgICAgICAg
IENhc3RlciBhcmczLCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJnNCwKICAgICAgICBD
YXN0ZXIgYXJnNSwgCiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzYsIAogICAgICAgICAg
ICAgICAgICAgIENhc3RlciBhcmc3LCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJnOCwK
ICAgICAgICBDYXN0ZXIgYXJnOSwgCiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzEwLAog
ICAgICAgICAgICAgICAgICAgIENhc3RlciBhcmcxMSwKICAgICAgICAgICAgICAgICAgICBDYXN0
ZXIgYXJnMTIgCiApOwoKdm9pZCBIVV9BZGRNZXRob2QgKCAKICAgICAgICAgICAgICAgICAgICBG
T19PQkpFQ1QgKnRoZUNsYXNzLCAKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptZXRo
b2ROYW1lLAogICAgICAgIGNvbnN0IGNoYXIgKmhlbHAsIAogICAgICAgICAgICAgICAgICAgIEZP
X01FU1NBR0VfSUQgbWVzc2FnZUlELCAKICAgICAgICAgICAgICAgICAgICB2b2lkICphcmdCYXNl
LAogICAgICAgIENhc3RlciBhcmcxLCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJnMiwg
CiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzMsIAogICAgICAgICAgICAgICAgICAgIENh
c3RlciBhcmc0LAogICAgICAgIENhc3RlciBhcmc1LCAKICAgICAgICAgICAgICAgICAgICBDYXN0
ZXIgYXJnNiwgCiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzcsIAogICAgICAgICAgICAg
ICAgICAgIENhc3RlciBhcmc4LAogICAgICAgIENhc3RlciBhcmc5LCAKICAgICAgICAgICAgICAg
ICAgICBDYXN0ZXIgYXJnMTAsCiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzExLAogICAg
ICAgICAgICAgICAgICAgIENhc3RlciBhcmcxMiwKICAgICAgICBDYXN0ZXIgYXJnMTMgCiApOwoK
dm9pZCBIVV9BZGRNZXRob2QgKCAKICAgICAgICAgICAgICAgICAgICBGT19PQkpFQ1QgKnRoZUNs
YXNzLCAKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptZXRob2ROYW1lLAogICAgICAg
IGNvbnN0IGNoYXIgKmhlbHAsIAogICAgICAgICAgICAgICAgICAgIEZPX01FU1NBR0VfSUQgbWVz
c2FnZUlELCAKICAgICAgICAgICAgICAgICAgICB2b2lkICphcmdCYXNlLAogICAgICAgIENhc3Rl
ciBhcmcxLCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJnMiwgCiAgICAgICAgICAgICAg
ICAgICAgQ2FzdGVyIGFyZzMsIAogICAgICAgICAgICAgICAgICAgIENhc3RlciBhcmc0LAogICAg
ICAgIENhc3RlciBhcmc1LCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJnNiwgCiAgICAg
ICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzcsIAogICAgICAgICAgICAgICAgICAgIENhc3RlciBh
cmc4LAogICAgICAgIENhc3RlciBhcmc5LCAKICAgICAgICAgICAgICAgICAgICBDYXN0ZXIgYXJn
MTAsCiAgICAgICAgICAgICAgICAgICAgQ2FzdGVyIGFyZzExLAogICAgICAgICAgICAgICAgICAg
IENhc3RlciBhcmcxMiwKICAgICAgICBDYXN0ZXIgYXJnMTMsCiAgICAgICAgICAgICAgICAgICAg
Q2FzdGVyIGFyZzE0IAogKTsKCnZvaWQgSFVfQWRkTWV0aG9kICggCiAgICAgICAgICAgICAgICAg
ICAgRk9fT0JKRUNUICp0aGVDbGFzcywgCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
bWV0aG9kTmFtZSwKICAgICAgICBjb25zdCBjaGFyICpoZWxwLCAKICAgICAgICAgICAgICAgICAg
ICBGT19NRVNTQUdFX0lEIG1lc3NhZ2VJRCwgCiAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJn
QmFzZSwKICAgICAgICBDYXN0ZXIgYXJnMSwgCiAgICAgICAgQ2FzdGVyIGFyZzIsIAogICAgICAg
IENhc3RlciBhcmczLCAKICAgICAgICBDYXN0ZXIgYXJnNCwgCiAgICAgICAgQ2FzdGVyIGFyZzUs
IAogICAgICAgIENhc3RlciBhcmc2LCAKICAgICAgICBDYXN0ZXIgYXJnNywgCiAgICAgICAgQ2Fz
dGVyIGFyZzgsIAogICAgICAgIENhc3RlciBhcmc5LCAKICAgICAgICBDYXN0ZXIgYXJnMTAsCiAg
ICAgICAgQ2FzdGVyIGFyZzExLCAKICAgICAgICBDYXN0ZXIgYXJnMTIsIAogICAgICAgIENhc3Rl
ciBhcmcxMywgCiAgICAgICAgQ2FzdGVyIGFyZzE0LCAKICAgICAgICBDYXN0ZXIgYXJnMTUKICk7
Cgp2b2lkIEhVX0FkZE1ldGhvZCAoIAogICAgICAgICAgICAgICAgICAgIEZPX09CSkVDVCAqdGhl
Q2xhc3MsIAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhvZE5hbWUsCiAgICAg
ICAgY29uc3QgY2hhciAqaGVscCwgCiAgICAgICAgICAgICAgICAgICAgRk9fTUVTU0FHRV9JRCBt
ZXNzYWdlSUQsIAogICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZ0Jhc2UsCiAgICAgICAgQ2Fz
dGVyIGFyZzEsIAogICAgICAgIENhc3RlciBhcmcyLCAKICAgICAgICBDYXN0ZXIgYXJnMywgCiAg
ICAgICAgQ2FzdGVyIGFyZzQsIAogICAgICAgIENhc3RlciBhcmc1LCAKICAgICAgICBDYXN0ZXIg
YXJnNiwgCiAgICAgICAgQ2FzdGVyIGFyZzcsIAogICAgICAgIENhc3RlciBhcmc4LCAKICAgICAg
ICBDYXN0ZXIgYXJnOSwgCiAgICAgICAgQ2FzdGVyIGFyZzEwLAogICAgICAgIENhc3RlciBhcmcx
MSwgCiAgICAgICAgQ2FzdGVyIGFyZzEyLCAKICAgICAgICBDYXN0ZXIgYXJnMTMsIAogICAgICAg
IENhc3RlciBhcmcxNCwgCiAgICAgICAgQ2FzdGVyIGFyZzE1LAogICAgICAgIENhc3RlciBhcmcx
NgogKTsKCnZvaWQgSFVfQWRkTWV0aG9kICggCiAgICAgICAgICAgICAgICAgICAgRk9fT0JKRUNU
ICp0aGVDbGFzcywgCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWV0aG9kTmFtZSwK
ICAgICAgICBjb25zdCBjaGFyICpoZWxwLCAKICAgICAgICAgICAgICAgICAgICBGT19NRVNTQUdF
X0lEIG1lc3NhZ2VJRCwgCiAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnQmFzZSwKICAgICAg
ICBDYXN0ZXIgYXJnMSwgCiAgICAgICAgQ2FzdGVyIGFyZzIsIAogICAgICAgIENhc3RlciBhcmcz
LCAKICAgICAgICBDYXN0ZXIgYXJnNCwgCiAgICAgICAgQ2FzdGVyIGFyZzUsIAogICAgICAgIENh
c3RlciBhcmc2LCAKICAgICAgICBDYXN0ZXIgYXJnNywgCiAgICAgICAgQ2FzdGVyIGFyZzgsIAog
ICAgICAgIENhc3RlciBhcmc5LCAKICAgICAgICBDYXN0ZXIgYXJnMTAsCiAgICAgICAgQ2FzdGVy
IGFyZzExLCAKICAgICAgICBDYXN0ZXIgYXJnMTIsIAogICAgICAgIENhc3RlciBhcmcxMywgCiAg
ICAgICAgQ2FzdGVyIGFyZzE0LCAKICAgICAgICBDYXN0ZXIgYXJnMTUsCiAgICAgICAgQ2FzdGVy
IGFyZzE2LCAKICAgICAgICBDYXN0ZXIgYXJnMTcKICk7Cgp2b2lkIEhVX0FkZE1ldGhvZCAoIAog
ICAgICAgICAgICAgICAgICAgIEZPX09CSkVDVCAqdGhlQ2xhc3MsIAogICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKm1ldGhvZE5hbWUsCiAgICAgICAgY29uc3QgY2hhciAqaGVscCwgCiAg
ICAgICAgICAgICAgICAgICAgRk9fTUVTU0FHRV9JRCBtZXNzYWdlSUQsIAogICAgICAgICAgICAg
ICAgICAgIHZvaWQgKmFyZ0Jhc2UsCiAgICAgICAgQ2FzdGVyIGFyZzEsIAogICAgICAgIENhc3Rl
ciBhcmcyLCAKICAgICAgICBDYXN0ZXIgYXJnMywgCiAgICAgICAgQ2FzdGVyIGFyZzQsIAogICAg
ICAgIENhc3RlciBhcmc1LCAKICAgICAgICBDYXN0ZXIgYXJnNiwgCiAgICAgICAgQ2FzdGVyIGFy
ZzcsIAogICAgICAgIENhc3RlciBhcmc4LCAKICAgICAgICBDYXN0ZXIgYXJnOSwgCiAgICAgICAg
Q2FzdGVyIGFyZzEwLAogICAgICAgIENhc3RlciBhcmcxMSwgCiAgICAgICAgQ2FzdGVyIGFyZzEy
LCAKICAgICAgICBDYXN0ZXIgYXJnMTMsIAogICAgICAgIENhc3RlciBhcmcxNCwgCiAgICAgICAg
Q2FzdGVyIGFyZzE1LAogICAgICAgIENhc3RlciBhcmcxNiwgCiAgICAgICAgQ2FzdGVyIGFyZzE3
LCAKICAgICAgICBDYXN0ZXIgYXJnMTgKICk7Cgp2b2lkIEhVX0FkZE1ldGhvZCAoIAogICAgICAg
ICAgICAgICAgICAgIEZPX09CSkVDVCAqdGhlQ2xhc3MsIAogICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKm1ldGhvZE5hbWUsCiAgICAgICAgY29uc3QgY2hhciAqaGVscCwgCiAgICAgICAg
ICAgICAgICAgICAgRk9fTUVTU0FHRV9JRCBtZXNzYWdlSUQsIAogICAgICAgICAgICAgICAgICAg
IHZvaWQgKmFyZ0Jhc2UsCiAgICAgICAgQ2FzdGVyIGFyZzEsIAogICAgICAgIENhc3RlciBhcmcy
LCAKICAgICAgICBDYXN0ZXIgYXJnMywgCiAgICAgICAgQ2FzdGVyIGFyZzQsIAogICAgICAgIENh
c3RlciBhcmc1LCAKICAgICAgICBDYXN0ZXIgYXJnNiwgCiAgICAgICAgQ2FzdGVyIGFyZzcsIAog
ICAgICAgIENhc3RlciBhcmc4LCAKICAgICAgICBDYXN0ZXIgYXJnOSwgCiAgICAgICAgQ2FzdGVy
IGFyZzEwLAogICAgICAgIENhc3RlciBhcmcxMSwgCiAgICAgICAgQ2FzdGVyIGFyZzEyLCAKICAg
ICAgICBDYXN0ZXIgYXJnMTMsIAogICAgICAgIENhc3RlciBhcmcxNCwgCiAgICAgICAgQ2FzdGVy
IGFyZzE1LAogICAgICAgIENhc3RlciBhcmcxNiwgCiAgICAgICAgQ2FzdGVyIGFyZzE3LCAKICAg
ICAgICBDYXN0ZXIgYXJnMTgsIAogICAgICAgIENhc3RlciBhcmcxOQogKTsKCnZvaWQgSFVfQWRk
TWV0aG9kICggCiAgICAgICAgICAgICAgICAgICAgRk9fT0JKRUNUICp0aGVDbGFzcywgCiAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWV0aG9kTmFtZSwKICAgICAgICBjb25zdCBjaGFy
ICpoZWxwLCAKICAgICAgICAgICAgICAgICAgICBGT19NRVNTQUdFX0lEIG1lc3NhZ2VJRCwgCiAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnQmFzZSwKICAgICAgICBDYXN0ZXIgYXJnMSwgCiAg
ICAgICAgQ2FzdGVyIGFyZzIsIAogICAgICAgIENhc3RlciBhcmczLCAKICAgICAgICBDYXN0ZXIg
YXJnNCwgCiAgICAgICAgQ2FzdGVyIGFyZzUsIAogICAgICAgIENhc3RlciBhcmc2LCAKICAgICAg
ICBDYXN0ZXIgYXJnNywgCiAgICAgICAgQ2FzdGVyIGFyZzgsIAogICAgICAgIENhc3RlciBhcmc5
LCAKICAgICAgICBDYXN0ZXIgYXJnMTAsCiAgICAgICAgQ2FzdGVyIGFyZzExLCAKICAgICAgICBD
YXN0ZXIgYXJnMTIsIAogICAgICAgIENhc3RlciBhcmcxMywgCiAgICAgICAgQ2FzdGVyIGFyZzE0
LCAKICAgICAgICBDYXN0ZXIgYXJnMTUsCiAgICAgICAgQ2FzdGVyIGFyZzE2LCAKICAgICAgICBD
YXN0ZXIgYXJnMTcsIAogICAgICAgIENhc3RlciBhcmcxOCwgCiAgICAgICAgQ2FzdGVyIGFyZzE5
LCAKICAgICAgICBDYXN0ZXIgYXJnMjAKICk7Cgp2b2lkIEhVX0FkZE1ldGhvZCAoIAogICAgICAg
ICAgICAgICAgICAgIEZPX09CSkVDVCAqdGhlQ2xhc3MsIAogICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKm1ldGhvZE5hbWUsCiAgICAgICAgY29uc3QgY2hhciAqaGVscCwgCiAgICAgICAg
ICAgICAgICAgICAgRk9fTUVTU0FHRV9JRCBtZXNzYWdlSUQsIAogICAgICAgICAgICAgICAgICAg
IHZvaWQgKmFyZ0Jhc2UsCiAgICAgICAgQ2FzdGVyIGFyZzEsIAogICAgICAgIENhc3RlciBhcmcy
LCAKICAgICAgICBDYXN0ZXIgYXJnMywgCiAgICAgICAgQ2FzdGVyIGFyZzQsIAogICAgICAgIENh
c3RlciBhcmc1LCAKICAgICAgICBDYXN0ZXIgYXJnNiwgCiAgICAgICAgQ2FzdGVyIGFyZzcsIAog
ICAgICAgIENhc3RlciBhcmc4LCAKICAgICAgICBDYXN0ZXIgYXJnOSwgCiAgICAgICAgQ2FzdGVy
IGFyZzEwLAogICAgICAgIENhc3RlciBhcmcxMSwgCiAgICAgICAgQ2FzdGVyIGFyZzEyLCAKICAg
ICAgICBDYXN0ZXIgYXJnMTMsIAogICAgICAgIENhc3RlciBhcmcxNCwgCiAgICAgICAgQ2FzdGVy
IGFyZzE1LAogICAgICAgIENhc3RlciBhcmcxNiwgCiAgICAgICAgQ2FzdGVyIGFyZzE3LCAKICAg
ICAgICBDYXN0ZXIgYXJnMTgsIAogICAgICAgIENhc3RlciBhcmcxOSwgCiAgICAgICAgQ2FzdGVy
IGFyZzIwLAogICAgICAgIENhc3RlciBhcmcyMQogKTsKCnZvaWQgSFVfQWRkTWV0aG9kICggCiAg
ICAgICAgICAgICAgICAgICAgRk9fT0JKRUNUICp0aGVDbGFzcywgCiAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqbWV0aG9kTmFtZSwKICAgICAgICBjb25zdCBjaGFyICpoZWxwLCAKICAg
ICAgICAgICAgICAgICAgICBGT19NRVNTQUdFX0lEIG1lc3NhZ2VJRCwgCiAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqYXJnQmFzZSwKICAgICAgICBDYXN0ZXIgYXJnMSwgCiAgICAgICAgQ2FzdGVy
IGFyZzIsIAogICAgICAgIENhc3RlciBhcmczLCAKICAgICAgICBDYXN0ZXIgYXJnNCwgCiAgICAg
ICAgQ2FzdGVyIGFyZzUsIAogICAgICAgIENhc3RlciBhcmc2LCAKICAgICAgICBDYXN0ZXIgYXJn
NywgCiAgICAgICAgQ2FzdGVyIGFyZzgsIAogICAgICAgIENhc3RlciBhcmc5LCAKICAgICAgICBD
YXN0ZXIgYXJnMTAsCiAgICAgICAgQ2FzdGVyIGFyZzExLCAKICAgICAgICBDYXN0ZXIgYXJnMTIs
IAogICAgICAgIENhc3RlciBhcmcxMywgCiAgICAgICAgQ2FzdGVyIGFyZzE0LCAKICAgICAgICBD
YXN0ZXIgYXJnMTUsCiAgICAgICAgQ2FzdGVyIGFyZzE2LCAKICAgICAgICBDYXN0ZXIgYXJnMTcs
IAogICAgICAgIENhc3RlciBhcmcxOCwgCiAgICAgICAgQ2FzdGVyIGFyZzE5LCAKICAgICAgICBD
YXN0ZXIgYXJnMjAsCiAgICAgICAgQ2FzdGVyIGFyZzIxLCAKICAgICAgICBDYXN0ZXIgYXJnMjIK
ICk7Cgp2b2lkIEhVX0FkZE1ldGhvZCAoIAogICAgICAgICAgICAgICAgICAgIEZPX09CSkVDVCAq
dGhlQ2xhc3MsIAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhvZE5hbWUsCiAg
ICAgICAgY29uc3QgY2hhciAqaGVscCwgCiAgICAgICAgICAgICAgICAgICAgRk9fTUVTU0FHRV9J
RCBtZXNzYWdlSUQsIAogICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZ0Jhc2UsCiAgICAgICAg
Q2FzdGVyIGFyZzEsIAogICAgICAgIENhc3RlciBhcmcyLCAKICAgICAgICBDYXN0ZXIgYXJnMywg
CiAgICAgICAgQ2FzdGVyIGFyZzQsIAogICAgICAgIENhc3RlciBhcmc1LCAKICAgICAgICBDYXN0
ZXIgYXJnNiwgCiAgICAgICAgQ2FzdGVyIGFyZzcsIAogICAgICAgIENhc3RlciBhcmc4LCAKICAg
ICAgICBDYXN0ZXIgYXJnOSwgCiAgICAgICAgQ2FzdGVyIGFyZzEwLAogICAgICAgIENhc3RlciBh
cmcxMSwgCiAgICAgICAgQ2FzdGVyIGFyZzEyLCAKICAgICAgICBDYXN0ZXIgYXJnMTMsIAogICAg
ICAgIENhc3RlciBhcmcxNCwgCiAgICAgICAgQ2FzdGVyIGFyZzE1LAogICAgICAgIENhc3RlciBh
cmcxNiwgCiAgICAgICAgQ2FzdGVyIGFyZzE3LCAKICAgICAgICBDYXN0ZXIgYXJnMTgsIAogICAg
ICAgIENhc3RlciBhcmcxOSwgCiAgICAgICAgQ2FzdGVyIGFyZzIwLAogICAgICAgIENhc3RlciBh
cmcyMSwgCiAgICAgICAgQ2FzdGVyIGFyZzIyLCAKICAgICAgICBDYXN0ZXIgYXJnMjMKICk7Cgp2
b2lkIEhVX0FkZE1ldGhvZCAoIAogICAgICAgICAgICAgICAgICAgIEZPX09CSkVDVCAqdGhlQ2xh
c3MsIAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhvZE5hbWUsCiAgICAgICAg
Y29uc3QgY2hhciAqaGVscCwgCiAgICAgICAgICAgICAgICAgICAgRk9fTUVTU0FHRV9JRCBtZXNz
YWdlSUQsIAogICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZ0Jhc2UsCiAgICAgICAgQ2FzdGVy
IGFyZzEsIAogICAgICAgIENhc3RlciBhcmcyLCAKICAgICAgICBDYXN0ZXIgYXJnMywgCiAgICAg
ICAgQ2FzdGVyIGFyZzQsIAogICAgICAgIENhc3RlciBhcmc1LCAKICAgICAgICBDYXN0ZXIgYXJn
NiwgCiAgICAgICAgQ2FzdGVyIGFyZzcsIAogICAgICAgIENhc3RlciBhcmc4LCAKICAgICAgICBD
YXN0ZXIgYXJnOSwgCiAgICAgICAgQ2FzdGVyIGFyZzEwLAogICAgICAgIENhc3RlciBhcmcxMSwg
CiAgICAgICAgQ2FzdGVyIGFyZzEyLCAKICAgICAgICBDYXN0ZXIgYXJnMTMsIAogICAgICAgIENh
c3RlciBhcmcxNCwgCiAgICAgICAgQ2FzdGVyIGFyZzE1LAogICAgICAgIENhc3RlciBhcmcxNiwg
CiAgICAgICAgQ2FzdGVyIGFyZzE3LCAKICAgICAgICBDYXN0ZXIgYXJnMTgsIAogICAgICAgIENh
c3RlciBhcmcxOSwgCiAgICAgICAgQ2FzdGVyIGFyZzIwLAogICAgICAgIENhc3RlciBhcmcyMSwg
CiAgICAgICAgQ2FzdGVyIGFyZzIyLCAKICAgICAgICBDYXN0ZXIgYXJnMjMsIAogICAgICAgIENh
c3RlciBhcmcyNAogKTsKCnZvaWQgSFVfQWRkTWV0aG9kICggCiAgICAgICAgICAgICAgICAgICAg
Rk9fT0JKRUNUICp0aGVDbGFzcywgCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWV0
aG9kTmFtZSwKICAgICAgICBjb25zdCBjaGFyICpoZWxwLCAKICAgICAgICAgICAgICAgICAgICBG
T19NRVNTQUdFX0lEIG1lc3NhZ2VJRCwgCiAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnQmFz
ZSwKICAgICAgICBDYXN0ZXIgYXJnMSwgCiAgICAgICAgQ2FzdGVyIGFyZzIsIAogICAgICAgIENh
c3RlciBhcmczLCAKICAgICAgICBDYXN0ZXIgYXJnNCwgCiAgICAgICAgQ2FzdGVyIGFyZzUsIAog
ICAgICAgIENhc3RlciBhcmc2LCAKICAgICAgICBDYXN0ZXIgYXJnNywgCiAgICAgICAgQ2FzdGVy
IGFyZzgsIAogICAgICAgIENhc3RlciBhcmc5LCAKICAgICAgICBDYXN0ZXIgYXJnMTAsCiAgICAg
ICAgQ2FzdGVyIGFyZzExLCAKICAgICAgICBDYXN0ZXIgYXJnMTIsIAogICAgICAgIENhc3RlciBh
cmcxMywgCiAgICAgICAgQ2FzdGVyIGFyZzE0LCAKICAgICAgICBDYXN0ZXIgYXJnMTUsCiAgICAg
ICAgQ2FzdGVyIGFyZzE2LCAKICAgICAgICBDYXN0ZXIgYXJnMTcsIAogICAgICAgIENhc3RlciBh
cmcxOCwgCiAgICAgICAgQ2FzdGVyIGFyZzE5LCAKICAgICAgICBDYXN0ZXIgYXJnMjAsCiAgICAg
ICAgQ2FzdGVyIGFyZzIxLCAKICAgICAgICBDYXN0ZXIgYXJnMjIsIAogICAgICAgIENhc3RlciBh
cmcyMywgCiAgICAgICAgQ2FzdGVyIGFyZzI0LCAKICAgICAgICBDYXN0ZXIgYXJnMjUKICk7Cgp2
b2lkIEhVX0FkZE1ldGhvZCAoIAogICAgICAgICAgICAgICAgICAgIEZPX09CSkVDVCAqdGhlQ2xh
c3MsIAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhvZE5hbWUsCiAgICAgICAg
Y29uc3QgY2hhciAqaGVscCwgCiAgICAgICAgICAgICAgICAgICAgRk9fTUVTU0FHRV9JRCBtZXNz
YWdlSUQsIAogICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZ0Jhc2UsCiAgICAgICAgQ2FzdGVy
IGFyZzEsIAogICAgICAgIENhc3RlciBhcmcyLCAKICAgICAgICBDYXN0ZXIgYXJnMywgCiAgICAg
ICAgQ2FzdGVyIGFyZzQsIAogICAgICAgIENhc3RlciBhcmc1LCAKICAgICAgICBDYXN0ZXIgYXJn
NiwgCiAgICAgICAgQ2FzdGVyIGFyZzcsIAogICAgICAgIENhc3RlciBhcmc4LCAKICAgICAgICBD
YXN0ZXIgYXJnOSwgCiAgICAgICAgQ2FzdGVyIGFyZzEwLAogICAgICAgIENhc3RlciBhcmcxMSwg
CiAgICAgICAgQ2FzdGVyIGFyZzEyLCAKICAgICAgICBDYXN0ZXIgYXJnMTMsIAogICAgICAgIENh
c3RlciBhcmcxNCwgCiAgICAgICAgQ2FzdGVyIGFyZzE1LAogICAgICAgIENhc3RlciBhcmcxNiwg
CiAgICAgICAgQ2FzdGVyIGFyZzE3LCAKICAgICAgICBDYXN0ZXIgYXJnMTgsIAogICAgICAgIENh
c3RlciBhcmcxOSwgCiAgICAgICAgQ2FzdGVyIGFyZzIwLAogICAgICAgIENhc3RlciBhcmcyMSwg
CiAgICAgICAgQ2FzdGVyIGFyZzIyLCAKICAgICAgICBDYXN0ZXIgYXJnMjMsIAogICAgICAgIENh
c3RlciBhcmcyNCwgCiAgICAgICAgQ2FzdGVyIGFyZzI1LAogICAgICAgIENhc3RlciBhcmcyNgog
KTsKCnZvaWQgSFVfQWRkTWV0aG9kICggCiAgICAgICAgICAgICAgICAgICAgRk9fT0JKRUNUICp0
aGVDbGFzcywgCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWV0aG9kTmFtZSwKICAg
ICAgICBjb25zdCBjaGFyICpoZWxwLCAKICAgICAgICAgICAgICAgICAgICBGT19NRVNTQUdFX0lE
IG1lc3NhZ2VJRCwgCiAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnQmFzZSwKICAgICAgICBD
YXN0ZXIgYXJnMSwgCiAgICAgICAgQ2FzdGVyIGFyZzIsIAogICAgICAgIENhc3RlciBhcmczLCAK
ICAgICAgICBDYXN0ZXIgYXJnNCwgCiAgICAgICAgQ2FzdGVyIGFyZzUsIAogICAgICAgIENhc3Rl
ciBhcmc2LCAKICAgICAgICBDYXN0ZXIgYXJnNywgCiAgICAgICAgQ2FzdGVyIGFyZzgsIAogICAg
ICAgIENhc3RlciBhcmc5LCAKICAgICAgICBDYXN0ZXIgYXJnMTAsCiAgICAgICAgQ2FzdGVyIGFy
ZzExLCAKICAgICAgICBDYXN0ZXIgYXJnMTIsIAogICAgICAgIENhc3RlciBhcmcxMywgCiAgICAg
ICAgQ2FzdGVyIGFyZzE0LCAKICAgICAgICBDYXN0ZXIgYXJnMTUsCiAgICAgICAgQ2FzdGVyIGFy
ZzE2LCAKICAgICAgICBDYXN0ZXIgYXJnMTcsIAogICAgICAgIENhc3RlciBhcmcxOCwgCiAgICAg
ICAgQ2FzdGVyIGFyZzE5LCAKICAgICAgICBDYXN0ZXIgYXJnMjAsCiAgICAgICAgQ2FzdGVyIGFy
ZzIxLCAKICAgICAgICBDYXN0ZXIgYXJnMjIsIAogICAgICAgIENhc3RlciBhcmcyMywgCiAgICAg
ICAgQ2FzdGVyIGFyZzI0LCAKICAgICAgICBDYXN0ZXIgYXJnMjUsCiAgICAgICAgQ2FzdGVyIGFy
ZzI2LCAKICAgICAgICBDYXN0ZXIgYXJnMjcKICk7Cgp2b2lkIEhVX0FkZE1ldGhvZCAoIAogICAg
ICAgICAgICAgICAgICAgIEZPX09CSkVDVCAqdGhlQ2xhc3MsIAogICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKm1ldGhvZE5hbWUsCiAgICAgICAgY29uc3QgY2hhciAqaGVscCwgCiAgICAg
ICAgICAgICAgICAgICAgRk9fTUVTU0FHRV9JRCBtZXNzYWdlSUQsIAogICAgICAgICAgICAgICAg
ICAgIHZvaWQgKmFyZ0Jhc2UsCiAgICAgICAgQ2FzdGVyIGFyZzEsIAogICAgICAgIENhc3RlciBh
cmcyLCAKICAgICAgICBDYXN0ZXIgYXJnMywgCiAgICAgICAgQ2FzdGVyIGFyZzQsIAogICAgICAg
IENhc3RlciBhcmc1LCAKICAgICAgICBDYXN0ZXIgYXJnNiwgCiAgICAgICAgQ2FzdGVyIGFyZzcs
IAogICAgICAgIENhc3RlciBhcmc4LCAKICAgICAgICBDYXN0ZXIgYXJnOSwgCiAgICAgICAgQ2Fz
dGVyIGFyZzEwLAogICAgICAgIENhc3RlciBhcmcxMSwgCiAgICAgICAgQ2FzdGVyIGFyZzEyLCAK
ICAgICAgICBDYXN0ZXIgYXJnMTMsIAogICAgICAgIENhc3RlciBhcmcxNCwgCiAgICAgICAgQ2Fz
dGVyIGFyZzE1LAogICAgICAgIENhc3RlciBhcmcxNiwgCiAgICAgICAgQ2FzdGVyIGFyZzE3LCAK
ICAgICAgICBDYXN0ZXIgYXJnMTgsIAogICAgICAgIENhc3RlciBhcmcxOSwgCiAgICAgICAgQ2Fz
dGVyIGFyZzIwLAogICAgICAgIENhc3RlciBhcmcyMSwgCiAgICAgICAgQ2FzdGVyIGFyZzIyLCAK
ICAgICAgICBDYXN0ZXIgYXJnMjMsIAogICAgICAgIENhc3RlciBhcmcyNCwgCiAgICAgICAgQ2Fz
dGVyIGFyZzI1LAogICAgICAgIENhc3RlciBhcmcyNiwgCiAgICAgICAgQ2FzdGVyIGFyZzI3LCAK
ICAgICAgICBDYXN0ZXIgYXJnMjgKICk7Cgp2b2lkIEhVX0FkZE1ldGhvZCAoIAogICAgICAgICAg
ICAgICAgICAgIEZPX09CSkVDVCAqdGhlQ2xhc3MsIAogICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKm1ldGhvZE5hbWUsCiAgICAgICAgY29uc3QgY2hhciAqaGVscCwgCiAgICAgICAgICAg
ICAgICAgICAgRk9fTUVTU0FHRV9JRCBtZXNzYWdlSUQsIAogICAgICAgICAgICAgICAgICAgIHZv
aWQgKmFyZ0Jhc2UsCiAgICAgICAgQ2FzdGVyIGFyZzEsIAogICAgICAgIENhc3RlciBhcmcyLCAK
ICAgICAgICBDYXN0ZXIgYXJnMywgCiAgICAgICAgQ2FzdGVyIGFyZzQsIAogICAgICAgIENhc3Rl
ciBhcmc1LCAKICAgICAgICBDYXN0ZXIgYXJnNiwgCiAgICAgICAgQ2FzdGVyIGFyZzcsIAogICAg
ICAgIENhc3RlciBhcmc4LCAKICAgICAgICBDYXN0ZXIgYXJnOSwgCiAgICAgICAgQ2FzdGVyIGFy
ZzEwLAogICAgICAgIENhc3RlciBhcmcxMSwgCiAgICAgICAgQ2FzdGVyIGFyZzEyLCAKICAgICAg
ICBDYXN0ZXIgYXJnMTMsIAogICAgICAgIENhc3RlciBhcmcxNCwgCiAgICAgICAgQ2FzdGVyIGFy
ZzE1LAogICAgICAgIENhc3RlciBhcmcxNiwgCiAgICAgICAgQ2FzdGVyIGFyZzE3LCAKICAgICAg
ICBDYXN0ZXIgYXJnMTgsIAogICAgICAgIENhc3RlciBhcmcxOSwgCiAgICAgICAgQ2FzdGVyIGFy
ZzIwLAogICAgICAgIENhc3RlciBhcmcyMSwgCiAgICAgICAgQ2FzdGVyIGFyZzIyLCAKICAgICAg
ICBDYXN0ZXIgYXJnMjMsIAogICAgICAgIENhc3RlciBhcmcyNCwgCiAgICAgICAgQ2FzdGVyIGFy
ZzI1LAogICAgICAgIENhc3RlciBhcmcyNiwgCiAgICAgICAgQ2FzdGVyIGFyZzI3LCAKICAgICAg
ICBDYXN0ZXIgYXJnMjgsIAogICAgICAgIENhc3RlciBhcmcyOQogKTsKCnZvaWQgSFVfQWRkTWV0
aG9kICggCiAgICAgICAgICAgICAgICAgICAgRk9fT0JKRUNUICp0aGVDbGFzcywgCiAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqbWV0aG9kTmFtZSwKICAgICAgICBjb25zdCBjaGFyICpo
ZWxwLCAKICAgICAgICAgICAgICAgICAgICBGT19NRVNTQUdFX0lEIG1lc3NhZ2VJRCwgCiAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqYXJnQmFzZSwKICAgICAgICBDYXN0ZXIgYXJnMSwgCiAgICAg
ICAgQ2FzdGVyIGFyZzIsIAogICAgICAgIENhc3RlciBhcmczLCAKICAgICAgICBDYXN0ZXIgYXJn
NCwgCiAgICAgICAgQ2FzdGVyIGFyZzUsIAogICAgICAgIENhc3RlciBhcmc2LCAKICAgICAgICBD
YXN0ZXIgYXJnNywgCiAgICAgICAgQ2FzdGVyIGFyZzgsIAogICAgICAgIENhc3RlciBhcmc5LCAK
ICAgICAgICBDYXN0ZXIgYXJnMTAsCiAgICAgICAgQ2FzdGVyIGFyZzExLCAKICAgICAgICBDYXN0
ZXIgYXJnMTIsIAogICAgICAgIENhc3RlciBhcmcxMywgCiAgICAgICAgQ2FzdGVyIGFyZzE0LCAK
ICAgICAgICBDYXN0ZXIgYXJnMTUsCiAgICAgICAgQ2FzdGVyIGFyZzE2LCAKICAgICAgICBDYXN0
ZXIgYXJnMTcsIAogICAgICAgIENhc3RlciBhcmcxOCwgCiAgICAgICAgQ2FzdGVyIGFyZzE5LCAK
ICAgICAgICBDYXN0ZXIgYXJnMjAsCiAgICAgICAgQ2FzdGVyIGFyZzIxLCAKICAgICAgICBDYXN0
ZXIgYXJnMjIsIAogICAgICAgIENhc3RlciBhcmcyMywgCiAgICAgICAgQ2FzdGVyIGFyZzI0LCAK
ICAgICAgICBDYXN0ZXIgYXJnMjUsCiAgICAgICAgQ2FzdGVyIGFyZzI2LCAKICAgICAgICBDYXN0
ZXIgYXJnMjcsIAogICAgICAgIENhc3RlciBhcmcyOCwgCiAgICAgICAgQ2FzdGVyIGFyZzI5LCAK
ICAgICAgICBDYXN0ZXIgYXJnMzAKICk7Cgp2b2lkIEhVX0FkZE1ldGhvZCAoIAogICAgICAgICAg
ICAgICAgICAgIEZPX09CSkVDVCAqdGhlQ2xhc3MsIAogICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKm1ldGhvZE5hbWUsCiAgICAgICAgaW50ICgqZnVuYykoIEZPX09CSkVDVCAqLCBPX0xJ
U1QgKiApLCAKICAgICAgICAgICAgICAgICAgICBPX0xJU1QgKm9MaXN0LCAKICAgICAgICAgICAg
ICAgICAgICBpbnQgb0xpc3RTaXplLAogICAgICAgIGNvbnN0IGNoYXIgKipoZWxwIAogKTsKCgog
CgpMaXN0PEZSQU5HRT4gSFVfUGFyc2VGcmFuZ2VzICggCiAgICAgICAgY29uc3QgVHdpbmUgJmZv
byAKICk7CgoKIAoKCiAKCnZvaWQgSFVfQWRkRnVuY3Rpb24gKCAKICAgICAgICBjb25zdCBUd2lu
ZSAmIGZ1bmNOYW1lLCAKICAgICAgICBUd2luZSAoKmZ1bmMpKCBMaXN0PFR3aW5lPiAmLCBIVV9Q
YXJzZXJTdGF0ZSAmICksCiAgICAgICAgY29uc3QgVHdpbmUgJiBoZWxwU3RyaW5nIAogKTsKCnZv
aWQgSFVfQWRkRnVuY3Rpb24gKCAKICAgICAgICBjb25zdCBUd2luZSAmIGZ1bmNOYW1lLCAKICAg
ICAgICBIVV9WYWx1ZSAoKmZ1bmMpKCBMaXN0PEhVX1ZhbHVlPiwgSFVfUGFyc2VyU3RhdGUgJiAp
LAogICAgICAgIGNvbnN0IFR3aW5lICYgaGVscFN0cmluZyAKICk7Cgp2b2lkIEhVX0FkZEZ1bmN0
aW9uT2ZDaGFuU3BlYyAoIAogICAgICAgIGNvbnN0IFR3aW5lICYgZnVuY05hbWUsIAogICAgICAg
IFR3aW5lICgqZnVuYykoIExpc3Q8VHdpbmU+ICYsIEhVX1BhcnNlclN0YXRlICYgKSwKICAgICAg
ICBjb25zdCBUd2luZSAmIGhlbHBTdHJpbmcgCiApOwoKdm9pZCBIVV9BZGRGdW5jdGlvbiAoIAog
ICAgICAgIGNvbnN0IFR3aW5lICYgZnVuY05hbWUsIAogICAgICAgIEhVX1ZhbHVlICgqZnVuYyko
IEhVX1ZhbHVlLCBIVV9QYXJzZXJTdGF0ZSAmICksCiAgICAgICAgY29uc3QgVHdpbmUgJiBoZWxw
U3RyaW5nIAogKTsKCkJPT0xFQU4gSFVfRmluZEZ1bmN0aW9uICgKICAgICAgICAgIGNvbnN0IGNo
YXIqIGFyZwogKTsKCgogCgoKIAoKCiAKCnZvaWQgSFVfQWRkSGVscCAoIAogICAgICAgICAgICAg
ICAgICAgIGludCAoKmZ1bmMpKCBjb25zdCBjaGFyICosIEZJTEUgKiApIAogKTsKCgogCgoKIAoK
Y2hhciAqSFVfQ2hlY2tGb3JTY3JpcHQgKCAKCQkJY29uc3QgY2hhciAqbmFtZSwgCgkJCWludCAm
IGFyZ2MsIAoJCQljaGFyICoqYXJndiAKICk7Cgp2b2lkIEhVX0luaXQgKCAKCSAgICAgaW50IGFy
Z2MsIAoJICAgICBjb25zdCBjaGFyICogY29uc3QgKmFyZ3YgCiApOwoKdm9pZCBIVV9Jbml0ICgg
CgkgICAgIGNvbnN0IGNoYXIgKiBwcm9ncmFtIAogKTsKCgogCgpUd2luZSBIVV9DdXJyZW50SW5w
dXROYW1lICgpOwoKCiAKCnZvaWQgSFVfVW5SZWFkQ2hhciAoIAogICAgICAgICAgICAgICAgICAg
IGNoYXIgYyAKICk7Cgp2b2lkIEhVX1Byb2Nlc3NLZXlFdmVudCAoCiAgICAgICAgICAgIHNob3J0
IGV2ZW50LAogICAgICAgICAgICBzaG9ydCB2YWx1ZQogKTsKClR3aW5lIEhVX0dldEludGVyYWN0
aXZlTGluZSAoCiAgICAgICAgSFVfUGFyc2VyU3RhdGUgJiBnZW5lcmljU3RhdGUKICk7CgoKIAoK
CiAKCmludCBIVV9Qb2xsICgKICAgICAgICB2b2lkCiApOwoKVHdpbmUgSFVfR2V0QUxpbmUgKAog
ICAgICAgIEhVX1BhcnNlclN0YXRlICYgdGhlU3RhdGUKICk7CgpUd2luZSBIVV9NYWluTG9vcCAo
CiAgICAgICAgdm9pZAogKTsKClR3aW5lIEhVX1NvdXJjZUZpbGUgKCAKICAgICAgICBjb25zdCBj
aGFyICAgICAgKmZpbGVOYW1lLAogICAgICAgIEhVX1BhcnNlclN0YXRlICAmIHRoZVN0YXRlCiAp
OwoKCiAKCgogCgoKIAoKCiAKCnZvaWQgSFVfUHJvY2Vzc1hLZXlFdmVudCAoCiAgICAgICAgdm9p
ZCAgICAgICAgKnhldmVudAogKTsKCgogCgoKIAoKdm9pZCBIVV9DbG9zZVBhZ2VyICgpIDsKCkZJ
TEUgKkhVX09wZW5QYWdlciAoKSA7CgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgp2b2lkIEhVX0J1
aWxkU0RDb25uZWN0aW9uICgKICAgICAgICBUd2luZSAgICAgICAgICAgKCpnZXRfbmFtZV9vZl9j
bGFzcykoIHZvaWQgKmNsYXNzUHRyICksCiAgICAgICAgVHdpbmUgICAgICAgICAgICgqZ2V0X25h
bWVfb2Zfb2JqZWN0KSggdm9pZCAqb2JqUHRyICksCiAgICAgICAgaW50ICAgICAgICAgICAgICgq
Y3JlYXRlX29iamVjdCkoIHZvaWQgKmNsYXNzUHRyLCBjb25zdCBjaGFyICpuYW1lICksCiAgICAg
ICAgTGlzdDx2b2lkICo+ICAgICgqZ2V0X29iamVjdHMpKCB2b2lkICpjbGFzc1B0ciwgY29uc3Qg
Y2hhciAqbmFtZSApLAogICAgICAgIGludCAgICAgICAgICAgICAoKmRlc3Ryb3lfb2JqZWN0KSgg
dm9pZCAqb2JqUHRyICksCiAgICAgICAgTGlzdDx2b2lkICo+ICAgICgqZ2V0X2NsYXNzX3BhcmVu
dHMpKCB2b2lkICpjbGFzc1B0ciApLAogICAgICAgIHZvaWQgKiAgICAgICAgICAoKmdldF9jYWxs
YWJsZV9vYmplY3QpKCB2b2lkICpvYmpQdHIsIHZvaWQgKmNsYXNzUHRyICkKICk7Cgp2b2lkIEhV
X0FkZFNETWVzc2FnZSAoCiAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICp0aGVD
bGFzcywKICAgICAgICBjb25zdCBjaGFyICAgICAgICAgICAgICAgICAgKm5hbWUsCiAgICAgICAg
Y29uc3QgY2hhciAgICAgICAgICAgICAgICAgICpoZWxwLAogICAgICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAqKCpmdW5jKSggdm9pZCAqLCAuLi4gKSwKICAgICAgICBjb25zdCBMaXN0
PHN0cnVjdCBTdHJ1Y3R1cmVEZXNjcmlwdGlvbkVudHJ5PiAgICAmc2QKICk7Cgp2b2lkIEhVX0Fk
ZFNETWVzc2FnZSAoCiAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICp0aGVDbGFz
cywKICAgICAgICBjb25zdCBjaGFyICAgICAgICAgICAgICAgICAgKm5hbWUsCiAgICAgICAgY29u
c3QgY2hhciAgICAgICAgICAgICAgICAgICpoZWxwLAogICAgICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAqKCpmdW5jKSggdm9pZCAqLCAuLi4gKSwKICAgICAgICBjb25zdCBMaXN0PHN0
cnVjdCBOYW1lZENvbnZlcnRlcj4gICAmc2QKICk7Cgp2b2lkIEhVX0FkZFNETWVzc2FnZSAoCiAg
ICAgICAgdm9pZCAgICAgICAgICAgICp0aGVDbGFzcywKICAgICAgICBjb25zdCBjaGFyICAgICAg
Km5hbWUsCiAgICAgICAgaW50ICAgICAgICAgICAgICgqcGFyc2UpKCB2b2lkICpvYmpQdHIsIE9f
TElTVCAqbGlzdCApLAogICAgICAgIE9fTElTVCAgICAgICAgICAqbGlzdCwKICAgICAgICBpbnQg
ICAgICAgICAgICAgbGlzdFNpemUsCiAgICAgICAgY29uc3QgY2hhciAgICAgICoqaGVscAogKTsK
CgogCgoKIAoKdm9pZCBIVV9BdHRhY2hUb1RleHRXaWRnZXQgKAogICAgICAgIHZvaWQgKnZfYXBw
X2NvbnRleHQsCiAgICAgICAgdm9pZCAqdl93aWRnZXQKICk7CgoKIAoKCiAKCgogCgoKIAoKdm9p
ZCBIVV9QdXNoU2NvcGUgKAoJCSAgdm9pZAogKTsKCnZvaWQgSFVfUG9wU2NvcGUgKAoJCSB2b2lk
CiApOwoKdm9pZCBIVV9BZGRWYXJpYWJsZSAoIAogICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3
aW5lICYgbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgZG91YmxlICYgaVZhbCAKICk7Cgp2b2lk
IEhVX0FkZFZhcmlhYmxlICggCiAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJiBuYW1l
LCAKICAgICAgICAgICAgICAgICAgICBmbG9hdCAmIGlWYWwgCiApOwoKdm9pZCBIVV9BZGRWYXJp
YWJsZSAoIAogICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICYgbmFtZSwgCiAgICAgICAg
ICAgICAgICAgICAgaW50ICYgaVZhbCAKICk7Cgp2b2lkIEhVX0FkZFZhcmlhYmxlICggCiAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJiBuYW1lLCAKICAgICAgICAgICAgICAgICAgICBj
aGFyICogY29uc3QgY1ZhbCAKICk7Cgp2b2lkIEhVX0FkZFZhcmlhYmxlICggCiAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVHdpbmUgJiBuYW1lLCAKICAgICAgICAgICAgICAgICAgICBUd2luZSAm
IGNWYWwgCiApOwoKdm9pZCBIVV9TZXRWYXJpYWJsZSAoIAoJCSAgICBjb25zdCBUd2luZSAmIG5h
bWUsIAoJCSAgICBjb25zdCBUd2luZSAmIHZhbHVlIAogKTsKCnZvaWQgSFVfU2V0VmFyaWFibGUg
KAoJCSAgICBjb25zdCBjaGFyICAgICAgKm5hbWUsCgkJICAgIGNvbnN0IGNoYXIgICAgICAqdmFs
dWUsCgkJICAgIGNvbnN0IExpc3Q8aW50PiAmYXJncwogKTsKCnZvaWQgSFVfVW5zZXRHbG9iYWxW
YXJpYWJsZSAoCgkJCSAgICBUd2luZSBuYW1lCiApOwoKdm9pZCBIVV9VbnNldFZhcmlhYmxlICgg
CgkJICAgICAgVHdpbmUgbmFtZSAKICk7Cgpjb25zdCBjaGFyICpIVV9GaW5kVmFyaWFibGUgKCAK
CQkJICAgIGNvbnN0IFR3aW5lICYgbmFtZSAKICk7CgoKCgoKIyAyNDQgIi9zb2Z0d2FyZS90aGFs
aWEvaC9odS5oIiAyCgojIDEgIi9zb2Z0d2FyZS90aGFsaWEvaC9odS5lIiAxCiAKCgoKZXh0ZXJu
IGludCAgICAgICAgICBIVV9Eb250RXhwYW5kU2VxdWVuY2VzOwoKIAoKCgoKCmNvbnN0IGludCBI
VV9Ob01lc3NhZ2VQYXNzZWQgPSAtMTIzNDU2NzsKCmV4dGVybiBpbnQgSFVfRXJyb3JDb3VudCwg
SFVfV2FybmluZ0NvdW50OwoKZXh0ZXJuIGNoYXIgSFVfUHJlY2lzaW9uU3RyaW5nWzI1Nl07Cgpl
eHRlcm4gdm9pZCAoICpIVV9PdXRwdXRGdW5jdGlvbiApKCBjb25zdCBjaGFyICpkYXRhLCBpbnQg
c2l6ZSApOwpleHRlcm4gdm9pZCAoICpIVV9FcnJvckZ1bmN0aW9uICkoIGNvbnN0IGNoYXIgKmRh
dGEsIGludCBzaXplICk7CmV4dGVybiBjaGFyICggKkhVX0lucHV0RnVuY3Rpb24gKSggdm9pZCAp
OwoKZXh0ZXJuIEhVX1BhcnNlclN0YXRlIEhVX0RlZmF1bHRTdGF0ZTsKCmV4dGVybiBpbnQgKCAq
SFVfSXNFdmVudEZhc3QgKSggdm9pZCAqZGlzcGxheSwgdm9pZCAqZXZlbnQsIHZvaWQgKndpbmRv
dyApOwoKZXh0ZXJuIEhVX0F1ZGl0U3RyZWFtIEhVX0F1ZGl0LCBIVV9BdWRpdDI7CgpleHRlcm4g
dm9pZCAoKkhVX1N0aWxsRXhlY3V0aW5nKSgpOwoKZXh0ZXJuIHZvaWQgKkhVX2RlZmF1bHRNaW5W
YWx1ZVRhZywgKkhVX2RlZmF1bHRNYXhWYWx1ZVRhZzsKIyAyNDUgIi9zb2Z0d2FyZS90aGFsaWEv
aC9odS5oIiAyCgoKIApleHRlcm4gVHdpbmUgSFVfU291cmNlRmlsZSggY29uc3QgY2hhciAqLCBI
VV9QYXJzZXJTdGF0ZSAmID0gSFVfRGVmYXVsdFN0YXRlICk7CmV4dGVybiBMaXN0PEhVX0V4cHJl
c3Npb24+IEhVX0V4cGFuZCggY29uc3QgVHdpbmUgJiwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSFVfUGFyc2VyU3RhdGUgJiA9IEhVX0RlZmF1bHRTdGF0ZSApOwpleHRlcm4gTGlz
dDxIVV9FeHByZXNzaW9uPiBIVV9FeHBhbmRNYXRoKCBjb25zdCBUd2luZSAmLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBIVV9QYXJzZXJTdGF0ZSAmID0gSFVfRGVmYXVsdFN0YXRl
ICk7CmV4dGVybiBMaXN0PEhVX0V4cHJlc3Npb24+IEhVX0V4cGFuZFZhbHVlKCBjb25zdCBUd2lu
ZSAmLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVV9QYXJzZXJTdGF0ZSAmID0g
SFVfRGVmYXVsdFN0YXRlICk7CmV4dGVybiBMaXN0PFR3aW5lPiBIVV9FdmFsdWF0ZSggTGlzdDxI
VV9FeHByZXNzaW9uPiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFVfUGFyc2Vy
U3RhdGUgJiA9IEhVX0RlZmF1bHRTdGF0ZSApOwpleHRlcm4gdm9pZCBIVV9FeGVjdXRlKCBMaXN0
PEhVX0V4cHJlc3Npb24+LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVV9QYXJz
ZXJTdGF0ZSAmID0gSFVfRGVmYXVsdFN0YXRlICk7CmV4dGVybiB2b2lkIEhVX1JlQXR0YWNoVG9E
cmF3aW5nQXJlYVdpZGdldCggdm9pZCogdl9hcHBfY29udGV4dCwKCQkJCQkgICAgdm9pZCogdl93
aWRnZXQsCgkJCQkJICAgIGJvb2wgaW5zdGFsbEZvY3VzSGFuZGxpbmcgPSBmYWxzZQoJCQkJCSAg
ICApOwoKZXh0ZXJuIHZvaWQgSFVfQXR0YWNoVG9EcmF3aW5nQXJlYVdpZGdldCggdm9pZCogdl9h
cHBfY29udGV4dCwKCQkJCQkgIHZvaWQqIHZfd2lkZ2V0LAoJCQkJCSAgYm9vbCBpbnN0YWxsRm9j
dXNIYW5kbGluZyA9IGZhbHNlCgkJCQkJICApOwoKIyAyNSAibnJoeS9OUkhZX0FjY2Vzcy5jIiAy
CgoKIyAxICJoL05SSFkuaCIgMQoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoMCiAKCgoKIyAxICJo
L25yaHlwcml2YXRlLmgiIDEKCgoKIyAxICIvdXNyL2luY2x1ZGUvZysrLTIvdmVjdG9yIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZysrLTIvc3Rs
X2FsZ29iYXNlLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvZysrLTIvc3RsX2NvbmZpZy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKCgoKCiMgMTAzICIvdXNy
L2luY2x1ZGUvZysrLTIvc3RsX2NvbmZpZy5oIiAzCgoKCgoKCgoKCgoKCgoKICAgICAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojIDE2MCAiL3Vzci9pbmNsdWRlL2crKy0yL3N0bF9jb25maWcuaCIg
MwoKCiMgMTc0ICIvdXNyL2luY2x1ZGUvZysrLTIvc3RsX2NvbmZpZy5oIiAzCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAogCiMgMjEzICIvdXNyL2luY2x1ZGUvZysrLTIvc3RsX2NvbmZp
Zy5oIiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAogCiAKIyAzNiAiL3Vz
ci9pbmNsdWRlL2crKy0yL3N0bF9hbGdvYmFzZS5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUv
ZysrLTIvc3RsX3JlbG9wcy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiB4
LCBjb25zdCBUJiB5KSB7CiAgcmV0dXJuICEoeCA9PSB5KTsKfQoKdGVtcGxhdGUgPGNsYXNzIFQ+
CmlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBUJiB4LCBjb25zdCBUJiB5KSB7CiAgcmV0dXJu
IHkgPCB4Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25z
dCBUJiB4LCBjb25zdCBUJiB5KSB7CiAgcmV0dXJuICEoeSA8IHgpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgVD4KaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiB4LCBjb25zdCBUJiB5KSB7CiAg
cmV0dXJuICEoeCA8IHkpOwp9CgogCgoKCiAKIAogCiMgMzkgIi91c3IvaW5jbHVkZS9nKystMi9z
dGxfYWxnb2Jhc2UuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2crKy0yL3N0bF9wYWlyLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCnRlbXBsYXRlIDxjbGFz
cyBUMSwgY2xhc3MgVDI+CnN0cnVjdCBwYWlyIHsKICB0eXBlZGVmIFQxIGZpcnN0X3R5cGU7CiAg
dHlwZWRlZiBUMiBzZWNvbmRfdHlwZTsKCiAgVDEgZmlyc3Q7CiAgVDIgc2Vjb25kOwogIHBhaXIo
KSA6IGZpcnN0KFQxKCkpLCBzZWNvbmQoVDIoKSkge30KICBwYWlyKGNvbnN0IFQxJiBhLCBjb25z
dCBUMiYgYikgOiBmaXJzdChhKSwgc2Vjb25kKGIpIHt9CgoKICB0ZW1wbGF0ZSA8Y2xhc3MgVTEs
IGNsYXNzIFUyPgogIHBhaXIoY29uc3QgcGFpcjxVMSwgVTI+JiBwKSA6IGZpcnN0KHAuZmlyc3Qp
LCBzZWNvbmQocC5zZWNvbmQpIHt9Cgp9OwoKdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4K
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYWlyPFQxLCBUMj4mIHgsIGNvbnN0IHBhaXI8
VDEsIFQyPiYgeSkgeyAKICByZXR1cm4geC5maXJzdCA9PSB5LmZpcnN0ICYmIHguc2Vjb25kID09
IHkuc2Vjb25kOyAKfQoKdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KaW5saW5lIGJvb2wg
b3BlcmF0b3I8KGNvbnN0IHBhaXI8VDEsIFQyPiYgeCwgY29uc3QgcGFpcjxUMSwgVDI+JiB5KSB7
IAogIHJldHVybiB4LmZpcnN0IDwgeS5maXJzdCB8fCAoISh5LmZpcnN0IDwgeC5maXJzdCkgJiYg
eC5zZWNvbmQgPCB5LnNlY29uZCk7IAp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgpp
bmxpbmUgcGFpcjxUMSwgVDI+IG1ha2VfcGFpcihjb25zdCBUMSYgeCwgY29uc3QgVDImIHkpIHsK
ICByZXR1cm4gcGFpcjxUMSwgVDI+KHgsIHkpOwp9CgogCgoKCiAKIAogCiMgNDIgIi91c3IvaW5j
bHVkZS9nKystMi9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2crKy0y
L3R5cGVfdHJhaXRzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKc3RydWN0IF9fdHJ1ZV90eXBlIHsKfTsKCnN0cnVjdCBfX2ZhbHNl
X3R5cGUgewp9OwoKdGVtcGxhdGUgPGNsYXNzIHR5cGU+CnN0cnVjdCBfX3R5cGVfdHJhaXRzIHsg
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgIHRoaXNfZHVtbXlfbWVtYmVyX211c3RfYmVfZmly
c3Q7CiAgICAgICAgICAgICAgICAgICAgCgoKCgoKICAgIAoKCgoKCgoKCiAKCiAgIHR5cGVkZWYg
X19mYWxzZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVk
ZWYgX19mYWxzZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVk
ZWYgX19mYWxzZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5
cGVkZWYgX19mYWxzZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYg
X19mYWxzZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKCgogCiAKIAoKdGVtcGxhdGU8PiAgc3Ry
dWN0IF9fdHlwZV90cmFpdHM8Y2hhcj4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190
cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFz
X3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNf
dHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhh
c190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5
cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxzaWduZWQgY2hhcj4gewog
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsK
ICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9y
OwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5
cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3Qg
X190eXBlX3RyYWl0czx1bnNpZ25lZCBjaGFyPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAg
aGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAg
ICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAg
IGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
ICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19Q
T0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPHNob3J0PiB7CiAg
IHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsK
ICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwog
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBf
X3R5cGVfdHJhaXRzPHVuc2lnbmVkIHNob3J0PiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAg
aGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAg
ICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAg
IGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
ICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19Q
T0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPGludD4gewogICB0
eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAg
IHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAg
dHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwog
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190
eXBlX3RyYWl0czx1bnNpZ25lZCBpbnQ+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNf
dHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhh
c190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFz
X3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90
eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8bG9uZz4gewogICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5
cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0
eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBl
X3RyYWl0czx1bnNpZ25lZCBsb25nPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3Ry
aXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNf
dHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190
cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFz
X3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlw
ZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPGZsb2F0PiB7CiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5
cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVf
dHJhaXRzPGRvdWJsZT4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rl
ZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxf
Y29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9h
c3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFs
X2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0
ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxsb25nIGRvdWJsZT4gewogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07CgoKCnRlbXBsYXRlIDxjbGFzcyBUPgpzdHJ1Y3Qg
X190eXBlX3RyYWl0czxUKj4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFs
X2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZp
YWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlh
bF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2
aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07
CgojIDIyNiAiL3Vzci9pbmNsdWRlL2crKy0yL3R5cGVfdHJhaXRzLmgiIDMKCgoKCgogCiAKIAoj
IDQ1ICIvdXNyL2luY2x1ZGUvZysrLTIvc3RsX2FsZ29iYXNlLmgiIDIgMwoKCgoKIyAxICIvdXNy
L2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9saW1p
dHMuaCIgMSAzCiAKCgogCgojIDExNCAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGlu
dXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvbGltaXRzLmgiIDMKCgoKCgoKCiMgNDkgIi91c3IvaW5j
bHVkZS9nKystMi9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2Fs
cGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoK
CiAKCgoKCgoKCiAKCiAKCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIv
YWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vzci9saWIvZ2Nj
LWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMK
CgogCgoKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4
L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKCiMgMjY5ICIv
dXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9z
dGRkZWYuaCIgMwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIv
YWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgog
CgoKCgoKCgoKCgoKCgogCgoKCgoKCgojIDUxICIvdXNyL2luY2x1ZGUvZysrLTIvc3RsX2FsZ29i
YXNlLmgiIDIgMwoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2Nz
LTIuOTEuNjYvaW5jbHVkZS9uZXcuaCIgMSAzCiAKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9h
bHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvbmV3IiAxIDMKIAogCgoKCgoj
cHJhZ21hIGludGVyZmFjZSAibmV3IgojIDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0
LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNDIgIi91c3IvbGli
L2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgojIDggIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42
Ni9pbmNsdWRlL25ldyIgMiAzCgojIDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxp
bnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL2V4Y2VwdGlvbiIgMSAzCiAKIAoKCgoKI3ByYWdtYSBp
bnRlcmZhY2UgImV4Y2VwdGlvbiIKCmV4dGVybiAiQysrIiB7CgoKCgoKY2xhc3MgZXhjZXB0aW9u
IHsKcHVibGljOgogIGV4Y2VwdGlvbiAoKSB7IH0KICB2aXJ0dWFsIH5leGNlcHRpb24gKCkgeyB9
CiAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0ICgpIGNvbnN0Owp9OwoKY2xhc3MgYmFkX2V4Y2Vw
dGlvbiA6IHB1YmxpYyBleGNlcHRpb24gewpwdWJsaWM6CiAgYmFkX2V4Y2VwdGlvbiAoKSB7IH0K
ICB2aXJ0dWFsIH5iYWRfZXhjZXB0aW9uICgpIHsgfQp9OwoKdHlwZWRlZiB2b2lkICgqdGVybWlu
YXRlX2hhbmRsZXIpICgpOwp0eXBlZGVmIHZvaWQgKCp1bmV4cGVjdGVkX2hhbmRsZXIpICgpOwoK
dGVybWluYXRlX2hhbmRsZXIgc2V0X3Rlcm1pbmF0ZSAodGVybWluYXRlX2hhbmRsZXIpOwp2b2lk
IHRlcm1pbmF0ZSAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CnVuZXhwZWN0ZWRf
aGFuZGxlciBzZXRfdW5leHBlY3RlZCAodW5leHBlY3RlZF9oYW5kbGVyKTsKdm9pZCB1bmV4cGVj
dGVkICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKYm9vbCB1bmNhdWdodF9leGNl
cHRpb24gKCk7CgoKCgoKfSAgCgoKIyA5ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1s
aW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9uZXciIDIgMwoKCmV4dGVybiAiQysrIiB7CgoKCgoK
ICBjbGFzcyBiYWRfYWxsb2MgOiBwdWJsaWMgZXhjZXB0aW9uIHsKICBwdWJsaWM6CiAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICJiYWRfYWxsb2Mi
OyB9CiAgfTsKCiAgc3RydWN0IG5vdGhyb3dfdCB7fTsKICBleHRlcm4gY29uc3Qgbm90aHJvd190
IG5vdGhyb3c7CiAgdHlwZWRlZiB2b2lkICgqbmV3X2hhbmRsZXIpKCk7CiAgbmV3X2hhbmRsZXIg
c2V0X25ld19oYW5kbGVyIChuZXdfaGFuZGxlcik7CgoKCgoKIAp2b2lkICpvcGVyYXRvciBuZXcg
KHNpemVfdCkgdGhyb3cgKHN0ZDo6YmFkX2FsbG9jKTsKdm9pZCAqb3BlcmF0b3IgbmV3W10gKHNp
emVfdCkgdGhyb3cgKHN0ZDo6YmFkX2FsbG9jKTsKdm9pZCBvcGVyYXRvciBkZWxldGUgKHZvaWQg
KikgdGhyb3coKTsKdm9pZCBvcGVyYXRvciBkZWxldGVbXSAodm9pZCAqKSB0aHJvdygpOwp2b2lk
ICpvcGVyYXRvciBuZXcgKHNpemVfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwp2
b2lkICpvcGVyYXRvciBuZXdbXSAoc2l6ZV90LCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIHRocm93
KCk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlICh2b2lkICosIGNvbnN0IHN0ZDo6bm90aHJvd190Jikg
dGhyb3coKTsKdm9pZCBvcGVyYXRvciBkZWxldGVbXSAodm9pZCAqLCBjb25zdCBzdGQ6Om5vdGhy
b3dfdCYpIHRocm93KCk7CgogCmlubGluZSB2b2lkICpvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lk
ICpwbGFjZSkgdGhyb3coKSB7IHJldHVybiBwbGFjZTsgfQppbmxpbmUgdm9pZCAqb3BlcmF0b3Ig
bmV3W10oc2l6ZV90LCB2b2lkICpwbGFjZSkgdGhyb3coKSB7IHJldHVybiBwbGFjZTsgfQp9ICAK
CgojIDYgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9p
bmNsdWRlL25ldy5oIiAyIDMKCgoKCgoKCgojIDUyICIvdXNyL2luY2x1ZGUvZysrLTIvc3RsX2Fs
Z29iYXNlLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZysrLTIvaW9zdHJlYW0uaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgaW50ZXJmYWNlCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2crKy0yL3N0cmVhbWJ1Zi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiNwcmFnbWEgaW50ZXJmYWNlCgoKICAgCgoKCmV4dGVybiAiQyIgewoKfQogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDKysiIHsKY2xhc3MgaXN0cmVhbTsgIApjbGFzcyBvc3Ry
ZWFtOyBjbGFzcyBzdHJlYW1idWY7CgogCgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCAgIHN0cmVhbW9m
ZjsKdHlwZWRlZiBfX29mZjY0X3QgICBzdHJlYW1wb3M7CgoKCgp0eXBlZGVmIF9fc3NpemVfdCAg
IHN0cmVhbXNpemU7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX19mbXRmbGFnczsKdHlwZWRlZiB1
bnNpZ25lZCBjaGFyIF9faW9zdGF0ZTsKCnN0cnVjdCBfaW9zX2ZpZWxkcwp7ICAKICAgIHN0cmVh
bWJ1ZiAqX3N0cmJ1ZjsKICAgIG9zdHJlYW0qIF90aWU7CiAgICBpbnQgX3dpZHRoOwogICAgX19m
bXRmbGFncyBfZmxhZ3M7CiAgICB3Y2hhcl90ICAgX2ZpbGw7CiAgICBfX2lvc3RhdGUgX3N0YXRl
OwogICAgX19pb3N0YXRlIF9leGNlcHRpb25zOwogICAgaW50IF9wcmVjaXNpb247CgogICAgdm9p
ZCAqX2FycmF5czsgIAp9OwoKCgoKCgoKCgoKCgoKCgojIDEyNCAiL3Vzci9pbmNsdWRlL2crKy0y
L3N0cmVhbWJ1Zi5oIiAzCgoKY2xhc3MgaW9zIDogcHVibGljIF9pb3NfZmllbGRzIHsKICBpb3Mm
IG9wZXJhdG9yPShpb3MmKTsgICAKICBpb3MgKGNvbnN0IGlvcyYpOyAgCiAgcHVibGljOgogICAg
dHlwZWRlZiBfX2ZtdGZsYWdzIGZtdGZsYWdzOwogICAgdHlwZWRlZiBpbnQgaW9zdGF0ZTsKICAg
IHR5cGVkZWYgaW50IG9wZW5tb2RlOwogICAgdHlwZWRlZiBpbnQgc3RyZWFtc2l6ZTsKICAgIGVu
dW0gaW9fc3RhdGUgewoJZ29vZGJpdCA9IDAgLAoJZW9mYml0ID0gMSAsCglmYWlsYml0ID0gMiAs
CgliYWRiaXQgPSA0ICB9OwogICAgZW51bSBvcGVuX21vZGUgewoJaW4gPSAxICwKCW91dCA9IDIg
LAoJYXRlID0gNCAsCglhcHAgPSA4ICwKCXRydW5jID0gMTYgLAoJbm9jcmVhdGUgPSAzMiAsCglu
b3JlcGxhY2UgPSA2NCAsCgliaW4gPSAxMjggLCAgCgliaW5hcnkgPSAxMjggIH07CiAgICBlbnVt
IHNlZWtfZGlyIHsgYmVnLCBjdXIsIGVuZH07CiAgICB0eXBlZGVmIGVudW0gc2Vla19kaXIgc2Vl
a2RpcjsKICAgICAKICAgIGVudW0geyBza2lwd3M9IDAxICwKCSAgIGxlZnQ9IDAyICwgcmlnaHQ9
IDA0ICwgaW50ZXJuYWw9IDAxMCAsCgkgICBkZWM9IDAyMCAsIG9jdD0gMDQwICwgaGV4PSAwMTAw
ICwKCSAgIHNob3diYXNlPSAwMjAwICwgc2hvd3BvaW50PSAwNDAwICwKCSAgIHVwcGVyY2FzZT0g
MDEwMDAgLCBzaG93cG9zPSAwMjAwMCAsCgkgICBzY2llbnRpZmljPSAwNDAwMCAsIGZpeGVkPSAw
MTAwMDAgLAoJICAgdW5pdGJ1Zj0gMDIwMDAwICwgc3RkaW89IDA0MDAwMCAKCgoKCSAgIH07CiAg
ICBlbnVtIHsgIAoJYmFzZWZpZWxkPWRlYytvY3QraGV4LAoJZmxvYXRmaWVsZCA9IHNjaWVudGlm
aWMrZml4ZWQsCglhZGp1c3RmaWVsZCA9IGxlZnQrcmlnaHQraW50ZXJuYWwKICAgIH07CgojIDE3
NyAiL3Vzci9pbmNsdWRlL2crKy0yL3N0cmVhbWJ1Zi5oIiAzCgoKICAgIG9zdHJlYW0qIHRpZSgp
IGNvbnN0IHsgcmV0dXJuIF90aWU7IH0KICAgIG9zdHJlYW0qIHRpZShvc3RyZWFtKiB2YWwpIHsg
b3N0cmVhbSogc2F2ZT1fdGllOyBfdGllPXZhbDsgcmV0dXJuIHNhdmU7IH0KCiAgICAgCiAgICB3
Y2hhcl90ICAgZmlsbCgpIGNvbnN0IHsgcmV0dXJuIF9maWxsOyB9CiAgICB3Y2hhcl90ICAgZmls
bCh3Y2hhcl90ICAgbmV3ZikKCXt3Y2hhcl90ICAgb2xkZiA9IF9maWxsOyBfZmlsbCA9IG5ld2Y7
IHJldHVybiBvbGRmO30KICAgIGZtdGZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gX2ZsYWdz
OyB9CiAgICBmbXRmbGFncyBmbGFncyhmbXRmbGFncyBuZXdfdmFsKSB7CglmbXRmbGFncyBvbGRf
dmFsID0gX2ZsYWdzOyBfZmxhZ3MgPSBuZXdfdmFsOyByZXR1cm4gb2xkX3ZhbDsgfQogICAgaW50
IHByZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIF9wcmVjaXNpb247IH0KICAgIGludCBwcmVjaXNp
b24oaW50IG5ld3ApIHsKCXVuc2lnbmVkIHNob3J0IG9sZHAgPSBfcHJlY2lzaW9uOyBfcHJlY2lz
aW9uID0gKHVuc2lnbmVkIHNob3J0KW5ld3A7CglyZXR1cm4gb2xkcDsgfQogICAgZm10ZmxhZ3Mg
c2V0ZihmbXRmbGFncyB2YWwpIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxhZ3M7CglfZmxhZ3Mg
fD0gdmFsOyByZXR1cm4gb2xkYml0czsgfQogICAgZm10ZmxhZ3Mgc2V0ZihmbXRmbGFncyB2YWws
IGZtdGZsYWdzIG1hc2spIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxhZ3M7CglfZmxhZ3MgPSAo
X2ZsYWdzICYgfm1hc2spIHwgKHZhbCAmIG1hc2spOyByZXR1cm4gb2xkYml0czsgfQogICAgZm10
ZmxhZ3MgdW5zZXRmKGZtdGZsYWdzIG1hc2spIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxhZ3M7
CglfZmxhZ3MgJj0gfm1hc2s7IHJldHVybiBvbGRiaXRzOyB9CiAgICBpbnQgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBfd2lkdGg7IH0KICAgIGludCB3aWR0aChpbnQgdmFsKSB7IGludCBzYXZlID0g
X3dpZHRoOyBfd2lkdGggPSB2YWw7IHJldHVybiBzYXZlOyB9CgoKCgogICAgdm9pZCBfdGhyb3df
ZmFpbHVyZSgpIGNvbnN0IHsgfQoKICAgIHZvaWQgY2xlYXIoaW9zdGF0ZSBzdGF0ZSA9IDApIHsK
CV9zdGF0ZSA9IF9zdHJidWYgPyBzdGF0ZSA6IHN0YXRlfGJhZGJpdDsKCWlmIChfc3RhdGUgJiBf
ZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQogICAgdm9pZCBzZXQoaW9zdGF0ZSBmbGFn
KSB7IF9zdGF0ZSB8PSBmbGFnOwoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhyb3dfZmFp
bHVyZSgpOyB9CiAgICB2b2lkIHNldHN0YXRlKGlvc3RhdGUgZmxhZykgeyBfc3RhdGUgfD0gZmxh
ZzsgIAoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhyb3dfZmFpbHVyZSgpOyB9CiAgICBp
bnQgZ29vZCgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSA9PSAwOyB9CiAgICBpbnQgZW9mKCkgY29u
c3QgeyByZXR1cm4gX3N0YXRlICYgaW9zOjplb2ZiaXQ7IH0KICAgIGludCBmYWlsKCkgY29uc3Qg
eyByZXR1cm4gX3N0YXRlICYgKGlvczo6YmFkYml0fGlvczo6ZmFpbGJpdCk7IH0KICAgIGludCBi
YWQoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgJiBpb3M6OmJhZGJpdDsgfQogICAgaW9zdGF0ZSBy
ZHN0YXRlKCkgY29uc3QgeyByZXR1cm4gX3N0YXRlOyB9CiAgICBvcGVyYXRvciB2b2lkKigpIGNv
bnN0IHsgcmV0dXJuIGZhaWwoKSA/ICh2b2lkKikwIDogKHZvaWQqKSgtMSk7IH0KICAgIGludCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBmYWlsKCk7IH0KICAgIGlvc3RhdGUgZXhjZXB0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIF9leGNlcHRpb25zOyB9CiAgICB2b2lkIGV4Y2VwdGlvbnMoaW9z
dGF0ZSBlbmFibGUpIHsKCV9leGNlcHRpb25zID0gZW5hYmxlOwoJaWYgKF9zdGF0ZSAmIF9leGNl
cHRpb25zKSBfdGhyb3dfZmFpbHVyZSgpOyB9CgogICAgc3RyZWFtYnVmKiByZGJ1ZigpIGNvbnN0
IHsgcmV0dXJuIF9zdHJidWY7IH0KICAgIHN0cmVhbWJ1ZiogcmRidWYoc3RyZWFtYnVmICpfcykg
ewogICAgICBzdHJlYW1idWYgKl9vbGQgPSBfc3RyYnVmOyBfc3RyYnVmID0gX3M7IGNsZWFyICgp
OyByZXR1cm4gX29sZDsgfQoKICAgIHN0YXRpYyBpbnQgc3luY193aXRoX3N0ZGlvKGludCBvbik7
CiAgICBzdGF0aWMgdm9pZCBzeW5jX3dpdGhfc3RkaW8oKSB7IHN5bmNfd2l0aF9zdGRpbygxKTsg
fQogICAgc3RhdGljIGZtdGZsYWdzIGJpdGFsbG9jKCk7CiAgICBzdGF0aWMgaW50IHhhbGxvYygp
OwogICAgdm9pZComIHB3b3JkKGludCk7CiAgICB2b2lkKiBwd29yZChpbnQpIGNvbnN0OwogICAg
bG9uZyYgaXdvcmQoaW50KTsKICAgIGxvbmcgaXdvcmQoaW50KSBjb25zdDsKCgoKCgoKCgoKICAg
ICAKICAgIGNsYXNzIEluaXQgewogICAgcHVibGljOgogICAgICBJbml0ICgpIHsgfQogICAgfTsK
CiAgcHJvdGVjdGVkOgogICAgaW5saW5lIGlvcyhzdHJlYW1idWYqIHNiID0gMCwgb3N0cmVhbSog
dGllX3RvID0gMCk7CiAgICBpbmxpbmUgdmlydHVhbCB+aW9zKCk7CiAgICBpbmxpbmUgdm9pZCBp
bml0KHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qIHRpZSA9IDApOwp9OwoKCgoKdHlwZWRlZiBpb3M6
OnNlZWtfZGlyIF9zZWVrX2RpcjsKCgogCiAKIAogCiAKCiAKIApjbGFzcyBzdHJlYW1tYXJrZXIg
OiBwcml2YXRlIF9JT19tYXJrZXIgewogICAgZnJpZW5kIGNsYXNzIHN0cmVhbWJ1ZjsKICAgIHZv
aWQgc2V0X29mZnNldChpbnQgb2Zmc2V0KSB7IF9wb3MgPSBvZmZzZXQ7IH0KICBwdWJsaWM6CiAg
ICBzdHJlYW1tYXJrZXIoc3RyZWFtYnVmICpzYik7CiAgICB+c3RyZWFtbWFya2VyKCk7CiAgICBp
bnQgc2F2aW5nKCkgeyByZXR1cm4gIDE7IH0KICAgIGludCBkZWx0YShzdHJlYW1tYXJrZXImKTsK
ICAgIGludCBkZWx0YSgpOwp9OwoKc3RydWN0IHN0cmVhbWJ1ZiA6IHB1YmxpYyBfSU9fRklMRSB7
ICAKICAgIGZyaWVuZCBjbGFzcyBpb3M7CiAgICBmcmllbmQgY2xhc3MgaXN0cmVhbTsKICAgIGZy
aWVuZCBjbGFzcyBvc3RyZWFtOwogICAgZnJpZW5kIGNsYXNzIHN0cmVhbW1hcmtlcjsKICAgIGNv
bnN0IHZvaWQgKiZfdnRhYmxlKCkgeyByZXR1cm4gKihjb25zdCB2b2lkKiopKChfSU9fRklMRSop
dGhpcyArIDEpOyB9CiAgcHJvdGVjdGVkOgogICAgc3RhdGljIHN0cmVhbWJ1ZiogX2xpc3RfYWxs
OyAgCiAgICBfSU9fRklMRSomIHhjaGFpbigpIHsgcmV0dXJuIF9jaGFpbjsgfQogICAgdm9pZCBf
dW5fbGluaygpOwogICAgdm9pZCBfbGlua19pbigpOwogICAgY2hhciogZ3B0cigpIGNvbnN0CiAg
ICAgIHsgcmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2ZV9iYXNlIDogX0lPX3JlYWRf
cHRyOyB9CiAgICBjaGFyKiBwcHRyKCkgY29uc3QgeyByZXR1cm4gX0lPX3dyaXRlX3B0cjsgfQog
ICAgY2hhciogZWdwdHIoKSBjb25zdAogICAgICB7IHJldHVybiBfZmxhZ3MgICYgMHgxMDAgID8g
X0lPX3NhdmVfZW5kIDogX0lPX3JlYWRfZW5kOyB9CiAgICBjaGFyKiBlcHB0cigpIGNvbnN0IHsg
cmV0dXJuIF9JT193cml0ZV9lbmQ7IH0KICAgIGNoYXIqIHBiYXNlKCkgY29uc3QgeyByZXR1cm4g
X0lPX3dyaXRlX2Jhc2U7IH0KICAgIGNoYXIqIGViYWNrKCkgY29uc3QKICAgICAgeyByZXR1cm4g
X2ZsYWdzICAmIDB4MTAwICA/IF9JT19zYXZlX2Jhc2UgOiBfSU9fcmVhZF9iYXNlO30KICAgIGNo
YXIqIGJhc2UoKSBjb25zdCB7IHJldHVybiBfSU9fYnVmX2Jhc2U7IH0KICAgIGNoYXIqIGVidWYo
KSBjb25zdCB7IHJldHVybiBfSU9fYnVmX2VuZDsgfQogICAgaW50IGJsZW4oKSBjb25zdCB7IHJl
dHVybiBfSU9fYnVmX2VuZCAtIF9JT19idWZfYmFzZTsgfQogICAgdm9pZCB4cHV0X2NoYXIoY2hh
ciBjKSB7ICpfSU9fd3JpdGVfcHRyKysgPSBjOyB9CiAgICBpbnQgeGZsYWdzKCkgeyByZXR1cm4g
X2ZsYWdzIDsgfQogICAgaW50IHhmbGFncyhpbnQgZikge2ludCBmbCA9IF9mbGFncyA7IF9mbGFn
cyAgPSBmOyByZXR1cm4gZmw7fQogICAgdm9pZCB4c2V0ZmxhZ3MoaW50IGYpIHsgX2ZsYWdzICB8
PSBmOyB9CiAgICB2b2lkIHhzZXRmbGFncyhpbnQgZiwgaW50IG1hc2spCiAgICAgIHsgX2ZsYWdz
ICA9IChfZmxhZ3MgICYgfm1hc2spIHwgKGYgJiBtYXNrKTsgfQogICAgdm9pZCBnYnVtcChpbnQg
bikKICAgICAgeyBfZmxhZ3MgICYgMHgxMDAgID8gKF9JT19zYXZlX2Jhc2UrPW4pOihfSU9fcmVh
ZF9wdHIrPW4pO30KICAgIHZvaWQgcGJ1bXAoaW50IG4pIHsgX0lPX3dyaXRlX3B0ciArPSBuOyB9
CiAgICB2b2lkIHNldGIoY2hhciogYiwgY2hhciogZWIsIGludCBhPTApOwogICAgdm9pZCBzZXRw
KGNoYXIqIHAsIGNoYXIqIGVwKQogICAgICB7IF9JT193cml0ZV9iYXNlPV9JT193cml0ZV9wdHI9
cDsgX0lPX3dyaXRlX2VuZD1lcDsgfQogICAgdm9pZCBzZXRnKGNoYXIqIGViLCBjaGFyKiBnLCBj
aGFyICplZykgewogICAgICBpZiAoX2ZsYWdzICAmIDB4MTAwICkgX0lPX2ZyZWVfYmFja3VwX2Fy
ZWEodGhpcyk7IAogICAgICBfSU9fcmVhZF9iYXNlID0gZWI7IF9JT19yZWFkX3B0ciA9IGc7IF9J
T19yZWFkX2VuZCA9IGVnOyB9CiAgICBjaGFyICpzaG9ydGJ1ZigpIHsgcmV0dXJuIF9zaG9ydGJ1
ZjsgfQoKICAgIGludCBpbl9iYWNrdXAoKSB7IHJldHVybiBfZmxhZ3MgJiAweDEwMCA7IH0KICAg
ICAKICAgIGNoYXIgKkdiYXNlKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fc2F2ZV9iYXNl
IDogX0lPX3JlYWRfYmFzZTsgfQogICAgIAogICAgY2hhciAqZUdwdHIoKSB7IHJldHVybiBpbl9i
YWNrdXAoKSA/IF9JT19zYXZlX2VuZCA6IF9JT19yZWFkX2VuZDsgfQogICAgIAogICAgY2hhciAq
QmJhc2UoKSB7IHJldHVybiBpbl9iYWNrdXAoKSA/IF9JT19yZWFkX2Jhc2UgOiBfSU9fc2F2ZV9i
YXNlOyB9CiAgICBjaGFyICpCcHRyKCkgeyByZXR1cm4gX0lPX2JhY2t1cF9iYXNlOyB9CiAgICAg
CiAgICBjaGFyICplQnB0cigpIHsgcmV0dXJuIGluX2JhY2t1cCgpID8gX0lPX3JlYWRfZW5kIDog
X0lPX3NhdmVfZW5kOyB9CiAgICBjaGFyICpOYmFzZSgpIHsgcmV0dXJuIF9JT19zYXZlX2Jhc2U7
IH0KICAgIGNoYXIgKmVOcHRyKCkgeyByZXR1cm4gX0lPX3NhdmVfZW5kOyB9CiAgICBpbnQgaGF2
ZV9iYWNrdXAoKSB7IHJldHVybiBfSU9fc2F2ZV9iYXNlICE9IF9fbnVsbCA7IH0KICAgIGludCBo
YXZlX21hcmtlcnMoKSB7IHJldHVybiBfbWFya2VycyAhPSBfX251bGwgOyB9CiAgICB2b2lkIGZy
ZWVfYmFja3VwX2FyZWEoKTsKICAgIHZvaWQgdW5zYXZlX21hcmtlcnMoKTsgIAogICAgaW50IHB1
dF9tb2RlKCkgeyByZXR1cm4gX2ZsYWdzICYgMHg4MDAgOyB9CiAgICBpbnQgc3dpdGNoX3RvX2dl
dF9tb2RlKCk7CiAgICAKICAgIHN0cmVhbWJ1ZihpbnQgZmxhZ3M9MCk7CiAgcHVibGljOgogICAg
c3RhdGljIGludCBmbHVzaF9hbGwoKTsKICAgIHN0YXRpYyB2b2lkIGZsdXNoX2FsbF9saW5lYnVm
ZmVyZWQoKTsgIAogICAgdmlydHVhbCB+c3RyZWFtYnVmKCk7CiAgICB2aXJ0dWFsIGludCBvdmVy
ZmxvdyhpbnQgYyA9ICgtMSkgKTsgIAogICAgdmlydHVhbCBpbnQgdW5kZXJmbG93KCk7ICAKICAg
IHZpcnR1YWwgaW50IHVmbG93KCk7ICAKICAgIHZpcnR1YWwgaW50IHBiYWNrZmFpbChpbnQgYyk7
CiAKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSB4c3B1dG4oY29uc3QgY2hhciogcywgc3RyZWFtc2l6
ZSBuKTsKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSB4c2dldG4oY2hhciogcywgc3RyZWFtc2l6ZSBu
KTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGlu
dCBtb2RlPWlvczo6aW58aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1wb3Mgc2Vla3Bvcyhz
dHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6aW58aW9zOjpvdXQpOwoKICAgIHN0cmVhbXBv
cyBwdWJzZWVrb2ZmKHN0cmVhbW9mZiBvLCBfc2Vla19kaXIgZCwgaW50IG1vZGU9aW9zOjppbnxp
b3M6Om91dCkKICAgICAgeyByZXR1cm4gX0lPX3NlZWtvZmYgKHRoaXMsIG8sIGQsIG1vZGUpOyB9
CiAgICBzdHJlYW1wb3MgcHVic2Vla3BvcyhzdHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6
aW58aW9zOjpvdXQpCiAgICAgIHsgcmV0dXJuIF9JT19zZWVrcG9zICh0aGlzLCBwb3MsIG1vZGUp
OyB9CiAgICBzdHJlYW1wb3Mgc3NlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGludCBtb2Rl
PWlvczo6aW58aW9zOjpvdXQpOwogICAgc3RyZWFtcG9zIHNzZWVrcG9zKHN0cmVhbXBvcyBwb3Ms
IGludCBtb2RlID0gaW9zOjppbnxpb3M6Om91dCk7CiAgICB2aXJ0dWFsIHN0cmVhbWJ1Ziogc2V0
YnVmKGNoYXIqIHAsIGludCBsZW4pOwogICAgdmlydHVhbCBpbnQgc3luYygpOwogICAgdmlydHVh
bCBpbnQgZG9hbGxvY2F0ZSgpOwoKICAgIGludCBzZWVrbWFyayhzdHJlYW1tYXJrZXImIG1hcmss
IGludCBkZWx0YSA9IDApOwogICAgaW50IHNwdXRiYWNrYyhjaGFyIGMpOwogICAgaW50IHN1bmdl
dGMoKTsKICAgIGludCB1bmJ1ZmZlcmVkKCkgeyByZXR1cm4gX2ZsYWdzICYgMiAgPyAxIDogMDsg
fQogICAgaW50IGxpbmVidWZmZXJlZCgpIHsgcmV0dXJuIF9mbGFncyAmIDB4MjAwICA/IDEgOiAw
OyB9CiAgICB2b2lkIHVuYnVmZmVyZWQoaW50IGkpCgl7IGlmIChpKSBfZmxhZ3MgfD0gMiA7IGVs
c2UgX2ZsYWdzICY9IH4yIDsgfQogICAgdm9pZCBsaW5lYnVmZmVyZWQoaW50IGkpCgl7IGlmIChp
KSBfZmxhZ3MgfD0gMHgyMDAgOyBlbHNlIF9mbGFncyAmPSB+MHgyMDAgOyB9CiAgICBpbnQgYWxs
b2NhdGUoKSB7ICAKCWlmIChiYXNlKCkgfHwgdW5idWZmZXJlZCgpKSByZXR1cm4gMDsKCWVsc2Ug
cmV0dXJuIGRvYWxsb2NhdGUoKTsgfQogICAgIAogICAgdm9pZCBhbGxvY2J1ZigpIHsgaWYgKGJh
c2UoKSA9PSBfX251bGwgKSBkb2FsbG9jYnVmKCk7IH0KICAgIHZvaWQgZG9hbGxvY2J1ZigpOwog
ICAgaW50IGluX2F2YWlsKCkgeyByZXR1cm4gX0lPX3JlYWRfZW5kIC0gX0lPX3JlYWRfcHRyOyB9
CiAgICBpbnQgb3V0X3dhaXRpbmcoKSB7IHJldHVybiBfSU9fd3JpdGVfcHRyIC0gX0lPX3dyaXRl
X2Jhc2U7IH0KICAgIHN0cmVhbXNpemUgc3B1dG4oY29uc3QgY2hhciogcywgc3RyZWFtc2l6ZSBu
KSB7IHJldHVybiB4c3B1dG4ocywgbik7IH0KICAgIHN0cmVhbXNpemUgcGFkbihjaGFyIHBhZCwg
c3RyZWFtc2l6ZSBuKSB7IHJldHVybiBfSU9fcGFkbih0aGlzLCBwYWQsIG4pOyB9CiAgICBzdHJl
YW1zaXplIHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUgbikgeyByZXR1cm4gX0lPX3NnZXRuKHRo
aXMsIHMsIG4pOyB9CiAgICBpbnQgaWdub3JlKGludCk7CiAgICBpbnQgZ2V0X2NvbHVtbigpOwog
ICAgaW50IHNldF9jb2x1bW4oaW50KTsKICAgIGxvbmcgc2dldGxpbmUoY2hhciogYnVmLCBzaXpl
X3QgICBuLCBjaGFyIGRlbGltLCBpbnQgcHV0YmFja19kZWxpbSk7CiAgICBpbnQgc3B1dGMoaW50
IGMpIHsgcmV0dXJuIF9JT19wdXRjKGMsIHRoaXMpOyB9CiAgICBpbnQgc2J1bXBjKCkgeyByZXR1
cm4gX0lPX2dldGModGhpcyk7IH0KICAgIGludCBzZ2V0YygpIHsgcmV0dXJuICgoICB0aGlzICAp
LT5fSU9fcmVhZF9wdHIgPj0gKCAgdGhpcyAgKS0+X0lPX3JlYWRfZW5kICYmIF9fdW5kZXJmbG93
ICggIHRoaXMgICkgPT0gKC0xKSAgPyAoLTEpICA6ICoodW5zaWduZWQgY2hhciAqKSAoICB0aGlz
ICApLT5fSU9fcmVhZF9wdHIpICA7IH0KICAgIGludCBzbmV4dGMoKSB7CglpZiAoX0lPX3JlYWRf
cHRyID49IF9JT19yZWFkX2VuZCAmJiBfX3VuZGVyZmxvdyh0aGlzKSA9PSAoLTEpICkKCSAgcmV0
dXJuICgtMSkgOwoJZWxzZSByZXR1cm4gX0lPX3JlYWRfcHRyKyssIHNnZXRjKCk7IH0KICAgIHZv
aWQgc3Rvc3NjKCkgeyBpZiAoX0lPX3JlYWRfcHRyIDwgX0lPX3JlYWRfZW5kKSBfSU9fcmVhZF9w
dHIrKzsgfQogICAgaW50IHZzY2FuKGNoYXIgY29uc3QgKmZtdDAsIF9fZ251Y192YV9saXN0ICBh
cCwgaW9zKiBzdHJlYW0gPSBfX251bGwgKTsKICAgIGludCBzY2FuKGNoYXIgY29uc3QgKmZtdDAg
Li4uKTsKICAgIGludCB2Zm9ybShjaGFyIGNvbnN0ICpmbXQwLCBfX2dudWNfdmFfbGlzdCAgYXAp
OwogICAgaW50IGZvcm0oY2hhciBjb25zdCAqZm10MCAuLi4pOwoKCgoKICAgIHZpcnR1YWwgc3Ry
ZWFtc2l6ZSBzeXNfcmVhZChjaGFyKiBidWYsIHN0cmVhbXNpemUgc2l6ZSk7CiAgICB2aXJ0dWFs
IHN0cmVhbXNpemUgc3lzX3dyaXRlKGNvbnN0IGNoYXIqLCBzdHJlYW1zaXplKTsKICAgIHZpcnR1
YWwgc3RyZWFtcG9zIHN5c19zZWVrKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHZpcnR1YWwg
aW50IHN5c19jbG9zZSgpOwogICAgdmlydHVhbCBpbnQgc3lzX3N0YXQodm9pZCopOyAgCgogICAg
dmlydHVhbCBpbnQgc2hvd21hbnljKCk7CiAgICB2aXJ0dWFsIHZvaWQgaW1idWUodm9pZCAqKTsK
Cn07CgogCiAKCmNsYXNzIGZpbGVidWYgOiBwdWJsaWMgc3RyZWFtYnVmIHsKICBwcm90ZWN0ZWQ6
CiAgICB2b2lkIGluaXQoKTsKICBwdWJsaWM6CiAgICBzdGF0aWMgY29uc3QgaW50IG9wZW5wcm90
OyAgCiAgICBmaWxlYnVmKCk7CiAgICBmaWxlYnVmKGludCBmZCk7CiAgICBmaWxlYnVmKGludCBm
ZCwgY2hhciogcCwgaW50IGxlbik7CgoKCiAgICB+ZmlsZWJ1ZigpOwogICAgZmlsZWJ1ZiogYXR0
YWNoKGludCBmZCk7CiAgICBmaWxlYnVmKiBvcGVuKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25z
dCBjaGFyICptb2RlKTsKICAgIGZpbGVidWYqIG9wZW4oY29uc3QgY2hhciAqZmlsZW5hbWUsIGlv
czo6b3Blbm1vZGUgbW9kZSwgaW50IHByb3QgPSAwNjY0KTsKICAgIHZpcnR1YWwgaW50IHVuZGVy
ZmxvdygpOwogICAgdmlydHVhbCBpbnQgb3ZlcmZsb3coaW50IGMgPSAoLTEpICk7CiAgICBpbnQg
aXNfb3BlbigpIGNvbnN0IHsgcmV0dXJuIF9maWxlbm8gPj0gMDsgfQogICAgaW50IGZkKCkgY29u
c3QgeyByZXR1cm4gaXNfb3BlbigpID8gX2ZpbGVubyA6ICgtMSkgOyB9CiAgICBmaWxlYnVmKiBj
bG9zZSgpOwogICAgdmlydHVhbCBpbnQgZG9hbGxvY2F0ZSgpOwogICAgdmlydHVhbCBzdHJlYW1w
b3Mgc2Vla29mZihzdHJlYW1vZmYsIF9zZWVrX2RpciwgaW50IG1vZGU9aW9zOjppbnxpb3M6Om91
dCk7CiAgICB2aXJ0dWFsIHN0cmVhbWJ1Ziogc2V0YnVmKGNoYXIqIHAsIGludCBsZW4pOwogICAg
c3RyZWFtc2l6ZSB4c3B1dG4oY29uc3QgY2hhciogcywgc3RyZWFtc2l6ZSBuKTsKICAgIHN0cmVh
bXNpemUgeHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIGludCBzeW5j
KCk7CiAgcHJvdGVjdGVkOiAgCiAKICAgIGludCBpc19yZWFkaW5nKCkgeyByZXR1cm4gZWJhY2so
KSAhPSBlZ3B0cigpOyB9CiAgICBjaGFyKiBjdXJfcHRyKCkgeyByZXR1cm4gaXNfcmVhZGluZygp
ID8gIGdwdHIoKSA6IHBwdHIoKTsgfQogICAgIAogICAgY2hhciogZmlsZV9wdHIoKSB7IHJldHVy
biBlR3B0cigpOyB9CiAgICAgCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgc3lzX3JlYWQoY2hhciog
YnVmLCBzdHJlYW1zaXplIHNpemUpOwogICAgdmlydHVhbCBzdHJlYW1wb3Mgc3lzX3NlZWsoc3Ry
ZWFtb2ZmLCBfc2Vla19kaXIpOwogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5c193cml0ZShjb25z
dCBjaGFyKiwgc3RyZWFtc2l6ZSk7CiAgICB2aXJ0dWFsIGludCBzeXNfc3RhdCh2b2lkKik7ICAK
ICAgIHZpcnR1YWwgaW50IHN5c19jbG9zZSgpOwoKCgoKfTsKCmlubGluZSB2b2lkIGlvczo6aW5p
dChzdHJlYW1idWYqIHNiLCBvc3RyZWFtKiB0aWVfdG8pIHsKCQlfc3RhdGUgPSBzYiA/IGlvczo6
Z29vZGJpdCA6IGlvczo6YmFkYml0OyBfZXhjZXB0aW9ucz0wOwoJCV9zdHJidWY9c2I7IF90aWUg
PSB0aWVfdG87IF93aWR0aD0wOyBfZmlsbD0nICc7CgoJCV9mbGFncz1pb3M6OnNraXB3c3xpb3M6
OmRlYzsKCgoKCQlfcHJlY2lzaW9uPTY7IF9hcnJheXMgPSAwOyB9CgppbmxpbmUgaW9zOjppb3Mo
c3RyZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllX3RvKSB7IGluaXQoc2IsIHRpZV90byk7IH0KCmlu
bGluZSBpb3M6On5pb3MoKSB7CgoKCiAgICBpZiAoX2FycmF5cykgZGVsZXRlIFtdIF9hcnJheXM7
Cn0KfSAgCgojIDMxICIvdXNyL2luY2x1ZGUvZysrLTIvaW9zdHJlYW0uaCIgMiAzCgoKZXh0ZXJu
ICJDKysiIHsKY2xhc3MgaXN0cmVhbTsgY2xhc3Mgb3N0cmVhbTsKdHlwZWRlZiBpb3MmICgqX19t
YW5pcCkoaW9zJik7CnR5cGVkZWYgaXN0cmVhbSYgKCpfX2ltYW5pcCkoaXN0cmVhbSYpOwp0eXBl
ZGVmIG9zdHJlYW0mICgqX19vbWFuaXApKG9zdHJlYW0mKTsKCmV4dGVybiBpc3RyZWFtJiB3cyhp
c3RyZWFtJiBpbnMpOwpleHRlcm4gb3N0cmVhbSYgZmx1c2gob3N0cmVhbSYgb3V0cyk7CmV4dGVy
biBvc3RyZWFtJiBlbmRsKG9zdHJlYW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYgZW5kcyhvc3Ry
ZWFtJiBvdXRzKTsKCmNsYXNzIG9zdHJlYW0gOiB2aXJ0dWFsIHB1YmxpYyBpb3MKewogICAgIAog
ICAgdm9pZCBkb19vc2Z4KCk7CiAgcHVibGljOgogICAgb3N0cmVhbSgpIHsgfQogICAgb3N0cmVh
bShzdHJlYW1idWYqIHNiLCBvc3RyZWFtKiB0aWVkPSBfX251bGwgKTsKICAgIGludCBvcGZ4KCkg
ewoJaWYgKCFnb29kKCkpIHJldHVybiAwOwoJZWxzZSB7IGlmIChfdGllKSBfdGllLT5mbHVzaCgp
OyAgOyByZXR1cm4gMTt9IH0KICAgIHZvaWQgb3NmeCgpIHsgIDsKCQkgIGlmIChmbGFncygpICYg
KGlvczo6dW5pdGJ1Znxpb3M6OnN0ZGlvKSkKCQkgICAgICBkb19vc2Z4KCk7IH0KICAgIG9zdHJl
YW0mIGZsdXNoKCk7CiAgICBvc3RyZWFtJiBwdXQoY2hhciBjKSB7IF9zdHJidWYtPnNwdXRjKGMp
OyByZXR1cm4gKnRoaXM7IH0KCgoKCgogICAgb3N0cmVhbSYgd3JpdGUoY29uc3QgY2hhciAqcywg
c3RyZWFtc2l6ZSBuKTsKICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMs
IHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1cm4gd3JpdGUoKGNvbnN0IGNoYXIqKXMsIG4pO30K
ICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IHNpZ25lZCBjaGFyICpzLCBzdHJlYW1zaXplIG4pCiAg
ICAgIHsgcmV0dXJuIHdyaXRlKChjb25zdCBjaGFyKilzLCBuKTt9CiAgICBvc3RyZWFtJiB3cml0
ZShjb25zdCB2b2lkICpzLCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHdyaXRlKChjb25z
dCBjaGFyKilzLCBuKTt9CiAgICBvc3RyZWFtJiBzZWVrcChzdHJlYW1wb3MpOwogICAgb3N0cmVh
bSYgc2Vla3Aoc3RyZWFtb2ZmLCBfc2Vla19kaXIpOwogICAgc3RyZWFtcG9zIHRlbGxwKCk7CiAg
ICBvc3RyZWFtJiBmb3JtKGNvbnN0IGNoYXIgKmZvcm1hdCAuLi4pOwogICAgb3N0cmVhbSYgdmZv
cm0oY29uc3QgY2hhciAqZm9ybWF0LCBfX2dudWNfdmFfbGlzdCAgYXJncyk7CgogICAgb3N0cmVh
bSYgb3BlcmF0b3I8PChjaGFyIGMpOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBj
aGFyIGMpIHsgcmV0dXJuICgqdGhpcykgPDwgKGNoYXIpYzsgfQogICAgb3N0cmVhbSYgb3BlcmF0
b3I8PChzaWduZWQgY2hhciBjKSB7IHJldHVybiAoKnRoaXMpIDw8IChjaGFyKWM7IH0KICAgIG9z
dHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgY2hhciAqcyk7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8
KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMpCgl7IHJldHVybiAoKnRoaXMpIDw8IChjb25zdCBjaGFy
KilzOyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IHNpZ25lZCBjaGFyICpzKQoJeyBy
ZXR1cm4gKCp0aGlzKSA8PCAoY29uc3QgY2hhciopczsgfQogICAgb3N0cmVhbSYgb3BlcmF0b3I8
PChjb25zdCB2b2lkICpwKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoaW50IG4pOwogICAgb3N0
cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBpbnQgbik7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8
KGxvbmcgbik7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcgbik7CgogICAg
X19leHRlbnNpb25fXyBvc3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcgbG9uZyBuKTsKICAgIF9fZXh0
ZW5zaW9uX18gb3N0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIGxvbmcgbik7CgogICAg
b3N0cmVhbSYgb3BlcmF0b3I8PChzaG9ydCBuKSB7cmV0dXJuIG9wZXJhdG9yPDwoKGludCluKTt9
CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIHNob3J0IG4pIHtyZXR1cm4gb3BlcmF0
b3I8PCgodW5zaWduZWQgaW50KW4pO30KCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGJvb2wgYikg
eyByZXR1cm4gb3BlcmF0b3I8PCgoaW50KWIpOyB9CgogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChk
b3VibGUgbik7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGZsb2F0IG4pIHsgcmV0dXJuIG9wZXJh
dG9yPDwoKGRvdWJsZSluKTsgfQoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwobG9uZyBkb3VibGUg
bik7CgoKCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KF9fb21hbmlwIGZ1bmMpIHsgcmV0dXJuICgq
ZnVuYykoKnRoaXMpOyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KF9fbWFuaXAgZnVuYykgeygq
ZnVuYykoKnRoaXMpOyByZXR1cm4gKnRoaXM7fQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChzdHJl
YW1idWYqKTsKCgoKfTsKCmNsYXNzIGlzdHJlYW0gOiB2aXJ0dWFsIHB1YmxpYyBpb3MKewogICAg
IApwcm90ZWN0ZWQ6CiAgICBzaXplX3QgICBfZ2NvdW50OwoKICAgIGludCBfc2tpcF93cygpOwog
IHB1YmxpYzoKICAgIGlzdHJlYW0oKTogX2djb3VudCAoMCkgeyB9CiAgICBpc3RyZWFtKHN0cmVh
bWJ1Ziogc2IsIG9zdHJlYW0qdGllZD0gX19udWxsICk7CiAgICBpc3RyZWFtJiBnZXQoY2hhciog
cHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0gJ1xuJyk7CiAgICBpc3RyZWFtJiBnZXQodW5zaWdu
ZWQgY2hhciogcHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0gJ1xuJykKCXsgcmV0dXJuIGdldCgo
Y2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgZ2V0KGNoYXImIGMpOwogICAg
aXN0cmVhbSYgZ2V0KHVuc2lnbmVkIGNoYXImIGMpIHsgcmV0dXJuIGdldCgoY2hhciYpYyk7IH0K
ICAgIGlzdHJlYW0mIGdldGxpbmUoY2hhciogcHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0gJ1xu
Jyk7CiAgICBpc3RyZWFtJiBnZXRsaW5lKHVuc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hh
ciBkZWxpbSA9ICdcbicpCgl7IHJldHVybiBnZXRsaW5lKChjaGFyKilwdHIsIGxlbiwgZGVsaW0p
OyB9CiAgICBpc3RyZWFtJiBnZXQoc2lnbmVkIGNoYXImIGMpICB7IHJldHVybiBnZXQoKGNoYXIm
KWMpOyB9CiAgICBpc3RyZWFtJiBnZXQoc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBk
ZWxpbSA9ICdcbicpCgl7IHJldHVybiBnZXQoKGNoYXIqKXB0ciwgbGVuLCBkZWxpbSk7IH0KICAg
IGlzdHJlYW0mIGdldGxpbmUoc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9
ICdcbicpCgl7IHJldHVybiBnZXRsaW5lKChjaGFyKilwdHIsIGxlbiwgZGVsaW0pOyB9CiAgICBp
c3RyZWFtJiByZWFkKGNoYXIgKnB0ciwgc3RyZWFtc2l6ZSBuKTsKICAgIGlzdHJlYW0mIHJlYWQo
dW5zaWduZWQgY2hhciAqcHRyLCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHJlYWQoKGNo
YXIqKXB0ciwgbik7IH0KICAgIGlzdHJlYW0mIHJlYWQoc2lnbmVkIGNoYXIgKnB0ciwgc3RyZWFt
c2l6ZSBuKQogICAgICB7IHJldHVybiByZWFkKChjaGFyKilwdHIsIG4pOyB9CiAgICBpc3RyZWFt
JiByZWFkKHZvaWQgKnB0ciwgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiByZWFkKChjaGFy
KilwdHIsIG4pOyB9CiAgICBpc3RyZWFtJiBnZXQoc3RyZWFtYnVmJiBzYiwgY2hhciBkZWxpbSA9
ICdcbicpOwogICAgaXN0cmVhbSYgZ2V0cyhjaGFyICoqcywgY2hhciBkZWxpbSA9ICdcbicpOwog
ICAgaW50IGlwZngoaW50IG5lZWQgPSAwKSB7CglpZiAoIWdvb2QoKSkgeyBzZXQoaW9zOjpmYWls
Yml0KTsgcmV0dXJuIDA7IH0KCWVsc2UgewoJICAgOwoJICBpZiAoX3RpZSAmJiAobmVlZCA9PSAw
IHx8IHJkYnVmKCktPmluX2F2YWlsKCkgPCBuZWVkKSkgX3RpZS0+Zmx1c2goKTsKCSAgaWYgKCFu
ZWVkICYmIChmbGFncygpICYgaW9zOjpza2lwd3MpKSByZXR1cm4gX3NraXBfd3MoKTsKCSAgZWxz
ZSByZXR1cm4gMTsKCX0KICAgIH0KICAgIGludCBpcGZ4MCgpIHsgIAoJaWYgKCFnb29kKCkpIHsg
c2V0KGlvczo6ZmFpbGJpdCk7IHJldHVybiAwOyB9CgllbHNlIHsKCSAgIDsKCSAgaWYgKF90aWUp
IF90aWUtPmZsdXNoKCk7CgkgIGlmIChmbGFncygpICYgaW9zOjpza2lwd3MpIHJldHVybiBfc2tp
cF93cygpOwoJICBlbHNlIHJldHVybiAxOwoJfQogICAgfQogICAgaW50IGlwZngxKCkgeyAgCglp
ZiAoIWdvb2QoKSkgeyBzZXQoaW9zOjpmYWlsYml0KTsgcmV0dXJuIDA7IH0KCWVsc2UgewoJICAg
OwoJICBpZiAoX3RpZSAmJiByZGJ1ZigpLT5pbl9hdmFpbCgpID09IDApIF90aWUtPmZsdXNoKCk7
CgkgIHJldHVybiAxOwoJfQogICAgfQogICAgdm9pZCBpc2Z4KCkgeyAgOyB9CiAgICBpbnQgZ2V0
KCkgeyBpZiAoIWlwZngxKCkpIHJldHVybiAoLTEpIDsKCQllbHNlIHsgaW50IGNoID0gX3N0cmJ1
Zi0+c2J1bXBjKCk7CgkJICAgICAgIGlmIChjaCA9PSAoLTEpICkgc2V0KGlvczo6ZW9mYml0KTsK
CQkgICAgICAgcmV0dXJuIGNoOwoJCSAgICAgfSB9CiAgICBpbnQgcGVlaygpOwogICAgc2l6ZV90
ICAgZ2NvdW50KCkgeyByZXR1cm4gX2djb3VudDsgfQogICAgaXN0cmVhbSYgaWdub3JlKGludCBu
PTEsIGludCBkZWxpbSA9ICgtMSkgKTsKICAgIGludCBzeW5jICgpOwogICAgaXN0cmVhbSYgc2Vl
a2coc3RyZWFtcG9zKTsKICAgIGlzdHJlYW0mIHNlZWtnKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsK
ICAgIHN0cmVhbXBvcyB0ZWxsZygpOwogICAgaXN0cmVhbSYgcHV0YmFjayhjaGFyIGNoKSB7Cglp
ZiAoZ29vZCgpICYmIF9zdHJidWYtPnNwdXRiYWNrYyhjaCkgPT0gKC0xKSApIGNsZWFyKGlvczo6
YmFkYml0KTsKCXJldHVybiAqdGhpczt9CiAgICBpc3RyZWFtJiB1bmdldCgpIHsKCWlmIChnb29k
KCkgJiYgX3N0cmJ1Zi0+c3VuZ2V0YygpID09ICgtMSkgKSBjbGVhcihpb3M6OmJhZGJpdCk7Cgly
ZXR1cm4gKnRoaXM7fQogICAgaXN0cmVhbSYgc2Nhbihjb25zdCBjaGFyICpmb3JtYXQgLi4uKTsK
ICAgIGlzdHJlYW0mIHZzY2FuKGNvbnN0IGNoYXIgKmZvcm1hdCwgX19nbnVjX3ZhX2xpc3QgIGFy
Z3MpOwoKCgoKCgogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihjaGFyKik7CiAgICBpc3RyZWFtJiBv
cGVyYXRvcj4+KHVuc2lnbmVkIGNoYXIqIHApIHsgcmV0dXJuIG9wZXJhdG9yPj4oKGNoYXIqKXAp
OyB9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNpZ25lZCBjaGFyKnApIHsgcmV0dXJuIG9wZXJh
dG9yPj4oKGNoYXIqKXApOyB9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGNoYXImIGMpOwogICAg
aXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBjaGFyJiBjKSB7cmV0dXJuIG9wZXJhdG9yPj4o
KGNoYXImKWMpO30KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oc2lnbmVkIGNoYXImIGMpIHtyZXR1
cm4gb3BlcmF0b3I+PigoY2hhciYpYyk7fQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihpbnQmKTsK
ICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyYpOwoKICAgIF9fZXh0ZW5zaW9uX18gaXN0cmVh
bSYgb3BlcmF0b3I+Pihsb25nIGxvbmcmKTsKICAgIF9fZXh0ZW5zaW9uX18gaXN0cmVhbSYgb3Bl
cmF0b3I+Pih1bnNpZ25lZCBsb25nIGxvbmcmKTsKCiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNo
b3J0Jik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIGludCYpOwogICAgaXN0cmVh
bSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBsb25nJik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVu
c2lnbmVkIHNob3J0Jik7CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihib29sJik7CgogICAgaXN0
cmVhbSYgb3BlcmF0b3I+PihmbG9hdCYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihkb3VibGUm
KTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyBkb3VibGUmKTsKICAgIGlzdHJlYW0mIG9w
ZXJhdG9yPj4oIF9fbWFuaXAgZnVuYykgeygqZnVuYykoKnRoaXMpOyByZXR1cm4gKnRoaXM7fQog
ICAgaXN0cmVhbSYgb3BlcmF0b3I+PihfX2ltYW5pcCBmdW5jKSB7IHJldHVybiAoKmZ1bmMpKCp0
aGlzKTsgfQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzdHJlYW1idWYqKTsKfTsKCmNsYXNzIGlv
c3RyZWFtIDogcHVibGljIGlzdHJlYW0sIHB1YmxpYyBvc3RyZWFtCnsKICBwdWJsaWM6CiAgICBp
b3N0cmVhbSgpIHsgfQogICAgaW9zdHJlYW0oc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSp0aWVkPSBf
X251bGwgKTsKfTsKCmNsYXNzIF9JT19pc3RyZWFtX3dpdGhhc3NpZ24gOiBwdWJsaWMgaXN0cmVh
bSB7CnB1YmxpYzoKICBfSU9faXN0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0oaXN0cmVhbSYp
OwogIF9JT19pc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShfSU9faXN0cmVhbV93aXRoYXNz
aWduJiByaHMpCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0YXRpY19jYXN0PGlzdHJlYW0mPiAo
cmhzKSk7IH0KfTsKCmNsYXNzIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24gOiBwdWJsaWMgb3N0cmVh
bSB7CnB1YmxpYzoKICBfSU9fb3N0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0ob3N0cmVhbSYp
OwogIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShfSU9fb3N0cmVhbV93aXRoYXNz
aWduJiByaHMpCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0YXRpY19jYXN0PG9zdHJlYW0mPiAo
cmhzKSk7IH0KfTsKCmV4dGVybiBfSU9faXN0cmVhbV93aXRoYXNzaWduIGNpbjsKIApleHRlcm4g
X0lPX29zdHJlYW1fd2l0aGFzc2lnbiBjb3V0LCBjZXJyOwoKZXh0ZXJuIF9JT19vc3RyZWFtX3dp
dGhhc3NpZ24gY2xvZwoKCgo7CgpleHRlcm4gaXN0cmVhbSYgbG9jayhpc3RyZWFtJiBpbnMpOwpl
eHRlcm4gaXN0cmVhbSYgdW5sb2NrKGlzdHJlYW0mIGlucyk7CmV4dGVybiBvc3RyZWFtJiBsb2Nr
KG9zdHJlYW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYgdW5sb2NrKG9zdHJlYW0mIG91dHMpOwoK
c3RydWN0IElvc3RyZWFtX2luaXQgeyB9IDsgICAKCmlubGluZSBpb3MmIGRlYyhpb3MmIGkpCnsg
aS5zZXRmKGlvczo6ZGVjLCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9
CmlubGluZSBpb3MmIGhleChpb3MmIGkpCnsgaS5zZXRmKGlvczo6aGV4LCBpb3M6OmRlY3xpb3M6
OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9CmlubGluZSBpb3MmIG9jdChpb3MmIGkpCnsgaS5z
ZXRmKGlvczo6b2N0LCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9Cn0g
IAoKCiMgNTMgIi91c3IvaW5jbHVkZS9nKystMi9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL2crKy0yL3N0bF9pdGVyYXRvci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCgogCgpzdHJ1Y3QgaW5wdXRfaXRlcmF0b3JfdGFnIHt9OwpzdHJ1Y3Qg
b3V0cHV0X2l0ZXJhdG9yX3RhZyB7fTsKc3RydWN0IGZvcndhcmRfaXRlcmF0b3JfdGFnIDogcHVi
bGljIGlucHV0X2l0ZXJhdG9yX3RhZyB7fTsKc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3Jf
dGFnIDogcHVibGljIGZvcndhcmRfaXRlcmF0b3JfdGFnIHt9OwpzdHJ1Y3QgcmFuZG9tX2FjY2Vz
c19pdGVyYXRvcl90YWcgOiBwdWJsaWMgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcge307Cgp0
ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRGlzdGFuY2U+IHN0cnVjdCBpbnB1dF9pdGVyYXRvciB7
CiAgdHlwZWRlZiBpbnB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRl
ZiBUICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIERpc3RhbmNlICAgICAg
ICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBUKiAgICAgICAgICAgICAgICAgcG9pbnRl
cjsKICB0eXBlZGVmIFQmICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Cn07CgpzdHJ1Y3Qgb3V0
cHV0X2l0ZXJhdG9yIHsKICB0eXBlZGVmIG91dHB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0
ZWdvcnk7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRl
ZiB2b2lkICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAg
ICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgcmVmZXJl
bmNlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIERpc3RhbmNlPiBzdHJ1Y3QgZm9yd2Fy
ZF9pdGVyYXRvciB7CiAgdHlwZWRlZiBmb3J3YXJkX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRl
Z29yeTsKICB0eXBlZGVmIFQgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRl
ZiBEaXN0YW5jZSAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBUKiAgICAg
ICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgVCYgICAgICAgICAgICAgICAgICAgcmVm
ZXJlbmNlOwp9OwoKCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBEaXN0YW5jZT4gc3RydWN0IGJp
ZGlyZWN0aW9uYWxfaXRlcmF0b3IgewogIHR5cGVkZWYgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90
YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBUICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgRGlzdGFuY2UgICAgICAgICAgICAgICAgICAgZGlmZmVy
ZW5jZV90eXBlOwogIHR5cGVkZWYgVCogICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsK
ICB0eXBlZGVmIFQmICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsKCnRlbXBs
YXRlIDxjbGFzcyBULCBjbGFzcyBEaXN0YW5jZT4gc3RydWN0IHJhbmRvbV9hY2Nlc3NfaXRlcmF0
b3IgewogIHR5cGVkZWYgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdv
cnk7CiAgdHlwZWRlZiBUICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5
cGVkZWYgRGlzdGFuY2UgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVk
ZWYgVCogICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIFQmICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsKCiMgOTMgIi91c3IvaW5jbHVkZS9nKyst
Mi9zdGxfaXRlcmF0b3IuaCIgMwoKCgoKdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgpzdHJ1Y3Qg
aXRlcmF0b3JfdHJhaXRzIHsKICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjppdGVyYXRvcl9j
YXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjp2
YWx1ZV90eXBlICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6
OmRpZmZlcmVuY2VfdHlwZSAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHR5cGVuYW1lIEl0
ZXJhdG9yOjpwb2ludGVyICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdHlwZW5hbWUgSXRl
cmF0b3I6OnJlZmVyZW5jZSAgICAgICAgIHJlZmVyZW5jZTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBU
PgpzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPFQqPiB7CiAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0
ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIFQgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBwdHJkaWZmX3QgICAgICAgICAgICAgICAg
ICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBUKiAgICAgICAgICAgICAgICAgICAgICAgICBw
b2ludGVyOwogIHR5cGVkZWYgVCYgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwp9
OwoKdGVtcGxhdGUgPGNsYXNzIFQ+CnN0cnVjdCBpdGVyYXRvcl90cmFpdHM8Y29uc3QgVCo+IHsK
ICB0eXBlZGVmIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5Owog
IHR5cGVkZWYgVCAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVm
IHB0cmRpZmZfdCAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIGNv
bnN0IFQqICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiBjb25zdCBUJiAgICAg
ICAgICAgICAgICAgICByZWZlcmVuY2U7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Cmlu
bGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29y
eQppdGVyYXRvcl9jYXRlZ29yeShjb25zdCBJdGVyYXRvciYpIHsKICB0eXBlZGVmIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IGNhdGVnb3J5Owog
IHJldHVybiBjYXRlZ29yeSgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+CmlubGluZSB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUqCmRpc3Rh
bmNlX3R5cGUoY29uc3QgSXRlcmF0b3ImKSB7CiAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSo+KDApOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgSXRlcmF0b3I+CmlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRl
cmF0b3I+Ojp2YWx1ZV90eXBlKgp2YWx1ZV90eXBlKGNvbnN0IEl0ZXJhdG9yJikgewogIHJldHVy
biBzdGF0aWNfY2FzdDx0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90
eXBlKj4oMCk7Cn0KCiMgMjI2ICIvdXNyL2luY2x1ZGUvZysrLTIvc3RsX2l0ZXJhdG9yLmgiIDMK
Cgp0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvciwgY2xhc3MgRGlzdGFuY2U+CmlubGluZSB2
b2lkIF9fZGlzdGFuY2UoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBE
aXN0YW5jZSYgbiwgCiAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKSB7
CiAgd2hpbGUgKGZpcnN0ICE9IGxhc3QpIHsgKytmaXJzdDsgKytuOyB9Cn0KCnRlbXBsYXRlIDxj
bGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgRGlzdGFuY2U+CmlubGluZSB2b2lkIF9f
ZGlzdGFuY2UoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9y
IGxhc3QsIAogICAgICAgICAgICAgICAgICAgICAgIERpc3RhbmNlJiBuLCByYW5kb21fYWNjZXNz
X2l0ZXJhdG9yX3RhZykgewogIG4gKz0gbGFzdCAtIGZpcnN0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
SW5wdXRJdGVyYXRvciwgY2xhc3MgRGlzdGFuY2U+CmlubGluZSB2b2lkIGRpc3RhbmNlKElucHV0
SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgRGlzdGFuY2UmIG4pIHsKICBfX2Rp
c3RhbmNlKGZpcnN0LCBsYXN0LCBuLCBpdGVyYXRvcl9jYXRlZ29yeShmaXJzdCkpOwp9CgoKCnRl
bXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgppbmxpbmUgaXRlcmF0b3JfdHJhaXRzPElucHV0
SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKX19kaXN0YW5jZShJbnB1dEl0ZXJhdG9yIGZpcnN0
LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIGlucHV0X2l0ZXJhdG9yX3RhZykgewogIGl0ZXJhdG9yX3Ry
YWl0czxJbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIG4gPSAwOwogIHdoaWxlIChmaXJz
dCAhPSBsYXN0KSB7CiAgICArK2ZpcnN0OyArK247CiAgfQogIHJldHVybiBuOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+CmlubGluZSBpdGVyYXRvcl90cmFpdHM8UmFu
ZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKX19kaXN0YW5jZShSYW5kb21BY2Nl
c3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbGFzdCwKICAgICAgICAgICBy
YW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykgewogIHJldHVybiBsYXN0IC0gZmlyc3Q7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgppbmxpbmUgaXRlcmF0b3JfdHJhaXRzPElucHV0
SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKZGlzdGFuY2UoSW5wdXRJdGVyYXRvciBmaXJzdCwg
SW5wdXRJdGVyYXRvciBsYXN0KSB7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
SW5wdXRJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IGNhdGVnb3J5OwogIHJldHVybiBfX2Rp
c3RhbmNlKGZpcnN0LCBsYXN0LCBjYXRlZ29yeSgpKTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgSW5w
dXRJdGVyYXRvciwgY2xhc3MgRGlzdGFuY2U+CmlubGluZSB2b2lkIF9fYWR2YW5jZShJbnB1dEl0
ZXJhdG9yJiBpLCBEaXN0YW5jZSBuLCBpbnB1dF9pdGVyYXRvcl90YWcpIHsKICB3aGlsZSAobi0t
KSArK2k7Cn0KCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCBjbGFz
cyBEaXN0YW5jZT4KaW5saW5lIHZvaWQgX19hZHZhbmNlKEJpZGlyZWN0aW9uYWxJdGVyYXRvciYg
aSwgRGlzdGFuY2UgbiwgCiAgICAgICAgICAgICAgICAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJh
dG9yX3RhZykgewogIGlmIChuID49IDApCiAgICB3aGlsZSAobi0tKSArK2k7CiAgZWxzZQogICAg
d2hpbGUgKG4rKykgLS1pOwp9CgoKCgoKdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJh
dG9yLCBjbGFzcyBEaXN0YW5jZT4KaW5saW5lIHZvaWQgX19hZHZhbmNlKFJhbmRvbUFjY2Vzc0l0
ZXJhdG9yJiBpLCBEaXN0YW5jZSBuLCAKICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbV9hY2Nl
c3NfaXRlcmF0b3JfdGFnKSB7CiAgaSArPSBuOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVy
YXRvciwgY2xhc3MgRGlzdGFuY2U+CmlubGluZSB2b2lkIGFkdmFuY2UoSW5wdXRJdGVyYXRvciYg
aSwgRGlzdGFuY2UgbikgewogIF9fYWR2YW5jZShpLCBuLCBpdGVyYXRvcl9jYXRlZ29yeShpKSk7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBDb250YWluZXI+CmNsYXNzIGJhY2tfaW5zZXJ0X2l0ZXJhdG9y
IHsKcHJvdGVjdGVkOgogIENvbnRhaW5lciogY29udGFpbmVyOwpwdWJsaWM6CiAgdHlwZWRlZiBv
dXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgdm9pZCAgICAg
ICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICBkaWZm
ZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHBvaW50ZXI7CiAgdHlw
ZWRlZiB2b2lkICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKCiAgZXhwbGljaXQgYmFja19pbnNl
cnRfaXRlcmF0b3IoQ29udGFpbmVyJiB4KSA6IGNvbnRhaW5lcigmeCkge30KICBiYWNrX2luc2Vy
dF9pdGVyYXRvcjxDb250YWluZXI+JgogIG9wZXJhdG9yPShjb25zdCB0eXBlbmFtZSBDb250YWlu
ZXI6OnZhbHVlX3R5cGUmIHZhbHVlKSB7IAogICAgY29udGFpbmVyLT5wdXNoX2JhY2sodmFsdWUp
OwogICAgcmV0dXJuICp0aGlzOwogIH0KICBiYWNrX2luc2VydF9pdGVyYXRvcjxDb250YWluZXI+
JiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQogIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPENv
bnRhaW5lcj4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQogIGJhY2tfaW5zZXJ0X2l0
ZXJhdG9yPENvbnRhaW5lcj4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQp9OwoK
IyAzMzcgIi91c3IvaW5jbHVkZS9nKystMi9zdGxfaXRlcmF0b3IuaCIgMwoKCnRlbXBsYXRlIDxj
bGFzcyBDb250YWluZXI+CmlubGluZSBiYWNrX2luc2VydF9pdGVyYXRvcjxDb250YWluZXI+IGJh
Y2tfaW5zZXJ0ZXIoQ29udGFpbmVyJiB4KSB7CiAgcmV0dXJuIGJhY2tfaW5zZXJ0X2l0ZXJhdG9y
PENvbnRhaW5lcj4oeCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDb250YWluZXI+CmNsYXNzIGZyb250
X2luc2VydF9pdGVyYXRvciB7CnByb3RlY3RlZDoKICBDb250YWluZXIqIGNvbnRhaW5lcjsKcHVi
bGljOgogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0
eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAg
ICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAg
ICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICByZWZlcmVuY2U7CgogIGV4
cGxpY2l0IGZyb250X2luc2VydF9pdGVyYXRvcihDb250YWluZXImIHgpIDogY29udGFpbmVyKCZ4
KSB7fQogIGZyb250X2luc2VydF9pdGVyYXRvcjxDb250YWluZXI+JgogIG9wZXJhdG9yPShjb25z
dCB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGUmIHZhbHVlKSB7IAogICAgY29udGFpbmVy
LT5wdXNoX2Zyb250KHZhbHVlKTsKICAgIHJldHVybiAqdGhpczsKICB9CiAgZnJvbnRfaW5zZXJ0
X2l0ZXJhdG9yPENvbnRhaW5lcj4mIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CiAgZnJv
bnRfaW5zZXJ0X2l0ZXJhdG9yPENvbnRhaW5lcj4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhp
czsgfQogIGZyb250X2luc2VydF9pdGVyYXRvcjxDb250YWluZXI+JiBvcGVyYXRvcisrKGludCkg
eyByZXR1cm4gKnRoaXM7IH0KfTsKCiMgMzc1ICIvdXNyL2luY2x1ZGUvZysrLTIvc3RsX2l0ZXJh
dG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgppbmxpbmUgZnJvbnRfaW5zZXJ0
X2l0ZXJhdG9yPENvbnRhaW5lcj4gZnJvbnRfaW5zZXJ0ZXIoQ29udGFpbmVyJiB4KSB7CiAgcmV0
dXJuIGZyb250X2luc2VydF9pdGVyYXRvcjxDb250YWluZXI+KHgpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgQ29udGFpbmVyPgpjbGFzcyBpbnNlcnRfaXRlcmF0b3Igewpwcm90ZWN0ZWQ6CiAgQ29udGFp
bmVyKiBjb250YWluZXI7CiAgdHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvciBpdGVyOwpwdWJs
aWM6CiAgdHlwZWRlZiBvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5
cGVkZWYgdm9pZCAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgdm9pZCAgICAg
ICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAg
IHBvaW50ZXI7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKCiAgaW5z
ZXJ0X2l0ZXJhdG9yKENvbnRhaW5lciYgeCwgdHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvciBp
KSAKICAgIDogY29udGFpbmVyKCZ4KSwgaXRlcihpKSB7fQogIGluc2VydF9pdGVyYXRvcjxDb250
YWluZXI+JgogIG9wZXJhdG9yPShjb25zdCB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGUm
IHZhbHVlKSB7IAogICAgaXRlciA9IGNvbnRhaW5lci0+aW5zZXJ0KGl0ZXIsIHZhbHVlKTsKICAg
ICsraXRlcjsKICAgIHJldHVybiAqdGhpczsKICB9CiAgaW5zZXJ0X2l0ZXJhdG9yPENvbnRhaW5l
cj4mIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CiAgaW5zZXJ0X2l0ZXJhdG9yPENvbnRh
aW5lcj4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQogIGluc2VydF9pdGVyYXRvcjxD
b250YWluZXI+JiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KfTsKCiMgNDE2ICIv
dXNyL2luY2x1ZGUvZysrLTIvc3RsX2l0ZXJhdG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgQ29u
dGFpbmVyLCBjbGFzcyBJdGVyYXRvcj4KaW5saW5lIGluc2VydF9pdGVyYXRvcjxDb250YWluZXI+
IGluc2VydGVyKENvbnRhaW5lciYgeCwgSXRlcmF0b3IgaSkgewogIHR5cGVkZWYgdHlwZW5hbWUg
Q29udGFpbmVyOjppdGVyYXRvciBpdGVyOwogIHJldHVybiBpbnNlcnRfaXRlcmF0b3I8Q29udGFp
bmVyPih4LCBpdGVyKGkpKTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0
b3IsIGNsYXNzIFQsIGNsYXNzIFJlZmVyZW5jZSA9IFQmLCAKICAgICAgICAgIGNsYXNzIERpc3Rh
bmNlID0gcHRyZGlmZl90PiAKCgoKCmNsYXNzIHJldmVyc2VfYmlkaXJlY3Rpb25hbF9pdGVyYXRv
ciB7CiAgdHlwZWRlZiByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3I8QmlkaXJlY3Rpb25h
bEl0ZXJhdG9yLCBULCBSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRGlzdGFuY2U+IHNlbGY7CnByb3RlY3RlZDoKICBCaWRpcmVjdGlvbmFsSXRlcmF0
b3IgY3VycmVudDsKcHVibGljOgogIHR5cGVkZWYgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcg
aXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBUICAgICAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZV90eXBlOwogIHR5cGVkZWYgRGlzdGFuY2UgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5j
ZV90eXBlOwogIHR5cGVkZWYgVCogICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0
eXBlZGVmIFJlZmVyZW5jZSAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKCiAgcmV2ZXJzZV9i
aWRpcmVjdGlvbmFsX2l0ZXJhdG9yKCkge30KICBleHBsaWNpdCByZXZlcnNlX2JpZGlyZWN0aW9u
YWxfaXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIHgpCiAgICA6IGN1cnJlbnQoeCkge30K
ICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYmFzZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnQ7IH0K
ICBSZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3QgewogICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9y
IHRtcCA9IGN1cnJlbnQ7CiAgICByZXR1cm4gKi0tdG1wOwogIH0KCiAgcG9pbnRlciBvcGVyYXRv
ci0+KCkgY29uc3QgeyByZXR1cm4gJihvcGVyYXRvciooKSk7IH0KCiAgc2VsZiYgb3BlcmF0b3Ir
KygpIHsKICAgIC0tY3VycmVudDsKICAgIHJldHVybiAqdGhpczsKICB9CiAgc2VsZiBvcGVyYXRv
cisrKGludCkgewogICAgc2VsZiB0bXAgPSAqdGhpczsKICAgIC0tY3VycmVudDsKICAgIHJldHVy
biB0bXA7CiAgfQogIHNlbGYmIG9wZXJhdG9yLS0oKSB7CiAgICArK2N1cnJlbnQ7CiAgICByZXR1
cm4gKnRoaXM7CiAgfQogIHNlbGYgb3BlcmF0b3ItLShpbnQpIHsKICAgIHNlbGYgdG1wID0gKnRo
aXM7CiAgICArK2N1cnJlbnQ7CiAgICByZXR1cm4gdG1wOwogIH0KfTsKCiMgNTAxICIvdXNyL2lu
Y2x1ZGUvZysrLTIvc3RsX2l0ZXJhdG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgQmlkaXJlY3Rp
b25hbEl0ZXJhdG9yLCBjbGFzcyBULCBjbGFzcyBSZWZlcmVuY2UsCiAgICAgICAgICBjbGFzcyBE
aXN0YW5jZT4KaW5saW5lIGJvb2wgb3BlcmF0b3I9PSgKICAgIGNvbnN0IHJldmVyc2VfYmlkaXJl
Y3Rpb25hbF9pdGVyYXRvcjxCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIFQsIFJlZmVyZW5jZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXN0YW5jZT4mIHgsIAogICAg
Y29uc3QgcmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yPEJpZGlyZWN0aW9uYWxJdGVyYXRv
ciwgVCwgUmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERpc3RhbmNlPiYgeSkgewogIHJldHVybiB4LmJhc2UoKSA9PSB5LmJhc2UoKTsKfQoKCgogCiAK
IAogCiAKCnRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KY2xhc3MgcmV2ZXJzZV9pdGVyYXRvciAK
ewpwcm90ZWN0ZWQ6CiAgSXRlcmF0b3IgY3VycmVudDsKcHVibGljOgogIHR5cGVkZWYgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnkKICAgICAgICAg
IGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0
ZXJhdG9yPjo6dmFsdWVfdHlwZQogICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICAgICAgICAg
ZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJh
dG9yPjo6cG9pbnRlcgogICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxJdGVyYXRvcj46OnJlZmVyZW5jZQogICAgICAgICAgcmVmZXJlbmNlOwoKICB0
eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yX3R5cGU7CiAgdHlwZWRlZiByZXZlcnNlX2l0ZXJhdG9y
PEl0ZXJhdG9yPiBzZWxmOwoKcHVibGljOgogIHJldmVyc2VfaXRlcmF0b3IoKSB7fQogIGV4cGxp
Y2l0IHJldmVyc2VfaXRlcmF0b3IoaXRlcmF0b3JfdHlwZSB4KSA6IGN1cnJlbnQoeCkge30KCiAg
cmV2ZXJzZV9pdGVyYXRvcihjb25zdCBzZWxmJiB4KSA6IGN1cnJlbnQoeC5jdXJyZW50KSB7fQoK
ICB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcj4KICByZXZlcnNlX2l0ZXJhdG9yKGNvbnN0IHJldmVyc2Vf
aXRlcmF0b3I8SXRlcj4mIHgpIDogY3VycmVudCh4LmN1cnJlbnQpIHt9CgogICAgCiAgaXRlcmF0
b3JfdHlwZSBiYXNlKCkgY29uc3QgeyByZXR1cm4gY3VycmVudDsgfQogIHJlZmVyZW5jZSBvcGVy
YXRvciooKSBjb25zdCB7CiAgICBJdGVyYXRvciB0bXAgPSBjdXJyZW50OwogICAgcmV0dXJuICot
LXRtcDsKICB9CgogIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICYob3BlcmF0
b3IqKCkpOyB9CgoKICBzZWxmJiBvcGVyYXRvcisrKCkgewogICAgLS1jdXJyZW50OwogICAgcmV0
dXJuICp0aGlzOwogIH0KICBzZWxmIG9wZXJhdG9yKysoaW50KSB7CiAgICBzZWxmIHRtcCA9ICp0
aGlzOwogICAgLS1jdXJyZW50OwogICAgcmV0dXJuIHRtcDsKICB9CiAgc2VsZiYgb3BlcmF0b3It
LSgpIHsKICAgICsrY3VycmVudDsKICAgIHJldHVybiAqdGhpczsKICB9CiAgc2VsZiBvcGVyYXRv
ci0tKGludCkgewogICAgc2VsZiB0bXAgPSAqdGhpczsKICAgICsrY3VycmVudDsKICAgIHJldHVy
biB0bXA7CiAgfQoKICBzZWxmIG9wZXJhdG9yKyhkaWZmZXJlbmNlX3R5cGUgbikgY29uc3Qgewog
ICAgcmV0dXJuIHNlbGYoY3VycmVudCAtIG4pOwogIH0KICBzZWxmJiBvcGVyYXRvcis9KGRpZmZl
cmVuY2VfdHlwZSBuKSB7CiAgICBjdXJyZW50IC09IG47CiAgICByZXR1cm4gKnRoaXM7CiAgfQog
IHNlbGYgb3BlcmF0b3ItKGRpZmZlcmVuY2VfdHlwZSBuKSBjb25zdCB7CiAgICByZXR1cm4gc2Vs
ZihjdXJyZW50ICsgbik7CiAgfQogIHNlbGYmIG9wZXJhdG9yLT0oZGlmZmVyZW5jZV90eXBlIG4p
IHsKICAgIGN1cnJlbnQgKz0gbjsKICAgIHJldHVybiAqdGhpczsKICB9CiAgcmVmZXJlbmNlIG9w
ZXJhdG9yW10oZGlmZmVyZW5jZV90eXBlIG4pIGNvbnN0IHsgcmV0dXJuICooKnRoaXMgKyBuKTsg
fSAgCn07IAogCnRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPEl0ZXJhdG9yPiYgeCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxJdGVyYXRvcj4mIHkpIHsKICByZXR1cm4geC5i
YXNlKCkgPT0geS5iYXNlKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KaW5saW5lIGJv
b2wgb3BlcmF0b3I8KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8SXRlcmF0b3I+JiB4LCAKICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8SXRlcmF0b3I+JiB5KSB7CiAg
cmV0dXJuIHkuYmFzZSgpIDwgeC5iYXNlKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4K
aW5saW5lIHR5cGVuYW1lIHJldmVyc2VfaXRlcmF0b3I8SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5
cGUKb3BlcmF0b3ItKGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8SXRlcmF0b3I+JiB4LCAKICAgICAg
ICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8SXRlcmF0b3I+JiB5KSB7CiAgcmV0dXJuIHkuYmFz
ZSgpIC0geC5iYXNlKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KaW5saW5lIHJldmVy
c2VfaXRlcmF0b3I8SXRlcmF0b3I+IApvcGVyYXRvcisocmV2ZXJzZV9pdGVyYXRvcjxJdGVyYXRv
cj46OmRpZmZlcmVuY2VfdHlwZSBuLAogICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxJ
dGVyYXRvcj4mIHgpIHsKICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcjxJdGVyYXRvcj4oeC5iYXNl
KCkgLSBuKTsKfQoKIyA3MzggIi91c3IvaW5jbHVkZS9nKystMi9zdGxfaXRlcmF0b3IuaCIgMwoK
CnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBEaXN0YW5jZSA9IHB0cmRpZmZfdD4gCmNsYXNzIGlz
dHJlYW1faXRlcmF0b3IgewogIGZyaWVuZCBib29sCiAgb3BlcmF0b3I9PSA8PiAgKGNvbnN0IGlz
dHJlYW1faXRlcmF0b3I8VCwgRGlzdGFuY2U+JiB4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8VCwgRGlzdGFuY2U+JiB5KTsKcHJvdGVj
dGVkOgogIGlzdHJlYW0qIHN0cmVhbTsKICBUIHZhbHVlOwogIGJvb2wgZW5kX21hcmtlcjsKICB2
b2lkIHJlYWQoKSB7CiAgICBlbmRfbWFya2VyID0gKCpzdHJlYW0pID8gdHJ1ZSA6IGZhbHNlOwog
ICAgaWYgKGVuZF9tYXJrZXIpICpzdHJlYW0gPj4gdmFsdWU7CiAgICBlbmRfbWFya2VyID0gKCpz
dHJlYW0pID8gdHJ1ZSA6IGZhbHNlOwogIH0KcHVibGljOgogIHR5cGVkZWYgaW5wdXRfaXRlcmF0
b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgVCAgICAgICAgICAgICAgICAgIHZh
bHVlX3R5cGU7CiAgdHlwZWRlZiBEaXN0YW5jZSAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwog
IHR5cGVkZWYgY29uc3QgVCogICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiBjb25zdCBUJiAg
ICAgICAgICAgcmVmZXJlbmNlOwoKICBpc3RyZWFtX2l0ZXJhdG9yKCkgOiBzdHJlYW0oJmNpbiks
IGVuZF9tYXJrZXIoZmFsc2UpIHt9CiAgaXN0cmVhbV9pdGVyYXRvcihpc3RyZWFtJiBzKSA6IHN0
cmVhbSgmcykgeyByZWFkKCk7IH0KICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1
cm4gdmFsdWU7IH0KCiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihvcGVy
YXRvciooKSk7IH0KCiAgaXN0cmVhbV9pdGVyYXRvcjxULCBEaXN0YW5jZT4mIG9wZXJhdG9yKyso
KSB7IAogICAgcmVhZCgpOyAKICAgIHJldHVybiAqdGhpczsKICB9CiAgaXN0cmVhbV9pdGVyYXRv
cjxULCBEaXN0YW5jZT4gb3BlcmF0b3IrKyhpbnQpICB7CiAgICBpc3RyZWFtX2l0ZXJhdG9yPFQs
IERpc3RhbmNlPiB0bXAgPSAqdGhpczsKICAgIHJlYWQoKTsKICAgIHJldHVybiB0bXA7CiAgfQp9
OwoKIyA3OTQgIi91c3IvaW5jbHVkZS9nKystMi9zdGxfaXRlcmF0b3IuaCIgMwoKCnRlbXBsYXRl
IDxjbGFzcyBULCBjbGFzcyBEaXN0YW5jZT4KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBp
c3RyZWFtX2l0ZXJhdG9yPFQsIERpc3RhbmNlPiYgeCwKICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBpc3RyZWFtX2l0ZXJhdG9yPFQsIERpc3RhbmNlPiYgeSkgewogIHJldHVybiB4LnN0cmVh
bSA9PSB5LnN0cmVhbSAmJiB4LmVuZF9tYXJrZXIgPT0geS5lbmRfbWFya2VyIHx8CiAgICAgICAg
IHguZW5kX21hcmtlciA9PSBmYWxzZSAmJiB5LmVuZF9tYXJrZXIgPT0gZmFsc2U7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBUPgpjbGFzcyBvc3RyZWFtX2l0ZXJhdG9yIHsKcHJvdGVjdGVkOgogIG9zdHJl
YW0qIHN0cmVhbTsKICBjb25zdCBjaGFyKiBzdHJpbmc7CnB1YmxpYzoKICB0eXBlZGVmIG91dHB1
dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiB2b2lkICAgICAgICAg
ICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIGRpZmZlcmVu
Y2VfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVm
IHZvaWQgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwoKICBvc3RyZWFtX2l0ZXJhdG9yKG9zdHJl
YW0mIHMpIDogc3RyZWFtKCZzKSwgc3RyaW5nKDApIHt9CiAgb3N0cmVhbV9pdGVyYXRvcihvc3Ry
ZWFtJiBzLCBjb25zdCBjaGFyKiBjKSA6IHN0cmVhbSgmcyksIHN0cmluZyhjKSAge30KICBvc3Ry
ZWFtX2l0ZXJhdG9yPFQ+JiBvcGVyYXRvcj0oY29uc3QgVCYgdmFsdWUpIHsgCiAgICAqc3RyZWFt
IDw8IHZhbHVlOwogICAgaWYgKHN0cmluZykgKnN0cmVhbSA8PCBzdHJpbmc7CiAgICByZXR1cm4g
KnRoaXM7CiAgfQogIG9zdHJlYW1faXRlcmF0b3I8VD4mIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0
aGlzOyB9CiAgb3N0cmVhbV9pdGVyYXRvcjxUPiYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlz
OyB9IAogIG9zdHJlYW1faXRlcmF0b3I8VD4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhp
czsgfSAKfTsKCiMgODM1ICIvdXNyL2luY2x1ZGUvZysrLTIvc3RsX2l0ZXJhdG9yLmgiIDMKCgog
CgoKCiAKIAogCiMgNTYgIi91c3IvaW5jbHVkZS9nKystMi9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoK
CiAKCnRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlcmF0b3IxLCBjbGFzcyBGb3J3YXJkSXRlcmF0
b3IyLCBjbGFzcyBUPgppbmxpbmUgdm9pZCBfX2l0ZXJfc3dhcChGb3J3YXJkSXRlcmF0b3IxIGEs
IEZvcndhcmRJdGVyYXRvcjIgYiwgVCopIHsKICBUIHRtcCA9ICphOwogICphID0gKmI7CiAgKmIg
PSB0bXA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlcmF0b3IxLCBjbGFzcyBGb3J3YXJk
SXRlcmF0b3IyPgppbmxpbmUgdm9pZCBpdGVyX3N3YXAoRm9yd2FyZEl0ZXJhdG9yMSBhLCBGb3J3
YXJkSXRlcmF0b3IyIGIpIHsKICBfX2l0ZXJfc3dhcChhLCBiLCB2YWx1ZV90eXBlKGEpKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZSB2b2lkIHN3YXAoVCYgYSwgVCYgYikgewogIFQgdG1w
ID0gYTsKICBhID0gYjsKICBiID0gdG1wOwp9CgoKCgoKCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxp
bmUgY29uc3QgVCYgbWluKGNvbnN0IFQmIGEsIGNvbnN0IFQmIGIpIHsKICByZXR1cm4gYiA8IGEg
PyBiIDogYTsKfQoKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZSBjb25zdCBUJiBtYXgoY29uc3Qg
VCYgYSwgY29uc3QgVCYgYikgewogIHJldHVybiAgYSA8IGIgPyBiIDogYTsKfQoKCgp0ZW1wbGF0
ZSA8Y2xhc3MgVCwgY2xhc3MgQ29tcGFyZT4KaW5saW5lIGNvbnN0IFQmIG1pbihjb25zdCBUJiBh
LCBjb25zdCBUJiBiLCBDb21wYXJlIGNvbXApIHsKICByZXR1cm4gY29tcChiLCBhKSA/IGIgOiBh
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQ29tcGFyZT4KaW5saW5lIGNvbnN0IFQmIG1h
eChjb25zdCBUJiBhLCBjb25zdCBUJiBiLCBDb21wYXJlIGNvbXApIHsKICByZXR1cm4gY29tcChh
LCBiKSA/IGIgOiBhOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvciwgY2xhc3MgT3V0
cHV0SXRlcmF0b3I+CmlubGluZSBPdXRwdXRJdGVyYXRvciBfX2NvcHkoSW5wdXRJdGVyYXRvciBm
aXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91
dHB1dEl0ZXJhdG9yIHJlc3VsdCwgaW5wdXRfaXRlcmF0b3JfdGFnKQp7CiAgZm9yICggOyBmaXJz
dCAhPSBsYXN0OyArK3Jlc3VsdCwgKytmaXJzdCkKICAgICpyZXN1bHQgPSAqZmlyc3Q7CiAgcmV0
dXJuIHJlc3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFz
cyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgRGlzdGFuY2U+CmlubGluZSBPdXRwdXRJdGVyYXRvcgpf
X2NvcHlfZChSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
bGFzdCwKICAgICAgICAgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBEaXN0YW5jZSopCnsKICBmb3Ig
KERpc3RhbmNlIG4gPSBsYXN0IC0gZmlyc3Q7IG4gPiAwOyAtLW4sICsrcmVzdWx0LCArK2ZpcnN0
KSAKICAgICpyZXN1bHQgPSAqZmlyc3Q7CiAgcmV0dXJuIHJlc3VsdDsKfQoKdGVtcGxhdGUgPGNs
YXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBPdXRwdXRJdGVyYXRvcj4KaW5saW5lIE91
dHB1dEl0ZXJhdG9yIApfX2NvcHkoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIGxhc3QsCiAgICAgICBPdXRwdXRJdGVyYXRvciByZXN1bHQsIHJhbmRvbV9h
Y2Nlc3NfaXRlcmF0b3JfdGFnKQp7CiAgcmV0dXJuIF9fY29weV9kKGZpcnN0LCBsYXN0LCByZXN1
bHQsIGRpc3RhbmNlX3R5cGUoZmlyc3QpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0
b3IsIGNsYXNzIE91dHB1dEl0ZXJhdG9yPgpzdHJ1Y3QgX19jb3B5X2Rpc3BhdGNoCnsKICBPdXRw
dXRJdGVyYXRvciBvcGVyYXRvcigpKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3Ig
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCkg
ewogICAgcmV0dXJuIF9fY29weShmaXJzdCwgbGFzdCwgcmVzdWx0LCBpdGVyYXRvcl9jYXRlZ29y
eShmaXJzdCkpOwogIH0KfTsKCgoKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZSBUKiBfX2NvcHlf
dChjb25zdCBUKiBmaXJzdCwgY29uc3QgVCogbGFzdCwgVCogcmVzdWx0LCBfX3RydWVfdHlwZSkg
ewogIG1lbW1vdmUocmVzdWx0LCBmaXJzdCwgc2l6ZW9mKFQpICogKGxhc3QgLSBmaXJzdCkpOwog
IHJldHVybiByZXN1bHQgKyAobGFzdCAtIGZpcnN0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIFQ+Cmlu
bGluZSBUKiBfX2NvcHlfdChjb25zdCBUKiBmaXJzdCwgY29uc3QgVCogbGFzdCwgVCogcmVzdWx0
LCBfX2ZhbHNlX3R5cGUpIHsKICByZXR1cm4gX19jb3B5X2QoZmlyc3QsIGxhc3QsIHJlc3VsdCwg
KHB0cmRpZmZfdCopIDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4Kc3RydWN0IF9fY29weV9kaXNw
YXRjaDxUKiwgVCo+CnsKICBUKiBvcGVyYXRvcigpKFQqIGZpcnN0LCBUKiBsYXN0LCBUKiByZXN1
bHQpIHsKICAgIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxUPjo6aGFzX3RyaXZpYWxf
YXNzaWdubWVudF9vcGVyYXRvciB0OyAKICAgIHJldHVybiBfX2NvcHlfdChmaXJzdCwgbGFzdCwg
cmVzdWx0LCB0KCkpOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBUPgpzdHJ1Y3QgX19jb3B5X2Rp
c3BhdGNoPGNvbnN0IFQqLCBUKj4KewogIFQqIG9wZXJhdG9yKCkoY29uc3QgVCogZmlyc3QsIGNv
bnN0IFQqIGxhc3QsIFQqIHJlc3VsdCkgewogICAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJh
aXRzPFQ+OjpoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yIHQ7IAogICAgcmV0dXJuIF9f
Y29weV90KGZpcnN0LCBsYXN0LCByZXN1bHQsIHQoKSk7CiAgfQp9OwoKCgp0ZW1wbGF0ZSA8Y2xh
c3MgSW5wdXRJdGVyYXRvciwgY2xhc3MgT3V0cHV0SXRlcmF0b3I+CmlubGluZSBPdXRwdXRJdGVy
YXRvciBjb3B5KElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQp7CiAgcmV0dXJuIF9f
Y29weV9kaXNwYXRjaDxJbnB1dEl0ZXJhdG9yLE91dHB1dEl0ZXJhdG9yPigpKGZpcnN0LCBsYXN0
LCByZXN1bHQpOwp9CgppbmxpbmUgY2hhciogY29weShjb25zdCBjaGFyKiBmaXJzdCwgY29uc3Qg
Y2hhciogbGFzdCwgY2hhciogcmVzdWx0KSB7CiAgbWVtbW92ZShyZXN1bHQsIGZpcnN0LCBsYXN0
IC0gZmlyc3QpOwogIHJldHVybiByZXN1bHQgKyAobGFzdCAtIGZpcnN0KTsKfQoKaW5saW5lIHdj
aGFyX3QqIGNvcHkoY29uc3Qgd2NoYXJfdCogZmlyc3QsIGNvbnN0IHdjaGFyX3QqIGxhc3QsCiAg
ICAgICAgICAgICAgICAgICAgIHdjaGFyX3QqIHJlc3VsdCkgewogIG1lbW1vdmUocmVzdWx0LCBm
aXJzdCwgc2l6ZW9mKHdjaGFyX3QpICogKGxhc3QgLSBmaXJzdCkpOwogIHJldHVybiByZXN1bHQg
KyAobGFzdCAtIGZpcnN0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRv
cjEsIGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjI+CmlubGluZSBCaWRpcmVjdGlvbmFsSXRl
cmF0b3IyIF9fY29weV9iYWNrd2FyZChCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGZpcnN0LCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZGlyZWN0aW9uYWxJ
dGVyYXRvcjEgbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IyIHJlc3VsdCkgewogIHdoaWxlIChmaXJzdCAhPSBs
YXN0KSAqLS1yZXN1bHQgPSAqLS1sYXN0OwogIHJldHVybiByZXN1bHQ7Cn0KCgp0ZW1wbGF0ZSA8
Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSwgY2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9y
Mj4Kc3RydWN0IF9fY29weV9iYWNrd2FyZF9kaXNwYXRjaAp7CiAgQmlkaXJlY3Rpb25hbEl0ZXJh
dG9yMiBvcGVyYXRvcigpKEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgZmlyc3QsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGxhc3QsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3Iy
IHJlc3VsdCkgewogICAgcmV0dXJuIF9fY29weV9iYWNrd2FyZChmaXJzdCwgbGFzdCwgcmVzdWx0
KTsKICB9Cn07CgoKCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUgVCogX19jb3B5X2JhY2t3YXJk
X3QoY29uc3QgVCogZmlyc3QsIGNvbnN0IFQqIGxhc3QsIFQqIHJlc3VsdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdHJ1ZV90eXBlKSB7CiAgY29uc3QgcHRyZGlmZl90IE4gPSBsYXN0
IC0gZmlyc3Q7CiAgbWVtbW92ZShyZXN1bHQgLSBOLCBmaXJzdCwgc2l6ZW9mKFQpICogTik7CiAg
cmV0dXJuIHJlc3VsdCAtIE47Cn0KCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUgVCogX19jb3B5
X2JhY2t3YXJkX3QoY29uc3QgVCogZmlyc3QsIGNvbnN0IFQqIGxhc3QsIFQqIHJlc3VsdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fZmFsc2VfdHlwZSkgewogIHJldHVybiBfX2NvcHlf
YmFja3dhcmQoZmlyc3QsIGxhc3QsIHJlc3VsdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBUPgpzdHJ1
Y3QgX19jb3B5X2JhY2t3YXJkX2Rpc3BhdGNoPFQqLCBUKj4KewogIFQqIG9wZXJhdG9yKCkoVCog
Zmlyc3QsIFQqIGxhc3QsIFQqIHJlc3VsdCkgewogICAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVf
dHJhaXRzPFQ+OjpoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yIHQ7IAogICAgcmV0dXJu
IF9fY29weV9iYWNrd2FyZF90KGZpcnN0LCBsYXN0LCByZXN1bHQsIHQoKSk7CiAgfQp9OwoKdGVt
cGxhdGUgPGNsYXNzIFQ+CnN0cnVjdCBfX2NvcHlfYmFja3dhcmRfZGlzcGF0Y2g8Y29uc3QgVCos
IFQqPgp7CiAgVCogb3BlcmF0b3IoKShjb25zdCBUKiBmaXJzdCwgY29uc3QgVCogbGFzdCwgVCog
cmVzdWx0KSB7CiAgICB0eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8VD46Omhhc190cml2
aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3IgdDsgCiAgICByZXR1cm4gX19jb3B5X2JhY2t3YXJkX3Qo
Zmlyc3QsIGxhc3QsIHJlc3VsdCwgdCgpKTsKICB9Cn07CgoKCnRlbXBsYXRlIDxjbGFzcyBCaWRp
cmVjdGlvbmFsSXRlcmF0b3IxLCBjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IyPgppbmxpbmUg
QmlkaXJlY3Rpb25hbEl0ZXJhdG9yMiBjb3B5X2JhY2t3YXJkKEJpZGlyZWN0aW9uYWxJdGVyYXRv
cjEgZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJp
ZGlyZWN0aW9uYWxJdGVyYXRvcjEgbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMiByZXN1bHQpIHsKICByZXR1cm4g
X19jb3B5X2JhY2t3YXJkX2Rpc3BhdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMj4oKShmaXJz
dCwgbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yLCBj
bGFzcyBTaXplLCBjbGFzcyBPdXRwdXRJdGVyYXRvcj4KcGFpcjxJbnB1dEl0ZXJhdG9yLCBPdXRw
dXRJdGVyYXRvcj4gX19jb3B5X24oSW5wdXRJdGVyYXRvciBmaXJzdCwgU2l6ZSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Ig
cmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1
dF9pdGVyYXRvcl90YWcpIHsKICBmb3IgKCA7IGNvdW50ID4gMDsgLS1jb3VudCwgKytmaXJzdCwg
KytyZXN1bHQpCiAgICAqcmVzdWx0ID0gKmZpcnN0OwogIHJldHVybiBwYWlyPElucHV0SXRlcmF0
b3IsIE91dHB1dEl0ZXJhdG9yPihmaXJzdCwgcmVzdWx0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIFJh
bmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBTaXplLCBjbGFzcyBPdXRwdXRJdGVyYXRvcj4KaW5s
aW5lIHBhaXI8UmFuZG9tQWNjZXNzSXRlcmF0b3IsIE91dHB1dEl0ZXJhdG9yPgpfX2NvcHlfbihS
YW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgU2l6ZSBjb3VudCwKICAgICAgICAgT3V0cHV0SXRl
cmF0b3IgcmVzdWx0LAogICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykgewogIFJh
bmRvbUFjY2Vzc0l0ZXJhdG9yIGxhc3QgPSBmaXJzdCArIGNvdW50OwogIHJldHVybiBwYWlyPFJh
bmRvbUFjY2Vzc0l0ZXJhdG9yLCBPdXRwdXRJdGVyYXRvcj4obGFzdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkoZmlyc3QsIGxhc3QsIHJl
c3VsdCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvciwgY2xhc3MgU2l6ZSwgY2xh
c3MgT3V0cHV0SXRlcmF0b3I+CmlubGluZSBwYWlyPElucHV0SXRlcmF0b3IsIE91dHB1dEl0ZXJh
dG9yPgpjb3B5X24oSW5wdXRJdGVyYXRvciBmaXJzdCwgU2l6ZSBjb3VudCwKICAgICAgIE91dHB1
dEl0ZXJhdG9yIHJlc3VsdCkgewogIHJldHVybiBfX2NvcHlfbihmaXJzdCwgY291bnQsIHJlc3Vs
dCwgaXRlcmF0b3JfY2F0ZWdvcnkoZmlyc3QpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJ
dGVyYXRvciwgY2xhc3MgVD4Kdm9pZCBmaWxsKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2Fy
ZEl0ZXJhdG9yIGxhc3QsIGNvbnN0IFQmIHZhbHVlKSB7CiAgZm9yICggOyBmaXJzdCAhPSBsYXN0
OyArK2ZpcnN0KQogICAgKmZpcnN0ID0gdmFsdWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJ
dGVyYXRvciwgY2xhc3MgU2l6ZSwgY2xhc3MgVD4KT3V0cHV0SXRlcmF0b3IgZmlsbF9uKE91dHB1
dEl0ZXJhdG9yIGZpcnN0LCBTaXplIG4sIGNvbnN0IFQmIHZhbHVlKSB7CiAgZm9yICggOyBuID4g
MDsgLS1uLCArK2ZpcnN0KQogICAgKmZpcnN0ID0gdmFsdWU7CiAgcmV0dXJuIGZpcnN0Owp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcjEsIGNsYXNzIElucHV0SXRlcmF0b3IyPgpwYWly
PElucHV0SXRlcmF0b3IxLCBJbnB1dEl0ZXJhdG9yMj4gbWlzbWF0Y2goSW5wdXRJdGVyYXRvcjEg
Zmlyc3QxLAoJCQkJCSAgICAgIElucHV0SXRlcmF0b3IxIGxhc3QxLAoJCQkJCSAgICAgIElucHV0
SXRlcmF0b3IyIGZpcnN0MikgewogIHdoaWxlIChmaXJzdDEgIT0gbGFzdDEgJiYgKmZpcnN0MSA9
PSAqZmlyc3QyKSB7CiAgICArK2ZpcnN0MTsKICAgICsrZmlyc3QyOwogIH0KICByZXR1cm4gcGFp
cjxJbnB1dEl0ZXJhdG9yMSwgSW5wdXRJdGVyYXRvcjI+KGZpcnN0MSwgZmlyc3QyKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3IxLCBjbGFzcyBJbnB1dEl0ZXJhdG9yMiwgY2xhc3Mg
QmluYXJ5UHJlZGljYXRlPgpwYWlyPElucHV0SXRlcmF0b3IxLCBJbnB1dEl0ZXJhdG9yMj4gbWlz
bWF0Y2goSW5wdXRJdGVyYXRvcjEgZmlyc3QxLAoJCQkJCSAgICAgIElucHV0SXRlcmF0b3IxIGxh
c3QxLAoJCQkJCSAgICAgIElucHV0SXRlcmF0b3IyIGZpcnN0MiwKCQkJCQkgICAgICBCaW5hcnlQ
cmVkaWNhdGUgYmluYXJ5X3ByZWQpIHsKICB3aGlsZSAoZmlyc3QxICE9IGxhc3QxICYmIGJpbmFy
eV9wcmVkKCpmaXJzdDEsICpmaXJzdDIpKSB7CiAgICArK2ZpcnN0MTsKICAgICsrZmlyc3QyOwog
IH0KICByZXR1cm4gcGFpcjxJbnB1dEl0ZXJhdG9yMSwgSW5wdXRJdGVyYXRvcjI+KGZpcnN0MSwg
Zmlyc3QyKTsKfQoKdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3IxLCBjbGFzcyBJbnB1dEl0
ZXJhdG9yMj4KaW5saW5lIGJvb2wgZXF1YWwoSW5wdXRJdGVyYXRvcjEgZmlyc3QxLCBJbnB1dEl0
ZXJhdG9yMSBsYXN0MSwKCQkgIElucHV0SXRlcmF0b3IyIGZpcnN0MikgewogIGZvciAoIDsgZmly
c3QxICE9IGxhc3QxOyArK2ZpcnN0MSwgKytmaXJzdDIpCiAgICBpZiAoKmZpcnN0MSAhPSAqZmly
c3QyKQogICAgICByZXR1cm4gZmFsc2U7CiAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBJbnB1dEl0ZXJhdG9yMSwgY2xhc3MgSW5wdXRJdGVyYXRvcjIsIGNsYXNzIEJpbmFyeVByZWRp
Y2F0ZT4KaW5saW5lIGJvb2wgZXF1YWwoSW5wdXRJdGVyYXRvcjEgZmlyc3QxLCBJbnB1dEl0ZXJh
dG9yMSBsYXN0MSwKCQkgIElucHV0SXRlcmF0b3IyIGZpcnN0MiwgQmluYXJ5UHJlZGljYXRlIGJp
bmFyeV9wcmVkKSB7CiAgZm9yICggOyBmaXJzdDEgIT0gbGFzdDE7ICsrZmlyc3QxLCArK2ZpcnN0
MikKICAgIGlmICghYmluYXJ5X3ByZWQoKmZpcnN0MSwgKmZpcnN0MikpCiAgICAgIHJldHVybiBm
YWxzZTsKICByZXR1cm4gdHJ1ZTsKfQoKdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3IxLCBj
bGFzcyBJbnB1dEl0ZXJhdG9yMj4KYm9vbCBsZXhpY29ncmFwaGljYWxfY29tcGFyZShJbnB1dEl0
ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLAoJCQkgICAgIElucHV0SXRlcmF0
b3IyIGZpcnN0MiwgSW5wdXRJdGVyYXRvcjIgbGFzdDIpIHsKICBmb3IgKCA7IGZpcnN0MSAhPSBs
YXN0MSAmJiBmaXJzdDIgIT0gbGFzdDI7ICsrZmlyc3QxLCArK2ZpcnN0MikgewogICAgaWYgKCpm
aXJzdDEgPCAqZmlyc3QyKQogICAgICByZXR1cm4gdHJ1ZTsKICAgIGlmICgqZmlyc3QyIDwgKmZp
cnN0MSkKICAgICAgcmV0dXJuIGZhbHNlOwogIH0KICByZXR1cm4gZmlyc3QxID09IGxhc3QxICYm
IGZpcnN0MiAhPSBsYXN0MjsKfQoKdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3IxLCBjbGFz
cyBJbnB1dEl0ZXJhdG9yMiwgY2xhc3MgQ29tcGFyZT4KYm9vbCBsZXhpY29ncmFwaGljYWxfY29t
cGFyZShJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLAoJCQkgICAg
IElucHV0SXRlcmF0b3IyIGZpcnN0MiwgSW5wdXRJdGVyYXRvcjIgbGFzdDIsCgkJCSAgICAgQ29t
cGFyZSBjb21wKSB7CiAgZm9yICggOyBmaXJzdDEgIT0gbGFzdDEgJiYgZmlyc3QyICE9IGxhc3Qy
OyArK2ZpcnN0MSwgKytmaXJzdDIpIHsKICAgIGlmIChjb21wKCpmaXJzdDEsICpmaXJzdDIpKQog
ICAgICByZXR1cm4gdHJ1ZTsKICAgIGlmIChjb21wKCpmaXJzdDIsICpmaXJzdDEpKQogICAgICBy
ZXR1cm4gZmFsc2U7CiAgfQogIHJldHVybiBmaXJzdDEgPT0gbGFzdDEgJiYgZmlyc3QyICE9IGxh
c3QyOwp9CgppbmxpbmUgYm9vbCAKbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoY29uc3QgdW5zaWdu
ZWQgY2hhciogZmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyKiBsYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciog
Zmlyc3QyLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBsYXN0
MikKewogIGNvbnN0IHNpemVfdCBsZW4xID0gbGFzdDEgLSBmaXJzdDE7CiAgY29uc3Qgc2l6ZV90
IGxlbjIgPSBsYXN0MiAtIGZpcnN0MjsKICBjb25zdCBpbnQgcmVzdWx0ID0gbWVtY21wKGZpcnN0
MSwgZmlyc3QyLCBtaW4obGVuMSwgbGVuMikpOwogIHJldHVybiByZXN1bHQgIT0gMCA/IHJlc3Vs
dCA8IDAgOiBsZW4xIDwgbGVuMjsKfQoKaW5saW5lIGJvb2wgbGV4aWNvZ3JhcGhpY2FsX2NvbXBh
cmUoY29uc3QgY2hhciogZmlyc3QxLCBjb25zdCBjaGFyKiBsYXN0MSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlyc3QyLCBjb25zdCBjaGFyKiBsYXN0
MikKewoKICByZXR1cm4gbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoKGNvbnN0IHNpZ25lZCBjaGFy
KikgZmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVk
IGNoYXIqKSBsYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHNp
Z25lZCBjaGFyKikgZmlyc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29u
c3Qgc2lnbmVkIGNoYXIqKSBsYXN0Mik7CgoKCgoKCn0KCnRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0
ZXJhdG9yMSwgY2xhc3MgSW5wdXRJdGVyYXRvcjI+CmludCBsZXhpY29ncmFwaGljYWxfY29tcGFy
ZV8zd2F5KElucHV0SXRlcmF0b3IxIGZpcnN0MSwgSW5wdXRJdGVyYXRvcjEgbGFzdDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IyIGZpcnN0MiwgSW5wdXRJ
dGVyYXRvcjIgbGFzdDIpCnsKICB3aGlsZSAoZmlyc3QxICE9IGxhc3QxICYmIGZpcnN0MiAhPSBs
YXN0MikgewogICAgaWYgKCpmaXJzdDEgPCAqZmlyc3QyKSByZXR1cm4gLTE7CiAgICBpZiAoKmZp
cnN0MiA8ICpmaXJzdDEpIHJldHVybiAxOwogICAgKytmaXJzdDE7ICsrZmlyc3QyOwogIH0KICBp
ZiAoZmlyc3QyID09IGxhc3QyKSB7CiAgICByZXR1cm4gIShmaXJzdDEgPT0gbGFzdDEpOwogIH0g
ZWxzZSB7CiAgICByZXR1cm4gLTE7CiAgfQp9CgppbmxpbmUgaW50CmxleGljb2dyYXBoaWNhbF9j
b21wYXJlXzN3YXkoY29uc3QgdW5zaWduZWQgY2hhciogZmlyc3QxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGxhc3QxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGZpcnN0MiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBsYXN0MikKewogIGNvbnN0IHB0cmRp
ZmZfdCBsZW4xID0gbGFzdDEgLSBmaXJzdDE7CiAgY29uc3QgcHRyZGlmZl90IGxlbjIgPSBsYXN0
MiAtIGZpcnN0MjsKICBjb25zdCBpbnQgcmVzdWx0ID0gbWVtY21wKGZpcnN0MSwgZmlyc3QyLCBt
aW4obGVuMSwgbGVuMikpOwogIHJldHVybiByZXN1bHQgIT0gMCA/IHJlc3VsdCA6IChsZW4xID09
IGxlbjIgPyAwIDogKGxlbjEgPCBsZW4yID8gLTEgOiAxKSk7Cn0KCmlubGluZSBpbnQgbGV4aWNv
Z3JhcGhpY2FsX2NvbXBhcmVfM3dheShjb25zdCBjaGFyKiBmaXJzdDEsIGNvbnN0IGNoYXIqIGxh
c3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
Zmlyc3QyLCBjb25zdCBjaGFyKiBsYXN0MikKewoKICByZXR1cm4gbGV4aWNvZ3JhcGhpY2FsX2Nv
bXBhcmVfM3dheSgKCQkJCShjb25zdCBzaWduZWQgY2hhciopIGZpcnN0MSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBsYXN0MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBmaXJzdDIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHNpZ25lZCBjaGFyKikgbGFzdDIpOwoK
CgoKCgp9CgogCgoKCiAKIAogCiMgMzAgIi91c3IvaW5jbHVkZS9nKystMi92ZWN0b3IiIDIgMwoK
IyAxICIvdXNyL2luY2x1ZGUvZysrLTIvc3RsX2FsbG9jLmgiIDEgMwogCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3Iv
bGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKIyAzNDIgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3Mt
Mi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgojIDU2ICIvdXNyL2luY2x1ZGUvZysrLTIvc3Rs
X2FsbG9jLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCiMgMzIgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwoKCgoKCiAKCgoK
CiMgNTYgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwoKCmV4dGVybiAiQyIgeyAKCiAKZXh0ZXJu
IHZvaWQgX19hc3NlcnRfZmFpbCAgKF9fY29uc3QgY2hhciAqX19hc3NlcnRpb24sCgkJCQlfX2Nv
bnN0IGNoYXIgKl9fZmlsZSwKCQkJCXVuc2lnbmVkIGludCBfX2xpbmUsCgkJCQlfX2NvbnN0IGNo
YXIgKl9fZnVuY3Rpb24pICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1
cm5fXykpOwoKIApleHRlcm4gdm9pZCBfX2Fzc2VydF9wZXJyb3JfZmFpbCAgKGludCBfX2Vycm51
bSwKCQkJCSAgICAgICBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKCQkJCSAgICAgICB1bnNpZ25lZCBp
bnQgX19saW5lLAoJCQkJICAgICAgIF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikgIHRocm93ICgp
ICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7Cgp9IAoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDU5ICIvdXNyL2luY2x1ZGUvZysrLTIvc3RsX2FsbG9j
LmgiIDIgMwoKCgoKCgoKCgoKCiAgICAgCiAgICAgCiAgICAgCiMgMSAiL3Vzci9pbmNsdWRlL3B0
aHJlYWQuaCIgMSAzCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCgoKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvc2NoZWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCiAKCgoKCgoKCgoKCgogCnN0cnVjdCBzY2hlZF9wYXJhbQogIHsKICAgIGludCBz
Y2hlZF9wcmlvcml0eTsKICB9OwoKZXh0ZXJuICJDIiB7IAoKIAoKZXh0ZXJuIGludCBjbG9uZSAg
KGludCAoKl9fZm4pICh2b2lkICpfX2FyZyksIHZvaWQgKl9fY2hpbGRfc3RhY2ssCgkJICAgICAg
IGludCBfX2ZsYWdzLCB2b2lkICpfX2FyZykgIHRocm93ICgpICA7CgoKfSAKCgoKCgoKIApzdHJ1
Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBzY2hlZF9wcmlvcml0eTsKICB9OwoKCiMgMzIg
Ii91c3IvaW5jbHVkZS9zY2hlZC5oIiAyIDMKCgpleHRlcm4gIkMiIHsgCgogCmV4dGVybiBpbnQg
X19zY2hlZF9zZXRwYXJhbSAgKF9fcGlkX3QgX19waWQsCgkJCQkgIF9fY29uc3Qgc3RydWN0IHNj
aGVkX3BhcmFtICpfX3BhcmFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBzY2hlZF9zZXRwYXJh
bSAgKF9fcGlkX3QgX19waWQsCgkJCQlfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJh
bSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgX19zY2hlZF9nZXRwYXJhbSAgKF9fcGlkX3Qg
X19waWQsIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93ICgpICA7CmV4dGVybiBp
bnQgc2NoZWRfZ2V0cGFyYW0gIChfX3BpZF90IF9fcGlkLCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9f
cGFyYW0pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9fc2NoZWRfc2V0c2NoZWR1bGVyICAo
X19waWRfdCBfX3BpZCwgaW50IF9fcG9saWN5LAoJCQkJICAgICAgX19jb25zdCBzdHJ1Y3Qgc2No
ZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNjaGVkX3NldHNjaGVk
dWxlciAgKF9fcGlkX3QgX19waWQsIGludCBfX3BvbGljeSwKCQkJCSAgICBfX2NvbnN0IHN0cnVj
dCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgX19zY2hl
ZF9nZXRzY2hlZHVsZXIgIChfX3BpZF90IF9fcGlkKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBz
Y2hlZF9nZXRzY2hlZHVsZXIgIChfX3BpZF90IF9fcGlkKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJu
IGludCBfX3NjaGVkX3lpZWxkICAodm9pZCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgc2NoZWRf
eWllbGQgICh2b2lkKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3NjaGVkX2dldF9wcmlv
cml0eV9tYXggIChpbnQgX19hbGdvcml0aG0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNjaGVk
X2dldF9wcmlvcml0eV9tYXggIChpbnQgX19hbGdvcml0aG0pICB0aHJvdyAoKSAgOwoKIApleHRl
cm4gaW50IF9fc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiAgKGludCBfX2FsZ29yaXRobSkgIHRocm93
ICgpICA7CmV4dGVybiBpbnQgc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiAgKGludCBfX2FsZ29yaXRo
bSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgX19zY2hlZF9ycl9nZXRfaW50ZXJ2YWwgIChf
X3BpZF90IF9fcGlkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fdCkgIHRocm93ICgpICA7CmV4dGVybiBp
bnQgc2NoZWRfcnJfZ2V0X2ludGVydmFsICAoX19waWRfdCBfX3BpZCwgc3RydWN0IHRpbWVzcGVj
ICpfX3QpICB0aHJvdyAoKSAgOwoKfSAKCgojIDIwICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAy
IDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsgCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3Nl
dC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvYml0cy9zaWdz
ZXQuaCIgMwoKCgogCgoKCgoKIyAxMjUgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzCgoj
IDMzICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMwoKCiAKCgoKCgoKCgoKCgoKCnR5cGVkZWYg
X19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKIyAzNTIgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMwoK
Cn0gCgoKIyAyNCAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAxIDMKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKCgoK
CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoK
CgoKCgojIDYyICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzCgoKIyA3MyAiL3Vzci9pbmNs
dWRlL2JpdHMvc2NoZWQuaCIgMwoKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVz
LmgiIDIgMwoKCiAKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1
czsgICAgICAgICAgICAgCiAgaW50IF9fc3BpbmxvY2s7ICAgICAgICAgICAgICAgIAp9OwoKCiAK
dHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9kZXNjcjsKCgoK
CiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3NjaGVkcG9s
aWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19pbmhlcml0
c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBfX3N0YWNr
YWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXplOwp9IHB0
aHJlYWRfYXR0cl90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0
bG9jayBfX2NfbG9jazsgIAogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOyAgICAgICAgIAp9
IHB0aHJlYWRfY29uZF90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9IHB0
aHJlYWRfY29uZGF0dHJfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsK
CgogCiAKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOyAgICAgICAgICAgICAg
ICAKICBpbnQgX19tX2NvdW50OyAgICAgICAgICAgICAgICAgICAKICBfcHRocmVhZF9kZXNjciBf
X21fb3duZXI7ICAgICAgICAKICBpbnQgX19tX2tpbmQ7ICAgICAgICAgICAgICAgICAgICAKICBz
dHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7ICAKfSBwdGhyZWFkX211dGV4X3Q7CgoK
IAp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRy
X3Q7CgoKIAp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgojIDExNiAiL3Vzci9pbmNsdWRl
L2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0
aHJlYWRfdDsKCgojIDI1ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCgoKZXh0ZXJuICJD
IiB7IAoKIAoKCgoKCgoKCgoKCgoKCgoKIAoKZW51bQp7CiAgUFRIUkVBRF9DUkVBVEVfSk9JTkFC
TEUsCgogIFBUSFJFQURfQ1JFQVRFX0RFVEFDSEVECgp9OwoKZW51bQp7CiAgUFRIUkVBRF9JTkhF
UklUX1NDSEVELAoKICBQVEhSRUFEX0VYUExJQ0lUX1NDSEVECgp9OwoKZW51bQp7CiAgUFRIUkVB
RF9TQ09QRV9TWVNURU0sCgogIFBUSFJFQURfU0NPUEVfUFJPQ0VTUwoKfTsKCmVudW0KewogIFBU
SFJFQURfTVVURVhfRkFTVF9OUCwKICBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUCwKICBQVEhS
RUFEX01VVEVYX0VSUk9SQ0hFQ0tfTlAKCgoKCgoKCn07CgplbnVtCnsKICBQVEhSRUFEX1BST0NF
U1NfUFJJVkFURSwKCiAgUFRIUkVBRF9QUk9DRVNTX1NIQVJFRAoKfTsKCgoKCgoKCgoKCgoKIAoK
c3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyCnsKICB2b2lkICgqX19yb3V0aW5lKSAgKHZv
aWQgKikgIDsJICAgCiAgdm9pZCAqX19hcmc7CQkJCSAgIAogIGludCBfX2NhbmNlbHR5cGU7CQkJ
ICAgCiAgc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyICpfX3ByZXY7ICAKfTsKCiAKCmVu
dW0KewogIFBUSFJFQURfQ0FOQ0VMX0VOQUJMRSwKCiAgUFRIUkVBRF9DQU5DRUxfRElTQUJMRQoK
fTsKZW51bQp7CiAgUFRIUkVBRF9DQU5DRUxfREVGRVJSRUQsCgogIFBUSFJFQURfQ0FOQ0VMX0FT
WU5DSFJPTk9VUwoKfTsKCgoKIAoKIAoKCmV4dGVybiBpbnQgcHRocmVhZF9jcmVhdGUgIChwdGhy
ZWFkX3QgKl9fdGhyZWFkLAoJCQkJX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJ
dm9pZCAqKCpfX3N0YXJ0X3JvdXRpbmUpICh2b2lkICopLAoJCQkJdm9pZCAqX19hcmcpICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gcHRocmVhZF90IHB0aHJlYWRfc2VsZiAgKHZvaWQpICB0aHJvdyAo
KSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfZXF1YWwgIChwdGhyZWFkX3QgX190aHJlYWQxLCBw
dGhyZWFkX3QgX190aHJlYWQyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgcHRocmVhZF9l
eGl0ICAodm9pZCAqX19yZXR2YWwpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0
dXJuX18pKTsKCiAKCgpleHRlcm4gaW50IHB0aHJlYWRfam9pbiAgKHB0aHJlYWRfdCBfX3RoLCB2
b2lkICoqX190aHJlYWRfcmV0dXJuKSAgdGhyb3cgKCkgIDsKCiAKCgoKZXh0ZXJuIGludCBwdGhy
ZWFkX2RldGFjaCAgKHB0aHJlYWRfdCBfX3RoKSAgdGhyb3cgKCkgIDsKCgogCgogCgoKZXh0ZXJu
IGludCBwdGhyZWFkX2F0dHJfaW5pdCAgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIpICB0aHJvdyAo
KSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9kZXN0cm95ICAocHRocmVhZF9hdHRyX3Qg
Kl9fYXR0cikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldGRldGFj
aHN0YXRlICAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJCQkgICAgIGludCBfX2RldGFjaHN0
YXRlKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0ZGV0YWNoc3Rh
dGUgIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkJICAgICBpbnQgKl9fZGV0
YWNoc3RhdGUpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzY2hl
ZHBhcmFtICAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJCSAgICAgICAgX19jb25zdCBzdHJ1
Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJl
YWRfYXR0cl9nZXRzY2hlZHBhcmFtICAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJ
CQkJCSAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJvdyAoKSAgOwoKIApleHRl
cm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzY2hlZHBvbGljeSAgKHB0aHJlYWRfYXR0cl90ICpfX2F0
dHIsCgkJCQkJICAgICBpbnQgX19wb2xpY3kpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0
aHJlYWRfYXR0cl9nZXRzY2hlZHBvbGljeSAgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0
ciwKCQkJCQkgICAgIGludCAqX19wb2xpY3kpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0
aHJlYWRfYXR0cl9zZXRpbmhlcml0c2NoZWQgIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJ
CSAgICAgIGludCBfX2luaGVyaXQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRf
YXR0cl9nZXRpbmhlcml0c2NoZWQgIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJ
CQkJICAgICAgaW50ICpfX2luaGVyaXQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJl
YWRfYXR0cl9zZXRzY29wZSAgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsIGludCBfX3Njb3BlKSAg
dGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c2NvcGUgIChfX2NvbnN0
IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkgICAgICAgaW50ICpfX3Njb3BlKSAgdGhyb3cg
KCkgIDsKCiMgMjIzICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCgoKIAoKCgpleHRlcm4gaW50
IHB0aHJlYWRfYXR0cl9zZXRzdGFja2FkZHIgIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJ
CSAgIHZvaWQgKl9fc3RhY2thZGRyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFk
X2F0dHJfZ2V0c3RhY2thZGRyICAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJ
CSAgIHZvaWQgKipfX3N0YWNrYWRkcikgIHRocm93ICgpICA7CgogCgoKZXh0ZXJuIGludCBwdGhy
ZWFkX2F0dHJfc2V0c3RhY2tzaXplICAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJCQkgICBz
aXplX3QgX19zdGFja3NpemUpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfYXR0
cl9nZXRzdGFja3NpemUgIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkJICAg
c2l6ZV90ICpfX3N0YWNrc2l6ZSkgIHRocm93ICgpICA7CgogCgogCgpleHRlcm4gaW50IHB0aHJl
YWRfc2V0c2NoZWRwYXJhbSAgKHB0aHJlYWRfdCBfX3RhcmdldF90aHJlYWQsIGludCBfX3BvbGlj
eSwKCQkJCSAgICAgICBfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93
ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9nZXRzY2hlZHBhcmFtICAocHRocmVhZF90IF9f
dGFyZ2V0X3RocmVhZCwKCQkJCSAgICAgICBpbnQgKl9fcG9saWN5LAoJCQkJICAgICAgIHN0cnVj
dCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93ICgpICA7CgoKCgoKCgoKCiAKCiAKCmV4dGVy
biBpbnQgX19wdGhyZWFkX211dGV4X2luaXQgIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgsCgkJ
CQkgICBfX2NvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fbXV0ZXhfYXR0cikgIHRocm93ICgp
ICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9pbml0ICAocHRocmVhZF9tdXRleF90ICpfX211
dGV4LAoJCQkJICAgX19jb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICpfX211dGV4X2F0dHIpICB0
aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9fcHRocmVhZF9tdXRleF9kZXN0cm95ICAocHRocmVh
ZF9tdXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4
X2Rlc3Ryb3kgIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpICB0aHJvdyAoKSAgOwoKIApleHRl
cm4gaW50IF9fcHRocmVhZF9tdXRleF90cnlsb2NrICAocHRocmVhZF9tdXRleF90ICpfX211dGV4
KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X3RyeWxvY2sgIChwdGhyZWFk
X211dGV4X3QgKl9fbXV0ZXgpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9fcHRocmVhZF9t
dXRleF9sb2NrICAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKZXh0ZXJu
IGludCBwdGhyZWFkX211dGV4X2xvY2sgIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gaW50IF9fcHRocmVhZF9tdXRleF91bmxvY2sgIChwdGhyZWFkX211
dGV4X3QgKl9fbXV0ZXgpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfdW5s
b2NrICAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKCgogCgogCgpleHRl
cm4gaW50IF9fcHRocmVhZF9tdXRleGF0dHJfaW5pdCAgKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9f
YXR0cikgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfaW5pdCAgKHB0
aHJlYWRfbXV0ZXhhdHRyX3QgKl9fYXR0cikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgX19w
dGhyZWFkX211dGV4YXR0cl9kZXN0cm95ICAocHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRyKSAg
dGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95ICAocHRocmVh
ZF9tdXRleGF0dHJfdCAqX19hdHRyKSAgdGhyb3cgKCkgIDsKCiMgMzE1ICIvdXNyL2luY2x1ZGUv
cHRocmVhZC5oIiAzCgoKCiAKCiAKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2luaXQgIChwdGhy
ZWFkX2NvbmRfdCAqX19jb25kLAoJCQkJICAgX19jb25zdCBwdGhyZWFkX2NvbmRhdHRyX3QgKl9f
Y29uZF9hdHRyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfZGVzdHJv
eSAgKHB0aHJlYWRfY29uZF90ICpfX2NvbmQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0
aHJlYWRfY29uZF9zaWduYWwgIChwdGhyZWFkX2NvbmRfdCAqX19jb25kKSAgdGhyb3cgKCkgIDsK
CiAKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0ICAocHRocmVhZF9jb25kX3QgKl9f
Y29uZCkgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF93YWl0ICAocHRo
cmVhZF9jb25kX3QgKl9fY29uZCwKCQkJCSAgIHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgIHRo
cm93ICgpICA7CgogCgoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX3RpbWVkd2FpdCAgKHB0aHJl
YWRfY29uZF90ICpfX2NvbmQsCgkJCQkJcHRocmVhZF9tdXRleF90ICpfX211dGV4LAoJCQkJCV9f
Y29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX2Fic3RpbWUpICB0aHJvdyAoKSAgOwoKIAoKIApleHRl
cm4gaW50IHB0aHJlYWRfY29uZGF0dHJfaW5pdCAgKHB0aHJlYWRfY29uZGF0dHJfdCAqX19hdHRy
KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX2Rlc3Ryb3kgIChw
dGhyZWFkX2NvbmRhdHRyX3QgKl9fYXR0cikgIHRocm93ICgpICA7CgoKIyA0MDggIi91c3IvaW5j
bHVkZS9wdGhyZWFkLmgiIDMKCgoKIAoKIAoKCgoKCmV4dGVybiBpbnQgX19wdGhyZWFkX2tleV9j
cmVhdGUgIChwdGhyZWFkX2tleV90ICpfX2tleSwKCQkJCSAgICAgIHZvaWQgKCpfX2Rlc3RyX2Z1
bmN0aW9uKSAodm9pZCAqKSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9rZXlfY3Jl
YXRlICAocHRocmVhZF9rZXlfdCAqX19rZXksCgkJCQkgICAgdm9pZCAoKl9fZGVzdHJfZnVuY3Rp
b24pICh2b2lkICopKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2tleV9kZWxl
dGUgIChwdGhyZWFkX2tleV90IF9fa2V5KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3B0
aHJlYWRfc2V0c3BlY2lmaWMgIChwdGhyZWFkX2tleV90IF9fa2V5LAoJCQkJICAgICAgIF9fY29u
c3Qgdm9pZCAqX19wb2ludGVyKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX3NldHNw
ZWNpZmljICAocHRocmVhZF9rZXlfdCBfX2tleSwKCQkJCSAgICAgX19jb25zdCB2b2lkICpfX3Bv
aW50ZXIpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdm9pZCAqX19wdGhyZWFkX2dldHNwZWNpZmlj
ICAocHRocmVhZF9rZXlfdCBfX2tleSkgIHRocm93ICgpICA7CmV4dGVybiB2b2lkICpwdGhyZWFk
X2dldHNwZWNpZmljICAocHRocmVhZF9rZXlfdCBfX2tleSkgIHRocm93ICgpICA7CgoKIAoKIAoK
CgpleHRlcm4gaW50IF9fcHRocmVhZF9vbmNlICAocHRocmVhZF9vbmNlX3QgKl9fb25jZV9jb250
cm9sLAoJCQkJdm9pZCAoKl9faW5pdF9yb3V0aW5lKSAodm9pZCkpICB0aHJvdyAoKSAgOwpleHRl
cm4gaW50IHB0aHJlYWRfb25jZSAgKHB0aHJlYWRfb25jZV90ICpfX29uY2VfY29udHJvbCwKCQkJ
ICAgICAgdm9pZCAoKl9faW5pdF9yb3V0aW5lKSAodm9pZCkpICB0aHJvdyAoKSAgOwoKCiAKCiAK
CmV4dGVybiBpbnQgcHRocmVhZF9zZXRjYW5jZWxzdGF0ZSAgKGludCBfX3N0YXRlLCBpbnQgKl9f
b2xkc3RhdGUpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCBwdGhyZWFkX3NldGNhbmNlbHR5
cGUgIChpbnQgX190eXBlLCBpbnQgKl9fb2xkdHlwZSkgIHRocm93ICgpICA7CgogCmV4dGVybiBp
bnQgcHRocmVhZF9jYW5jZWwgIChwdGhyZWFkX3QgX190aHJlYWQpICB0aHJvdyAoKSAgOwoKIAoK
CmV4dGVybiB2b2lkIHB0aHJlYWRfdGVzdGNhbmNlbCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKCiAK
CgoKCgoKCgoKCmV4dGVybiB2b2lkIF9wdGhyZWFkX2NsZWFudXBfcHVzaCAgKHN0cnVjdCBfcHRo
cmVhZF9jbGVhbnVwX2J1ZmZlciAqX19idWZmZXIsCgkJCQkJdm9pZCAoKl9fcm91dGluZSkgKHZv
aWQgKiksCgkJCQkJdm9pZCAqX19hcmcpICB0aHJvdyAoKSAgOwoKIAoKCgoKCmV4dGVybiB2b2lk
IF9wdGhyZWFkX2NsZWFudXBfcG9wICAoc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyICpf
X2J1ZmZlciwKCQkJCSAgICAgICBpbnQgX19leGVjdXRlKSAgdGhyb3cgKCkgIDsKCiAKCgojIDUx
NCAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwoKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9z
aWd0aHJlYWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCmV4dGVybiBp
bnQgcHRocmVhZF9zaWdtYXNrICAoaW50IF9faG93LCBfX2NvbnN0IF9fc2lnc2V0X3QgKl9fbmV3
bWFzaywKCQkJCSBfX3NpZ3NldF90ICpfX29sZG1hc2spICB0aHJvdyAoKSAgOwoKIApleHRlcm4g
aW50IHB0aHJlYWRfa2lsbCAgKHB0aHJlYWRfdCBfX3RocmVhZCwgaW50IF9fc2lnbm8pICB0aHJv
dyAoKSAgOwoKCiMgNTE3ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCgoKIAoKIAoKCgoK
CgoKCgoKZXh0ZXJuIGludCBfX3B0aHJlYWRfYXRmb3JrICAodm9pZCAoKl9fcHJlcGFyZSkgKHZv
aWQpLAoJCQkJICB2b2lkICgqX19wYXJlbnQpICh2b2lkKSwKCQkJCSAgdm9pZCAoKl9fY2hpbGQp
ICh2b2lkKSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9hdGZvcmsgICh2b2lkICgq
X19wcmVwYXJlKSAodm9pZCksCgkJCQl2b2lkICgqX19wYXJlbnQpICh2b2lkKSwKCQkJCXZvaWQg
KCpfX2NoaWxkKSAodm9pZCkpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiB2b2lkIHB0aHJlYWRf
a2lsbF9vdGhlcl90aHJlYWRzX25wICAodm9pZCkgIHRocm93ICgpICA7CgoKIApleHRlcm4gdm9p
ZCBfX3B0aHJlYWRfaW5pdGlhbGl6ZSAgKHZvaWQpICB0aHJvdyAoKSAgOwoKfSAKCgojIDczICIv
dXNyL2luY2x1ZGUvZysrLTIvc3RsX2FsbG9jLmgiIDIgMwoKCgoKCgoKCiMgOTAgIi91c3IvaW5j
bHVkZS9nKystMi9zdGxfYWxsb2MuaCIgMwoKIyAxMDggIi91c3IvaW5jbHVkZS9nKystMi9zdGxf
YWxsb2MuaCIgMwoKCgoKCgoKCgogCgoKCgoKIAogCgoKCgoKCgoKCnRlbXBsYXRlIDxpbnQgaW5z
dD4KY2xhc3MgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGUgewoKcHJpdmF0ZToKCnN0YXRpYyB2b2lk
ICpvb21fbWFsbG9jKHNpemVfdCk7CgpzdGF0aWMgdm9pZCAqb29tX3JlYWxsb2Modm9pZCAqLCBz
aXplX3QpOwoKCiAgICBzdGF0aWMgdm9pZCAoKiBfX21hbGxvY19hbGxvY19vb21faGFuZGxlciko
KTsKCgpwdWJsaWM6CgpzdGF0aWMgdm9pZCAqIGFsbG9jYXRlKHNpemVfdCBuKQp7CiAgICB2b2lk
ICpyZXN1bHQgPSBtYWxsb2Mobik7CiAgICBpZiAoMCA9PSByZXN1bHQpIHJlc3VsdCA9IG9vbV9t
YWxsb2Mobik7CiAgICByZXR1cm4gcmVzdWx0Owp9CgpzdGF0aWMgdm9pZCBkZWFsbG9jYXRlKHZv
aWQgKnAsIHNpemVfdCAgKQp7CiAgICBmcmVlKHApOwp9CgpzdGF0aWMgdm9pZCAqIHJlYWxsb2Nh
dGUodm9pZCAqcCwgc2l6ZV90ICAsIHNpemVfdCBuZXdfc3opCnsKICAgIHZvaWQgKiByZXN1bHQg
PSByZWFsbG9jKHAsIG5ld19zeik7CiAgICBpZiAoMCA9PSByZXN1bHQpIHJlc3VsdCA9IG9vbV9y
ZWFsbG9jKHAsIG5ld19zeik7CiAgICByZXR1cm4gcmVzdWx0Owp9CgpzdGF0aWMgdm9pZCAoKiBz
ZXRfbWFsbG9jX2hhbmRsZXIodm9pZCAoKmYpKCkpKSgpCnsKICAgIHZvaWQgKCogb2xkKSgpID0g
X19tYWxsb2NfYWxsb2Nfb29tX2hhbmRsZXI7CiAgICBfX21hbGxvY19hbGxvY19vb21faGFuZGxl
ciA9IGY7CiAgICByZXR1cm4ob2xkKTsKfQoKfTsKCiAKCgp0ZW1wbGF0ZSA8aW50IGluc3Q+CnZv
aWQgKCogX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8aW5zdD46Ol9fbWFsbG9jX2FsbG9jX29vbV9o
YW5kbGVyKSgpID0gMDsKCgp0ZW1wbGF0ZSA8aW50IGluc3Q+CnZvaWQgKiBfX21hbGxvY19hbGxv
Y190ZW1wbGF0ZTxpbnN0Pjo6b29tX21hbGxvYyhzaXplX3QgbikKewogICAgdm9pZCAoKiBteV9t
YWxsb2NfaGFuZGxlcikoKTsKICAgIHZvaWQgKnJlc3VsdDsKCiAgICBmb3IgKDs7KSB7CiAgICAg
ICAgbXlfbWFsbG9jX2hhbmRsZXIgPSBfX21hbGxvY19hbGxvY19vb21faGFuZGxlcjsKICAgICAg
ICBpZiAoMCA9PSBteV9tYWxsb2NfaGFuZGxlcikgeyBjZXJyIDw8ICJvdXQgb2YgbWVtb3J5IiA8
PCBlbmRsOyBleGl0KDEpIDsgfQogICAgICAgICgqbXlfbWFsbG9jX2hhbmRsZXIpKCk7CiAgICAg
ICAgcmVzdWx0ID0gbWFsbG9jKG4pOwogICAgICAgIGlmIChyZXN1bHQpIHJldHVybihyZXN1bHQp
OwogICAgfQp9Cgp0ZW1wbGF0ZSA8aW50IGluc3Q+CnZvaWQgKiBfX21hbGxvY19hbGxvY190ZW1w
bGF0ZTxpbnN0Pjo6b29tX3JlYWxsb2Modm9pZCAqcCwgc2l6ZV90IG4pCnsKICAgIHZvaWQgKCog
bXlfbWFsbG9jX2hhbmRsZXIpKCk7CiAgICB2b2lkICpyZXN1bHQ7CgogICAgZm9yICg7Oykgewog
ICAgICAgIG15X21hbGxvY19oYW5kbGVyID0gX19tYWxsb2NfYWxsb2Nfb29tX2hhbmRsZXI7CiAg
ICAgICAgaWYgKDAgPT0gbXlfbWFsbG9jX2hhbmRsZXIpIHsgY2VyciA8PCAib3V0IG9mIG1lbW9y
eSIgPDwgZW5kbDsgZXhpdCgxKSA7IH0KICAgICAgICAoKm15X21hbGxvY19oYW5kbGVyKSgpOwog
ICAgICAgIHJlc3VsdCA9IHJlYWxsb2MocCwgbik7CiAgICAgICAgaWYgKHJlc3VsdCkgcmV0dXJu
KHJlc3VsdCk7CiAgICB9Cn0KCnR5cGVkZWYgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8MD4gbWFs
bG9jX2FsbG9jOwoKdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQWxsb2M+CmNsYXNzIHNpbXBsZV9h
bGxvYyB7CgpwdWJsaWM6CiAgICBzdGF0aWMgVCAqYWxsb2NhdGUoc2l6ZV90IG4pCiAgICAgICAg
ICAgICAgICB7IHJldHVybiAwID09IG4/IDAgOiAoVCopIEFsbG9jOjphbGxvY2F0ZShuICogc2l6
ZW9mIChUKSk7IH0KICAgIHN0YXRpYyBUICphbGxvY2F0ZSh2b2lkKQogICAgICAgICAgICAgICAg
eyByZXR1cm4gKFQqKSBBbGxvYzo6YWxsb2NhdGUoc2l6ZW9mIChUKSk7IH0KICAgIHN0YXRpYyB2
b2lkIGRlYWxsb2NhdGUoVCAqcCwgc2l6ZV90IG4pCiAgICAgICAgICAgICAgICB7IGlmICgwICE9
IG4pIEFsbG9jOjpkZWFsbG9jYXRlKHAsIG4gKiBzaXplb2YgKFQpKTsgfQogICAgc3RhdGljIHZv
aWQgZGVhbGxvY2F0ZShUICpwKQogICAgICAgICAgICAgICAgeyBBbGxvYzo6ZGVhbGxvY2F0ZShw
LCBzaXplb2YgKFQpKTsgfQp9OwoKIAogCiAKIAogCnRlbXBsYXRlIDxjbGFzcyBBbGxvYz4KY2xh
c3MgZGVidWdfYWxsb2MgewoKcHJpdmF0ZToKCmVudW0ge2V4dHJhID0gOH07ICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgCgpwdWJsaWM6
CgpzdGF0aWMgdm9pZCAqIGFsbG9jYXRlKHNpemVfdCBuKQp7CiAgICBjaGFyICpyZXN1bHQgPSAo
Y2hhciAqKUFsbG9jOjphbGxvY2F0ZShuICsgZXh0cmEpOwogICAgKihzaXplX3QgKilyZXN1bHQg
PSBuOwogICAgcmV0dXJuIHJlc3VsdCArIGV4dHJhOwp9CgpzdGF0aWMgdm9pZCBkZWFsbG9jYXRl
KHZvaWQgKnAsIHNpemVfdCBuKQp7CiAgICBjaGFyICogcmVhbF9wID0gKGNoYXIgKilwIC0gZXh0
cmE7CiAgICAoKHZvaWQpICgoICooc2l6ZV90ICopcmVhbF9wID09IG4gKSA/IDAgOgkoX19hc3Nl
cnRfZmFpbCAoIiooc2l6ZV90ICopcmVhbF9wID09IG4iICwJIi91c3IvaW5jbHVkZS9nKystMi9z
dGxfYWxsb2MuaCIsIDI1NiwgX19QUkVUVFlfRlVOQ1RJT05fXyApLCAwKSkpIDsKICAgIEFsbG9j
OjpkZWFsbG9jYXRlKHJlYWxfcCwgbiArIGV4dHJhKTsKfQoKc3RhdGljIHZvaWQgKiByZWFsbG9j
YXRlKHZvaWQgKnAsIHNpemVfdCBvbGRfc3osIHNpemVfdCBuZXdfc3opCnsKICAgIGNoYXIgKiBy
ZWFsX3AgPSAoY2hhciAqKXAgLSBleHRyYTsKICAgICgodm9pZCkgKCggKihzaXplX3QgKilyZWFs
X3AgPT0gb2xkX3N6ICkgPyAwIDoJKF9fYXNzZXJ0X2ZhaWwgKCIqKHNpemVfdCAqKXJlYWxfcCA9
PSBvbGRfc3oiICwJIi91c3IvaW5jbHVkZS9nKystMi9zdGxfYWxsb2MuaCIsIDI2MywgX19QUkVU
VFlfRlVOQ1RJT05fXyApLCAwKSkpIDsKICAgIGNoYXIgKiByZXN1bHQgPSAoY2hhciAqKQogICAg
ICAgICAgICAgICAgICBBbGxvYzo6cmVhbGxvY2F0ZShyZWFsX3AsIG9sZF9zeiArIGV4dHJhLCBu
ZXdfc3ogKyBleHRyYSk7CiAgICAqKHNpemVfdCAqKXJlc3VsdCA9IG5ld19zejsKICAgIHJldHVy
biByZXN1bHQgKyBleHRyYTsKfQoKCn07CgoKCgoKCgoKCgogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKCiAKIAogCiAKIAogCiAKIAogCgoKCgoKCgp0ZW1wbGF0ZSA8Ym9vbCB0aHJlYWRzLCBp
bnQgaW5zdD4KY2xhc3MgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlIHsKCnByaXZhdGU6CiAgIAog
ICAKCiAgICBlbnVtIHtfX0FMSUdOID0gOH07CiAgICBlbnVtIHtfX01BWF9CWVRFUyA9IDEyOH07
CiAgICBlbnVtIHtfX05GUkVFTElTVFMgPSBfX01BWF9CWVRFUy9fX0FMSUdOfTsKCiAgc3RhdGlj
IHNpemVfdCBST1VORF9VUChzaXplX3QgYnl0ZXMpIHsKICAgICAgICByZXR1cm4gKCgoYnl0ZXMp
ICsgX19BTElHTi0xKSAmIH4oX19BTElHTiAtIDEpKTsKICB9CnByaXZhdGUgOgogIHVuaW9uIG9i
aiB7CiAgICAgICAgdW5pb24gb2JqICogZnJlZV9saXN0X2xpbms7CiAgICAgICAgY2hhciBjbGll
bnRfZGF0YVsxXTsgICAgIAogIH07CnByaXZhdGU6CgoKCgogICAgc3RhdGljIG9iaiAqIHZvbGF0
aWxlICBmcmVlX2xpc3RbX19ORlJFRUxJU1RTXTsgCgogIHN0YXRpYyAgc2l6ZV90IEZSRUVMSVNU
X0lOREVYKHNpemVfdCBieXRlcykgewogICAgICAgIHJldHVybiAoKChieXRlcykgKyBfX0FMSUdO
LTEpL19fQUxJR04gLSAxKTsKICB9CgogICAKICBzdGF0aWMgdm9pZCAqcmVmaWxsKHNpemVfdCBu
KTsKICAgCiAgIAogIHN0YXRpYyBjaGFyICpjaHVua19hbGxvYyhzaXplX3Qgc2l6ZSwgaW50ICZu
b2Jqcyk7CgogICAKICBzdGF0aWMgY2hhciAqc3RhcnRfZnJlZTsKICBzdGF0aWMgY2hhciAqZW5k
X2ZyZWU7CiAgc3RhdGljIHNpemVfdCBoZWFwX3NpemU7CgoKCgoKCgoKICAgIHN0YXRpYyBwdGhy
ZWFkX211dGV4X3QgX19ub2RlX2FsbG9jYXRvcl9sb2NrOwoKCiMgMzc4ICIvdXNyL2luY2x1ZGUv
ZysrLTIvc3RsX2FsbG9jLmgiIDMKCgogICAgY2xhc3MgbG9jayB7CiAgICAgICAgcHVibGljOgog
ICAgICAgICAgICBsb2NrKCkgeyBpZiAodGhyZWFkcykgcHRocmVhZF9tdXRleF9sb2NrKCZfX25v
ZGVfYWxsb2NhdG9yX2xvY2spIDsgfQogICAgICAgICAgICB+bG9jaygpIHsgaWYgKHRocmVhZHMp
IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZfX25vZGVfYWxsb2NhdG9yX2xvY2spIDsgfQogICAgfTsK
ICAgIGZyaWVuZCBjbGFzcyBsb2NrOwoKcHVibGljOgoKICAgCiAgc3RhdGljIHZvaWQgKiBhbGxv
Y2F0ZShzaXplX3QgbikKICB7CiAgICBvYmogKiB2b2xhdGlsZSAgKiBteV9mcmVlX2xpc3Q7CiAg
ICBvYmogKiAgIHJlc3VsdDsKCiAgICBpZiAobiA+IChzaXplX3QpIF9fTUFYX0JZVEVTKSB7CiAg
ICAgICAgcmV0dXJuKG1hbGxvY19hbGxvYzo6YWxsb2NhdGUobikpOwogICAgfQogICAgbXlfZnJl
ZV9saXN0ID0gZnJlZV9saXN0ICsgRlJFRUxJU1RfSU5ERVgobik7CiAgICAgCiAgICAgCiAgICAg
CgogICAgICAgICAKICAgICAgICBsb2NrIGxvY2tfaW5zdGFuY2U7CgogICAgcmVzdWx0ID0gKm15
X2ZyZWVfbGlzdDsKICAgIGlmIChyZXN1bHQgPT0gMCkgewogICAgICAgIHZvaWQgKnIgPSByZWZp
bGwoUk9VTkRfVVAobikpOwogICAgICAgIHJldHVybiByOwogICAgfQogICAgKm15X2ZyZWVfbGlz
dCA9IHJlc3VsdCAtPiBmcmVlX2xpc3RfbGluazsKICAgIHJldHVybiAocmVzdWx0KTsKICB9OwoK
ICAgCiAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZSh2b2lkICpwLCBzaXplX3QgbikKICB7CiAgICBv
YmogKnEgPSAob2JqICopcDsKICAgIG9iaiAqIHZvbGF0aWxlICAqIG15X2ZyZWVfbGlzdDsKCiAg
ICBpZiAobiA+IChzaXplX3QpIF9fTUFYX0JZVEVTKSB7CiAgICAgICAgbWFsbG9jX2FsbG9jOjpk
ZWFsbG9jYXRlKHAsIG4pOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIG15X2ZyZWVfbGlzdCA9
IGZyZWVfbGlzdCArIEZSRUVMSVNUX0lOREVYKG4pOwogICAgIAoKICAgICAgICAgCiAgICAgICAg
bG9jayBsb2NrX2luc3RhbmNlOwoKICAgIHEgLT4gZnJlZV9saXN0X2xpbmsgPSAqbXlfZnJlZV9s
aXN0OwogICAgKm15X2ZyZWVfbGlzdCA9IHE7CiAgICAgCiAgfQoKICBzdGF0aWMgdm9pZCAqIHJl
YWxsb2NhdGUodm9pZCAqcCwgc2l6ZV90IG9sZF9zeiwgc2l6ZV90IG5ld19zeik7Cgp9IDsKCnR5
cGVkZWYgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPCB0cnVlICwgMD4gYWxsb2M7CnR5cGVkZWYg
X19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPGZhbHNlLCAwPiBzaW5nbGVfY2xpZW50X2FsbG9jOwoK
CgogCiAKIAogCnRlbXBsYXRlIDxib29sIHRocmVhZHMsIGludCBpbnN0PgpjaGFyKgpfX2RlZmF1
bHRfYWxsb2NfdGVtcGxhdGU8dGhyZWFkcywgaW5zdD46OmNodW5rX2FsbG9jKHNpemVfdCBzaXpl
LCBpbnQmIG5vYmpzKQp7CiAgICBjaGFyICogcmVzdWx0OwogICAgc2l6ZV90IHRvdGFsX2J5dGVz
ID0gc2l6ZSAqIG5vYmpzOwogICAgc2l6ZV90IGJ5dGVzX2xlZnQgPSBlbmRfZnJlZSAtIHN0YXJ0
X2ZyZWU7CgogICAgaWYgKGJ5dGVzX2xlZnQgPj0gdG90YWxfYnl0ZXMpIHsKICAgICAgICByZXN1
bHQgPSBzdGFydF9mcmVlOwogICAgICAgIHN0YXJ0X2ZyZWUgKz0gdG90YWxfYnl0ZXM7CiAgICAg
ICAgcmV0dXJuKHJlc3VsdCk7CiAgICB9IGVsc2UgaWYgKGJ5dGVzX2xlZnQgPj0gc2l6ZSkgewog
ICAgICAgIG5vYmpzID0gYnl0ZXNfbGVmdC9zaXplOwogICAgICAgIHRvdGFsX2J5dGVzID0gc2l6
ZSAqIG5vYmpzOwogICAgICAgIHJlc3VsdCA9IHN0YXJ0X2ZyZWU7CiAgICAgICAgc3RhcnRfZnJl
ZSArPSB0b3RhbF9ieXRlczsKICAgICAgICByZXR1cm4ocmVzdWx0KTsKICAgIH0gZWxzZSB7CiAg
ICAgICAgc2l6ZV90IGJ5dGVzX3RvX2dldCA9IDIgKiB0b3RhbF9ieXRlcyArIFJPVU5EX1VQKGhl
YXBfc2l6ZSA+PiA0KTsKICAgICAgICAgCiAgICAgICAgaWYgKGJ5dGVzX2xlZnQgPiAwKSB7CiAg
ICAgICAgICAgIG9iaiAqIHZvbGF0aWxlICAqIG15X2ZyZWVfbGlzdCA9CiAgICAgICAgICAgICAg
ICAgICAgICAgIGZyZWVfbGlzdCArIEZSRUVMSVNUX0lOREVYKGJ5dGVzX2xlZnQpOwoKICAgICAg
ICAgICAgKChvYmogKilzdGFydF9mcmVlKSAtPiBmcmVlX2xpc3RfbGluayA9ICpteV9mcmVlX2xp
c3Q7CiAgICAgICAgICAgICpteV9mcmVlX2xpc3QgPSAob2JqICopc3RhcnRfZnJlZTsKICAgICAg
ICB9CiAgICAgICAgc3RhcnRfZnJlZSA9IChjaGFyICopbWFsbG9jKGJ5dGVzX3RvX2dldCk7CiAg
ICAgICAgaWYgKDAgPT0gc3RhcnRfZnJlZSkgewogICAgICAgICAgICBpbnQgaTsKICAgICAgICAg
ICAgb2JqICogdm9sYXRpbGUgICogbXlfZnJlZV9saXN0LCAqcDsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgCiAgICAgICAgICAgICAKICAgICAgICAgICAgZm9yIChpID0gc2l6ZTsgaSA8PSBf
X01BWF9CWVRFUzsgaSArPSBfX0FMSUdOKSB7CiAgICAgICAgICAgICAgICBteV9mcmVlX2xpc3Qg
PSBmcmVlX2xpc3QgKyBGUkVFTElTVF9JTkRFWChpKTsKICAgICAgICAgICAgICAgIHAgPSAqbXlf
ZnJlZV9saXN0OwogICAgICAgICAgICAgICAgaWYgKDAgIT0gcCkgewogICAgICAgICAgICAgICAg
ICAgICpteV9mcmVlX2xpc3QgPSBwIC0+IGZyZWVfbGlzdF9saW5rOwogICAgICAgICAgICAgICAg
ICAgIHN0YXJ0X2ZyZWUgPSAoY2hhciAqKXA7CiAgICAgICAgICAgICAgICAgICAgZW5kX2ZyZWUg
PSBzdGFydF9mcmVlICsgaTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4oY2h1bmtfYWxsb2Mo
c2l6ZSwgbm9ianMpKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgkgICAgZW5kX2ZyZWUgPSAwOwkgCiAg
ICAgICAgICAgIHN0YXJ0X2ZyZWUgPSAoY2hhciAqKW1hbGxvY19hbGxvYzo6YWxsb2NhdGUoYnl0
ZXNfdG9fZ2V0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAgICAgICAgICAKICAg
ICAgICB9CiAgICAgICAgaGVhcF9zaXplICs9IGJ5dGVzX3RvX2dldDsKICAgICAgICBlbmRfZnJl
ZSA9IHN0YXJ0X2ZyZWUgKyBieXRlc190b19nZXQ7CiAgICAgICAgcmV0dXJuKGNodW5rX2FsbG9j
KHNpemUsIG5vYmpzKSk7CiAgICB9Cn0KCgogCiAKIAp0ZW1wbGF0ZSA8Ym9vbCB0aHJlYWRzLCBp
bnQgaW5zdD4Kdm9pZCogX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPHRocmVhZHMsIGluc3Q+Ojpy
ZWZpbGwoc2l6ZV90IG4pCnsKICAgIGludCBub2JqcyA9IDIwOwogICAgY2hhciAqIGNodW5rID0g
Y2h1bmtfYWxsb2Mobiwgbm9ianMpOwogICAgb2JqICogdm9sYXRpbGUgICogbXlfZnJlZV9saXN0
OwogICAgb2JqICogcmVzdWx0OwogICAgb2JqICogY3VycmVudF9vYmosICogbmV4dF9vYmo7CiAg
ICBpbnQgaTsKCiAgICBpZiAoMSA9PSBub2JqcykgcmV0dXJuKGNodW5rKTsKICAgIG15X2ZyZWVf
bGlzdCA9IGZyZWVfbGlzdCArIEZSRUVMSVNUX0lOREVYKG4pOwoKICAgICAKICAgICAgcmVzdWx0
ID0gKG9iaiAqKWNodW5rOwogICAgICAqbXlfZnJlZV9saXN0ID0gbmV4dF9vYmogPSAob2JqICop
KGNodW5rICsgbik7CiAgICAgIGZvciAoaSA9IDE7IDsgaSsrKSB7CiAgICAgICAgY3VycmVudF9v
YmogPSBuZXh0X29iajsKICAgICAgICBuZXh0X29iaiA9IChvYmogKikoKGNoYXIgKiluZXh0X29i
aiArIG4pOwogICAgICAgIGlmIChub2JqcyAtIDEgPT0gaSkgewogICAgICAgICAgICBjdXJyZW50
X29iaiAtPiBmcmVlX2xpc3RfbGluayA9IDA7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgIGN1cnJlbnRfb2JqIC0+IGZyZWVfbGlzdF9saW5rID0gbmV4dF9v
Ymo7CiAgICAgICAgfQogICAgICB9CiAgICByZXR1cm4ocmVzdWx0KTsKfQoKdGVtcGxhdGUgPGJv
b2wgdGhyZWFkcywgaW50IGluc3Q+CnZvaWQqCl9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTx0aHJl
YWRzLCBpbnN0Pjo6cmVhbGxvY2F0ZSh2b2lkICpwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9sZF9zeiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuZXdfc3opCnsKICAg
IHZvaWQgKiByZXN1bHQ7CiAgICBzaXplX3QgY29weV9zejsKCiAgICBpZiAob2xkX3N6ID4gKHNp
emVfdCkgX19NQVhfQllURVMgJiYgbmV3X3N6ID4gKHNpemVfdCkgX19NQVhfQllURVMpIHsKICAg
ICAgICByZXR1cm4ocmVhbGxvYyhwLCBuZXdfc3opKTsKICAgIH0KICAgIGlmIChST1VORF9VUChv
bGRfc3opID09IFJPVU5EX1VQKG5ld19zeikpIHJldHVybihwKTsKICAgIHJlc3VsdCA9IGFsbG9j
YXRlKG5ld19zeik7CiAgICBjb3B5X3N6ID0gbmV3X3N6ID4gb2xkX3N6PyBvbGRfc3ogOiBuZXdf
c3o7CiAgICBtZW1jcHkocmVzdWx0LCBwLCBjb3B5X3N6KTsKICAgIGRlYWxsb2NhdGUocCwgb2xk
X3N6KTsKICAgIHJldHVybihyZXN1bHQpOwp9CgoKICAgIHRlbXBsYXRlIDxib29sIHRocmVhZHMs
IGludCBpbnN0PgogICAgcHRocmVhZF9tdXRleF90CiAgICBfX2RlZmF1bHRfYWxsb2NfdGVtcGxh
dGU8dGhyZWFkcywgaW5zdD46Ol9fbm9kZV9hbGxvY2F0b3JfbG9jawogICAgICAgID0gezAsIDAs
IDAsIFBUSFJFQURfTVVURVhfRkFTVF9OUCwgezAsIDB9fSA7CgoKCgoKCgoKCgoKIyA2NTMgIi91
c3IvaW5jbHVkZS9nKystMi9zdGxfYWxsb2MuaCIgMwoKCnRlbXBsYXRlIDxib29sIHRocmVhZHMs
IGludCBpbnN0PgpjaGFyICpfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8dGhyZWFkcywgaW5zdD46
OnN0YXJ0X2ZyZWUgPSAwOwoKdGVtcGxhdGUgPGJvb2wgdGhyZWFkcywgaW50IGluc3Q+CmNoYXIg
Kl9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTx0aHJlYWRzLCBpbnN0Pjo6ZW5kX2ZyZWUgPSAwOwoK
dGVtcGxhdGUgPGJvb2wgdGhyZWFkcywgaW50IGluc3Q+CnNpemVfdCBfX2RlZmF1bHRfYWxsb2Nf
dGVtcGxhdGU8dGhyZWFkcywgaW5zdD46OmhlYXBfc2l6ZSA9IDA7Cgp0ZW1wbGF0ZSA8Ym9vbCB0
aHJlYWRzLCBpbnQgaW5zdD4KX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPHRocmVhZHMsIGluc3Q+
OjpvYmogKiB2b2xhdGlsZSAKX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPHRocmVhZHMsIGluc3Q+
IDo6ZnJlZV9saXN0WwoKCgogICAgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPHRocmVhZHMsIGlu
c3Q+OjpfX05GUkVFTElTVFMKCl0gPSB7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgfTsKIAogCiAKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAogCiAKIyAzMSAi
L3Vzci9pbmNsdWRlL2crKy0yL3ZlY3RvciIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9nKystMi9z
dGxfY29uc3RydWN0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
IAoKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZSB2b2lkIGRlc3Ryb3koVCogcG9pbnRlcikgewog
ICAgcG9pbnRlci0+flQoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KaW5saW5l
IHZvaWQgY29uc3RydWN0KFQxKiBwLCBjb25zdCBUMiYgdmFsdWUpIHsKICBuZXcgKHApIFQxKHZh
bHVlKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyYXRvcj4KaW5saW5lIHZvaWQKX19k
ZXN0cm95X2F1eChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBf
X2ZhbHNlX3R5cGUpIHsKICBmb3IgKCA7IGZpcnN0IDwgbGFzdDsgKytmaXJzdCkKICAgIGRlc3Ry
b3koJipmaXJzdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlcmF0b3I+IAppbmxpbmUg
dm9pZCBfX2Rlc3Ryb3lfYXV4KEZvcndhcmRJdGVyYXRvciwgRm9yd2FyZEl0ZXJhdG9yLCBfX3Ry
dWVfdHlwZSkge30KCnRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlcmF0b3IsIGNsYXNzIFQ+Cmlu
bGluZSB2b2lkIF9fZGVzdHJveShGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRv
ciBsYXN0LCBUKikgewogIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxUPjo6aGFzX3Ry
aXZpYWxfZGVzdHJ1Y3RvciB0cml2aWFsX2Rlc3RydWN0b3I7CiAgX19kZXN0cm95X2F1eChmaXJz
dCwgbGFzdCwgdHJpdmlhbF9kZXN0cnVjdG9yKCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRm9yd2Fy
ZEl0ZXJhdG9yPgppbmxpbmUgdm9pZCBkZXN0cm95KEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9y
d2FyZEl0ZXJhdG9yIGxhc3QpIHsKICBfX2Rlc3Ryb3koZmlyc3QsIGxhc3QsIHZhbHVlX3R5cGUo
Zmlyc3QpKTsKfQoKaW5saW5lIHZvaWQgZGVzdHJveShjaGFyKiwgY2hhciopIHt9CmlubGluZSB2
b2lkIGRlc3Ryb3kod2NoYXJfdCosIHdjaGFyX3QqKSB7fQoKIAoKCgogCiAKIAojIDMyICIvdXNy
L2luY2x1ZGUvZysrLTIvdmVjdG9yIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2crKy0yL3N0bF91
bmluaXRpYWxpemVkLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAK
CiAKIAp0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvciwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9y
PgppbmxpbmUgRm9yd2FyZEl0ZXJhdG9yIApfX3VuaW5pdGlhbGl6ZWRfY29weV9hdXgoSW5wdXRJ
dGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgRm9yd2FyZEl0ZXJhdG9yIHJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fdHJ1
ZV90eXBlKSB7CiAgcmV0dXJuIGNvcHkoZmlyc3QsIGxhc3QsIHJlc3VsdCk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBJbnB1dEl0ZXJhdG9yLCBjbGFzcyBGb3J3YXJkSXRlcmF0b3I+CkZvcndhcmRJdGVy
YXRvciAKX191bmluaXRpYWxpemVkX2NvcHlfYXV4KElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0
SXRlcmF0b3IgbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvciBy
ZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2ZhbHNlX3R5cGUpIHsKICBGb3J3YXJk
SXRlcmF0b3IgY3VyID0gcmVzdWx0OwogIHRyeSAgewogICAgZm9yICggOyBmaXJzdCAhPSBsYXN0
OyArK2ZpcnN0LCArK2N1cikKICAgICAgY29uc3RydWN0KCYqY3VyLCAqZmlyc3QpOwogICAgcmV0
dXJuIGN1cjsKICB9CiAgY2F0Y2goLi4uKSB7ICBkZXN0cm95KHJlc3VsdCwgY3VyKSA7IHRocm93
OyB9IDsKfQoKCnRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yLCBjbGFzcyBGb3J3YXJkSXRl
cmF0b3IsIGNsYXNzIFQ+CmlubGluZSBGb3J3YXJkSXRlcmF0b3IKX191bmluaXRpYWxpemVkX2Nv
cHkoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LAogICAgICAgICAgICAg
ICAgICAgICBGb3J3YXJkSXRlcmF0b3IgcmVzdWx0LCBUKikgewogIHR5cGVkZWYgdHlwZW5hbWUg
X190eXBlX3RyYWl0czxUPjo6aXNfUE9EX3R5cGUgaXNfUE9EOwogIHJldHVybiBfX3VuaW5pdGlh
bGl6ZWRfY29weV9hdXgoZmlyc3QsIGxhc3QsIHJlc3VsdCwgaXNfUE9EKCkpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvciwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9yPgppbmxpbmUgRm9y
d2FyZEl0ZXJhdG9yCiAgdW5pbml0aWFsaXplZF9jb3B5KElucHV0SXRlcmF0b3IgZmlyc3QsIElu
cHV0SXRlcmF0b3IgbGFzdCwKICAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yIHJl
c3VsdCkgewogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRfY29weShmaXJzdCwgbGFzdCwgcmVzdWx0
LCB2YWx1ZV90eXBlKHJlc3VsdCkpOwp9CgppbmxpbmUgY2hhciogdW5pbml0aWFsaXplZF9jb3B5
KGNvbnN0IGNoYXIqIGZpcnN0LCBjb25zdCBjaGFyKiBsYXN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIqIHJlc3VsdCkgewogIG1lbW1vdmUocmVzdWx0LCBmaXJzdCwgbGFz
dCAtIGZpcnN0KTsKICByZXR1cm4gcmVzdWx0ICsgKGxhc3QgLSBmaXJzdCk7Cn0KCmlubGluZSB3
Y2hhcl90KiB1bmluaXRpYWxpemVkX2NvcHkoY29uc3Qgd2NoYXJfdCogZmlyc3QsIGNvbnN0IHdj
aGFyX3QqIGxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCog
cmVzdWx0KSB7CiAgbWVtbW92ZShyZXN1bHQsIGZpcnN0LCBzaXplb2Yod2NoYXJfdCkgKiAobGFz
dCAtIGZpcnN0KSk7CiAgcmV0dXJuIHJlc3VsdCArIChsYXN0IC0gZmlyc3QpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvciwgY2xhc3MgU2l6ZSwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9y
PgpwYWlyPElucHV0SXRlcmF0b3IsIEZvcndhcmRJdGVyYXRvcj4KX191bmluaXRpYWxpemVkX2Nv
cHlfbihJbnB1dEl0ZXJhdG9yIGZpcnN0LCBTaXplIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgIEZvcndhcmRJdGVyYXRvciByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRf
aXRlcmF0b3JfdGFnKSB7CiAgRm9yd2FyZEl0ZXJhdG9yIGN1ciA9IHJlc3VsdDsKICB0cnkgIHsK
ICAgIGZvciAoIDsgY291bnQgPiAwIDsgLS1jb3VudCwgKytmaXJzdCwgKytjdXIpIAogICAgICBj
b25zdHJ1Y3QoJipjdXIsICpmaXJzdCk7CiAgICByZXR1cm4gcGFpcjxJbnB1dEl0ZXJhdG9yLCBG
b3J3YXJkSXRlcmF0b3I+KGZpcnN0LCBjdXIpOwogIH0KICBjYXRjaCguLi4pIHsgIGRlc3Ryb3ko
cmVzdWx0LCBjdXIpIDsgdGhyb3c7IH0gOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNz
SXRlcmF0b3IsIGNsYXNzIFNpemUsIGNsYXNzIEZvcndhcmRJdGVyYXRvcj4KaW5saW5lIHBhaXI8
UmFuZG9tQWNjZXNzSXRlcmF0b3IsIEZvcndhcmRJdGVyYXRvcj4KX191bmluaXRpYWxpemVkX2Nv
cHlfbihSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgU2l6ZSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IgcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAg
IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKSB7CiAgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbGFz
dCA9IGZpcnN0ICsgY291bnQ7CiAgcmV0dXJuIG1ha2VfcGFpcihsYXN0LCB1bmluaXRpYWxpemVk
X2NvcHkoZmlyc3QsIGxhc3QsIHJlc3VsdCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVy
YXRvciwgY2xhc3MgU2l6ZSwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9yPgppbmxpbmUgcGFpcjxJbnB1
dEl0ZXJhdG9yLCBGb3J3YXJkSXRlcmF0b3I+CnVuaW5pdGlhbGl6ZWRfY29weV9uKElucHV0SXRl
cmF0b3IgZmlyc3QsIFNpemUgY291bnQsCiAgICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVy
YXRvciByZXN1bHQpIHsKICByZXR1cm4gX191bmluaXRpYWxpemVkX2NvcHlfbihmaXJzdCwgY291
bnQsIHJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl9jYXRl
Z29yeShmaXJzdCkpOwp9CgogCiAKdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyYXRvciwgY2xh
c3MgVD4KaW5saW5lIHZvaWQKX191bmluaXRpYWxpemVkX2ZpbGxfYXV4KEZvcndhcmRJdGVyYXRv
ciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVCYgeCwgX190cnVlX3R5cGUpCnsKICBmaWxsKGZpcnN0LCBsYXN0LCB4KTsKfQoKdGVt
cGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyYXRvciwgY2xhc3MgVD4Kdm9pZApfX3VuaW5pdGlhbGl6
ZWRfZmlsbF9hdXgoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwg
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB4LCBfX2ZhbHNlX3R5cGUpCnsKICBG
b3J3YXJkSXRlcmF0b3IgY3VyID0gZmlyc3Q7CiAgdHJ5ICB7CiAgICBmb3IgKCA7IGN1ciAhPSBs
YXN0OyArK2N1cikKICAgICAgY29uc3RydWN0KCYqY3VyLCB4KTsKICB9CiAgY2F0Y2goLi4uKSB7
ICBkZXN0cm95KGZpcnN0LCBjdXIpIDsgdGhyb3c7IH0gOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRm9y
d2FyZEl0ZXJhdG9yLCBjbGFzcyBULCBjbGFzcyBUMT4KaW5saW5lIHZvaWQgX191bmluaXRpYWxp
emVkX2ZpbGwoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmIHgsIFQxKikgewogIHR5cGVk
ZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxUMT46OmlzX1BPRF90eXBlIGlzX1BPRDsKICBfX3Vu
aW5pdGlhbGl6ZWRfZmlsbF9hdXgoZmlyc3QsIGxhc3QsIHgsIGlzX1BPRCgpKTsKICAgICAgICAg
ICAgICAgICAgIAp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRm9yd2FyZEl0ZXJhdG9yLCBjbGFzcyBUPgpp
bmxpbmUgdm9pZCB1bmluaXRpYWxpemVkX2ZpbGwoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3
YXJkSXRlcmF0b3IgbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
JiB4KSB7CiAgX191bmluaXRpYWxpemVkX2ZpbGwoZmlyc3QsIGxhc3QsIHgsIHZhbHVlX3R5cGUo
Zmlyc3QpKTsKfQoKIAogCnRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlcmF0b3IsIGNsYXNzIFNp
emUsIGNsYXNzIFQ+CmlubGluZSBGb3J3YXJkSXRlcmF0b3IKX191bmluaXRpYWxpemVkX2ZpbGxf
bl9hdXgoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBTaXplIG4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFQmIHgsIF9fdHJ1ZV90eXBlKSB7CiAgcmV0dXJuIGZpbGxfbihmaXJzdCwg
biwgeCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlcmF0b3IsIGNsYXNzIFNpemUsIGNs
YXNzIFQ+CkZvcndhcmRJdGVyYXRvcgpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2F1eChGb3J3YXJk
SXRlcmF0b3IgZmlyc3QsIFNpemUgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VCYgeCwgX19mYWxzZV90eXBlKSB7CiAgRm9yd2FyZEl0ZXJhdG9yIGN1ciA9IGZpcnN0OwogIHRy
eSAgewogICAgZm9yICggOyBuID4gMDsgLS1uLCArK2N1cikKICAgICAgY29uc3RydWN0KCYqY3Vy
LCB4KTsKICAgIHJldHVybiBjdXI7CiAgfQogIGNhdGNoKC4uLikgeyAgZGVzdHJveShmaXJzdCwg
Y3VyKSA7IHRocm93OyB9IDsKfQoKdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyYXRvciwgY2xh
c3MgU2l6ZSwgY2xhc3MgVCwgY2xhc3MgVDE+CmlubGluZSBGb3J3YXJkSXRlcmF0b3IgX191bmlu
aXRpYWxpemVkX2ZpbGxfbihGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIFNpemUgbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmIHgsIFQxKikgewog
IHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxUMT46OmlzX1BPRF90eXBlIGlzX1BPRDsK
ICByZXR1cm4gX191bmluaXRpYWxpemVkX2ZpbGxfbl9hdXgoZmlyc3QsIG4sIHgsIGlzX1BPRCgp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCn0KCnRlbXBsYXRlIDxjbGFz
cyBGb3J3YXJkSXRlcmF0b3IsIGNsYXNzIFNpemUsIGNsYXNzIFQ+CmlubGluZSBGb3J3YXJkSXRl
cmF0b3IgdW5pbml0aWFsaXplZF9maWxsX24oRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBTaXplIG4s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYgeCkg
ewogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uKGZpcnN0LCBuLCB4LCB2YWx1ZV90eXBl
KGZpcnN0KSk7Cn0KCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcjEsIGNsYXNz
IElucHV0SXRlcmF0b3IyLCBjbGFzcyBGb3J3YXJkSXRlcmF0b3I+CmlubGluZSBGb3J3YXJkSXRl
cmF0b3IKX191bmluaXRpYWxpemVkX2NvcHlfY29weShJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElu
cHV0SXRlcmF0b3IxIGxhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0
b3IyIGZpcnN0MiwgSW5wdXRJdGVyYXRvcjIgbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgRm9yd2FyZEl0ZXJhdG9yIHJlc3VsdCkgewogIEZvcndhcmRJdGVyYXRvciBtaWQgPSB1bmlu
aXRpYWxpemVkX2NvcHkoZmlyc3QxLCBsYXN0MSwgcmVzdWx0KTsKICB0cnkgIHsKICAgIHJldHVy
biB1bmluaXRpYWxpemVkX2NvcHkoZmlyc3QyLCBsYXN0MiwgbWlkKTsKICB9CiAgY2F0Y2goLi4u
KSB7ICBkZXN0cm95KHJlc3VsdCwgbWlkKSA7IHRocm93OyB9IDsKfQoKIAogCnRlbXBsYXRlIDxj
bGFzcyBGb3J3YXJkSXRlcmF0b3IsIGNsYXNzIFQsIGNsYXNzIElucHV0SXRlcmF0b3I+CmlubGlu
ZSBGb3J3YXJkSXRlcmF0b3IgCl9fdW5pbml0aWFsaXplZF9maWxsX2NvcHkoRm9yd2FyZEl0ZXJh
dG9yIHJlc3VsdCwgRm9yd2FyZEl0ZXJhdG9yIG1pZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUJiB4LAogICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgZmly
c3QsIElucHV0SXRlcmF0b3IgbGFzdCkgewogIHVuaW5pdGlhbGl6ZWRfZmlsbChyZXN1bHQsIG1p
ZCwgeCk7CiAgdHJ5ICB7CiAgICByZXR1cm4gdW5pbml0aWFsaXplZF9jb3B5KGZpcnN0LCBsYXN0
LCBtaWQpOwogIH0KICBjYXRjaCguLi4pIHsgIGRlc3Ryb3kocmVzdWx0LCBtaWQpIDsgdGhyb3c7
IH0gOwp9CgogCiAKdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3IsIGNsYXNzIEZvcndhcmRJ
dGVyYXRvciwgY2xhc3MgVD4KaW5saW5lIHZvaWQKX191bmluaXRpYWxpemVkX2NvcHlfZmlsbChJ
bnB1dEl0ZXJhdG9yIGZpcnN0MSwgSW5wdXRJdGVyYXRvciBsYXN0MSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IgZmlyc3QyLCBGb3J3YXJkSXRlcmF0b3IgbGFzdDIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYgeCkgewogIEZvcndhcmRJdGVyYXRv
ciBtaWQyID0gdW5pbml0aWFsaXplZF9jb3B5KGZpcnN0MSwgbGFzdDEsIGZpcnN0Mik7CiAgdHJ5
ICB7CiAgICB1bmluaXRpYWxpemVkX2ZpbGwobWlkMiwgbGFzdDIsIHgpOwogIH0KICBjYXRjaCgu
Li4pIHsgIGRlc3Ryb3koZmlyc3QyLCBtaWQyKSA7IHRocm93OyB9IDsKfQoKIAoKCgogCiAKIAoj
IDMzICIvdXNyL2luY2x1ZGUvZysrLTIvdmVjdG9yIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2cr
Ky0yL3N0bF92ZWN0b3IuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
ICAKCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQWxsb2MgPSBhbGxvYz4KY2xhc3MgdmVj
dG9yIHsKcHVibGljOgogIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwogIHR5cGVkZWYgdmFsdWVfdHlw
ZSogcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqIGNvbnN0X3BvaW50ZXI7CiAg
dHlwZWRlZiB2YWx1ZV90eXBlKiBpdGVyYXRvcjsKICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUq
IGNvbnN0X2l0ZXJhdG9yOwogIHR5cGVkZWYgdmFsdWVfdHlwZSYgcmVmZXJlbmNlOwogIHR5cGVk
ZWYgY29uc3QgdmFsdWVfdHlwZSYgY29uc3RfcmVmZXJlbmNlOwogIHR5cGVkZWYgc2l6ZV90IHNp
emVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CgoKICB0eXBlZGVm
IHJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7
CiAgdHlwZWRlZiByZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwoK
CgoKCgpwcm90ZWN0ZWQ6CiAgdHlwZWRlZiBzaW1wbGVfYWxsb2M8dmFsdWVfdHlwZSwgQWxsb2M+
IGRhdGFfYWxsb2NhdG9yOwogIGl0ZXJhdG9yIHN0YXJ0OwogIGl0ZXJhdG9yIGZpbmlzaDsKICBp
dGVyYXRvciBlbmRfb2Zfc3RvcmFnZTsKICB2b2lkIGluc2VydF9hdXgoaXRlcmF0b3IgcG9zaXRp
b24sIGNvbnN0IFQmIHgpOwogIHZvaWQgZGVhbGxvY2F0ZSgpIHsKICAgIGlmIChzdGFydCkgZGF0
YV9hbGxvY2F0b3I6OmRlYWxsb2NhdGUoc3RhcnQsIGVuZF9vZl9zdG9yYWdlIC0gc3RhcnQpOwog
IH0KCiAgdm9pZCBmaWxsX2luaXRpYWxpemUoc2l6ZV90eXBlIG4sIGNvbnN0IFQmIHZhbHVlKSB7
CiAgICBzdGFydCA9IGFsbG9jYXRlX2FuZF9maWxsKG4sIHZhbHVlKTsKICAgIGZpbmlzaCA9IHN0
YXJ0ICsgbjsKICAgIGVuZF9vZl9zdG9yYWdlID0gZmluaXNoOwogIH0KcHVibGljOgogIGl0ZXJh
dG9yIGJlZ2luKCkgeyByZXR1cm4gc3RhcnQ7IH0KICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNv
bnN0IHsgcmV0dXJuIHN0YXJ0OyB9CiAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gZmluaXNoOyB9
CiAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gZmluaXNoOyB9CiAgcmV2ZXJz
ZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQog
IGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3QgeyAKICAgIHJldHVybiBjb25z
dF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgCiAgfQogIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgp
IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KICBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yIHJlbmQoKSBjb25zdCB7IAogICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3Io
YmVnaW4oKSk7IAogIH0KICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVfdHlw
ZShlbmQoKSAtIGJlZ2luKCkpOyB9CiAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgeyByZXR1
cm4gc2l6ZV90eXBlKC0xKSAvIHNpemVvZihUKTsgfQogIHNpemVfdHlwZSBjYXBhY2l0eSgpIGNv
bnN0IHsgcmV0dXJuIHNpemVfdHlwZShlbmRfb2Zfc3RvcmFnZSAtIGJlZ2luKCkpOyB9CiAgYm9v
bCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5kKCk7IH0KICByZWZlcmVuY2Ug
b3BlcmF0b3JbXShzaXplX3R5cGUgbikgeyByZXR1cm4gKihiZWdpbigpICsgbik7IH0KICBjb25z
dF9yZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgbikgY29uc3QgeyByZXR1cm4gKihiZWdp
bigpICsgbik7IH0KCiAgdmVjdG9yKCkgOiBzdGFydCgwKSwgZmluaXNoKDApLCBlbmRfb2Zfc3Rv
cmFnZSgwKSB7fQogIHZlY3RvcihzaXplX3R5cGUgbiwgY29uc3QgVCYgdmFsdWUpIHsgZmlsbF9p
bml0aWFsaXplKG4sIHZhbHVlKTsgfQogIHZlY3RvcihpbnQgbiwgY29uc3QgVCYgdmFsdWUpIHsg
ZmlsbF9pbml0aWFsaXplKG4sIHZhbHVlKTsgfQogIHZlY3Rvcihsb25nIG4sIGNvbnN0IFQmIHZh
bHVlKSB7IGZpbGxfaW5pdGlhbGl6ZShuLCB2YWx1ZSk7IH0KICBleHBsaWNpdCB2ZWN0b3Ioc2l6
ZV90eXBlIG4pIHsgZmlsbF9pbml0aWFsaXplKG4sIFQoKSk7IH0KCiAgdmVjdG9yKGNvbnN0IHZl
Y3RvcjxULCBBbGxvYz4mIHgpIHsKICAgIHN0YXJ0ID0gYWxsb2NhdGVfYW5kX2NvcHkoeC5lbmQo
KSAtIHguYmVnaW4oKSwgeC5iZWdpbigpLCB4LmVuZCgpKTsKICAgIGZpbmlzaCA9IHN0YXJ0ICsg
KHguZW5kKCkgLSB4LmJlZ2luKCkpOwogICAgZW5kX29mX3N0b3JhZ2UgPSBmaW5pc2g7CiAgfQoK
ICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KICB2ZWN0b3IoSW5wdXRJdGVyYXRvciBm
aXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KSA6CiAgICBzdGFydCgwKSwgZmluaXNoKDApLCBlbmRf
b2Zfc3RvcmFnZSgwKQogIHsKICAgIHJhbmdlX2luaXRpYWxpemUoZmlyc3QsIGxhc3QsIGl0ZXJh
dG9yX2NhdGVnb3J5KGZpcnN0KSk7CiAgfQojIDEyMyAiL3Vzci9pbmNsdWRlL2crKy0yL3N0bF92
ZWN0b3IuaCIgMwoKICB+dmVjdG9yKCkgeyAKICAgIGRlc3Ryb3koc3RhcnQsIGZpbmlzaCk7CiAg
ICBkZWFsbG9jYXRlKCk7CiAgfQogIHZlY3RvcjxULCBBbGxvYz4mIG9wZXJhdG9yPShjb25zdCB2
ZWN0b3I8VCwgQWxsb2M+JiB4KTsKICB2b2lkIHJlc2VydmUoc2l6ZV90eXBlIG4pIHsKICAgIGlm
IChjYXBhY2l0eSgpIDwgbikgewogICAgICBjb25zdCBzaXplX3R5cGUgb2xkX3NpemUgPSBzaXpl
KCk7CiAgICAgIGl0ZXJhdG9yIHRtcCA9IGFsbG9jYXRlX2FuZF9jb3B5KG4sIHN0YXJ0LCBmaW5p
c2gpOwogICAgICBkZXN0cm95KHN0YXJ0LCBmaW5pc2gpOwogICAgICBkZWFsbG9jYXRlKCk7CiAg
ICAgIHN0YXJ0ID0gdG1wOwogICAgICBmaW5pc2ggPSB0bXAgKyBvbGRfc2l6ZTsKICAgICAgZW5k
X29mX3N0b3JhZ2UgPSBzdGFydCArIG47CiAgICB9CiAgfQogIHJlZmVyZW5jZSBmcm9udCgpIHsg
cmV0dXJuICpiZWdpbigpOyB9CiAgY29uc3RfcmVmZXJlbmNlIGZyb250KCkgY29uc3QgeyByZXR1
cm4gKmJlZ2luKCk7IH0KICByZWZlcmVuY2UgYmFjaygpIHsgcmV0dXJuICooZW5kKCkgLSAxKTsg
fQogIGNvbnN0X3JlZmVyZW5jZSBiYWNrKCkgY29uc3QgeyByZXR1cm4gKihlbmQoKSAtIDEpOyB9
CiAgdm9pZCBwdXNoX2JhY2soY29uc3QgVCYgeCkgewogICAgaWYgKGZpbmlzaCAhPSBlbmRfb2Zf
c3RvcmFnZSkgewogICAgICBjb25zdHJ1Y3QoZmluaXNoLCB4KTsKICAgICAgKytmaW5pc2g7CiAg
ICB9CiAgICBlbHNlCiAgICAgIGluc2VydF9hdXgoZW5kKCksIHgpOwogIH0KICB2b2lkIHN3YXAo
dmVjdG9yPFQsIEFsbG9jPiYgeCkgewogICAgIDo6c3dhcChzdGFydCwgeC5zdGFydCk7CiAgICAg
Ojpzd2FwKGZpbmlzaCwgeC5maW5pc2gpOwogICAgIDo6c3dhcChlbmRfb2Zfc3RvcmFnZSwgeC5l
bmRfb2Zfc3RvcmFnZSk7CiAgfQogIGl0ZXJhdG9yIGluc2VydChpdGVyYXRvciBwb3NpdGlvbiwg
Y29uc3QgVCYgeCkgewogICAgc2l6ZV90eXBlIG4gPSBwb3NpdGlvbiAtIGJlZ2luKCk7CiAgICBp
ZiAoZmluaXNoICE9IGVuZF9vZl9zdG9yYWdlICYmIHBvc2l0aW9uID09IGVuZCgpKSB7CiAgICAg
IGNvbnN0cnVjdChmaW5pc2gsIHgpOwogICAgICArK2ZpbmlzaDsKICAgIH0KICAgIGVsc2UKICAg
ICAgaW5zZXJ0X2F1eChwb3NpdGlvbiwgeCk7CiAgICByZXR1cm4gYmVnaW4oKSArIG47CiAgfQog
IGl0ZXJhdG9yIGluc2VydChpdGVyYXRvciBwb3NpdGlvbikgeyByZXR1cm4gaW5zZXJ0KHBvc2l0
aW9uLCBUKCkpOyB9CgogIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgogIHZvaWQgaW5z
ZXJ0KGl0ZXJhdG9yIHBvc2l0aW9uLCBJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9y
IGxhc3QpIHsKICAgIHJhbmdlX2luc2VydChwb3NpdGlvbiwgZmlyc3QsIGxhc3QsIGl0ZXJhdG9y
X2NhdGVnb3J5KGZpcnN0KSk7CiAgfQoKCgoKCiAgdm9pZCBpbnNlcnQgKGl0ZXJhdG9yIHBvcywg
c2l6ZV90eXBlIG4sIGNvbnN0IFQmIHgpOwogIHZvaWQgaW5zZXJ0IChpdGVyYXRvciBwb3MsIGlu
dCBuLCBjb25zdCBUJiB4KSB7CiAgICBpbnNlcnQocG9zLCAoc2l6ZV90eXBlKSBuLCB4KTsKICB9
CiAgdm9pZCBpbnNlcnQgKGl0ZXJhdG9yIHBvcywgbG9uZyBuLCBjb25zdCBUJiB4KSB7CiAgICBp
bnNlcnQocG9zLCAoc2l6ZV90eXBlKSBuLCB4KTsKICB9CgogIHZvaWQgcG9wX2JhY2soKSB7CiAg
ICAtLWZpbmlzaDsKICAgIGRlc3Ryb3koZmluaXNoKTsKICB9CiAgaXRlcmF0b3IgZXJhc2UoaXRl
cmF0b3IgcG9zaXRpb24pIHsKICAgIGlmIChwb3NpdGlvbiArIDEgIT0gZW5kKCkpCiAgICAgIGNv
cHkocG9zaXRpb24gKyAxLCBmaW5pc2gsIHBvc2l0aW9uKTsKICAgIC0tZmluaXNoOwogICAgZGVz
dHJveShmaW5pc2gpOwogICAgcmV0dXJuIHBvc2l0aW9uOwogIH0KICBpdGVyYXRvciBlcmFzZShp
dGVyYXRvciBmaXJzdCwgaXRlcmF0b3IgbGFzdCkgewogICAgaXRlcmF0b3IgaSA9IGNvcHkobGFz
dCwgZmluaXNoLCBmaXJzdCk7CiAgICBkZXN0cm95KGksIGZpbmlzaCk7CiAgICBmaW5pc2ggPSBm
aW5pc2ggLSAobGFzdCAtIGZpcnN0KTsKICAgIHJldHVybiBmaXJzdDsKICB9CiAgdm9pZCByZXNp
emUoc2l6ZV90eXBlIG5ld19zaXplLCBjb25zdCBUJiB4KSB7CiAgICBpZiAobmV3X3NpemUgPCBz
aXplKCkpIAogICAgICBlcmFzZShiZWdpbigpICsgbmV3X3NpemUsIGVuZCgpKTsKICAgIGVsc2UK
ICAgICAgaW5zZXJ0KGVuZCgpLCBuZXdfc2l6ZSAtIHNpemUoKSwgeCk7CiAgfQogIHZvaWQgcmVz
aXplKHNpemVfdHlwZSBuZXdfc2l6ZSkgeyByZXNpemUobmV3X3NpemUsIFQoKSk7IH0KICB2b2lk
IGNsZWFyKCkgeyBlcmFzZShiZWdpbigpLCBlbmQoKSk7IH0KCnByb3RlY3RlZDoKICBpdGVyYXRv
ciBhbGxvY2F0ZV9hbmRfZmlsbChzaXplX3R5cGUgbiwgY29uc3QgVCYgeCkgewogICAgaXRlcmF0
b3IgcmVzdWx0ID0gZGF0YV9hbGxvY2F0b3I6OmFsbG9jYXRlKG4pOwogICAgdHJ5ICB7CiAgICAg
IHVuaW5pdGlhbGl6ZWRfZmlsbF9uKHJlc3VsdCwgbiwgeCk7CiAgICAgIHJldHVybiByZXN1bHQ7
CiAgICB9CiAgICBjYXRjaCguLi4pIHsgIGRhdGFfYWxsb2NhdG9yOjpkZWFsbG9jYXRlKHJlc3Vs
dCwgbikgOyB0aHJvdzsgfSA7CiAgfQoKCiAgdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyYXRv
cj4KICBpdGVyYXRvciBhbGxvY2F0ZV9hbmRfY29weShzaXplX3R5cGUgbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBs
YXN0KSB7CiAgICBpdGVyYXRvciByZXN1bHQgPSBkYXRhX2FsbG9jYXRvcjo6YWxsb2NhdGUobik7
CiAgICB0cnkgIHsKICAgICAgdW5pbml0aWFsaXplZF9jb3B5KGZpcnN0LCBsYXN0LCByZXN1bHQp
OwogICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgY2F0Y2goLi4uKSB7ICBkYXRhX2FsbG9j
YXRvcjo6ZGVhbGxvY2F0ZShyZXN1bHQsIG4pIDsgdGhyb3c7IH0gOwogIH0KIyAyNDMgIi91c3Iv
aW5jbHVkZS9nKystMi9zdGxfdmVjdG9yLmgiIDMKCgoKCiAgdGVtcGxhdGUgPGNsYXNzIElucHV0
SXRlcmF0b3I+CiAgdm9pZCByYW5nZV9pbml0aWFsaXplKElucHV0SXRlcmF0b3IgZmlyc3QsIElu
cHV0SXRlcmF0b3IgbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3Jf
dGFnKSB7CiAgICBmb3IgKCA7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCiAgICAgIHB1c2hfYmFj
aygqZmlyc3QpOwogIH0KCiAgIAogICAKICB0ZW1wbGF0ZSA8Y2xhc3MgRm9yd2FyZEl0ZXJhdG9y
PgogIHZvaWQgcmFuZ2VfaW5pdGlhbGl6ZShGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJ
dGVyYXRvciBsYXN0LAogICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkX2l0ZXJhdG9yX3Rh
ZykgewogICAgc2l6ZV90eXBlIG4gPSAwOwogICAgZGlzdGFuY2UoZmlyc3QsIGxhc3QsIG4pOwog
ICAgc3RhcnQgPSBhbGxvY2F0ZV9hbmRfY29weShuLCBmaXJzdCwgbGFzdCk7CiAgICBmaW5pc2gg
PSBzdGFydCArIG47CiAgICBlbmRfb2Zfc3RvcmFnZSA9IGZpbmlzaDsKICB9CgogIHRlbXBsYXRl
IDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgogIHZvaWQgcmFuZ2VfaW5zZXJ0KGl0ZXJhdG9yIHBvcywK
ICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxh
c3QsCiAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKTsKCiAgdGVtcGxhdGUg
PGNsYXNzIEZvcndhcmRJdGVyYXRvcj4KICB2b2lkIHJhbmdlX2luc2VydChpdGVyYXRvciBwb3Ms
CiAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0
b3IgbGFzdCwKICAgICAgICAgICAgICAgICAgICBmb3J3YXJkX2l0ZXJhdG9yX3RhZyk7CgoKfTsK
CnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBbGxvYz4KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCB2ZWN0b3I8VCwgQWxsb2M+JiB4LCBjb25zdCB2ZWN0b3I8VCwgQWxsb2M+JiB5KSB7CiAg
cmV0dXJuIHguc2l6ZSgpID09IHkuc2l6ZSgpICYmIGVxdWFsKHguYmVnaW4oKSwgeC5lbmQoKSwg
eS5iZWdpbigpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEFsbG9jPgppbmxpbmUgYm9v
bCBvcGVyYXRvcjwoY29uc3QgdmVjdG9yPFQsIEFsbG9jPiYgeCwgY29uc3QgdmVjdG9yPFQsIEFs
bG9jPiYgeSkgewogIHJldHVybiBsZXhpY29ncmFwaGljYWxfY29tcGFyZSh4LmJlZ2luKCksIHgu
ZW5kKCksIHkuYmVnaW4oKSwgeS5lbmQoKSk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNz
IEFsbG9jPgppbmxpbmUgdm9pZCBzd2FwKHZlY3RvcjxULCBBbGxvYz4mIHgsIHZlY3RvcjxULCBB
bGxvYz4mIHkpIHsKICB4LnN3YXAoeSk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEFs
bG9jPgp2ZWN0b3I8VCwgQWxsb2M+JiB2ZWN0b3I8VCwgQWxsb2M+OjpvcGVyYXRvcj0oY29uc3Qg
dmVjdG9yPFQsIEFsbG9jPiYgeCkgewogIGlmICgmeCAhPSB0aGlzKSB7CiAgICBpZiAoeC5zaXpl
KCkgPiBjYXBhY2l0eSgpKSB7CiAgICAgIGl0ZXJhdG9yIHRtcCA9IGFsbG9jYXRlX2FuZF9jb3B5
KHguZW5kKCkgLSB4LmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHguYmVnaW4oKSwgeC5lbmQoKSk7CiAgICAgIGRlc3Ryb3koc3RhcnQsIGZpbmlzaCk7CiAg
ICAgIGRlYWxsb2NhdGUoKTsKICAgICAgc3RhcnQgPSB0bXA7CiAgICAgIGVuZF9vZl9zdG9yYWdl
ID0gc3RhcnQgKyAoeC5lbmQoKSAtIHguYmVnaW4oKSk7CiAgICB9CiAgICBlbHNlIGlmIChzaXpl
KCkgPj0geC5zaXplKCkpIHsKICAgICAgaXRlcmF0b3IgaSA9IGNvcHkoeC5iZWdpbigpLCB4LmVu
ZCgpLCBiZWdpbigpKTsKICAgICAgZGVzdHJveShpLCBmaW5pc2gpOwogICAgfQogICAgZWxzZSB7
CiAgICAgIGNvcHkoeC5iZWdpbigpLCB4LmJlZ2luKCkgKyBzaXplKCksIHN0YXJ0KTsKICAgICAg
dW5pbml0aWFsaXplZF9jb3B5KHguYmVnaW4oKSArIHNpemUoKSwgeC5lbmQoKSwgZmluaXNoKTsK
ICAgIH0KICAgIGZpbmlzaCA9IHN0YXJ0ICsgeC5zaXplKCk7CiAgfQogIHJldHVybiAqdGhpczsK
fQoKdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEFsbG9jPgp2b2lkIHZlY3RvcjxULCBBbGxvYz46
Omluc2VydF9hdXgoaXRlcmF0b3IgcG9zaXRpb24sIGNvbnN0IFQmIHgpIHsKICBpZiAoZmluaXNo
ICE9IGVuZF9vZl9zdG9yYWdlKSB7CiAgICBjb25zdHJ1Y3QoZmluaXNoLCAqKGZpbmlzaCAtIDEp
KTsKICAgICsrZmluaXNoOwogICAgVCB4X2NvcHkgPSB4OwogICAgY29weV9iYWNrd2FyZChwb3Np
dGlvbiwgZmluaXNoIC0gMiwgZmluaXNoIC0gMSk7CiAgICAqcG9zaXRpb24gPSB4X2NvcHk7CiAg
fQogIGVsc2UgewogICAgY29uc3Qgc2l6ZV90eXBlIG9sZF9zaXplID0gc2l6ZSgpOwogICAgY29u
c3Qgc2l6ZV90eXBlIGxlbiA9IG9sZF9zaXplICE9IDAgPyAyICogb2xkX3NpemUgOiAxOwogICAg
aXRlcmF0b3IgbmV3X3N0YXJ0ID0gZGF0YV9hbGxvY2F0b3I6OmFsbG9jYXRlKGxlbik7CiAgICBp
dGVyYXRvciBuZXdfZmluaXNoID0gbmV3X3N0YXJ0OwogICAgdHJ5ICB7CiAgICAgIG5ld19maW5p
c2ggPSB1bmluaXRpYWxpemVkX2NvcHkoc3RhcnQsIHBvc2l0aW9uLCBuZXdfc3RhcnQpOwogICAg
ICBjb25zdHJ1Y3QobmV3X2ZpbmlzaCwgeCk7CiAgICAgICsrbmV3X2ZpbmlzaDsKICAgICAgbmV3
X2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfY29weShwb3NpdGlvbiwgZmluaXNoLCBuZXdfZmluaXNo
KTsKICAgIH0KCgogICAgY2F0Y2goLi4uKSB7CiAgICAgIGRlc3Ryb3kobmV3X3N0YXJ0LCBuZXdf
ZmluaXNoKTsgCiAgICAgIGRhdGFfYWxsb2NhdG9yOjpkZWFsbG9jYXRlKG5ld19zdGFydCwgbGVu
KTsKICAgICAgdGhyb3c7CiAgICB9CgogICAgZGVzdHJveShiZWdpbigpLCBlbmQoKSk7CiAgICBk
ZWFsbG9jYXRlKCk7CiAgICBzdGFydCA9IG5ld19zdGFydDsKICAgIGZpbmlzaCA9IG5ld19maW5p
c2g7CiAgICBlbmRfb2Zfc3RvcmFnZSA9IG5ld19zdGFydCArIGxlbjsKICB9Cn0KCnRlbXBsYXRl
IDxjbGFzcyBULCBjbGFzcyBBbGxvYz4Kdm9pZCB2ZWN0b3I8VCwgQWxsb2M+OjppbnNlcnQoaXRl
cmF0b3IgcG9zaXRpb24sIHNpemVfdHlwZSBuLCBjb25zdCBUJiB4KSB7CiAgaWYgKG4gIT0gMCkg
ewogICAgaWYgKHNpemVfdHlwZShlbmRfb2Zfc3RvcmFnZSAtIGZpbmlzaCkgPj0gbikgewogICAg
ICBUIHhfY29weSA9IHg7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBlbGVtc19hZnRlciA9IGZpbmlz
aCAtIHBvc2l0aW9uOwogICAgICBpdGVyYXRvciBvbGRfZmluaXNoID0gZmluaXNoOwogICAgICBp
ZiAoZWxlbXNfYWZ0ZXIgPiBuKSB7CiAgICAgICAgdW5pbml0aWFsaXplZF9jb3B5KGZpbmlzaCAt
IG4sIGZpbmlzaCwgZmluaXNoKTsKICAgICAgICBmaW5pc2ggKz0gbjsKICAgICAgICBjb3B5X2Jh
Y2t3YXJkKHBvc2l0aW9uLCBvbGRfZmluaXNoIC0gbiwgb2xkX2ZpbmlzaCk7CiAgICAgICAgZmls
bChwb3NpdGlvbiwgcG9zaXRpb24gKyBuLCB4X2NvcHkpOwogICAgICB9CiAgICAgIGVsc2Ugewog
ICAgICAgIHVuaW5pdGlhbGl6ZWRfZmlsbF9uKGZpbmlzaCwgbiAtIGVsZW1zX2FmdGVyLCB4X2Nv
cHkpOwogICAgICAgIGZpbmlzaCArPSBuIC0gZWxlbXNfYWZ0ZXI7CiAgICAgICAgdW5pbml0aWFs
aXplZF9jb3B5KHBvc2l0aW9uLCBvbGRfZmluaXNoLCBmaW5pc2gpOwogICAgICAgIGZpbmlzaCAr
PSBlbGVtc19hZnRlcjsKICAgICAgICBmaWxsKHBvc2l0aW9uLCBvbGRfZmluaXNoLCB4X2NvcHkp
OwogICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIG9sZF9zaXpl
ID0gc2l6ZSgpOyAgICAgICAgCiAgICAgIGNvbnN0IHNpemVfdHlwZSBsZW4gPSBvbGRfc2l6ZSAr
IG1heChvbGRfc2l6ZSwgbik7CiAgICAgIGl0ZXJhdG9yIG5ld19zdGFydCA9IGRhdGFfYWxsb2Nh
dG9yOjphbGxvY2F0ZShsZW4pOwogICAgICBpdGVyYXRvciBuZXdfZmluaXNoID0gbmV3X3N0YXJ0
OwogICAgICB0cnkgIHsKICAgICAgICBuZXdfZmluaXNoID0gdW5pbml0aWFsaXplZF9jb3B5KHN0
YXJ0LCBwb3NpdGlvbiwgbmV3X3N0YXJ0KTsKICAgICAgICBuZXdfZmluaXNoID0gdW5pbml0aWFs
aXplZF9maWxsX24obmV3X2ZpbmlzaCwgbiwgeCk7CiAgICAgICAgbmV3X2ZpbmlzaCA9IHVuaW5p
dGlhbGl6ZWRfY29weShwb3NpdGlvbiwgZmluaXNoLCBuZXdfZmluaXNoKTsKICAgICAgfQoKICAg
ICAgY2F0Y2goLi4uKSB7CiAgICAgICAgZGVzdHJveShuZXdfc3RhcnQsIG5ld19maW5pc2gpOwog
ICAgICAgIGRhdGFfYWxsb2NhdG9yOjpkZWFsbG9jYXRlKG5ld19zdGFydCwgbGVuKTsKICAgICAg
ICB0aHJvdzsKICAgICAgfQoKICAgICAgZGVzdHJveShzdGFydCwgZmluaXNoKTsKICAgICAgZGVh
bGxvY2F0ZSgpOwogICAgICBzdGFydCA9IG5ld19zdGFydDsKICAgICAgZmluaXNoID0gbmV3X2Zp
bmlzaDsKICAgICAgZW5kX29mX3N0b3JhZ2UgPSBuZXdfc3RhcnQgKyBsZW47CiAgICB9CiAgfQp9
CgoKCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBbGxvYz4gdGVtcGxhdGUgPGNsYXNzIElucHV0
SXRlcmF0b3I+CnZvaWQgdmVjdG9yPFQsIEFsbG9jPjo6cmFuZ2VfaW5zZXJ0KGl0ZXJhdG9yIHBv
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvciBmaXJz
dCwgSW5wdXRJdGVyYXRvciBsYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnB1dF9pdGVyYXRvcl90YWcpIHsKICBmb3IgKCA7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3Qp
IHsKICAgIHBvcyA9IGluc2VydChwb3MsICpmaXJzdCk7CiAgICArK3BvczsKICB9Cn0KCnRlbXBs
YXRlIDxjbGFzcyBULCBjbGFzcyBBbGxvYz4gdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyYXRv
cj4Kdm9pZCB2ZWN0b3I8VCwgQWxsb2M+OjpyYW5nZV9pbnNlcnQoaXRlcmF0b3IgcG9zaXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvciBmaXJz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yIGxh
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRfaXRlcmF0b3Jf
dGFnKSB7CiAgaWYgKGZpcnN0ICE9IGxhc3QpIHsKICAgIHNpemVfdHlwZSBuID0gMDsKICAgIGRp
c3RhbmNlKGZpcnN0LCBsYXN0LCBuKTsKICAgIGlmIChzaXplX3R5cGUoZW5kX29mX3N0b3JhZ2Ug
LSBmaW5pc2gpID49IG4pIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIGVsZW1zX2FmdGVyID0gZmlu
aXNoIC0gcG9zaXRpb247CiAgICAgIGl0ZXJhdG9yIG9sZF9maW5pc2ggPSBmaW5pc2g7CiAgICAg
IGlmIChlbGVtc19hZnRlciA+IG4pIHsKICAgICAgICB1bmluaXRpYWxpemVkX2NvcHkoZmluaXNo
IC0gbiwgZmluaXNoLCBmaW5pc2gpOwogICAgICAgIGZpbmlzaCArPSBuOwogICAgICAgIGNvcHlf
YmFja3dhcmQocG9zaXRpb24sIG9sZF9maW5pc2ggLSBuLCBvbGRfZmluaXNoKTsKICAgICAgICBj
b3B5KGZpcnN0LCBsYXN0LCBwb3NpdGlvbik7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAg
Rm9yd2FyZEl0ZXJhdG9yIG1pZCA9IGZpcnN0OwogICAgICAgIGFkdmFuY2UobWlkLCBlbGVtc19h
ZnRlcik7CiAgICAgICAgdW5pbml0aWFsaXplZF9jb3B5KG1pZCwgbGFzdCwgZmluaXNoKTsKICAg
ICAgICBmaW5pc2ggKz0gbiAtIGVsZW1zX2FmdGVyOwogICAgICAgIHVuaW5pdGlhbGl6ZWRfY29w
eShwb3NpdGlvbiwgb2xkX2ZpbmlzaCwgZmluaXNoKTsKICAgICAgICBmaW5pc2ggKz0gZWxlbXNf
YWZ0ZXI7CiAgICAgICAgY29weShmaXJzdCwgbWlkLCBwb3NpdGlvbik7CiAgICAgIH0KICAgIH0K
ICAgIGVsc2UgewogICAgICBjb25zdCBzaXplX3R5cGUgb2xkX3NpemUgPSBzaXplKCk7CiAgICAg
IGNvbnN0IHNpemVfdHlwZSBsZW4gPSBvbGRfc2l6ZSArIG1heChvbGRfc2l6ZSwgbik7CiAgICAg
IGl0ZXJhdG9yIG5ld19zdGFydCA9IGRhdGFfYWxsb2NhdG9yOjphbGxvY2F0ZShsZW4pOwogICAg
ICBpdGVyYXRvciBuZXdfZmluaXNoID0gbmV3X3N0YXJ0OwogICAgICB0cnkgIHsKICAgICAgICBu
ZXdfZmluaXNoID0gdW5pbml0aWFsaXplZF9jb3B5KHN0YXJ0LCBwb3NpdGlvbiwgbmV3X3N0YXJ0
KTsKICAgICAgICBuZXdfZmluaXNoID0gdW5pbml0aWFsaXplZF9jb3B5KGZpcnN0LCBsYXN0LCBu
ZXdfZmluaXNoKTsKICAgICAgICBuZXdfZmluaXNoID0gdW5pbml0aWFsaXplZF9jb3B5KHBvc2l0
aW9uLCBmaW5pc2gsIG5ld19maW5pc2gpOwogICAgICB9CgogICAgICBjYXRjaCguLi4pIHsKICAg
ICAgICBkZXN0cm95KG5ld19zdGFydCwgbmV3X2ZpbmlzaCk7CiAgICAgICAgZGF0YV9hbGxvY2F0
b3I6OmRlYWxsb2NhdGUobmV3X3N0YXJ0LCBsZW4pOwogICAgICAgIHRocm93OwogICAgICB9Cgog
ICAgICBkZXN0cm95KHN0YXJ0LCBmaW5pc2gpOwogICAgICBkZWFsbG9jYXRlKCk7CiAgICAgIHN0
YXJ0ID0gbmV3X3N0YXJ0OwogICAgICBmaW5pc2ggPSBuZXdfZmluaXNoOwogICAgICBlbmRfb2Zf
c3RvcmFnZSA9IG5ld19zdGFydCArIGxlbjsKICAgIH0KICB9Cn0KCiMgNTIyICIvdXNyL2luY2x1
ZGUvZysrLTIvc3RsX3ZlY3Rvci5oIiAzCgoKCgoKCiAgCgoKCiAKIAogCiMgMzQgIi91c3IvaW5j
bHVkZS9nKystMi92ZWN0b3IiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZysrLTIvc3RsX2J2ZWN0
b3IuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKICAKCnN0YXRpYyBj
b25zdCBpbnQgX19XT1JEX0JJVCA9IGludCg4ICpzaXplb2YodW5zaWduZWQgaW50KSk7CgoKCgoK
c3RydWN0IF9fYml0X3JlZmVyZW5jZSB7CiAgdW5zaWduZWQgaW50KiBwOwogIHVuc2lnbmVkIGlu
dCBtYXNrOwogIF9fYml0X3JlZmVyZW5jZSh1bnNpZ25lZCBpbnQqIHgsIHVuc2lnbmVkIGludCB5
KSA6IHAoeCksIG1hc2soeSkge30KCnB1YmxpYzoKICBfX2JpdF9yZWZlcmVuY2UoKSA6IHAoMCks
IG1hc2soMCkge30KICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISghKCpwICYgbWFz
aykpOyB9CiAgX19iaXRfcmVmZXJlbmNlJiBvcGVyYXRvcj0oYm9vbCB4KSB7CiAgICBpZiAoeCkg
ICAgICAKICAgICAgKnAgfD0gbWFzazsKICAgIGVsc2UgCiAgICAgICpwICY9IH5tYXNrOwogICAg
cmV0dXJuICp0aGlzOwogIH0KICBfX2JpdF9yZWZlcmVuY2UmIG9wZXJhdG9yPShjb25zdCBfX2Jp
dF9yZWZlcmVuY2UmIHgpIHsgcmV0dXJuICp0aGlzID0gYm9vbCh4KTsgfQogIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBfX2JpdF9yZWZlcmVuY2UmIHgpIGNvbnN0IHsKICAgIHJldHVybiBib29sKCp0
aGlzKSA9PSBib29sKHgpOwogIH0KICBib29sIG9wZXJhdG9yPChjb25zdCBfX2JpdF9yZWZlcmVu
Y2UmIHgpIGNvbnN0IHsKICAgIHJldHVybiBib29sKCp0aGlzKSA8IGJvb2woeCk7CiAgfQogIHZv
aWQgZmxpcCgpIHsgKnAgXj0gbWFzazsgfQp9OwoKaW5saW5lIHZvaWQgc3dhcChfX2JpdF9yZWZl
cmVuY2UgeCwgX19iaXRfcmVmZXJlbmNlIHkpIHsKICBib29sIHRtcCA9IHg7CiAgeCA9IHk7CiAg
eSA9IHRtcDsKfQoKc3RydWN0IF9fYml0X2l0ZXJhdG9yIDogcHVibGljIHJhbmRvbV9hY2Nlc3Nf
aXRlcmF0b3I8Ym9vbCwgcHRyZGlmZl90PiB7CiAgdHlwZWRlZiBfX2JpdF9yZWZlcmVuY2UgIHJl
ZmVyZW5jZTsKICB0eXBlZGVmIF9fYml0X3JlZmVyZW5jZSogcG9pbnRlcjsKICB0eXBlZGVmIF9f
Yml0X2l0ZXJhdG9yIGl0ZXJhdG9yOwoKICB1bnNpZ25lZCBpbnQqIHA7CiAgdW5zaWduZWQgaW50
IG9mZnNldDsKICB2b2lkIGJ1bXBfdXAoKSB7CiAgICBpZiAob2Zmc2V0KysgPT0gX19XT1JEX0JJ
VCAtIDEpIHsKICAgICAgb2Zmc2V0ID0gMDsKICAgICAgKytwOwogICAgfQogIH0KICB2b2lkIGJ1
bXBfZG93bigpIHsKICAgIGlmIChvZmZzZXQtLSA9PSAwKSB7CiAgICAgIG9mZnNldCA9IF9fV09S
RF9CSVQgLSAxOwogICAgICAtLXA7CiAgICB9CiAgfQoKICBfX2JpdF9pdGVyYXRvcigpIDogcCgw
KSwgb2Zmc2V0KDApIHt9CiAgX19iaXRfaXRlcmF0b3IodW5zaWduZWQgaW50KiB4LCB1bnNpZ25l
ZCBpbnQgeSkgOiBwKHgpLCBvZmZzZXQoeSkge30KICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29u
c3QgeyByZXR1cm4gcmVmZXJlbmNlKHAsIDFVIDw8IG9mZnNldCk7IH0KICBpdGVyYXRvciYgb3Bl
cmF0b3IrKygpIHsKICAgIGJ1bXBfdXAoKTsKICAgIHJldHVybiAqdGhpczsKICB9CiAgaXRlcmF0
b3Igb3BlcmF0b3IrKyhpbnQpIHsKICAgIGl0ZXJhdG9yIHRtcCA9ICp0aGlzOwogICAgYnVtcF91
cCgpOwogICAgcmV0dXJuIHRtcDsKICB9CiAgaXRlcmF0b3ImIG9wZXJhdG9yLS0oKSB7CiAgICBi
dW1wX2Rvd24oKTsKICAgIHJldHVybiAqdGhpczsKICB9CiAgaXRlcmF0b3Igb3BlcmF0b3ItLShp
bnQpIHsKICAgIGl0ZXJhdG9yIHRtcCA9ICp0aGlzOwogICAgYnVtcF9kb3duKCk7CiAgICByZXR1
cm4gdG1wOwogIH0KICBpdGVyYXRvciYgb3BlcmF0b3IrPShkaWZmZXJlbmNlX3R5cGUgaSkgewog
ICAgZGlmZmVyZW5jZV90eXBlIG4gPSBpICsgb2Zmc2V0OwogICAgcCArPSBuIC8gX19XT1JEX0JJ
VDsKICAgIG4gPSBuICUgX19XT1JEX0JJVDsKICAgIGlmIChuIDwgMCkgewogICAgICBvZmZzZXQg
PSAodW5zaWduZWQgaW50KSBuICsgX19XT1JEX0JJVDsKICAgICAgLS1wOwogICAgfSBlbHNlCiAg
ICAgIG9mZnNldCA9ICh1bnNpZ25lZCBpbnQpIG47CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIGl0
ZXJhdG9yJiBvcGVyYXRvci09KGRpZmZlcmVuY2VfdHlwZSBpKSB7CiAgICAqdGhpcyArPSAtaTsK
ICAgIHJldHVybiAqdGhpczsKICB9CiAgaXRlcmF0b3Igb3BlcmF0b3IrKGRpZmZlcmVuY2VfdHlw
ZSBpKSBjb25zdCB7CiAgICBpdGVyYXRvciB0bXAgPSAqdGhpczsKICAgIHJldHVybiB0bXAgKz0g
aTsKICB9CiAgaXRlcmF0b3Igb3BlcmF0b3ItKGRpZmZlcmVuY2VfdHlwZSBpKSBjb25zdCB7CiAg
ICBpdGVyYXRvciB0bXAgPSAqdGhpczsKICAgIHJldHVybiB0bXAgLT0gaTsKICB9CiAgZGlmZmVy
ZW5jZV90eXBlIG9wZXJhdG9yLShpdGVyYXRvciB4KSBjb25zdCB7CiAgICByZXR1cm4gX19XT1JE
X0JJVCAqIChwIC0geC5wKSArIG9mZnNldCAtIHgub2Zmc2V0OwogIH0KICByZWZlcmVuY2Ugb3Bl
cmF0b3JbXShkaWZmZXJlbmNlX3R5cGUgaSkgeyByZXR1cm4gKigqdGhpcyArIGkpOyB9CiAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiB4KSBjb25zdCB7CiAgICByZXR1cm4gcCA9PSB4
LnAgJiYgb2Zmc2V0ID09IHgub2Zmc2V0OwogIH0KICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRl
cmF0b3ImIHgpIGNvbnN0IHsKICAgIHJldHVybiBwICE9IHgucCB8fCBvZmZzZXQgIT0geC5vZmZz
ZXQ7CiAgfQogIGJvb2wgb3BlcmF0b3I8KGl0ZXJhdG9yIHgpIGNvbnN0IHsKICAgIHJldHVybiBw
IDwgeC5wIHx8IChwID09IHgucCAmJiBvZmZzZXQgPCB4Lm9mZnNldCk7CiAgfQp9OwoKc3RydWN0
IF9fYml0X2NvbnN0X2l0ZXJhdG9yCiAgOiBwdWJsaWMgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxi
b29sLCBwdHJkaWZmX3Q+CnsKICB0eXBlZGVmIGJvb2wgICAgICAgICAgICAgICAgIHJlZmVyZW5j
ZTsKICB0eXBlZGVmIGJvb2wgICAgICAgICAgICAgICAgIGNvbnN0X3JlZmVyZW5jZTsKICB0eXBl
ZGVmIGNvbnN0IGJvb2wqICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiBfX2JpdF9jb25zdF9p
dGVyYXRvciBjb25zdF9pdGVyYXRvcjsKCiAgdW5zaWduZWQgaW50KiBwOwogIHVuc2lnbmVkIGlu
dCBvZmZzZXQ7CiAgdm9pZCBidW1wX3VwKCkgewogICAgaWYgKG9mZnNldCsrID09IF9fV09SRF9C
SVQgLSAxKSB7CiAgICAgIG9mZnNldCA9IDA7CiAgICAgICsrcDsKICAgIH0KICB9CiAgdm9pZCBi
dW1wX2Rvd24oKSB7CiAgICBpZiAob2Zmc2V0LS0gPT0gMCkgewogICAgICBvZmZzZXQgPSBfX1dP
UkRfQklUIC0gMTsKICAgICAgLS1wOwogICAgfQogIH0KCiAgX19iaXRfY29uc3RfaXRlcmF0b3Io
KSA6IHAoMCksIG9mZnNldCgwKSB7fQogIF9fYml0X2NvbnN0X2l0ZXJhdG9yKHVuc2lnbmVkIGlu
dCogeCwgdW5zaWduZWQgaW50IHkpIDogcCh4KSwgb2Zmc2V0KHkpIHt9CiAgX19iaXRfY29uc3Rf
aXRlcmF0b3IoY29uc3QgX19iaXRfaXRlcmF0b3ImIHgpIDogcCh4LnApLCBvZmZzZXQoeC5vZmZz
ZXQpIHt9CiAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsKICAgIHJldHVybiBf
X2JpdF9yZWZlcmVuY2UocCwgMVUgPDwgb2Zmc2V0KTsKICB9CiAgY29uc3RfaXRlcmF0b3ImIG9w
ZXJhdG9yKysoKSB7CiAgICBidW1wX3VwKCk7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIGNvbnN0
X2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7CiAgICBjb25zdF9pdGVyYXRvciB0bXAgPSAqdGhp
czsKICAgIGJ1bXBfdXAoKTsKICAgIHJldHVybiB0bXA7CiAgfQogIGNvbnN0X2l0ZXJhdG9yJiBv
cGVyYXRvci0tKCkgewogICAgYnVtcF9kb3duKCk7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIGNv
bnN0X2l0ZXJhdG9yIG9wZXJhdG9yLS0oaW50KSB7CiAgICBjb25zdF9pdGVyYXRvciB0bXAgPSAq
dGhpczsKICAgIGJ1bXBfZG93bigpOwogICAgcmV0dXJuIHRtcDsKICB9CiAgY29uc3RfaXRlcmF0
b3ImIG9wZXJhdG9yKz0oZGlmZmVyZW5jZV90eXBlIGkpIHsKICAgIGRpZmZlcmVuY2VfdHlwZSBu
ID0gaSArIG9mZnNldDsKICAgIHAgKz0gbiAvIF9fV09SRF9CSVQ7CiAgICBuID0gbiAlIF9fV09S
RF9CSVQ7CiAgICBpZiAobiA8IDApIHsKICAgICAgb2Zmc2V0ID0gKHVuc2lnbmVkIGludCkgbiAr
IF9fV09SRF9CSVQ7CiAgICAgIC0tcDsKICAgIH0gZWxzZQogICAgICBvZmZzZXQgPSAodW5zaWdu
ZWQgaW50KSBuOwogICAgcmV0dXJuICp0aGlzOwogIH0KICBjb25zdF9pdGVyYXRvciYgb3BlcmF0
b3ItPShkaWZmZXJlbmNlX3R5cGUgaSkgewogICAgKnRoaXMgKz0gLWk7CiAgICByZXR1cm4gKnRo
aXM7CiAgfQogIGNvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yKyhkaWZmZXJlbmNlX3R5cGUgaSkgY29u
c3QgewogICAgY29uc3RfaXRlcmF0b3IgdG1wID0gKnRoaXM7CiAgICByZXR1cm4gdG1wICs9IGk7
CiAgfQogIGNvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yLShkaWZmZXJlbmNlX3R5cGUgaSkgY29uc3Qg
ewogICAgY29uc3RfaXRlcmF0b3IgdG1wID0gKnRoaXM7CiAgICByZXR1cm4gdG1wIC09IGk7CiAg
fQogIGRpZmZlcmVuY2VfdHlwZSBvcGVyYXRvci0oY29uc3RfaXRlcmF0b3IgeCkgY29uc3Qgewog
ICAgcmV0dXJuIF9fV09SRF9CSVQgKiAocCAtIHgucCkgKyBvZmZzZXQgLSB4Lm9mZnNldDsKICB9
CiAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10oZGlmZmVyZW5jZV90eXBlIGkpIHsgCiAgICBy
ZXR1cm4gKigqdGhpcyArIGkpOyAKICB9CiAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNvbnN0X2l0
ZXJhdG9yJiB4KSBjb25zdCB7CiAgICByZXR1cm4gcCA9PSB4LnAgJiYgb2Zmc2V0ID09IHgub2Zm
c2V0OwogIH0KICBib29sIG9wZXJhdG9yIT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIHgpIGNvbnN0
IHsKICAgIHJldHVybiBwICE9IHgucCB8fCBvZmZzZXQgIT0geC5vZmZzZXQ7CiAgfQogIGJvb2wg
b3BlcmF0b3I8KGNvbnN0X2l0ZXJhdG9yIHgpIGNvbnN0IHsKICAgIHJldHVybiBwIDwgeC5wIHx8
IChwID09IHgucCAmJiBvZmZzZXQgPCB4Lm9mZnNldCk7CiAgfQp9OwoKIAogCiAKIAogCgoKCgoK
CgoKCgogICAgICAgIAoKICAgICAgICAKdGVtcGxhdGU8Y2xhc3MgQWxsb2M+IGNsYXNzIHZlY3Rv
cjxib29sLCBBbGxvYz4KCgoKewoKICB0eXBlZGVmIHNpbXBsZV9hbGxvYzx1bnNpZ25lZCBpbnQs
IEFsbG9jPiBkYXRhX2FsbG9jYXRvcjsKCgoKcHVibGljOgogIHR5cGVkZWYgYm9vbCB2YWx1ZV90
eXBlOwogIHR5cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZm
ZXJlbmNlX3R5cGU7IAogIHR5cGVkZWYgX19iaXRfcmVmZXJlbmNlIHJlZmVyZW5jZTsKICB0eXBl
ZGVmIGJvb2wgY29uc3RfcmVmZXJlbmNlOwogIHR5cGVkZWYgX19iaXRfcmVmZXJlbmNlKiBwb2lu
dGVyOwogIHR5cGVkZWYgY29uc3QgYm9vbCogY29uc3RfcG9pbnRlcjsKCiAgdHlwZWRlZiBfX2Jp
dF9pdGVyYXRvciAgICAgICAgICAgICAgICBpdGVyYXRvcjsKICB0eXBlZGVmIF9fYml0X2NvbnN0
X2l0ZXJhdG9yICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yOwoKCiAgdHlwZWRlZiByZXZlcnNlX2l0
ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwogIHR5cGVkZWYg
cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4gcmV2ZXJzZV9pdGVyYXRvcjsKCgoKCgoKCnByb3Rl
Y3RlZDoKICBpdGVyYXRvciBzdGFydDsKICBpdGVyYXRvciBmaW5pc2g7CiAgdW5zaWduZWQgaW50
KiBlbmRfb2Zfc3RvcmFnZTsKICB1bnNpZ25lZCBpbnQqIGJpdF9hbGxvYyhzaXplX3R5cGUgbikg
ewogICAgcmV0dXJuIGRhdGFfYWxsb2NhdG9yOjphbGxvY2F0ZSgobiArIF9fV09SRF9CSVQgLSAx
KS9fX1dPUkRfQklUKTsKICB9CiAgdm9pZCBkZWFsbG9jYXRlKCkgewogICAgaWYgKHN0YXJ0LnAp
CiAgICAgIGRhdGFfYWxsb2NhdG9yOjpkZWFsbG9jYXRlKHN0YXJ0LnAsIGVuZF9vZl9zdG9yYWdl
IC0gc3RhcnQucCk7CiAgfQogIHZvaWQgaW5pdGlhbGl6ZShzaXplX3R5cGUgbikgewogICAgdW5z
aWduZWQgaW50KiBxID0gYml0X2FsbG9jKG4pOwogICAgZW5kX29mX3N0b3JhZ2UgPSBxICsgKG4g
KyBfX1dPUkRfQklUIC0gMSkvX19XT1JEX0JJVDsKICAgIHN0YXJ0ID0gaXRlcmF0b3IocSwgMCk7
CiAgICBmaW5pc2ggPSBzdGFydCArIGRpZmZlcmVuY2VfdHlwZShuKTsKICB9CiAgdm9pZCBpbnNl
cnRfYXV4KGl0ZXJhdG9yIHBvc2l0aW9uLCBib29sIHgpIHsKICAgIGlmIChmaW5pc2gucCAhPSBl
bmRfb2Zfc3RvcmFnZSkgewogICAgICBjb3B5X2JhY2t3YXJkKHBvc2l0aW9uLCBmaW5pc2gsIGZp
bmlzaCArIDEpOwogICAgICAqcG9zaXRpb24gPSB4OwogICAgICArK2ZpbmlzaDsKICAgIH0KICAg
IGVsc2UgewogICAgICBzaXplX3R5cGUgbGVuID0gc2l6ZSgpID8gMiAqIHNpemUoKSA6IF9fV09S
RF9CSVQ7CiAgICAgIHVuc2lnbmVkIGludCogcSA9IGJpdF9hbGxvYyhsZW4pOwogICAgICBpdGVy
YXRvciBpID0gY29weShiZWdpbigpLCBwb3NpdGlvbiwgaXRlcmF0b3IocSwgMCkpOwogICAgICAq
aSsrID0geDsKICAgICAgZmluaXNoID0gY29weShwb3NpdGlvbiwgZW5kKCksIGkpOwogICAgICBk
ZWFsbG9jYXRlKCk7CiAgICAgIGVuZF9vZl9zdG9yYWdlID0gcSArIChsZW4gKyBfX1dPUkRfQklU
IC0gMSkvX19XT1JEX0JJVDsKICAgICAgc3RhcnQgPSBpdGVyYXRvcihxLCAwKTsKICAgIH0KICB9
CgoKICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KICB2b2lkIGluaXRpYWxpemVfcmFu
Z2UoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LAogICAgICAgICAgICAg
ICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpIHsKICAgIHN0YXJ0ID0gaXRlcmF0b3IoKTsK
ICAgIGZpbmlzaCA9IGl0ZXJhdG9yKCk7CiAgICBlbmRfb2Zfc3RvcmFnZSA9IDA7CiAgICBmb3Ig
KCA7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpIAogICAgICBwdXNoX2JhY2soKmZpcnN0KTsKICB9
CgogIHRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlcmF0b3I+CiAgdm9pZCBpbml0aWFsaXplX3Jh
bmdlKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGZvcndhcmRfaXRlcmF0b3JfdGFnKSB7CiAgICBzaXplX3R5cGUgbiA9
IDA7CiAgICBkaXN0YW5jZShmaXJzdCwgbGFzdCwgbik7CiAgICBpbml0aWFsaXplKG4pOwogICAg
Y29weShmaXJzdCwgbGFzdCwgc3RhcnQpOwogIH0KCiAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRl
cmF0b3I+CiAgdm9pZCBpbnNlcnRfcmFuZ2UoaXRlcmF0b3IgcG9zLAogICAgICAgICAgICAgICAg
ICAgIElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwKICAgICAgICAgICAg
ICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpIHsKICAgIGZvciAoIDsgZmlyc3QgIT0gbGFzdDsg
KytmaXJzdCkgewogICAgICBwb3MgPSBpbnNlcnQocG9zLCAqZmlyc3QpOwogICAgICArK3BvczsK
ICAgIH0KICB9CgogIHRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlcmF0b3I+CiAgdm9pZCBpbnNl
cnRfcmFuZ2UoaXRlcmF0b3IgcG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0
ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwKICAgICAgICAgICAgICAgICAgICBm
b3J3YXJkX2l0ZXJhdG9yX3RhZykgewogICAgaWYgKGZpcnN0ICE9IGxhc3QpIHsKICAgICAgc2l6
ZV90eXBlIG4gPSAwOwogICAgICBkaXN0YW5jZShmaXJzdCwgbGFzdCwgbik7CiAgICAgIGlmIChj
YXBhY2l0eSgpIC0gc2l6ZSgpID49IG4pIHsKICAgICAgICBjb3B5X2JhY2t3YXJkKHBvc2l0aW9u
LCBlbmQoKSwgZmluaXNoICsgZGlmZmVyZW5jZV90eXBlKG4pKTsKICAgICAgICBjb3B5KGZpcnN0
LCBsYXN0LCBwb3NpdGlvbik7CiAgICAgICAgZmluaXNoICs9IGRpZmZlcmVuY2VfdHlwZShuKTsK
ICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBzaXplX3R5cGUgbGVuID0gc2l6ZSgpICsgbWF4
KHNpemUoKSwgbik7CiAgICAgICAgdW5zaWduZWQgaW50KiBxID0gYml0X2FsbG9jKGxlbik7CiAg
ICAgICAgaXRlcmF0b3IgaSA9IGNvcHkoYmVnaW4oKSwgcG9zaXRpb24sIGl0ZXJhdG9yKHEsIDAp
KTsKICAgICAgICBpID0gY29weShmaXJzdCwgbGFzdCwgaSk7CiAgICAgICAgZmluaXNoID0gY29w
eShwb3NpdGlvbiwgZW5kKCksIGkpOwogICAgICAgIGRlYWxsb2NhdGUoKTsKICAgICAgICBlbmRf
b2Zfc3RvcmFnZSA9IHEgKyAobGVuICsgX19XT1JEX0JJVCAtIDEpL19fV09SRF9CSVQ7CiAgICAg
ICAgc3RhcnQgPSBpdGVyYXRvcihxLCAwKTsKICAgICAgfQogICAgfQogIH0gICAgICAKCgoKcHVi
bGljOgogIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gc3RhcnQ7IH0KICBjb25zdF9pdGVyYXRv
ciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0OyB9CiAgaXRlcmF0b3IgZW5kKCkgeyByZXR1
cm4gZmluaXNoOyB9CiAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gZmluaXNo
OyB9CgogIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRv
cihlbmQoKSk7IH0KICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgCiAg
ICByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IAogIH0KICByZXZlcnNlX2l0
ZXJhdG9yIHJlbmQoKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CiAgY29u
c3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3QgeyAKICAgIHJldHVybiBjb25zdF9yZXZl
cnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyAKICB9CgogIHNpemVfdHlwZSBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZV90eXBlKGVuZCgpIC0gYmVnaW4oKSk7IH0KICBzaXplX3R5cGUgbWF4X3NpemUo
KSBjb25zdCB7IHJldHVybiBzaXplX3R5cGUoLTEpOyB9CiAgc2l6ZV90eXBlIGNhcGFjaXR5KCkg
Y29uc3QgewogICAgcmV0dXJuIHNpemVfdHlwZShjb25zdF9pdGVyYXRvcihlbmRfb2Zfc3RvcmFn
ZSwgMCkgLSBiZWdpbigpKTsKICB9CiAgYm9vbCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGJlZ2lu
KCkgPT0gZW5kKCk7IH0KICByZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgbikgewogICAg
cmV0dXJuICooYmVnaW4oKSArIGRpZmZlcmVuY2VfdHlwZShuKSk7CiAgfQogIGNvbnN0X3JlZmVy
ZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBuKSBjb25zdCB7CiAgICByZXR1cm4gKihiZWdpbigp
ICsgZGlmZmVyZW5jZV90eXBlKG4pKTsKICB9CiAgdmVjdG9yICgpIDogc3RhcnQoaXRlcmF0b3Io
KSksIGZpbmlzaChpdGVyYXRvcigpKSwgZW5kX29mX3N0b3JhZ2UoMCkge30KICB2ZWN0b3IgKHNp
emVfdHlwZSBuLCBib29sIHZhbHVlKSB7CiAgICBpbml0aWFsaXplKG4pOwogICAgZmlsbChzdGFy
dC5wLCBlbmRfb2Zfc3RvcmFnZSwgdmFsdWUgPyB+MCA6IDApOwogIH0KICB2ZWN0b3IgKGludCBu
LCBib29sIHZhbHVlKSB7CiAgICBpbml0aWFsaXplKG4pOwogICAgZmlsbChzdGFydC5wLCBlbmRf
b2Zfc3RvcmFnZSwgdmFsdWUgPyB+MCA6IDApOwogIH0KICB2ZWN0b3IgKGxvbmcgbiwgYm9vbCB2
YWx1ZSkgewogICAgaW5pdGlhbGl6ZShuKTsKICAgIGZpbGwoc3RhcnQucCwgZW5kX29mX3N0b3Jh
Z2UsIHZhbHVlID8gfjAgOiAwKTsKICB9CiAgZXhwbGljaXQgdmVjdG9yIChzaXplX3R5cGUgbikg
ewogICAgaW5pdGlhbGl6ZShuKTsKICAgIGZpbGwoc3RhcnQucCwgZW5kX29mX3N0b3JhZ2UsIDAp
OwogIH0KICB2ZWN0b3IgKGNvbnN0IHZlY3RvciAmIHgpIHsKICAgIGluaXRpYWxpemUoeC5zaXpl
KCkpOwogICAgY29weSh4LmJlZ2luKCksIHguZW5kKCksIHN0YXJ0KTsKICB9CgoKICB0ZW1wbGF0
ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KICB2ZWN0b3IgKElucHV0SXRlcmF0b3IgZmlyc3QsIElu
cHV0SXRlcmF0b3IgbGFzdCkgewogICAgaW5pdGlhbGl6ZV9yYW5nZShmaXJzdCwgbGFzdCwgaXRl
cmF0b3JfY2F0ZWdvcnkoZmlyc3QpKTsKICB9CiMgNDQ4ICIvdXNyL2luY2x1ZGUvZysrLTIvc3Rs
X2J2ZWN0b3IuaCIgMwoKCiAgfnZlY3RvciAoKSB7IGRlYWxsb2NhdGUoKTsgfQogIHZlY3RvciAm
IG9wZXJhdG9yPShjb25zdCB2ZWN0b3IgJiB4KSB7CiAgICBpZiAoJnggPT0gdGhpcykgcmV0dXJu
ICp0aGlzOwogICAgaWYgKHguc2l6ZSgpID4gY2FwYWNpdHkoKSkgewogICAgICBkZWFsbG9jYXRl
KCk7CiAgICAgIGluaXRpYWxpemUoeC5zaXplKCkpOwogICAgfQogICAgY29weSh4LmJlZ2luKCks
IHguZW5kKCksIGJlZ2luKCkpOwogICAgZmluaXNoID0gYmVnaW4oKSArIGRpZmZlcmVuY2VfdHlw
ZSh4LnNpemUoKSk7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIHZvaWQgcmVzZXJ2ZShzaXplX3R5
cGUgbikgewogICAgaWYgKGNhcGFjaXR5KCkgPCBuKSB7CiAgICAgIHVuc2lnbmVkIGludCogcSA9
IGJpdF9hbGxvYyhuKTsKICAgICAgZmluaXNoID0gY29weShiZWdpbigpLCBlbmQoKSwgaXRlcmF0
b3IocSwgMCkpOwogICAgICBkZWFsbG9jYXRlKCk7CiAgICAgIHN0YXJ0ID0gaXRlcmF0b3IocSwg
MCk7CiAgICAgIGVuZF9vZl9zdG9yYWdlID0gcSArIChuICsgX19XT1JEX0JJVCAtIDEpL19fV09S
RF9CSVQ7CiAgICB9CiAgfQogIHJlZmVyZW5jZSBmcm9udCgpIHsgcmV0dXJuICpiZWdpbigpOyB9
CiAgY29uc3RfcmVmZXJlbmNlIGZyb250KCkgY29uc3QgeyByZXR1cm4gKmJlZ2luKCk7IH0KICBy
ZWZlcmVuY2UgYmFjaygpIHsgcmV0dXJuICooZW5kKCkgLSAxKTsgfQogIGNvbnN0X3JlZmVyZW5j
ZSBiYWNrKCkgY29uc3QgeyByZXR1cm4gKihlbmQoKSAtIDEpOyB9CiAgdm9pZCBwdXNoX2JhY2so
Ym9vbCB4KSB7CiAgICBpZiAoZmluaXNoLnAgIT0gZW5kX29mX3N0b3JhZ2UpCiAgICAgICpmaW5p
c2grKyA9IHg7CiAgICBlbHNlCiAgICAgIGluc2VydF9hdXgoZW5kKCksIHgpOwogIH0KICB2b2lk
IHN3YXAodmVjdG9yICYgeCkgewogICAgIDo6c3dhcChzdGFydCwgeC5zdGFydCk7CiAgICAgOjpz
d2FwKGZpbmlzaCwgeC5maW5pc2gpOwogICAgIDo6c3dhcChlbmRfb2Zfc3RvcmFnZSwgeC5lbmRf
b2Zfc3RvcmFnZSk7CiAgfQogIGl0ZXJhdG9yIGluc2VydChpdGVyYXRvciBwb3NpdGlvbiwgYm9v
bCB4ID0gYm9vbCgpKSB7CiAgICBkaWZmZXJlbmNlX3R5cGUgbiA9IHBvc2l0aW9uIC0gYmVnaW4o
KTsKICAgIGlmIChmaW5pc2gucCAhPSBlbmRfb2Zfc3RvcmFnZSAmJiBwb3NpdGlvbiA9PSBlbmQo
KSkKICAgICAgKmZpbmlzaCsrID0geDsKICAgIGVsc2UKICAgICAgaW5zZXJ0X2F1eChwb3NpdGlv
biwgeCk7CiAgICByZXR1cm4gYmVnaW4oKSArIG47CiAgfQoKCiAgdGVtcGxhdGUgPGNsYXNzIElu
cHV0SXRlcmF0b3I+IHZvaWQgaW5zZXJ0KGl0ZXJhdG9yIHBvc2l0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGZpcnN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGxh
c3QpIHsKICAgIGluc2VydF9yYW5nZShwb3NpdGlvbiwgZmlyc3QsIGxhc3QsIGl0ZXJhdG9yX2Nh
dGVnb3J5KGZpcnN0KSk7CiAgfQojIDU0MyAiL3Vzci9pbmNsdWRlL2crKy0yL3N0bF9idmVjdG9y
LmgiIDMKCiAgCiAgdm9pZCBpbnNlcnQoaXRlcmF0b3IgcG9zaXRpb24sIHNpemVfdHlwZSBuLCBi
b29sIHgpIHsKICAgIGlmIChuID09IDApIHJldHVybjsKICAgIGlmIChjYXBhY2l0eSgpIC0gc2l6
ZSgpID49IG4pIHsKICAgICAgY29weV9iYWNrd2FyZChwb3NpdGlvbiwgZW5kKCksIGZpbmlzaCAr
IGRpZmZlcmVuY2VfdHlwZShuKSk7CiAgICAgIGZpbGwocG9zaXRpb24sIHBvc2l0aW9uICsgZGlm
ZmVyZW5jZV90eXBlKG4pLCB4KTsKICAgICAgZmluaXNoICs9IGRpZmZlcmVuY2VfdHlwZShuKTsK
ICAgIH0KICAgIGVsc2UgewogICAgICBzaXplX3R5cGUgbGVuID0gc2l6ZSgpICsgbWF4KHNpemUo
KSwgbik7CiAgICAgIHVuc2lnbmVkIGludCogcSA9IGJpdF9hbGxvYyhsZW4pOwogICAgICBpdGVy
YXRvciBpID0gY29weShiZWdpbigpLCBwb3NpdGlvbiwgaXRlcmF0b3IocSwgMCkpOwogICAgICBm
aWxsX24oaSwgbiwgeCk7CiAgICAgIGZpbmlzaCA9IGNvcHkocG9zaXRpb24sIGVuZCgpLCBpICsg
ZGlmZmVyZW5jZV90eXBlKG4pKTsKICAgICAgZGVhbGxvY2F0ZSgpOwogICAgICBlbmRfb2Zfc3Rv
cmFnZSA9IHEgKyAobGVuICsgX19XT1JEX0JJVCAtIDEpL19fV09SRF9CSVQ7CiAgICAgIHN0YXJ0
ID0gaXRlcmF0b3IocSwgMCk7CiAgICB9CiAgfQoKICB2b2lkIGluc2VydChpdGVyYXRvciBwb3Ms
IGludCBuLCBib29sIHgpICB7IGluc2VydChwb3MsIChzaXplX3R5cGUpbiwgeCk7IH0KICB2b2lk
IGluc2VydChpdGVyYXRvciBwb3MsIGxvbmcgbiwgYm9vbCB4KSB7IGluc2VydChwb3MsIChzaXpl
X3R5cGUpbiwgeCk7IH0KCiAgdm9pZCBwb3BfYmFjaygpIHsgLS1maW5pc2g7IH0KICBpdGVyYXRv
ciBlcmFzZShpdGVyYXRvciBwb3NpdGlvbikgewogICAgaWYgKHBvc2l0aW9uICsgMSAhPSBlbmQo
KSkKICAgICAgY29weShwb3NpdGlvbiArIDEsIGVuZCgpLCBwb3NpdGlvbik7CiAgICAtLWZpbmlz
aDsKICAgIHJldHVybiBwb3NpdGlvbjsKICB9CiAgaXRlcmF0b3IgZXJhc2UoaXRlcmF0b3IgZmly
c3QsIGl0ZXJhdG9yIGxhc3QpIHsKICAgIGZpbmlzaCA9IGNvcHkobGFzdCwgZW5kKCksIGZpcnN0
KTsKICAgIHJldHVybiBmaXJzdDsKICB9CiAgdm9pZCByZXNpemUoc2l6ZV90eXBlIG5ld19zaXpl
LCBib29sIHggPSBib29sKCkpIHsKICAgIGlmIChuZXdfc2l6ZSA8IHNpemUoKSkgCiAgICAgIGVy
YXNlKGJlZ2luKCkgKyBkaWZmZXJlbmNlX3R5cGUobmV3X3NpemUpLCBlbmQoKSk7CiAgICBlbHNl
CiAgICAgIGluc2VydChlbmQoKSwgbmV3X3NpemUgLSBzaXplKCksIHgpOwogIH0KICB2b2lkIGNs
ZWFyKCkgeyBlcmFzZShiZWdpbigpLCBlbmQoKSk7IH0KfTsKCgoKdHlwZWRlZiB2ZWN0b3I8Ym9v
bCwgYWxsb2M+IGJpdF92ZWN0b3I7CgojIDYwMSAiL3Vzci9pbmNsdWRlL2crKy0yL3N0bF9idmVj
dG9yLmgiIDMKCgoKCgoKCgoKICAKCgoKIAogCiAKIyAzNSAiL3Vzci9pbmNsdWRlL2crKy0yL3Zl
Y3RvciIgMiAzCgoKCgogCiAKIAojIDQgImgvbnJoeXByaXZhdGUuaCIgMgoKdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKCmNsYXNzIE5SSFlfY2xhc3NBcHBhcml0aW9uOwpjbGFzcyBOUkhZX2NsYXNzQ2Ft
ZXJhOwpjbGFzcyBOUkhZX2NsYXNzQ29sbGlzaW9uOwpjbGFzcyBOUkhZX2NsYXNzRHluYW1pY3M7
CmNsYXNzIE5SSFlfY2xhc3NGb3JjZTsKY2xhc3MgTlJIWV9jbGFzc0Z1cjsKY2xhc3MgTlJIWV9j
bGFzc011c2NsZTsKY2xhc3MgTlJIWV9jbGFzc0dlbmVyYXRvcjsKY2xhc3MgTlJIWV9jbGFzc0hv
bWU7CmNsYXNzIE5SSFlfY2xhc3NJazsKY2xhc3MgTlJIWV9jbGFzc0lrQ2hhaW47CmNsYXNzIE5S
SFlfY2xhc3NJbmt5OwpjbGFzcyBOUkhZX2NsYXNzS2xpc3Q7CmNsYXNzIE5SSFlfY2xhc3NMYXll
cjsKY2xhc3MgTlJIWV9jbGFzc0xpZ2h0OwpjbGFzcyBOUkhZX2NsYXNzTWFwOwpjbGFzcyBOUkhZ
X2NsYXNzTWF0ZXJpYWw7CmNsYXNzIE5SSFlfY2xhc3NNb2RlbDsKY2xhc3MgTlJIWV9jbGFzc09i
amVjdDsKY2xhc3MgTlJIWV9jbGFzc1Jvb3Q7CmNsYXNzIE5SSFlfY2xhc3NSb3RvOwpjbGFzcyBO
UkhZX2NsYXNzU2NhZmZvbGQ7CmNsYXNzIE5SSFlfY2xhc3NTb3VuZDsKY2xhc3MgTlJIWV9jbGFz
c1RleDsKY2xhc3MgTlJIWV9jbGFzc1RoaW5nOwpjbGFzcyBOUkhZX2NsYXNzVGltZTsKY2xhc3Mg
TlJIWV9jbGFzc1RyYWNrOwpjbGFzcyBOUkhZX2NsYXNzVXNlTWFwOwoKY2xhc3MgSFVfRXhwcmVz
c2lvbjsKY2xhc3MgTlJIWV9JTlRfRlJBTkdFOwpjbGFzcyBOUkhZX0ZSQU5HRTsKY2xhc3MgTlJI
WV9SRUFMX0ZSQU5HRTsKCmNsYXNzIEZyYW5nZUNhY2hlTG9yZDsKY2xhc3MgTlJIWV9jbGFzc0No
YW5uZWw7CmNsYXNzIE5SSFlfY2xhc3NDb21tYW5kOwpjbGFzcyBOUkhZX1dvcmxkOwpjbGFzcyBY
Rk9STV9CYXNlOwoKIyAxICJoL05SSFlfU3RkLmgiIDEKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgwKIAoKCgogCgoKCgoKCgoKIAoKIAoKIyAxICIvc29mdHdhcmUvdGhhbGlhL2gvc3RkdHlwZXMu
aCIgMQoKIAoKCgoKCgoKCgoKCgoKCgoKCiMgMjAzICIvc29mdHdhcmUvdGhhbGlhL2gvc3RkdHlw
ZXMuaCIKCgoKCgoKCgoKCgoKCgojIDQzICJoL05SSFlfU3RkLmgiIDIKCiMgMSAiL3NvZnR3YXJl
L3RoYWxpYS9oL3N0ZGRlZnMuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi9zb2Z0
d2FyZS90aGFsaWEvaC9zdGR0eXBlcy5oIiAxCgogCgoKCgoKCgoKCgoKCgoKCgoKIyAyMDMgIi9z
b2Z0d2FyZS90aGFsaWEvaC9zdGR0eXBlcy5oIgoKCgoKCgoKCgoKCgoKCiMgMjMgIi9zb2Z0d2Fy
ZS90aGFsaWEvaC9zdGRkZWZzLmgiIDIKCgogCiAKCgoKICAKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
IAoKCgoKCgoKCiMgNDQgImgvTlJIWV9TdGQuaCIgMgoKIyAxICIvc29mdHdhcmUvdGhhbGlhL2gv
c3RkbWFjcm9zLmgiIDEKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiAKCiAK
CgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKCiAKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIyAxNDEgIi9zb2Z0d2FyZS90aGFsaWEvaC9z
dGRtYWNyb3MuaCIKICAgICAgICAgICAgICAgICAgICAgICAgIAoKCgoKIyA0NSAiaC9OUkhZX1N0
ZC5oIiAyCgoKIAoKCiMgMSAiL3NvZnR3YXJlL3RoYWxpYS9oL3R4dC5oIiAxCiAKCgoKCgoKCgoK
CiMgMTIxICIvc29mdHdhcmUvdGhhbGlhL2gvdHh0LmgiCgojIDUwICJoL05SSFlfU3RkLmgiIDIK
CiAKCiAKCgoKIAoKCgoKIAoKIyAxICIvc29mdHdhcmUvdGhhbGlhL2gvc3RkbWF0aC5oIiAxCgog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCnR5cGVk
ZWYgZmxvYXQgTV9GTE9BVDsKCiAKc3RydWN0IE1fVmVjdG9yOwpzdHJ1Y3QgTV9WZWN0b3I0Owpz
dHJ1Y3QgTV9WZWN0b3IyOwpzdHJ1Y3QgTV9WZWN0b3JOOwoKc3RydWN0IE1fTWF0cml4OwpzdHJ1
Y3QgTV9NYXRyaXgyMjsKc3RydWN0IE1fTWF0cml4TU47CgppbmxpbmUgY29uc3QgY2hhciAqIGNs
YXNzTmFtZSggY29uc3QgTV9WZWN0b3IgJiApICAgeyByZXR1cm4gIk1fVmVjdG9yIjsgfQppbmxp
bmUgY29uc3QgY2hhciAqIGNsYXNzTmFtZSggY29uc3QgTV9WZWN0b3I0ICYgKSAgeyByZXR1cm4g
Ik1fVmVjdG9yNCI7IH07CmlubGluZSBjb25zdCBjaGFyICogY2xhc3NOYW1lKCBjb25zdCBNX1Zl
Y3RvcjIgJiApICB7IHJldHVybiAiTV9WZWN0b3IyIjsgfTsKaW5saW5lIGNvbnN0IGNoYXIgKiBj
bGFzc05hbWUoIGNvbnN0IE1fVmVjdG9yTiAmICkgIHsgcmV0dXJuICJNX1ZlY3Rvck4iOyB9OwoK
aW5saW5lIGNvbnN0IGNoYXIgKiBjbGFzc05hbWUoIGNvbnN0IE1fTWF0cml4ICYgKSAgIHsgcmV0
dXJuICJNX01hdHJpeCI7IH07CmlubGluZSBjb25zdCBjaGFyICogY2xhc3NOYW1lKCBjb25zdCBN
X01hdHJpeDIyICYgKSB7IHJldHVybiAiTV9NYXRyaXgyMiI7IH07CmlubGluZSBjb25zdCBjaGFy
ICogY2xhc3NOYW1lKCBjb25zdCBNX01hdHJpeE1OICYgKSB7IHJldHVybiAiTV9NYXRyaXhNTiI7
IH07CgogCnN0cnVjdCBWZXJ0ZXg7CnN0cnVjdCBNYXRyaXg0OwpzdHJ1Y3QgX1ZFQ1RPUjsKc3Ry
dWN0IF9WRUNUNEQ7CnN0cnVjdCBfVkVSVDJEOwpzdHJ1Y3QgX1BPSU5UMkQ7CnR5cGVkZWYgZmxv
YXQgTUFUUklYWzRdWzRdOwoKIAp0eXBlZGVmIHN0cnVjdCBfbmV0ZmlsZV9maWxlIE5FVEZJTEVf
RklMRTsKCgogCgoKCnN0cnVjdCBNX1ZlY3RvciB7CiAgICBNX0ZMT0FUICAgICB4LCB5LCB6OwoK
ICAgIE1fVmVjdG9yKCk7CiAgICBNX1ZlY3RvciggTV9GTE9BVCwgTV9GTE9BVCwgTV9GTE9BVCAp
OwogICAgTV9WZWN0b3IoIGNvbnN0IE1fVmVjdG9yICYgKTsKCiAgICBNX0ZMT0FUICAgICBvcGVy
YXRvcltdKCBpbnQgKSBjb25zdDsKICAgIE1fRkxPQVQgJiAgIG9wZXJhdG9yW10oIGludCApOwoK
ICAgICAKICAgIE1fVmVjdG9yKCBjb25zdCBWZXJ0ZXggJiApOwogICAgTV9WZWN0b3IoIGNvbnN0
IF9WRUNUT1IgJiApOyAgICAgICAgIAoKICAgIG9wZXJhdG9yIGNvbnN0IFZlcnRleCAmICgpIGNv
bnN0OwogICAgb3BlcmF0b3IgVmVydGV4ICYgKCk7CiAgICBvcGVyYXRvciBjb25zdCBfVkVDVE9S
ICYgKCkgY29uc3Q7CiAgICBvcGVyYXRvciBfVkVDVE9SICYgKCk7CiAgICB9OwoKc3RydWN0IE1f
VmVjdG9yNCB7CiAgICBNX0ZMT0FUICAgICB4LCB5LCB6LCB3OwoKICAgIE1fVmVjdG9yNCgpOwog
ICAgTV9WZWN0b3I0KCBNX0ZMT0FULCBNX0ZMT0FULCBNX0ZMT0FULCBNX0ZMT0FUICk7CiAgICBN
X1ZlY3RvcjQoIGNvbnN0IE1fVmVjdG9yICYsIE1fRkxPQVQgKTsKICAgIE1fVmVjdG9yNCggY29u
c3QgTV9WZWN0b3I0ICYgKTsKCiAgICBNX0ZMT0FUICAgICBvcGVyYXRvcltdKCBpbnQgKSBjb25z
dDsKICAgIE1fRkxPQVQgJiAgIG9wZXJhdG9yW10oIGludCApOwoKICAgICAKICAgIE1fVmVjdG9y
NCggY29uc3QgX1ZFQ1Q0RCAmICk7CgogICAgb3BlcmF0b3IgY29uc3QgX1ZFQ1Q0RCAmICgpIGNv
bnN0OwogICAgb3BlcmF0b3IgX1ZFQ1Q0RCAmICgpOwogICAgfTsKCnN0cnVjdCBNX1ZlY3RvcjIg
ewogICAgdW5pb24gewogICAgICAgIE1fRkxPQVQgICAgIHU7CiAgICAgICAgTV9GTE9BVCAgICAg
eDsKICAgICAgICB9OwogICAgdW5pb24gewogICAgICAgIE1fRkxPQVQgICAgIHY7CiAgICAgICAg
TV9GTE9BVCAgICAgeTsKICAgICAgICB9OwoKICAgIE1fVmVjdG9yMigpOwogICAgTV9WZWN0b3Iy
KCBNX0ZMT0FULCBNX0ZMT0FUICk7CiAgICBNX1ZlY3RvcjIoIGNvbnN0IE1fVmVjdG9yMiAmICk7
CgogICAgTV9GTE9BVCAgICAgb3BlcmF0b3JbXSggaW50ICkgY29uc3Q7CiAgICBNX0ZMT0FUICYg
ICBvcGVyYXRvcltdKCBpbnQgKTsKCiAgICAgCiAgICBNX1ZlY3RvcjIoIGNvbnN0IF9WRVJUMkQg
JiApOwogICAgTV9WZWN0b3IyKCBjb25zdCBfUE9JTlQyRCAmICk7CgogICAgb3BlcmF0b3IgY29u
c3QgX1ZFUlQyRCAmICgpIGNvbnN0OwogICAgb3BlcmF0b3IgX1ZFUlQyRCAmICgpOwogICAgb3Bl
cmF0b3IgY29uc3QgX1BPSU5UMkQgJiAoKSBjb25zdDsKICAgIG9wZXJhdG9yIF9QT0lOVDJEICYg
KCk7CiAgICB9OwoKY2xhc3MgTV9WZWN0b3JOIHsKICAgIGludCAgICAgICAgIHN6OwogICAgTV9G
TE9BVCAgICAgKmRhdGE7CgpwdWJsaWM6CiAgICBNX1ZlY3Rvck4oKTsKICAgIH5NX1ZlY3Rvck4o
KTsKICAgIE1fVmVjdG9yTiggaW50ICk7CiAgICBNX1ZlY3Rvck4oIGNvbnN0IE1fVmVjdG9yTiAm
ICk7CgogICAgTV9WZWN0b3JOICYgICAgIG9wZXJhdG9yPSggY29uc3QgTV9WZWN0b3JOICYgKTsK
ICAgIE1fRkxPQVQgICAgICAgICBvcGVyYXRvcltdKCBpbnQgKSBjb25zdDsKICAgIE1fRkxPQVQg
JiAgICAgICBvcGVyYXRvcltdKCBpbnQgKTsKICAgIGludCBuKCkgY29uc3QgeyByZXR1cm4gc3o7
IH0KCiAgICAgCiAgICBNX1ZlY3Rvck4oIGNvbnN0IE1fVmVjdG9yICYgKTsKICAgIE1fVmVjdG9y
TiggY29uc3QgTV9WZWN0b3I0ICYgKTsKICAgIE1fVmVjdG9yTiggY29uc3QgTV9WZWN0b3IyICYg
KTsKCiAgICBvcGVyYXRvciBNX1ZlY3RvcigpIGNvbnN0OwogICAgb3BlcmF0b3IgTV9WZWN0b3I0
KCkgY29uc3Q7CiAgICBvcGVyYXRvciBNX1ZlY3RvcjIoKSBjb25zdDsKCiAgICBmcmllbmQgTV9W
ZWN0b3JOIG9wZXJhdG9yKyggY29uc3QgTV9WZWN0b3JOICYsIGNvbnN0IE1fVmVjdG9yTiAmICk7
CiAgICBmcmllbmQgTV9WZWN0b3JOICYgb3BlcmF0b3IrPSggTV9WZWN0b3JOICYsIGNvbnN0IE1f
VmVjdG9yTiAmICk7CiAgICBmcmllbmQgTV9WZWN0b3JOIG9wZXJhdG9yLSggY29uc3QgTV9WZWN0
b3JOICYgKTsKICAgIGZyaWVuZCBNX1ZlY3Rvck4gb3BlcmF0b3ItKCBjb25zdCBNX1ZlY3Rvck4g
JiwgY29uc3QgTV9WZWN0b3JOICYgKTsKICAgIGZyaWVuZCBNX1ZlY3Rvck4gJiBvcGVyYXRvci09
KCBNX1ZlY3Rvck4gJiwgY29uc3QgTV9WZWN0b3JOICYgKTsKICAgIGZyaWVuZCBNX0ZMT0FUIG9w
ZXJhdG9yKiggY29uc3QgTV9WZWN0b3JOICYsIGNvbnN0IE1fVmVjdG9yTiAmICk7CiAgICBmcmll
bmQgTV9NYXRyaXhNTiBvcGVyYXRvciooIGNvbnN0IE1fTWF0cml4TU4gJiwgY29uc3QgTV9NYXRy
aXhNTiAmICk7CiAgICB9OwoKc3RydWN0IE1fTWF0cml4IHsKICAgIE1fRkxPQVQgICAgIHJvd1s0
XVs0XTsKCiAgICBNX01hdHJpeCgpOwogICAgTV9NYXRyaXgoIE1fRkxPQVQsIE1fRkxPQVQsIE1f
RkxPQVQsIE1fRkxPQVQsCiAgICAgICAgICAgICAgTV9GTE9BVCwgTV9GTE9BVCwgTV9GTE9BVCwg
TV9GTE9BVCwKICAgICAgICAgICAgICBNX0ZMT0FULCBNX0ZMT0FULCBNX0ZMT0FULCBNX0ZMT0FU
LAogICAgICAgICAgICAgIE1fRkxPQVQsIE1fRkxPQVQsIE1fRkxPQVQsIE1fRkxPQVQgKTsKICAg
IE1fTWF0cml4KCBjb25zdCBNX01hdHJpeCAmICk7CgogICAgY29uc3QgTV9WZWN0b3I0ICYgICBv
cGVyYXRvcltdKCBpbnQgKSBjb25zdDsKICAgIE1fVmVjdG9yNCAmICAgICAgICAgb3BlcmF0b3Jb
XSggaW50ICk7CgogICAgIAogICAgTV9NYXRyaXgoIGNvbnN0IE1BVFJJWCApOwogICAgTV9NYXRy
aXgoIGNvbnN0IE1hdHJpeDQgJiApOwoKICAgIG9wZXJhdG9yIE1BVFJJWCAmICgpOwogICAgb3Bl
cmF0b3IgY29uc3QgTWF0cml4NCAmICgpIGNvbnN0OwogICAgb3BlcmF0b3IgTWF0cml4NCAmICgp
OwogICAgfTsKCnN0cnVjdCBNX01hdHJpeDIyIHsKICAgIE1fVmVjdG9yMiAgIHJvd1syXTsKCiAg
ICBNX01hdHJpeDIyKCk7CiAgICBNX01hdHJpeDIyKCBNX0ZMT0FULCBNX0ZMT0FULCBNX0ZMT0FU
LCBNX0ZMT0FUICk7CiAgICBNX01hdHJpeDIyKCBjb25zdCBNX01hdHJpeDIyICYgKTsKCiAgICBj
b25zdCBNX1ZlY3RvcjIgJiAgIG9wZXJhdG9yW10oIGludCApIGNvbnN0OwogICAgTV9WZWN0b3Iy
ICYgICAgICAgICBvcGVyYXRvcltdKCBpbnQgKTsKICAgIH07CgpjbGFzcyBNX01hdHJpeE1OIHsK
ICAgIGludCAgICAgICAgIHN6OwogICAgTV9WZWN0b3JOICAgKmRhdGE7CgpwdWJsaWM6CiAgICBN
X01hdHJpeE1OKCk7CiAgICB+TV9NYXRyaXhNTigpOwogICAgTV9NYXRyaXhNTiggaW50LCBpbnQg
KTsKICAgIE1fTWF0cml4TU4oIGNvbnN0IE1fTWF0cml4TU4gJiApOwoKICAgIE1fTWF0cml4TU4g
JiAgICAgICAgb3BlcmF0b3I9KCBjb25zdCBNX01hdHJpeE1OICYgKTsKICAgIGNvbnN0IE1fVmVj
dG9yTiAmICAgb3BlcmF0b3JbXSggaW50ICkgY29uc3Q7CiAgICBNX1ZlY3Rvck4gJiAgICAgICAg
IG9wZXJhdG9yW10oIGludCApOwogICAgaW50IG0oKSBjb25zdCB7IHJldHVybiBzejsgfQoKICAg
ICAKICAgIE1fTWF0cml4TU4oIGNvbnN0IE1fTWF0cml4ICYgKTsKICAgIE1fTWF0cml4TU4oIGNv
bnN0IE1fTWF0cml4MjIgJiApOwoKICAgIG9wZXJhdG9yIE1fTWF0cml4KCkgY29uc3Q7CiAgICBv
cGVyYXRvciBNX01hdHJpeDIyKCkgY29uc3Q7CgogICAgZnJpZW5kIE1fTWF0cml4TU4gb3BlcmF0
b3IrKCBjb25zdCBNX01hdHJpeE1OICYsIGNvbnN0IE1fTWF0cml4TU4gJiApOwogICAgZnJpZW5k
IE1fTWF0cml4TU4gJiBvcGVyYXRvcis9KCBNX01hdHJpeE1OICYsIGNvbnN0IE1fTWF0cml4TU4g
JiApOwogICAgZnJpZW5kIE1fTWF0cml4TU4gb3BlcmF0b3ItKCBjb25zdCBNX01hdHJpeE1OICYg
KTsKICAgIGZyaWVuZCBNX01hdHJpeE1OIG9wZXJhdG9yLSggY29uc3QgTV9NYXRyaXhNTiAmLCBj
b25zdCBNX01hdHJpeE1OICYgKTsKICAgIGZyaWVuZCBNX01hdHJpeE1OICYgb3BlcmF0b3ItPSgg
TV9NYXRyaXhNTiAmLCBjb25zdCBNX01hdHJpeE1OICYgKTsKICAgIGZyaWVuZCBNX01hdHJpeE1O
IG9wZXJhdG9yKiggY29uc3QgTV9NYXRyaXhNTiAmLCBjb25zdCBNX01hdHJpeE1OICYgKTsKICAg
IH07CgojIDEgIi9zb2Z0d2FyZS90aGFsaWEvaC9zdGRtYXRoLnAiIDEKIAoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKIAoKTV9GTE9BVCBmYWJzICgKICAgICAgICBjb25zdCBNX1ZlY3RvciAmIHYKCSk7
CgpNX1ZlY3RvciAgICAgICAgb3BlcmF0b3IqICgKICAgICAgICBjb25zdCBNX1ZlY3RvciAmIHYs
CiAgICAgICAgTV9GTE9BVCBmCgkpOwoKTV9GTE9BVCBmYWJzICgKICAgICAgICBjb25zdCBNX1Zl
Y3RvcjIgJiB2CgkpOwoKTV9GTE9BVCBmYWJzICgKICAgICAgICBjb25zdCBNX1ZlY3RvcjQgJiB2
CgkpOwoKTV9GTE9BVCBmYWJzICgKICAgICAgICBjb25zdCBNX1ZlY3Rvck4gJiB2CgkpOwoKTV9W
ZWN0b3IyICAgICAgIG9wZXJhdG9yKiAoCiAgICAgICAgY29uc3QgTV9WZWN0b3IyICYgdiwKICAg
ICAgICBNX0ZMT0FUIGYKCSk7CgpNX01hdHJpeCAgICAgICAgb3BlcmF0b3IqICgKICAgICAgICBj
b25zdCBNX01hdHJpeCAmbSwKICAgICAgICBNX0ZMT0FUIGYKCSk7CgpNX1ZlY3RvcjQgICAgICAg
b3BlcmF0b3IqICgKICAgICAgICBjb25zdCBNX1ZlY3RvcjQgJiByLAogICAgICAgIE1fRkxPQVQg
ZgoJKTsKCk1fVmVjdG9yICAgICAgICBvcGVyYXRvciogKAogICAgICAgIE1fRkxPQVQgZiwKICAg
ICAgICBjb25zdCBNX1ZlY3RvciAmIHYKCSk7CgpNX1ZlY3RvcjIgICAgICAgb3BlcmF0b3IqICgK
ICAgICAgICBNX0ZMT0FUIGYsCiAgICAgICAgY29uc3QgTV9WZWN0b3IyICYgdgoJKTsKCk1fTWF0
cml4ICAgICAgICBvcGVyYXRvciogKAogICAgICAgIE1fRkxPQVQgZiwKICAgICAgICBjb25zdCBN
X01hdHJpeCAmIG0KCSk7CgpNX1ZlY3RvcjQgICAgICAgb3BlcmF0b3IqICgKICAgICAgICBNX0ZM
T0FUIGYsCiAgICAgICAgY29uc3QgTV9WZWN0b3I0ICYgcgoJKTsKCk1fVmVjdG9yICYgICAgICBv
cGVyYXRvcio9ICgKICAgICAgICBNX1ZlY3RvciAmIHYsCiAgICAgICAgTV9GTE9BVCBmCgkpOwoK
TV9WZWN0b3IyICYgICAgIG9wZXJhdG9yKj0gKAogICAgICAgIE1fVmVjdG9yMiAmIHYsCiAgICAg
ICAgTV9GTE9BVCBmCgkpOwoKTV9NYXRyaXggJiAgICAgIG9wZXJhdG9yKj0gKCAKICAgICAgICBN
X01hdHJpeCAmIG0sCiAgICAgICAgTV9GTE9BVCBmCgkpOwoKTV9WZWN0b3I0ICYgICAgIG9wZXJh
dG9yKj0gKAogICAgICAgIE1fVmVjdG9yNCAmIHIsCiAgICAgICAgTV9GTE9BVCBmCgkpOwoKTV9W
ZWN0b3IgICAgICAgIG9wZXJhdG9yLyAoCiAgICAgICAgY29uc3QgTV9WZWN0b3IgJiB2LAogICAg
ICAgIGludCBmCgkpOwoKTV9WZWN0b3IgICAgICAgIG9wZXJhdG9yLyAoCiAgICAgICAgY29uc3Qg
TV9WZWN0b3IgJiB2LAogICAgICAgIE1fRkxPQVQgZgoJKTsKCk1fVmVjdG9yMiAgICAgICBvcGVy
YXRvci8gKAogICAgICAgIGNvbnN0IE1fVmVjdG9yMiAmIHYsCiAgICAgICAgTV9GTE9BVCBmCgkp
OwoKTV9NYXRyaXggICAgICAgIG9wZXJhdG9yLyAoCiAgICAgICAgY29uc3QgTV9NYXRyaXggJiBt
LAogICAgICAgIE1fRkxPQVQgZgoJKTsKCk1fVmVjdG9yNCAgICAgICBvcGVyYXRvci8gKAogICAg
ICAgIGNvbnN0IE1fVmVjdG9yNCAmIHIsCiAgICAgICAgTV9GTE9BVCBmCgkpOwoKTV9WZWN0b3Ig
JiAgICAgIG9wZXJhdG9yLz0gKAogICAgICAgIE1fVmVjdG9yICYgdiwKICAgICAgICBNX0ZMT0FU
IGYKCSk7CgpNX1ZlY3RvcjIgJiAgICAgb3BlcmF0b3IvPSAoCiAgICAgICAgTV9WZWN0b3IyICYg
diwKICAgICAgICBNX0ZMT0FUIGYKCSk7CgpNX01hdHJpeCAmICAgICAgb3BlcmF0b3IvPSAoCiAg
ICAgICAgTV9NYXRyaXggJiBtLAogICAgICAgIE1fRkxPQVQgZgoJKTsKCk1fVmVjdG9yNCAmICAg
ICBvcGVyYXRvci89ICgKICAgICAgICBNX1ZlY3RvcjQgJiByLAogICAgICAgIE1fRkxPQVQgZgoJ
KTsKCk1fVmVjdG9yICAgICAgICBvcGVyYXRvciogKAogICAgICAgIGNvbnN0IE1fVmVjdG9yICYg
diwKICAgICAgICBkb3VibGUgZgoJKTsKCk1fTWF0cml4ICAgICAgICBvcGVyYXRvciogKAogICAg
ICAgIGNvbnN0IE1fTWF0cml4ICZtLAogICAgICAgIGRvdWJsZSBmCgkpOwoKTV9WZWN0b3I0ICAg
ICAgIG9wZXJhdG9yKiAoCiAgICAgICAgY29uc3QgTV9WZWN0b3I0ICYgciwKICAgICAgICBkb3Vi
bGUgZgoJKTsKCk1fVmVjdG9yICAgICAgICBvcGVyYXRvciogKAogICAgICAgIGRvdWJsZSBmLAog
ICAgICAgIGNvbnN0IE1fVmVjdG9yICYgdgoJKTsKCk1fTWF0cml4ICAgICAgICBvcGVyYXRvciog
KAogICAgICAgIGRvdWJsZSBmLAogICAgICAgIGNvbnN0IE1fTWF0cml4ICYgbQoJKTsKCk1fVmVj
dG9yNCAgICAgICBvcGVyYXRvciogKAogICAgICAgIGRvdWJsZSBmLAogICAgICAgIGNvbnN0IE1f
VmVjdG9yNCAmIHIKCSk7CgpNX1ZlY3RvciAmICAgICAgb3BlcmF0b3IqPSAoCiAgICAgICAgTV9W
ZWN0b3IgJiB2LAogICAgICAgIGRvdWJsZSBmCgkpOwoKTV9NYXRyaXggJiAgICAgIG9wZXJhdG9y
Kj0gKCAKICAgICAgICBNX01hdHJpeCAmIG0sCiAgICAgICAgZG91YmxlIGYKCSk7CgpNX1ZlY3Rv
cjQgJiAgICAgb3BlcmF0b3IqPSAoCiAgICAgICAgTV9WZWN0b3I0ICYgciwKICAgICAgICBkb3Vi
bGUgZgoJKTsKCk1fVmVjdG9yICAgICAgICBvcGVyYXRvci8gKAogICAgICAgIGNvbnN0IE1fVmVj
dG9yICYgdiwKICAgICAgICBkb3VibGUgZgoJKTsKCk1fTWF0cml4ICAgICAgICBvcGVyYXRvci8g
KAogICAgICAgIGNvbnN0IE1fTWF0cml4ICYgbSwKICAgICAgICBkb3VibGUgZgoJKTsKCk1fVmVj
dG9yNCAgICAgICBvcGVyYXRvci8gKAogICAgICAgIGNvbnN0IE1fVmVjdG9yNCAmIHIsCiAgICAg
ICAgZG91YmxlIGYKCSk7CgpNX1ZlY3RvciAmICAgICAgb3BlcmF0b3IvPSAoCiAgICAgICAgTV9W
ZWN0b3IgJiB2LAogICAgICAgIGRvdWJsZSBmCgkpOwoKTV9NYXRyaXggJiAgICAgIG9wZXJhdG9y
Lz0gKAogICAgICAgIE1fTWF0cml4ICYgbSwKICAgICAgICBkb3VibGUgZgoJKTsKCk1fVmVjdG9y
NCAmICAgICBvcGVyYXRvci89ICgKICAgICAgICBNX1ZlY3RvcjQgJiByLAogICAgICAgIGRvdWJs
ZSBmCgkpOwoKCiAKCk1fVmVjdG9yIE1fQ2xvc2VzdFBvaW50T25MaW5lVG9Qb2ludCAoCiAgICAg
ICAgY29uc3QgTV9WZWN0b3IgJiBsaW5lMCwKICAgICAgICBjb25zdCBNX1ZlY3RvciAmIGxpbmUx
LAogICAgICAgIGNvbnN0IE1fVmVjdG9yICYgcG9pbnQKCSk7CgpNX1ZlY3RvcjIgTV9DbG9zZXN0
UG9pbnRPbkxpbmVUb1BvaW50ICgKICAgICAgICBjb25zdCBNX1ZlY3RvcjIgJiBsaW5lMCwKICAg
ICAgICBjb25zdCBNX1ZlY3RvcjIgJiBsaW5lMSwKICAgICAgICBjb25zdCBNX1ZlY3RvcjIgJiBw
b2ludAoJKTsKCk1fVmVjdG9yIE1fQ3Jvc3NQcm9kdWN0ICgKICAgICAgICBjb25zdCBNX1ZlY3Rv
ciAmIGEsCiAgICAgICAgY29uc3QgTV9WZWN0b3IgJiBiCgkpOwoKTV9WZWN0b3I0IE1fUGxhbmVG
cm9tVGhyZWVQb2ludHMgKAogICAgICAgIGNvbnN0IE1fVmVjdG9yICYgcDAsCiAgICAgICAgY29u
c3QgTV9WZWN0b3IgJiBwMSwKICAgICAgICBjb25zdCBNX1ZlY3RvciAmIHAyCgkpOwoKdm9pZCBN
X1Jlbm9ybWFsaXplVFBvaW50cyAoCiAgICAgICAgTGlzdDxNX1ZlY3RvcjI+ICYgdXZzCgkpOwoK
dm9pZCBNX1Jlbm9ybWFsaXplVFBvaW50cyAoCiAgICAgICAgTV9WZWN0b3IyICAgKnV2cywKICAg
ICAgICBpbnQgICAgICAgICBjb3VudAoJKTsKCnZvaWQgTV9SZW5vcm1hbGl6ZVRQb2ludHMgKAog
ICAgICAgIE1fVmVjdG9yMiAgICYgYSwKICAgICAgICBNX1ZlY3RvcjIgICAmIGIKCSk7CgpNX1Zl
Y3RvciBNX0dldE5vcm1hbCAoCiAgICAgICAgY29uc3QgTGlzdDxNX1ZlY3Rvcj4gJiB2ZXJ0cwoJ
KTsKCk1fVmVjdG9yNCBNX0dldFBsYW5lRXEgKAogICAgICAgIGNvbnN0IExpc3Q8TV9WZWN0b3I+
ICYgdmVydHMKCSk7CgpNX1ZlY3RvciBNX1ZlcnRleEF2ZSAoCiAgICAgICAgY29uc3QgTGlzdDxN
X1ZlY3Rvcj4gJiB2ZXJ0cwoJKTsKCk1fTWF0cml4IE1fVmVjdFJvdGF0ZSAoCiAgICAgICAgY29u
c3QgTV9WZWN0b3IgJiB0YXJnVmVjdCwKICAgICAgICBjb25zdCBNX1ZlY3RvciAmIGN1clZlY3Qs
CiAgICAgICAgTV9GTE9BVCAgICAgICAgICBhbmdsZQoJKTsKCk1fTWF0cml4IE1fVmVjdFJvdGF0
ZSAoCiAgICAgICAgY29uc3QgTV9WZWN0b3IgJiB0YXJnVmVjdCwKICAgICAgICBjb25zdCBNX1Zl
Y3RvciAmIGN1clZlY3QKCSk7CgpNX01hdHJpeCBNX0F4aXNSb3QgKAogICAgICAgIGNvbnN0IE1f
VmVjdG9yICYgYXhpcywKICAgICAgICBNX0ZMT0FUICAgICAgICAgIGRlZ3JlZQoJKTsKCmludCBN
X1BvaW50T25TZWczRCAoCiAgICAgICAgY29uc3QgTV9WZWN0b3IgICYgdmVydDEsCiAgICAgICAg
Y29uc3QgTV9WZWN0b3IgICYgdmVydDIsCiAgICAgICAgY29uc3QgTV9WZWN0b3IgICYgcG9pbnQs
CiAgICAgICAgTV9GTE9BVCAgICAgICAgIHRvbAoJKTsKCmludCBNX1BvaW50T25TZWcyRCAoCiAg
ICAgICAgY29uc3QgTV9WZWN0b3IyICYgdmVydDEsCiAgICAgICAgY29uc3QgTV9WZWN0b3IyICYg
dmVydDIsCiAgICAgICAgY29uc3QgTV9WZWN0b3IyICYgcG9pbnQsCiAgICAgICAgTV9GTE9BVCAg
ICAgICAgIHRvbAoJKTsKCnZvaWQgTV9Sb3RhdGVUb1hZUGxhbmUgKAogICAgICAgIGNvbnN0IE1f
VmVjdG9yICAmIG5vcm0sCiAgICAgICAgTV9GTE9BVCAgICAgICAgICp4Um90LAogICAgICAgIE1f
RkxPQVQgICAgICAgICAqeVJvdAoJKTsKCnZvaWQgTV9Sb3RhdGVUb1lYUGxhbmUgKAogICAgICAg
IGNvbnN0IE1fVmVjdG9yICAmIG5vcm0sCiAgICAgICAgTV9GTE9BVCAgICAgICAgICp4Um90LAog
ICAgICAgIE1fRkxPQVQgICAgICAgICAqeVJvdAoJKTsKCnZvaWQgTV9Sb3RhdGVUb1haUGxhbmUg
KAogICAgICAgIGNvbnN0IE1fVmVjdG9yICAmIG5vcm0sCiAgICAgICAgTV9GTE9BVCAgICAgICAg
ICp4Um90LAogICAgICAgIE1fRkxPQVQgICAgICAgICAqelJvdAoJKTsKCmludCBNX0luc2lkZVBv
bHkyRCAoCiAgICAgICAgY29uc3QgTGlzdDxNX1ZlY3Rvcj4gICAgJiB2ZXJ0cywKICAgICAgICBj
b25zdCBNX1ZlY3RvciAgICAgICAgICAmIGludGVyc2VjdCwKICAgICAgICBpbnQgICAgICAgICAg
ICAgICAgICAgICB3aGljaAoJKTsKCmludCBNX0luc2lkZVBvbHkyRCAoCiAgICAgICAgTGlzdDxN
X1ZlY3RvcjI+IHZlcnRzLAogICAgICAgIGNvbnN0IE1fVmVjdG9yMiAmIGludGVyc2VjdCwKICAg
ICAgICBmbG9hdCAgICAgICAgICAgZXBzCgkpOwoKaW50IE1fSW50ZXJzZWN0TGluZTJkICgKICAg
ICAgICBNX1ZlY3RvcjIgICBhMSwKICAgICAgICBNX1ZlY3RvcjIgICBhMiwKICAgICAgICBNX1Zl
Y3RvcjIgICBiMSwKICAgICAgICBNX1ZlY3RvcjIgICBiMiwKICAgICAgICBNX1ZlY3RvcjIgICAq
YW5zd2VyCgkpOwoKaW50IE1fSW50ZXJzZWN0U2VnMmQgKAogICAgICAgIE1fVmVjdG9yMiAgIGEx
LAogICAgICAgIE1fVmVjdG9yMiAgIGEyLAogICAgICAgIE1fVmVjdG9yMiAgIGIxLAogICAgICAg
IE1fVmVjdG9yMiAgIGIyLAogICAgICAgIE1fVmVjdG9yMiAgICphbnN3ZXIKCSk7CgppbnQgTV9J
bnRlcnNlY3RTZWcyZFBhcmFtICgKICAgICAgICBNX1ZlY3RvcjIgICBhMSwKICAgICAgICBNX1Zl
Y3RvcjIgICBhMiwKICAgICAgICBNX1ZlY3RvcjIgICBiMSwKICAgICAgICBNX1ZlY3RvcjIgICBi
MiwKICAgICAgICBNX1ZlY3RvcjIgICAqYW5zd2VyLAogICAgICAgIGZsb2F0ICAgICAgICpzLAog
ICAgICAgIGZsb2F0ICAgICAgICp0CgkpOwoKaW50IE1fRGVnZW5lcmF0ZVRyaWFuZ2xlICgKICAg
ICAgICBjb25zdCBNX1ZlY3RvciAgJiB2MCwKICAgICAgICBjb25zdCBNX1ZlY3RvciAgJiB2MSwK
ICAgICAgICBjb25zdCBNX1ZlY3RvciAgJiB2MgoJKTsKCkxpc3Q8TV9WZWN0b3I+IE1fSW50ZXJz
ZWN0UG9seXMgKAogICAgICAgIGNvbnN0IExpc3Q8TV9WZWN0b3I+ICAgICYgcDFWZXJ0cywKICAg
ICAgICBjb25zdCBMaXN0PE1fVmVjdG9yPiAgICAmIHAyVmVydHMKCSk7CgpMaXN0PE1fVmVjdG9y
PiBNX0ludGVyc2VjdFBsYW5lcyAoCiAgICAgICAgY29uc3QgTV9WZWN0b3I0ICYgcGxlcTEsCiAg
ICAgICAgY29uc3QgTV9WZWN0b3I0ICYgcGxlcTIKCSk7CgppbnQgTV9DbGlwTGluZVRvUG9seSAo
CiAgICAgICAgTV9WZWN0b3IgICAgICAgICAgICAqIHYwLAogICAgICAgIE1fVmVjdG9yICAgICAg
ICAgICAgKiB2MSwKICAgICAgICBjb25zdCBMaXN0PE1fVmVjdG9yPiAmdmVydHMKCSk7CgppbnQg
TV9DbGlwU2VnVG9Qb2x5ICgKICAgICAgICBNX1ZlY3RvciAgKnYwLAogICAgICAgIE1fVmVjdG9y
ICAqdjEsCiAgICAgICAgY29uc3QgTGlzdDxNX1ZlY3Rvcj4gICZ2ZXJ0cwoJKTsKCnZvaWQgTV9H
ZXRQbGFuZUNvZGUgKAogICAgICAgIGNvbnN0IE1fVmVjdG9yNCAmcGxlcSwKICAgICAgICBpbnQg
ICAgICp1LAogICAgICAgIGludCAgICAgKnYsCiAgICAgICAgaW50ICAgICAqdwoJKTsKCmludCBN
X0ludGVyc2VjdExpbmVTZWcyZCAoCiAgICAgICAgTV9WZWN0b3IyICAgYTEsCiAgICAgICAgTV9W
ZWN0b3IyICAgYjEsCiAgICAgICAgTV9WZWN0b3IyICAgYTIsCiAgICAgICAgTV9WZWN0b3IyICAg
YjIsCiAgICAgICAgTV9WZWN0b3IyICAgKnh5CgkpOwoKdm9pZCBNX01ha2VUaGlyZENvb3JkICgK
ICAgICAgICBMaXN0PE1fVmVjdG9yPiAgJnZlcnRzLAogICAgICAgIGNvbnN0IE1fVmVjdG9yNCAm
cGxlcQoJKTsKCmludCBNX0VsZW1JbnNpZGUyZCAoCiAgICAgICAgY29uc3QgTGlzdDxNX1ZlY3Rv
cj4gICZjb29yZHMsCiAgICAgICAgY29uc3QgTV9WZWN0b3IgICAgICAmdmVydCwKICAgICAgICBj
b25zdCBNX1ZlY3RvcjQgICZwbGFuZQoJKTsKCmludCBNX0ludGVyc2VjdFBsYW5lTGluZSAoCiAg
ICAgICAgY29uc3QgTV9WZWN0b3I0ICAmcGxhbmUsCiAgICAgICAgY29uc3QgTV9WZWN0b3IgICAm
cG50MSwKICAgICAgICBjb25zdCBNX1ZlY3RvciAgICZwbnQyLAogICAgICAgIE1fVmVjdG9yICAq
b3V0CgkpOwoKaW50IE1fSW5zaWRlUG9seTNEICgKICAgICAgICBjb25zdCBMaXN0PE1fVmVjdG9y
PiAgICAmdmVydHMsCiAgICAgICAgY29uc3QgTV9WZWN0b3I0ICAmcGxhbmUsCiAgICAgICAgY29u
c3QgTV9WZWN0b3IgICZpbnRlcnNlY3QgCgkpOwoKTV9NYXRyaXggTV9BcmJSb3QgKAogICAgICAg
IGNvbnN0IE1fVmVjdG9yICAmcDEsCiAgICAgICAgY29uc3QgTV9WZWN0b3IgICZwMiwKICAgICAg
ICBmbG9hdCAgICBkZWdyZWUKCSk7CgoKIAoKdm9pZCBsb2FkbWF0cml4ICggCiAgICAgICAgY29u
c3QgTV9NYXRyaXggJiB0aGVNYXQKCSk7Cgp2b2lkIG11bHRtYXRyaXggKCAKICAgICAgICBjb25z
dCBNX01hdHJpeCAmIHRoZU1hdAoJKTsKCnZvaWQgZ2V0bWF0cml4ICggCiAgICAgICAgTV9NYXRy
aXggJiB0aGVNYXQKCSk7Cgp2b2lkIHYzZiAoCiAgICAgICAgY29uc3QgTV9WZWN0b3IgJiB2ZWMK
CSk7CgoKIAoKTV9WZWN0b3IgICAgICAgIG9wZXJhdG9yLSAoCiAgICAgICAgY29uc3QgTV9WZWN0
b3IgJiB2CgkpOwoKTV9WZWN0b3IyICAgICAgIG9wZXJhdG9yLSAoCiAgICAgICAgY29uc3QgTV9W
ZWN0b3IyICYgdgoJKTsKCk1fVmVjdG9yNCBvcGVyYXRvci0gKAogICAgICAgIGNvbnN0IE1fVmVj
dG9yNCAmIHYKCSk7CgpNX1ZlY3RvciAgICAgICAgb3BlcmF0b3ItICgKICAgICAgICBjb25zdCBN
X1ZlY3RvciAmIHYwLAogICAgICAgIGNvbnN0IE1fVmVjdG9yICYgdjEKCSk7CgpNX1ZlY3RvcjIg
ICAgICAgb3BlcmF0b3ItICgKICAgICAgICBjb25zdCBNX1ZlY3RvcjIgJiB2MCwKICAgICAgICBj
b25zdCBNX1ZlY3RvcjIgJiB2MQoJKTsKCk1fTWF0cml4ICAgICAgICBvcGVyYXRvci0gKAogICAg
ICAgIGNvbnN0IE1fTWF0cml4ICYgbTAsCiAgICAgICAgY29uc3QgTV9NYXRyaXggJiBtMQoJKTsK
Ck1fTWF0cml4IG9wZXJhdG9yIC0gKAogICAgICAgIGNvbnN0IE1fTWF0cml4ICYgbQoJKTsKCk1f
VmVjdG9yNCAgICAgICBvcGVyYXRvci0gKAogICAgICAgIGNvbnN0IE1fVmVjdG9yNCAmIHIwLAog
ICAgICAgIGNvbnN0IE1fVmVjdG9yNCAmIHIxCgkpOwoKTV9WZWN0b3IgJiAgICAgIG9wZXJhdG9y
LT0gKAogICAgICAgIE1fVmVjdG9yICYgdjAsCiAgICAgICAgY29uc3QgTV9WZWN0b3IgJiB2MQoJ
KTsKCk1fVmVjdG9yMiAmICAgICBvcGVyYXRvci09ICgKICAgICAgICBNX1ZlY3RvcjIgJiB2MCwK
ICAgICAgICBjb25zdCBNX1ZlY3RvcjIgJiB2MQoJKTsKCk1fTWF0cml4ICYgICAgICBvcGVyYXRv
ci09ICgKICAgICAgICBNX01hdHJpeCAmIG0wLAogICAgICAgIGNvbnN0IE1fTWF0cml4ICYgbTEK
CSk7CgpNX1ZlY3RvcjQgJiAgICAgb3BlcmF0b3ItPSAoCiAgICAgICAgTV9WZWN0b3I0ICYgcjAs
CiAgICAgICAgY29uc3QgTV9WZWN0b3I0ICYgcjEKCSk7CgpNX1ZlY3Rvck4gb3BlcmF0b3IgLSAo
CiAgICAgICAgY29uc3QgTV9WZWN0b3JOICYgYQoJKTsKCk1fVmVjdG9yTiBvcGVyYXRvciAtICgK
ICAgICAgICBjb25zdCBNX1ZlY3Rvck4gJiBhLAogICAgICAgIGNvbnN0IE1fVmVjdG9yTiAmIGIK
CSk7CgpNX1ZlY3Rvck4gJiBvcGVyYXRvci09ICgKICAgICAgICBNX1ZlY3Rvck4gJiBhbnN3ZXIs
CiAgICAgICAgY29uc3QgTV9WZWN0b3JOICYgYgoJKTsKCk1fTWF0cml4MjIgb3BlcmF0b3IgLSAo
CiAgICAgICAgY29uc3QgTV9NYXRyaXgyMiAmIGEKCSk7CgpNX01hdHJpeDIyIG9wZXJhdG9yIC0g
KAogICAgICAgIGNvbnN0IE1fTWF0cml4MjIgJiBhLAogICAgICAgIGNvbnN0IE1fTWF0cml4MjIg
JiBiCgkpOwoKTV9NYXRyaXgyMiAmIG9wZXJhdG9yIC09ICgKICAgICAgICBNX01hdHJpeDIyICYg
YW5zd2VyLAogICAgICAgIGNvbnN0IE1fTWF0cml4MjIgJiBiCgkpOwoKTV9NYXRyaXhNTiBvcGVy
YXRvciAtICgKICAgICAgICBjb25zdCBNX01hdHJpeE1OICYgYQoJKTsKCk1fTWF0cml4TU4gb3Bl
cmF0b3IgLSAoCiAgICAgICAgY29uc3QgTV9NYXRyaXhNTiAmIGEsCiAgICAgICAgY29uc3QgTV9N
YXRyaXhNTiAmIGIKCSk7CgpNX01hdHJpeE1OICYgb3BlcmF0b3ItPSAoCiAgICAgICAgTV9NYXRy
aXhNTiAmIGFuc3dlciwKICAgICAgICBjb25zdCBNX01hdHJpeE1OICYgYgoJKTsKCgogCgoKIAoK
dm9pZCBnbExvYWRNYXRyaXhmICggCiAgICAgICAgY29uc3QgTV9NYXRyaXggJiB0aGVNYXQKCSk7
Cgp2b2lkIGdsTXVsdE1hdHJpeGYgKCAKICAgICAgICBjb25zdCBNX01hdHJpeCAmIHRoZU1hdAoJ
KTsKCnZvaWQgZ2xWZXJ0ZXgzZnYgKAogICAgICAgIGNvbnN0IE1fVmVjdG9yICYgdmVjCgkpOwoK
CiAKCk1fVmVjdG9yICAgICAgICBvcGVyYXRvcisgKCAgCiAgICAgICAgY29uc3QgTV9WZWN0b3Ig
JiB2MCwKICAgICAgICBjb25zdCBNX1ZlY3RvciAmIHYxIAoJKTsKCk1fVmVjdG9yMiAgICAgICBv
cGVyYXRvcisgKCAgCiAgICAgICAgY29uc3QgTV9WZWN0b3IyICYgdjAsCiAgICAgICAgY29uc3Qg
TV9WZWN0b3IyICYgdjEgCgkpOwoKTV9NYXRyaXggICAgICAgIG9wZXJhdG9yKyAoCiAgICAgICAg
Y29uc3QgTV9NYXRyaXggJiBtMCwKICAgICAgICBjb25zdCBNX01hdHJpeCAmIG0xCgkpOwoKTV9W
ZWN0b3I0ICAgICAgIG9wZXJhdG9yKyAoCiAgICAgICAgY29uc3QgTV9WZWN0b3I0ICYgcjAsCiAg
ICAgICAgY29uc3QgTV9WZWN0b3I0ICYgcjEKCSk7CgpNX1ZlY3RvciAmICAgICAgb3BlcmF0b3Ir
PSAoCiAgICAgICAgTV9WZWN0b3IgJiB2LAogICAgICAgIGNvbnN0IE1fVmVjdG9yICYgdjEKCSk7
CgpNX1ZlY3RvcjIgJiAgICAgb3BlcmF0b3IrPSAoCiAgICAgICAgTV9WZWN0b3IyICYgdiwKICAg
ICAgICBjb25zdCBNX1ZlY3RvcjIgJiB2MQoJKTsKCk1fTWF0cml4ICYgICAgICBvcGVyYXRvcis9
ICgKICAgICAgICBNX01hdHJpeCAmIG0sCiAgICAgICAgY29uc3QgTV9NYXRyaXggJiBtMQoJKTsK
Ck1fVmVjdG9yNCAmICAgICBvcGVyYXRvcis9ICgKICAgICAgICBNX1ZlY3RvcjQgJiByLAogICAg
ICAgIGNvbnN0IE1fVmVjdG9yNCAmIHIxCgkpOwoKTV9WZWN0b3JOIG9wZXJhdG9yICsgKAogICAg
ICAgIGNvbnN0IE1fVmVjdG9yTiAmIGEsCiAgICAgICAgY29uc3QgTV9WZWN0b3JOICYgYgoJKTsK
Ck1fVmVjdG9yTiAmIG9wZXJhdG9yKz0gKAogICAgICAgIE1fVmVjdG9yTiAmIGFuc3dlciwKICAg
ICAgICBjb25zdCBNX1ZlY3Rvck4gJiBiCgkpOwoKTV9NYXRyaXgyMiBvcGVyYXRvciArICgKICAg
ICAgICBjb25zdCBNX01hdHJpeDIyICYgYSwKICAgICAgICBjb25zdCBNX01hdHJpeDIyICYgYgoJ
KTsKCk1fTWF0cml4MjIgJiBvcGVyYXRvciArPSAoCiAgICAgICAgTV9NYXRyaXgyMiAmIGFuc3dl
ciwKICAgICAgICBjb25zdCBNX01hdHJpeDIyICYgYgoJKTsKCk1fTWF0cml4TU4gb3BlcmF0b3Ig
KyAoCiAgICAgICAgY29uc3QgTV9NYXRyaXhNTiAmIGEsCiAgICAgICAgY29uc3QgTV9NYXRyaXhN
TiAmIGIKCSk7CgpNX01hdHJpeE1OICYgb3BlcmF0b3IrPSAoCiAgICAgICAgTV9NYXRyaXhNTiAm
IGFuc3dlciwKICAgICAgICBjb25zdCBNX01hdHJpeE1OICYgYgoJKTsKCgogCgpNX0ZMT0FUICAg
ICAgICAgb3BlcmF0b3IqICgKICAgICAgICBjb25zdCBNX1ZlY3RvciAmIHYwLAogICAgICAgIGNv
bnN0IE1fVmVjdG9yICYgdjEKCSk7CgpNX0ZMT0FUICAgICAgICAgb3BlcmF0b3IqICgKICAgICAg
ICBjb25zdCBNX1ZlY3RvcjQgJiB2MCwKICAgICAgICBjb25zdCBNX1ZlY3RvcjQgJiB2MQoJKTsK
Ck1fRkxPQVQgICAgICAgICBvcGVyYXRvciogKAogICAgICAgIGNvbnN0IE1fVmVjdG9yMiAmIHYw
LAogICAgICAgIGNvbnN0IE1fVmVjdG9yMiAmIHYxCgkpOwoKTV9GTE9BVCBvcGVyYXRvciogKAog
ICAgICAgIGNvbnN0IE1fVmVjdG9yTiAmIGEsCiAgICAgICAgY29uc3QgTV9WZWN0b3JOICYgYgoJ
KTsKCk1fVmVjdG9yICAgICAgICBvcGVyYXRvciogKAogICAgICAgIGNvbnN0IE1fVmVjdG9yICYg
diwKICAgICAgICBjb25zdCBNX01hdHJpeCAmIG0KCSk7CgpNX1ZlY3RvciAgICAgICAgb3BlcmF0
b3IqICgKICAgICAgICBjb25zdCBNX01hdHJpeCAmIG0sCiAgICAgICAgY29uc3QgTV9WZWN0b3Ig
JiB2CgkpOwoKTV9NYXRyaXggICAgICAgIG9wZXJhdG9yKiAoCiAgICAgICAgY29uc3QgTV9NYXRy
aXggJiBtMCwKICAgICAgICBjb25zdCBNX01hdHJpeCAmIG0xCgkpOwoKTV9WZWN0b3I0ICAgICAg
IG9wZXJhdG9yKiAoCiAgICAgICAgY29uc3QgTV9WZWN0b3I0ICYgciwKICAgICAgICBjb25zdCBN
X01hdHJpeCAmIG0KCSk7CgpNX1ZlY3RvciAmICAgICAgb3BlcmF0b3IqPSAoCiAgICAgICAgTV9W
ZWN0b3IgJiB2LAogICAgICAgIGNvbnN0IE1fTWF0cml4ICYgbSAKCSk7CgpNX01hdHJpeCAmICAg
ICAgb3BlcmF0b3IqPSAoCiAgICAgICAgTV9NYXRyaXggJiBtLAogICAgICAgIGNvbnN0IE1fTWF0
cml4ICYgbTEKCSk7CgpNX01hdHJpeDIyICYgICAgICAgIG9wZXJhdG9yKj0gKAogICAgICAgIE1f
TWF0cml4MjIgJiBtLAogICAgICAgIGNvbnN0IE1fTWF0cml4MjIgJiBtMQoJKTsKCk1fTWF0cml4
TU4gJiAgICAgICAgb3BlcmF0b3IqPSAoCiAgICAgICAgTV9NYXRyaXhNTiAmIG0sCiAgICAgICAg
Y29uc3QgTV9NYXRyaXhNTiAmIG0xCgkpOwoKTV9WZWN0b3I0ICYgICAgIG9wZXJhdG9yKj0gKAog
ICAgICAgIE1fVmVjdG9yNCAmIHIsCiAgICAgICAgY29uc3QgTV9NYXRyaXggJiBtCgkpOwoKTV9N
YXRyaXgyMiAgICAgIG9wZXJhdG9yKiAoCiAgICAgICAgY29uc3QgTV9NYXRyaXgyMiAmIG0wLAog
ICAgICAgIGNvbnN0IE1fTWF0cml4MjIgJiBtMQoJKTsKCk1fTWF0cml4TU4gb3BlcmF0b3IqICgK
ICAgICAgICBjb25zdCBNX01hdHJpeE1OICYgYSwKICAgICAgICBjb25zdCBNX01hdHJpeE1OICYg
YgoJKTsKCgogCgpNX01hdHJpeCBNX1RyYW5zcG9zZSAoCiAgICAgICAgY29uc3QgTV9NYXRyaXgg
JiBvcmdNYXQKCSk7CgpNX01hdHJpeCBNX0ludmVyc2UgKAogICAgICAgIGNvbnN0IE1fTWF0cml4
ICYgb3JnTWF0CgkpOwoKTV9WZWN0b3JOIE1fR2F1c3NFbGltICgKICAgIGNvbnN0IE1fTWF0cml4
TU4gJmluX21hdCwKICAgIGNvbnN0IE1fVmVjdG9yTiAmaW5feQoJKTsKCk1fTWF0cml4IE1fUm90
YXRlWCAoCiAgICAgICAgTV9GTE9BVCBkZWcKCSk7CgpNX01hdHJpeCBNX1JvdGF0ZVkgKAogICAg
ICAgIE1fRkxPQVQgZGVnCgkpOwoKTV9NYXRyaXggTV9Sb3RhdGVaICgKICAgICAgICBNX0ZMT0FU
IGRlZwoJKTsKCk1fTWF0cml4IE1fUm90YXRlICgKICAgICAgICBNX0ZMT0FUIHhyb3QsCiAgICAg
ICAgTV9GTE9BVCB5cm90LAogICAgICAgIE1fRkxPQVQgenJvdAoJKTsKCk1fTWF0cml4IE1fUm90
YXRlICgKICAgICAgICBNX0ZMT0FUICogcm90cwoJKTsKCk1fTWF0cml4IE1fUm90YXRlICgKICAg
ICAgICBjb25zdCBNX1ZlY3RvciAmIHJvdHMKCSk7CgpNX01hdHJpeCBNX1RyYW5zbGF0ZSAoCiAg
ICAgICAgTV9GTE9BVCB4LAogICAgICAgIE1fRkxPQVQgeSwKICAgICAgICBNX0ZMT0FUIHoKCSk7
CgpNX01hdHJpeCBNX1RyYW5zbGF0ZSAoCiAgICAgICAgTV9GTE9BVCAqIHRyYW5zCgkpOwoKTV9N
YXRyaXggTV9UcmFuc2xhdGUgKAogICAgICAgIGNvbnN0IE1fVmVjdG9yICYgdHJhbnMKCSk7CgpN
X01hdHJpeCBNX1NjYWxlICgKICAgICAgICBNX0ZMT0FUIHgsCiAgICAgICAgTV9GTE9BVCB5LAog
ICAgICAgIE1fRkxPQVQgegoJKTsKCk1fTWF0cml4IE1fU2NhbGUgKAogICAgICAgIE1fRkxPQVQg
KnNjYWxlCgkpOwoKTV9NYXRyaXggTV9TY2FsZSAoCiAgICAgICAgY29uc3QgTV9WZWN0b3IgJiBz
Y2FsZQoJKTsKCk1fTWF0cml4IE1fU2NhbGVBbGwgKAogICAgICAgIE1fRkxPQVQgdmFsdWUKCSk7
CgpNX01hdHJpeCBNX1NoZWFyWFkgKAogICAgICAgIE1fRkxPQVQgeHkKCSk7CgpNX01hdHJpeCBN
X1NoZWFyWFogKAogICAgICAgIE1fRkxPQVQgeHoKCSk7CgpNX01hdHJpeCBNX1NoZWFyWVogKAog
ICAgICAgIE1fRkxPQVQgeXoKCSk7CgpNX01hdHJpeCBNX1NoZWFyICgKICAgICAgICBNX0ZMT0FU
IHh5LAogICAgICAgIE1fRkxPQVQgeHosCiAgICAgICAgTV9GTE9BVCB5egoJKTsKCk1fTWF0cml4
IE1fU2hlYXIgKAogICAgICAgIE1fRkxPQVQgKiBzaGVhcgoJKTsKCk1fTWF0cml4IE1fU2hlYXIg
KAogICAgICAgIGNvbnN0IE1fVmVjdG9yICYgc2hlYXIKCSk7CgpNX01hdHJpeCBNX01ha2VYZm9y
bSAoCiAgICAgICAgaW50ICAgICAqIGdpbWJhbCwKICAgICAgICBNX0ZMT0FUIHR4LAogICAgICAg
IE1fRkxPQVQgdHksCiAgICAgICAgTV9GTE9BVCB0eiwKICAgICAgICBNX0ZMT0FUIHJ4LAogICAg
ICAgIE1fRkxPQVQgcnksCiAgICAgICAgTV9GTE9BVCByeiwKICAgICAgICBNX0ZMT0FUIHN4LAog
ICAgICAgIE1fRkxPQVQgc3ksCiAgICAgICAgTV9GTE9BVCBzegoJKTsKCk1fTWF0cml4IE1fTWFr
ZVhmb3JtICgKICAgICAgICBpbnQgICAgICogZ2ltYmFsLAogICAgICAgIE1fRkxPQVQgKiB0LAog
ICAgICAgIE1fRkxPQVQgKiByLAogICAgICAgIE1fRkxPQVQgKiBzCgkpOwoKTV9NYXRyaXggTV9N
YWtlWGZvcm0gKAogICAgICAgIGludCAgICAgKiBnaW1iYWwsCiAgICAgICAgY29uc3QgTV9WZWN0
b3IgJiB0LAogICAgICAgIGNvbnN0IE1fVmVjdG9yICYgciwKICAgICAgICBjb25zdCBNX1ZlY3Rv
ciAmIHMKCSk7Cgp2b2lkIE1fTm9ybWFsaXplICgKICAgICAgICBNX1ZlY3RvciAmICB2ZWMKCSk7
CgpNX01hdHJpeCBNX0NvbXBvc2UgKAogICAgICAgIE1fRkxPQVQgc2NhbGVYLAogICAgICAgIE1f
RkxPQVQgc2NhbGVZLAogICAgICAgIE1fRkxPQVQgc2NhbGVaLAogICAgICAgIE1fRkxPQVQgc2hl
YXJYWSwKICAgICAgICBNX0ZMT0FUIHNoZWFyWFosCiAgICAgICAgTV9GTE9BVCBzaGVhcllaLAog
ICAgICAgIE1fRkxPQVQgcm90c1gsCiAgICAgICAgTV9GTE9BVCByb3RzWSwKICAgICAgICBNX0ZM
T0FUIHJvdHNaLAogICAgICAgIE1fRkxPQVQgdHJhbnNYLAogICAgICAgIE1fRkxPQVQgdHJhbnNZ
LAogICAgICAgIE1fRkxPQVQgdHJhbnNaCgkpOwoKTV9NYXRyaXggTV9Db21wb3NlICgKICAgICAg
ICBNX0ZMT0FUICogc2NhbGUsCiAgICAgICAgTV9GTE9BVCAqIHNoZWFyLAogICAgICAgIE1fRkxP
QVQgKiByb3RzLAogICAgICAgIE1fRkxPQVQgKiB0cmFucwoJKTsKCk1fTWF0cml4IE1fQ29tcG9z
ZSAoCiAgICAgICAgY29uc3QgTV9WZWN0b3IgJiBzY2FsZSwKICAgICAgICBjb25zdCBNX1ZlY3Rv
ciAmIHNoZWFyLAogICAgICAgIGNvbnN0IE1fVmVjdG9yICYgcm90cywKICAgICAgICBjb25zdCBN
X1ZlY3RvciAmIHRyYW5zCgkpOwoKTV9NYXRyaXggTV9Db21wb3NlICgKICAgICAgICBNX0ZMT0FU
IHNjYWxlWCwKICAgICAgICBNX0ZMT0FUIHNjYWxlWSwKICAgICAgICBNX0ZMT0FUIHNjYWxlWiwK
ICAgICAgICBNX0ZMT0FUIHJvdHNYLAogICAgICAgIE1fRkxPQVQgcm90c1ksCiAgICAgICAgTV9G
TE9BVCByb3RzWiwKICAgICAgICBNX0ZMT0FUIHRyYW5zWCwKICAgICAgICBNX0ZMT0FUIHRyYW5z
WSwKICAgICAgICBNX0ZMT0FUIHRyYW5zWgoJKTsKCk1fTWF0cml4IE1fQ29tcG9zZSAoCiAgICAg
ICAgTV9GTE9BVCAqIHNjYWxlLAogICAgICAgIE1fRkxPQVQgKiByb3RzLAogICAgICAgIE1fRkxP
QVQgKiB0cmFucwoJKTsKCk1fTWF0cml4IE1fQ29tcG9zZSAoCiAgICAgICAgY29uc3QgTV9WZWN0
b3IgJiBzY2FsZSwKICAgICAgICBjb25zdCBNX1ZlY3RvciAmIHJvdHMsCiAgICAgICAgY29uc3Qg
TV9WZWN0b3IgJiB0cmFucwoJKTsKCk1fTWF0cml4IE1fQ29tcG9zZSAoCiAgICAgICAgaW50ICAg
ICAqIG9yZGVyLAogICAgICAgIE1fRkxPQVQgc2NhbGVYLAogICAgICAgIE1fRkxPQVQgc2NhbGVZ
LAogICAgICAgIE1fRkxPQVQgc2NhbGVaLAogICAgICAgIE1fRkxPQVQgcm90c1gsCiAgICAgICAg
TV9GTE9BVCByb3RzWSwKICAgICAgICBNX0ZMT0FUIHJvdHNaLAogICAgICAgIE1fRkxPQVQgdHJh
bnNYLAogICAgICAgIE1fRkxPQVQgdHJhbnNZLAogICAgICAgIE1fRkxPQVQgdHJhbnNaCgkpOwoK
TV9NYXRyaXggTV9Db21wb3NlICgKICAgICAgICBpbnQgICAgICogb3JkZXIsCiAgICAgICAgTV9G
TE9BVCAqIHNjYWxlLAogICAgICAgIE1fRkxPQVQgKiByb3RzLAogICAgICAgIE1fRkxPQVQgKiB0
cmFucwoJKTsKCk1fTWF0cml4IE1fQ29tcG9zZSAoCiAgICAgICAgaW50ICAgICAqIG9yZGVyLAog
ICAgICAgIGNvbnN0IE1fVmVjdG9yICYgc2NhbGUsCiAgICAgICAgY29uc3QgTV9WZWN0b3IgJiBy
b3RzLAogICAgICAgIGNvbnN0IE1fVmVjdG9yICYgdHJhbnMKCSk7CgppbnQgTV9EZWNvbXBvc2Ug
KAogICAgICAgIGNvbnN0IE1fTWF0cml4ICYgbWF0LAogICAgICAgIE1fRkxPQVQgKiBzY2FsZSwK
ICAgICAgICBNX0ZMT0FUICogc2hlYXIsCiAgICAgICAgTV9GTE9BVCAqIHJvdHMsCiAgICAgICAg
TV9GTE9BVCAqIHRyYW5zLAogICAgICAgIE1fRkxPQVQgKiBwZXJzcAoJKTsKCmludCBNX0RlY29t
cG9zZSAoCiAgICAgICAgY29uc3QgTV9NYXRyaXggJiBtYXQsCiAgICAgICAgTV9WZWN0b3IgICYg
c2NhbGUsCiAgICAgICAgTV9WZWN0b3IgICYgc2hlYXIsCiAgICAgICAgTV9WZWN0b3IgICYgcm90
cywKICAgICAgICBNX1ZlY3RvciAgJiB0cmFucywKICAgICAgICBNX1ZlY3RvcjQgJiBwZXJzcAoJ
KTsKCmludCBNX0RlY29tcG9zZSAoCiAgICAgICAgY29uc3QgTV9NYXRyaXggJiBtYXQsCiAgICAg
ICAgaW50ICAgICAqIG9yZGVyLAogICAgICAgIE1fRkxPQVQgKiBzY2FsZSwKICAgICAgICBNX0ZM
T0FUICogcm90cywKICAgICAgICBNX0ZMT0FUICogdHJhbnMsCiAgICAgICAgTV9GTE9BVCAqIHBl
cnNwCgkpOwoKaW50IE1fRGVjb21wb3NlICgKICAgICAgICBjb25zdCBNX01hdHJpeCAmIG1hdCwK
ICAgICAgICBpbnQgICAgICogb3JkZXIsCiAgICAgICAgTV9WZWN0b3IgICYgc2NhbGUsCiAgICAg
ICAgTV9WZWN0b3IgICYgcm90cywKICAgICAgICBNX1ZlY3RvciAgJiB0cmFucywKICAgICAgICBN
X1ZlY3RvcjQgJiBwZXJzcAoJKTsKCmludCBNX0RlY29tcG9zZU1hdCAoCiAgICAgICAgY29uc3Qg
TV9NYXRyaXggJiBtYXQsCiAgICAgICAgTV9GTE9BVCAqIHRyYW5zLAogICAgICAgIE1fRkxPQVQg
KiByb3RzLAogICAgICAgIE1fRkxPQVQgKiBzaGVhciwKICAgICAgICBNX0ZMT0FUICogc2NhbGUs
CiAgICAgICAgTV9GTE9BVCAqIHBlcnNwCgkpOwoKTV9GTE9BVCBNX0RldDR4NCAoCiAgICAgICAg
Y29uc3QgTV9NYXRyaXggJiBtCgkpOwoKTV9NYXRyaXggTV9NYWtlTG9jYWwgKAogICAgICAgIGNv
bnN0IE1fVmVjdG9yICYgY2VudGVyLAogICAgICAgIGNvbnN0IE1fVmVjdG9yICYgYXhpcwoJKTsK
Ck1fVmVjdG9yIE1fRmluZEdpbWJhbFJvdHMgKAogICAgICAgIGNvbnN0IE1fTWF0cml4ICYgbSwK
ICAgICAgICBpbnQgKmdpbWJhbAoJKTsKCnZvaWQgTV9GaW5kR2ltYmFsUm90cyAoCiAgICAgICAg
Y29uc3QgTV9NYXRyaXggJiBtLAogICAgICAgIE1fRkxPQVQgKnJvdHMsCiAgICAgICAgaW50ICpn
aW1iYWwKCSk7CgpNX01hdHJpeCBNX09ydGhvbm9ybWFsaXplICgKICAgIGNvbnN0IE1fTWF0cml4
ICZtCgkpOwoKCgoKCiMgMjUxICIvc29mdHdhcmUvdGhhbGlhL2gvc3RkbWF0aC5oIiAyCgoKZXh0
ZXJuIGNvbnN0IE1fVmVjdG9yIE1fT3JpZ2luOwpleHRlcm4gY29uc3QgTV9NYXRyaXggTV9JZGVu
dGl0eTsKCgojIDY0ICJoL05SSFlfU3RkLmgiIDIKCgogCgp0eXBlZGVmIGludCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBPTElTSDsKdHlwZWRlZiBzaG9ydCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBaT09MRUFOOwoKIAp0eXBlZGVmIHN0cnVjdCBscmJ0IHsKICAgIGZs
b2F0ICAgIGxlZnQ7CiAgICBmbG9hdCAgICByaWdodDsKICAgIGZsb2F0ICAgIGJvdHRvbTsKICAg
IGZsb2F0ICAgIHRvcDsKfSBMUkJUOwoKdHlwZWRlZiBzdHJ1Y3QgcmdiIHsKICAgIGZsb2F0ICAg
IHI7ICAgICAgICAgICAKICAgIGZsb2F0ICAgIGc7ICAgICAgICAgICAKICAgIGZsb2F0ICAgIGI7
ICAgICAgICAgICAKfSBOUkhZX1JHQjsKCnR5cGVkZWYgc3RydWN0IHJnYmkgewogICAgZmxvYXQg
ICAgcjsgICAgICAgICAgIAogICAgZmxvYXQgICAgZzsgICAgICAgICAgIAogICAgZmxvYXQgICAg
YjsgICAgICAgICAgIAogICAgZmxvYXQgICAgaTsgICAgICAgICAgIAp9IE5SSFlfUkdCSTsKCnR5
cGVkZWYgc3RydWN0IHJnYmlvIHsKICAgIGZsb2F0ICAgIHI7ICAgICAgICAgICAKICAgIGZsb2F0
ICAgIGc7ICAgICAgICAgICAKICAgIGZsb2F0ICAgIGI7ICAgICAgICAgICAKICAgIGZsb2F0ICAg
IGk7ICAgICAgICAgICAKICAgIGZsb2F0ICAgIG87ICAgICAgICAgICAKfSBOUkhZX1JHQklPOwoK
IAoKCiAKCgoKdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIExpc3Q7CnRlbXBsYXRlIDxjbGFzcyBU
PiBjbGFzcyBQbHVnaW5FbnRyeTsKdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFBsdWdpblRhYmxl
Owp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgTlJIWV9hbHBoYWxpc3Q7CnRlbXBsYXRlIDxjbGFz
cyBUPiBjbGFzcyBOUkhZX2J1bmNoOwp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgTlJIWV9jdXJy
ZW50Owp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgTlJIWV9maW5kOwp0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gY2xhc3MgTlJIWV9tYXRjaDsKCiAKCiMgNDcgImgvbnJoeXByaXZhdGUuaCIgMgoKIyAxICJo
L25yaHlwcml2YXRlLnAiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgpGcmFuZ2VDYWNoZUxvcmQg
Kk5SSFlfZ2V0RnJhbmdlQ2FjaGVMb3JkICgpOwoKRnJhbmdlQ2FjaGVMb3JkICpOUkhZX2dldElt
YWdlQ2FjaGVMb3JkICgpOwoKCiAKCnZvaWQgTlJIWV9hZGRUb1RoaW5nQWxwaGEgKAogICAgTlJI
WV9jbGFzc1RoaW5nICp0eXBlUHRyLAogICAgaW50IHR5cGUKCSk7Cgp2b2lkIE5SSFlfYWRkVG9B
cHBhcml0aW9uQWxwaGEgKAogICAgTlJIWV9jbGFzc1RoaW5nICp0eXBlUHRyLAogICAgaW50IHR5
cGUKCSk7Cgp2b2lkIE5SSFlfYWRkVG9PYmplY3RBbHBoYSAoCiAgICBOUkhZX2NsYXNzVGhpbmcg
KnR5cGVQdHIsCiAgICBpbnQgdHlwZQoJKTsKCnZvaWQgTlJIWV9yZW1vdmVGcm9tVGhpbmdBbHBo
YSAoCiAgICBOUkhZX2NsYXNzVGhpbmcgKnR5cGVQdHIKCSk7Cgp2b2lkIE5SSFlfcmVtb3ZlRnJv
bUFwcGFyaXRpb25BbHBoYSAoCiAgICBOUkhZX2NsYXNzVGhpbmcgKnR5cGVQdHIKCSk7Cgp2b2lk
IE5SSFlfcmVtb3ZlRnJvbU9iamVjdEFscGhhICgKICAgIE5SSFlfY2xhc3NUaGluZyAqdHlwZVB0
cgoJKTsKCgogCgp2b2lkICBOUkhZX2J1bmNoRnVuY0luaXRDaGFuQnVmZmVyICgKICAgIHZvaWQg
CgkpOwoKTlJIWV9jbGFzc0NoYW5uZWwgKipOUkhZX2J1bmNoRnVuY0dldENoYW5CdWZmZXIgKAog
ICAgdm9pZCAKCSk7CgpJTlQgTlJIWV9idW5jaEZ1bmNHZXRTaXplQ2hhbkJ1ZmZlciAoCiAgICB2
b2lkIAoJKTsKCnZvaWQgIE5SSFlfYnVuY2hGdW5jUmVzaXplQ2hhbkJ1ZmZlciAoCiAgICBJTlQg
bmV3U2l6ZQoJKTsKCnZvaWQgIE5SSFlfY2xlYW51cEJ1bmNoU3R1ZmYgKAogICAgdm9pZCAKCSk7
CgoKIAoKCgoKCgoKCiAKCgogCgoKIAoKCgoKCgogCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgpaT09MRUFOIE5SSFlfZ2V0RG9WYWx1ZUNoYW5naW5nVGVzdCAoCiAg
ICB2b2lkIAoJKTsKClpPT0xFQU4gTlJIWV9zZXREb1ZhbHVlQ2hhbmdpbmdUZXN0ICgKICAgIFpP
T0xFQU4gbmV3U3RhdHVzCgkpOwoKCiAKCmNoYXIgKk5SSFlfdG9VVUUgKCAKICAgICAgICBjaGFy
ICpvUHRyLCAKICAgICAgICB2b2lkICpwdHIsIAogICAgICAgIGludCBwaGFzZSAKCSk7CgoKIAoK
CgoKCgogCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKIAoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIAoKTlJIWV9jbGFzc0NoYW5uZWwgKiBOUkhZ
X2dldElrQ2hhbm5lbCAoCiAgICBOUkhZX2NsYXNzVGhpbmcgKiB0aGluZwoJKTsKCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKIAoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCgoKCgogCgoKCgoKCiAKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCiAKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKIAoKCiAKCgogCgoK
IAoKCiAKCgogCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA3ODAgImgvbnJoeXByaXZh
dGUucCIKCgoKCgoKCiAKClpPT0xFQU4gTlJIWV9yZXNvbHZlQ2xvbmVMaW5rYWdlcyAoCiAgICBO
UkhZX2J1bmNoIDxOUkhZX2NsYXNzVGhpbmc+ICAgICpidW5jaF9vcmlnaW5hbFRoaW5nUHRycywK
ICAgIE5SSFlfYnVuY2ggPE5SSFlfY2xhc3NUaGluZz4gICAgKmJ1bmNoX2Nsb25lZFRoaW5nUHRy
cwoJKTsKCgoKCgoKIAoKSU5UIE5SSFlfY0NvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIK
CSk7CgpJTlQgTlJIWV9jQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAog
ICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCgoKCgogCgpJTlQgTlJIWV9jaGFubmVs
Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX2NoYW5uZWxDb21t
YW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFS
ICo+IGxpbmUKCSk7CgoKIAoKSU5UIE5SSFlfY2FsY0NvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAg
Km9wZXIKCSk7CgpJTlQgTlJIWV9jYWxjQ29tbWFuZCAoCiAgICAgICAgTGlzdDxIVV9FeHByZXNz
aW9uPiBleHBycwoJKTsKCgoKCgoKCgoKCgoKCgoKCgoKIAoKSU5UIE5SSFlfY2FtZXJhQ29tbWFu
ZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX2NhbWVyYUNvbW1hbmQgKAog
ICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGlu
ZQoJKTsKCgoKCgoKCgoKCgoKCgoKCiAKCmludCBOUkhZX2NjdXJ2ZUNvbW1hbmQgKAoJCSAgICAg
ICBjb25zdCBjaGFyKiBvcGVyCgkpOwoKaW50IE5SSFlfY2N1cnZlQ29tbWFuZCAoCgkJICAgICAg
IGNvbnN0IGNoYXIqIG9wZXIsCgkJICAgICAgIExpc3Q8IGNvbnN0IGNoYXIqID4gbGluZQoJKTsK
CgogCgpJTlQgTlJIWV9jbG9uZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJ
TlQgTlJIWV9jbG9uZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAg
IExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgoKCgoKCgogCgpJTlQgTlJIWV9jb2xsaXNp
b25Db21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfY29sbGlzaW9u
Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3Qg
Q0hBUiAqPiBsaW5lCgkpOwoKCgoKCgoKCgoKIAoKSU5UIE5SSFlfY29sbGlzaW9uQ2hhbkNvbW1h
bmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV9jb2xsaXNpb25DaGFuQ29t
bWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3QgQ0hB
UiAqPiBsaW5lCgkpOwoKCiAKCklOVCBOUkhZX2NvcHlDb21tYW5kICgKICAgIGNvbnN0IENIQVIg
ICpvcGVyCgkpOwoKSU5UIE5SSFlfY29weUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAg
ICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgogCgpJTlQgTlJIWV9j
cmVhdGVDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfY3JlYXRl
Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3Qg
Q0hBUiAqPiBsaW5lCgkpOwoKCgojIDk3NSAiaC9ucmh5cHJpdmF0ZS5wIgoKCgoKCgoKIAoKCgoK
CklOVCBOUkhZX2RlYnVnQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBO
UkhZX2RlYnVnQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlz
dCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKdm9pZCBOUkhZX3NldERlYnVnQ2FjaGVTdGF0ZSAo
CiAgICBCT09MRUFOIHN0YXRlCgkpOwoKQk9PTEVBTiBOUkhZX2dldERlYnVnQ2FjaGVTdGF0ZSAo
CiAgICB2b2lkCgkpOwoKdm9pZCBOUkhZX3NldERlYnVnTm9ybWFsaXplU3RhdGUgKAogICAgQk9P
TEVBTiBzdGF0ZQoJKTsKCkJPT0xFQU4gTlJIWV9nZXREZWJ1Z05vcm1hbGl6ZVN0YXRlICgKICAg
IHZvaWQKCSk7CgoKIAoKSU5UIE5SSFlfZGVwZW5kQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAq
b3BlcgoJKTsKCklOVCBOUkhZX2RlcGVuZENvbW1hbmQgKAogICAgICAgIExpc3Q8SFVfRXhwcmVz
c2lvbj4gZXhwcnMKCSk7CgoKIAoKSU5UIE5SSFlfZGVmaW5lQnV0dG9uQ29tbWFuZCAoCiAgICBj
b25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX2RlZmluZUJ1dHRvbkNvbW1hbmQgKAogICAg
Y29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJ
KTsKCgogCgpJTlQgTlJIWV9kZWxldGVDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkp
OwoKSU5UIE5SSFlfZGVsZXRlQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVy
LAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCiAKCklOVCBOUkhZX2R1bXBvYmpD
b21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfZHVtcG9iakNvbW1h
bmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIg
Kj4gbGluZQoJKTsKCgoKCgoKIAoKSU5UIE5SSFlfZHVtcHN0cmVhbUNvbW1hbmQgKAogICAgY29u
c3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV9kdW1wc3RyZWFtQ29tbWFuZCAoCiAgICBjb25z
dCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoK
CgoKCgogCgpJTlQgTlJIWV9keW5hbWljc0NvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIK
CSk7CgpJTlQgTlJIWV9keW5hbWljc0NvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAq
b3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgogCgpJTlQgTlJIWV9keW5D
aGFuQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX2R5bkNoYW5D
b21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBD
SEFSICo+IGxpbmUKCSk7CgoKCgoKCiAKCklOVCBOUkhZX2VDb21tYW5kICgKICAgIGNvbnN0IENI
QVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAg
ICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKSU5UIE5SSFlfZWFzZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJ
TlQgTlJIWV9lYXNlQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAg
TGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCiAKCklOVCBOUkhZX2ZvcmNlQ2hhbkNvbW1h
bmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV9mb3JjZUNoYW5Db21tYW5k
ICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+
IGxpbmUKCSk7CgoKIAoKSU5UIE5SSFlfZm9yY2VDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpv
cGVyCgkpOwoKSU5UIE5SSFlfZm9yY2VDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAg
Km9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoKCgoKCiAKCmludCBOUkhZ
X2Z1ckNvbW1hbmQgKAogICAgY29uc3QgY2hhciAqb3BlcgoJKTsKCmludCBOUkhZX2Z1ckNvbW1h
bmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIg
Kj4gbGluZQoJKTsKCgogCgppbnQgTlJIWV9tdXNjbGVDb21tYW5kICgKICAgIGNvbnN0IGNoYXIg
Km9wZXIKCSk7CgppbnQgTlJIWV9tdXNjbGVDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAg
ICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoKIAoKSU5UIE5SSFlf
ZnJhbWVDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfZnJhbWVD
b21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBD
SEFSICo+IGxpbmUKCSk7CgoKCgoKCiAKCklOVCBOUkhZX2dlbmVyYXRvckNvbW1hbmQgKAogICAg
Y29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV9nZW5lcmF0b3JDb21tYW5kICgKICAgIGNv
bnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7
CgoKCgoKCiAKClR3aW5lIGZUb1R3aW5lICggCiAgICAgICAgZmxvYXQgICAgICAgdmFsCgkpOwoK
SU5UIE5SSFlfZ2VvbVRvSGllckNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJ
TlQgTlJIWV9nZW9tVG9IaWVyQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVy
LAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCgoKCgogCgpJTlQgTlJIWV9nZW5l
cmF0b3JDaGFuQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX2dl
bmVyYXRvckNoYW5Db21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBM
aXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoKIAoKSU5UIE5SSFlfZ2hvc3RDb21tYW5kICgK
ICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfZ2hvc3RDb21tYW5kICgKICAgIGNv
bnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7
CgoKIAoKSU5UIE5SSFlfZ2x1ZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7Cgpp
bnQgTlJIWV9nbHVlQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAg
TGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCiAKCklOVCBOUkhZX2hlbHBDb21tYW5kICgK
ICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfaGVscENvbW1hbmQgKAogICAgY29u
c3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsK
CgogCgoKCgoKSU5UIE5SSFlfaG9tZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7
CgpJTlQgTlJIWV9ob21lQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAog
ICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCklO
VCBOUkhZX2luY2x1ZGVDb21tYW5kICgKICAgICAgICBjb25zdCBjaGFyICpvcGVyCgkpOwoKSU5U
IE5SSFlfaW5jbHVkZUNvbW1hbmQgKAogICAgICAgIGNvbnN0IGNoYXIgKm9wZXIsCiAgICAgICAg
TGlzdCA8Y29uc3QgY2hhciAqPiBsaW5lCgkpOwoKCiAKCgoKCgpJTlQgTlJIWV9pbmZvQ29tbWFu
ZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX2luZm9Db21tYW5kICgKICAg
IGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUK
CSk7CgoKCgoKCiAKCklOVCBOUkhZX2luaXRDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVy
CgkpOwoKSU5UIE5SSFlfaW5pdENvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3Bl
ciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgogCgpJTlQgTlJIWV9pa0NvbW1h
bmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV9pa0NvbW1hbmQgKAogICAg
Y29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJ
KTsKCgoKCgoKCgogCgpJTlQgTlJIWV9pbmt5Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3Bl
cgoJKTsKCklOVCBOUkhZX2lua3lDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9w
ZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoKCgoKCiAKCklOVCBOUkhZX3Nj
YWZmb2xkQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX3NjYWZm
b2xkQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29u
c3QgQ0hBUiAqPiBsaW5lCgkpOwoKCgoKCgogCgpJTlQgTlJIWV9zY2FmZm9sZGNoYW5Db21tYW5k
ICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKaW50IE5SSFlfc2NhZmZvbGRjaGFuQ29tbWFu
ZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3QgQ0hBUiAq
PiBsaW5lCgkpOwoKCiAKCklOVCBOUkhZX2lua3lOb2RlQ29tbWFuZCAoCiAgICBjb25zdCBDSEFS
ICAqb3BlcgoJKTsKCklOVCBOUkhZX2lua3lOb2RlQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAg
ICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCgoKCgogCgpJ
TlQgTlJIWV9rZXlDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlf
a2V5Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29u
c3QgQ0hBUiAqPiBsaW5lCgkpOwoKCgoKCgogCgpJTlQgTlJIWV9rbGlzdENvbW1hbmQgKAogICAg
Y29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV9rbGlzdENvbW1hbmQgKAogICAgY29uc3Qg
Q0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgoK
CgoKCgoKCgoKIAoKSU5UIE5SSFlfa21hZ25ldENvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9w
ZXIKCSk7CgpJTlQgTlJIWV9rbWFnbmV0Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAg
ICpvcGVyLAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCiAKCklOVCBOUkhZX2xh
c3RDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfbGFzdENvbW1h
bmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIg
Kj4gbGluZQoJKTsKCgogCgppbnQgTlJIWV9sYXllckNvbW1hbmQgKAogICAgY29uc3QgY2hhciAq
b3BlcgoJKTsKCmludCBOUkhZX2xheWVyQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAg
ICpvcGVyLAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCiAKCklOVCBOUkhZX2xh
eW91dENvbW1hbmQgKAoJCSAgICAgICBjb25zdCBjaGFyKgoJKTsKCklOVCBOUkhZX2xheW91dENv
bW1hbmQgKAoJCSAgICAgICBjb25zdCBDSEFSKiBvcGVyLAoJCSAgICAgICBMaXN0PCBjb25zdCBD
SEFSKiA+CgkpOwoKCiAKCklOVCBOUkhZX2xheW91dEFkbWluQ29tbWFuZCAoCgkJCSAgICBjb25z
dCBjaGFyKgoJKTsKCklOVCBOUkhZX2xheW91dEFkbWluQ29tbWFuZCAoCgkJCSAgICBjb25zdCBD
SEFSKiwKCQkJICAgIExpc3Q8IGNvbnN0IENIQVIqID4KCSk7CgoKIAoKSU5UIE5SSFlfbGlnaHRD
b21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfbGlnaHRDb21tYW5k
ICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+
IGxpbmUKCSk7CgoKCgoKCgoKCgoKCiAKCgoKCgpJTlQgTlJIWV9sc0NvbW1hbmQgKAogICAgY29u
c3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV9sc0NvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAg
ICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgogCgpJTlQg
TlJIWV9tYXBDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfbWFw
Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3Qg
Q0hBUiAqPiBsaW5lCgkpOwoKCgoKCgoKCiAKCklOVCBOUkhZX21hZ25ldENvbW1hbmQgKAogICAg
Y29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV9tYWduZXRDb21tYW5kICgKICAgIGNvbnN0
IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoK
IAoKCgoKCklOVCBOUkhZX21hbmlwdWxhdGVDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVy
CgkpOwoKSU5UIE5SSFlfbWFuaXB1bGF0ZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAg
ICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgoKCgoKIAoKSU5UIE5S
SFlfbWF0ZXJpYWxDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlf
bWF0ZXJpYWxDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0
IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKSU5UIE5SSFlf
bWV0YW1vcnBoQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX21l
dGFtb3JwaENvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3Qg
PGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgoKCgoKIAoKSU5UIE5SSFlfbW9ycGhDb21tYW5kICgK
ICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKaW50IE5SSFlfbW9ycGhDb21tYW5kICgKICAgIGNv
bnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7
CgoKIAoKSU5UIE5SSFlfbW9ycGhGaWxlQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJ
KTsKCmludCBOUkhZX21vcnBoRmlsZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAq
b3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgogCgpJTlQgTlJIWV9tZW51
Q29tbWFuZCAoCgkJICAgICAgIGNvbnN0IGNoYXIqIG9wZXIKCSk7CgpJTlQgTlJIWV9tZW51Q29t
bWFuZCAoCgkJICAgICAgIGNvbnN0IENIQVIqIG9wZXIsCgkJICAgICAgIExpc3Q8IGNvbnN0IENI
QVIqID4gbGluZQoJKTsKCgogCgpJTlQgTlJIWV9tZW51QWN0aW9uQ29tbWFuZCAoCgkJICAgICAg
IGNvbnN0IGNoYXIqIG9wZXIKCSk7CgpJTlQgTlJIWV9tZW51QWN0aW9uQ29tbWFuZCAoCgkJICAg
ICAgIGNvbnN0IENIQVIqIG9wZXIsCgkJICAgICAgIExpc3Q8IGNvbnN0IENIQVIqID4gbGluZQoJ
KTsKCgogCgpJTlQgTlJIWV9tYXJibGVDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkp
OwoKSU5UIE5SSFlfbWFyYmxlQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVy
LAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCiAKCklOVCBOUkhZX25leHRDb21t
YW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfbmV4dENvbW1hbmQgKAog
ICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGlu
ZQoJKTsKCgogCgpJTlQgTlJIWV9ub2lzZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIK
CSk7CgpJTlQgTlJIWV9ub2lzZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3Bl
ciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgoKCgoKIAoKCgoKCklOVCBOUkhZ
X29iamVjdENvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV9vYmpl
Y3RDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25z
dCBDSEFSICo+IGxpbmUKCSk7CgoKIAoKSU5UIE5SSFlfcGFyc2VDb21tYW5kICgKICAgIGNvbnN0
IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfcGFyc2VDb21tYW5kICgKICAgIGNvbnN0IENIQVIg
ICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoKIAoKSU5U
IE5SSFlfcGFydml6Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCmludCBOUkhZ
X3BhcnZpekNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3Qg
PGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgoKCgoKIAoKSU5UIE5SSFlfcGlja0NvbW1hbmQgKAog
ICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV9waWNrQ29tbWFuZCAoCiAgICBjb25z
dCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoK
CiAKCklOVCBOUkhZX3BvaW50YXRDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoK
SU5UIE5SSFlfcG9pbnRhdENvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwK
ICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgogCgpJTlQgTlJIWV9yQ29tbWFuZCAo
CiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX3JDb21tYW5kICgKICAgIGNvbnN0
IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoK
CgoKCgoKCgoKCgoKCgoKCiAKCklOVCBOUkhZX3JhZGlhdGVDb21tYW5kICgKICAgIGNvbnN0IENI
QVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfcmFkaWF0ZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAg
ICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgogCgpJTlQg
TlJIWV9yZWFkQ29tbWFuZCAoCiAgICBjb25zdCBjaGFyICAqb3BlcgoJKTsKCklOVCBOUkhZX3Jl
YWRDb21tYW5kICgKICAgIGNvbnN0IGNoYXIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25z
dCBjaGFyICo+IGxpbmUKCSk7CgoKCgoKCgoKCgogCgpJTlQgTlJIWV9yZWRyYXdDb21tYW5kICgK
ICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfcmVkcmF3Q29tbWFuZCAoCiAgICBj
b25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkp
OwoKCiAKCklOVCBOUkhZX3JlbGF4Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsK
CmludCBOUkhZX3JlbGF4Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAog
ICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCiAKCklOVCBOUkhZX3JlcG9zQ29tbWFu
ZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX3JlcG9zQ29tbWFuZCAoCiAg
ICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5l
CgkpOwoKCiAKCklOVCBOUkhZX3JlbmFtZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIK
CSk7CgpJTlQgTlJIWV9yZW5hbWVDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9w
ZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoKCgoKCgoKCgoKCgoKIAoKSU5U
IE5SSFlfcmVzZXRDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlf
cmVzZXRDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxj
b25zdCBDSEFSICo+IGxpbmUKCSk7CgoKIAoKSU5UIE5SSFlfcm90YXRlQ29tbWFuZCAoCiAgICBj
b25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX3JvdGF0ZUNvbW1hbmQgKAogICAgY29uc3Qg
Q0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgog
CgpJTlQgTlJIWV9yb3RvQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBO
UkhZX3JvdG9Db21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0
IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoKCgoKCgoKCgoKCiAKCklOVCBOUkhZX3NhdmVDb21t
YW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfc2F2ZUNvbW1hbmQgKAog
ICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGlu
ZQoJKTsKCgoKCgoKCgoKCiAKCklOVCBOUkhZX3NldENvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAg
Km9wZXIKCSk7CgpJTlQgTlJIWV9zZXRDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAg
Km9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoKCgoKCiAKCklOVCBOUkhZ
X3NoZWxmQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX3NoZWxm
Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3Qg
Q0hBUiAqPiBsaW5lCgkpOwoKCiAKCklOVCBOUkhZX3NoZWxmQnV0dG9uQ29tbWFuZCAoCiAgICBj
b25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX3NoZWxmQnV0dG9uQ29tbWFuZCAoCiAgICBj
b25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkp
OwoKCiAKCklOVCBOUkhZX3NoaWZ0Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsK
CklOVCBOUkhZX3NoaWZ0Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAog
ICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCiAKCgoKCgpJTlQgTlJIWV9zaG9vdENv
bW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV9zaG9vdENvbW1hbmQg
KAogICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4g
bGluZQoJKTsKCgogCgpJTlQgTlJIWV9zaW53YXZlQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAq
b3BlcgoJKTsKCklOVCBOUkhZX3NpbndhdmVDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAg
ICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoKIAoKVHdpbmUgZFRv
VHdpbmUgKCAKICAgICAgICBpbnQgICAgICAgICB2YWwKCSk7CgppbnQgcmVjdXJzaXZlU2tlbGV0
b24gKAogICAgICAgIE5SSFlfY2xhc3NUaGluZyAgICAgKm5vZGUsCiAgICAgICAgTlJIWV9jbGFz
c1RoaW5nICAgICAqYmVuZHksCiAgICAgICAgaW50ICAgICAgICAgICAgICAgICBjaGFuTnVtCgkp
OwoKSU5UIE5SSFlfc2tlbGV0b25Db21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoK
SU5UIE5SSFlfc2tlbGV0b25Db21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIs
CiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoKIAoKaW50IE5SSFlfc2tpbkNvbW1h
bmQgKAoJCSAgICAgIGNvbnN0IGNoYXIqIG9wZXIKCSk7CgppbnQgTlJIWV9za2luQ29tbWFuZCAo
CgkJICAgICAgY29uc3QgY2hhciogb3BlciwKCQkgICAgICBMaXN0PCBjb25zdCBjaGFyKiA+IGxp
bmUKCSk7CgoKIAoKSU5UIE5SSFlfc2xpZ2h0Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3Bl
cgoJKTsKCklOVCBOUkhZX3NsaWdodENvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAq
b3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgogCgpJTlQgTlJIWV9zb3Vu
ZENvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV9zb3VuZENvbW1h
bmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIg
Kj4gbGluZQoJKTsKCgoKCgoKCgoKCgoKIAoKSU5UIE5SSFlfc3RlcHBhcmVudENvbW1hbmQgKAog
ICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgppbnQgTlJIWV9zdGVwcGFyZW50Q29tbWFuZCAoCiAg
ICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5l
CgkpOwoKCiAKCklOVCBOUkhZX3N0ZXJlb0NvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIK
CSk7CgpJTlQgTlJIWV9zdGVyZW9Db21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9w
ZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoKIAoKSU5UIE5SSFlfdGV4Q29t
bWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX3RleENvbW1hbmQgKAog
ICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGlu
ZQoJKTsKCgoKCgoKCgoKCgoKIAoKSU5UIE5SSFlfdGV4Y2hhbkNvbW1hbmQgKAogICAgY29uc3Qg
Q0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV90ZXhjaGFuQ29tbWFuZCAoCiAgICBjb25zdCBDSEFS
ICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCiAKCklO
VCBOUkhZX3RpbWVjaGFuQ29tbWFuZCAoCiAgICAgICAgY29uc3QgQ0hBUiAgICAgICpvcGVyCgkp
OwoKSU5UIE5SSFlfdGltZWNoYW5Db21tYW5kICgKICAgICAgICBjb25zdCBDSEFSICAgICAgICAg
ICAgICAgICAgICAgICpvcGVyLAogICAgICAgIExpc3QgPGNvbnN0IENIQVIgKj4gICAgIGxpbmUK
CSk7CgoKIAoKSU5UIE5SSFlfdG90ZXhDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkp
OwoKaW50IE5SSFlfdG90ZXhDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIs
CiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoKIAoKSU5UIE5SSFlfc2hhZG93Q29t
bWFuZCAoCiAgICBjb25zdCBDSEFSICAqb3BlcgoJKTsKCklOVCBOUkhZX3NoYWRvd0NvbW1hbmQg
KAogICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4g
bGluZQoJKTsKCgoKCgoKIAoKSU5UIE5SSFlfc3RyZWFtQ29tbWFuZCAoCiAgICBjb25zdCBDSEFS
ICAqb3BlcgoJKTsKCmludCBOUkhZX3N0cmVhbUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAg
ICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgogCgpJTlQgTlJI
WV9zdHJlYW1TaGFwZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgppbnQgTlJI
WV9zdHJlYW1TaGFwZUNvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAg
IExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsKCgogCgpJTlQgTlJIWV90cmFja0NvbW1hbmQg
KAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV90cmFja0NvbW1hbmQgKAogICAg
Y29uc3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJ
KTsKCgoKCgoKCgoKCgoKCgoKCiAKCklOVCBOUkhZX3RyYWNrU2hhcGVDb21tYW5kICgKICAgIGNv
bnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfdHJhY2tTaGFwZUNvbW1hbmQgKAogICAgY29u
c3QgQ0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIgKj4gbGluZQoJKTsK
CgoKCgoKIAoKSU5UIE5SSFlfdHJhY2szZENvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIK
CSk7CgpJTlQgTlJIWV90cmFjazNkQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpv
cGVyLAogICAgTGlzdCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKCgoKCgogCgpJTlQgTlJIWV90
cmF2ZWxDb21tYW5kICgKICAgIGNvbnN0IENIQVIgICpvcGVyCgkpOwoKSU5UIE5SSFlfdHJhdmVs
Q29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29uc3Qg
Q0hBUiAqPiBsaW5lCgkpOwoKCiAKCklOVCBOUkhZX3R3ZWx2ZWZsZENvbW1hbmQgKAogICAgY29u
c3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV90d2VsdmVmbGRDb21tYW5kICgKICAgIGNvbnN0
IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUKCSk7CgoK
IAoKSU5UIE5SSFlfdW5kb0NvbW1hbmQgKAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQg
TlJIWV91bmRvQ29tbWFuZCAoCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlz
dCA8Y29uc3QgQ0hBUiAqPiBsaW5lCgkpOwoKdm9pZCAgTlJIWV9saXN0VW5kb1N0YWNrICgKICAg
IGNvbnN0IExpc3Q8VHdpbmU+ICZsaXN0CgkpOwoKCiAKCklOVCBOUkhZX3VzZW1hcENvbW1hbmQg
KAogICAgY29uc3QgQ0hBUiAgKm9wZXIKCSk7CgpJTlQgTlJIWV91c2VtYXBDb21tYW5kICgKICAg
IGNvbnN0IENIQVIgICAgICAgICAgKm9wZXIsCiAgICBMaXN0IDxjb25zdCBDSEFSICo+IGxpbmUK
CSk7CgoKCgoKCgoKIAoKSU5UIE5SSFlfd3JpdGVDb21tYW5kICgKICAgIGNvbnN0IGNoYXIgICpv
cGVyCgkpOwoKSU5UIE5SSFlfd3JpdGVDb21tYW5kICgKICAgIGNvbnN0IGNoYXIgICAgICAgICAg
Km9wZXIsCiAgICBMaXN0IDxjb25zdCBjaGFyICo+IGxpbmUKCSk7CgoKCgoKCiAKClBPTElTSCBO
UkhZX2NyZWF0ZUZyb21PcGVyICgKICAgIGNvbnN0IENIQVIgICpvcGVyLAogICAgY29uc3QgSU5U
ICAgdHlwZQoJKTsKClBPTElTSCBOUkhZX2NyZWF0ZUZyb21PcGVyICgKICAgIGNvbnN0IENIQVIg
ICpvcGVyLAogICAgaW50IHR5cGUsCiAgICBpbnQgY3JlYXRlQ2hhbkFzU3RhdGljLAogICAgaW50
IGNyZWF0ZUNoYW5Bc0R5bmFtaWMKCSk7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgogCgpjbGFzcyBOUkhZX2NsYXNzQ2hhbm5lbExpc3QgJk5SSFlfR2V0Q3VycmVudENoYW5uZWxM
aXN0ICgpOwoKCgoKCgogCgoKIAoKWk9PTEVBTiBOUkhZX2RlbGV0ZUZyb21PcGVyICgKICAgIGNv
bnN0IENIQVIgICAgICAqb3BlciwKICAgIGNvbnN0IElOVCAgICAgICB0eXBlLAogICAgY29uc3Qg
Wk9PTEVBTiAgIHJlY3Vyc2l2ZUZsYWcKCSk7CgoKCgoKCiAKCgoKCgoKCgogCgppbnQgTlJIWV9k
dW1wb2JqICgKICAgIFR3aW5lIG91dGZpbGVOYW1lLAogICAgZmxvYXQgcmVmRnJhbWUsCiAgICBp
bnQgbW90aW9uYmx1ciwKICAgIGZsb2F0IHN0YXJ0LAogICAgZmxvYXQgZW5kLAogICAgTlJIWV9j
bGFzc1RoaW5nICpsb2NhbE9iamVjdCwKICAgIE5SSFlfY2xhc3NDYW1lcmEgKmNhbWVyYU9iamVj
dCwKICAgIExpc3Q8TlJIWV9jbGFzc01vZGVsICo+IG1vZGVscywKICAgIGJvb2wgZHVtcF91diwK
ICAgIHZvaWQgKmNhY2hlCgkpOwoKaW50IE5SSFlfZHVtcGZ1ciAoCiAgICBUd2luZSBvdXRmaWxl
TmFtZSwKICAgIGZsb2F0IGZyYW1lLAogICAgTlJIWV9jbGFzc1RoaW5nICpsb2NhbE9iamVjdCwK
ICAgIE5SSFlfY2xhc3NDYW1lcmEgKmNhbWVyYU9iamVjdCwKICAgIGZsb2F0IGRlbnNpdHksCiAg
ICBOUkhZX2NsYXNzRnVyICpmdXJNb2RlbAoJKTsKCgogCgpOUkhZX2J1bmNoPE5SSFlfY2xhc3ND
YW1lcmE+ICpOUkhZX2ZpbmRDYW1lcmEgKAogICAgY29uc3QgY2hhciAqbmFtZQoJKTsKCk5SSFlf
Y2xhc3NUaGluZyAqTlJIWV9maW5kVGhpbmcgKAogICAgY29uc3QgY2hhciAqbmFtZSwKICAgIGNv
bnN0IGludCB0eXBlLAogICAgY29uc3QgYm9vbCBjcmVhdGUKCSk7Cgp2b2lkICAqTlJIWV9hZGRU
aGluZyAoCiAgICBjb25zdCBDSEFSICAqbmFtZSwKICAgIGNvbnN0IElOVCAgIHR5cGUsCiAgICBj
b25zdCBJTlQgICByZXR1cm5BcwoJKTsKCgoKCgoKCmJvb2wgTlJIWV9zZXRVbmV4cGFuZGVkRmlu
ZCAoCiAgICBib29sIHN0YXRlCgkpOwoKYm9vbCBOUkhZX2dldFVuZXhwYW5kZWRGaW5kICgKCSk7
CgoKIAoKSU5UIE5SSFlfZ2V0TWF4aW11bVBhcm1zICgKICAgIHZvaWQgCgkpOwoKSU5UIE5SSFlf
c2V0TWF4aW11bVBhcm1zICgKICAgIGNvbnN0IElOVCAgIG51bWJlcgoJKTsKCnZvaWQgIE5SSFlf
ZnJlZUluaXRPcHRpb25QYXJtc01lbW9yeSAoCiAgICB2b2lkIAoJKTsKClpPT0xFQU4gTlJIWV9p
bml0T3B0aW9uUGFybXMgKAogICAgY29uc3QgQ0hBUiAgICAgKmNtZCwKICAgIGNsYXNzIE5SSFlf
b3B0aW9ucyAqcGFybSwKICAgIGNvbnN0IElOVCAgICAgIG51bWJlcgoJKTsKCgoKCgoKCgogCgpa
T09MRUFOIE5SSFlfbGlzdENoYW5uZWxzICgKICAgIEZJTEUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKmZwLAogICAgTlJIWV9idW5jaCA8TlJIWV9jbGFzc1RoaW5nPiAgICAqYnVuY2hfdGhp
bmdQdHJzCgkpOwoKdm9pZCAgTlJIWV9saXN0Q2hpbGRyZW4gKAogICAgRklMRSAgICAgICAgICAg
ICpmcCwKICAgIE5SSFlfY2xhc3NUaGluZyAqdGhpbmdQdHIKCSk7Cgp2b2lkIE5SSFlfbGlzdENh
bWVyYSAoCiAgICBGSUxFICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkqZnAsCiAgICBjb25z
dCBMaXN0PE5SSFlfY2xhc3NDYW1lcmEgKj4gICAgICAmY2FtZXJhTGlzdCwKICAgIGNvbnN0IExp
c3Q8VHdpbmU+IAkJCSZscwoJKTsKCnZvaWQgTlJIWV9saXN0TGlnaHQgKAogICAgRklMRSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAJKmZwLAogICAgY29uc3QgTGlzdDxOUkhZX2NsYXNzTGln
aHQgKj4gICAgICAmbGlnaHRMaXN0LAogICAgY29uc3QgTGlzdDxUd2luZT4gCQkJJmxzCgkpOwoK
dm9pZCBOUkhZX2xpc3RIb21lICgKICAgIEZJTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CSpmcCwKICAgIGNvbnN0IExpc3Q8TlJIWV9jbGFzc0hvbWUgKj4gICAgICAmaG9tZUxpc3QsCiAg
ICBjb25zdCBMaXN0PFR3aW5lPiAJCQkmbHMKCSk7Cgp2b2lkIE5SSFlfbGlzdE9iamVjdCAoCiAg
ICBGSUxFICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkqZnAsCiAgICBjb25zdCBMaXN0PE5S
SFlfY2xhc3NPYmplY3QgKj4gICAgICAgJm9iamVjdExpc3QsCiAgICBjb25zdCBMaXN0PFR3aW5l
PiAJCQkmbHMKCSk7Cgp2b2lkICBOUkhZX2xpc3RNYXAgKAogICAgRklMRSAgICAgICAgICAgICAg
ICAgICAgICAgICpmcCwKICAgIExpc3QgPE5SSFlfY2xhc3NNYXAqPiAgIGxpc3Rfb19tYXBzLAog
ICAgY29uc3QgTGlzdDxUd2luZT4gJmxzCgkpOwoKdm9pZCAgTlJIWV9saXN0TWF0ZXJpYWwgKAog
ICAgRklMRSAgICAgICAgICAgICAgICAgICAgICAgICpmcCwKICAgIExpc3QgPE5SSFlfY2xhc3NN
YXRlcmlhbCo+ICBsaXN0X29fbWF0ZXJpYWxzLAogICAgY29uc3QgTGlzdDxUd2luZT4gJmxzCgkp
OwoKdm9pZCBOUkhZX2xpc3RGdXIgKAogICAgRklMRSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAJKmZwLAogICAgY29uc3QgTGlzdDxOUkhZX2NsYXNzRnVyICo+ICAgICAgICZmdXJMaXN0LAog
ICAgY29uc3QgTGlzdDxUd2luZT4gCQkJJmxzCgkpOwoKdm9pZCBOUkhZX2xpc3RNdXNjbGUgKAog
ICAgRklMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAJKmZwLAogICAgY29uc3QgTGlzdDxO
UkhZX2NsYXNzTXVzY2xlICo+ICAgICAgJm11c2NsZUxpc3QsCiAgICBjb25zdCBMaXN0PFR3aW5l
PiAJCQkmbHMKCSk7Cgp2b2lkIE5SSFlfbGlzdExheWVyICgKICAgIEZJTEUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCSpmcCwKICAgIGNvbnN0IExpc3Q8TlJIWV9jbGFzc0xheWVyICo+ICAg
ICAgICZsYXllckxpc3QsCiAgICBjb25zdCBMaXN0PFR3aW5lPiAJCQkmbHMKCSk7Cgp2b2lkIE5S
SFlfbGlzdER5bmFtaWNzICgKICAgIEZJTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSpm
cCwKICAgIGNvbnN0IExpc3Q8TlJIWV9jbGFzc0R5bmFtaWNzICo+ICAgJmR5bmFtaWNzTGlzdCwK
ICAgIGNvbnN0IExpc3Q8VHdpbmU+IAkJCSZscwoJKTsKCnZvaWQgTlJIWV9saXN0Q29sbGlzaW9u
ICgKICAgIEZJTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSpmcCwKICAgIGNvbnN0IExp
c3Q8TlJIWV9jbGFzc0NvbGxpc2lvbiAqPiAgICZjb2xsaXNpb25MaXN0LAogICAgY29uc3QgTGlz
dDxUd2luZT4gCQkJJmxzCgkpOwoKdm9pZCBOUkhZX2xpc3RGb3JjZSAoCiAgICBGSUxFICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAkqZnAsCiAgICBjb25zdCBMaXN0PE5SSFlfY2xhc3NGb3Jj
ZSAqPiAgICZmb3JjZUxpc3QsCiAgICBjb25zdCBMaXN0PFR3aW5lPiAJCQkmbHMKCSk7Cgp2b2lk
IE5SSFlfbGlzdEdlbmVyYXRvciAoCiAgICBGSUxFICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAkqZnAsCiAgICBjb25zdCBMaXN0PE5SSFlfY2xhc3NHZW5lcmF0b3IgKj4gICAmZ2VuZXJhdG9y
TGlzdCwKICAgIGNvbnN0IExpc3Q8VHdpbmU+IAkJCSZscwoJKTsKCnZvaWQgTlJIWV9saXN0Um90
byAoCiAgICBGSUxFICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkqZnAsCiAgICBjb25zdCBM
aXN0PE5SSFlfY2xhc3NSb3RvICo+ICAgJmxzTGlzdCwKICAgIGNvbnN0IExpc3Q8VHdpbmU+IAkJ
CSZscwoJKTsKCnZvaWQgTlJIWV9saXN0U291bmQgKAogICAgRklMRSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAJKmZwLAogICAgY29uc3QgTGlzdDxOUkhZX2NsYXNzU291bmQgKj4gICAmbHNM
aXN0LAogICAgY29uc3QgTGlzdDxUd2luZT4gCQkJJmxzCgkpOwoKdm9pZCBOUkhZX2xpc3RJbmt5
ICgKICAgIEZJTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSpmcCwKICAgIGNvbnN0IExp
c3Q8TlJIWV9jbGFzc0lua3kgKj4gICAmbHNMaXN0LAogICAgY29uc3QgTGlzdDxUd2luZT4gCQkJ
JmxzCgkpOwoKdm9pZCBOUkhZX2xpc3RTY2FmZm9sZCAoCiAgICBGSUxFICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAkqZnAsCiAgICBjb25zdCBMaXN0PE5SSFlfY2xhc3NTY2FmZm9sZCAqPiAg
ICZsc0xpc3QsCiAgICBjb25zdCBMaXN0PFR3aW5lPiAJCQkmbHMKCSk7Cgp2b2lkIE5SSFlfbGlz
dEtsaXN0ICgKICAgIEZJTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSpmcCwKICAgIGNv
bnN0IExpc3Q8TlJIWV9jbGFzc0tsaXN0ICo+ICAgJmxzTGlzdCwKICAgIGNvbnN0IExpc3Q8VHdp
bmU+IAkJCSZscwoJKTsKCnZvaWQgTlJIWV9saXN0VHJhY2sgKAogICAgRklMRSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAJKmZwLAogICAgY29uc3QgTGlzdDxOUkhZX2NsYXNzVHJhY2sgKj4g
ICAmbHNMaXN0LAogICAgY29uc3QgTGlzdDxUd2luZT4gCQkJJmxzCgkpOwoKdm9pZCBOUkhZX2xp
c3RVc2VNYXAgKAogICAgRklMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAJKmZwLAogICAg
Y29uc3QgTGlzdDxOUkhZX2NsYXNzVXNlTWFwICo+ICAgJmxzTGlzdCwKICAgIGNvbnN0IExpc3Q8
VHdpbmU+IAkJCSZscwoJKTsKCnZvaWQgTlJIWV9saXN0VGV4ICgKICAgIEZJTEUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCSpmcCwKICAgIGNvbnN0IExpc3Q8TlJIWV9jbGFzc1RleCAqPiAg
ICZsc0xpc3QsCiAgICBjb25zdCBMaXN0PFR3aW5lPiAJCQkmbHMKCSk7Cgp2b2lkICBOUkhZX2xp
c3RDICgKICAgIEZJTEUgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZnAsCiAgICBOUkhZX2J1
bmNoIDxOUkhZX2NsYXNzVGhpbmc+ICAgICpidW5jaF90aGluZ1B0cnMKCSk7Cgp2b2lkICBOUkhZ
X2xpc3RPICgKICAgIEZJTEUgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZnAsCiAgICBOUkhZ
X2J1bmNoIDxOUkhZX2NsYXNzVGhpbmc+ICAgICpidW5jaF90aGluZ1B0cnMKCSk7Cgp2b2lkICBO
UkhZX2xpc3RQYXJlbnQgKAogICAgRklMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZnAs
CiAgICBOUkhZX2J1bmNoIDxOUkhZX2NsYXNzVGhpbmc+ICAgICpidW5jaF90aGluZ1B0cnMKCSk7
Cgp2b2lkICBOUkhZX2xpc3RDaGFubmVsVmFsdWVzICgKICAgIEZJTEUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKmZwLAogICAgTlJIWV9JTlRfRlJBTkdFICAgICAgICAgICAgICAgICAqZnJh
bmdlLAogICAgTlJIWV9idW5jaCA8TlJIWV9jbGFzc1RoaW5nPiAgICAqYnVuY2hfdGhpbmdQdHJz
CgkpOwoKdm9pZCAgTlJIWV9saXN0Q2hhbm5lbEtleVZhbHVlcyAoCiAgICBGSUxFICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpmcCwKICAgIE5SSFlfSU5UX0ZSQU5HRSAgICAgICAgICAgICAg
ICAgKmZyYW5nZSwKICAgIE5SSFlfYnVuY2ggPE5SSFlfY2xhc3NUaGluZz4gICAgKmJ1bmNoX3Ro
aW5nUHRycwoJKTsKCnZvaWQgIE5SSFlfbGlzdFNsaWdodCAoCiAgICBGSUxFICpmcCwgCiAgICBj
b25zdCBMaXN0IDxUd2luZT4gJmxzCgkpOwoKIyAyODA1ICJoL25yaHlwcml2YXRlLnAiCgoKCiAK
CnZvaWQgIE5SSFlfbWF0Y2hGdW5jQWRkQ2hpbGRyZW4gKAogICAgTlJIWV9jbGFzc1RoaW5nICAg
ICAgICAgKnBhcmVudCwKICAgIExpc3QgPE5SSFlfY2xhc3NUaGluZyo+ICpjaGlsZHJlbgoJKTsK
CnZvaWQgIE5SSFlfbWF0Y2hGdW5jQWRkUGFyZW50cyAoCiAgICBOUkhZX2NsYXNzVGhpbmcgICAg
ICAgICAqY2hpbGQsCiAgICBMaXN0IDxOUkhZX2NsYXNzVGhpbmcqPiAqcGFyZW50cwoJKTsKCgog
Cgp2b2lkICBxdWF0ZXJuaW9uTGluZWFySW50ZXJwICgKTlJIWV9jbGFzc0NoYW5uZWwgKnhSb3Qs
Ck5SSFlfY2xhc3NDaGFubmVsICp5Um90LApOUkhZX2NsYXNzQ2hhbm5lbCAqelJvdCwKZmxvYXQg
ICAgICAgZnJhbmdlU3RhcnQsCmZsb2F0ICAgICAgICAgZnJhbmdlRW5kLApMaXN0IDxmbG9hdD4g
ICAga2V5TGlzdAoJKTsKCnZvaWQgIHF1YXRlcm5pb25TcGxpbmVJbnRlcnAgKApOUkhZX2NsYXNz
Q2hhbm5lbCAqeFJvdCwKTlJIWV9jbGFzc0NoYW5uZWwgKnlSb3QsCk5SSFlfY2xhc3NDaGFubmVs
ICp6Um90LApmbG9hdCAgICAgICBmcmFuZ2VTdGFydCwKZmxvYXQgICAgICAgICBmcmFuZ2VFbmQs
CkJPT0xFQU4gICAgICAgICAgIG1hdGNoLApMaXN0IDxmbG9hdD4gICAga2V5TGlzdAoJKTsKCgoK
CgoKCgoKCiAKCgogCgpOUkhZX2NsYXNzVGhpbmcgKk5SSFlfZ2V0SGllclJvb3RBc1RoaW5nICgK
ICAgIHZvaWQKCSk7Cgp2b2lkICBOUkhZX2xpc3RHZW5lYWxvZ3kgKAogICAgRklMRSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqZnAsCiAgICBOUkhZX2J1bmNoIDxOUkhZX2NsYXNzVGhpbmc+
ICAgICpzb3VyY2UsCiAgICBOUkhZX2J1bmNoIDxOUkhZX2NsYXNzVGhpbmc+ICAgICpob3dSZWxh
dGVkCgkpOwoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgpJTlQgTlJIWV9nZXRQYXJzZURpcmVjdGlvbk1vZGUgKAogICAg
dm9pZCAKCSk7CgpJTlQgTlJIWV9zZXRQYXJzZURpcmVjdGlvbk1vZGUgKAogICAgSU5UIHdoaWNo
CgkpOwoKWk9PTEVBTiBOUkhZX2dldERlYnVnUHJpbnRFYWNoVG9rZW4gKAogICAgdm9pZCAKCSk7
CgpaT09MRUFOIE5SSFlfc2V0RGVidWdQcmludEVhY2hUb2tlbiAoCiAgICBJTlQgc3RhdHVzCgkp
OwoKSU5UIE5SSFlfZ2V0RGVmYXVsdE5hbWVTcGFjZU1vZGUgKAogICAgdm9pZCAKCSk7CgpJTlQg
TlJIWV9zZXREZWZhdWx0TmFtZVNwYWNlTW9kZSAoCiAgICBJTlQgd2hpY2gKCSk7CgpJTlQgTlJI
WV9nZXRVc2VPbmVBc01vZGUgKAogICAgdm9pZCAKCSk7CgpJTlQgTlJIWV9zZXRVc2VPbmVBc01v
ZGUgKAogICAgSU5UIHdoaWNoCgkpOwoKTlJIWV9idW5jaCA8TlJIWV9jbGFzc1RoaW5nPiAqTlJI
WV9wYXJzZUludG9EZWZhdWx0TmFtZVNwYWNlICgKICAgIGNvbnN0IENIQVIgICAgICAqbmFtZSwK
ICAgIGNvbnN0IFpPT0xFQU4gICByZWN1cnNpdmVGbGFnLAogICAgY29uc3QgWk9PTEVBTiAgIHBh
cmVudEZsYWcKCSk7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKClBPTElTSCBOUkhZX2R1bWJtYXRjaCAo
CiAgICBjb25zdCBDSEFSICAqZGVzaXJlZFRva2VuLAogICAgY29uc3QgQ0hBUiAgKnRvTWF0Y2hB
Z2FpbnN0VG9rZW4KCSk7CgoKCgoKCgoKCgoKCgoKCgoKCgpaT09MRUFOIE5SSFlfZXhhbWluZVJh
bmdlICgKICAgIENIQVIgICAgKnJhbmdlUHRyLAogICAgWk9PTEVBTiAqaXNOdW1lcmljLAogICAg
Q0hBUiAgICAqKnN0YXJ0UHRyLAogICAgQ0hBUiAgICAqKmh5cGhlblB0ciwKICAgIENIQVIgICAg
KiplbmRQdHIsCiAgICBDSEFSICAgICoqaW5jUHRyLAogICAgSU5UICAgICAqaW5jcmVtZW50Cgkp
OwoKdm9pZCAgTlJIWV9jbGVhbnVwSW50ZXJuYWxQYXJzZVN0dWZmICgKICAgIHZvaWQgCgkpOwoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdm9pZCBOUkhZX3BhcnNl
SW50b0NoYW5uZWxzICgKICAgIGNvbnN0IGNoYXIgKiBvcGVyLAogICAgQk9PTEVBTiByZWN1cnNp
dmUsCiAgICBMaXN0IDxOUkhZX2NsYXNzQ2hhbm5lbCAqPiAmY2hhbm5lbHMKCSk7CgoKCgoKCiAK
CnZvaWQgTlJIWV9wdHNMb2FkRm9ybWF0ICgKICAgIGNvbnN0IGNsYXNzIFBUU19JdGVtU3BlYyAm
aXRlbSwKICAgIGludCAmd2lkdGgsCiAgICBpbnQgJmhlaWdodAoJKTsKCgogCgp0ZW1wbGF0ZTxj
bGFzcyBUPiB2b2lkIE5SSFlfbG9hZEl0ZW1MaXN0QWRkcmVzcyAoCiAgICB2ZWN0b3I8VCAqPiAq
JnYKCSk7Cgp0ZW1wbGF0ZTw+IHZvaWQgTlJIWV9sb2FkSXRlbUxpc3RBZGRyZXNzICgKICAgIHZl
Y3RvcjxOUkhZX2NsYXNzVGhpbmcgKj4gKiZ2CgkpOwoKdGVtcGxhdGU8PiB2b2lkIE5SSFlfbG9h
ZEl0ZW1MaXN0QWRkcmVzcyAoCiAgICB2ZWN0b3I8TlJIWV9jbGFzc09iamVjdCAqPiAqJnYKCSk7
Cgp0ZW1wbGF0ZTw+IHZvaWQgTlJIWV9sb2FkSXRlbUxpc3RBZGRyZXNzICgKICAgIHZlY3RvcjxO
UkhZX2NsYXNzQ2FtZXJhICo+IComdgoJKTsKCnRlbXBsYXRlPD4gdm9pZCBOUkhZX2xvYWRJdGVt
TGlzdEFkZHJlc3MgKAogICAgdmVjdG9yPE5SSFlfY2xhc3NMaWdodCAqPiAqJnYKCSk7Cgp0ZW1w
bGF0ZTw+IHZvaWQgTlJIWV9sb2FkSXRlbUxpc3RBZGRyZXNzICgKICAgIHZlY3RvcjxOUkhZX2Ns
YXNzTW9kZWwgKj4gKiZ2CgkpOwoKdGVtcGxhdGU8PiB2b2lkIE5SSFlfbG9hZEl0ZW1MaXN0QWRk
cmVzcyAoCiAgICB2ZWN0b3I8TlJIWV9jbGFzc1RyYWNrICo+IComdgoJKTsKCnRlbXBsYXRlPD4g
dm9pZCBOUkhZX2xvYWRJdGVtTGlzdEFkZHJlc3MgKAogICAgdmVjdG9yPE5SSFlfY2xhc3NIb21l
ICo+IComdgoJKTsKCnRlbXBsYXRlPD4gdm9pZCBOUkhZX2xvYWRJdGVtTGlzdEFkZHJlc3MgKAog
ICAgdmVjdG9yPE5SSFlfY2xhc3NSb3RvICo+IComdgoJKTsKCnRlbXBsYXRlPD4gdm9pZCBOUkhZ
X2xvYWRJdGVtTGlzdEFkZHJlc3MgKAogICAgdmVjdG9yPE5SSFlfY2xhc3NUZXggKj4gKiZ2Cgkp
OwoKdGVtcGxhdGU8PiB2b2lkIE5SSFlfbG9hZEl0ZW1MaXN0QWRkcmVzcyAoCiAgICB2ZWN0b3I8
TlJIWV9jbGFzc01hdGVyaWFsICo+IComdgoJKTsKCnRlbXBsYXRlPD4gdm9pZCBOUkhZX2xvYWRJ
dGVtTGlzdEFkZHJlc3MgKAogICAgdmVjdG9yPE5SSFlfY2xhc3NNYXAgKj4gKiZ2CgkpOwoKdGVt
cGxhdGU8PiB2b2lkIE5SSFlfbG9hZEl0ZW1MaXN0QWRkcmVzcyAoCiAgICB2ZWN0b3I8TlJIWV9j
bGFzc1VzZU1hcCAqPiAqJnYKCSk7Cgp0ZW1wbGF0ZTw+IHZvaWQgTlJIWV9sb2FkSXRlbUxpc3RB
ZGRyZXNzICgKICAgIHZlY3RvcjxOUkhZX2NsYXNzU291bmQgKj4gKiZ2CgkpOwoKdGVtcGxhdGU8
PiB2b2lkIE5SSFlfbG9hZEl0ZW1MaXN0QWRkcmVzcyAoCiAgICB2ZWN0b3I8TlJIWV9jbGFzc0R5
bmFtaWNzICo+IComdgoJKTsKCnRlbXBsYXRlPD4gdm9pZCBOUkhZX2xvYWRJdGVtTGlzdEFkZHJl
c3MgKAogICAgdmVjdG9yPE5SSFlfY2xhc3NGb3JjZSAqPiAqJnYKCSk7Cgp0ZW1wbGF0ZTw+IHZv
aWQgTlJIWV9sb2FkSXRlbUxpc3RBZGRyZXNzICgKICAgIHZlY3RvcjxOUkhZX2NsYXNzR2VuZXJh
dG9yICo+IComdgoJKTsKCnRlbXBsYXRlPD4gdm9pZCBOUkhZX2xvYWRJdGVtTGlzdEFkZHJlc3Mg
KAogICAgdmVjdG9yPE5SSFlfY2xhc3NDb2xsaXNpb24gKj4gKiZ2CgkpOwoKdGVtcGxhdGU8PiB2
b2lkIE5SSFlfbG9hZEl0ZW1MaXN0QWRkcmVzcyAoCiAgICB2ZWN0b3I8TlJIWV9jbGFzc0lua3kg
Kj4gKiZ2CgkpOwoKdGVtcGxhdGU8PiB2b2lkIE5SSFlfbG9hZEl0ZW1MaXN0QWRkcmVzcyAoCiAg
ICB2ZWN0b3I8TlJIWV9jbGFzc1NjYWZmb2xkICo+IComdgoJKTsKCnRlbXBsYXRlPD4gdm9pZCBO
UkhZX2xvYWRJdGVtTGlzdEFkZHJlc3MgKAogICAgdmVjdG9yPE5SSFlfY2xhc3NBcHBhcml0aW9u
ICo+IComdgoJKTsKCnRlbXBsYXRlPD4gdm9pZCBOUkhZX2xvYWRJdGVtTGlzdEFkZHJlc3MgKAog
ICAgdmVjdG9yPE5SSFlfY2xhc3NSb290ICo+IComdgoJKTsKCnRlbXBsYXRlPD4gdm9pZCBOUkhZ
X2xvYWRJdGVtTGlzdEFkZHJlc3MgKAogICAgdmVjdG9yPE5SSFlfY2xhc3NLbGlzdCAqPiAqJnYK
CSk7Cgp0ZW1wbGF0ZTw+IHZvaWQgTlJIWV9sb2FkSXRlbUxpc3RBZGRyZXNzICgKICAgIHZlY3Rv
cjxOUkhZX2NsYXNzRnVyICo+IComdgoJKTsKCnRlbXBsYXRlPD4gdm9pZCBOUkhZX2xvYWRJdGVt
TGlzdEFkZHJlc3MgKAogICAgdmVjdG9yPE5SSFlfY2xhc3NNdXNjbGUgKj4gKiZ2CgkpOwoKdGVt
cGxhdGU8PiB2b2lkIE5SSFlfbG9hZEl0ZW1MaXN0QWRkcmVzcyAoCiAgICB2ZWN0b3I8TlJIWV9j
bGFzc0xheWVyICo+IComdgoJKTsKCgogCgpOUkhZX2NsYXNzVGltZSAqTlJIWV9nZXRUaW1lTG9y
ZCAoCiAgICB2b2lkIAoJKTsKCkxpc3QgPE5SSFlfRlJBTkdFPiBOUkhZX3BhcnNlRnJhbmdlICgK
ICAgIGNvbnN0IENIQVIgICphc2NpaQoJKTsKCgoKCgoKCgoKCiAKCmNvbnN0IENIQVIgKk5SSFlf
cHJpbnRab29sZWFuICgKICAgIGNvbnN0IFpPT0xFQU4gICBzdGF0dXMKCSk7CgpJTlQgTlJIWV9w
YXJzZVpvb2xlYW4gKAogICAgY29uc3QgQ0hBUiAgKmFzY2lpCgkpOwoKY29uc3QgQ0hBUiAqTlJI
WV9wcmludFBvbGlzaCAoCiAgICBjb25zdCBQT0xJU0ggICAgc3RhdHVzCgkpOwoKSU5UIE5SSFlf
cGFyc2VQb2xpc2ggKAogICAgY29uc3QgQ0hBUiAgKmFzY2lpCgkpOwoKY29uc3QgY2hhciAqTlJI
WV9wcmludE9wdGlvblR5cGUgKAogICAgaW50IHR5cGUKCSk7Cgpjb25zdCBjaGFyICpOUkhZX3By
aW50VGhpbmdUeXBlICgKICAgIGludCB0eXBlCgkpOwoKY29uc3QgQ0hBUiAqTlJIWV9wcmludE9w
dGlvblBhcnNlRXJyb3IgKAogICAgY29uc3QgSU5UICAgY29kZQoJKTsKCmNvbnN0IENIQVIgKk5S
SFlfcHJpbnRPcGVyYW5kUGFyc2VFcnJvciAoCiAgICBjb25zdCBJTlQgICBjb2RlCgkpOwoKY29u
c3QgQ0hBUiAqTlJIWV9wcmludFJlYWwgKAogICAgUkVBTCAgICBudW1iZXIKCSk7Cgpjb25zdCBD
SEFSICpOUkhZX3ByaW50UmVhbEZyYW5nZSAoCiAgICBSRUFMICAgIHN0YXJ0CgkpOwoKY29uc3Qg
Q0hBUiAqTlJIWV9wcmludFJlYWxGcmFuZ2UgKAogICAgUkVBTCAgICBzdGFydCwKICAgIFJFQUwg
ICAgZW5kCgkpOwoKY29uc3QgQ0hBUiAqTlJIWV9wcmludFJlYWxGcmFuZ2UgKAogICAgY29uc3Qg
TlJIWV9SRUFMX0ZSQU5HRSAgJmZyYW5nZQoJKTsKCmNvbnN0IENIQVIgKk5SSFlfcHJpbnRSZWFs
RnJhbmdlICgKICAgIFJFQUwgICAgc3RhcnQsCiAgICBSRUFMICAgIGVuZCwKICAgIFJFQUwgICAg
aW5jCgkpOwoKdm9pZCAgTlJIWV9wcmludE1hdHJpeCAoCiAgICBGSUxFICAgICAgICAqZnAsCiAg
ICBJTlQgICAgICAgICBpbmRlbnQsCiAgICBaT09MRUFOICAgICBkb0JlZ2luRW5kLAogICAgTV9N
YXRyaXggICAgbWF0CgkpOwoKdm9pZCAgTlJIWV9wcmludE1hdHJpeCAoCiAgICBGSUxFICAgICAg
ICAqZnAsCiAgICBJTlQgICAgICAgICBpbmRlbnQsCiAgICBaT09MRUFOICAgICBkb0JlZ2luRW5k
LAogICAgZmxvYXQgICAgICAgbWF0WzRdWzRdCgkpOwoKQk9PTEVBTiBOUkhZX21hdHJpeElkZW50
aXR5ICgKICAgIGNvbnN0IE1fTWF0cml4ICZtCgkpOwoKQk9PTEVBTiBOUkhZX21hdHJpeElkZW50
aXR5ICgKICAgIGNvbnN0IE1fTWF0cml4ICZtLAogICAgZmxvYXQgdG9sZXJhbmNlCgkpOwoKQk9P
TEVBTiBOUkhZX21hdHJpY2VzRXF1YWwgKAogICAgY29uc3QgTV9NYXRyaXggJm0xLAogICAgY29u
c3QgTV9NYXRyaXggJm0yCgkpOwoKQk9PTEVBTiBOUkhZX21hdHJpY2VzQ2xvc2UgKAogICAgY29u
c3QgTV9NYXRyaXggJm0xLAogICAgY29uc3QgTV9NYXRyaXggJm0yLAogICAgZmxvYXQgdG9sZXJh
bmNlCgkpOwoKTV9NYXRyaXggTlJIWV9vcnRob05vcm1hbGl6ZSAoCiAgICBjb25zdCBjaGFyICp0
eXBlLAogICAgY29uc3QgTV9WZWN0b3IgJm9yaWdpbiwKICAgIE1fVmVjdG9yIHYxLAogICAgTV9W
ZWN0b3IgdjIKCSk7CgpNX1ZlY3RvciBOUkhZX3JvdFNtb290aENoZWNrICgKICAgTV9WZWN0b3Ig
cm90cywgCiAgIE1fVmVjdG9yIHByZXZSb3QKCSk7Cgp2b2lkICBOUl9zdmRjbXAgKApkb3VibGUg
KiphLCAKaW50IG0sIAppbnQgbiwgCmRvdWJsZSAqdywgCmRvdWJsZSAqKnYKCSk7Cgp2b2lkICBO
Ul9zdmJrc2IgKApkb3VibGUgKip1LCAKZG91YmxlICp3LCAKZG91YmxlICoqdiwgCmludCBtLCAK
aW50IG4sIApkb3VibGUgKmIsCmRvdWJsZSAqeAoJKTsKCmRvdWJsZSAqTlJfZHZlY3RvciAoCmlu
dCBubCwKaW50IG5oCgkpOwoKdm9pZCBOUl9mcmVlX2R2ZWN0b3IgKApkb3VibGUgKnYsIAppbnQg
bmwsIAppbnQgbmgKCSk7Cgpkb3VibGUgKipOUl9kbWF0cml4ICgKaW50IG5ybCwgCmludCBucmgs
IAppbnQgbmNsLCAKaW50IG5jaAoJKTsKCmZsb2F0ICoqTlJfZm1hdHJpeCAoCmludCBucmwsIApp
bnQgbnJoLCAKaW50IG5jbCwgCmludCBuY2gKCSk7Cgp2b2lkICBOUl9mcmVlX2RtYXRyaXggKAog
IGRvdWJsZSAqKm0sIAogIGludCBucmwsIAogIGludCBucmgsIAogIGludCBuY2wsIAogIGludCBu
Y2gKCSk7CgpmbG9hdCAqTlJfdmVjdG9yICgKICAgIGludCBubCwKICAgIGludCBuaAoJKTsKCnZv
aWQgTlJfZnJlZV92ZWN0b3IgKAogICAgZmxvYXQgKnYsCiAgICBpbnQgbmwsCiAgICBpbnQgbmgK
CSk7CgpCT09MRUFOIE5SX2Nob2xkYyAoCiAgICBkb3VibGUgKiphLCAKICAgIGludCBuLCAKICAg
IGRvdWJsZSAqcAoJKTsKCnZvaWQgTlJfbHVkY21wICgKICAgIGludCBuLAogICAgaW50ICppbmR4
LAogICAgZG91YmxlICoqYSwKICAgIGZsb2F0ICpkCgkpOwoKTV9NYXRyaXggTlJIWV9zcGVjdWxh
ciAoCiAgICBOUkhZX2NsYXNzT2JqZWN0ICpsaWdodCwKICAgIGNvbnN0IE1fTWF0cml4ICZyZWZs
ZWN0b3JNYXQsCiAgICBOUkhZX2NsYXNzT2JqZWN0ICpmcm9tCgkpOwoKTV9NYXRyaXggTlJIWV9u
b3JtYWwgKAogICAgTlJIWV9jbGFzc09iamVjdCAqbGlnaHQsCiAgICBjb25zdCBNX01hdHJpeCAm
cmVmbGVjdG9yTWF0CgkpOwoKTV9NYXRyaXggTlJIWV9ncm91cE1hdHJpeCAoCiAgICBjbGFzcyBT
aGFwZSAqc2hhcGUsCiAgICBjb25zdCBUd2luZSAmZ3JvdXAKCSk7CgoKIAoKCiAKCgoKCgoKCgoK
CgojIDQ4ICJoL25yaHlwcml2YXRlLmgiIDIKCgoKIyAyOSAiaC9OUkhZLmgiIDIKCgogCgoKCiAK
CiMgMSAiL3NvZnR3YXJlL3RoYWxpYS9oL3N0ZHR5cGVzLmgiIDEKCiAKCgoKCgoKCgoKCgoKCgoK
CgojIDIwMyAiL3NvZnR3YXJlL3RoYWxpYS9oL3N0ZHR5cGVzLmgiCgoKCgoKCgoKCgoKCgoKIyAz
NyAiaC9OUkhZLmgiIDIKCgogCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCiAKCgogCnN0cnVj
dCBOUkhZX0NPTU1BTkQgCiAgICB7CiAgICBjb25zdCBjaGFyICAgICAgKm5hbWU7ICAgICAgICAg
ICAKICAgIGNvbnN0IGNoYXIgICAgICAqYWthOyAgICAgICAgICAgIAogICAgSU5UICAgICAgICAg
ICAgIHVzZUZvckFjY2VzczsgICAgCgogICAgIAogICAgdW5pb24gewogICAgICAgIGludCAgICAg
KCpmdW5jT2ZXb3JkcykoY29uc3QgY2hhciAqLCBMaXN0PGNvbnN0IGNoYXIgKj4pOwogICAgICAg
IGludCAgICAgKCpmdW5jT2ZFeHBycykoTGlzdDxIVV9FeHByZXNzaW9uPik7CgogICAgICAgIH0g
eDsKCgoKCgoKICAgICAKICAgIElOVCAgICAgICAgICAgICAoKmluaXRpYWxpemVGdW5jKShjb25z
dCBjaGFyICopOwogICAgY29uc3QgY2hhciAgICAgICpvcGVyOyAgICAgICAgICAgCiAgICBjb25z
dCBjaGFyICAgICAgKmhlbHA7ICAgICAgICAgICAKCiAgICBlbnVtIHsgV09SRFMsIEVYUFJTIH0g
dHlwZTsgICAgICAKICAgIH07CiAKCiAKCgp0eXBlZGVmIHN0cnVjdCBBc2NpaU9iakNoYW4gewog
ICAgVHdpbmUgICB0aGluZzsKICAgIFR3aW5lICAgY2hhbm5lbDsKICAgIH0gQVNDSUlfT0JKX0NI
QU47CmlubGluZSBjb25zdCBjaGFyICpjbGFzc05hbWUgKEFTQ0lJX09CSl9DSEFOKSB7IHJldHVy
biAoIkFTQ0lJX09CSl9DSEFOIik7IH07CgogCgoKCgoKCiAKCiAKCgoKCgoKCgoKCiAKCgoKIAog
CmNvbnN0IGludCBOUkhZX1dPUkxEU1RBVFVTX0RPX05PVEhJTkcgICAgICAgID0gMHgwOwpjb25z
dCBpbnQgTlJIWV9XT1JMRFNUQVRVU19NVVNUX1JFTUFLRV9XT1JMRCA9ICgxPDwwKTsKY29uc3Qg
aW50IE5SSFlfV09STERTVEFUVVNfTVVTVF9SRURSQVdfV09STEQgPSAoMTw8MSk7CmNvbnN0IGlu
dCBOUkhZX1dPUkxEU1RBVFVTX01VU1RfTUFTSyAgICAgICAgID0gKAogICAgTlJIWV9XT1JMRFNU
QVRVU19NVVNUX1JFTUFLRV9XT1JMRCB8CiAgICBOUkhZX1dPUkxEU1RBVFVTX01VU1RfUkVEUkFX
X1dPUkxEKTsKY29uc3QgaW50IE5SSFlfV09STERTVEFUVVNfTVVTVF9ET19FVkVSWVRISU5HPSBO
UkhZX1dPUkxEU1RBVFVTX01VU1RfTUFTSzsKCiAKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKIyAxICJoL05SSFkucCIgMQogCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgpjbGFzcyBOUkhZX1dvcmxkICpOUkhZQUNDRVNTX1JlYWQgKAog
ICAgY29uc3QgQ0hBUiAgKmluY29taW5nRmlsZW5hbWUKICk7Cgp2b2lkIE5SSFlBQ0NFU1NfRnJl
ZURhdGEgKAogICAgTlJIWV9Xb3JsZCAqd29ybGQKICk7CgpCT09MRUFOIE5SSFlBQ0NFU1NfQ2hv
cmNoYW4gKAogICAgY2xhc3MgTlJIWV9Xb3JsZCAqIHdvcmxkUHRyLAogICAgZmxvYXQgZnJhbWUs
CiAgICBmbG9hdCByZWZGcmFtZSwKICAgIGNvbnN0IFR3aW5lICYgdGFyZ2V0CiApOwoKQk9PTEVB
TiBOUkhZQUNDRVNTX0Nob3JDYW1lcmEgKAogICAgY2xhc3MgTlJIWV9Xb3JsZCAqIHdvcmxkUHRy
LAogICAgZmxvYXQgZnJhbWUsCiAgICBmbG9hdCByZWZGcmFtZSwKICAgIGNvbnN0IFR3aW5lICYg
dGFyZ2V0CiApOwoKaW50IE5SSFlBQ0NFU1NfQ2hvck9iamVjdCAoCiAgICBOUkhZX1dvcmxkICog
d29ybGRQdHIsCiAgICBmbG9hdCBmcmFtZSwKICAgIGNvbnN0IFR3aW5lICYgb2JqTmFtZSwKICAg
IGludCBtb3Rpb25ibHVyLAogICAgZmxvYXQgc2h1dHRlclN0YXJ0LAogICAgZmxvYXQgc2h1dHRl
ckVuZCwKICAgIGNvbnN0IFR3aW5lICYgZ2VvbSwKICAgIGNvbnN0IFR3aW5lICYgbmV4dEdlb20s
CiAgICBjb25zdCBUd2luZSAmIGdyb3VwLAogICAgY29uc3QgVHdpbmUgJiByZXNvbHV0aW9uLAog
ICAgY29uc3QgVHdpbmUgJiBzaGFwZUZpbGUKICk7CgoKCgoKQk9PTEVBTiBOUkhZQUNDRVNTX0No
b3JkdW1wICgKICAgIE5SSFlfV29ybGQgKndvcmxkUHRyLAogICAgY29uc3QgVHdpbmUgJmZpbGVu
YW1lLAogICAgZmxvYXQgZnJhbWUsCiAgICBjb25zdCBUd2luZSAmY2FtTmFtZSwKICAgIEZJTEUg
KmZwLAogICAgaW50IG9iamRpc3AsCiAgICBpbnQgbW90aW9uYmx1ciwKICAgIGZsb2F0IHNodXR0
ZXJTdGFydCwKICAgIGZsb2F0IHNodXR0ZXJFbmQsCiAgICBCT09MRUFOIGxlZnRleWUsCiAgICBC
T09MRUFOIHJpZ2h0ZXllLAogICAgQk9PTEVBTiBtYXRlcmlhbHMsCiAgICBCT09MRUFOIG1hcHMs
CiAgICBCT09MRUFOIGxpZ2h0c09ubHksCiAgICBCT09MRUFOIG9iamVjdHNPbmx5LAogICAgY29u
c3QgTGlzdDxUd2luZT4gJmRlZm9ybWluZ09iamVjdHMKICk7CgpCT09MRUFOIE5SSFlBQ0NFU1Nf
VmNtZCAoCiAgICBOUkhZX1dvcmxkICp3b3JsZFB0ciwKICAgIGZsb2F0IGZyYW1lLAogICAgY29u
c3QgVHdpbmUgJmNvbW1hbmQsCiAgICBjb25zdCBUd2luZSAmYXJncwogKTsKCgogCgp2b2lkICAg
IE5SSFlfU2F2ZUNoYW5uZWwgKAogICAgICAgICAgICBzdHJ1Y3QgTlJIWV9jbGFzc0NoYW5uZWwg
KmNoYW4sCiAgICAgICAgICAgIEJPT0xFQU4gbWFrZUtleQogKTsKCnZvaWQgICAgTlJIWV9TYXZl
Q2hhbm5lbHMgKAogICAgICAgICAgICBjb25zdCBMaXN0PGNsYXNzIE5SSFlfY2xhc3NDaGFubmVs
ICo+ICZjaGFubmVscywKICAgICAgICAgICAgQk9PTEVBTiBtYWtlS2V5CiApOwoKdm9pZCAgICBO
UkhZX1Jlc2V0Q2hhbm5lbCAoCiAgICAgICAgICAgIHN0cnVjdCBOUkhZX2NsYXNzQ2hhbm5lbCAq
Y2hhbgogKTsKCnZvaWQgICAgTlJIWV9SZXNldENoYW5uZWxzICgKICAgICAgICAgICAgY29uc3Qg
TGlzdDxjbGFzcyBOUkhZX2NsYXNzQ2hhbm5lbCAqPiAmY2hhbm5lbHMKICk7CgoKIAoKCiAKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgp2b2lkIE5SSFlfQ29tcHV0ZVRvRG8gKAogICAgTlJI
WV9jbGFzc1RoaW5nICp0aGluZ1B0ciwKICAgIGNvbnN0IFR3aW5lICZvbmx5LAogICAgY29uc3Qg
VHdpbmUgJm5vdCwKICAgIGNvbnN0IFR3aW5lICZmdWxsLAogICAgTGlzdDxzaG9ydD4gJnRvRG9M
aXN0CiApOwoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCnZvaWQgIE5SSFlfQ2xlYW51cEF0RXhpdCAo
CiAgICB2b2lkIAogKTsKCgoKCgoKIAoKCgoKCk5SSFlfQ09NTUFORCAqTlJIWV9HZXRBbmRJbml0
Q29tbWFuZFRhYmxlICgKICAgIHZvaWQgCiApOwoKTlJIWV9DT01NQU5EICpOUkhZX0dldENvbW1h
bmRUYWJsZSAoCiAgICB2b2lkIAogKTsKCk5SSFlfQ09NTUFORCAqTlJIWV9Mb2FkT3V0c2lkZUNv
bW1hbmRUYWJsZSAoCiAgICBOUkhZX0NPTU1BTkQgICAgKmNtZFB0cgogKTsKCmludCBOUkhZX0lu
aXRpYWxpemVDbWRQYXJtcyAoCiAgICBjb25zdCBjaGFyICAqY2FsbGluZ0Z1bmMsCiAgICBjb25z
dCBjaGFyICAqb3BlciwKICAgIGNsYXNzIE5SSFlfb3B0aW9ucyAqcGFybSwKICAgIGludCAgICAg
ICAgIHBhcm1MZW4KICk7CgpJTlQgTlJIWV9QYXJzZU9wZXJhbmQgKAogICAgRklMRSAgICAgICAg
ICAgICAgICAqZnAsCiAgICBjb25zdCBDSEFSICAgICAgICAgICpvcGVyLAogICAgTGlzdCA8Y29u
c3QgQ0hBUio+ICBsaW5lLAogICAgTlJIWV9jbGFzc0NvbW1hbmQgICAqQ21kCiApOwoKSU5UIE5S
SFlfUGFyc2VPcHRpb25zICgKICAgIEZJTEUgICAgICAgICAgICAgICAgKmZwLAogICAgY29uc3Qg
Q0hBUiAgICAgICAgICAqb3BlciwKICAgIExpc3QgPGNvbnN0IENIQVIqPiAgbGluZSwKICAgIGNs
YXNzIE5SSFlfY2xhc3NDb21tYW5kICogQ21kCiApOwoKY29uc3QgQ0hBUiAqTlJIWV9QcmludENv
bW1hbmRDbGFzc1JldHVybiAoCiAgICBjb25zdCBJTlQgICBzdGF0dXMKICk7Cgp2b2lkICAqTlJI
WV9DcmVhdGVUaGVDb21tYW5kRnJvbU91dHNpZGUgKAogICAgQ0hBUiAgICAqYXNjaWksCiAgICBJ
TlQgICAgIHRha2VPcGVyYW5kcywKICAgIElOVCAgICAgdGFrZU9wdGlvbnMsCiAgICBJTlQgICAg
IHRha2VFeHByZXNzaW9uLAogICAgQ0hBUiAgICAqY21kTmFtZSwKICAgIHZvaWQgICAgICpwYXJt
cywKICAgIElOVCAgICAgbnVtYmVyUGFybXMKICk7Cgp2b2lkICBOUkhZX01vZGlmeUNvbW1hbmRU
YWJsZUZvckFjY2VzcyAoCiAgICB2b2lkIAogKTsKCk5SSFlfQ09NTUFORCAqTlJIWV9GaW5kQ29t
bWFuZCAoCiAgICBjb25zdCBDSEFSICAqdG9CZUZvdW5kCiApOwoKSU5UIE5SSFlfR2V0RmluZENv
bW1hbmRBbWJpZ3VvdXNFcnJvciAoCiAgICB2b2lkIAogKTsKCnZvaWQgIE5SSFlfUHJpbnRGaW5k
Q29tbWFuZEFtYmlndW91c0Vycm9yICgKICAgIEZJTEUgICAgICAgICpmcCwKICAgIElOVCAgICAg
ICAgIGluZGVudCwKICAgIGNvbnN0IENIQVIgICp0b0JlRm91bmQKICk7CgoKIAoKSU5UIE5SSFlf
UHJvZ3JhbW1pbmdFcnJvckNoZWNrICgKICAgIHZvaWQgCiApOwoKSU5UIE5SSFlfQ2hlY2tPcHRp
b25QYXJzZUVycm9yUHJpbnRpbmdTdGF0ZW1lbnQgKAogICAgdm9pZCAKICk7CgpJTlQgTlJIWV9D
aGVja09wZXJhbmRQYXJzZUVycm9yUHJpbnRpbmdTdGF0ZW1lbnQgKAogICAgdm9pZCAKICk7CgoK
IAoKSFVfVmFsdWUgTlJIWV9TaGlmdEZ1bmN0aW9uICgKICAgIExpc3Q8SFVfVmFsdWU+ICAgICAg
ICAgICAgICAgICAgICBhcmcsCiAgICBIVV9QYXJzZXJTdGF0ZSAgICAgICAmZ2VuZXJpY1N0YXRl
CiApOwoKSFVfVmFsdWUgTlJIWV9TaGlmdFhGdW5jdGlvbiAoCiAgICBMaXN0PEhVX1ZhbHVlPiAg
ICAgICAgICAgICAgICBhcmcsCiAgICBIVV9QYXJzZXJTdGF0ZSAgJiBnZW5lcmljU3RhdGUKICk7
CgpIVV9WYWx1ZSBOUkhZX0NoYW5WYWxGdW5jdGlvbiAoCiAgICBMaXN0PEhVX1ZhbHVlPiAgICAg
ICAgICAgICAgICBhcmcsCiAgICBIVV9QYXJzZXJTdGF0ZSAgICAgICYgZ2VuZXJpY1N0YXRlCiAp
OwoKSFVfVmFsdWUgTlJIWV9DaGFuVmFsWEZ1bmN0aW9uICgKICAgIExpc3Q8SFVfVmFsdWU+ICAg
ICAgICAgICAgICAgYXJnLAogICAgSFVfUGFyc2VyU3RhdGUgICYgZ2VuZXJpY1N0YXRlCiApOwoK
SFVfVmFsdWUgTlJIWV9DYnJ0RnVuY3Rpb24gKAogICAgTGlzdDxIVV9WYWx1ZT4gICAgICAgICAg
ICAgICAgYXJnLAogICAgSFVfUGFyc2VyU3RhdGUgICYgZ2VuZXJpY1N0YXRlCiApOwoKSFVfVmFs
dWUgTlJIWV9TaWduRnVuY3Rpb24gKAogICAgTGlzdDxIVV9WYWx1ZT4gICAgICAgICAgICAgICAg
YXJnLAogICAgSFVfUGFyc2VyU3RhdGUgICYgZ2VuZXJpY1N0YXRlCiApOwoKSFVfVmFsdWUgTlJI
WV9Ob3JtUm90RnVuY3Rpb24gKAogICAgTGlzdDxIVV9WYWx1ZT4gICAgICAgICAgICAgICAgYXJn
LAogICAgSFVfUGFyc2VyU3RhdGUgICYgZ2VuZXJpY1N0YXRlCiApOwoKSFVfVmFsdWUgTlJIWV9T
bW9vdGhSb3RGdW5jdGlvbiAoCiAgICBMaXN0PEhVX1ZhbHVlPiAgICAgICAgICAgICAgICBhcmcs
CiAgICBIVV9QYXJzZXJTdGF0ZSAgJiBnZW5lcmljU3RhdGUKICk7CgpIVV9WYWx1ZSBOUkhZX05v
cm1GdW5jdGlvbiAoCiAgICBMaXN0PEhVX1ZhbHVlPiAgICAgICAgICAgICAgIGFyZywKICAgIEhV
X1BhcnNlclN0YXRlICAmIGdlbmVyaWNTdGF0ZQogKTsKCkhVX1ZhbHVlIE5SSFlfQXZlckZyYW5n
ZUZ1bmN0aW9uICgKICAgIExpc3Q8SFVfVmFsdWU+ICAgICAgICAgICAgICAgIGFyZywKICAgIEhV
X1BhcnNlclN0YXRlICAmIGdlbmVyaWNTdGF0ZQogKTsKCkhVX1ZhbHVlIE5SSFlfQXZlck1pbk1h
eEZ1bmN0aW9uICgKICAgIExpc3Q8SFVfVmFsdWU+ICAgICAgICAgICAgICAgIGFyZywKICAgIEhV
X1BhcnNlclN0YXRlICAmIGdlbmVyaWNTdGF0ZQogKTsKCkhVX1ZhbHVlIE5SSFlfQ2hhblZlbEZ1
bmN0aW9uICgKICAgIExpc3Q8SFVfVmFsdWU+ICAgICAgICAgICAgICAgICBhcmcsCiAgICBIVV9Q
YXJzZXJTdGF0ZSAgJiBnZW5lcmljU3RhdGUKICk7CgpIVV9WYWx1ZSBOUkhZX0NoYW5BY2NlbEZ1
bmN0aW9uICgKICAgIExpc3Q8SFVfVmFsdWU+ICAgICAgICAgICAgICAgIGFyZywKICAgIEhVX1Bh
cnNlclN0YXRlICAmIGdlbmVyaWNTdGF0ZQogKTsKCkhVX1ZhbHVlIE5SSFlfUG9zaXRpb254RnVu
Y3Rpb24gKAogICAgTGlzdDxIVV9WYWx1ZT4gICAgICAgICAgICAgICAgICAgICBhcmcsCiAgICBI
VV9QYXJzZXJTdGF0ZSAgJiBnZW5lcmljU3RhdGUKICk7CgpIVV9WYWx1ZSBOUkhZX1Bvc2l0aW9u
eUZ1bmN0aW9uICgKICAgIExpc3Q8SFVfVmFsdWU+ICAgICAgICAgICAgIGFyZywKICAgIEhVX1Bh
cnNlclN0YXRlICAmIGdlbmVyaWNTdGF0ZQogKTsKCkhVX1ZhbHVlIE5SSFlfUG9zaXRpb256RnVu
Y3Rpb24gKAogICAgTGlzdDxIVV9WYWx1ZT4gICAgICAgICAgICAgYXJnLAogICAgSFVfUGFyc2Vy
U3RhdGUgICYgZ2VuZXJpY1N0YXRlCiApOwoKSFVfVmFsdWUgTlJIWV9HZXRNYXRyaXhGdW5jdGlv
biAoCiAgICBMaXN0PEhVX1ZhbHVlPiAgICAgICAgICAgICAgICAgICAgIGFyZywKICAgIEhVX1Bh
cnNlclN0YXRlICAgICAgICZnZW5lcmljU3RhdGUKICk7CgoKCgoKSFVfVmFsdWUgTlJIWV9EaXN0
YW5jZUZ1bmN0aW9uICgKICAgIExpc3Q8SFVfVmFsdWU+ICAgICAgICAgICAgICAgICAgICAgYXJn
LAogICAgSFVfUGFyc2VyU3RhdGUgICAgICAgJmdlbmVyaWNTdGF0ZQogKTsKCkhVX1ZhbHVlIE5S
SFlfUmVsYXRpdmVGdW5jdGlvbiAoCiAgICBMaXN0PEhVX1ZhbHVlPiAgICAgICAgICAgICAgICAg
ICAgIGFyZywKICAgIEhVX1BhcnNlclN0YXRlICAgICAgICZnZW5lcmljU3RhdGUKICk7CgoKCgoK
SFVfVmFsdWUgTlJIWV9Db2xsaXNpb25GdW5jdGlvbiAoCiAgICBMaXN0PEhVX1ZhbHVlPiAgICAg
ICAgICAgICBhcmcsCiAgICBIVV9QYXJzZXJTdGF0ZSAgJiBnZW5lcmljU3RhdGUKICk7CgpUd2lu
ZSBOUkhZX1ZjaG9yRXhpc3RzRnVuY3Rpb24gKAogICAgTGlzdDxUd2luZT4gICAgICAgICAgICAg
JiBhcmcsCiAgICBIVV9QYXJzZXJTdGF0ZSAgJiBnZW5lcmljU3RhdGUKICk7CgpUd2luZSBOUkhZ
X1ZjaG9yT2JqZWN0TGlzdEZ1bmN0aW9uICgKICAgIExpc3Q8VHdpbmU+ICAgICAgICAgICAgICYg
YXJnLAogICAgSFVfUGFyc2VyU3RhdGUgICYgZ2VuZXJpY1N0YXRlCiApOwoKVHdpbmUgTlJIWV9W
Y2hvckNoYW5uZWxzRnVuY3Rpb24gKAogICAgTGlzdDxUd2luZT4gICAgICAgICAgICAgJiBhcmcs
CiAgICBIVV9QYXJzZXJTdGF0ZSAgJiBnZW5lcmljU3RhdGUKICk7CgpUd2luZSBOUkhZX1ZjaG9y
UGFyZW50RnVuY3Rpb24gKAogICAgTGlzdDxUd2luZT4gICAgICAgICAgICAgJiBhcmcsCiAgICBI
VV9QYXJzZXJTdGF0ZSAgJiBnZW5lcmljU3RhdGUKICk7CgpIVV9WYWx1ZSBOUkhZX0dldE5EQ0Z1
bmN0aW9uICgKICAgIExpc3Q8SFVfVmFsdWU+IGFyZywKICAgIEhVX1BhcnNlclN0YXRlICZnZW5l
cmljU3RhdGUKICk7CgoKIAoKCgoKCkJPT0xFQU4gTlJIWV9TZXREZWJ1Z0Zyb21Wb29kb28gKAog
ICAgY29uc3QgQk9PTEVBTiAgIHN0YXR1cwogKTsKCkJPT0xFQU4gTlJIWV9HZXREZWJ1Z0Zyb21W
b29kb28gKAogICAgdm9pZAogKTsKCkJPT0xFQU4gTlJIWV9TZXRUZXN0RnJvbVZvb2RvbyAoCiAg
ICBjb25zdCBCT09MRUFOICAgc3RhdHVzCiApOwoKQk9PTEVBTiBOUkhZX0dldFRlc3RGcm9tVm9v
ZG9vICgKICAgIHZvaWQKICk7CgpCT09MRUFOIE5SSFlfU2V0RGlzcGxheUZyb21Wb29kb28gKAog
ICAgY29uc3QgQk9PTEVBTiAgIHN0YXR1cwogKTsKCkJPT0xFQU4gTlJIWV9HZXREaXNwbGF5RnJv
bVZvb2RvbyAoCiAgICB2b2lkCiApOwoKdm9pZCBOUkhZX0dldE1heFNjcmVlbkluUGl4ZWxzICgK
ICAgIGludCAqeCwKICAgIGludCAqeQogKTsKCnZvaWQgTlJIWV9TZXRNYXhTY3JlZW5JblBpeGVs
cyAoCiAgICBjb25zdCBpbnQgICB4LAogICAgY29uc3QgaW50ICAgeQogKTsKCnZvaWQgTlJIWV9T
ZXRVcGRhdGVXb3JsZEZsYWcgKAogICAgYm9vbCBzdGF0dXMKICk7Cgpib29sIE5SSFlfR2V0VXBk
YXRlV29ybGRGbGFnICgKICAgIHZvaWQKICk7Cgp2b2lkIE5SSFlfU2V0UmVkcmF3V29ybGRGbGFn
ICgKICAgIGJvb2wgc3RhdHVzCiApOwoKYm9vbCBOUkhZX0dldFJlZHJhd1dvcmxkRmxhZyAoCiAg
ICB2b2lkCiApOwoKdm9pZCBOUkhZX1VwZGF0ZVdvcmxkU3RhdHVzRmxhZ3MgKAogICAgaW50IGZs
YWdzCiApOwoKdm9pZCBOUkhZX1NldEluQmV0YUZsYWcgKAogICAgYm9vbCBpbkJldGEKICk7Cgpi
b29sIE5SSFlfR2V0SW5CZXRhRmxhZyAoKTsKCnZvaWQgTlJIWV9TZXRQcm9ncmFtVmVyc2lvbiAo
CiAgICAgICAgY29uc3QgVHdpbmUgJnZlcnNpb24KICk7Cgpjb25zdCBjaGFyICpOUkhZX0dldFBy
b2dyYW1WZXJzaW9uICgpOwoKTGlzdDxUd2luZT4gTlJIWV9HZXRGaWxlTGlzdCAoCiAgICAgICAg
dm9pZAogKTsKCkxpc3Q8VHdpbmU+IE5SSFlfU2V0RmlsZUxpc3QgKAogICAgICAgIGNvbnN0IExp
c3Q8VHdpbmU+ICYgbmV3RmlsZUxpc3QKICk7CgpUd2luZSBOUkhZX1NldEFsbE5yaHlBbmROZWVk
bGVDb21tYW5kcyAoCiAgICBUd2luZSAgIENvbW1hbmRzVHdpbmUKICk7CgpUd2luZSBOUkhZX0dl
dEFsbE5yaHlBbmROZWVkbGVDb21tYW5kcyAoCiAgICB2b2lkCiApOwoKdm9pZCAgICBOUkhZX1Nl
dFZvb2Rvb0RhdGFDaGFuZ2VkICAgKAogICAgICAgIEJPT0xFQU4gbmV3U3RhdGUKICk7CgpCT09M
RUFOIE5SSFlfR2V0Vm9vZG9vRGF0YUNoYW5nZWQgICAoCiAgICAgICAgdm9pZAogKTsKCnZvaWQg
TlJIWV9TZXROcmh5SW5pdGlhbGl6ZWQgKAogICAgdm9pZAogKTsKCkJPT0xFQU4gTlJIWV9HZXRO
cmh5SW5pdGlhbGl6ZWQgKAogICAgdm9pZAogKTsKCnZvaWQgKk5SSFlfR2V0VHJhY2tpbmdXaXRo
RGlzcGxheUZ1bmN0aW9uICgKICAgIHZvaWQKICk7Cgp2b2lkICpOUkhZX1NldFRyYWNraW5nV2l0
aERpc3BsYXlGdW5jdGlvbiAoCiAgICB2b2lkICAgICgqdGhlRnVuYykoKQogKTsKCkJPT0xFQU4g
TlJIWV9DYWxsVHJhY2tpbmdXaXRoRGlzcGxheUZ1bmN0aW9uICgKICAgIHZvaWQKICk7Cgp2b2lk
ICpOUkhZX0dldEludGVyZmFjZUZ1bmN0aW9uICgKICAgIHZvaWQKICk7Cgp2b2lkICpOUkhZX1Nl
dEludGVyZmFjZUZ1bmN0aW9uICgKICAgIEJPT0xFQU4gKCp0aGVGdW5jKSgpCiApOwoKQk9PTEVB
TiBOUkhZX0NhbGxJbnRlcmZhY2VGdW5jdGlvbiAoCiAgICB2b2lkCiApOwoKdm9pZCAqTlJIWV9H
ZXRQcm9jZXNzVUlGdW5jdGlvbiAoCiAgICB2b2lkCiApOwoKdm9pZCAqTlJIWV9TZXRQcm9jZXNz
VUlGdW5jdGlvbiAoCiAgICBCT09MRUFOICgqdGhlRnVuYykoKQogKTsKCkJPT0xFQU4gTlJIWV9D
YWxsUHJvY2Vzc1VJRnVuY3Rpb24gKAogICAgdm9pZAogKTsKCnZvaWQgKk5SSFlfR2V0U3VzcGVu
ZEZ1bmN0aW9uICgKICAgIHZvaWQKICk7Cgp2b2lkICpOUkhZX1NldFN1c3BlbmRGdW5jdGlvbiAo
CiAgICBCT09MRUFOICgqdGhlRnVuYykoQk9PTEVBTikKICk7CgpCT09MRUFOIE5SSFlfQ2FsbFN1
c3BlbmRGdW5jdGlvbiAoCiAgICBCT09MRUFOIHN1c3BlbmRGbGFnCiApOwoKdm9pZCBOUkhZX1Nl
dFRyYWNrSW50ZXJmYWNlQnVzeUZ1bmN0aW9uICgKICAgIEJPT0xFQU4gICAgKCp0aGVGdW5jKShp
bnQsIGZsb2F0LCBjb25zdCBjaGFyICosIGNsYXNzIE5SSFlfY2xhc3NUcmFjayAqKQogKTsKCkJP
T0xFQU4gTlJIWV9DYWxsVHJhY2tJbnRlcmZhY2VCdXN5RnVuY3Rpb24gKAogICAgaW50IHBhcm0s
CiAgICBmbG9hdCB2LCAKICAgIGNvbnN0IGNoYXIgKm1zZywKICAgIGNsYXNzIE5SSFlfY2xhc3NU
cmFjayogdHJhY2sKICk7Cgp2b2lkIE5SSFlfU2V0VHJhY2tSZWRyYXdXb3JsZCAoCiAgICBCT09M
RUFOICAgICgqdGhlRnVuYykodm9pZCkKICk7Cgp2b2lkIE5SSFlfQ2FsbFRyYWNrUmVkcmF3V29y
bGQgKAogICAgdm9pZAogKTsKCnZvaWQgKk5SSFlfR2V0SW50ZXJmYWNlQnVzeUZ1bmN0aW9uICgK
ICAgIHZvaWQKICk7Cgp2b2lkICpOUkhZX1NldEludGVyZmFjZUJ1c3lGdW5jdGlvbiAoCiAgICB2
b2lkICAgICgqdGhlRnVuYykoaW50LCBjb25zdCBjaGFyICopCiApOwoKdm9pZCBOUkhZX0NhbGxJ
bnRlcmZhY2VCdXN5RnVuY3Rpb24gKAogICAgaW50IHBhcm0sCiAgICBjb25zdCBjaGFyICptc2cK
ICk7Cgp2b2lkICpOUkhZX0dldEN0cmxDSGFuZGxlciAoCiAgICB2b2lkCiApOwoKdm9pZCAqTlJI
WV9TZXRDdHJsQ0hhbmRsZXIgKAogICAgdm9pZCAgICAoKnRoZUhhbmRsZXIpKHZvaWQpCiApOwoK
dm9pZCBOUkhZX0NhbGxDdHJsQ0hhbmRsZXIgKAogICAgdm9pZAogKTsKCnZvaWQgTlJIWV9DbGVh
clVzZXJJbnRlcmZhY2VGbGFncyAoCiAgICB2b2lkCiApOwoKdm9pZCBOUkhZX1NldFVzZXJJbnRl
cmZhY2VGbGFnICgKICAgIHVuc2lnbmVkIG5ld0ZsYWdzCiApOwoKdm9pZCBOUkhZX1Jlc2V0VXNl
ckludGVyZmFjZUZsYWcgKAogICAgdW5zaWduZWQgb2Jzb2xldGVGbGFncwogKTsKCnVuc2lnbmVk
IE5SSFlfR2V0VXNlckludGVyZmFjZUZsYWcgKAogICAgdm9pZAogKTsKCnZvaWQgTlJIWV9TZXRT
dGFnZUNvdW50ICgKICAgIGludCBudW1TdGFnZXMKICk7Cgp2b2lkIE5SSFlfQWRkU3RhZ2VDb3Vu
dCAoCiAgICBpbnQgbnVtU3RhZ2VzCiApOwoKQk9PTEVBTiBOUkhZX0NoZWNrU3RhZ2VMaW1pdCAo
CiAgICBpbnQgZGVsdGEKICk7Cgp2b2lkICAgIE5SSFlfU2V0VHdlbHZlRmxkU3RhdGUgICgKICAg
ICAgICBCT09MRUFOIG5ld1N0YXRlCiApOwoKdm9pZCAgICBOUkhZX1NldFR3ZWx2ZUZsZEluT3Zl
cmxheSAgKAogICAgICAgIEJPT0xFQU4gZmxhZwogKTsKCkJPT0xFQU4gICAgTlJIWV9TZXRUd2Vs
dmVGbGRTdHlsZSAgICgKICAgICAgICBjb25zdCBUd2luZSAmbmV3U3R5bGUKICk7CgpCT09MRUFO
ICAgIE5SSFlfU2V0VHdlbHZlRmxkRmlsZW5hbWUgICAgKAogICAgICAgIGNvbnN0IFR3aW5lICZm
aWxlbmFtZQogKTsKCnZvaWQgICAgTlJIWV9TZXRUd2VsdmVGbGRDb2xvciAgKAogICAgICAgIGZs
b2F0ICpuZXdDb2xvcgogKTsKCkJPT0xFQU4gTlJIWV9HZXRUd2VsdmVGbGRTdGF0ZSAgKAogICAg
ICAgIHZvaWQKICk7CgpCT09MRUFOIE5SSFlfR2V0VHdlbHZlRmxkSW5PdmVybGF5ICAoCiAgICAg
ICAgdm9pZAogKTsKClR3aW5lICAgTlJIWV9HZXRUd2VsdmVGbGRTdHlsZSAgKAogICAgICAgIHZv
aWQKICk7CgpUd2luZSAgIE5SSFlfR2V0VHdlbHZlRmxkRmlsZW5hbWUgICAoCiAgICAgICAgdm9p
ZAogKTsKCmZsb2F0ICpOUkhZX0dldFR3ZWx2ZUZsZENvbG9yICgpOwoKdm9pZCAgTlJIWV9EZXNj
cmliZVR3ZWx2ZWZsZCAoCiAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJmRlc2MK
ICk7CgpCT09MRUFOIE5SSFlfTG9hZFR3ZWx2ZUZsZFNoYXBlICgKICAgICAgICAgICAgY29uc3Qg
VHdpbmUgJmZpbGVuYW1lCiApOwoKY2xhc3MgU2hhcGUgKk5SSFlfR2V0VHdlbHZlRmxkU2hhcGUg
KCk7Cgp2b2lkICAgIE5SSFlfU2V0R3JvdW5kU3RhdGUgICAgICgKICAgICAgICBCT09MRUFOIG5l
d1N0YXRlCiApOwoKQk9PTEVBTiAgICBOUkhZX0dldEdyb3VuZFN0YXRlICAoCiAgICAgICAgdm9p
ZAogKTsKCnZvaWQgTlJIWV9TZXRBdXRvS2V5U3RhdGUgKAoJCQkgIEJPT0xFQU4gbmV3U3RhdGUK
ICk7CgpCT09MRUFOIE5SSFlfR2V0QXV0b0tleVN0YXRlICgKCQkJICAgICB2b2lkCiApOwoKdm9p
ZCAgICBOUkhZX1NldENhY2hlSW1hZ2VzU3RhdGUgICAgKAogICAgICAgIEJPT0xFQU4gbmV3U3Rh
dGUKICk7CgpCT09MRUFOICAgIE5SSFlfR2V0Q2FjaGVJbWFnZXNTdGF0ZSAgICAgKAogICAgICAg
IHZvaWQKICk7Cgp2b2lkICAgIE5SSFlfU2V0Q2FsY0R5bmFtaWNzU3RhdGUgICAgKAogICAgICAg
IEJPT0xFQU4gbmV3U3RhdGUKICk7CgpCT09MRUFOICAgIE5SSFlfR2V0Q2FsY0R5bmFtaWNzU3Rh
dGUgICAgICgKICAgICAgICB2b2lkCiApOwoKdm9pZCAgICBOUkhZX1NldEdob3N0U3RhdGUgICgK
ICAgICAgICBCT09MRUFOIG5ld1N0YXRlCiApOwoKdm9pZCAgICBOUkhZX1RvdWNoR2hvc3RTdGF0
ZSAgKCk7CgpCT09MRUFOIE5SSFlfR2V0R2hvc3RTdGF0ZSAgKAogICAgICAgIHZvaWQKICk7Cgp2
b2lkICAgIE5SSFlfU2V0R2hvc3RJbk92ZXJsYXkgICgKICAgICAgICBCT09MRUFOIGluT3Zlcmxh
eQogKTsKCkJPT0xFQU4gTlJIWV9HZXRHaG9zdEluT3ZlcmxheSAgKAogICAgICAgIHZvaWQKICk7
Cgp2b2lkICAgIE5SSFlfU2V0R2hvc3RDb2xvciAgICAgICgKICAgICAgICBmbG9hdCBuZXdSZWQs
CiAgICAgICAgZmxvYXQgbmV3R3JlZW4sCiAgICAgICAgZmxvYXQgbmV3Qmx1ZSwKICAgICAgICBm
bG9hdCBuZXdJbnRlbnMKICk7CgpmbG9hdCAgICAqTlJIWV9HZXRHaG9zdENvbG9yICAgICgKICAg
ICAgICB2b2lkCiApOwoKdm9pZCAgICBOUkhZX1NldFdyaXRlRmlsZW5hbWUgKAogICAgICAgIGNv
bnN0IGNoYXIgKmZpbGVuYW1lCiApOwoKdm9pZCAgICBOUkhZX1NldFdyaXRlT3B0aW9uICAgICAg
KAogICAgICAgIGNvbnN0IFR3aW5lICZuZXdPcHRpb24KICk7Cgp2b2lkICAgIE5SSFlfU2V0Rmls
ZVdyaXRlU3VjY2VzcyAoCiAgICAgICAgQk9PTEVBTiBzdWNjZXNzCiApOwoKdm9pZCAgICBOUkhZ
X1NldEluVHJhY2tDb21tYW5kICgKICAgICAgICBCT09MRUFOIHN0YXR1cwogKTsKCnZvaWQgICAg
TlJIWV9TZXRJblJlYWRDb21tYW5kICgKICAgICAgICBCT09MRUFOIHN0YXR1cwogKTsKCnZvaWQg
ICAgTlJIWV9TZXRJbldyaXRlQ29tbWFuZCAoCiAgICAgICAgQk9PTEVBTiBzdGF0dXMKICk7Cgpj
aGFyICpOUkhZX0dldFdyaXRlRmlsZW5hbWUgKAogICAgICAgIHZvaWQKICk7CgpUd2luZSAgIE5S
SFlfR2V0V3JpdGVPcHRpb24gICAgICAgICAgKAogICAgICAgIHZvaWQKICk7CgpCT09MRUFOIE5S
SFlfR2V0RmlsZVdyaXRlU3VjY2VzcyAoCiAgICAgICAgdm9pZAogKTsKCkJPT0xFQU4gTlJIWV9J
c0luVHJhY2tDb21tYW5kICgKICAgICAgICB2b2lkCiApOwoKQk9PTEVBTiBOUkhZX0lzSW5SZWFk
Q29tbWFuZCAoCiAgICAgICAgdm9pZAogKTsKCkJPT0xFQU4gTlJIWV9Jc0luV3JpdGVDb21tYW5k
ICgKICAgICAgICB2b2lkCiApOwoKVHdpbmUgTlJIWV9HZXRMYXN0UmVhZEZpbGVOYW1lICgKICk7
CgppbnQgTlJIWV9UZXh0Q29tbWFuZCAoCiAgICAgICAgY29uc3QgVHdpbmUgJmNvbW1hbmQKICk7
Cgp2b2lkIE5SSFlfVGV4dENvbW1hbmRTdHJlYW0gKAogICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2Ny
aWJlU3RyZWFtICZzCiApOwoKSU5UIE5SSFlfR2V0TWF4VXNlckRlZmluZUJ1dHRvbnMgKAogICAg
dm9pZAogKTsKCnZvaWQgICAgTlJIWV9TZXRVc2VyQnV0dG9uICAgICAgICAoCiAgICAgICAgaW50
IGluZGV4LCAKICAgICAgICBjb25zdCBUd2luZSAmbGFiZWwsIAogICAgICAgIGNvbnN0IFR3aW5l
ICZjb21tYW5kCiApOwoKdm9pZCAgICBOUkhZX1NldFVzZXJCdXR0b25MYWJlbCAoCiAgICAgICAg
aW50IGluZGV4LCAKICAgICAgICBjb25zdCBUd2luZSAmbGFiZWwKICk7Cgp2b2lkICAgIE5SSFlf
U2V0VXNlckJ1dHRvbkNvbW1hbmQgICgKICAgICAgICBpbnQgaW5kZXgsIAogICAgICAgIGNvbnN0
IFR3aW5lICZjb21tYW5kCiApOwoKdm9pZCAgICBOUkhZX1NldFVzZXJCdXR0b25Db2xvciAgKAog
ICAgICAgIGludCBpbmRleCwgCiAgICAgICAgZmxvYXQgciwgCiAgICAgICAgZmxvYXQgZywgCiAg
ICAgICAgZmxvYXQgYiwKICAgICAgICBmbG9hdCBpbnRlbnMKICk7Cgp2b2lkIE5SSFlfUmVzZXRV
c2VyQnV0dG9uICgKICAgIGludCBpbmRleAogKTsKCkJPT0xFQU4gTlJIWV9Jc1VzZXJCdXR0b25E
ZWZpbmVkICAoCiAgICAgICAgaW50IGluZGV4CiApOwoKVHdpbmUgICBOUkhZX0dldFVzZXJCdXR0
b25MYWJlbCAgICgKICAgICAgICBpbnQgaW5kZXgKICk7CgpUd2luZSAgIE5SSFlfR2V0VXNlckJ1
dHRvbkNvbW1hbmQgKAogICAgICAgIGludCBpbmRleAogKTsKCnZvaWQgICAgTlJIWV9HZXRVc2Vy
QnV0dG9uQ29sb3IgICgKICAgICAgICBpbnQgaW5kZXgsIAogICAgICAgIGZsb2F0ICpyLCAKICAg
ICAgICBmbG9hdCAqZywgCiAgICAgICAgZmxvYXQgKmIsCiAgICAgICAgZmxvYXQgKmludGVucwog
KTsKCnZvaWQgICAgTlJIWV9TZXRVc2VyQnV0dG9uV2lsbENhbGwgKAogICAgICAgIGludCBpbmRl
eAogKTsKCmludCAgICAgTlJIWV9HZXRVc2VyQnV0dG9uV2lsbENhbGwgKCk7Cgp2b2lkICAgIE5S
SFlfRXhlY3V0ZVVzZXJCdXR0b25XaWxsQ2FsbCAoCiApOwoKaW50IE5SSFlfR2V0U2hlbGZJbmRl
eCAoCiAgICAgICAgY29uc3QgVHdpbmUgJmxhYmVsCiApOwoKQk9PTEVBTiBOUkhZX0NyZWF0ZVNo
ZWxmICgKICAgICAgICAgICAgY29uc3QgVHdpbmUgJmxhYmVsCiApOwoKaW50IE5SSFlfRGVsZXRl
U2hlbGYgKAogICAgICAgICAgICBjb25zdCBUd2luZSAmbGFiZWwKICk7CgpCT09MRUFOIE5SSFlf
U2V0Q3VycmVudFNoZWxmICgKICAgICAgICAgICAgY29uc3QgVHdpbmUgJmxhYmVsCiApOwoKY29u
c3QgVHdpbmUgJk5SSFlfR2V0Q3VycmVudFNoZWxmICgpOwoKaW50IE5SSFlfR2V0TnVtYmVyU2hl
bHZlcyAoKTsKCmNvbnN0IFR3aW5lICZOUkhZX0dldFNoZWxmTGFiZWwgKAogICAgICAgICAgICBp
bnQgc2hlbGZJbmRleAogKTsKCmludCBOUkhZX0dldE1heFNoZWxmQnV0dG9ucyAoKTsKCmludCBO
UkhZX0ZpbmRTaGVsZkJ1dHRvbiAoCiAgICAgICAgaW50IHNoZWxmSW5kZXgsCiAgICAgICAgY29u
c3QgVHdpbmUgJmxhYmVsCiApOwoKaW50IE5SSFlfQ3JlYXRlU2hlbGZCdXR0b25MYWJlbCAoCiAg
ICAgICAgaW50IHNoZWxmSW5kZXgsCiAgICAgICAgaW50IGJ1dHRvbkluZGV4LAogICAgICAgIGNv
bnN0IFR3aW5lICZsYWJlbAogKTsKCmNvbnN0IFR3aW5lICZOUkhZX0dldFNoZWxmQnV0dG9uTGFi
ZWwgKAogICAgICAgIGludCBzaGVsZkluZGV4LAogICAgICAgIGludCBidXR0b25JbmRleAogKTsK
CkJPT0xFQU4gTlJIWV9TZXRTaGVsZkJ1dHRvbkNvbW1hbmQgKAogICAgICAgIGludCBzaGVsZklu
ZGV4LAogICAgICAgIGludCBidXR0b25JbmRleCwKICAgICAgICBjb25zdCBUd2luZSAmY29tbWFu
ZAogKTsKCmNvbnN0IFR3aW5lICZOUkhZX0dldFNoZWxmQnV0dG9uQ29tbWFuZCAoCiAgICAgICAg
aW50IHNoZWxmSW5kZXgsCiAgICAgICAgaW50IGJ1dHRvbkluZGV4CiApOwoKQk9PTEVBTiBOUkhZ
X0NsZWFyU2hlbGZCdXR0b24gKAogICAgICAgIGludCBzaGVsZkluZGV4LAogICAgICAgIGludCBi
dXR0b25JbmRleAogKTsKCnZvaWQgICAgTlJIWV9TZXRTaGVsZkJ1dHRvbldpbGxDYWxsICgKICAg
ICAgICBjb25zdCBUd2luZSAmY29tbWFuZAogKTsKCmNvbnN0IFR3aW5lICZOUkhZX0dldFNoZWxm
QnV0dG9uV2lsbENhbGwgKCk7Cgp2b2lkICAgIE5SSFlfRXhlY3V0ZVNoZWxmQnV0dG9uV2lsbENh
bGwgKCk7Cgp2b2lkIE5SSFlfU2V0TG9vcFN0YXR1cyAoCiAgICAgICAgQk9PTEVBTiBzdGF0dXMK
ICk7CgpCT09MRUFOIE5SSFlfR2V0TG9vcFN0YXR1cyAoCiAgICAgICAgdm9pZAogKTsKCnZvaWQg
TlJIWV9TZXRJbWFnZUNhY2hlTGltaXQgKAogICAgICAgIGludCBsaW1pdAogKTsKCmludCBOUkhZ
X0dldEltYWdlQ2FjaGVMaW1pdCAoCiAgICAgICAgdm9pZAogKTsKCnZvaWQgTlJIWV9TZXRMb29w
RGVjb3VwbGVTd2FwYnVmICgKICAgICAgICBCT09MRUFOIHN0YXR1cwogKTsKCkJPT0xFQU4gTlJI
WV9HZXRMb29wRGVjb3VwbGVTd2FwYnVmICgKICAgICAgICB2b2lkCiApOwoKaW50IE5SSFlfU2V0
U2xpY2VzICgKICAgICAgICBpbnQgc2xpY2VzCiApOwoKaW50IE5SSFlfR2V0U2xpY2VzICgKCXZv
aWQKICk7CgpjaGFyIE5SSFlfU2V0U2h1dHRlciAoCiAgICAgICAgZmxvYXQgbWluLAogICAgICAg
IGZsb2F0IG1heAogKTsKCnZvaWQgTlJIWV9HZXRTaHV0dGVyICgKICAgICAgICBmbG9hdCAmbWlu
LAogICAgICAgIGZsb2F0ICZtYXgKICk7Cgp2b2lkIE5SSFlfR2V0TW90aW9uQmx1clBhcm1zICgK
ICAgICAgICBmbG9hdCAmbWluLAogICAgICAgIGZsb2F0ICZtYXgsCiAgICAgICAgaW50ICAgJm5z
bGljZXMKICk7Cgp2b2lkIE5SSFlfU2V0RnVsbEV4aXQgKAogICAgICAgIEJPT0xFQU4gc3RhdHVz
CiApOwoKQk9PTEVBTiBOUkhZX0dldEZ1bGxFeGl0ICgKICAgICAgICB2b2lkCiApOwoKZmxvYXQg
TlJIWV9HZXRUcmFja0ljb25JbnRlbnNpdHkgKAogKTsKCnZvaWQgIE5SSFlfU2V0VHJhY2tJY29u
SW50ZW5zaXR5ICgKICAgIGZsb2F0IGljb25JbnRlbnNpdHkKICk7CgpCT09MRUFOIE5SSFlfR2V0
VHJhY2tTaG93UGF0aHMgKAogKTsKCnZvaWQgIE5SSFlfU2V0VHJhY2tTaG93UGF0aHMgKAogICAg
Qk9PTEVBTiBzaG93UGF0aHMKICk7Cgp2b2lkICBOUkhZX1NldFRyYWNrU2hvd0FsbFBhdGhzICgK
ICAgIEJPT0xFQU4gc2hvd0FsbFBhdGhzCiApOwoKQk9PTEVBTiBOUkhZX0dldFRyYWNrU2hvd0Fs
bFBhdGhzICgKICk7Cgp2b2lkICBOUkhZX1NldFRyYWNrU2hvd0xhYmVscyAoCiAgICBCT09MRUFO
IHNob3dMYWJlbHMKICk7CgpCT09MRUFOIE5SSFlfR2V0VHJhY2tTaG93TGFiZWxzICgKICk7Cgp2
b2lkICBOUkhZX1NldFRyYWNrQ2VudGVyICgKICAgIEJPT0xFQU4gY2VudGVyCiApOwoKQk9PTEVB
TiBOUkhZX0dldFRyYWNrQ2VudGVyICgKICk7Cgp2b2lkICBOUkhZX1NldFRyYWNrQ3JvcE1hcCAo
CiAgICBCT09MRUFOIGNyb3BNYXAKICk7CgpCT09MRUFOIE5SSFlfR2V0VHJhY2tDcm9wTWFwICgK
ICk7Cgp2b2lkICBOUkhZX1NldFRyYWNrQ3VycmVudCAoCiAgICBUd2luZSYgdHJhY2tDdXJyZW50
CiApOwoKVHdpbmUgTlJIWV9HZXRUcmFja0N1cnJlbnQgKAogKTsKCkJPT0xFQU4gTlJIWV9HZXRI
YXJkd2FyZUlEICgKICAgICAgICB2b2lkCiApOwoKdm9pZCBOUkhZX1NldEhhcmR3YXJlSUQgKAog
ICAgdm9pZAogKTsKCgoKCgp2b2lkICAgICpOUkhZX0dldEN1cnJlbnRDb250ZXh0ICgKICAgICAg
ICB2b2lkCiApOwoKdm9pZCAgICBOUkhZX1NldEN1cnJlbnRDb250ZXh0ICgKICAgIHZvaWQgICAg
KmNvbnRleHQKICk7CgpCT09MRUFOIE5SSFlfU2V0U3RlcmVvRmxpcEZsYWcgKAogICAgQk9PTEVB
TiBzdGF0dXMKICk7CgpCT09MRUFOIE5SSFlfR2V0U3RlcmVvRmxpcEZsYWcgKAogICAgdm9pZAog
KTsKCklOVCBOUkhZX1NldFN0ZXJlb1NwbGl0RmxhZyAoCiAgICBpbnQgc3RhdHVzCiApOwoKSU5U
IE5SSFlfR2V0U3RlcmVvU3BsaXRGbGFnICgKICAgIHZvaWQKICk7CgpmbG9hdCBOUkhZX1NldFN0
ZXJlb0hvckJsYW5raW5nICgKICAgIGZsb2F0ICAgIHZhbHVlCiApOwoKZmxvYXQgTlJIWV9HZXRT
dGVyZW9Ib3JCbGFua2luZyAoCiAgICB2b2lkCiApOwoKZmxvYXQgTlJIWV9HZXRTdGVyZW9Ib3JC
bGFua2luZ0RlZmF1bHQgKAogICAgdm9pZAogKTsKCmZsb2F0IE5SSFlfU2V0U3RlcmVvVmVyQmxh
bmtpbmcgKAogICAgZmxvYXQgICAgdmFsdWUKICk7CgpmbG9hdCBOUkhZX0dldFN0ZXJlb1ZlckJs
YW5raW5nICgKICAgIHZvaWQKICk7CgpmbG9hdCBOUkhZX0dldFN0ZXJlb1ZlckJsYW5raW5nRGVm
YXVsdCAoCiAgICB2b2lkCiApOwoKQk9PTEVBTiBOUkhZX1NldFN0ZXJlb1VzZU9uZVR3ZW50eUN5
Y2xlICgKICAgIEJPT0xFQU4gc3RhdHVzCiApOwoKQk9PTEVBTiBOUkhZX0dldFN0ZXJlb1VzZU9u
ZVR3ZW50eUN5Y2xlICgKICAgIHZvaWQKICk7CgpCT09MRUFOIE5SSFlfU2V0U3RlcmVvTW90aWZX
aW5kb3dCb3JkZXIgKAogICAgQk9PTEVBTiBzdGF0dXMKICk7CgpCT09MRUFOIE5SSFlfR2V0U3Rl
cmVvTW90aWZXaW5kb3dCb3JkZXIgKAogICAgdm9pZAogKTsKCkJPT0xFQU4gTlJIWV9TZXRTdGVy
ZW9TaG93TFJMYWJlbHMgKAogICAgQk9PTEVBTiBzdGF0dXMKICk7CgpCT09MRUFOIE5SSFlfR2V0
U3RlcmVvU2hvd0xSTGFiZWxzICgKICAgIHZvaWQKICk7CgpCT09MRUFOIE5SSFlfR2V0QWxwaGFi
ZXRpemVVc2FnZSAoCiAgICB2b2lkCiApOwoKQk9PTEVBTiBOUkhZX1NldEFscGhhYmV0aXplVXNh
Z2UgKAogICAgQk9PTEVBTiAgICAgc3RhdHVzCiApOwoKQk9PTEVBTiBOUkhZX0dldFNwb3RMaXRl
RGlzcGxheUFzU29saWQgKAogICAgdm9pZAogKTsKCkJPT0xFQU4gTlJIWV9TZXRTcG90TGl0ZURp
c3BsYXlBc1NvbGlkICgKICAgIEJPT0xFQU4gICAgIHN0YXR1cwogKTsKCkJPT0xFQU4gTlJIWV9H
ZXRTcG90TGl0ZUZvY3VzVXNlTWF4ICgKICAgIHZvaWQKICk7CgpCT09MRUFOIE5SSFlfU2V0U3Bv
dExpdGVGb2N1c1VzZU1heCAoCiAgICBCT09MRUFOICAgICBzdGF0dXMKICk7CgpCT09MRUFOIE5S
SFlfR2V0TG9ja2VkRm9yUmVhZCAoCiAgICB2b2lkCiApOwoKQk9PTEVBTiBOUkhZX1NldExvY2tl
ZEZvclJlYWQgKAogICAgQk9PTEVBTiBzdGF0dXMKICk7CgpCT09MRUFOIE5SSFlfR2V0U2hvd0lu
dGVybmFsT25seU9wdGlvbnMgKAogICAgdm9pZAogKTsKCkJPT0xFQU4gTlJIWV9TZXRTaG93SW50
ZXJuYWxPbmx5T3B0aW9ucyAoCiAgICBCT09MRUFOICAgICBzdGF0dXMKICk7Cgp2b2lkIE5SSFlf
U2V0RW52QyAoCiAgICBjb25zdCBUd2luZSAmY2hhbm5lbAogKTsKClR3aW5lIE5SSFlfR2V0RW52
QyAoCiAgICB2b2lkCiApOwoKdm9pZCBOUkhZX1NldEVudkYgKAogICAgZmxvYXQgZgogKTsKCmZs
b2F0IE5SSFlfR2V0RW52RiAoCiAgICB2b2lkCiApOwoKdm9pZCBOUkhZX1NldEVudkZzICgKICAg
IGZsb2F0IGZzCiApOwoKZmxvYXQgTlJIWV9HZXRFbnZGcyAoCiAgICB2b2lkCiApOwoKdm9pZCBO
UkhZX1NldEVudkZlICgKICAgIGZsb2F0IGZlCiApOwoKZmxvYXQgTlJIWV9HZXRFbnZGZSAoCiAg
ICB2b2lkCiApOwoKdm9pZCBOUkhZX1NldEVudkZpbmMgKAogICAgZmxvYXQgZmluYwogKTsKCmZs
b2F0IE5SSFlfR2V0RW52RmluYyAoCiAgICB2b2lkCiApOwoKdm9pZCBOUkhZX1NldEVudkZtaW4g
KAogICAgZmxvYXQgZm1pbgogKTsKCmZsb2F0IE5SSFlfR2V0RW52Rm1pbiAoCiAgICB2b2lkCiAp
OwoKdm9pZCBOUkhZX1NldEVudkZtYXggKAogICAgZmxvYXQgZm1heAogKTsKCmZsb2F0IE5SSFlf
R2V0RW52Rm1heCAoCiAgICB2b2lkCiApOwoKdm9pZCBOUkhZX1NldEVudk1mcyAoCiAgICBmbG9h
dCBtZnMKICk7CgpmbG9hdCBOUkhZX0dldEVudk1mcyAoCiAgICB2b2lkCiApOwoKdm9pZCBOUkhZ
X1NldEVudk1mZSAoCiAgICBmbG9hdCBtZmUKICk7CgpmbG9hdCBOUkhZX0dldEVudk1mZSAoCiAg
ICB2b2lkCiApOwoKdm9pZCBOUkhZX1NldEVudkxhc3RGaWxlUmVhZCAoCiAgICBjb25zdCBUd2lu
ZSAmbGFzdEZpbGVSZWFkCiApOwoKVHdpbmUgTlJIWV9HZXRFbnZMYXN0RmlsZVJlYWQgKAogICAg
dm9pZAogKTsKCnZvaWQgTlJIWV9TZXRPblNvdW5kSW50ZXJmYWNlRnVuY3Rpb24gKAogICAgQk9P
TEVBTiAoKnRoZUZ1bmMpKHZvaWQgKnNvdW5kKQogKTsKCkJPT0xFQU4gTlJIWV9DYWxsT25Tb3Vu
ZEludGVyZmFjZUZ1bmN0aW9uICgKICAgIHZvaWQgKnNvdW5kCiApOwoKdm9pZCBOUkhZX1NldE9m
ZlNvdW5kSW50ZXJmYWNlRnVuY3Rpb24gKAogICAgQk9PTEVBTiAoKnRoZUZ1bmMpKHZvaWQgKnNv
dW5kKQogKTsKCkJPT0xFQU4gTlJIWV9DYWxsT2ZmU291bmRJbnRlcmZhY2VGdW5jdGlvbiAoCiAg
ICB2b2lkICpzb3VuZAogKTsKCnZvaWQgTlJIWV9TZXRBdGV4aXRTb3VuZEludGVyZmFjZUZ1bmN0
aW9uICgKICAgIEJPT0xFQU4gKCp0aGVGdW5jKSh2b2lkICpzb3VuZCkKICk7CgpCT09MRUFOIE5S
SFlfQ2FsbEF0ZXhpdFNvdW5kSW50ZXJmYWNlRnVuY3Rpb24gKAogICAgdm9pZCAqc291bmQKICk7
Cgp2b2lkIE5SSFlfU2V0RGVzdHJ1Y3RvclNvdW5kSW50ZXJmYWNlRnVuY3Rpb24gKAogICAgQk9P
TEVBTiAoKnRoZUZ1bmMpKHZvaWQgKnNvdW5kKQogKTsKCkJPT0xFQU4gTlJIWV9DYWxsRGVzdHJ1
Y3RvclNvdW5kSW50ZXJmYWNlRnVuY3Rpb24gKAogICAgdm9pZCAqc291bmQKICk7Cgp2b2lkIE5S
SFlfSW52YWxpZGF0ZUZyYW5nZSAoCiAgICBmbG9hdCBmc3RhcnQsCiAgICBmbG9hdCBmZW5kLAog
ICAgZmxvYXQgZmluYwogKTsKCnZvaWQgTlJIWV9JbnZhbGlkYXRlRnJhbmdlICgKICAgIHZvaWQg
KnBvcnQsCiAgICBmbG9hdCBmc3RhcnQsCiAgICBmbG9hdCBmZW5kLAogICAgZmxvYXQgZmluYwog
KTsKCkJPT0xFQU4gTlJIWV9Jc0ludmFsaWRhdGVkRnJhbmdlICgpOwoKQk9PTEVBTiBOUkhZX0dl
dEludmFsaWRhdGVkRnJhbmdlICgKICAgIHZvaWQgICoqY3VyUG9ydCwKICAgIGZsb2F0ICpmc3Rh
cnQsIAogICAgZmxvYXQgKmZlbmQsCiAgICBmbG9hdCAqZmluYwogKTsKCmNoYXIgKipOUkhZX0dl
dFZhbGlkRXh0ZW5zaW9ucyAoCiAgICAgICAgdm9pZCAKICk7CgppbnQgTlJIWV9HZXROdW1iZXJF
eHRlbnNpb25zICgKICAgICAgICB2b2lkIAogKTsKCnZvaWQgTlJIWV9TZXRNYW5pcHVsYXRvclNt
b290aG5lc3MgKAogICAgICAgIGZsb2F0IGYKICk7CgpmbG9hdCBOUkhZX0dldE1hbmlwdWxhdG9y
U21vb3RobmVzcyAoKTsKCnZvaWQgICAgIE5SSFlfU3BsaXREb3RGaWxlTmFtZSAoCiAgICAgICAg
ICAgIENIQVIgICAgKmluLAogICAgICAgICAgICBDSEFSICAgICpiYXNlLAogICAgICAgICAgICBJ
TlQgICAgICpmcmFtZSwKICAgICAgICAgICAgQ0hBUiAgICAqZXh0bgogKTsKCkJPT0xFQU4gTlJI
WV9HZXRTbGlkZXIgKAogICAgdm9pZAogKTsKCnZvaWQgTlJIWV9TZXRTbGlkZXIgKAogICAgQk9P
TEVBTiBzdGF0ZQogKTsKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgp2b2lkICBOUkhZX0Vz
dGFibGlzaFBvcnRHcmFwaGljcyAoCgkJCQkgQk9PTEVBTiBmbGFnLAoJCQkJIGNvbnN0IGNoYXIq
IG5hbWUKICk7Cgp2b2lkIE5SSFlfRXN0YWJsaXNoQ2FtZXJhR3JhcGhpY3MgKAogICAgTlJIWV9j
bGFzc0NhbWVyYSAqY2FtZXJhCiApOwoKdm9pZCBOUkhZX1NldE1hdGVyaWFsICgKICAgIE5SSFlf
Y2xhc3NNYXRlcmlhbCAqbXRsUHRyLAogICAgZmxvYXQgb3BhY2l0eQogKTsKCgoKCgoKCgoKdm9p
ZCBOUkhZX0dMSW5mb01hdHJpeCAoCiAgICB2b2lkIAogKTsKCgoKCgppbnQgTlJIWV9HZXRNb25p
dG9yICgpOwoKdm9pZCBOUkhZX1NldE1vbml0b3IgKAogICAgaW50IGZyYW1lUmF0ZQogKTsKCgoK
Cgp2b2lkIE5SSFlfU2V0SW52ZXJzZUNhbWVyYU1hdHJpeCAoCiAgICBjb25zdCBNX01hdHJpeCAm
bWF0CiApOwoKY29uc3QgTV9NYXRyaXggJk5SSFlfR2V0SW52ZXJzZUNhbWVyYU1hdHJpeCAoCiAg
ICB2b2lkCiApOwoKCgoKCgogCgoKCgoKCgoKCgogCgoKIAoKaW50IE5SSFlfSW5pdGlhbGl6ZSAo
CiAgICB2b2lkCiApOwoKdm9pZCAgTlJIWV9Jbml0aWFsaXplQ2hhbkZ1bmN0aW9ucyAoKTsKCnZv
aWQgIE5SSFlfSW5pdGlhbGl6ZVZjaG9yRnVuY3Rpb25zICgpOwoKCiAKCgoKCgoKCkJPT0xFQU4g
TlJIWV9SZWFkV3Jlbk10bCAoCiAgICBORVRGSUxFX0ZJTEUgICAgKmZwdHIsCiAgICBUd2luZSAg
ICAgICAgICAgZmlsZW5hbWUKICk7CgoKIAoKQk9PTEVBTiBOUkhZX1JlYWRXcmVuTWFwICgKICAg
IE5FVEZJTEVfRklMRSAgICAqZnB0ciwKICAgIFR3aW5lICAgICAgICAgICBmaWxlbmFtZQogKTsK
CgogCgp2b2lkICBOUkhZX0xpc3RIaWVyYXJjaHkgKAogICAgRklMRSAgICAgICAgICAgICpmcCwK
ICAgIHZvaWQgICAgICAgICAgICAgKipnZW5lcmljUHRycywKICAgIElOVCAgICAgICAgICAgICBu
dW1iZXJHZW5lcmljUHRycywKICAgIElOVCAgICAgICAgICAgICBhbGxGbGFnLAogICAgSU5UICAg
ICAgICAgICAgIGNoYW5GbGFnLAogICAgSU5UICAgICAgICAgICAgIGRlYnVnRmxhZwogKTsKCgog
CgpJTlQgTlJIWV9SZWFkVmRhICgKICAgIE5FVEZJTEVfRklMRSAgICAgICAgICAgICAgICAgICAg
KiBmaWxlLAogICAgVHdpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZGFGaWxlTmFtZSwK
ICAgIGNvbnN0IExpc3QgPE5SSFlfSU5UX0ZSQU5HRT4gICAgJiByZW1hcEZyYW5nZUxpc3QKICk7
CgpUd2luZSBOUkhZX0dldFZkYUZpbGVuYW1lICgKICAgIGNvbnN0IENIQVIgICppbmNvbWluZ0Zp
bGVOYW1lCiApOwoKTkVURklMRV9GSUxFICpOUkhZX09wZW5GaWxlICgKICAgIFR3aW5lICAgZmls
ZU5hbWUKICk7CgpCT09MRUFOIE5SSFlfQ2xvc2VGaWxlICgKICAgIE5FVEZJTEVfRklMRSAgICAq
IGZpbGUsCiAgICBUd2luZSAgICAgICAgICAgZmlsZU5hbWUKICk7CgoKCgoKSU5UIE5SSFlfUmVh
ZENoYW5Bc2NpaSAoCiAgICBORVRGSUxFX0ZJTEUgICAgKmZpbGUsCiAgICBUd2luZSAgICAgICAg
ICAgYXNjRmlsZU5hbWUsCiAgICBjb25zdCBMaXN0IDxjbGFzcyBOUkhZX2NsYXNzQ2hhbm5lbCAq
PiAmY2hhbkxpc3QsCiAgICBjb25zdCBzdHJ1Y3QgTlJIWV9JTlRfRlJBTkdFICAgICAgICAgICAm
ZnJhbmdlCiApOwoKSU5UIE5SSFlfUmVhZE9ialRvQ2hhbiAoCiAgICBORVRGSUxFX0ZJTEUgICAg
KmZpbGUsCiAgICBUd2luZSAgICAgICAgICAgb2JqVG9DaGFuRmlsZW5hbWUKICk7CgppbnQgTlJI
WV9SZWFkTXRuICgKICAgIE5FVEZJTEVfRklMRSAqIGZpbGUsCiAgICBMaXN0IDxOUkhZX2NsYXNz
Q2hhbm5lbCAqPiBkZXN0aW5hdGlvbiwKICAgIExpc3QgPE5SSFlfY2xhc3NDaGFubmVsICo+IG9u
bHksCiAgICBCT09MRUFOIHN0YXJ0U3BlY2lmaWVkLAogICAgaW50IHN0YXJ0RnJhbWUsCiAgICBj
b25zdCBMaXN0IDxOUkhZX0lOVF9GUkFOR0U+ICZmcmFuZ2VMaXN0CiApOwoKaW50IE5SSFlfUmVh
ZENoZWQgKAoJCSAgTkVURklMRV9GSUxFKiBmaWxlLAoJCSAgTGlzdDwgTlJIWV9jbGFzc0NoYW5u
ZWwqID4gZGVzdGluYXRpb24sCgkJICBMaXN0PCBOUkhZX2NsYXNzQ2hhbm5lbCogPiBvbmx5LAoJ
CSAgQk9PTEVBTiBzdGFydFNwZWNpZmllZCwKCQkgIGludCBzdGFydEZyYW1lLAoJCSAgY29uc3Qg
TGlzdDwgTlJIWV9JTlRfRlJBTkdFID4mIGZyYW5nZUxpc3QKICk7CgoKIAoKCiAKCgoKCgoKCgoK
VHdpbmUgTlJIWV9EZWNvZGVPcGVuR0xCbGVuZEludCAoCiAgICBJTlQgaW5jb21pbmdJbnQKICk7
CgoKCgoKCiAKCkJPT0xFQU4gTlJIWV9TZXRTaW5nbGVTdGF0dXMgKAogICAgQk9PTEVBTiBmbGFn
CiApOwoKQk9PTEVBTiBOUkhZX0dldFNpbmdsZVN0YXR1cyAoCiAgICB2b2lkCiApOwoKdm9pZCBO
UkhZX1NldE5vVXBkYXRlU3RhdHVzICgKICAgIEJPT0xFQU4gbmV3U3RhdGUKICk7CgpCT09MRUFO
IE5SSFlfR2V0Tm9VcGRhdGVTdGF0dXMgKAogICAgdm9pZAogKTsKCkJPT0xFQU4gTlJIWV9HZXRO
b1VwZGF0ZVN0YXR1cyAoCiAgICBjbGFzcyBOUkhZX2NsYXNzQ2hhbm5lbCAqY2hhbgogKTsKCgog
Cgp2b2lkICBOUkhZX0xpc3RGcmFtZUluZm8gKAogICAgdm9pZCAKICk7Cgp2b2lkICBOUkhZX0dl
dEN1cnJlbnRGcmFuZ2UgKAogICAgUkVBTCAgICAqc3RhcnQsCiAgICBSRUFMICAgICplbmQsCiAg
ICBSRUFMICAgICppbmMKICk7CgpmbG9hdCBOUkhZX0dldEN1cnJlbnRGcmFtZSAoCiAgICB2b2lk
CiApOwoKQk9PTEVBTiBOUkhZX1NldEN1cnJlbnRGcmFtZSAoCiAgICBmbG9hdCBmcmFtZQogKTsK
CkJPT0xFQU4gTlJIWV9HZXRBbGxvd091dE9mUmFuZ2VDdXJyZW50RnJhbWUgKAogICAgdm9pZAog
KTsKCkJPT0xFQU4gTlJIWV9TZXRBbGxvd091dE9mUmFuZ2VDdXJyZW50RnJhbWUgKAogICAgQk9P
TEVBTiBuZXdTdGF0ZQogKTsKCklOVCBOUkhZX0dldEZyYW1lT2Zmc2V0ICgKICAgIHZvaWQgCiAp
OwoKaW50IE5SSFlfR2V0VXNlclRvdGFsRnJhbWVzU3RhcnQgKCk7CgppbnQgTlJIWV9HZXRVc2Vy
VG90YWxGcmFtZXNFbmQgKCk7CgoKIAoKSU5UIE5SSFlfR2V0VmVyYm9zaXR5ICgKICAgIHZvaWQg
CiApOwoKSU5UIE5SSFlfU2V0VmVyYm9zaXR5ICgKICAgIGNvbnN0IElOVCAgIHN0YXR1cwogKTsK
CgogCgpmbG9hdCBOUkhZX0dldExhc3RUcmF2ZXJzZWRGcmFtZSAoKTsKCmludCBOUkhZX1VwZGF0
ZVRyYXZlcnNlICgKICAgIGZsb2F0IGZyYW1lCiApOwoKdm9pZCBOUkhZX1NldERpcnR5V29ybGRG
bGFnICgKICAgIHZvaWQKICk7Cgp2b2lkIE5SSFlfVXBkYXRlVHJhdmVyc2VUaGluZyAoCiAgICBm
bG9hdCBmcmFtZSwKICAgIE5SSFlfY2xhc3NUaGluZyAqdGhpbmdQdHIKICk7CgoKIAoKQk9PTEVB
TiBOUkhZX1NhdmVVbmRvICgKICAgICAgICBCT09MRUFOIGNvbmQKICk7Cgp2b2lkICBOUkhZX1Vu
ZG9QdXNoU3RhcnRCZWFkICgKICAgICAgICAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb24KICk7
Cgp2b2lkICBOUkhZX1VuZG9QdXNoRW5kQmVhZCAoCiAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRl
c2NyaXB0aW9uCiApOwoKdm9pZCBOUkhZX1VuZG9QdXJnZSAoKTsKCnZvaWQgTlJIWV9Qcm9jZXNz
VW5kb1B1cmdlICgpOwoKdm9pZCBOUkhZX1B1c2hVbmRvU3RhdHVzICgKICAgICAgICBCT09MRUFO
IGlzT24KICk7Cgp2b2lkIE5SSFlfUG9wVW5kb1N0YXR1cyAoKTsKCnZvaWQgIE5SSFlfU2V0VW5k
byAoCiAgICAgICAgQk9PTEVBTiBzZXRPbgogKTsKCnZvaWQgIE5SSFlfU2V0VW5kb0Z1bGwgKAog
ICAgICAgIEJPT0xFQU4gc2V0T24KICk7CgpCT09MRUFOIE5SSFlfR2V0VW5kb1N0YXR1cyAoKTsK
CkJPT0xFQU4gTlJIWV9HZXRVbmRvRnVsbCAoKTsKCgogCgpCT09MRUFOIE5SSFlfRGlzcGxheVRy
YXZlcnNlICgKICAgIElOVCBkaXNwbGF5TW9kZSwKICAgIEJPT0xFQU4gbGFiZWxPYmplY3RzLAog
ICAgY29uc3QgY2hhciAqbGFiZWxQcmVmaXgsCiAgICBjb25zdCBjaGFyICpsYWJlbFN1ZmZpeAog
KTsKCgogCgoKCgoKCgoKCgoKIyAxOTYgImgvTlJIWS5oIiAyCgoKIAoKIyAyNyAibnJoeS9OUkhZ
X0FjY2Vzcy5jIiAyCgojIDEgImgvbnJoeS5oIiAxCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
Y2xhc3MgT2JzZXJ2ZXI7CgogCgoKCiAKCgogCgoKCgogCgoKCiAKCgoKCgogCgoKCiAKCgoKCiAK
Y29uc3QgaW50IFRISU5HX1RZUEVfQU5ZVEhJTkcgICA9IC00OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAKY29uc3QgaW50IFRISU5HX1RZUEVfVEhJTkcgICAg
ICA9IC0zOwpjb25zdCBpbnQgVEhJTkdfVFlQRV9BUFBBUklUSU9OID0gLTI7CmNvbnN0IGludCBU
SElOR19UWVBFX09CSkVDVCAgICAgPSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKIAplbnVtIE5SSFlfVGhpbmdUeXBlIHsKICAgICAKICAgIFRISU5HX1RZUEVfVU5LTk9XTiwK
CiAgICAgCiAgICBUSElOR19UWVBFX0NBTUVSQSwKICAgIFRISU5HX1RZUEVfQ09MTElTSU9OLAog
ICAgVEhJTkdfVFlQRV9EVU1NWSwKICAgIFRISU5HX1RZUEVfRFlOQU1JQ1MsCiAgICBUSElOR19U
WVBFX0ZJTFRFUiwKICAgIFRISU5HX1RZUEVfRk9SQ0UsCiAgICBUSElOR19UWVBFX0ZVUiwKICAg
IFRISU5HX1RZUEVfTVVTQ0xFLAogICAgVEhJTkdfVFlQRV9HRU5FUkFUT1IsCiAgICBUSElOR19U
WVBFX0hPTUUsCiAgICBUSElOR19UWVBFX0lOS1ksCiAgICBUSElOR19UWVBFX0tMSVNULAogICAg
VEhJTkdfVFlQRV9MQVlFUiwKICAgIFRISU5HX1RZUEVfTElHSFQsCiAgICBUSElOR19UWVBFX01B
UCwKICAgIFRISU5HX1RZUEVfTUFURVJJQUwsCiAgICBUSElOR19UWVBFX01PREVMLAogICAgVEhJ
TkdfVFlQRV9ST09ULAogICAgVEhJTkdfVFlQRV9ST1RPLAogICAgVEhJTkdfVFlQRV9TQ0FGRk9M
RCwKICAgIFRISU5HX1RZUEVfU09VTkQsCiAgICBUSElOR19UWVBFX1RFWCwKICAgIFRISU5HX1RZ
UEVfVFJBQ0ssCiAgICBUSElOR19UWVBFX1VTRU1BUCwKCiAgICAgCiAgICBUSElOR19UWVBFX0VO
RAp9OwoKY29uc3QgaW50IFRZUEVfVEhJTkdDSEFOTkVMID0gVEhJTkdfVFlQRV9FTkQgKyAxOwoK
IApleHRlcm4gY29uc3QgY2hhciAqKm5yaHlfaXRlbU5hbWVzOwoKIAoKCiMgMSAiaC9ucmh5LnAi
IDEKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKIAoKCiAKCgogCgoKCgoKCgpJTlQgTlJIWV9Jc0Fz
Y2lpQU1lbWJlck9mQ2hhbm5lbExpc3QgKAogICAgY29uc3QgQ0hBUiAgKmFzY2lpLAogICAgSU5U
ICAgICAgICAgdHlwZQoJKTsKCklOVCAqTlJIWV9HZXRBbGxBc2NpaU1hdGNoZXNJbkNoYW5uZWxM
aXN0ICgKICAgIGNvbnN0IENIQVIgICphc2NpaSwKICAgIElOVCAgICAgICAgIHR5cGUsCiAgICBJ
TlQgICAgICAgICAqbnVtYmVyTWF0Y2hlcwoJKTsKCklOVCBOUkhZX0dldFR5cGVfX05vdEFDaGFu
X18gKAogICAgdm9pZCAKCSk7CgpaT09MRUFOIE5SSFlfQ2hlY2tBbmRGaXhOYU5DaGFubmVscyAo
CiAgICBOUkhZX2J1bmNoIDxOUkhZX2NsYXNzVGhpbmc+ICAgICpidW5jaF90aGluZ1B0cnMsCiAg
ICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIGZpeEZsYWcKCSk7CgoKIAoKdm9pZCAg
ICBOUkhZX1NhdmVDaGFubmVsICgKICAgICAgICAgICAgc3RydWN0IE5SSFlfY2xhc3NDaGFubmVs
ICpjaGFuLAogICAgICAgICAgICBCT09MRUFOIG1ha2VLZXkKCSk7Cgp2b2lkICAgIE5SSFlfU2F2
ZUNoYW5uZWxzICgKICAgICAgICAgICAgY29uc3QgTGlzdDxjbGFzcyBOUkhZX2NsYXNzQ2hhbm5l
bCAqPiAmY2hhbm5lbHMsCiAgICAgICAgICAgIEJPT0xFQU4gbWFrZUtleQoJKTsKCnZvaWQgICAg
TlJIWV9SZXNldENoYW5uZWwgKAogICAgICAgICAgICBzdHJ1Y3QgTlJIWV9jbGFzc0NoYW5uZWwg
KmNoYW4KCSk7Cgp2b2lkICAgIE5SSFlfUmVzZXRDaGFubmVscyAoCiAgICAgICAgICAgIGNvbnN0
IExpc3Q8Y2xhc3MgTlJIWV9jbGFzc0NoYW5uZWwgKj4gJmNoYW5uZWxzCgkpOwoKCiAKCgogCgoK
CgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCkxpc3Q8dm9p
ZCAqPiBOUkhZX0xvb2t1cENoYW5TcGVjRm9yUGFyc2xleSAoCgkJCQkJICAgY29uc3QgY2hhciog
b2JqZWN0LAoJCQkJCSAgIEhVX1BhcnNlclN0YXRlJiBzdGF0ZQoJKTsKCkhVX1ZhbHVlIE5SSFlf
RXZhbHVhdGVDaGFuU3BlY0ZvclBhcnNsZXkgKAoJCQkJCSBjb25zdCBjaGFyKiBvYmplY3QsCgkJ
CQkJIGNvbnN0IExpc3Q8IHZvaWQqID4mIGxvb2t1cCwKCQkJCQkgSFVfUGFyc2VyU3RhdGUmIGdl
bmVyaWNTdGF0ZQoJKTsKCmludCBOUkhZX1BhcnNlQ2hhblNwZWNGb3JQYXJzbGV5ICgKCQkJCSBU
d2luZSYgb2JqZWN0CgkpOwoKaW50IE5SSFlfUGFyc2VDaGFuU3BlY0ZvclBhcnNsZXkgKAoJCQkJ
IFR3aW5lJiBvYmplY3QsCgkJCQkgY29uc3QgY2hhciogZnVuY05hbWUsCgkJCQkgaW50IGFyZwoJ
KTsKCgogCgoKIAoKCgoKCgogCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIyAy
MDggImgvbnJoeS5wIgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCiAKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgogCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKdm9pZCBOUkhZX1BsYXlTb3VuZHMgKAoJKTsKCgoKCgoKIAoKCiAK
CgogCgoKIAoKTlJIWV9jbGFzc09iamVjdCAqTlJIWV9HZXRNYW5pcHVsYXRpb25PYmplY3QgKCk7
CgppbnQgTlJIWV9HZXRNYW5pcHVsYXRpb25TcGFjZSAoKTsKCnZvaWQgIE5SSFlfU2V0TWFuaXB1
bGF0aW9uU3BhY2UgKAoJCQkgICAgICAgaW50IHNwYWNlCgkpOwoKdm9pZCAgTlJIWV9TZXRNYW5p
cHVsYXRpb25TZWxlY3Rpb25Nb2RlICgKCQkJCSAgICAgICBaT09MRUFOIG1vZGUKCSk7CgpaT09M
RUFOIE5SSFlfR2V0TWFuaXB1bGF0aW9uU2VsZWN0aW9uTW9kZSAoKTsKClpPT0xFQU4gTlJIWV9H
ZXRNYW5pcHVsYXRpb25FeHRyYU1vZGUgKCk7CgpmbG9hdCBOUkhZX0dldE1hbmlwdWxhdG9ySWNv
bkludGVuc2l0eSAoKTsKCnZvaWQgICBOUkhZX1NldE1hbmlwdWxhdG9ySWNvbkludGVuc2l0eSAo
CgkJCQkgICAgICAgZmxvYXQgaW50ZW5zaXR5CgkpOwoKdm9pZCAgKk5SSFlfR2V0T2JqZWN0TWFu
aXB1bGF0b3IgKCk7CgpCT09MRUFOIE5SSFlfRGVzdHJveU9iamVjdE1hbmlwdWxhdG9yICgpOwoK
dm9pZCAgTlJIWV9TZXRNYW5pcHVsYXRpbmdGbGFnICgKCQkJICAgICAgQk9PTEVBTiBmbGFnCgkp
OwoKQk9PTEVBTiBOUkhZX0dldE1hbmlwdWxhdGluZ0ZsYWcgKCk7CgoKIAoKCiAKCgogCgoKCgoK
CiAKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKIAoKCgoKCgoKCiAK
ClpPT0xFQU4gTlJIWV9TZXRMZWdhbE5ld1RoaW5nICgKICAgIFpPT0xFQU4gICAgIHN0YXR1cywK
ICAgIGNvbnN0IENIQVIgICpuYW1lCgkpOwoKdm9pZCAgTlJIWV9TZXRMZWdhbE5ld1RoaW5nRm9y
UmVhZCAoCiAgICBaT09MRUFOICAgICBzdGF0dXMKCSk7CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgoKCiAKCgogCgpNX01hdHJpeCBTaGFwZV9SZWdpc3RlclBvaW50cyAoCiAgTGlzdCA8TV9W
ZWN0b3I+ICAgICAgIHAzLAogIExpc3QgPE1fVmVjdG9yPiAgICAgICBjMywKICBMaXN0IDxmbG9h
dD4gICAgIHdlaWdodHMsCiAgQk9PTEVBTiAgICAgICAgIHVzZUNoYW5zCgkpOwoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiMgODMzICJoL25yaHkucCIKCgoKCgoKCiAKCgoKCgoKIAoKCgoKCgogCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCkJPT0xFQU4gTlJIWV9Jc0luQ2FsY0hhY2sgKAogICAgdm9pZAoJKTsK
CkJPT0xFQU4gTlJIWV9TZXRJc0luQ2FsY0hhY2sgKAogICAgQk9PTEVBTiBuZXdTdGF0ZQoJKTsK
CgogCgoKCgoKCgoKCgoKCgoKCgogCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCgogCgoKIAoK
CgojIDk0MiAiaC9ucmh5LnAiCgoKCgoKCgogCgoKCgoKdm9pZCAgTlJIWV9EZXNjcmliZURlYnVn
ICgKICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmZGVzYwoJKTsKCgogCgoKIAoK
CiAKCgogCgoKCgoKCiAKCgoKCgoKIAoKCiAKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
IAoKCiAKCgoKCgoKIAoKCiAKCgogCgoKCgoKCiAKCgoKCgoKIAoKCgoKCgogCgoKIAoKCiAKCgog
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKIAoKCgoKCgoKCgoKIAoKCiAKCgoKCgoK
CgogCgoKCgoKCiAKCgoKCgoKIAoKCiAKCgoKCgoKIAoKCgoKCgogCgoKCgoKCgoKCgoKCiAKCgog
CgoKIAoKCiAKCgogCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgogCgoKIAoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKWk9PTEVBTiBOUkhZX1NldENvbW1hbmRDYWNoaW5n
ICgKICAgIFpPT0xFQU4gc3RhdHVzCgkpOwoKCiAKCgoKCgoKIAoKCiAKCgogCgoKIAoKCiAKCgog
CgoKIAoKCgoKCgogCgoKCgoKCiAKCgogCgoKCgoKCiAKCgogCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKIAoKCgoKCgoKCgoKIAoKCiAKCgogCgoKIAoKCgoKCgoKCgoKCgoKCiAKCgogCgoKIAoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgp2b2lkICBOUkhZX0Rlc2NyaWJlU2V0dGluZ3MgKAog
ICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICZkZXNjCgkpOwoKCgoKCgogCgoKIAoK
CiAKCgogCgoKCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKCgoKCgoKCgoKCiAKCgogCgp2b2lkICBO
UkhZX0Rlc2NyaWJlU3RlcmVvICgKICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAm
ZGVzYwoJKTsKCgogCgoKCgoKCgoKCgoKCiAKCgogCgoKIAoKCiAKCgoKCgoKIAoKCiAKCgogCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKIAoKCiAKCgogCgpaT09MRUFOIE5SSFlfR2V0
RGVidWdVbmRvRnVuY1RyYWNraW5nICgKICAgIHZvaWQgCgkpOwoKWk9PTEVBTiBOUkhZX1NldERl
YnVnVW5kb0Z1bmNUcmFja2luZyAoCiAgICBaT09MRUFOIHN0YXR1cwoJKTsKCnZvaWQgIE5SSFlf
VW5kb0luaXQgKAogICAgICAgIHZvaWQgCgkpOwoKCiAKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKQk9PTEVBTiBOUkhZX0NvbGxpc2lvbl9QYWlyICgK
ICAgIE5SSFlfY2xhc3NPYmplY3QgKm9iakEsCiAgICBOUkhZX2NsYXNzT2JqZWN0ICpvYmpCLAog
ICAgaW50IGZyYW1lCgkpOwoKCiAKCkJPT0xFQU4gTlJIWV9VcGRhdGVUaGluZ0Zyb21DaGFuQ0Ig
KAogICAgICAgIGNsYXNzIE5SSFlfY2xhc3NDaGFubmVsICpjaGFuLAogICAgICAgIHZvaWQgKndp
ZAoJKTsKCkJPT0xFQU4gTlJIWV9QdXJnZUN1cnJlbnRDaGFubmVscyAoKTsKCkJPT0xFQU4gTlJI
WV9TZXRDaGFubmVsc1RvQ3VycmVudCAoCiAgICAgICAgY29uc3QgTGlzdCA8Y2xhc3MgTlJIWV9j
bGFzc0NoYW5uZWwgKj4gJmNoYW5MaXN0CgkpOwoKQk9PTEVBTiBOUkhZX0FkZENoYW5uZWxUb0N1
cnJlbnQgKAogICAgICAgIGNsYXNzIE5SSFlfY2xhc3NDaGFubmVsICpjaGFuCgkpOwoKQk9PTEVB
TiBOUkhZX1JlbW92ZUNoYW5uZWxGcm9tQ3VycmVudCAoCiAgICAgICAgY2xhc3MgTlJIWV9jbGFz
c0NoYW5uZWwgKmNoYW4KCSk7CgpCT09MRUFOIE5SSFlfSXNDaGFubmVsQ3VycmVudCAoCiAgICAg
ICAgY2xhc3MgTlJIWV9jbGFzc0NoYW5uZWwgKmNoYW4KCSk7CgpCT09MRUFOIE5SSFlfTWFrZUNo
YW5uZWxUaGVDdXJyZW50ICgKICAgICAgICBjbGFzcyBOUkhZX2NsYXNzQ2hhbm5lbCAqY2hhbgoJ
KTsKCk5SSFlfY2xhc3NDaGFubmVsICpOUkhZX0dldFRoZUN1cnJlbnQgKCk7CgpMaXN0PE5SSFlf
Y2xhc3NDaGFubmVsICo+IE5SSFlfR2V0Q3VycmVudENoYW5uZWxzICgpOwoKTGlzdDxOUkhZX2Ns
YXNzQ2hhbm5lbCAqPiBOUkhZX0dldFVuc29ydGVkQ3VycmVudENoYW5uZWxzICgpOwoKdm9pZCBO
UkhZX0xpc3RDdXJyZW50Q2hhbm5lbHMgKCk7Cgp2b2lkIE5SSFlfQ3JlYXRlQ3VycmVudEVkaXRv
ciAoCiAgICAgICAgaW50IHR5cGUKCSk7Cgp2b2lkIE5SSFlfRGVzdHJveUN1cnJlbnRFZGl0b3Ig
KAogICAgICAgIGludCB0eXBlCgkpOwoKdm9pZCBOUkhZX0RlbGF5ZWRVcGRhdGVDdXJyZW50RWRp
dG9yICgKICAgICAgICB1bnNpZ25lZCBmbGFncwoJKTsKCnZvaWQgTlJIWV9VcGRhdGVDdXJyZW50
RWRpdG9yICgKICAgICAgICB1bnNpZ25lZCBmbGFncwoJKTsKCnZvaWQgTlJIWV9TdWJzY3JpYmVU
b0N1cnJlbnRDaGFubmVsTGlzdCAoCiAgICAgICAgT2JzZXJ2ZXIgKm9ic2VydmVyCgkpOwoKdm9p
ZCBOUkhZX1Vuc3Vic2NyaWJlRnJvbUN1cnJlbnRDaGFubmVsTGlzdCAoCiAgICAgICAgT2JzZXJ2
ZXIgKm9ic2VydmVyCgkpOwoKZmxvYXQgKk5SSFlfR2V0Q3VycmVudENoYW5uZWxDb2xvciAoCiAg
ICAgICAgY2xhc3MgTlJIWV9jbGFzc0NoYW5uZWwgKmNoYW4KCSk7Cgp2b2lkIE5SSFlfRGVzY3Jp
YmVDdXJyZW50Q2hhbm5lbHMgKAogICAgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICZkZXNjCgkp
OwoKdm9pZCBOUkhZX0Rlc2NyaWJlVGhlQ3VycmVudENoYW5uZWwgKAogICAgTlJIWV9DbGFzc0Rl
c2NyaWJlU3RyZWFtICZkZXNjCgkpOwoKdm9pZCBOUkhZX0Rlc2NyaWJlQ29uZFRoZUN1cnJlbnRD
aGFubmVsICgKICAgIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmZGVzYywKICAgIGNsYXNzIE5S
SFlfY2xhc3NDaGFubmVsICpjaGFuCgkpOwoKdm9pZCBOUkhZX0Rlc2NyaWJlQWxsQ3VycmVudEN1
cnZlcyAoCiAgICBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJmRlc2MKCSk7CgoKCgoKCiAKCgog
CgoKCgoKCiAKCgoKCgoKCgogCgoKIAoKCgoKCgoKCiAKCnZvaWQgIE5SSFlfQ2xlYW51cE9wdGlv
blBhcm1zICgKICAgIHZvaWQgCgkpOwoKCgoKCgoKCiAKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCiAK
CmludCBNX0RlY29tcG9zZSAoCiAgICAgICAgY29uc3QgTV9NYXRyaXggJiBtYXQsCiAgICAgICAg
TV9GTE9BVCAqIHNjYWxlLAogICAgICAgIE1fRkxPQVQgKiBzaGVhciwKICAgICAgICBjbGFzcyBN
X1F1YXQgKnF1YXQsCiAgICAgICAgTV9GTE9BVCAqIHRyYW5zLAogICAgICAgIE1fRkxPQVQgKiBw
ZXJzcAoJKTsKCmludCBNX0RlY29tcG9zZSAoCiAgICAgICAgY29uc3QgTV9NYXRyaXggJiBtYXQs
CiAgICAgICAgTV9WZWN0b3IgJnNjYWxlLAogICAgICAgIE1fVmVjdG9yICZzaGVhciwKICAgICAg
ICBjbGFzcyBNX1F1YXQgJnF1YXQsCiAgICAgICAgTV9WZWN0b3IgJnRyYW5zLAogICAgICAgIE1f
VmVjdG9yNCAmcGVyc3AKCSk7CgoKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpMaXN0IDxBU0NJSV9PQkpfQ0hBTj4g
TlJIWV9QYXJzZU9yaWdUb2tlbiAoCiAgICBjb25zdCBDSEFSICAgICAgKm9yaWdUb2tlbgoJKTsK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCkxpc3QgPEFTQ0lJX09CSl9DSEFOPiBOUkhZX1BhcnNlQ2hhbkluZm9JblRva2VuICgKICAg
IGNvbnN0IENIQVIgICp0aGluZ05hbWUsCiAgICBjb25zdCBDSEFSICAqY2hhbk5hbWUKCSk7CgpM
aXN0IDxBU0NJSV9PQkpfQ0hBTj4gTlJIWV9QYXJzZUNoYW5JbmZvSW5Ub2tlbiAoCiAgICBUd2lu
ZSAgICZ0b2tlbgoJKTsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKWk9PTEVB
TiBOUkhZX0lzTmFtZUxlZ2FsICgKICAgIGNvbnN0IENIQVIgICpuYW1lSW5RdWVzdGlvbgoJKTsK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKVHdpbmUg
TlJIWV9QdHNGaW5kRmlsZXNldCAoCiAgICBjb25zdCBUd2luZSAmIGZpbGVzZXQKCSk7CgpUd2lu
ZSBOUkhZX1B0c0NyZWF0ZUZpbGVzZXQgKAogICAgY29uc3QgVHdpbmUgJiBmaWxlc2V0LAogICAg
Y29uc3QgVHdpbmUgJiBkZmx0RmlsZXR5cGUKCSk7CgoKIAoKCiAKCk5SSFlfYnVuY2ggPE5SSFlf
SU5UX0ZSQU5HRT4gKk5SSFlfcGFyc2VJbnRGcmFuZ2VJbnRvQnVuY2ggKAogICAgY29uc3QgQ0hB
UiAgKmFzY2lpCgkpOwoKCgoKCk5SSFlfYnVuY2ggPE5SSFlfUkVBTF9GUkFOR0U+ICpOUkhZX3Bh
cnNlUmVhbEZyYW5nZUludG9CdW5jaCAoCiAgICBjb25zdCBjaGFyKiBhc2NpaQoJKTsKClpPT0xF
QU4gTlJIWV9Jc0ZyYW5nZVdpdGhpblVzZXJUb3RhbEZyYW1lcyAoCiAgICBOUkhZX1JFQUxfRlJB
TkdFICAgIGZyYW5nZQoJKTsKClpPT0xFQU4gTlJIWV9Jc0ZyYW5nZVdpdGhpblVzZXJUb3RhbEZy
YW1lcyAoCiAgICBOUkhZX0lOVF9GUkFOR0UgZnJhbmdlCgkpOwoKWk9PTEVBTiBOUkhZX0lzRnJh
bmdlV2l0aGluVXNlclRvdGFsRnJhbWVzICgKICAgIFJFQUwgICAgICAgICAgICBzdGFydCwKICAg
IFJFQUwgICAgICAgICAgICBlbmQKCSk7CgpaT09MRUFOIE5SSFlfSXNGcmFuZ2VXaXRoaW5Vc2Vy
VG90YWxGcmFtZXMgKAogICAgSU5UICAgICAgICAgICAgIHN0YXJ0LAogICAgSU5UICAgICAgICAg
ICAgIGVuZAoJKTsKCgoKCgoKIAoKVHdpbmUgTlJIWV9Gb3JtYXQgKCAKICAgIGNvbnN0IENIQVIg
ICpmb3JtYXQsCiAgICAuLi4KCSk7Cgp2b2lkICBOUkhZX1ByaW50VmVjdCAoCmNvbnN0IGNoYXIg
Km5hbWUsIApNX1ZlY3RvciB2ZWN0CgkpOwoKdm9pZCAgTlJIWV9QcmludE1hdCAoCmNvbnN0IGNo
YXIgKm5hbWUsIApNX01hdHJpeCBtYXQKCSk7CgpmbG9hdCBOUkhZX0ludGVyc2VjdFJheXMgKApN
X1ZlY3RvciAgICBPMSwKTV9WZWN0b3IgICAgTzIsCk1fVmVjdG9yICByYXkxLApNX1ZlY3RvciAg
cmF5MiwKTV9WZWN0b3IgICAgKnB0CgkpOwoKCiAKCnZvaWQgTlJIWV9Jbml0aWFsaXplV29ybGQg
KCk7CgpJTlQgTlJIWV9HZXRGcHMgKAogICAgdm9pZCAKCSk7CgpJTlQgTlJIWV9TZXRGcHMgKAog
ICAgSU5UICAgICBuZXdfZnBzCgkpOwoKSU5UIE5SSFlfR2V0UGxheUZwcyAoCiAgICB2b2lkIAoJ
KTsKCklOVCBOUkhZX1NldFBsYXlGcHMgKAogICAgSU5UICAgICBuZXdfcGxheWZwcwoJKTsKClJF
QUwgTlJIWV9HZXRGYXN0Rm9yd2FyZCAoCiAgICB2b2lkIAoJKTsKClJFQUwgTlJIWV9TZXRGYXN0
Rm9yd2FyZCAoCiAgICBSRUFMICAgICAgICBuZXdfZmFzdEZvcndhcmQKCSk7CgpSRUFMIE5SSFlf
R2V0T3JpZ2luU2l6ZSAoKTsKClJFQUwgTlJIWV9TZXRPcmlnaW5TaXplICgKICAgIFJFQUwgbmV3
T3JpZ2luU2l6ZQoJKTsKCkJPT0xFQU4gTlJIWV9HZXRPcmlnaW5EaXNwbGF5ICgpOwoKQk9PTEVB
TiBOUkhZX1NldE9yaWdpbkRpc3BsYXkgKAogICAgQk9PTEVBTiBuZXdPcmlnaW5EaXNwbGF5Cgkp
OwoKUkVBTCBOUkhZX0dldEZpcnN0UmVwZWF0ICgpOwoKdm9pZCBOUkhZX1NldEZpcnN0UmVwZWF0
ICgKICAgIFJFQUwgZGVsYXkKCSk7CgpCT09MRUFOIE5SSFlfU2V0U2NuU2VjdGlvbiAoCiAgICBj
b25zdCBMaXN0IDxOUkhZX0lOVF9GUkFOR0UgKj4gJiBmcmFuZ2VQdHJzCgkpOwoKTlJIWV9JTlRf
RlJBTkdFIE5SSFlfR2V0U2VjdGlvbkZyYW5nZSAoCiAgICBmbG9hdCBmcmFtZQoJKTsKCklOVCBO
UkhZX0dldFNvdW5kQWN0aW9uICgKICAgIHZvaWQgCgkpOwoKSU5UIE5SSFlfU2V0U291bmRBY3Rp
b24gKAogICAgSU5UICAgICBzb3VuZF9hY3Rpb24KCSk7CgoKIAoKCgoKCgoKCgoKCiMgMTEwICJo
L25yaHkuaCIgMgoKCiAKCiMgMjggIm5yaHkvTlJIWV9BY2Nlc3MuYyIgMgoKIyAxICJoL05SSFlw
cml2YXRlLnAiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKIAoKCiAKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKdm9pZCAgcHJpbnRWYWxpZEZyYW1l
cyAoCiAgICBjb25zdCBMaXN0IDxSRUFMPiAmIGZyYW1lTGlzdAogKTsKCgoKCgoKCgoKCiAKCgoK
CgoKIAoKSU5UIGRvTm90aGluZ0Z1bmNPZldvcmRzICgKICAgIGNvbnN0IGNoYXIgKiwKICAgIExp
c3Q8Y29uc3QgY2hhciAqPgogKTsKCklOVCBkb05vdGhpbmdJbml0aWFsaXplRnVuYyAoCiAgICBj
b25zdCBjaGFyICoKICk7CgoKCgoKCiAKCgogCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKdm9pZCAgTlJIWV9nbFB1c2hBdHRyaWIgKAogICAgdm9pZCAKICk7Cgp2b2lk
ICBOUkhZX2dsUG9wQXR0cmliICgKICAgIHZvaWQgCiApOwoKdm9pZCAgTlJIWV9nbEVuYWJsZSAo
CiAgICB1bnNpZ25lZCAgICBzdGF0ZQogKTsKCgoKCgp2b2lkICBOUkhZX2dsRGlzYWJsZSAoCiAg
ICB1bnNpZ25lZCAgICBzdGF0ZQogKTsKCgoKCgp2b2lkICBOUkhZX2dsTGlnaHRzT2ZmICgKICAg
IHZvaWQgCiApOwoKdm9pZCAgTlJIWV9nbEluaXRBdHRyaWJTdGFjayAoCiAgICB2b2lkIAogKTsK
CnZvaWQgTlJIWV9nbExpZ2h0c09uICgKICAgIHZvaWQKICk7CgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgogCgoKIAoKCiAKCgoKCgoKCgogCgoKIAoKCiAKCgoKCgppbnQgbnJoeV9w
YXJzZUludG9Xb3JkcyAoCiAgICBjb25zdCBUd2luZSAmaW5wdXRMaW5lLAogICAgTGlzdDxUd2lu
ZT4gJndvcmRzCiApOwoKCiAKCgogCgoKCgoKCgoKCgoKCgoKIAoKCiAKCgogCgoKIAoKCiAKCgog
Cgpjb25zdCBMaXN0PE5SSFlfY2xhc3NUaGluZyo+ICZOUkhZX2dldFBpY2tlZE9iamVjdHMgKCk7
CgoKIAoKCgoKCgoKCgoKCiMgMjkgIm5yaHkvTlJIWV9BY2Nlc3MuYyIgMgoKIyAxICJoL25yaHlf
d29ybGQuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgwKIAoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZysr
LTIvc3RyaW5nIiAxIDMKIAoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZysrLTIvc3RkL2Jhc3RyaW5n
LmgiIDEgMwogCiAKCiAKIAogCiAKIAoKIAogCiAKIAoKIAogCiAKCiAKIAogCiAKIAoKIAogCgoK
CgoKI3ByYWdtYSBpbnRlcmZhY2UKCgojIDEgIi91c3IvaW5jbHVkZS9nKystMi9jc3RkZGVmIiAx
IDMKIAogCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0y
LjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0MiAiL3Vzci9saWIvZ2NjLWxpYi9hbHBo
YS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCiMgNiAiL3Vz
ci9pbmNsdWRlL2crKy0yL2NzdGRkZWYiIDIgMwoKCiMgMzUgIi91c3IvaW5jbHVkZS9nKystMi9z
dGQvYmFzdHJpbmcuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9nKystMi9zdGQvc3RyYWl0cy5o
IiAxIDMKIAogCgogCiAKIAogCiAKCiAKIAogCiAKCiAKIAogCgogCiAKIAogCiAKCiAKIAoKCgoK
CiAKI3ByYWdtYSBpbnRlcmZhY2UgInN0ZC9zdHJhaXRzLmgiCgoKCgpleHRlcm4gIkMrKyIgewp0
ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+CnN0cnVjdCBzdHJpbmdfY2hhcl90cmFpdHMgewogIHR5cGVk
ZWYgY2hhclQgY2hhcl90eXBlOyAgCgogICAKCiAgc3RhdGljIHZvaWQgYXNzaWduIChjaGFyX3R5
cGUmIGMxLCBjb25zdCBjaGFyX3R5cGUmIGMyKQogICAgeyBjMSA9IGMyOyB9CiAgc3RhdGljIGJv
b2wgZXEgKGNvbnN0IGNoYXJfdHlwZSYgYzEsIGNvbnN0IGNoYXJfdHlwZSYgYzIpCiAgICB7IHJl
dHVybiAoYzEgPT0gYzIpOyB9CiAgc3RhdGljIGJvb2wgbmUgKGNvbnN0IGNoYXJfdHlwZSYgYzEs
IGNvbnN0IGNoYXJfdHlwZSYgYzIpCiAgICB7IHJldHVybiAhKGMxID09IGMyKTsgfQogIHN0YXRp
YyBib29sIGx0IChjb25zdCBjaGFyX3R5cGUmIGMxLCBjb25zdCBjaGFyX3R5cGUmIGMyKQogICAg
eyByZXR1cm4gKGMxIDwgYzIpOyB9CiAgc3RhdGljIGNoYXJfdHlwZSBlb3MgKCkgeyByZXR1cm4g
Y2hhcl90eXBlKCk7IH0gIAogIHN0YXRpYyBib29sIGlzX2RlbChjaGFyX3R5cGUgYSkgeyByZXR1
cm4gMDsgfQogICAKICAKICAgCgogIHN0YXRpYyBpbnQgY29tcGFyZSAoY29uc3QgY2hhcl90eXBl
KiBzMSwgY29uc3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4pCiAgICB7CiAgICAgIHNpemVfdCBp
OwogICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKQoJaWYgKG5lIChzMVtpXSwgczJbaV0pKQoJ
ICByZXR1cm4gbHQgKHMxW2ldLCBzMltpXSkgPyAtMSA6IDE7CgogICAgICByZXR1cm4gMDsKICAg
IH0KICAgIAogIHN0YXRpYyBzaXplX3QgbGVuZ3RoIChjb25zdCBjaGFyX3R5cGUqIHMpCiAgICB7
CiAgICAgIHNpemVfdCBsID0gMDsKICAgICAgd2hpbGUgKG5lICgqcysrLCBlb3MgKCkpKQoJKyts
OwogICAgICByZXR1cm4gbDsKICAgIH0KCiAgc3RhdGljIGNoYXJfdHlwZSogY29weSAoY2hhcl90
eXBlKiBzMSwgY29uc3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4pCiAgICB7CiAgICAgIGZvciAo
OyBuLS07ICkKCWFzc2lnbiAoczFbbl0sIHMyW25dKTsKICAgICAgcmV0dXJuIHMxOwogICAgfQoK
ICBzdGF0aWMgY2hhcl90eXBlKiBtb3ZlIChjaGFyX3R5cGUqIHMxLCBjb25zdCBjaGFyX3R5cGUq
IHMyLCBzaXplX3QgbikKICAgIHsKICAgICAgY2hhcl90eXBlIGFbbl07CiAgICAgIHNpemVfdCBp
OwogICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKQoJYXNzaWduIChhW2ldLCBzMltpXSk7CiAg
ICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpCglhc3NpZ24gKHMxW2ldLCBhW2ldKTsKICAgICAg
cmV0dXJuIHMxOwogICAgfQoKICBzdGF0aWMgY2hhcl90eXBlKiBzZXQgKGNoYXJfdHlwZSogczEs
IGNvbnN0IGNoYXJfdHlwZSYgYywgc2l6ZV90IG4pCiAgICB7CiAgICAgIGZvciAoOyBuLS07ICkK
CWFzc2lnbiAoczFbbl0sIGMpOwogICAgICByZXR1cm4gczE7CiAgICB9Cn07CgpjbGFzcyBpc3Ry
ZWFtOwpjbGFzcyBvc3RyZWFtOwojIDEgIi91c3IvaW5jbHVkZS9nKystMi9jY3R5cGUiIDEgMwog
CiAKCgoKCgojIDEwNSAiL3Vzci9pbmNsdWRlL2crKy0yL3N0ZC9zdHJhaXRzLmgiIDIgMwoKIyAx
ICIvdXNyL2luY2x1ZGUvZysrLTIvY3N0cmluZyIgMSAzCiAKIAoKCgoKCgojIDk0ICIvdXNyL2lu
Y2x1ZGUvZysrLTIvY3N0cmluZyIgMwoKCgojIDEwNiAiL3Vzci9pbmNsdWRlL2crKy0yL3N0ZC9z
dHJhaXRzLmgiIDIgMwoKCnN0cnVjdCBzdHJpbmdfY2hhcl90cmFpdHMgPGNoYXI+IHsKICB0eXBl
ZGVmIGNoYXIgY2hhcl90eXBlOwoKICBzdGF0aWMgdm9pZCBhc3NpZ24gKGNoYXJfdHlwZSYgYzEs
IGNvbnN0IGNoYXJfdHlwZSYgYzIpCiAgICB7IGMxID0gYzI7IH0KICBzdGF0aWMgYm9vbCBlcSAo
Y29uc3QgY2hhcl90eXBlICYgYzEsIGNvbnN0IGNoYXJfdHlwZSYgYzIpCiAgICB7IHJldHVybiAo
YzEgPT0gYzIpOyB9CiAgc3RhdGljIGJvb2wgbmUgKGNvbnN0IGNoYXJfdHlwZSYgYzEsIGNvbnN0
IGNoYXJfdHlwZSYgYzIpCiAgICB7IHJldHVybiAoYzEgIT0gYzIpOyB9CiAgc3RhdGljIGJvb2wg
bHQgKGNvbnN0IGNoYXJfdHlwZSYgYzEsIGNvbnN0IGNoYXJfdHlwZSYgYzIpCiAgICB7IHJldHVy
biAoYzEgPCBjMik7IH0KICBzdGF0aWMgY2hhcl90eXBlIGVvcyAoKSB7IHJldHVybiAwOyB9CiAg
c3RhdGljIGJvb2wgaXNfZGVsKGNoYXJfdHlwZSBhKSB7IHJldHVybiAoX19jdHlwZV9iWyhpbnQp
ICggKCBhICkgKV0gJiAodW5zaWduZWQgc2hvcnQgaW50KSAgIF9JU3NwYWNlICkgIDsgfQoKICBz
dGF0aWMgaW50IGNvbXBhcmUgKGNvbnN0IGNoYXJfdHlwZSogczEsIGNvbnN0IGNoYXJfdHlwZSog
czIsIHNpemVfdCBuKQogICAgeyByZXR1cm4gbWVtY21wIChzMSwgczIsIG4pOyB9CiAgc3RhdGlj
IHNpemVfdCBsZW5ndGggKGNvbnN0IGNoYXJfdHlwZSogcykKICAgIHsgcmV0dXJuIHN0cmxlbiAo
cyk7IH0KICBzdGF0aWMgY2hhcl90eXBlKiBjb3B5IChjaGFyX3R5cGUqIHMxLCBjb25zdCBjaGFy
X3R5cGUqIHMyLCBzaXplX3QgbikKICAgIHsgcmV0dXJuIChjaGFyX3R5cGUqKSBtZW1jcHkgKHMx
LCBzMiwgbik7IH0KICBzdGF0aWMgY2hhcl90eXBlKiBtb3ZlIChjaGFyX3R5cGUqIHMxLCBjb25z
dCBjaGFyX3R5cGUqIHMyLCBzaXplX3QgbikKICAgIHsgcmV0dXJuIChjaGFyX3R5cGUqKSBtZW1t
b3ZlIChzMSwgczIsIG4pOyB9CiAgc3RhdGljIGNoYXJfdHlwZSogc2V0IChjaGFyX3R5cGUqIHMx
LCBjb25zdCBjaGFyX3R5cGUmIGMsIHNpemVfdCBuKQogICAgeyByZXR1cm4gKGNoYXJfdHlwZSop
IG1lbXNldCAoczEsIGMsIG4pOyB9Cn07CgojIDE1OSAiL3Vzci9pbmNsdWRlL2crKy0yL3N0ZC9z
dHJhaXRzLmgiIDMKCn0gIAoKIyAzNiAiL3Vzci9pbmNsdWRlL2crKy0yL3N0ZC9iYXN0cmluZy5o
IiAyIDMKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2crKy0yL2FsbG9jLmgiIDEgMwogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgojIDM4ICIvdXNyL2luY2x1ZGUvZysrLTIvYWxsb2MuaCIgMwoKCgoKIAog
CiAKIyAzOSAiL3Vzci9pbmNsdWRlL2crKy0yL3N0ZC9iYXN0cmluZy5oIiAyIDMKCgpleHRlcm4g
IkMrKyIgewpjbGFzcyBpc3RyZWFtOyBjbGFzcyBvc3RyZWFtOwoKIyAxICIvdXNyL2luY2x1ZGUv
ZysrLTIvaXRlcmF0b3IiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUv
c3RkZGVmLmgiIDEgMwojIDM0MiAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgv
ZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCiMgMzIgIi91c3IvaW5jbHVkZS9nKyst
Mi9pdGVyYXRvciIgMiAzCgoKCgoKCiAKIAogCiMgNDQgIi91c3IvaW5jbHVkZS9nKystMi9zdGQv
YmFzdHJpbmcuaCIgMiAzCgoKCgpleHRlcm4gdm9pZCBfX291dF9vZl9yYW5nZSAoY29uc3QgY2hh
ciAqKTsKZXh0ZXJuIHZvaWQgX19sZW5ndGhfZXJyb3IgKGNvbnN0IGNoYXIgKik7CgoKCgoKCgoK
CgoKCgoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMgPSBzdHJpbmdfY2hhcl90
cmFpdHM8Y2hhclQ+LAoJICBjbGFzcyBBbGxvY2F0b3IgPSBhbGxvYyA+CmNsYXNzIGJhc2ljX3N0
cmluZwp7CnByaXZhdGU6CiAgc3RydWN0IFJlcCB7CiAgICBzaXplX3QgbGVuLCByZXMsIHJlZjsK
ICAgIGJvb2wgc2VsZmlzaDsKCiAgICBjaGFyVCogZGF0YSAoKSB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXJUICo+KHRoaXMgKyAxKTsgfQogICAgY2hhclQmIG9wZXJhdG9yW10gKHNpemVf
dCBzKSB7IHJldHVybiBkYXRhICgpIFtzXTsgfQogICAgY2hhclQqIGdyYWIgKCkgeyBpZiAoc2Vs
ZmlzaCkgcmV0dXJuIGNsb25lICgpOyArK3JlZjsgcmV0dXJuIGRhdGEgKCk7IH0KICAgIHZvaWQg
cmVsZWFzZSAoKSB7IGlmICgtLXJlZiA9PSAwKSBkZWxldGUgdGhpczsgfQoKICAgIGlubGluZSBz
dGF0aWMgdm9pZCAqIG9wZXJhdG9yIG5ldyAoc2l6ZV90LCBzaXplX3QpOwogICAgaW5saW5lIHN0
YXRpYyB2b2lkIG9wZXJhdG9yIGRlbGV0ZSAodm9pZCAqKTsKICAgIGlubGluZSBzdGF0aWMgUmVw
KiBjcmVhdGUgKHNpemVfdCk7CiAgICBjaGFyVCogY2xvbmUgKCk7CgogICAgaW5saW5lIHZvaWQg
Y29weSAoc2l6ZV90LCBjb25zdCBjaGFyVCAqLCBzaXplX3QpOwogICAgaW5saW5lIHZvaWQgbW92
ZSAoc2l6ZV90LCBjb25zdCBjaGFyVCAqLCBzaXplX3QpOwogICAgaW5saW5lIHZvaWQgc2V0ICAo
c2l6ZV90LCBjb25zdCBjaGFyVCwgICBzaXplX3QpOwoKICAgIGlubGluZSBzdGF0aWMgYm9vbCBl
eGNlc3Nfc2xvcCAoc2l6ZV90LCBzaXplX3QpOwogICAgaW5saW5lIHN0YXRpYyBzaXplX3QgZnJv
Yl9zaXplIChzaXplX3QpOwoKICBwcml2YXRlOgogICAgUmVwICZvcGVyYXRvcj0gKGNvbnN0IFJl
cCAmKTsKICB9OwoKcHVibGljOgogCiAgdHlwZWRlZgkgICB0cmFpdHMJCXRyYWl0c190eXBlOwog
IHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX3R5cGUJdmFsdWVfdHlwZTsKICB0eXBlZGVm
CSAgIEFsbG9jYXRvcgkJYWxsb2NhdG9yX3R5cGU7CgogIHR5cGVkZWYgc2l6ZV90IHNpemVfdHlw
ZTsKICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBjaGFyVCYg
cmVmZXJlbmNlOwogIHR5cGVkZWYgY29uc3QgY2hhclQmIGNvbnN0X3JlZmVyZW5jZTsKICB0eXBl
ZGVmIGNoYXJUKiBwb2ludGVyOwogIHR5cGVkZWYgY29uc3QgY2hhclQqIGNvbnN0X3BvaW50ZXI7
CiAgdHlwZWRlZiBwb2ludGVyIGl0ZXJhdG9yOwogIHR5cGVkZWYgY29uc3RfcG9pbnRlciBjb25z
dF9pdGVyYXRvcjsKICB0eXBlZGVmIDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4gcmV2ZXJz
ZV9pdGVyYXRvcjsKICB0eXBlZGVmIDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj4g
Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKICBzdGF0aWMgY29uc3Qgc2l6ZV90eXBlIG5wb3MgPSBz
dGF0aWNfY2FzdDxzaXplX3R5cGU+KC0xKTsKCnByaXZhdGU6CiAgUmVwICpyZXAgKCkgY29uc3Qg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZXAgKj4oZGF0KSAtIDE7IH0KICB2b2lkIHJlcHVw
IChSZXAgKnApIHsgcmVwICgpLT5yZWxlYXNlICgpOyBkYXQgPSBwLT5kYXRhICgpOyB9CgpwdWJs
aWM6CiAgY29uc3QgY2hhclQqIGRhdGEgKCkgY29uc3QKICAgIHsgcmV0dXJuIHJlcCAoKS0+ZGF0
YSgpOyB9CiAgc2l6ZV90eXBlIGxlbmd0aCAoKSBjb25zdAogICAgeyByZXR1cm4gcmVwICgpLT5s
ZW47IH0KICBzaXplX3R5cGUgc2l6ZSAoKSBjb25zdAogICAgeyByZXR1cm4gcmVwICgpLT5sZW47
IH0KICBzaXplX3R5cGUgY2FwYWNpdHkgKCkgY29uc3QKICAgIHsgcmV0dXJuIHJlcCAoKS0+cmVz
OyB9CiAgc2l6ZV90eXBlIG1heF9zaXplICgpIGNvbnN0CiAgICB7IHJldHVybiAobnBvcyAtIDEp
L3NpemVvZiAoY2hhclQpOyB9CQkgCiAgYm9vbCBlbXB0eSAoKSBjb25zdAogICAgeyByZXR1cm4g
c2l6ZSAoKSA9PSAwOyB9CgogCiAgYmFzaWNfc3RyaW5nJiBvcGVyYXRvcj0gKGNvbnN0IGJhc2lj
X3N0cmluZyYgc3RyKQogICAgewogICAgICBpZiAoJnN0ciAhPSB0aGlzKSB7IHJlcCAoKS0+cmVs
ZWFzZSAoKTsgZGF0ID0gc3RyLnJlcCAoKS0+Z3JhYiAoKTsgfQogICAgICByZXR1cm4gKnRoaXM7
CiAgICB9CgogIGV4cGxpY2l0IGJhc2ljX3N0cmluZyAoKTogZGF0IChuaWxSZXAuZ3JhYiAoKSkg
eyB9CiAgYmFzaWNfc3RyaW5nIChjb25zdCBiYXNpY19zdHJpbmcmIHN0cik6IGRhdCAoc3RyLnJl
cCAoKS0+Z3JhYiAoKSkgeyB9CiAgYmFzaWNfc3RyaW5nIChjb25zdCBiYXNpY19zdHJpbmcmIHN0
ciwgc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIG4gPSBucG9zKQogICAgOiBkYXQgKG5pbFJlcC5n
cmFiICgpKSB7IGFzc2lnbiAoc3RyLCBwb3MsIG4pOyB9CiAgYmFzaWNfc3RyaW5nIChjb25zdCBj
aGFyVCogcywgc2l6ZV90eXBlIG4pCiAgICA6IGRhdCAobmlsUmVwLmdyYWIgKCkpIHsgYXNzaWdu
IChzLCBuKTsgfQogIGJhc2ljX3N0cmluZyAoY29uc3QgY2hhclQqIHMpCiAgICA6IGRhdCAobmls
UmVwLmdyYWIgKCkpIHsgYXNzaWduIChzKTsgfQogIGJhc2ljX3N0cmluZyAoc2l6ZV90eXBlIG4s
IGNoYXJUIGMpCiAgICA6IGRhdCAobmlsUmVwLmdyYWIgKCkpIHsgYXNzaWduIChuLCBjKTsgfQoK
ICB0ZW1wbGF0ZTxjbGFzcyBJbnB1dEl0ZXJhdG9yPgogICAgYmFzaWNfc3RyaW5nKElucHV0SXRl
cmF0b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kKQoKCgogICAgOiBkYXQgKG5pbFJlcC5ncmFi
ICgpKSB7IGFzc2lnbiAoYmVnaW4sIGVuZCk7IH0KCiAgfmJhc2ljX3N0cmluZyAoKQogICAgeyBy
ZXAgKCktPnJlbGVhc2UgKCk7IH0KCiAgdm9pZCBzd2FwIChiYXNpY19zdHJpbmcgJnMpIHsgY2hh
clQgKmQgPSBkYXQ7IGRhdCA9IHMuZGF0OyBzLmRhdCA9IGQ7IH0KCiAgYmFzaWNfc3RyaW5nJiBh
cHBlbmQgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUgcG9zID0gMCwKCQkJc2l6
ZV90eXBlIG4gPSBucG9zKQogICAgeyByZXR1cm4gcmVwbGFjZSAobGVuZ3RoICgpLCAwLCBzdHIs
IHBvcywgbik7IH0KICBiYXNpY19zdHJpbmcmIGFwcGVuZCAoY29uc3QgY2hhclQqIHMsIHNpemVf
dHlwZSBuKQogICAgeyByZXR1cm4gcmVwbGFjZSAobGVuZ3RoICgpLCAwLCBzLCBuKTsgfQogIGJh
c2ljX3N0cmluZyYgYXBwZW5kIChjb25zdCBjaGFyVCogcykKICAgIHsgcmV0dXJuIGFwcGVuZCAo
cywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIGJhc2ljX3N0cmluZyYgYXBwZW5kIChzaXplX3R5
cGUgbiwgY2hhclQgYykKICAgIHsgcmV0dXJuIHJlcGxhY2UgKGxlbmd0aCAoKSwgMCwgbiwgYyk7
IH0KCiAgdGVtcGxhdGU8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KICAgIGJhc2ljX3N0cmluZyYgYXBw
ZW5kKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCkKCgoKICAgIHsgcmV0
dXJuIHJlcGxhY2UgKGllbmQgKCksIGllbmQgKCksIGZpcnN0LCBsYXN0KTsgfQoKICBiYXNpY19z
dHJpbmcmIGFzc2lnbiAoY29uc3QgYmFzaWNfc3RyaW5nJiBzdHIsIHNpemVfdHlwZSBwb3MgPSAw
LAoJCQlzaXplX3R5cGUgbiA9IG5wb3MpCiAgICB7IHJldHVybiByZXBsYWNlICgwLCBucG9zLCBz
dHIsIHBvcywgbik7IH0KICBiYXNpY19zdHJpbmcmIGFzc2lnbiAoY29uc3QgY2hhclQqIHMsIHNp
emVfdHlwZSBuKQogICAgeyByZXR1cm4gcmVwbGFjZSAoMCwgbnBvcywgcywgbik7IH0KICBiYXNp
Y19zdHJpbmcmIGFzc2lnbiAoY29uc3QgY2hhclQqIHMpCiAgICB7IHJldHVybiBhc3NpZ24gKHMs
IHRyYWl0czo6bGVuZ3RoIChzKSk7IH0KICBiYXNpY19zdHJpbmcmIGFzc2lnbiAoc2l6ZV90eXBl
IG4sIGNoYXJUIGMpCiAgICB7IHJldHVybiByZXBsYWNlICgwLCBucG9zLCBuLCBjKTsgfQoKICB0
ZW1wbGF0ZTxjbGFzcyBJbnB1dEl0ZXJhdG9yPgogICAgYmFzaWNfc3RyaW5nJiBhc3NpZ24oSW5w
dXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KQoKCgogICAgeyByZXR1cm4gcmVw
bGFjZSAoaWJlZ2luICgpLCBpZW5kICgpLCBmaXJzdCwgbGFzdCk7IH0KCiAgYmFzaWNfc3RyaW5n
JiBvcGVyYXRvcj0gKGNvbnN0IGNoYXJUKiBzKQogICAgeyByZXR1cm4gYXNzaWduIChzKTsgfQog
IGJhc2ljX3N0cmluZyYgb3BlcmF0b3I9IChjaGFyVCBjKQogICAgeyByZXR1cm4gYXNzaWduICgx
LCBjKTsgfQoKICBiYXNpY19zdHJpbmcmIG9wZXJhdG9yKz0gKGNvbnN0IGJhc2ljX3N0cmluZyYg
cmhzKQogICAgeyByZXR1cm4gYXBwZW5kIChyaHMpOyB9CiAgYmFzaWNfc3RyaW5nJiBvcGVyYXRv
cis9IChjb25zdCBjaGFyVCogcykKICAgIHsgcmV0dXJuIGFwcGVuZCAocyk7IH0KICBiYXNpY19z
dHJpbmcmIG9wZXJhdG9yKz0gKGNoYXJUIGMpCiAgICB7IHJldHVybiBhcHBlbmQgKDEsIGMpOyB9
CgogIGJhc2ljX3N0cmluZyYgaW5zZXJ0IChzaXplX3R5cGUgcG9zMSwgY29uc3QgYmFzaWNfc3Ry
aW5nJiBzdHIsCgkJCXNpemVfdHlwZSBwb3MyID0gMCwgc2l6ZV90eXBlIG4gPSBucG9zKQogICAg
eyByZXR1cm4gcmVwbGFjZSAocG9zMSwgMCwgc3RyLCBwb3MyLCBuKTsgfQogIGJhc2ljX3N0cmlu
ZyYgaW5zZXJ0IChzaXplX3R5cGUgcG9zLCBjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIG4pCiAg
ICB7IHJldHVybiByZXBsYWNlIChwb3MsIDAsIHMsIG4pOyB9CiAgYmFzaWNfc3RyaW5nJiBpbnNl
cnQgKHNpemVfdHlwZSBwb3MsIGNvbnN0IGNoYXJUKiBzKQogICAgeyByZXR1cm4gaW5zZXJ0IChw
b3MsIHMsIHRyYWl0czo6bGVuZ3RoIChzKSk7IH0KICBiYXNpY19zdHJpbmcmIGluc2VydCAoc2l6
ZV90eXBlIHBvcywgc2l6ZV90eXBlIG4sIGNoYXJUIGMpCiAgICB7IHJldHVybiByZXBsYWNlIChw
b3MsIDAsIG4sIGMpOyB9CiAgaXRlcmF0b3IgaW5zZXJ0KGl0ZXJhdG9yIHAsIGNoYXJUIGMpCiAg
ICB7IHNpemVfdHlwZSBfX28gPSBwIC0gaWJlZ2luICgpOwogICAgICBpbnNlcnQgKHAgLSBpYmVn
aW4gKCksIDEsIGMpOyBzZWxmaXNoICgpOwogICAgICByZXR1cm4gaWJlZ2luICgpICsgX19vOyB9
CiAgaXRlcmF0b3IgaW5zZXJ0KGl0ZXJhdG9yIHAsIHNpemVfdHlwZSBuLCBjaGFyVCBjKQogICAg
eyBzaXplX3R5cGUgX19vID0gcCAtIGliZWdpbiAoKTsKICAgICAgaW5zZXJ0IChwIC0gaWJlZ2lu
ICgpLCBuLCBjKTsgc2VsZmlzaCAoKTsKICAgICAgcmV0dXJuIGliZWdpbiAoKSArIF9fbzsgfQoK
ICB0ZW1wbGF0ZTxjbGFzcyBJbnB1dEl0ZXJhdG9yPgogICAgdm9pZCBpbnNlcnQoaXRlcmF0b3Ig
cCwgSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KQoKCgogICAgeyByZXBs
YWNlIChwLCBwLCBmaXJzdCwgbGFzdCk7IH0KCiAgYmFzaWNfc3RyaW5nJiBlcmFzZSAoc2l6ZV90
eXBlIHBvcyA9IDAsIHNpemVfdHlwZSBuID0gbnBvcykKICAgIHsgcmV0dXJuIHJlcGxhY2UgKHBv
cywgbiwgKHNpemVfdHlwZSkwLCAoY2hhclQpMCk7IH0KICBpdGVyYXRvciBlcmFzZShpdGVyYXRv
ciBwKQogICAgeyBzaXplX3R5cGUgX19vID0gcCAtIGJlZ2luKCk7CiAgICAgIHJlcGxhY2UgKF9f
bywgMSwgKHNpemVfdHlwZSkwLCAoY2hhclQpMCk7IHNlbGZpc2ggKCk7CiAgICAgIHJldHVybiBp
YmVnaW4oKSArIF9fbzsgfQogIGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9yIGYsIGl0ZXJhdG9yIGwp
CiAgICB7IHNpemVfdHlwZSBfX28gPSBmIC0gaWJlZ2luKCk7CiAgICAgIHJlcGxhY2UgKF9fbywg
bC1mLCAoc2l6ZV90eXBlKTAsIChjaGFyVCkwKTtzZWxmaXNoICgpOwogICAgICByZXR1cm4gaWJl
Z2luKCkgKyBfX287IH0KCiAgYmFzaWNfc3RyaW5nJiByZXBsYWNlIChzaXplX3R5cGUgcG9zMSwg
c2l6ZV90eXBlIG4xLCBjb25zdCBiYXNpY19zdHJpbmcmIHN0ciwKCQkJIHNpemVfdHlwZSBwb3My
ID0gMCwgc2l6ZV90eXBlIG4yID0gbnBvcyk7CiAgYmFzaWNfc3RyaW5nJiByZXBsYWNlIChzaXpl
X3R5cGUgcG9zLCBzaXplX3R5cGUgbjEsIGNvbnN0IGNoYXJUKiBzLAoJCQkgc2l6ZV90eXBlIG4y
KTsKICBiYXNpY19zdHJpbmcmIHJlcGxhY2UgKHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuMSwg
Y29uc3QgY2hhclQqIHMpCiAgICB7IHJldHVybiByZXBsYWNlIChwb3MsIG4xLCBzLCB0cmFpdHM6
Omxlbmd0aCAocykpOyB9CiAgYmFzaWNfc3RyaW5nJiByZXBsYWNlIChzaXplX3R5cGUgcG9zLCBz
aXplX3R5cGUgbjEsIHNpemVfdHlwZSBuMiwgY2hhclQgYyk7CiAgYmFzaWNfc3RyaW5nJiByZXBs
YWNlIChzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbiwgY2hhclQgYykKICAgIHsgcmV0dXJuIHJl
cGxhY2UgKHBvcywgbiwgMSwgYyk7IH0KICBiYXNpY19zdHJpbmcmIHJlcGxhY2UgKGl0ZXJhdG9y
IGkxLCBpdGVyYXRvciBpMiwgY29uc3QgYmFzaWNfc3RyaW5nJiBzdHIpCiAgICB7IHJldHVybiBy
ZXBsYWNlIChpMSAtIGliZWdpbiAoKSwgaTIgLSBpMSwgc3RyKTsgfQogIGJhc2ljX3N0cmluZyYg
cmVwbGFjZSAoaXRlcmF0b3IgaTEsIGl0ZXJhdG9yIGkyLCBjb25zdCBjaGFyVCogcywgc2l6ZV90
eXBlIG4pCiAgICB7IHJldHVybiByZXBsYWNlIChpMSAtIGliZWdpbiAoKSwgaTIgLSBpMSwgcywg
bik7IH0KICBiYXNpY19zdHJpbmcmIHJlcGxhY2UgKGl0ZXJhdG9yIGkxLCBpdGVyYXRvciBpMiwg
Y29uc3QgY2hhclQqIHMpCiAgICB7IHJldHVybiByZXBsYWNlIChpMSAtIGliZWdpbiAoKSwgaTIg
LSBpMSwgcyk7IH0KICBiYXNpY19zdHJpbmcmIHJlcGxhY2UgKGl0ZXJhdG9yIGkxLCBpdGVyYXRv
ciBpMiwgc2l6ZV90eXBlIG4sIGNoYXJUIGMpCiAgICB7IHJldHVybiByZXBsYWNlIChpMSAtIGli
ZWdpbiAoKSwgaTIgLSBpMSwgbiwgYyk7IH0KCiAgdGVtcGxhdGU8Y2xhc3MgSW5wdXRJdGVyYXRv
cj4KICAgIGJhc2ljX3N0cmluZyYgcmVwbGFjZShpdGVyYXRvciBpMSwgaXRlcmF0b3IgaTIsCgkJ
CSAgSW5wdXRJdGVyYXRvciBqMSwgSW5wdXRJdGVyYXRvciBqMik7CgoKCgoKcHJpdmF0ZToKICBz
dGF0aWMgY2hhclQgZW9zICgpIHsgcmV0dXJuIHRyYWl0czo6ZW9zICgpOyB9CiAgdm9pZCB1bmlx
dWUgKCkgeyBpZiAocmVwICgpLT5yZWYgPiAxKSBhbGxvYyAobGVuZ3RoICgpLCB0cnVlKTsgfQog
IHZvaWQgc2VsZmlzaCAoKSB7IHVuaXF1ZSAoKTsgcmVwICgpLT5zZWxmaXNoID0gdHJ1ZTsgfQoK
cHVibGljOgogIGNoYXJUIG9wZXJhdG9yW10gKHNpemVfdHlwZSBwb3MpIGNvbnN0CiAgICB7CiAg
ICAgIGlmIChwb3MgPT0gbGVuZ3RoICgpKQoJcmV0dXJuIGVvcyAoKTsKICAgICAgcmV0dXJuIGRh
dGEgKClbcG9zXTsKICAgIH0KCiAgcmVmZXJlbmNlIG9wZXJhdG9yW10gKHNpemVfdHlwZSBwb3Mp
CiAgICB7IHNlbGZpc2ggKCk7IHJldHVybiAoKnJlcCAoKSlbcG9zXTsgfQoKICByZWZlcmVuY2Ug
YXQgKHNpemVfdHlwZSBwb3MpCiAgICB7CiAgICAgIGRvIHsgaWYgKCBwb3MgPj0gbGVuZ3RoICgp
ICkgX19vdXRfb2ZfcmFuZ2UgKCJwb3MgPj0gbGVuZ3RoICgpIik7IH0gd2hpbGUgKDApIDsKICAg
ICAgcmV0dXJuICgqdGhpcylbcG9zXTsKICAgIH0KICBjb25zdF9yZWZlcmVuY2UgYXQgKHNpemVf
dHlwZSBwb3MpIGNvbnN0CiAgICB7CiAgICAgIGRvIHsgaWYgKCBwb3MgPj0gbGVuZ3RoICgpICkg
X19vdXRfb2ZfcmFuZ2UgKCJwb3MgPj0gbGVuZ3RoICgpIik7IH0gd2hpbGUgKDApIDsKICAgICAg
cmV0dXJuIGRhdGEgKClbcG9zXTsKICAgIH0KCnByaXZhdGU6CiAgdm9pZCB0ZXJtaW5hdGUgKCkg
Y29uc3QKICAgIHsgdHJhaXRzOjphc3NpZ24gKCgqcmVwICgpKVtsZW5ndGggKCldLCBlb3MgKCkp
OyB9CgpwdWJsaWM6CiAgY29uc3QgY2hhclQqIGNfc3RyICgpIGNvbnN0CiAgICB7IGlmIChsZW5n
dGggKCkgPT0gMCkgcmV0dXJuICIiOyB0ZXJtaW5hdGUgKCk7IHJldHVybiBkYXRhICgpOyB9CiAg
dm9pZCByZXNpemUgKHNpemVfdHlwZSBuLCBjaGFyVCBjKTsKICB2b2lkIHJlc2l6ZSAoc2l6ZV90
eXBlIG4pCiAgICB7IHJlc2l6ZSAobiwgZW9zICgpKTsgfQogIHZvaWQgcmVzZXJ2ZSAoc2l6ZV90
eXBlKSB7IH0KCiAgc2l6ZV90eXBlIGNvcHkgKGNoYXJUKiBzLCBzaXplX3R5cGUgbiwgc2l6ZV90
eXBlIHBvcyA9IDApIGNvbnN0OwoKICBzaXplX3R5cGUgZmluZCAoY29uc3QgYmFzaWNfc3RyaW5n
JiBzdHIsIHNpemVfdHlwZSBwb3MgPSAwKSBjb25zdAogICAgeyByZXR1cm4gZmluZCAoc3RyLmRh
dGEoKSwgcG9zLCBzdHIubGVuZ3RoKCkpOyB9CiAgc2l6ZV90eXBlIGZpbmQgKGNvbnN0IGNoYXJU
KiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3Q7CiAgc2l6ZV90eXBlIGZpbmQg
KGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3QKICAgIHsgcmV0dXJuIGZp
bmQgKHMsIHBvcywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIHNpemVfdHlwZSBmaW5kIChjaGFy
VCBjLCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3Q7CgogIHNpemVfdHlwZSByZmluZCAoY29uc3Qg
YmFzaWNfc3RyaW5nJiBzdHIsIHNpemVfdHlwZSBwb3MgPSBucG9zKSBjb25zdAogICAgeyByZXR1
cm4gcmZpbmQgKHN0ci5kYXRhKCksIHBvcywgc3RyLmxlbmd0aCgpKTsgfQogIHNpemVfdHlwZSBy
ZmluZCAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKSBjb25zdDsK
ICBzaXplX3R5cGUgcmZpbmQgKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zID0gbnBvcykg
Y29uc3QKICAgIHsgcmV0dXJuIHJmaW5kIChzLCBwb3MsIHRyYWl0czo6bGVuZ3RoIChzKSk7IH0K
ICBzaXplX3R5cGUgcmZpbmQgKGNoYXJUIGMsIHNpemVfdHlwZSBwb3MgPSBucG9zKSBjb25zdDsK
CiAgc2l6ZV90eXBlIGZpbmRfZmlyc3Rfb2YgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXpl
X3R5cGUgcG9zID0gMCkgY29uc3QKICAgIHsgcmV0dXJuIGZpbmRfZmlyc3Rfb2YgKHN0ci5kYXRh
KCksIHBvcywgc3RyLmxlbmd0aCgpKTsgfQogIHNpemVfdHlwZSBmaW5kX2ZpcnN0X29mIChjb25z
dCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIG4pIGNvbnN0OwogIHNpemVfdHlw
ZSBmaW5kX2ZpcnN0X29mIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcyA9IDApIGNvbnN0
CiAgICB7IHJldHVybiBmaW5kX2ZpcnN0X29mIChzLCBwb3MsIHRyYWl0czo6bGVuZ3RoIChzKSk7
IH0KICBzaXplX3R5cGUgZmluZF9maXJzdF9vZiAoY2hhclQgYywgc2l6ZV90eXBlIHBvcyA9IDAp
IGNvbnN0CiAgICB7IHJldHVybiBmaW5kIChjLCBwb3MpOyB9CgogIHNpemVfdHlwZSBmaW5kX2xh
c3Rfb2YgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUgcG9zID0gbnBvcykgY29u
c3QKICAgIHsgcmV0dXJuIGZpbmRfbGFzdF9vZiAoc3RyLmRhdGEoKSwgcG9zLCBzdHIubGVuZ3Ro
KCkpOyB9CiAgc2l6ZV90eXBlIGZpbmRfbGFzdF9vZiAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlw
ZSBwb3MsIHNpemVfdHlwZSBuKSBjb25zdDsKICBzaXplX3R5cGUgZmluZF9sYXN0X29mIChjb25z
dCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcyA9IG5wb3MpIGNvbnN0CiAgICB7IHJldHVybiBmaW5k
X2xhc3Rfb2YgKHMsIHBvcywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIHNpemVfdHlwZSBmaW5k
X2xhc3Rfb2YgKGNoYXJUIGMsIHNpemVfdHlwZSBwb3MgPSBucG9zKSBjb25zdAogICAgeyByZXR1
cm4gcmZpbmQgKGMsIHBvcyk7IH0KCiAgc2l6ZV90eXBlIGZpbmRfZmlyc3Rfbm90X29mIChjb25z
dCBiYXNpY19zdHJpbmcmIHN0ciwgc2l6ZV90eXBlIHBvcyA9IDApIGNvbnN0CiAgICB7IHJldHVy
biBmaW5kX2ZpcnN0X25vdF9vZiAoc3RyLmRhdGEoKSwgcG9zLCBzdHIubGVuZ3RoKCkpOyB9CiAg
c2l6ZV90eXBlIGZpbmRfZmlyc3Rfbm90X29mIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBv
cywgc2l6ZV90eXBlIG4pIGNvbnN0OwogIHNpemVfdHlwZSBmaW5kX2ZpcnN0X25vdF9vZiAoY29u
c3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3MgPSAwKSBjb25zdAogICAgeyByZXR1cm4gZmluZF9m
aXJzdF9ub3Rfb2YgKHMsIHBvcywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIHNpemVfdHlwZSBm
aW5kX2ZpcnN0X25vdF9vZiAoY2hhclQgYywgc2l6ZV90eXBlIHBvcyA9IDApIGNvbnN0OwoKICBz
aXplX3R5cGUgZmluZF9sYXN0X25vdF9vZiAoY29uc3QgYmFzaWNfc3RyaW5nJiBzdHIsIHNpemVf
dHlwZSBwb3MgPSBucG9zKSBjb25zdAogICAgeyByZXR1cm4gZmluZF9sYXN0X25vdF9vZiAoc3Ry
LmRhdGEoKSwgcG9zLCBzdHIubGVuZ3RoKCkpOyB9CiAgc2l6ZV90eXBlIGZpbmRfbGFzdF9ub3Rf
b2YgKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3Q7CiAg
c2l6ZV90eXBlIGZpbmRfbGFzdF9ub3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9z
ID0gbnBvcykgY29uc3QKICAgIHsgcmV0dXJuIGZpbmRfbGFzdF9ub3Rfb2YgKHMsIHBvcywgdHJh
aXRzOjpsZW5ndGggKHMpKTsgfQogIHNpemVfdHlwZSBmaW5kX2xhc3Rfbm90X29mIChjaGFyVCBj
LCBzaXplX3R5cGUgcG9zID0gbnBvcykgY29uc3Q7CgogIGJhc2ljX3N0cmluZyBzdWJzdHIgKHNp
emVfdHlwZSBwb3MgPSAwLCBzaXplX3R5cGUgbiA9IG5wb3MpIGNvbnN0CiAgICB7IHJldHVybiBi
YXNpY19zdHJpbmcgKCp0aGlzLCBwb3MsIG4pOyB9CgogIGludCBjb21wYXJlIChjb25zdCBiYXNp
Y19zdHJpbmcmIHN0ciwgc2l6ZV90eXBlIHBvcyA9IDAsIHNpemVfdHlwZSBuID0gbnBvcykgY29u
c3Q7CiAgIAogIGludCBjb21wYXJlIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcywgc2l6
ZV90eXBlIG4pIGNvbnN0OwogIGludCBjb21wYXJlIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBl
IHBvcyA9IDApIGNvbnN0CiAgICB7IHJldHVybiBjb21wYXJlIChzLCBwb3MsIHRyYWl0czo6bGVu
Z3RoIChzKSk7IH0KCiAgaXRlcmF0b3IgYmVnaW4gKCkgeyBzZWxmaXNoICgpOyByZXR1cm4gJigq
dGhpcylbMF07IH0KICBpdGVyYXRvciBlbmQgKCkgeyBzZWxmaXNoICgpOyByZXR1cm4gJigqdGhp
cylbbGVuZ3RoICgpXTsgfQoKcHJpdmF0ZToKICBpdGVyYXRvciBpYmVnaW4gKCkgY29uc3QgeyBy
ZXR1cm4gJigqcmVwICgpKVswXTsgfQogIGl0ZXJhdG9yIGllbmQgKCkgY29uc3QgeyByZXR1cm4g
JigqcmVwICgpKVtsZW5ndGggKCldOyB9CgpwdWJsaWM6CiAgY29uc3RfaXRlcmF0b3IgYmVnaW4g
KCkgY29uc3QgeyByZXR1cm4gaWJlZ2luICgpOyB9CiAgY29uc3RfaXRlcmF0b3IgZW5kICgpIGNv
bnN0IHsgcmV0dXJuIGllbmQgKCk7IH0KCiAgcmV2ZXJzZV9pdGVyYXRvciAgICAgICByYmVnaW4o
KSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yIChlbmQgKCkpOyB9CiAgY29uc3RfcmV2ZXJzZV9p
dGVyYXRvciByYmVnaW4oKSBjb25zdAogICAgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRv
ciAoZW5kICgpKTsgfQogIHJldmVyc2VfaXRlcmF0b3IgICAgICAgcmVuZCgpIHsgcmV0dXJuIHJl
dmVyc2VfaXRlcmF0b3IgKGJlZ2luICgpKTsgfQogIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVu
ZCgpIGNvbnN0CiAgICB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIChiZWdpbiAoKSk7
IH0KCnByaXZhdGU6CiAgdm9pZCBhbGxvYyAoc2l6ZV90eXBlIHNpemUsIGJvb2wgc2F2ZSk7CiAg
c3RhdGljIHNpemVfdHlwZSBfZmluZCAoY29uc3QgY2hhclQqIHB0ciwgY2hhclQgYywgc2l6ZV90
eXBlIHhwb3MsIHNpemVfdHlwZSBsZW4pOwogIGlubGluZSBib29sIGNoZWNrX3JlYWxsb2MgKHNp
emVfdHlwZSBzKSBjb25zdDsKCiAgc3RhdGljIFJlcCBuaWxSZXA7CiAgY2hhclQgKmRhdDsKfTsK
Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPiB0
ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRz
LCBBbGxvY2F0b3I+JiBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46Ogpy
ZXBsYWNlIChpdGVyYXRvciBpMSwgaXRlcmF0b3IgaTIsIElucHV0SXRlcmF0b3IgajEsIElucHV0
SXRlcmF0b3IgajIpCgoKCgoKewogIGNvbnN0IHNpemVfdHlwZSBsZW4gPSBsZW5ndGggKCk7CiAg
c2l6ZV90eXBlIHBvcyA9IGkxIC0gaWJlZ2luICgpOwogIHNpemVfdHlwZSBuMSA9IGkyIC0gaTE7
CiAgc2l6ZV90eXBlIG4yID0gajIgLSBqMTsKCiAgZG8geyBpZiAoIHBvcyA+IGxlbiApIF9fb3V0
X29mX3JhbmdlICgicG9zID4gbGVuIik7IH0gd2hpbGUgKDApIDsKICBpZiAobjEgPiBsZW4gLSBw
b3MpCiAgICBuMSA9IGxlbiAtIHBvczsKICBkbyB7IGlmICggbGVuIC0gbjEgPiBtYXhfc2l6ZSAo
KSAtIG4yICkgX19sZW5ndGhfZXJyb3IgKCJsZW4gLSBuMSA+IG1heF9zaXplICgpIC0gbjIiKTsg
fSB3aGlsZSAoMCkgOwogIHNpemVfdCBuZXdsZW4gPSBsZW4gLSBuMSArIG4yOwoKICBpZiAoY2hl
Y2tfcmVhbGxvYyAobmV3bGVuKSkKICAgIHsKICAgICAgUmVwICpwID0gUmVwOjpjcmVhdGUgKG5l
d2xlbik7CiAgICAgIHAtPmNvcHkgKDAsIGRhdGEgKCksIHBvcyk7CiAgICAgIHAtPmNvcHkgKHBv
cyArIG4yLCBkYXRhICgpICsgcG9zICsgbjEsIGxlbiAtIChwb3MgKyBuMSkpOwogICAgICBmb3Ig
KDsgajEgIT0gajI7ICsrajEsICsrcG9zKQoJdHJhaXRzOjphc3NpZ24gKCgqcClbcG9zXSwgKmox
KTsKICAgICAgcmVwdXAgKHApOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgcmVwICgpLT5tb3Zl
IChwb3MgKyBuMiwgZGF0YSAoKSArIHBvcyArIG4xLCBsZW4gLSAocG9zICsgbjEpKTsKICAgICAg
Zm9yICg7IGoxICE9IGoyOyArK2oxLCArK3BvcykKCXRyYWl0czo6YXNzaWduICgoKnJlcCAoKSlb
cG9zXSwgKmoxKTsKICAgIH0KICByZXAgKCktPmxlbiA9IG5ld2xlbjsKCiAgcmV0dXJuICp0aGlz
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9y
PgppbmxpbmUgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+Cm9wZXJhdG9y
KyAoY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsCgkg
ICBjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIHJocykKewog
IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiBzdHIgKGxocyk7CiAgc3Ry
LmFwcGVuZCAocmhzKTsKICByZXR1cm4gc3RyOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNs
YXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYmFzaWNfc3RyaW5nIDxjaGFyVCwg
dHJhaXRzLCBBbGxvY2F0b3I+Cm9wZXJhdG9yKyAoY29uc3QgY2hhclQqIGxocywgY29uc3QgYmFz
aWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICBiYXNpY19zdHJp
bmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4gc3RyIChsaHMpOwogIHN0ci5hcHBlbmQgKHJo
cyk7CiAgcmV0dXJuIHN0cjsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMs
IGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxs
b2NhdG9yPgpvcGVyYXRvcisgKGNoYXJUIGxocywgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwg
dHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMs
IEFsbG9jYXRvcj4gc3RyICgxLCBsaHMpOwogIHN0ci5hcHBlbmQgKHJocyk7CiAgcmV0dXJuIHN0
cjsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRv
cj4KaW5saW5lIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPgpvcGVyYXRv
cisgKGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgbGhzLCBj
b25zdCBjaGFyVCogcmhzKQp7CiAgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0
b3I+IHN0ciAobGhzKTsKICBzdHIuYXBwZW5kIChyaHMpOwogIHJldHVybiBzdHI7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBi
YXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4Kb3BlcmF0b3IrIChjb25zdCBi
YXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIGxocywgY2hhclQgcmhzKQp7
CiAgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+IHN0ciAobGhzKTsKICBz
dHIuYXBwZW5kICgxLCByaHMpOwogIHJldHVybiBzdHI7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFy
VCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPT0g
KGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgbGhzLAoJICAg
IGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgcmhzKQp7CiAg
cmV0dXJuIChsaHMuY29tcGFyZSAocmhzKSA9PSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJU
LCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3I9PSAo
Y29uc3QgY2hhclQqIGxocywgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxv
Y2F0b3I+JiByaHMpCnsKICByZXR1cm4gKHJocy5jb21wYXJlIChsaHMpID09IDApOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUg
Ym9vbApvcGVyYXRvcj09IChjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9j
YXRvcj4mIGxocywgY29uc3QgY2hhclQqIHJocykKewogIHJldHVybiAobGhzLmNvbXBhcmUgKHJo
cykgPT0gMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBB
bGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yIT0gKGNvbnN0IGNoYXJUKiBsaHMsIGNvbnN0
IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgcmhzKQp7CiAgcmV0dXJu
IChyaHMuY29tcGFyZSAobGhzKSAhPSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFz
cyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3IhPSAoY29uc3Qg
YmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsIGNvbnN0IGNoYXJU
KiByaHMpCnsKICByZXR1cm4gKGxocy5jb21wYXJlIChyaHMpICE9IDApOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApv
cGVyYXRvcjwgKGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYg
bGhzLAoJICAgIGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYg
cmhzKQp7CiAgcmV0dXJuIChsaHMuY29tcGFyZSAocmhzKSA8IDApOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApvcGVy
YXRvcjwgKGNvbnN0IGNoYXJUKiBsaHMsIGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0
cywgQWxsb2NhdG9yPiYgcmhzKQp7CiAgcmV0dXJuIChyaHMuY29tcGFyZSAobGhzKSA+IDApOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpp
bmxpbmUgYm9vbApvcGVyYXRvcjwgKGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywg
QWxsb2NhdG9yPiYgbGhzLCBjb25zdCBjaGFyVCogcmhzKQp7CiAgcmV0dXJuIChsaHMuY29tcGFy
ZSAocmhzKSA8IDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xh
c3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApvcGVyYXRvcj4gKGNvbnN0IGNoYXJUKiBsaHMsIGNv
bnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgcmhzKQp7CiAgcmV0
dXJuIChyaHMuY29tcGFyZSAobGhzKSA8IDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNs
YXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApvcGVyYXRvcj4gKGNvbnN0
IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgbGhzLCBjb25zdCBjaGFy
VCogcmhzKQp7CiAgcmV0dXJuIChsaHMuY29tcGFyZSAocmhzKSA+IDApOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApv
cGVyYXRvcjw9IChjb25zdCBjaGFyVCogbGhzLCBjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0
cmFpdHMsIEFsbG9jYXRvcj4mIHJocykKewogIHJldHVybiAocmhzLmNvbXBhcmUgKGxocykgPj0g
MCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0
b3I+CmlubGluZSBib29sCm9wZXJhdG9yPD0gKGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRy
YWl0cywgQWxsb2NhdG9yPiYgbGhzLCBjb25zdCBjaGFyVCogcmhzKQp7CiAgcmV0dXJuIChsaHMu
Y29tcGFyZSAocmhzKSA8PSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFp
dHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3I+PSAoY29uc3QgY2hhclQq
IGxocywgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMp
CnsKICByZXR1cm4gKHJocy5jb21wYXJlIChsaHMpIDw9IDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
Y2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApvcGVyYXRv
cj49IChjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIGxocywg
Y29uc3QgY2hhclQqIHJocykKewogIHJldHVybiAobGhzLmNvbXBhcmUgKHJocykgPj0gMCk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Cmlu
bGluZSBib29sCm9wZXJhdG9yIT0gKGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywg
QWxsb2NhdG9yPiYgbGhzLAoJICAgIGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywg
QWxsb2NhdG9yPiYgcmhzKQp7CiAgcmV0dXJuIChsaHMuY29tcGFyZSAocmhzKSAhPSAwKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5s
aW5lIGJvb2wKb3BlcmF0b3I+IChjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj4mIGxocywKCSAgIGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxs
b2NhdG9yPiYgcmhzKQp7CiAgcmV0dXJuIChsaHMuY29tcGFyZSAocmhzKSA+IDApOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUg
Ym9vbApvcGVyYXRvcjw9IChjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9j
YXRvcj4mIGxocywKCSAgICBjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9j
YXRvcj4mIHJocykKewogIHJldHVybiAobGhzLmNvbXBhcmUgKHJocykgPD0gMCk7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBi
b29sCm9wZXJhdG9yPj0gKGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2Nh
dG9yPiYgbGhzLAoJICAgIGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2Nh
dG9yPiYgcmhzKQp7CiAgcmV0dXJuIChsaHMuY29tcGFyZSAocmhzKSA+PSAwKTsKfQoKY2xhc3Mg
aXN0cmVhbTsgY2xhc3Mgb3N0cmVhbTsKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFp
dHMsIGNsYXNzIEFsbG9jYXRvcj4gaXN0cmVhbSYKb3BlcmF0b3I+PiAoaXN0cmVhbSYsIGJhc2lj
X3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYpOwp0ZW1wbGF0ZSA8Y2xhc3MgY2hh
clQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPiBvc3RyZWFtJgpvcGVyYXRvcjw8IChv
c3RyZWFtJiwgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+Jik7
CnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+IGlz
dHJlYW0mCmdldGxpbmUgKGlzdHJlYW0mLCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj4mLCBjaGFyVCBkZWxpbSA9ICdcbicpOwoKfSAgCgojIDEgIi91c3IvaW5jbHVkZS9n
KystMi9zdGQvYmFzdHJpbmcuY2MiIDEgMwogCiAKCiAKIAogCiAKIAoKIAogCiAKIAoKIAogCiAK
CiAKIAogCiAKIAoKIAogCgpleHRlcm4gIkMrKyIgewp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNs
YXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgdm9pZCAqIGJhc2ljX3N0cmluZyA8
Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwOjoKb3BlcmF0b3IgbmV3IChzaXplX3Qgcywg
c2l6ZV90IGV4dHJhKQp7CiAgcmV0dXJuIEFsbG9jYXRvcjo6YWxsb2NhdGUocyArIGV4dHJhICog
c2l6ZW9mIChjaGFyVCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywg
Y2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgdm9pZCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMs
IEFsbG9jYXRvcj46OlJlcDo6Cm9wZXJhdG9yIGRlbGV0ZSAodm9pZCAqIHB0cikKewogIEFsbG9j
YXRvcjo6ZGVhbGxvY2F0ZShwdHIsIHNpemVvZihSZXApICsKCQkJcmVpbnRlcnByZXRfY2FzdDxS
ZXAgKj4ocHRyKS0+cmVzICoKCQkJc2l6ZW9mIChjaGFyVCkpOyAKfQoKdGVtcGxhdGUgPGNsYXNz
IGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIHNpemVfdCBiYXNp
Y19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OlJlcDo6CmZyb2Jfc2l6ZSAoc2l6
ZV90IHMpCnsKICBzaXplX3QgaSA9IDE2OwogIHdoaWxlIChpIDwgcykgaSAqPSAyOwogIHJldHVy
biBpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2Nh
dG9yPgppbmxpbmUgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpSZXAg
KgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OlJlcDo6CmNyZWF0ZSAo
c2l6ZV90IGV4dHJhKQp7CiAgZXh0cmEgPSBmcm9iX3NpemUgKGV4dHJhICsgMSk7CiAgUmVwICpw
ID0gbmV3IChleHRyYSkgUmVwOwogIHAtPnJlcyA9IGV4dHJhOwogIHAtPnJlZiA9IDE7CiAgcC0+
c2VsZmlzaCA9IGZhbHNlOwogIHJldHVybiBwOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNs
YXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpjaGFyVCAqIGJhc2ljX3N0cmluZyA8Y2hhclQs
IHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwOjoKY2xvbmUgKCkKewogIFJlcCAqcCA9IFJlcDo6Y3Jl
YXRlIChsZW4pOwogIHAtPmNvcHkgKDAsIGRhdGEgKCksIGxlbik7CiAgcC0+bGVuID0gbGVuOwog
IHJldHVybiBwLT5kYXRhICgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0
cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFp
dHMsIEFsbG9jYXRvcj46OlJlcDo6CmV4Y2Vzc19zbG9wIChzaXplX3Qgcywgc2l6ZV90IHIpCnsK
ICByZXR1cm4gMiAqIChzIDw9IDE2ID8gMTYgOiBzKSA8IHI7Cn0KCnRlbXBsYXRlIDxjbGFzcyBj
aGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBib29sIGJhc2ljX3N0
cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6CmNoZWNrX3JlYWxsb2MgKGJhc2ljX3N0
cmluZzo6c2l6ZV90eXBlIHMpIGNvbnN0CnsKICBzICs9IHNpemVvZiAoY2hhclQpOwogIHJlcCAo
KS0+c2VsZmlzaCA9IGZhbHNlOwogIHJldHVybiAocmVwICgpLT5yZWYgPiAxCgkgIHx8IHMgPiBj
YXBhY2l0eSAoKQoJICB8fCBSZXA6OmV4Y2Vzc19zbG9wIChzLCBjYXBhY2l0eSAoKSkpOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgp2b2lk
IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6CmFsbG9jIChiYXNpY19z
dHJpbmc6OnNpemVfdHlwZSBzaXplLCBib29sIHNhdmUpCnsKICBpZiAoISBjaGVja19yZWFsbG9j
IChzaXplKSkKICAgIHJldHVybjsKCiAgUmVwICpwID0gUmVwOjpjcmVhdGUgKHNpemUpOwoKICBp
ZiAoc2F2ZSkKICAgIHsKICAgICAgcC0+Y29weSAoMCwgZGF0YSAoKSwgbGVuZ3RoICgpKTsKICAg
ICAgcC0+bGVuID0gbGVuZ3RoICgpOwogICAgfQogIGVsc2UKICAgIHAtPmxlbiA9IDA7CgogIHJl
cHVwIChwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFs
bG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JgpiYXNpY19z
dHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OgpyZXBsYWNlIChzaXplX3R5cGUgcG9z
MSwgc2l6ZV90eXBlIG4xLAoJIGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUgcG9z
Miwgc2l6ZV90eXBlIG4yKQp7CiAgY29uc3Qgc2l6ZV90IGxlbjIgPSBzdHIubGVuZ3RoICgpOwoK
ICBpZiAocG9zMSA9PSAwICYmIG4xID49IGxlbmd0aCAoKSAmJiBwb3MyID09IDAgJiYgbjIgPj0g
bGVuMikKICAgIHJldHVybiBvcGVyYXRvcj0gKHN0cik7CgogIGRvIHsgaWYgKCBwb3MyID4gbGVu
MiApIF9fb3V0X29mX3JhbmdlICgicG9zMiA+IGxlbjIiKTsgfSB3aGlsZSAoMCkgOwoKICBpZiAo
bjIgPiBsZW4yIC0gcG9zMikKICAgIG4yID0gbGVuMiAtIHBvczI7CgogIHJldHVybiByZXBsYWNl
IChwb3MxLCBuMSwgc3RyLmRhdGEgKCkgKyBwb3MyLCBuMik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBj
aGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSB2b2lkIGJhc2ljX3N0
cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwOjoKY29weSAoc2l6ZV90IHBvcywg
Y29uc3QgY2hhclQgKnMsIHNpemVfdCBuKQp7CiAgaWYgKG4pCiAgICB0cmFpdHM6OmNvcHkgKGRh
dGEgKCkgKyBwb3MsIHMsIG4pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0
cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgdm9pZCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFp
dHMsIEFsbG9jYXRvcj46OlJlcDo6Cm1vdmUgKHNpemVfdCBwb3MsIGNvbnN0IGNoYXJUICpzLCBz
aXplX3QgbikKewogIGlmIChuKQogICAgdHJhaXRzOjptb3ZlIChkYXRhICgpICsgcG9zLCBzLCBu
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRv
cj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JgpiYXNpY19zdHJpbmcg
PGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OgpyZXBsYWNlIChzaXplX3R5cGUgcG9zLCBzaXpl
X3R5cGUgbjEsIGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgbjIpCnsKICBjb25zdCBzaXplX3R5
cGUgbGVuID0gbGVuZ3RoICgpOwogIGRvIHsgaWYgKCBwb3MgPiBsZW4gKSBfX291dF9vZl9yYW5n
ZSAoInBvcyA+IGxlbiIpOyB9IHdoaWxlICgwKSA7CiAgaWYgKG4xID4gbGVuIC0gcG9zKQogICAg
bjEgPSBsZW4gLSBwb3M7CiAgZG8geyBpZiAoIGxlbiAtIG4xID4gbWF4X3NpemUgKCkgLSBuMiAp
IF9fbGVuZ3RoX2Vycm9yICgibGVuIC0gbjEgPiBtYXhfc2l6ZSAoKSAtIG4yIik7IH0gd2hpbGUg
KDApIDsKICBzaXplX3QgbmV3bGVuID0gbGVuIC0gbjEgKyBuMjsKCiAgaWYgKGNoZWNrX3JlYWxs
b2MgKG5ld2xlbikpCiAgICB7CiAgICAgIFJlcCAqcCA9IFJlcDo6Y3JlYXRlIChuZXdsZW4pOwog
ICAgICBwLT5jb3B5ICgwLCBkYXRhICgpLCBwb3MpOwogICAgICBwLT5jb3B5IChwb3MgKyBuMiwg
ZGF0YSAoKSArIHBvcyArIG4xLCBsZW4gLSAocG9zICsgbjEpKTsKICAgICAgcC0+Y29weSAocG9z
LCBzLCBuMik7CiAgICAgIHJlcHVwIChwKTsKICAgIH0KICBlbHNlCiAgICB7CiAgICAgIHJlcCAo
KS0+bW92ZSAocG9zICsgbjIsIGRhdGEgKCkgKyBwb3MgKyBuMSwgbGVuIC0gKHBvcyArIG4xKSk7
CiAgICAgIHJlcCAoKS0+Y29weSAocG9zLCBzLCBuMik7CiAgICB9CiAgcmVwICgpLT5sZW4gPSBu
ZXdsZW47CgogIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0
cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIHZvaWQgYmFzaWNfc3RyaW5nIDxjaGFyVCwg
dHJhaXRzLCBBbGxvY2F0b3I+OjpSZXA6OgpzZXQgKHNpemVfdCBwb3MsIGNvbnN0IGNoYXJUIGMs
IHNpemVfdCBuKQp7CiAgdHJhaXRzOjpzZXQgIChkYXRhICgpICsgcG9zLCBjLCBuKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBiYXNpY19zdHJpbmcgPGNoYXJULCB0
cmFpdHMsIEFsbG9jYXRvcj46OgpyZXBsYWNlIChzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbjEs
IHNpemVfdHlwZSBuMiwgY2hhclQgYykKewogIGNvbnN0IHNpemVfdCBsZW4gPSBsZW5ndGggKCk7
CiAgZG8geyBpZiAoIHBvcyA+IGxlbiApIF9fb3V0X29mX3JhbmdlICgicG9zID4gbGVuIik7IH0g
d2hpbGUgKDApIDsKICBpZiAobjEgPiBsZW4gLSBwb3MpCiAgICBuMSA9IGxlbiAtIHBvczsKICBk
byB7IGlmICggbGVuIC0gbjEgPiBtYXhfc2l6ZSAoKSAtIG4yICkgX19sZW5ndGhfZXJyb3IgKCJs
ZW4gLSBuMSA+IG1heF9zaXplICgpIC0gbjIiKTsgfSB3aGlsZSAoMCkgOwogIHNpemVfdCBuZXds
ZW4gPSBsZW4gLSBuMSArIG4yOwoKICBpZiAoY2hlY2tfcmVhbGxvYyAobmV3bGVuKSkKICAgIHsK
ICAgICAgUmVwICpwID0gUmVwOjpjcmVhdGUgKG5ld2xlbik7CiAgICAgIHAtPmNvcHkgKDAsIGRh
dGEgKCksIHBvcyk7CiAgICAgIHAtPmNvcHkgKHBvcyArIG4yLCBkYXRhICgpICsgcG9zICsgbjEs
IGxlbiAtIChwb3MgKyBuMSkpOwogICAgICBwLT5zZXQgIChwb3MsIGMsIG4yKTsKICAgICAgcmVw
dXAgKHApOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgcmVwICgpLT5tb3ZlIChwb3MgKyBuMiwg
ZGF0YSAoKSArIHBvcyArIG4xLCBsZW4gLSAocG9zICsgbjEpKTsKICAgICAgcmVwICgpLT5zZXQg
IChwb3MsIGMsIG4yKTsKICAgIH0KICByZXAgKCktPmxlbiA9IG5ld2xlbjsKCiAgcmV0dXJuICp0
aGlzOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2Nh
dG9yPgp2b2lkIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6CnJlc2l6
ZSAoc2l6ZV90eXBlIG4sIGNoYXJUIGMpCnsKICBkbyB7IGlmICggbiA+IG1heF9zaXplICgpICkg
X19sZW5ndGhfZXJyb3IgKCJuID4gbWF4X3NpemUgKCkiKTsgfSB3aGlsZSAoMCkgOwoKICBpZiAo
biA+IGxlbmd0aCAoKSkKICAgIGFwcGVuZCAobiAtIGxlbmd0aCAoKSwgYyk7CiAgZWxzZQogICAg
ZXJhc2UgKG4pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3Mg
QWxsb2NhdG9yPgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OnNpemVf
dHlwZQpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46Ogpjb3B5IChjaGFy
VCogcywgc2l6ZV90eXBlIG4sIHNpemVfdHlwZSBwb3MpIGNvbnN0CnsKICBkbyB7IGlmICggcG9z
ID4gbGVuZ3RoICgpICkgX19vdXRfb2ZfcmFuZ2UgKCJwb3MgPiBsZW5ndGggKCkiKTsgfSB3aGls
ZSAoMCkgOwoKICBpZiAobiA+IGxlbmd0aCAoKSAtIHBvcykKICAgIG4gPSBsZW5ndGggKCkgLSBw
b3M7CgogIHRyYWl0czo6Y29weSAocywgZGF0YSAoKSArIHBvcywgbik7CiAgcmV0dXJuIG47Cn0K
CnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmJh
c2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2ljX3N0
cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6CmZpbmQgKGNvbnN0IGNoYXJUKiBzLCBz
aXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIHNpemVfdCB4cG9zID0gcG9zOwog
IGZvciAoOyB4cG9zICsgbiA8PSBsZW5ndGggKCk7ICsreHBvcykKICAgIGlmICh0cmFpdHM6OmVx
IChkYXRhICgpIFt4cG9zXSwgKnMpCgkmJiB0cmFpdHM6OmNvbXBhcmUgKGRhdGEgKCkgKyB4cG9z
LCBzLCBuKSA9PSAwKQogICAgICByZXR1cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVtcGxh
dGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJh
c2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2ljX3N0
cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6Cl9maW5kIChjb25zdCBjaGFyVCogcHRy
LCBjaGFyVCBjLCBzaXplX3R5cGUgeHBvcywgc2l6ZV90eXBlIGxlbikKewogIGZvciAoOyB4cG9z
IDwgbGVuOyArK3hwb3MpCiAgICBpZiAodHJhaXRzOjplcSAocHRyIFt4cG9zXSwgYykpCiAgICAg
IHJldHVybiB4cG9zOwogIHJldHVybiBucG9zOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNs
YXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMs
IEFsbG9jYXRvcj46OnNpemVfdHlwZQpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9j
YXRvcj46OgpmaW5kIChjaGFyVCBjLCBzaXplX3R5cGUgcG9zKSBjb25zdAp7CiAgcmV0dXJuIF9m
aW5kIChkYXRhICgpLCBjLCBwb3MsIGxlbmd0aCAoKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFy
VCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmJhc2ljX3N0cmluZyA8Y2hhclQsIHRy
YWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywg
QWxsb2NhdG9yPjo6CnJmaW5kIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcywgc2l6ZV90
eXBlIG4pIGNvbnN0CnsKICBpZiAobiA+IGxlbmd0aCAoKSkKICAgIHJldHVybiBucG9zOwoKICBz
aXplX3QgeHBvcyA9IGxlbmd0aCAoKSAtIG47CiAgaWYgKHhwb3MgPiBwb3MpCiAgICB4cG9zID0g
cG9zOwoKICBmb3IgKCsreHBvczsgeHBvcy0tID4gMDsgKQogICAgaWYgKHRyYWl0czo6ZXEgKGRh
dGEgKCkgW3hwb3NdLCAqcykKCSYmIHRyYWl0czo6Y29tcGFyZSAoZGF0YSAoKSArIHhwb3MsIHMs
IG4pID09IDApCiAgICAgIHJldHVybiB4cG9zOwogIHJldHVybiBucG9zOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNpY19zdHJpbmcg
PGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OnNpemVfdHlwZQpiYXNpY19zdHJpbmcgPGNoYXJU
LCB0cmFpdHMsIEFsbG9jYXRvcj46OgpyZmluZCAoY2hhclQgYywgc2l6ZV90eXBlIHBvcykgY29u
c3QKewogIGlmICgxID4gbGVuZ3RoICgpKQogICAgcmV0dXJuIG5wb3M7CgogIHNpemVfdCB4cG9z
ID0gbGVuZ3RoICgpIC0gMTsKICBpZiAoeHBvcyA+IHBvcykKICAgIHhwb3MgPSBwb3M7CgogIGZv
ciAoKyt4cG9zOyB4cG9zLS0gPiAwOyApCiAgICBpZiAodHJhaXRzOjplcSAoZGF0YSAoKSBbeHBv
c10sIGMpKQogICAgICByZXR1cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVtcGxhdGUgPGNs
YXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxj
aGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpzaXplX3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFyVCwg
dHJhaXRzLCBBbGxvY2F0b3I+OjoKZmluZF9maXJzdF9vZiAoY29uc3QgY2hhclQqIHMsIHNpemVf
dHlwZSBwb3MsIHNpemVfdHlwZSBuKSBjb25zdAp7CiAgc2l6ZV90IHhwb3MgPSBwb3M7CiAgZm9y
ICg7IHhwb3MgPCBsZW5ndGggKCk7ICsreHBvcykKICAgIGlmIChfZmluZCAocywgZGF0YSAoKSBb
eHBvc10sIDAsIG4pICE9IG5wb3MpCiAgICAgIHJldHVybiB4cG9zOwogIHJldHVybiBucG9zOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpi
YXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OnNpemVfdHlwZQpiYXNpY19z
dHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OgpmaW5kX2xhc3Rfb2YgKGNvbnN0IGNo
YXJUKiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIGlmIChsZW5ndGgo
KSA9PSAwKQogICAgcmV0dXJuIG5wb3M7CiAgc2l6ZV90IHhwb3MgPSBsZW5ndGggKCkgLSAxOwog
IGlmICh4cG9zID4gcG9zKQogICAgeHBvcyA9IHBvczsKICBmb3IgKCsreHBvczsgeHBvcy0tID4g
MDspCiAgICBpZiAoX2ZpbmQgKHMsIGRhdGEgKCkgW3hwb3NdLCAwLCBuKSAhPSBucG9zKQogICAg
ICByZXR1cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBj
bGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRz
LCBBbGxvY2F0b3I+OjpzaXplX3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxv
Y2F0b3I+OjoKZmluZF9maXJzdF9ub3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9z
LCBzaXplX3R5cGUgbikgY29uc3QKewogIHNpemVfdCB4cG9zID0gcG9zOwogIGZvciAoOyB4cG9z
IDwgbGVuZ3RoICgpOyArK3hwb3MpCiAgICBpZiAoX2ZpbmQgKHMsIGRhdGEgKCkgW3hwb3NdLCAw
LCBuKSA9PSBucG9zKQogICAgICByZXR1cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVtcGxh
dGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNfc3Ry
aW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpzaXplX3R5cGUKYmFzaWNfc3RyaW5nIDxj
aGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKZmluZF9maXJzdF9ub3Rfb2YgKGNoYXJUIGMsIHNp
emVfdHlwZSBwb3MpIGNvbnN0CnsKICBzaXplX3QgeHBvcyA9IHBvczsKICBmb3IgKDsgeHBvcyA8
IGxlbmd0aCAoKTsgKyt4cG9zKQogICAgaWYgKHRyYWl0czo6bmUgKGRhdGEgKCkgW3hwb3NdLCBj
KSkKICAgICAgcmV0dXJuIHhwb3M7CiAgcmV0dXJuIG5wb3M7Cn0KCnRlbXBsYXRlIDxjbGFzcyBj
aGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmJhc2ljX3N0cmluZyA8Y2hhclQs
IHRyYWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0
cywgQWxsb2NhdG9yPjo6CmZpbmRfbGFzdF9ub3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5
cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIGlmIChsZW5ndGgoKSA9PSAwKQogICAgcmV0
dXJuIG5wb3M7CiAgc2l6ZV90IHhwb3MgPSBsZW5ndGggKCkgLSAxOwogIGlmICh4cG9zID4gcG9z
KQogICAgeHBvcyA9IHBvczsKICBmb3IgKCsreHBvczsgeHBvcy0tID4gMDspCiAgICBpZiAoX2Zp
bmQgKHMsIGRhdGEgKCkgW3hwb3NdLCAwLCBuKSA9PSBucG9zKQogICAgICByZXR1cm4geHBvczsK
ICByZXR1cm4gbnBvczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNs
YXNzIEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+Ojpz
aXplX3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKZmluZF9s
YXN0X25vdF9vZiAoY2hhclQgYywgc2l6ZV90eXBlIHBvcykgY29uc3QKewogIGlmIChsZW5ndGgo
KSA9PSAwKQogICAgcmV0dXJuIG5wb3M7CiAgc2l6ZV90IHhwb3MgPSBsZW5ndGggKCkgLSAxOwog
IGlmICh4cG9zID4gcG9zKQogICAgeHBvcyA9IHBvczsKICBmb3IgKCsreHBvczsgeHBvcy0tID4g
MDspCiAgICBpZiAodHJhaXRzOjpuZSAoZGF0YSAoKSBbeHBvc10sIGMpKQogICAgICByZXR1cm4g
eHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFp
dHMsIGNsYXNzIEFsbG9jYXRvcj4KaW50IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxs
b2NhdG9yPjo6CmNvbXBhcmUgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUgcG9z
LCBzaXplX3R5cGUgbikgY29uc3QKewogIGRvIHsgaWYgKCBwb3MgPiBsZW5ndGggKCkgKSBfX291
dF9vZl9yYW5nZSAoInBvcyA+IGxlbmd0aCAoKSIpOyB9IHdoaWxlICgwKSA7CgogIHNpemVfdCBy
bGVuID0gbGVuZ3RoICgpIC0gcG9zOwogIGlmIChybGVuID4gbikKICAgIHJsZW4gPSBuOwogIGlm
IChybGVuID4gc3RyLmxlbmd0aCAoKSkKICAgIHJsZW4gPSBzdHIubGVuZ3RoICgpOwogIGludCBy
ID0gdHJhaXRzOjpjb21wYXJlIChkYXRhICgpICsgcG9zLCBzdHIuZGF0YSAoKSwgcmxlbik7CiAg
aWYgKHIgIT0gMCkKICAgIHJldHVybiByOwogIGlmIChybGVuID09IG4pCiAgICByZXR1cm4gMDsK
ICByZXR1cm4gKGxlbmd0aCAoKSAtIHBvcykgLSBzdHIubGVuZ3RoICgpOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbnQgYmFzaWNfc3Ry
aW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKY29tcGFyZSAoY29uc3QgY2hhclQqIHMs
IHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKSBjb25zdAp7CiAgZG8geyBpZiAoIHBvcyA+IGxl
bmd0aCAoKSApIF9fb3V0X29mX3JhbmdlICgicG9zID4gbGVuZ3RoICgpIik7IH0gd2hpbGUgKDAp
IDsKCiAgc2l6ZV90IHJsZW4gPSBsZW5ndGggKCkgLSBwb3M7CiAgaWYgKHJsZW4gPiBuKQogICAg
cmxlbiA9IG47CiAgaW50IHIgPSB0cmFpdHM6OmNvbXBhcmUgKGRhdGEgKCkgKyBwb3MsIHMsIHJs
ZW4pOwogIGlmIChyICE9IDApCiAgICByZXR1cm4gcjsKICByZXR1cm4gKGxlbmd0aCAoKSAtIHBv
cykgLSBuOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBB
bGxvY2F0b3I+CmlzdHJlYW0gJgpvcGVyYXRvcj4+IChpc3RyZWFtICZpcywgYmFzaWNfc3RyaW5n
IDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+ICZzKQp7CiAgaW50IHcgPSBpcy53aWR0aCAoMCk7
CiAgaWYgKGlzLmlwZngwICgpKQogICAgewogICAgICByZWdpc3RlciBzdHJlYW1idWYgKnNiID0g
aXMucmRidWYgKCk7CiAgICAgIHMucmVzaXplICgwKTsKICAgICAgd2hpbGUgKDEpCgl7CgkgIGlu
dCBjaCA9IHNiLT5zYnVtcGMgKCk7CgkgIGlmIChjaCA9PSAoLTEpICkKCSAgICB7CgkgICAgICBp
cy5zZXRzdGF0ZSAoaW9zOjplb2ZiaXQpOwoJICAgICAgYnJlYWs7CgkgICAgfQoJICBlbHNlIGlm
ICh0cmFpdHM6OmlzX2RlbCAoY2gpKQoJICAgIHsKCSAgICAgIHNiLT5zdW5nZXRjICgpOwoJICAg
ICAgYnJlYWs7CgkgICAgfQoJICBzICs9IGNoOwoJICBpZiAoLS13ID09IDEpCgkgICAgYnJlYWs7
Cgl9CiAgICB9CgogIGlzLmlzZnggKCk7CiAgaWYgKHMubGVuZ3RoICgpID09IDApCiAgICBpcy5z
ZXRzdGF0ZSAoaW9zOjpmYWlsYml0KTsKCiAgcmV0dXJuIGlzOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
Y2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpvc3RyZWFtICYKb3BlcmF0b3I8
PCAob3N0cmVhbSAmbywgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0
b3I+JiBzKQp7CiAgcmV0dXJuIG8ud3JpdGUgKHMuZGF0YSAoKSwgcy5sZW5ndGggKCkpOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppc3Ry
ZWFtJgpnZXRsaW5lIChpc3RyZWFtICZpcywgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBB
bGxvY2F0b3I+JiBzLCBjaGFyVCBkZWxpbSkKewogIGlmIChpcy5pcGZ4MSAoKSkKICAgIHsKICAg
ICAgc2l6ZV90ICAgY291bnQgPSAwOwogICAgICBzdHJlYW1idWYgKnNiID0gaXMucmRidWYgKCk7
CiAgICAgIHMucmVzaXplICgwKTsKCiAgICAgIHdoaWxlICgxKQoJewoJICBpbnQgY2ggPSBzYi0+
c2J1bXBjICgpOwoJICBpZiAoY2ggPT0gKC0xKSApCgkgICAgewoJICAgICAgaXMuc2V0c3RhdGUg
KGNvdW50ID09IDAKCQkJICAgPyAoaW9zOjpmYWlsYml0fGlvczo6ZW9mYml0KQoJCQkgICA6IGlv
czo6ZW9mYml0KTsKCSAgICAgIGJyZWFrOwoJICAgIH0KCgkgICsrY291bnQ7CgoJICBpZiAoY2gg
PT0gZGVsaW0pCgkgICAgYnJlYWs7CgoJICBzICs9IGNoOwoKCSAgaWYgKHMubGVuZ3RoICgpID09
IHMubnBvcyAtIDEpCgkgICAgewoJICAgICAgaXMuc2V0c3RhdGUgKGlvczo6ZmFpbGJpdCk7Cgkg
ICAgICBicmVhazsKCSAgICB9Cgl9CiAgICB9CgogICAKICAgCiAgaXMuaXNmeCAoKTsKCiAgcmV0
dXJuIGlzOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxs
b2NhdG9yPgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OlJlcApiYXNp
Y19zdHJpbmc8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6bmlsUmVwID0geyAwLCAwLCAxLCBm
YWxzZSB9OwoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9j
YXRvcj4KY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpzaXpl
X3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpucG9zOwoKfSAg
CiMgNjE4ICIvdXNyL2luY2x1ZGUvZysrLTIvc3RkL2Jhc3RyaW5nLmgiIDIgMwoKCgojIDYgIi91
c3IvaW5jbHVkZS9nKystMi9zdHJpbmciIDIgMwoKCmV4dGVybiAiQysrIiB7CnR5cGVkZWYgYmFz
aWNfc3RyaW5nIDxjaGFyPiBzdHJpbmc7CiAKfSAgCgoKIyAyMyAiaC9ucmh5X3dvcmxkLmgiIDIK
CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIAogCiAKCiMgMSAiaC9ucmh5X2NsYXNzVGltZS5oIiAx
CiAKCgoKCgoKCgoKCgoKCgoKCgoMCiAKCgoKIAoKCnN0cnVjdCBOUkhZX0lOVF9GUkFOR0Ugewpw
dWJsaWMgOgogICAgSU5UICAgICAgICAgICAgICAgICBzdGFydDsKICAgIElOVCAgICAgICAgICAg
ICAgICAgZW5kOwogICAgSU5UICAgICAgICAgICAgICAgICBpbmM7CgogICAgIAogICAgVHdpbmUg
ICAgICAgICAgICAgICBHZXROYW1lRm9yQnVuY2goKTsKCiAgICBOUkhZX0lOVF9GUkFOR0UgKAog
ICAgICAgIHZvaWQgCiAgICApIHsgc3RhcnQgPSAwOyBlbmQgPSAwOyBpbmMgPSAwOyB9CgogICAg
IAoKICAgIHN0YXRpYyB2b2lkICAgICAgICAgICpGaW5kICgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENIQVIgICpuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAg
c3RhdGljIGNvbnN0IENIQVIgICAqUHJpbnRTZWxmQ2xhc3NuYW1lICgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICkgeyByZXR1cm4gKCJO
UkhZX0lOVF9GUkFOR0UiKTsgfQoKICAgIHZvaWQgICAgICAgICAgICAgICAgIFByaW50U2VsZiAo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAg
ICApIHsgVFhUX1NyY0ZpbGUgICA9ICJoL25yaHlfY2xhc3NUaW1lLmgiLCBUWFRfU3JjTGluZSAg
ID0gNTIsIFRYVF9PdXRwdXRmICAoc3RkZXJyLCAiJWQtJWQ6JWRcbiIsIHN0YXJ0LCBlbmQsIGlu
Yyk7IH0KfTsKaW5saW5lIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSggTlJIWV9JTlRfRlJBTkdFICkg
eyByZXR1cm4gIk5SSFlfSU5UX0ZSQU5HRSI7IH07CgpzdHJ1Y3QgTlJIWV9SRUFMX0ZSQU5HRSB7
CnB1YmxpYyA6CiAgICBSRUFMICAgICAgICAgICAgICAgIHN0YXJ0OwogICAgUkVBTCAgICAgICAg
ICAgICAgICBlbmQ7CiAgICBSRUFMICAgICAgICAgICAgICAgIGluYzsKCiAgICAgCiAgICBUd2lu
ZSAgICAgICAgICAgICAgIEdldE5hbWVGb3JCdW5jaCgpOwoKICAgIE5SSFlfUkVBTF9GUkFOR0Ug
KAogICAgICAgIHZvaWQgCiAgICApIHsgc3RhcnQgPSAoUkVBTCkwLjA7IGVuZCA9IChSRUFMKTAu
MDsgaW5jID0gKFJFQUwpMC4wOyB9CgogICAgfk5SSFlfUkVBTF9GUkFOR0UgKAogICAgICAgIHZv
aWQgCiAgICApIHsgc3RhcnQgPSAoUkVBTCkwLjA7IGVuZCA9IChSRUFMKTAuMDsgaW5jID0gKFJF
QUwpMC4wOyB9CgogICAgIAoKICAgIHN0YXRpYyB2b2lkICAgICAgICAgICpGaW5kICgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENIQVIgICpuYW1lCiAgICAgICAgICAgICAgICAg
ICAgICAgICk7CgogICAgc3RhdGljIGNvbnN0IENIQVIgICAqUHJpbnRTZWxmQ2xhc3NuYW1lICgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAg
ICkgeyByZXR1cm4gKCJOUkhZX1JFQUxfRlJBTkdFIik7IH0KCgoKCgoKCgoKICAgIHZvaWQgICAg
ICAgICAgICAgICAgIFByaW50U2VsZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
IAogICAgICAgICAgICAgICAgICAgICAgICApIHsgVFhUX1NyY0ZpbGUgICA9ICJoL25yaHlfY2xh
c3NUaW1lLmgiLCBUWFRfU3JjTGluZSAgID0gOTMsIFRYVF9PdXRwdXRmICAoc3RkZXJyLCAiJWYt
JWY6JWZcbiIsIHN0YXJ0LCBlbmQsIGluYyk7IH0KfTsKCgoKCiAKCgoKCgoKCgoKCgoKCmNsYXNz
IE5SSFlfRlJBTkdFIHsKcHVibGljOgogICAgIAogICAgSU5UICAgICAgICAgICAgICAgICBmbGFn
czsKCiAgICAgCiAgICBOUkhZX1JFQUxfRlJBTkdFICAgIHJlYWxGcmFuZ2U7CiAgICBOUkhZX0lO
VF9GUkFOR0UgICAgIGludEZyYW5nZTsKCiAgICBOUkhZX0ZSQU5HRSAoCiAgICAgICAgdm9pZCAK
ICAgICkgeyBmbGFncyA9ICgweDAwMDAwMDAwKSA7IH0KCiAgICB+TlJIWV9GUkFOR0UgKAogICAg
ICAgIHZvaWQgCiAgICApIHsgZmxhZ3MgPSAoMHgwMDAwMDAwMCkgOyB9CgogICAgc3RhdGljIGNv
bnN0IENIQVIgICAqUHJpbnRTZWxmQ2xhc3NuYW1lICgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICkgeyByZXR1cm4gKCJOUkhZX0ZSQU5H
RSIpOyB9CgoKCgoKCgoKCn07CmlubGluZSBjb25zdCBjaGFyICpjbGFzc05hbWUoIE5SSFlfRlJB
TkdFICkgeyByZXR1cm4gIk5SSFlfRlJBTkdFIjsgfTsKCgogCiAKCiAKIAoKY2xhc3MgRnJhbmdl
U3Vic2NyaWJlciB7CnB1YmxpYzoKICAgIHZpcnR1YWwgdm9pZCBTZXRUb3RhbEZyYW5nZSAoZmxv
YXQgc3RhcnQsIGZsb2F0IGVuZCkgeyB9OwogICAgdmlydHVhbCB2b2lkIFNldEZyYW5nZSAgICAg
IChmbG9hdCBzdGFydCwgZmxvYXQgZW5kKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgU2V0RnJhbWUg
ICAgICAgKGZsb2F0IG5ld0ZyYW1lKSB7IH07CiAgICB2aXJ0dWFsIHZvaWQgU2V0RmluYyAgICAg
ICAgKGZsb2F0IGZpbmMpICAgICB7IH07CiAgICB2aXJ0dWFsIHZvaWQgU2hpZnRGcmFtZXMgICAg
KGZsb2F0IHN0YXJ0LCBmbG9hdCBzaXplLCBmbG9hdCBkZWx0YSkgeyB9Owp9OwoKIAoKCgpjbGFz
cyBOUkhZX2NsYXNzVGltZSB7CgogICAgIAogICAgZnJpZW5kIGNsYXNzIE5SSFlfY2xhc3NDaGFu
bmVsOwogICAgTGlzdCA8RnJhbmdlU3Vic2NyaWJlciAqPiBfY3VycmVudEZyYW5nZVN1YnNjcmli
ZXJzOwogICAgdm9pZCBwdWJsaXNoVG90YWxGcmFuZ2UgICAoKTsKICAgIHZvaWQgcHVibGlzaEN1
cnJlbnRGcmFuZ2UgKCk7CiAgICB2b2lkIHB1Ymxpc2hDdXJyZW50RnJhbWUgICgpOwogICAgdm9p
ZCBwdWJsaXNoQ3VycmVudEZpbmMgICAoKTsKICAgIHZvaWQgcHVibGlzaFNoaWZ0RnJhbWVzICAg
KGZsb2F0LCBmbG9hdCwgZmxvYXQpOwogICAgIAoKICAgICAKCgogICAgSU5UICAgICAgICAgICAg
IHRvdGFsRnJhbWVzOwoKICAgICAKCiAgICBJTlQgICAgICAgICAgICAgb2Zmc2V0OwoKICAgICAK
ICAgIFJFQUwgICAgICAgICAgICBjdXJyZW50RnJhbWU7CgogICAgIAogICAgTlJIWV9GUkFOR0Ug
ICAgIGN1cnJlbnRGcmFuZ2U7CgogICAgIAoKCiAgICBaT09MRUFOICAgICAgICAgYWxsb3dPdXRP
ZlJhbmdlQ3VycmVudEZyYW1lOwoKICAgICAKCiAgICBaT09MRUFOICAgICAgICAgc2VjdGlvbkFj
dGl2ZTsKICAgIFJFQUwgICAgICAgICAgICBzZWN0aW9uU3RhcnQ7CiAgICBSRUFMICAgICAgICAg
ICAgc2VjdGlvbkVuZDsKCiAgICAgCgogICAgQk9PTEVBTiBfY3JlYXRlZEZsYWc7CgogICAgIAoK
CiAgICAgCgogICAgSU5UICAgICAgICAgICAgIGdldEZyYW1lSW5kZXggKAogICAgICAgICAgICAg
ICAgICAgICAgICBJTlQgICAgIHRpbWUKICAgICAgICAgICAgICAgICAgICApIHsgcmV0dXJuICh0
aW1lIC0gb2Zmc2V0KTsgfQoKcHVibGljOgoKICAgIE5SSFlfY2xhc3NUaW1lICgpOwoKICAgICAK
ICAgIFpPT0xFQU4gICAgICAgICBTZXRPZmZzZXQgKAogICAgICAgICAgICAgICAgICAgICAgICBJ
TlQgICAgIG9mZnNldAogICAgICAgICAgICAgICAgICAgICk7CiAgICBJTlQgICAgICAgICAgICAg
R2V0T2Zmc2V0ICgKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAg
ICAgICApIHsgcmV0dXJuIChvZmZzZXQpOyB9CgogICAgIAogICAgdm9pZCAgICAgICAgICAgICBT
ZXRGcmFtZVZhcmlhYmxlcyAoKTsKCiAgICAgCgogICAgSU5UICAgICAgICAgICAgIEdldFVzZXJU
b3RhbEZyYW1lc1N0YXJ0ICgKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAg
ICAgICAgICAgICApIHsgcmV0dXJuICgxICsgb2Zmc2V0KTsgfQogICAgSU5UICAgICAgICAgICAg
IEdldFVzZXJUb3RhbEZyYW1lc0VuZCAoCiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAg
ICAgICAgICAgICAgICAgICAgKSB7IHJldHVybiAodG90YWxGcmFtZXMgKyBvZmZzZXQpOyB9CiAg
ICB2b2lkICAgICAgICAgICAgIEdldFVzZXJUb3RhbEZyYW5nZSAoCiAgICAgICAgICAgICAgICAg
ICAgICAgIElOVCAgICAgKnN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBJTlQgICAgICpl
bmQKICAgICAgICAgICAgICAgICAgICApIHsgKnN0YXJ0ID0gKDEgKyBvZmZzZXQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAqZW5kID0gKHRvdGFsRnJhbWVzICsgb2Zmc2V0KTsKICAgICAgICAg
ICAgICAgICAgICAgIH0KCiAgICAgCgogICAgWk9PTEVBTiAgICAgICAgIEFkZEZyYW1lcyAoCiAg
ICAgICAgICAgICAgICAgICAgICAgIElOVCAgICAgYW1vdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICBJTlQgICAgIGluc2VydEFmdGVyCiAgICAgICAgICAgICAgICAgICAgKTsKICAgIFpPT0xF
QU4gICAgICAgICBTdWJGcmFtZXMgKAogICAgICAgICAgICAgICAgICAgICAgICBJTlQgICAgIGFt
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgSU5UICAgICByZW1vdmVBZnRlcgogICAgICAg
ICAgICAgICAgICAgICk7CgogICAgIAoKCgogICAgWk9PTEVBTiAgICAgICAgIFNldEFsbG93T3V0
T2ZSYW5nZUN1cnJlbnRGcmFtZSAoCiAgICAgICAgICAgICAgICAgICAgICAgIFpPT0xFQU4gc3Rh
dGUKICAgICAgICAgICAgICAgICAgICApOwogICAgWk9PTEVBTiAgICAgICAgIEdldEFsbG93T3V0
T2ZSYW5nZUN1cnJlbnRGcmFtZSAoCiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAg
ICAgICAgICAgICAgICAgKSB7IHJldHVybiAoYWxsb3dPdXRPZlJhbmdlQ3VycmVudEZyYW1lKTsg
fQoKICAgIFpPT0xFQU4gICAgICAgICBTZXRTZWN0aW9uQWN0aXZlICgKICAgICAgICAgICAgICAg
ICAgICAgICAgWk9PTEVBTiBuZXdTdGF0dXMKICAgICAgICAgICAgICAgICAgICApIHsgWk9PTEVB
TiAgICAgb2xkOwogICAgICAgICAgICAgICAgICAgICAgICBvbGQgPSBzZWN0aW9uQWN0aXZlOwog
ICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uQWN0aXZlID0gbmV3U3RhdHVzOwogICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKG9sZCk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICBaT09MRUFOICAgICAgICAgR2V0U2VjdGlvbkFjdGl2ZSAoCiAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgKSB7IHJldHVybiAoc2VjdGlvbkFjdGl2ZSk7
IH0KICAgIFpPT0xFQU4gICAgICAgICBTZXRTZWN0aW9uUmFuZ2UgKAogICAgICAgICAgICAgICAg
ICAgICAgICBSRUFMICAgIHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBSRUFMICAgIGVu
ZAogICAgICAgICAgICAgICAgICAgICk7CiAgICB2b2lkICAgICAgICAgICAgIEdldFNlY3Rpb25S
YW5nZSAoCiAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgICAgKnN0YXJ0LAogICAgICAgICAg
ICAgICAgICAgICAgICBSRUFMICAgICplbmQKICAgICAgICAgICAgICAgICAgICApIHsgKnN0YXJ0
ID0gc2VjdGlvblN0YXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAqZW5kID0gc2VjdGlvbkVu
ZDsKICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgCiAgICBaT09MRUFOICAgICAgICAgU2V0
Q3VycmVudEZyYW5nZSAoCiAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgICAgbmV3U3RhcnQs
CiAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgICAgbmV3RW5kLAogICAgICAgICAgICAgICAg
ICAgICAgICBSRUFMICAgIG5ld0luYwogICAgICAgICAgICAgICAgICAgICk7CgogICAgdm9pZCAg
ICAgICAgICAgICBHZXRDdXJyZW50RnJhbmdlICgKICAgICAgICAgICAgICAgICAgICAgICAgUkVB
TCAgICAqc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgICAgKmVuZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgUkVBTCAgICAqaW5jCiAgICAgICAgICAgICAgICAgICAgKSB7ICpz
dGFydCA9IGN1cnJlbnRGcmFuZ2UucmVhbEZyYW5nZS5zdGFydDsKICAgICAgICAgICAgICAgICAg
ICAgICAgKmVuZCA9IGN1cnJlbnRGcmFuZ2UucmVhbEZyYW5nZS5lbmQ7CiAgICAgICAgICAgICAg
ICAgICAgICAgICppbmMgPSBjdXJyZW50RnJhbmdlLnJlYWxGcmFuZ2UuaW5jOwogICAgICAgICAg
ICAgICAgICAgICAgfQoKICAgIHZvaWQgICAgICAgICAgICAgR2V0Q3VycmVudEZyYW5nZSAoCiAg
ICAgICAgICAgICAgICAgICAgICAgIE5SSFlfUkVBTF9GUkFOR0UgICAgKmZyYW5nZQogICAgICAg
ICAgICAgICAgICAgICkgeyBmcmFuZ2UtPnN0YXJ0ID0gY3VycmVudEZyYW5nZS5yZWFsRnJhbmdl
LnN0YXJ0OwogICAgICAgICAgICAgICAgICAgICAgICBmcmFuZ2UtPmVuZCA9IGN1cnJlbnRGcmFu
Z2UucmVhbEZyYW5nZS5lbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW5nZS0+aW5jID0g
Y3VycmVudEZyYW5nZS5yZWFsRnJhbmdlLmluYzsKICAgICAgICAgICAgICAgICAgICAgIH0KCiAg
ICB2b2lkICAgICAgICAgICAgIEdldEN1cnJlbnRGcmFuZ2UgKAogICAgICAgICAgICAgICAgICAg
ICAgICBJTlQgICAgICpzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgSU5UICAgICAqZW5k
LAogICAgICAgICAgICAgICAgICAgICAgICBJTlQgICAgICppbmMKICAgICAgICAgICAgICAgICAg
ICApIHsgKnN0YXJ0ID0gY3VycmVudEZyYW5nZS5pbnRGcmFuZ2Uuc3RhcnQ7CiAgICAgICAgICAg
ICAgICAgICAgICAgICplbmQgPSBjdXJyZW50RnJhbmdlLmludEZyYW5nZS5lbmQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgICppbmMgPSBjdXJyZW50RnJhbmdlLmludEZyYW5nZS5pbmM7CiAgICAg
ICAgICAgICAgICAgICAgICB9CgogICAgdm9pZCAgICAgICAgICAgICBHZXRDdXJyZW50RnJhbmdl
ICgKICAgICAgICAgICAgICAgICAgICAgICAgTlJIWV9JTlRfRlJBTkdFICAgICAqZnJhbmdlCiAg
ICAgICAgICAgICAgICAgICAgKSB7IGZyYW5nZS0+c3RhcnQgPSBjdXJyZW50RnJhbmdlLmludEZy
YW5nZS5zdGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgZnJhbmdlLT5lbmQgPSBjdXJyZW50
RnJhbmdlLmludEZyYW5nZS5lbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW5nZS0+aW5j
ID0gY3VycmVudEZyYW5nZS5pbnRGcmFuZ2UuaW5jOwogICAgICAgICAgICAgICAgICAgICAgfQoK
ICAgICAKICAgIFpPT0xFQU4gICAgICAgICBTZXRDdXJyZW50RnJhbWUoZmxvYXQgbmV3RnJhbWUp
OwogICAgZmxvYXQgICAgICAgICAgIEdldEN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIGN1cnJlbnRG
cmFtZTsgfQoKICAgICAKICAgIHZvaWQgICAgICAgICAgICBTZXRVbmRvRm9yRnJhbmdlQ2hhbmdl
IChjb25zdCBOUkhZX1JFQUxfRlJBTkdFICZuZXdGcmFuZ2UpOwogICAgIAogICAgdm9pZCAgICAg
ICAgICAgIERlc2NyaWJlQ3JlYXRlICgKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgTlJI
WV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYgICAgCiAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZv
aWQgICAgICAgICAgICBEZXNjcmliZUZ1bGxTdGF0ZSAoCiAgICAgICAgICAgICAgICAgICAgICAg
IGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAgKTsK
ICAgIHZvaWQgICAgICAgICAgICBEZXNjcmliZUZ1bGxTdGF0ZVBhY2tlZCAoCiAgICAgICAgICAg
ICAgICAgICAgICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAg
ICAgICAgICAgKTsKCiAgICB2b2lkICAgICAgICAgICAgRGVzY3JpYmVDcmVhdGUgKAogICAgICAg
ICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJiwgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgTlJIWV9JTlRfRlJBTkdFICAgICAgICAgIGZyYW5nZQogICAg
ICAgICAgICAgICAgICAgICk7CiAgICB2b2lkICAgICAgICAgICAgRGVzY3JpYmVGdWxsU3RhdGUg
KAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0g
JiwKICAgICAgICAgICAgICAgICAgICAgICAgTlJIWV9JTlRfRlJBTkdFICAgICAgICAgIGZyYW5n
ZQogICAgICAgICAgICAgICAgICAgICk7CgoKCiAgICBCT09MRUFOIEdldENyZWF0ZWRGbGFnICgp
IHsgcmV0dXJuIChfY3JlYXRlZEZsYWcpOyB9CiAgICB2b2lkIFNldENyZWF0ZWRGbGFnICgpIHsg
X2NyZWF0ZWRGbGFnID0gMSA7IH0KICAgIHZvaWQgQ2xlYXJDcmVhdGVkRmxhZygpIHsgX2NyZWF0
ZWRGbGFnID0gMCA7IH0KICAgIHZvaWQgQXR0YWNoQ3VycmVudEZyYW5nZVN1YnNjcmliZXIgKEZy
YW5nZVN1YnNjcmliZXIgKiBzdWJzY3JpYmVyKTsKICAgIHZvaWQgRGV0YWNoQ3VycmVudEZyYW5n
ZVN1YnNjcmliZXIgKEZyYW5nZVN1YnNjcmliZXIgKiBzdWJzY3JpYmVyKTsKICAgIGludCBHZXRU
b3RhbEZyYW1lcyAoKSB7IHJldHVybiAodG90YWxGcmFtZXMpOyB9Cn07CgogCgogCgojIDMwICJo
L25yaHlfd29ybGQuaCIgMgoKCgogCiAKCmNsYXNzIE5SSFlfY2xhc3NBcHBhcml0aW9uOwpjbGFz
cyBOUkhZX2NsYXNzQ2FtZXJhOwpjbGFzcyBOUkhZX2NsYXNzQ29sbGlzaW9uOwpjbGFzcyBOUkhZ
X2NsYXNzRHluYW1pY3M7CmNsYXNzIE5SSFlfY2xhc3NGb3JjZTsKY2xhc3MgTlJIWV9jbGFzc0dl
bmVyYXRvcjsKY2xhc3MgTlJIWV9jbGFzc0hvbWU7CmNsYXNzIE5SSFlfY2xhc3NJbmt5OwpjbGFz
cyBOUkhZX2NsYXNzS2xpc3Q7CmNsYXNzIE5SSFlfY2xhc3NGdXI7CmNsYXNzIE5SSFlfY2xhc3NN
dXNjbGU7CmNsYXNzIE5SSFlfY2xhc3NMYXllcjsKY2xhc3MgTlJIWV9jbGFzc0xpZ2h0OwpjbGFz
cyBOUkhZX2NsYXNzTWFwOwpjbGFzcyBOUkhZX2NsYXNzTWF0ZXJpYWw7CmNsYXNzIE5SSFlfY2xh
c3NNb2RlbDsKY2xhc3MgTlJIWV9jbGFzc09iamVjdDsKY2xhc3MgTlJIWV9jbGFzc1Jvb3Q7CmNs
YXNzIE5SSFlfY2xhc3NSb3RvOwpjbGFzcyBOUkhZX2NsYXNzU2NhZmZvbGQ7CmNsYXNzIE5SSFlf
Y2xhc3NTb3VuZDsKY2xhc3MgTlJIWV9jbGFzc1RleDsKY2xhc3MgTlJIWV9jbGFzc1RoaW5nOwpj
bGFzcyBOUkhZX2NsYXNzVGltZTsKY2xhc3MgTlJIWV9jbGFzc1RyYWNrOwpjbGFzcyBOUkhZX2Ns
YXNzVXNlTWFwOwoKY2xhc3MgRnJhbmdlQ2FjaGVMb3JkOwpjbGFzcyBOUkhZX1RyYXZlcnNlOwoK
IAoKY2xhc3MgTlJIWV9Xb3JsZCB7CgogICAgc3RhdGljIHZlY3RvcjxOUkhZX1dvcmxkICo+ICpf
d29ybGRzOwogICAgdmVjdG9yPE5SSFlfSU5UX0ZSQU5HRT4gX3NjblNlY3Rpb25zOwoKICAgIHZl
Y3RvcjxOUkhZX2NsYXNzVGhpbmcgKj4gICAgICAgX2FsbFRoaW5nczsKICAgIHZlY3RvcjxOUkhZ
X2NsYXNzT2JqZWN0ICo+ICAgICAgX2FsbE9iamVjdHM7CiAgICB2ZWN0b3I8TlJIWV9jbGFzc0Nh
bWVyYSAqPiAgICAgIF9hbGxDYW1lcmFzOwogICAgdmVjdG9yPE5SSFlfY2xhc3NMaWdodCAqPiAg
ICAgICBfYWxsTGlnaHRzOwogICAgdmVjdG9yPE5SSFlfY2xhc3NNb2RlbCAqPiAgICAgICBfYWxs
TW9kZWxzOwogICAgdmVjdG9yPE5SSFlfY2xhc3NUcmFjayAqPiAgICAgICBfYWxsVHJhY2tzOwog
ICAgdmVjdG9yPE5SSFlfY2xhc3NIb21lICo+ICAgICAgICBfYWxsSG9tZXM7CiAgICB2ZWN0b3I8
TlJIWV9jbGFzc01hcCAqPiAgICAgICAgIF9hbGxNYXBzOwogICAgdmVjdG9yPE5SSFlfY2xhc3NV
c2VNYXAgKj4gICAgICBfYWxsVXNlTWFwczsKICAgIHZlY3RvcjxOUkhZX2NsYXNzU291bmQgKj4g
ICAgICAgX2FsbFNvdW5kczsKICAgIHZlY3RvcjxOUkhZX2NsYXNzRHluYW1pY3MgKj4gICAgX2Fs
bER5bmFtaWNzczsKICAgIHZlY3RvcjxOUkhZX2NsYXNzRm9yY2UgKj4gICAgICAgX2FsbEZvcmNl
czsKICAgIHZlY3RvcjxOUkhZX2NsYXNzR2VuZXJhdG9yICo+ICAgX2FsbEdlbmVyYXRvcnM7CiAg
ICB2ZWN0b3I8TlJIWV9jbGFzc0NvbGxpc2lvbiAqPiAgIF9hbGxDb2xsaXNpb25zOwogICAgdmVj
dG9yPE5SSFlfY2xhc3NJbmt5ICo+ICAgICAgICBfYWxsSW5reXM7CiAgICB2ZWN0b3I8TlJIWV9j
bGFzc1NjYWZmb2xkICo+ICAgIF9hbGxTY2FmZm9sZHM7CiAgICB2ZWN0b3I8TlJIWV9jbGFzc0Fw
cGFyaXRpb24gKj4gIF9hbGxBcHBhcml0aW9uczsKICAgIHZlY3RvcjxOUkhZX2NsYXNzUm90byAq
PiAgICAgICAgX2FsbFJvdG9zOwogICAgdmVjdG9yPE5SSFlfY2xhc3NUZXggKj4gICAgICAgICBf
YWxsVGV4czsKICAgIHZlY3RvcjxOUkhZX2NsYXNzTWF0ZXJpYWwgKj4gICAgX2FsbE1hdGVyaWFs
czsKICAgIHZlY3RvcjxOUkhZX2NsYXNzUm9vdCAqPiAgICAgICAgX2FsbFJvb3RzOwogICAgdmVj
dG9yPE5SSFlfY2xhc3NLbGlzdCAqPiAgICAgICBfYWxsS2xpc3RzOwogICAgdmVjdG9yPE5SSFlf
Y2xhc3NGdXIgKj4gICAgICAgICBfYWxsRnVyczsKICAgIHZlY3RvcjxOUkhZX2NsYXNzTXVzY2xl
ICo+ICAgICAgX2FsbE11c2NsZXM7CiAgICB2ZWN0b3I8TlJIWV9jbGFzc0xheWVyICo+ICAgICAg
IF9hbGxMYXllcnM7CgogICAgTlJIWV9jbGFzc1RoaW5nICpfaGllclJvb3Q7ICAKcHVibGljOgoK
ICAgIE5SSFlfY2xhc3NUaGluZyAqaGllclJvb3QoKSB7IHJldHVybiBfaGllclJvb3Q7IH0KCiAg
ICBGcmFuZ2VDYWNoZUxvcmQgKmltYWdlQ2FjaGVMb3JkOwogICAgRnJhbmdlQ2FjaGVMb3JkICpm
cmFuZ2VDYWNoZUxvcmQ7CiAgICBOUkhZX2NsYXNzVGltZSAqVGltZUxvcmQ7CiAgICBOUkhZX1Ry
YXZlcnNlICpUcmF2ZXJzZTsKCiAgICAgCiAgICAgCiAgICAgCgogICAgaW50IE5SSFlfRnBzOwog
ICAgaW50IE5SSFlfUGxheUZwczsKICAgIGZsb2F0IE5SSFlfRmFzdEZvcndhcmQ7CiAgICBmbG9h
dCBOUkhZX09yaWdpblNpemU7CiAgICBmbG9hdCBOUkhZX0ZpcnN0UmVwZWF0OwogICAgQk9PTEVB
TiBOUkhZX09yaWdpbkRpc3BsYXk7CiAgICBpbnQgTlJIWV9Tb3VuZEFjdGlvbjsKCiAgICAgCgog
ICAgTlJIWV9Xb3JsZCAoKTsKICAgIH5OUkhZX1dvcmxkICgpOwoKICAgICAKCiAgICB2b2lkIElu
aXRpYWxpemVGb3JBY2Nlc3MgKCk7CiAgICB2b2lkIEF0dGFjaFRvV29ybGQgKGZsb2F0IGZyYW1l
KTsKICAgIHZvaWQgQXR0YWNoVG9Xb3JsZCAoZmxvYXQgZnJhbWUsIGZsb2F0IHJlZkZyYW1lKTsK
CiAgICAgCgogICAgQk9PTEVBTiBTZXRXb3JsZCAoaW50IHdvcmxkKTsKICAgIHZvaWQgTmV3V29y
bGQgKCk7CgogICAgdm9pZCBzZXRTY25TZWN0aW9ucyhjb25zdCB2ZWN0b3I8TlJIWV9JTlRfRlJB
TkdFPiAmc2VjdGlvbnMpIHsKICAgICAgICBfc2NuU2VjdGlvbnMgPSBzZWN0aW9uczsgfQogICAg
TlJIWV9JTlRfRlJBTkdFIEdldFNlY3Rpb25GcmFuZ2UgKGZsb2F0IGZyYW1lKTsKICAgIHN0cmlu
ZyBHZXRTY25TZWN0aW9uU3RyaW5nKCk7CgogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NUaGlu
ZyAqPiAmYWxsVGhpbmdzKCkgeyByZXR1cm4gX2FsbFRoaW5nczsgfQogICAgY29uc3QgdmVjdG9y
PE5SSFlfY2xhc3NPYmplY3QgKj4gJmFsbE9iamVjdHMoKSB7IHJldHVybiBfYWxsT2JqZWN0czsg
fQogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NDYW1lcmEgKj4gJmFsbENhbWVyYXMoKSB7IHJl
dHVybiBfYWxsQ2FtZXJhczsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NMaWdodCAqPiAm
YWxsTGlnaHRzKCkgeyByZXR1cm4gX2FsbExpZ2h0czsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlf
Y2xhc3NNb2RlbCAqPiAmYWxsTW9kZWxzKCkgeyByZXR1cm4gX2FsbE1vZGVsczsgfQogICAgY29u
c3QgdmVjdG9yPE5SSFlfY2xhc3NUcmFjayAqPiAmYWxsVHJhY2tzKCkgeyByZXR1cm4gX2FsbFRy
YWNrczsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NIb21lICo+ICZhbGxIb21lcygpIHsg
cmV0dXJuIF9hbGxIb21lczsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NNYXAgKj4gJmFs
bE1hcHMoKSB7IHJldHVybiBfYWxsTWFwczsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NV
c2VNYXAgKj4gJmFsbFVzZU1hcHMoKSB7IHJldHVybiBfYWxsVXNlTWFwczsgfQogICAgY29uc3Qg
dmVjdG9yPE5SSFlfY2xhc3NTb3VuZCAqPiAmYWxsU291bmRzKCkgeyByZXR1cm4gX2FsbFNvdW5k
czsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NEeW5hbWljcyAqPiAmYWxsRHluYW1pY3Nz
KCkgeyByZXR1cm4gX2FsbER5bmFtaWNzczsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NG
b3JjZSAqPiAmYWxsRm9yY2VzKCkgeyByZXR1cm4gX2FsbEZvcmNlczsgfQogICAgY29uc3QgdmVj
dG9yPE5SSFlfY2xhc3NHZW5lcmF0b3IgKj4gJmFsbEdlbmVyYXRvcnMoKSB7IHJldHVybiBfYWxs
R2VuZXJhdG9yczsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NDb2xsaXNpb24gKj4gJmFs
bENvbGxpc2lvbnMoKSB7IHJldHVybiBfYWxsQ29sbGlzaW9uczsgfQogICAgY29uc3QgdmVjdG9y
PE5SSFlfY2xhc3NJbmt5ICo+ICZhbGxJbmt5cygpIHsgcmV0dXJuIF9hbGxJbmt5czsgfQogICAg
Y29uc3QgdmVjdG9yPE5SSFlfY2xhc3NTY2FmZm9sZCAqPiAmYWxsU2NhZmZvbGRzKCkgeyByZXR1
cm4gX2FsbFNjYWZmb2xkczsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NBcHBhcml0aW9u
ICo+ICZhbGxBcHBhcml0aW9ucygpIHsgcmV0dXJuIF9hbGxBcHBhcml0aW9uczsgfQogICAgY29u
c3QgdmVjdG9yPE5SSFlfY2xhc3NSb3RvICo+ICZhbGxSb3RvcygpIHsgcmV0dXJuIF9hbGxSb3Rv
czsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NUZXggKj4gJmFsbFRleHMoKSB7IHJldHVy
biBfYWxsVGV4czsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NNYXRlcmlhbCAqPiAmYWxs
TWF0ZXJpYWxzKCkgeyByZXR1cm4gX2FsbE1hdGVyaWFsczsgfQogICAgY29uc3QgdmVjdG9yPE5S
SFlfY2xhc3NSb290ICo+ICZhbGxSb290cygpIHsgcmV0dXJuIF9hbGxSb290czsgfQogICAgY29u
c3QgdmVjdG9yPE5SSFlfY2xhc3NLbGlzdCAqPiAmYWxsS2xpc3RzKCkgeyByZXR1cm4gX2FsbEts
aXN0czsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NGdXIgKj4gJmFsbEZ1cnMoKSB7IHJl
dHVybiBfYWxsRnVyczsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlfY2xhc3NNdXNjbGUgKj4gJmFs
bE11c2NsZXMoKSB7IHJldHVybiBfYWxsTXVzY2xlczsgfQogICAgY29uc3QgdmVjdG9yPE5SSFlf
Y2xhc3NMYXllciAqPiAmYWxsTGF5ZXJzKCkgeyByZXR1cm4gX2FsbExheWVyczsgfQp9OwoKZXh0
ZXJuIE5SSFlfV29ybGQgKldvcmxkOwogCgojIDMwICJucmh5L05SSFlfQWNjZXNzLmMiIDIKCgoj
IDEgImgvbnJoeV9jbGFzc0NhbWVyYS5oIiAxCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoMCiAK
CgoKIAoKCiAKCgoKCgogCiMgMSAiaC9ucmh5X2NsYXNzT2JqZWN0LmgiIDEKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKDAogCgoKCiAKCgogCgoKCgoKIAojIDEgImgvbnJoeV9jbGFzc0FwcGFyaXRp
b24uaCIgMQoKIAoKCgoKCgoKCgoKCgoKCgoKCgwKIAoKCgogCgoKIAoKCgoKCiAKIyAxICJoL25y
aHlfY2xhc3NUaGluZy5oIiAxCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoMCiAKCgoKIAoKCiAKCgoK
CgogCgoKIyAxICIvc29mdHdhcmUvdGhhbGlhL2gvT2JzZXJ2ZXIuaCIgMQoKCgoKCiAKIAogCiAK
CgoKCgoKCgoKCgogCiAKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKY2xhc3MgU3ViamVj
dDsKCmNsYXNzIE9ic2VydmVyIHsKcHJvdGVjdGVkOgogICAgZnJpZW5kIGNsYXNzIFN1YmplY3Q7
CiAgICBTdWJqZWN0ICpfc3ViamVjdDsKCnB1YmxpYzoKICAgIE9ic2VydmVyIChTdWJqZWN0ICpz
dWIpOwogICAgdmlydHVhbCB+T2JzZXJ2ZXIgKCk7CgogICAgdmlydHVhbCB2b2lkIFJlZnJlc2hP
YnNlcnZlciAoU3ViamVjdCAqKSAgeyB9OwogICAgdmlydHVhbCBpbnQgIEdldE9ic2VydmVyVHlw
ZSAoKSAgICAgICAgICAgeyByZXR1cm4gMHgwMDAwMDA4MCA7IH07CiAgICB2aXJ0dWFsIGludCAg
QWxsb3dEZXN0cnVjdEJ5U3ViamVjdCAoKSAgICB7IHJldHVybiAwOyB9OwoKICAgIFN1YmplY3Qg
KnN1YmplY3QoKSAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIF9zdWJqZWN0OyB9Owp9
OwoKY2xhc3MgU3ViamVjdCB7CnByaXZhdGU6CiAgICBzdGF0aWMgTGlzdDxTdWJqZWN0ICo+IF90
b1VwZGF0ZTsKcHJvdGVjdGVkOgogICAgTGlzdDxPYnNlcnZlciAqPiAgICAgICBfb2JzZXJ2ZXJz
OwogICAgdW5zaWduZWQgICAgICAgICAgICAgICBfdXBkYXRlRmxhZ3M7CgpwdWJsaWM6CiAgICBT
dWJqZWN0ICgpIDogX3VwZGF0ZUZsYWdzICgwKSAgICAgICAgICB7IH07CiAgICBTdWJqZWN0IChj
b25zdCBTdWJqZWN0ICYpOwogICAgU3ViamVjdCAmb3BlcmF0b3IgPSAoY29uc3QgU3ViamVjdCAm
KTsKICAgIHZpcnR1YWwgflN1YmplY3QgKCk7CiAgICB1bnNpZ25lZCBJc1VwZGF0ZVNldCAodW5z
aWduZWQgZmxhZ3MpICB7IHJldHVybiAoX3VwZGF0ZUZsYWdzICYgZmxhZ3MpOyB9OwogICAgdW5z
aWduZWQgR2V0VXBkYXRlRmxhZ3MgKCkgICAgICAgICAgICAgeyByZXR1cm4gKF91cGRhdGVGbGFn
cyk7IH07CiAgICB2b2lkIERlbGF5ZWRVcGRhdGUgKHVuc2lnbmVkIGZsYWdzKSAgICB7CiAgICAg
ICAgaWYgKCEgX3VwZGF0ZUZsYWdzICYmIGZsYWdzKQogICAgICAgICAgICBfdG9VcGRhdGUuYXBw
ZW5kICh0aGlzKTsKICAgICAgICBfdXBkYXRlRmxhZ3MgfD0gZmxhZ3M7CiAgICB9OwogICAgaW50
IE5lZWRzVXBkYXRlICgpICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gKF91cGRhdGVGbGFn
cyAhPSAwKTsgfTsKICAgIHN0YXRpYyB2b2lkIFVwZGF0ZUFsbE9ic2VydmVycyAoKTsKCiAgICB2
aXJ0dWFsIHZvaWQgQ3JlYXRlT2JzZXJ2ZXIgIChpbnQgdHlwZSkgeyB9OwogICAgdmlydHVhbCB2
b2lkIERlc3Ryb3lPYnNlcnZlciAoaW50IHR5cGUpOwoKICAgIGludCBJc0N1cnJlbnQgKCkgICAg
ICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIChfb2JzZXJ2ZXJzLnNpemUoKSA+IDApOyB9Owog
ICAgdm9pZCBTdWJzY3JpYmUgICAgICAgKE9ic2VydmVyICpvYnMpOwogICAgdm9pZCBVbnN1YnNj
cmliZSAgICAgKE9ic2VydmVyICpvYnMpOwogICAgdm9pZCBVcGRhdGVPYnNlcnZlcnMgKHVuc2ln
bmVkIGZsYWdzID0gMCk7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KY2xhc3MgT2JzZXJ2ZXJGYWN0
b3J5IHsKcHJvdGVjdGVkOgogICAgc3RhdGljIHZvaWQgZG9DcmVhdGVPYnNlcnZlciAgICAgICAg
ICAgICAoU3ViamVjdCAqc3ViaiwgaW50IHR5cGUpOwogICAgc3RhdGljIExpc3Q8IHZvaWQgKCop
IChTdWJqZWN0ICosIGludCkgPiAgX29ic2VydmVyQ3JlYXRlRnVuYzsKcHVibGljOgogICAgc3Rh
dGljIHZvaWQgQWRkQ3JlYXRlT2JzZXJ2ZXJDYWxsYmFjayAgICAodm9pZCAoKmZjbikoU3ViamVj
dCAqLCBpbnQgdHlwZSkpOwogICAgc3RhdGljIHZvaWQgUmVtb3ZlQ3JlYXRlT2JzZXJ2ZXJDYWxs
YmFjayAodm9pZCAoKmZjbikoU3ViamVjdCAqLCBpbnQgdHlwZSkpOwp9OwoKCiMgMSAiL3NvZnR3
YXJlL3RoYWxpYS9oL09ic2VydmVyLmMiIDEKdGVtcGxhdGUgPGNsYXNzIFQ+CnZvaWQgT2JzZXJ2
ZXJGYWN0b3J5PFQ+OjpBZGRDcmVhdGVPYnNlcnZlckNhbGxiYWNrICgKICAgICAgICB2b2lkICgq
ZmNuKSAoU3ViamVjdCAqLCBpbnQgdHlwZSkKICAgICAgICApIAp7CiAgICAgICAgX29ic2VydmVy
Q3JlYXRlRnVuYy5hcHBlbmQgKGZjbik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBUPgp2b2lkIE9ic2Vy
dmVyRmFjdG9yeTxUPjo6UmVtb3ZlQ3JlYXRlT2JzZXJ2ZXJDYWxsYmFjayAoCiAgICAgICAgdm9p
ZCAoKmZjbikgKFN1YmplY3QgKiwgaW50IHR5cGUpCiAgICAgICAgKSAKewogICAgZm9yIChpbnQg
aT0wOyBpPF9vYnNlcnZlckNyZWF0ZUZ1bmMuc2l6ZSgpOyBpKyspCiAgICAgICAgaWYgKF9vYnNl
cnZlckNyZWF0ZUZ1bmNbaV0gPT0gZmNuKSB7CiAgICAgICAgICAgIF9vYnNlcnZlckNyZWF0ZUZ1
bmMucmVtb3ZlIChpKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgVD4Kdm9pZCBPYnNlcnZlckZhY3Rvcnk8VD46OmRvQ3JlYXRlT2JzZXJ2ZXIgKAogICAg
ICAgIFN1YmplY3QgKnN1YmosIAogICAgICAgIGludCB0eXBlCiAgICAgICAgKSAKewogICAgZm9y
IChpbnQgaT0wOyBpPF9vYnNlcnZlckNyZWF0ZUZ1bmMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAo
Kl9vYnNlcnZlckNyZWF0ZUZ1bmNbaV0pKHN1YmosIHR5cGUpOwogICAgfQp9CiMgMTExICIvc29m
dHdhcmUvdGhhbGlhL2gvT2JzZXJ2ZXIuaCIgMgoKCgoKIyAzOSAiaC9ucmh5X2NsYXNzVGhpbmcu
aCIgMgoKIyAxICJoL25yaHlfZGVwZW5kLmgiIDEKCgoKCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoK
Y2xhc3MgTlJIWV9kZXBlbmRNYXN0ZXI7CmNsYXNzIE5SSFlfZGVwZW5kQ2xpZW50OwpjbGFzcyBO
UkhZX2RlcGVuZERhdGE7CmNsYXNzIE5SSFlfZGVwZW5kVHlwZTsKCmNsYXNzIE5SSFlfZGVwZW5k
Q2xpZW50IHsKICAgIGZyaWVuZCBOUkhZX2RlcGVuZE1hc3RlcjsKICAgIGZyaWVuZCBOUkhZX2Rl
cGVuZERhdGE7CiAgICB2ZWN0b3I8TlJIWV9kZXBlbmREYXRhICo+IF9tYXN0ZXJzOwogICAgc3Rh
dGljIHZlY3Rvcjxib29sPiBfdmVyYm9zZTsKcHJvdGVjdGVkOgogICAgdmlydHVhbCB2b2lkIGRl
dGFjaChOUkhZX2RlcGVuZERhdGEgKmRhdGEpOwogICAgdmlydHVhbCB2b2lkIG1ha2VEaXJ0eShO
UkhZX2RlcGVuZERhdGEgKmRhdGEpOwogICAgdmlydHVhbCBzdHJpbmcgY2xpZW50TmFtZSgpID0g
MDsKcHVibGljOgogICAgTlJIWV9kZXBlbmRDbGllbnQoKSB7fQogICAgTlJIWV9kZXBlbmRDbGll
bnQoY29uc3QgTlJIWV9kZXBlbmRDbGllbnQgJikge30KICAgIH5OUkhZX2RlcGVuZENsaWVudCgp
OwogICAgTlJIWV9kZXBlbmREYXRhICZBZGRNYXN0ZXIoTlJIWV9kZXBlbmRNYXN0ZXIgKm1hc3Rl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5SSFlfZGVwZW5kVHlwZSAqZGVwZW5k
VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudERhdGEpOwog
ICAgdm9pZCBSZW1vdmVNYXN0ZXIoTlJIWV9kZXBlbmRUeXBlICpkZXBlbmRUeXBlLCB2b2lkICpj
bGllbnREYXRhKTsKICAgIGludCBSZW1vdmVNYXN0ZXJzKE5SSFlfZGVwZW5kVHlwZSAqZGVwZW5k
VHlwZSwgdm9pZCAqY2xpZW50RGF0YSk7CiAgICBpbnQgUmVtb3ZlTWFzdGVycyhOUkhZX2RlcGVu
ZFR5cGUgKmRlcGVuZFR5cGUpOwogICAgaW50IENvbXB1dGUoZmxvYXQgZnJhbWUpOwogICAgc3Rh
dGljIHZvaWQgUHVzaFZlcmJvc2UoYm9vbCB2ZXJib3NlKTsKICAgIHN0YXRpYyBib29sIFBvcFZl
cmJvc2UoKTsKICAgIHN0YXRpYyBib29sIEdldFZlcmJvc2UoKTsKfTsKCmNsYXNzIE5SSFlfZGVw
ZW5kTWFzdGVyIHsKICAgIGZyaWVuZCBOUkhZX2RlcGVuZENsaWVudDsKICAgIGZyaWVuZCBOUkhZ
X2RlcGVuZERhdGE7CiAgICB2ZWN0b3I8TlJIWV9kZXBlbmREYXRhICo+IF9jbGllbnRzOwogICAg
dmlydHVhbCBpbnQgY29tcHV0ZShmbG9hdCBmcmFtZSwgTlJIWV9kZXBlbmRUeXBlICpkZXBlbmRU
eXBlKSA9IDA7CnB1YmxpYzoKICAgIE5SSFlfZGVwZW5kTWFzdGVyKCkge30KICAgIE5SSFlfZGVw
ZW5kTWFzdGVyKGNvbnN0IE5SSFlfZGVwZW5kTWFzdGVyICYpIHt9CiAgICB+TlJIWV9kZXBlbmRN
YXN0ZXIoKTsKICAgIHZvaWQgTWFrZURpcnR5KE5SSFlfZGVwZW5kVHlwZSAqZGVwZW5kVHlwZSk7
CiAgICB2b2lkIE1ha2VEaXJ0eSgpOwogICAgYm9vbCBIYXNEZXBlbmRUeXBlKE5SSFlfZGVwZW5k
VHlwZSAqZGVwZW5kVHlwZSk7Cn07CgpjbGFzcyBOUkhZX2RlcGVuZERhdGEgewogICAgZnJpZW5k
IE5SSFlfZGVwZW5kTWFzdGVyOwogICAgZnJpZW5kIE5SSFlfZGVwZW5kQ2xpZW50OwogICAgTlJI
WV9kZXBlbmRNYXN0ZXIgKl9tYXN0ZXI7CiAgICBOUkhZX2RlcGVuZENsaWVudCAqX2NsaWVudDsK
ICAgIE5SSFlfZGVwZW5kVHlwZSAqX2RlcGVuZFR5cGU7CiAgICB2b2lkICpfY2xpZW50RGF0YTsK
ICAgIE5SSFlfZGVwZW5kRGF0YShOUkhZX2RlcGVuZE1hc3RlciAqbWFzdGVyLCBOUkhZX2RlcGVu
ZFR5cGUgKl9kZXBlbmRUeXBlLAogICAgICAgICAgICAgICAgICAgIE5SSFlfZGVwZW5kQ2xpZW50
ICpjbGllbnQsIHZvaWQgKmNsaWVudERhdGEpOwogICAgfk5SSFlfZGVwZW5kRGF0YSgpOwpwdWJs
aWM6CiAgICBOUkhZX2RlcGVuZFR5cGUgKmRlcGVuZFR5cGUoKSB7IHJldHVybiBfZGVwZW5kVHlw
ZTsgfQogICAgdm9pZCAqY2xpZW50RGF0YSgpIHsgcmV0dXJuIF9jbGllbnREYXRhOyB9Cn07Cgpj
bGFzcyBOUkhZX2RlcGVuZFR5cGUge307CgoKIyA0MCAiaC9ucmh5X2NsYXNzVGhpbmcuaCIgMgoK
CiAKCgoKCgpzdHJ1Y3QgVEhJTkdfSUQgewogICAgSU5UICAgICAgICAgdHlwZTsKCiAgICAgCiAg
ICBJTlQgICAgICAgICAqYmFzZVR5cGVzOwogICAgSU5UICAgICAgICAgU2l6ZUJhc2VUeXBlczsK
ICAgIElOVCAgICAgICAgIG51bWJlckJhc2VUeXBlczsKfTsKCiAKIAogCgogCmNsYXNzIE5SSFlf
Q2xhc3NWaWV3T2JqZWN0OwpjbGFzcyBOUkhZX2NsYXNzQ2hhbm5lbDsKdHlwZWRlZiB2ZWN0b3I8
TlJIWV9jbGFzc0NoYW5uZWwgKj4gTlJIWV9jaGFubmVsczsKCiAKdGVtcGxhdGUgPGNsYXNzIFR5
cGU+IGNsYXNzIE5SSFlfbWF0Y2g7CnRlbXBsYXRlIDxjbGFzcyBUeXBlPiBjbGFzcyBOUkhZX2Fs
cGhhbGlzdDsKCiAKY2xhc3MgTlJIWV9JbmNsdWRlSGlzdG9yeTsKY2xhc3MgTlJIWV9UcmF2ZXJz
ZTsKCmV4dGVybiBOUkhZX2RlcGVuZFR5cGUgKk5SSFlfZGVwZW5kVGhpbmdXb3JsZDsKZXh0ZXJu
IE5SSFlfZGVwZW5kVHlwZSAqTlJIWV9kZXBlbmRUaGluZ0xvY2FsOwpleHRlcm4gTlJIWV9kZXBl
bmRUeXBlICpOUkhZX2RlcGVuZFRoaW5nU2hhcGU7CgogCnN0cnVjdCBOUkhZX2NsYXNzVGhpbmcg
OgogICAgcHVibGljIFN1YmplY3QsCiAgICBwdWJsaWMgTlJIWV9kZXBlbmRDbGllbnQsCiAgICBw
dWJsaWMgTlJIWV9kZXBlbmRNYXN0ZXIKewogICAgdHlwZWRlZiBOUkhZX2FscGhhbGlzdDxOUkhZ
X2NsYXNzVGhpbmc+IGFscGhhbGlzdDsKICAgIGZyaWVuZCBOUkhZX21hdGNoIDxOUkhZX2NsYXNz
VGhpbmc+OwogICAgZnJpZW5kIE5SSFlfYWxwaGFsaXN0PE5SSFlfY2xhc3NUaGluZz47Cgpwcml2
YXRlOgogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z1RoaW5nQWN0aW9u
OwogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z1RoaW5nQ2xhc3M7CiAg
ICBUSElOR19JRCAgICAgICAgICAgICAgICAgICAgICAgICppZDsgICAgIAoKICAgICAKICAgICAK
ICAgICAKCiAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIF9ub2RhbERpc3BsYXks
IF9ub2RhbE9uRmxhZzsKCiAgICAgCiAgICBzaG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9sb2NhbFRyYXZlcnNlQ29va2llOwogICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAg
ICBfbG9jYWxUcmF2ZXJzaW5nOwogICAgc2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICBf
d29ybGRUcmF2ZXJzZUNvb2tpZTsKICAgIHNob3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
X3Zpc2libGVDb29raWU7CiAgICBzaG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vbkNv
b2tpZTsKICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgX3Zpc2libGVTdGF0ZTsK
ICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgX29uU3RhdGU7CgogICAgTV9NYXRy
aXggICAgICAgICAgICAgICAgICAgICAgICAqX2xvY2FsSG9tZWxlc3NNYXRyaXg7CiAgICBNX01h
dHJpeCAgICAgICAgICAgICAgICAgICAgICAgICpfbG9jYWxEcmF3aW5nTWF0cml4OwogICAgTV9N
YXRyaXggICAgICAgICAgICAgICAgICAgICAgICAqX3dvcmxkRHJhd2luZ01hdHJpeDsKICAgIE1f
TWF0cml4ICAgICAgICAgICAgICAgICAgICAgICAgKl93b3JsZEhvbWVsZXNzTWF0cml4OwogICAg
TV9NYXRyaXggICAgICAgICAgICAgICAgICAgICAgICAqX2ludmVyc2VMb2NhbEhvbWVsZXNzTWF0
cml4OwogICAgTV9NYXRyaXggICAgICAgICAgICAgICAgICAgICAgICAqX2ludmVyc2VXb3JsZEhv
bWVsZXNzTWF0cml4OwoKICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgX3N5bmNE
cmF3aW5nVG9Ib21lbGVzczsKCiAgICAgCiAgICB2b2lkIGluaXRpYWxpemUoKTsKCnByb3RlY3Rl
ZDoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRJRCAoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlQgdHlwZQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOwogICAgSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bmxvYWRJRCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgIElOVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9wSUQgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
CiAgICBOUkhZX2NoYW5uZWxzIF9jaGFubmVsczsKICAgIE5SSFlfY2hhbm5lbHMgX2xpbmVhckNo
YW5uZWxzOwogICAgTlJIWV9jaGFubmVscyBfbm9uTGluZWFyQ2hhbm5lbHM7CiAgICB2b2lkIGV4
dHJhY3RDaGFubmVsKE5SSFlfY2xhc3NDaGFubmVsICopOwogICAgdm9pZCBwdXNoQ2hhbm5lbChO
UkhZX2NsYXNzQ2hhbm5lbCAqKTsKCiAgICAgCgogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAg
ICAgICAgICBmaW5kQ2hhbm5lbHMgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0hBUiAgICAgICAgICAgICAgICAqYXNjaWksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOUkhZX2NsYXNzQ2hhbm5lbCAgICoqb3V0Q2hhbm5lbHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlQgICAgICAgICAgICAgICAgICpv
dXROdW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgCgog
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzeW5jQ2hpbGRyZW4gKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlJIWV9jbGFzc1RoaW5nICpwYXJl
bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICBaT09MRUFOICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUNoYW5uZWwgKAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlJIWV9jbGFzc0NoYW5uZWwgICAqY2hhblB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpPT0xFQU4gICAgICAgICAgICAgcHJl
c2VydmVJbXBsaWNpdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAg
IFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmVGcm9tICgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5SSFlfY2xhc3NUaGluZyAqY2xvbmVGcm9tCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgIAogICAgIAogICAgIAog
ICAgIAogICAgdmlydHVhbCB2b2lkIHByZVRyYXZlcnNlKGZsb2F0IGZyYW1lKTsKICAgIHZpcnR1
YWwgdm9pZCBwb3N0V29ybGRUcmF2ZXJzZSgpIHt9CiAgICB2aXJ0dWFsIHZvaWQgcG9zdExvY2Fs
VHJhdmVyc2UoKTsKICAgIHZpcnR1YWwgdm9pZCBib3VuY2UoY29uc3QgY2hhciAqcmVhc29uKTsK
CiAgICAgCiAgICB2b2lkIGRpcnR5Tm9kZShzaG9ydCBnb29kQ29va2llLCBzaG9ydCBiYWRDb29r
aWUpOwogICAgdm9pZCBtYWtlRGlydHkoTlJIWV9kZXBlbmREYXRhICpkZXBlbmREYXRhKTsKICAg
IHN0cmluZyBjbGllbnROYW1lKCk7CgogICAgIAogICAgaW50IGNvbXB1dGUoZmxvYXQgZnJhbWUs
IE5SSFlfZGVwZW5kVHlwZSAqZGVwZW5kVHlwZSk7CgpwdWJsaWM6CgogICAgTlJIWV9jbGFzc1Ro
aW5nICAgICAgICAgICAgICAgICAqIE9yaWdpbjsKICAgIFR3aW5lICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTmFtZTsKCiAgICAgCiAgICBOUkhZX2NsYXNzVGhpbmcgICAgICAgICAgICAgICAg
ICpQYXJlbnQ7CiAgICBOUkhZX2NsYXNzVGhpbmcgICAgICAgICAgICAgICAgICoqQ2hpbGRyZW47
CiAgICBJTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemVDaGlsZHJlbjsKICAgIElO
VCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyQ2hpbGRyZW47CgogICAgIAogICAg
TlJIWV9DbGFzc1ZpZXdPYmplY3QgICAgICAgICAgICAqVmlld09iamVjdDsKCiAgICAgCiAgICBO
UkhZX0luY2x1ZGVIaXN0b3J5ICAgICAgICAgICAgICpJbmNsdWRlSGlzdG9yeTsKCiAgICAgCiAg
ICBOUkhZX2NsYXNzVGhpbmcgKAogICAgICAgIGNvbnN0IENIQVIgICpuYW1lLAogICAgICAgIGNv
bnN0IElOVCAgIGNoaWxkVHlwZQogICAgICAgICk7CiAgICBOUkhZX2NsYXNzVGhpbmcgKAogICAg
ICAgIGNvbnN0IENIQVIgICAgICAqbmFtZSwKICAgICAgICBOUkhZX2NsYXNzVGhpbmcgKmNsb25l
RnJvbQogICAgICAgICk7CgogICAgTlJIWV9jbGFzc1RoaW5nICgpOwogICAgdmlydHVhbCB+TlJI
WV9jbGFzc1RoaW5nICgpOwoKICAgICAKICAgIHN0YXRpYyBjb25zdCBDSEFSICAgICAgICAgICAg
ICAgKlByaW50U2VsZkNsYXNzbmFtZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsgcmV0
dXJuICgiTlJIWV9jbGFzc1RoaW5nIik7IH0KCiAgICAgCgogICAgc3RhdGljIElOVCAgICAgICAg
ICAgICAgICAgICAgICBHZXRTZWxmQ2xhc3NUeXBlICgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICkgeyByZXR1cm4gKFRISU5HX1RZUEVfVEhJTkcpOyB9CgogICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRGVidWdQcmludFRoaW5nU2VsZiAoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGSUxFICAgICAgICAqZnAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDSEFSICAqbWVzc2FnZQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOwoKICAgIElOVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2V0SWRfdHlwZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgIElOVCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR2V0TnVtYmVyQmFzZVR5cGVzICgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICkgeyByZXR1cm4gKGlkLT5udW1iZXJCYXNlVHlwZXMpOyB9CiAgICBJTlQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldEJhc2VUeXBlQnlJbmRleCAoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlQgICAgIGkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKSB7IGlmICgoaSA8IDApfHwoaSA+IGlkLT5udW1iZXJCYXNl
VHlwZXMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFRISU5HX1RZ
UEVfVU5LTk9XTik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGlkLT5iYXNlVHlwZXNbaV0pOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAg
ICAgIElzQUJhc2VUeXBlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElOVCB0eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgc3Rh
dGljIE5SSFlfYnVuY2g8TlJIWV9jbGFzc1RoaW5nPiAqRmluZCAoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDSEFSICAqbmFtZQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOwoKICAgIHZpcnR1YWwgdm9pZCAgICAgICAgICAgICAgICAg
ICAgIFJlbmFtZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBDSEFSICpuZXdOYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgPSAw
OwogICAgdmlydHVhbCBOUkhZX2NsYXNzVGhpbmcgICAgICAgICAqQ2xvbmUgKGNvbnN0IGNoYXIg
Km5hbWUpID0gMDsKICAgIHZpcnR1YWwgY29uc3QgQ0hBUiAgICAgICAgICAgICAgKlByaW50RGVy
aXZlZENsYXNzT2ZTZWxmVHlwZU5hbWUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA9IDA7
CiAgICB2aXJ0dWFsIElOVCAgICAgICAgICAgICAgICAgICAgIEdldERlcml2ZWRDbGFzc09mU2Vs
ZlR5cGUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA9IDA7CgogICAgIAoKCiAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYXZlTWVGb3JVbmRvICgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpPT0xFQU4gZnJvbUNoaWxkID0gMCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICB2aXJ0dWFsIHZvaWQgRGVzY3Jp
YmVDcmVhdGUgKCBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJiBkZXNjICkgPSAwOwogICAgdmly
dHVhbCB2b2lkIERlc2NyaWJlQ3JlYXRlQ2hhbm5lbHMgKE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVh
bSAmLCBpbnQgZGVuc2UgKTsKICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZUZ1bGxTdGF0ZSAoTlJI
WV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYgZGVzYykgewogICAgICAgIHJldHVybjsKICAgIH0KICAg
IHZpcnR1YWwgdm9pZCBEZXNjcmliZUZ1bGxTdGF0ZVBhY2tlZCAoTlJIWV9DbGFzc0Rlc2NyaWJl
U3RyZWFtICYgZGVzYykgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIHZvaWQgRGVzY3JpYmVV
bmRvUmVuYW1lIChOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJiwgY29uc3QgVHdpbmUgJm5ld05h
bWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgCgoKICAgIE5SSFlfY2xhc3ND
aGFubmVsICAgICAgICAgICAgICAgKkFkZEltcGxpY2l0Q2hhbm5lbCAoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJTlQgICAgICAgICAgIHR5cGUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIE5SSFlfY2xhc3NDaGFubmVsICAg
ICAgICAgICAgICAgKkFkZENoYW5uZWwgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSU5UICAgICAgICAgICB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgSU5UICAgICAgICAgICBpbnN0YW5jZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgIE5SSFlfY2xhc3NDaGFubmVsICAgICAg
ICAgICAgICAgKkFkZENoYW5uZWwgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgSU5UICAgICAgICAgICB0eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICkge3JldHVybiBBZGRDaGFubmVsKHR5cGUsMCk7fQoKICAgICAKCiAgICBOUkhZ
X2NsYXNzQ2hhbm5lbCAgICAgICAgICAgICAgICpGaW5kUG9zc2libGVJbXBsaWNpdENoYW5uZWwg
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSU5UICAgICAg
ICAgICB0eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgIAoK
ICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0SW1wbGljaXRDaGFubmVsVmFs
dWVXVW5kbyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJ
TlQgICAgICAgICAgIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCAgICAgICAgICAgICAgIG5ld1ZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CgogICAgIAoKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAg
U2V0SW1wbGljaXRDaGFubmVsVmFsdWVzV1VuZG8gKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgICAgICAgICAgICAgICAqbmV3VmFsdWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIG51bSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElOVCAgICAgICAgICAg
dHlwZTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJTlQg
ICAgICAgICAgIHR5cGUyPS0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSU5UICAgICAgICAgICB0eXBlMz0tMSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IElOVCAgICAgICAgICAgdHlwZTQ9LTEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJTlQgICAgICAgICAgIHR5cGU1PS0x
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgIAogICAgWk9PTEVB
TiAgICAgICAgICAgICAgICAgICAgICAgICBTZXRJbXBsaWNpdENoYW5uZWxWYWx1ZSAoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJTlQgICAgICAgICAgIHR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAgICAgICAg
ICAgICAgIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAg
IAogICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRJbXBsaWNpdENoYW5uZWxW
YWx1ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJTlQg
ICAgICAgICAgIHR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAg
ICAgCgoKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlQ2hhbm5lbCAo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOUkhZX2NsYXNzQ2hhbm5l
bCAgICpjaGFuUHRyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgeyByZXR1
cm4gZGVsZXRlQ2hhbm5lbCAoY2hhblB0ciwgMSApOyB9CiAgICBaT09MRUFOICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlYWxseURlbGV0ZUNoYW5uZWwgKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTlJIWV9jbGFzc0NoYW5uZWwgICAqY2hhblB0cgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApIHsgcmV0dXJuIGRlbGV0ZUNoYW5uZWwgKGNoYW5Q
dHIsIDAgKTsgfQoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdENoYW5u
ZWxzKEZJTEUgKmZwLCBCT09MRUFOIHZlcmJvc2UgPSAwICk7CgogICAgIAoKCgoKCiAgICBOUkhZ
X2NsYXNzQ2hhbm5lbCAgICAgICAgICAgICAgICpGaW5kTGluZWFyQ2hhbm5lbCAoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJTlQgICAgICAgICAgIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJTlQgICAgICAg
ICAgIGluc3RhbmNlT25lQmFzZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KTsKICAgIE5SSFlfY2xhc3NDaGFubmVsICAgICAgICAgICAgICAgKkZpbmROb25MaW5lYXJDaGFu
bmVsICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElOVCAg
ICAgICAgICAgdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAg
IE5SSFlfY2xhc3NDaGFubmVsICAgICAgICAgICAgICAgKkZpbmRDaGFubmVsICgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElOVCAgICAgICAgICAgdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElOVCAgICAgICAg
ICAgaW5zdGFuY2VPbmVCYXNlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
OwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmluZENoYW5uZWxzICgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENIQVIgICAgICAgICAg
KmFzY2lpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlJIWV9jbGFz
c0NoYW5uZWwgICAqKm91dENoYW5uZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSU5UICAgICAgICAgICAgICAgICAqb3V0TnVtYmVyCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgICAgCgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmluZENoYW5uZWxzICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENIQVIgICAgICAgICAgKmFzY2lpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgKipvdXRDaGFubmVscywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVCAgICAgICAgICAgICAgICAg
Km91dE51bWJlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgIGNv
bnN0IE5SSFlfY2hhbm5lbHMgJmNoYW5uZWxzKCkgeyByZXR1cm4gX2NoYW5uZWxzOyB9CiAgICBj
b25zdCBOUkhZX2NoYW5uZWxzICZsaW5lYXJDaGFubmVscygpIHsgcmV0dXJuIF9saW5lYXJDaGFu
bmVsczsgfQogICAgY29uc3QgTlJIWV9jaGFubmVscyAmbm9uTGluZWFyQ2hhbm5lbHMoKSB7IHJl
dHVybiBfbm9uTGluZWFyQ2hhbm5lbHM7IH0KCiAgICBJTlQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdldE51bWJlckhpZGRlbkNoYW5uZWxzICgpOwogICAgSU5UICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZXROdW1iZXJJbXBsaWNpdENoYW5uZWxzICgpOwoKICAgICAKCiAgICBa
T09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIE1ha2VJbXBsaWNpdENoYW5uZWxFeHBsaWNp
dCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOUkhZX2NsYXNzQ2hh
bm5lbCAgICpjaGFuUHRyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Cgog
ICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBSZW9yZGVyQ2hhbm5lbHMgKGNvbnN0
IFR3aW5lICZuZXdPcmRlcik7CgogICAgIAogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAg
ICAgICBTZXRQYXJlbnQgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlJIWV9jbGFzc1RoaW5nICpuZXdQYXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKTsKCiAgICAgCiAgICBUd2luZSAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW50
UGFyZW50ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgIAogICAgUE9MSVNIICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZXRHZW5lYWxvZ3kgKAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlJIWV9jbGFzc1RoaW5nICpob3dSZWxhdGVkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5UICAgICAgICAgICAgICAgICAgICAg
KnJlbGF0aW9uc2hpcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAg
IAogICAgUkVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRDaGFubmVsVmFsdWVCeVR5
cGUgKCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENIQVIg
ICp0eXBlTmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgCiAg
ICBSRUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldENoYW5uZWxWYWx1ZUJ5VHlwZSAo
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSU5UICAgdHlw
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgIAogICAgQk9PTEVB
TiAgICAgICAgICAgICAgICAgICAgICAgICBTZXRDaGFubmVsVmFsdWVCeVR5cGUoIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5UICAgICAgICAgIGluZGV4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCAgICAgICAgIHZhbHVlCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgCiAgICBCT09MRUFOICAg
ICAgICAgICAgICAgICAgICAgICAgIFNldENoYW5uZWxWYWx1ZUJ5VHlwZSggCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDSEFSICogdHlwZU5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUFMICAgICAgICAgdmFsdWUKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgCiAgICAgCiAgICAgCiAg
ICAgCiAgICAgCgogICAgY29uc3QgTV9NYXRyaXggJkdldExvY2FsSG9tZWxlc3NNYXRyaXgoKTsK
ICAgIGNvbnN0IE1fTWF0cml4ICZHZXRMb2NhbERyYXdpbmdNYXRyaXggKCk7CiAgICBjb25zdCBN
X01hdHJpeCAmR2V0V29ybGRIb21lbGVzc01hdHJpeCAoKTsKICAgIGNvbnN0IE1fTWF0cml4ICZH
ZXRXb3JsZERyYXdpbmdNYXRyaXggKCk7CiAgICBjb25zdCBNX01hdHJpeCAmR2V0T3JpZ2luTWF0
cml4KCk7CiAgICBjb25zdCBNX01hdHJpeCAmR2V0SW52ZXJzZU9yaWdpbk1hdHJpeCgpOwogICAg
ICAgICAgICAgICAgICAgCiAgICBNX01hdHJpeCAgICAgICBHZXRDaGFubmVsSG9tZWxlc3NNYXRy
aXggKCk7CiAgICBNX01hdHJpeCAgICAgICBHZXRDdXJyZW50TG9jYWxIb21lbGVzc01hdHJpeCgp
OwogICAgTV9NYXRyaXggICAgICAgR2V0Q3VycmVudExvY2FsRHJhd2luZ01hdHJpeCgpOwogICAg
TV9NYXRyaXggICAgICAgR2V0Q3VycmVudFdvcmxkSG9tZWxlc3NNYXRyaXgoKTsKICAgIE1fTWF0
cml4ICAgICAgIEdldEN1cnJlbnRXb3JsZERyYXdpbmdNYXRyaXgoKTsKICAgIE1fTWF0cml4ICAg
ICAgIEdldEN1cnJlbnRDaGFubmVsSG9tZWxlc3NNYXRyaXggKCk7CiAgICBNX01hdHJpeCAgICAg
ICBHZXRDdXJyZW50SW52ZXJzZVdvcmxkSG9tZWxlc3NNYXRyaXgoKTsKICAgIE1fTWF0cml4ICAg
ICAgIEdldEN1cnJlbnRJbnZlcnNlTG9jYWxIb21lbGVzc01hdHJpeCgpOwogICAgICAgICAgICAg
ICAgICAgCiAgICBjb25zdCBNX01hdHJpeCAmR2V0SW52ZXJzZUxvY2FsSG9tZWxlc3NNYXRyaXgo
KTsKICAgIGNvbnN0IE1fTWF0cml4ICZHZXRJbnZlcnNlV29ybGRIb21lbGVzc01hdHJpeCgpOwog
ICAgY29uc3QgTV9NYXRyaXggKkdldEludGVybmFsTG9jYWxEcmF3aW5nTWF0cml4KCk7CiAgICB2
b2lkICAgICAgICAgICBMb2NhbE11bHQoY29uc3QgTV9NYXRyaXggJm1hdCk7CiAgICB2b2lkICAg
ICAgICAgICBTZXRJc0RlZm9ybWVkKCk7CiAgICAgCiAgICB2b2lkICAgICAgICAgICBTZXRXb3Js
ZE1hdHJpeChjb25zdCBNX01hdHJpeCAmbWF0KTsKICAgICAgICAgICAgICAgICAgIAogICAgIAog
ICAgY29uc3QgQ0hBUiAgICAgICAgICAgICAgICAgICAgICAqR2V0Vm9pZENoYW5uZWxUeXBlTmFt
ZUFuZEluc3RhbmNlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgICAgICp0bXBWb2lkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Cgog
ICAgIAoKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tSZWN1cnNpdmVs
eUZvckNsYXNzVHlwZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
TlQgICAgICAgICB3aGF0VHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
OwoKICAgICAKICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgIFNldE5vZGFsRGlzcGxheShCT09M
RUFOIHN0YXR1cyk7CiAgICB2aXJ0dWFsIEJPT0xFQU4gICAgICAgICBTZXROb2RhbE9uRmxhZyhC
T09MRUFOIHN0YXR1cyk7CgogICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgR2V0Tm9kYWxEaXNw
bGF5KCkgeyByZXR1cm4gX25vZGFsRGlzcGxheTsgfQogICAgQk9PTEVBTiAgICAgICAgICAgICAg
ICAgR2V0Tm9kYWxPbkZsYWcoKSB7IHJldHVybiBfbm9kYWxPbkZsYWc7IH0KICAgIEJPT0xFQU4g
ICAgICAgICAgICAgICAgIEdldFZpc2libGVTdGF0ZSgpOwogICAgdmlydHVhbCBCT09MRUFOICAg
ICAgICAgR2V0VmlzaWJsZVN0YXRlKGZsb2F0IGZyYW1lKTsKICAgIHZpcnR1YWwgQk9PTEVBTiAg
ICAgICAgIEdldE9uU3RhdGUoZmxvYXQgZnJhbWUpOwoKICAgICAKCiAgICBCT09MRUFOICAgICAg
ICAgICAgICAgICBHZXRTYXZlZElzVmlzaWJsZSgpOwogICAgQk9PTEVBTiAgICAgICAgICAgICAg
ICAgR2V0U2F2ZWRJc1Zpc2libGUoZmxvYXQgZnJhbWUpOwogICAgQk9PTEVBTiAgICAgICAgICAg
ICAgICAgR2V0U2F2ZWRPblN0YXRlKGZsb2F0IGZyYW1lKTsKCiAgICBCT09MRUFOICAgICAgICAg
ICAgICAgICBJc0RlZm9ybWluZyAoKTsKCiAgICAgCiAgICBpbmxpbmUgVHdpbmUgICAgICAgICAg
ICBHZXROYW1lRm9yQnVuY2goKSB7IHJldHVybiBOYW1lOyB9CgogICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgRGVsYXllZFVwZGF0ZUFsbENoYW5uZWxzICh1bnNpZ25lZCBmbGFncyk7CiAgICBp
bnQgICAgICAgICAgICAgICAgICAgICBUcmF2ZXJzZUxvY2FsKGZsb2F0IGZyYW1lKTsKICAgIGlu
dCAgICAgICAgICAgICAgICAgICAgIFRyYXZlcnNlV29ybGQoZmxvYXQgZnJhbWUpOwogICAgQk9P
TEVBTiAgICAgICAgICAgICAgICAgR2V0TG9jYWxUcmF2ZXJzZWQoKTsKICAgIEJPT0xFQU4gICAg
ICAgICAgICAgICAgIEdldExvY2FsVHJhdmVyc2luZygpIHsgcmV0dXJuIF9sb2NhbFRyYXZlcnNp
bmc7IH0KICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgIEdldFdvcmxkVHJhdmVyc2VkKCk7CiAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICBTZXRMb2NhbFRyYXZlcnNlZCgpOwogICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgU2V0V29ybGRUcmF2ZXJzZWQoKTsKICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgIFNldExvY2FsVHJhdmVyc2luZygpIHsgX2xvY2FsVHJhdmVyc2luZyA9IDEgOyB9
CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICBEaXJ0eU5vZGUoKTsKICAgIHZpcnR1YWwgTlJI
WV9jbGFzc09iamVjdCAqR2V0T2JqZWN0UHRyKCkgeyByZXR1cm4gX19udWxsIDsgfQogICAgIAog
ICAgaW50IFRyYXZlcnNlSGllcihmbG9hdCBmcmFtZSk7CiAgICB2aXJ0dWFsIHZvaWQJICAgIEdl
dFNoYXBlKFJFQUwgZnJhbWUpOwp9OwoKIApjbGFzcyBOUkhZX2NsYXNzVGhpbmdPYnNlcnZlciA6
IAogICAgcHVibGljIE9ic2VydmVyCnsKcHJpdmF0ZToKICAgIHZvaWQgUmVmcmVzaE9ic2VydmVy
IChTdWJqZWN0ICp0aGluZykgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBSZWZy
ZXNoVGhpbmcgKHRoaW5nKTsgfTsKICAgIGludCAgR2V0T2JzZXJ2ZXJUeXBlICgpICAgICB7IHJl
dHVybiBHZXRUeXBlVGhpbmcoKTsgICB9OwogICAgaW50ICBBbGxvd0Rlc3RydWN0QnlTdWJqZWN0
ICgpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIEFsbG93RGVzdHJ1
Y3RCeVN1YmplY3RUaGluZygpOyB9OwpwdWJsaWM6CiAgICB2aXJ0dWFsIHZvaWQgUmVmcmVzaFRo
aW5nIChTdWJqZWN0ICpzdWJqKSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBP
YnNlcnZlcjo6UmVmcmVzaE9ic2VydmVyIChzdWJqKTsgfTsKICAgIHZpcnR1YWwgaW50ICBHZXRU
eXBlVGhpbmcgKCkgeyByZXR1cm4gT2JzZXJ2ZXI6OkdldE9ic2VydmVyVHlwZSgpOyB9OwogICAg
dmlydHVhbCBpbnQgIEFsbG93RGVzdHJ1Y3RCeVN1YmplY3RUaGluZyAoKSAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gT2JzZXJ2ZXI6OkFsbG93RGVzdHJ1Y3RCeVN1
YmplY3QoKTsgfTsKCiAgICBOUkhZX2NsYXNzVGhpbmdPYnNlcnZlciAoTlJIWV9jbGFzc1RoaW5n
ICp0aGluZykgOiBPYnNlcnZlciAodGhpbmcpIHsgfTsKfTsKCiAKCiAKCiMgMzUgImgvbnJoeV9j
bGFzc0FwcGFyaXRpb24uaCIgMgoKCiMgMSAiL3NvZnR3YXJlL3RoYWxpYS9oL0NPTE9SLmgiIDEK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKc3RydWN0IENvbG9yIHsKICAgIHB1YmxpYzoK
CiAgICBmbG9hdCAgIHI7CiAgICBmbG9hdCAgIGc7CiAgICBmbG9hdCAgIGI7CgoKICAgIHByaXZh
dGU6CiAgICAgICAgCiAgICBmbG9hdCB2YWx1ZSggZmxvYXQgbjEsIGZsb2F0IG4yLCBmbG9hdCBo
dWUpOwoKICAgIAogICAgcHVibGljOgoKICAgIENvbG9yKCB2b2lkKTsKICAgIENvbG9yKCBmbG9h
dCByLCBmbG9hdCBnLCBmbG9hdCBiKTsKICAgIENvbG9yKCBjb25zdCBDb2xvciAmIHRoYXQgKSB7
CiAgICAgICAgKnRoaXMgPSB0aGF0OwogICAgICAgIH07CgogICAgdm9pZCBTZXRSR0IoIGZsb2F0
IHIsIGZsb2F0IGcsIGZsb2F0IGIpOwogICAgdm9pZCBTZXRITFMoIGZsb2F0IGgsIGZsb2F0IGws
IGZsb2F0IHMpOwogICAgdm9pZCBTZXRIU1YoIGZsb2F0IGgsIGZsb2F0IHMsIGZsb2F0IHYpOwog
ICAgdm9pZCBTZXRQYWNrZWQoIHVuc2lnbmVkIGxvbmcgYyk7CgogICAgdm9pZCBHZXRSR0IoIGZs
b2F0ICpyLCBmbG9hdCAqZywgZmxvYXQgKmIpOwogICAgdm9pZCBHZXRITFMoIGZsb2F0ICpoLCBm
bG9hdCAqbCwgZmxvYXQgKnMpOwogICAgdm9pZCBHZXRIU1YoIGZsb2F0ICpoLCBmbG9hdCAqcywg
ZmxvYXQgKnYpOwogICAgdm9pZCBHZXRQYWNrZWQoIHVuc2lnbmVkIGxvbmcgKmMpOwoKICAgIGlu
dCAgUmVhZEJpbmFyeSggTkVURklMRV9GSUxFICpmcCk7CiAgICBpbnQgIFdyaXRlQmluYXJ5KCBO
RVRGSUxFX0ZJTEUgKmZwKTsKCiAgICBpbnQgb3BlcmF0b3IgPT0gKGNvbnN0IENvbG9yICZjb2xv
cikgY29uc3QgCiAgICAgICAgewogICAgICAgIHJldHVybigodGhpcy0+ciA9PSBjb2xvci5yKSAm
JiAodGhpcy0+ZyA9PSBjb2xvci5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmJiAodGhpcy0+YiA9PSBjb2xvci5iKSk7CiAgICAgICAgfTsKCiAgICBpbnQgb3BlcmF0b3Ig
IT0gKGNvbnN0IENvbG9yICZjb2xvcikgY29uc3QgCiAgICAgICAgewogICAgICAgIHJldHVybigo
dGhpcy0+ciAhPSBjb2xvci5yKSB8fCAodGhpcy0+ZyAhPSBjb2xvci5nKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8fCAodGhpcy0+YiAhPSBjb2xvci5iKSk7CiAgICAgICAg
fTsKCiAgICBDb2xvciBvcGVyYXRvciooZmxvYXQgZikgY29uc3QKICAgIHsKICAgICAgICBDb2xv
ciAgIHRtcDsKCgogICAgICAgIHRtcC5yID0gdGhpcy0+ciAqIGY7CiAgICAgICAgdG1wLmcgPSB0
aGlzLT5nICogZjsKICAgICAgICB0bXAuYiA9IHRoaXMtPmIgKiBmOwoKICAgICAgICByZXR1cm4o
IHRtcCk7CiAgICB9CgogICAgQ29sb3Igb3BlcmF0b3IqKGRvdWJsZSBmKSBjb25zdAogICAgewog
ICAgICAgIENvbG9yICAgdG1wOwoKCiAgICAgICAgdG1wLnIgPSB0aGlzLT5yICogZjsKICAgICAg
ICB0bXAuZyA9IHRoaXMtPmcgKiBmOwogICAgICAgIHRtcC5iID0gdGhpcy0+YiAqIGY7CgogICAg
ICAgIHJldHVybiggdG1wKTsKICAgIH0KCiAgICBmcmllbmQgaW5saW5lIENvbG9yIG9wZXJhdG9y
ICooZmxvYXQgZiwgY29uc3QgQ29sb3IgJnYpCiAgICB7CiAgICBDb2xvciAgIHRtcDsKCiAgICAg
ICAgdG1wLnIgPSB2LnIgKiBmOwogICAgICAgIHRtcC5nID0gdi5nICogZjsKICAgICAgICB0bXAu
YiA9IHYuYiAqIGY7CgogICAgICAgIHJldHVybiggdG1wKTsKICAgIH0KCiAgICBmcmllbmQgaW5s
aW5lIENvbG9yIG9wZXJhdG9yICooZG91YmxlIGYsIGNvbnN0IENvbG9yICZ2KQogICAgewogICAg
Q29sb3IgICB0bXA7CgogICAgICAgIHRtcC5yID0gdi5yICogZjsKICAgICAgICB0bXAuZyA9IHYu
ZyAqIGY7CiAgICAgICAgdG1wLmIgPSB2LmIgKiBmOwoKICAgICAgICByZXR1cm4oIHRtcCk7CiAg
ICB9CgogICAgQ29sb3Igb3BlcmF0b3IvKGZsb2F0IGYpIGNvbnN0CiAgICB7CiAgICAgICAgQ29s
b3IgICB0bXA7CgoKICAgICAgICB0bXAuciA9IHRoaXMtPnIgLyBmOwogICAgICAgIHRtcC5nID0g
dGhpcy0+ZyAvIGY7CiAgICAgICAgdG1wLmIgPSB0aGlzLT5iIC8gZjsKCiAgICAgICAgcmV0dXJu
KCB0bXApOwogICAgfQoKICAgIENvbG9yIG9wZXJhdG9yKyhjb25zdCBDb2xvciAmdikgY29uc3QK
ICAgIHsKICAgIENvbG9yICAgdG1wOwoKICAgICAgICAKICAgICAgICB0bXAuciA9IHRoaXMtPnIg
KyB2LnI7CiAgICAgICAgdG1wLmcgPSB0aGlzLT5nICsgdi5nOwogICAgICAgIHRtcC5iID0gdGhp
cy0+YiArIHYuYjsKCiAgICAgICAgcmV0dXJuKCB0bXApOwogICAgfTsKCiAgICBDb2xvciBvcGVy
YXRvci0oY29uc3QgQ29sb3IgJnYpIGNvbnN0CiAgICB7CiAgICBDb2xvciAgIHRtcDsKCiAgICAg
ICAgCiAgICAgICAgdG1wLnIgPSB0aGlzLT5yIC0gdi5yOwogICAgICAgIHRtcC5nID0gdGhpcy0+
ZyAtIHYuZzsKICAgICAgICB0bXAuYiA9IHRoaXMtPmIgLSB2LmI7CgogICAgICAgIHJldHVybigg
dG1wKTsKICAgIH07Cn07CgppbmxpbmUgY29uc3QgY2hhciAqY2xhc3NOYW1lKCBDb2xvciApIHsg
cmV0dXJuICJDb2xvciI7IH07CgoKIyAzNyAiaC9ucmh5X2NsYXNzQXBwYXJpdGlvbi5oIiAyCgoK
IAogCiAKCiAKdGVtcGxhdGUgPGNsYXNzIFR5cGU+IGNsYXNzIE5SSFlfbWF0Y2g7CnRlbXBsYXRl
IDxjbGFzcyBUeXBlPiBjbGFzcyBOUkhZX2FscGhhbGlzdDsKCnN0cnVjdCBOUkhZX2NsYXNzQXBw
YXJpdGlvbjpwdWJsaWMgTlJIWV9jbGFzc1RoaW5nIHsKcHJpdmF0ZToKICAgIHR5cGVkZWYgTlJI
WV9jbGFzc1RoaW5nIGluaGVyaXRlZDsKICAgIHR5cGVkZWYgTlJIWV9hbHBoYWxpc3Q8TlJIWV9j
bGFzc0FwcGFyaXRpb24+IGFscGhhbGlzdDsKICAgIGZyaWVuZCBOUkhZX21hdGNoIDxOUkhZX2Ns
YXNzQXBwYXJpdGlvbj47CiAgICBmcmllbmQgTlJIWV9hbHBoYWxpc3Q8TlJIWV9jbGFzc0FwcGFy
aXRpb24+OwoKcHJvdGVjdGVkOgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5pdGlhbGl6ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKcHVibGljOgogICAgTlJI
WV9jbGFzc0FwcGFyaXRpb24gKAogICAgICAgIGNvbnN0IENIQVIgICAgICAgICAgICAgICpuYW1l
LAogICAgICAgIGNvbnN0IElOVCAgICAgICAgICAgICAgIGNoaWxkVHlwZQogICAgICAgICk7CiAg
ICBOUkhZX2NsYXNzQXBwYXJpdGlvbiAoCiAgICAgICAgY29uc3QgQ0hBUiAgICAgICAgICAgICAg
Km5hbWUsCiAgICAgICAgTlJIWV9jbGFzc0FwcGFyaXRpb24gICAgKmNsb25lRnJvbQogICAgICAg
ICk7CiAgICBOUkhZX2NsYXNzQXBwYXJpdGlvbiAoCiAgICAgICAgdm9pZCAKICAgICAgICApOwoK
ICAgIH5OUkhZX2NsYXNzQXBwYXJpdGlvbiAoCiAgICAgICAgdm9pZCAKICAgICAgICApOwoKICAg
ICAKICAgICAKICAgIHN0YXRpYyBjb25zdCBDSEFSICAgICAgICAgICAgICAgKlByaW50U2VsZkNs
YXNzbmFtZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsgcmV0dXJuICgiTlJIWV9jbGFz
c0FwcGFyaXRpb24iKTsgfQoKICAgICAKCiAgICBzdGF0aWMgSU5UICAgICAgICAgICAgICAgICAg
ICAgIEdldFNlbGZDbGFzc1R5cGUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7IHJldHVy
biAoVEhJTkdfVFlQRV9BUFBBUklUSU9OKTsgfQoKICAgIHN0YXRpYyBOUkhZX2J1bmNoPE5SSFlf
Y2xhc3NBcHBhcml0aW9uPiAqRmluZCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDSEFSICAqbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOwoKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0QXBwYXJpdGlv
blBhcmVudCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOUkhZX2J1
bmNoIDxOUkhZX2NsYXNzQXBwYXJpdGlvbj4gKnBhcmVudAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApOwoKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0
Q29sb3IgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVB
TCAgICAgICpuZXdDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElOVCAgICAgICAgICAgICBudW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0Q29sb3JSZWQgKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgIG5l
d0NvbG9yUmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09M
RUFOICAgICAgICAgICAgICAgICAgICAgICAgIFNldENvbG9yR3JlZW4gKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgIG5ld0NvbG9yR3JlZW4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFpPT0xFQU4gICAgICAg
ICAgICAgICAgICAgICAgICAgU2V0Q29sb3JCbHVlICgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFJFQUwgICAgICBuZXdDb2xvckJsdWUKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAg
ICAgICAgU2V0Q29sb3JJbnRlbnMgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUkVBTCAgICAgIG5ld0NvbG9ySW50ZW5zCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIFNl
dE9wYWNpdHkgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UkVBTCAgICAgIG5ld09wYWNpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KTsKCiAgICAgCiAKICAgIFJFQUwgKkdldENvbG9yICgpOwoKICAgICAKCiAgICB2b2lkICAgR2V0
UmVjdXJzaXZlQ29sb3IgKENvbG9yICYsIGZsb2F0ICopOwoKICAgIHN0YXRpYyBaT09MRUFOICAg
ICAgICAgICAgICAgICAgQ2hlY2tQb3NzaWJsZUFwcGFyaXRpb25QYXJlbnQgKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlJIWV9idW5jaCA8TlJIWV9jbGFzc0FwcGFy
aXRpb24+ICpwYXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAg
IHN0YXRpYyBaT09MRUFOICAgICAgICAgICAgICAgICAgQ2hlY2tQb3NzaWJsZUNvbG9yICgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgICAgICAgICpuZXdDb2xv
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVCAgICAgICAgIG51
bWJlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVGdWxsU3RhdGUgKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFt
ICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVGdWxsU3RhdGVQYWNrZWQgKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3Ry
ZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVub2RhbE9uRmxhZyAoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJl
YW0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmliZU5vZGFsRGlzcGxheSAoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJl
YW0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmliZUFwcGFyaXRpb25QYXJlbnQgKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJl
U3RyZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVDb2xvciAoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0g
JgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgVHdpbmUgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZXRDb2xvck9wdGlvbiggaW50IGlnbm9yZURlZmF1bHQgKTsK
CiAgICAgCiAgICAgCiAgICAgCgogICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBT
ZXROb2RhbE9uRmxhZyAoQk9PTEVBTiBzdGF0dXMpOwoKICAgICAKCiAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTZXROZWVkc1JlY2FsYyAoKTsKfTsKCiAKCiAKCiMgMzkgImgv
bnJoeV9jbGFzc09iamVjdC5oIiAyCgoKCiAKY2xhc3MgTlJIWV9jbGFzc09iamVjdE1hbmlwdWxh
dG9yOwoKIAp0ZW1wbGF0ZSA8Y2xhc3MgVHlwZT4gY2xhc3MgTlJIWV9tYXRjaDsKdGVtcGxhdGUg
PGNsYXNzIFR5cGU+IGNsYXNzIE5SSFlfYWxwaGFsaXN0OwpjbGFzcyBOUkhZX29iamVjdEZpbGVE
YXRhOwpjbGFzcyBOUkhZX2NsYXNzVHJhY2s7CgpjbGFzcyBOUkhZX2NsYXNzT2JqZWN0IDogCiAg
ICBwdWJsaWMgTlJIWV9jbGFzc0FwcGFyaXRpb24sCiAgICBwdWJsaWMgT2JzZXJ2ZXJGYWN0b3J5
IDxOUkhZX2NsYXNzT2JqZWN0Pgp7CnByaXZhdGU6CiAgICB0eXBlZGVmIE5SSFlfY2xhc3NBcHBh
cml0aW9uIGluaGVyaXRlZDsKICAgIHR5cGVkZWYgTlJIWV9hbHBoYWxpc3Q8TlJIWV9jbGFzc09i
amVjdD4gYWxwaGFsaXN0OwogICAgZnJpZW5kIE5SSFlfbWF0Y2ggPE5SSFlfY2xhc3NPYmplY3Q+
OwogICAgZnJpZW5kIE5SSFlfYWxwaGFsaXN0PE5SSFlfY2xhc3NPYmplY3Q+OwoKICAgICAKICAg
IFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgb2JqU3RhdGljOwoKICAgIE5SSFlfb2Jq
ZWN0RmlsZURhdGEgICAgICAgICAgICAgKiBfZmlsZURhdGE7CgogICAgIAogICAgYm9vbCByZXBv
c2l0aW9uU2F2ZUNoYW5zKCBjb25zdCBNX01hdHJpeCYsIHZlY3RvcjwgTlJIWV9jbGFzc0NoYW5u
ZWwqID4mLAoJCQkgICAgICB2ZWN0b3I8IE5SSFlfY2xhc3NDaGFubmVsKiA+JiwKCQkJICAgICAg
dmVjdG9yPCBOUkhZX2NsYXNzQ2hhbm5lbCogPiYsCgkJCSAgICAgIGludCBmcmFtZSwgYm9vbCwg
Ym9vbCwgYm9vbCwgYm9vbCApOwoKICAgIApwcm90ZWN0ZWQ6CiAgICBOUkhZX2NsYXNzT2JqZWN0
TWFuaXB1bGF0b3IgICAgICptYW5pcHVsYXRvcjsKICAgCiAgIAogICAgWk9PTEVBTiAgICAgICAg
ICAgICAgICAgICAgICAgICBleHRyYU1vZGU7CiAgICBOUkhZX2NsYXNzT2JqZWN0ICAgICAgICAg
ICAgICAgICpvcmJpdE9iamVjdDsKCiAgICBOUkhZX2NsYXNzVHJhY2sgICAgICAgICAgICAgICAg
ICpwcmltYXJ5Q29uc3RyYWludDsKICAgIE5SSFlfY2xhc3NUcmFjayAgICAgICAgICAgICAgICpz
ZWNvbmRhcnlDb25zdHJhaW50OwogICAgTlJIWV9jbGFzc09iamVjdCAgICAgICAgICAgICAgICpj
b25zdHJhaW50R2VvbWV0cnk7CgogICAKCgoKIAoKCgoKCgoKCgogICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
OwogICAgdm9pZCBkZXRhY2goTlJIWV9kZXBlbmREYXRhICopOwoKcHVibGljOgogICAgIAogICAg
TlJIWV9jbGFzc09iamVjdCAoCiAgICAgICAgY29uc3QgQ0hBUiAgICAgICAgICAqbmFtZSwKICAg
ICAgICBjb25zdCBJTlQgICAgICAgICAgIGNoaWxkVHlwZQogICAgICAgICk7CiAgICBOUkhZX2Ns
YXNzT2JqZWN0ICgKICAgICAgICBjb25zdCBDSEFSICAgICAgICAgICpuYW1lLAogICAgICAgIE5S
SFlfY2xhc3NPYmplY3QgICAgKmNsb25lRnJvbQogICAgICAgICk7CiAgICBOUkhZX2NsYXNzT2Jq
ZWN0ICgKICAgICAgICB2b2lkIAogICAgICAgICk7CgogICAgfk5SSFlfY2xhc3NPYmplY3QgKAog
ICAgICAgIHZvaWQgCiAgICAgICAgKTsKCiAgICAgCiAgICBzdGF0aWMgY29uc3QgQ0hBUiAgICAg
ICAgICAgICAgICpQcmludFNlbGZDbGFzc25hbWUgKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KSB7IHJldHVybiAoIk5SSFlfY2xhc3NPYmplY3QiKTsgfQoKICAgICAKCiAgICBzdGF0aWMgSU5U
ICAgICAgICAgICAgICAgICAgICAgIEdldFNlbGZDbGFzc1R5cGUgKAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKSB7IHJldHVybiAoVEhJTkdfVFlQRV9PQkpFQ1QpOyB9CgogICAgTGlzdCA8VHdp
bmU+ICAgICAgICAgICAgICAgICAgICBMaXN0T2ZDaGFubmVscyAoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtYmVyCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CgogICAgc3RhdGljIE5SSFlfYnVuY2g8TlJIWV9jbGFzc09iamVjdD4g
KkZpbmQgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0hB
UiAgKm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgCgoK
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ha2VXb3JsZEhvbWVsZXNzUG9z
aXRpb25NYXRyaXggKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgCgogICAgc3Rh
dGljIFpPT0xFQU4gICAgICAgICAgICAgICAgICBDaGVja1Bvc3NpYmxlT2JqZWN0T3JpZ2luICgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5SSFlfYnVuY2ggPE5SSFlf
Y2xhc3NPYmplY3Q+ICpvcmlnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KTsKCiAgICB2aXJ0dWFsIHZvaWQgQ3JlYXRlT2JzZXJ2ZXIgKGludCB0eXBlKSB7IGRvQ3JlYXRl
T2JzZXJ2ZXIgKHRoaXMsIHR5cGUpOyB9OwoKICAgICAKCgogICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEZXNjcmliZUNyZWF0ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEZXNjcmliZUZ1bGxTdGF0ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEZXNjcmliZUZ1bGxTdGF0ZVBhY2tlZCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEZXNjcmliZURlbGV0ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEZXNjcmliZUZpbGVIZXJvICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7CiAgICBUd2luZSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
dEZpbGVIZXJvT3B0aW9uKCBpbnQgaWdub3JlRGVmYXVsdCApOwogICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEZXNjcmliZUZpbGVTaW1wICgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBUd2luZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdldEZpbGVTaW1wT3B0aW9uKCBpbnQgaWdub3JlRGVmYXVsdCApOwogICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmliZUZpbGVHcm91cCAoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3Jp
YmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgVHdp
bmUgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRGaWxlR3JvdXBPcHRpb24oIGludCBpZ25v
cmVEZWZhdWx0ICk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJl
VXNlSGVyb0ZsYWcgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xh
c3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKICAgIFR3aW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0VXNlSGVy
b0ZsYWdPcHRpb24oIGludCBpZ25vcmVEZWZhdWx0ICk7CgogICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEZXNjcmliZUlzQW5pbWF0aW5nICgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERlc2NyaWJlQW5pbUVuYWJsZWQgKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRGVzY3JpYmVPYmplY3RPcmlnaW4gKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFR3aW5lICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2V0T2JqZWN0T3JpZ2luT3B0aW9uKCBpbnQgaWdub3JlRGVmYXVsdCApOwoK
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdE9iamVjdChGSUxFICpmcCwg
Y29uc3QgTGlzdDxUd2luZT4gJmxzKTsKCiAgICAgCiAgICAgCiAgICAgCiAgICBOUkhZX2NsYXNz
T2JqZWN0TWFuaXB1bGF0b3IqIEdldE1hbmlwdWxhdG9yKCkgeyByZXR1cm4gKG1hbmlwdWxhdG9y
KTsgfQogICAgQk9PTEVBTiBDcmVhdGVNYW5pcHVsYXRvcigpOyAKICAgIHZvaWQgRGVzdHJveU1h
bmlwdWxhdG9yKCk7CiAgICB2b2lkIFJlcG9zaXRpb25DaGFucyggdmVjdG9yPCBOUkhZX2NsYXNz
Q2hhbm5lbCogPiYsCgkJCSAgdmVjdG9yPCBOUkhZX2NsYXNzQ2hhbm5lbCogPiYsCgkJCSAgdmVj
dG9yPCBOUkhZX2NsYXNzQ2hhbm5lbCogPiYgKTsKICAgIHZvaWQgUmVwb3NpdGlvbkNoYW5zKCBj
bGFzcyBOUkhZX2NsYXNzQ2hhbm5lbExpc3QmICk7CiAgICBNX01hdHJpeCBSZXBvc2l0aW9uTWF0
cml4KCBjb25zdCBNX01hdHJpeCYsIGludCwKCQkJICAgICAgIHZlY3RvcjwgTlJIWV9jbGFzc0No
YW5uZWwqID4mLAoJCQkgICAgICAgdmVjdG9yPCBOUkhZX2NsYXNzQ2hhbm5lbCogPiYsCgkJCSAg
ICAgICB2ZWN0b3I8IE5SSFlfY2xhc3NDaGFubmVsKiA+JiApOwogICAgaW50IFJlcG9zaXRpb24o
IGNvbnN0IE1fTWF0cml4JiBuZXdQb3MsIGludCBmcmFtZSwgYm9vbCBzY2FsZSA9IGZhbHNlLAoJ
CSAgICBib29sIHJvdCA9IHRydWUsIGJvb2wgdHJhbiA9IHRydWUsIGJvb2wgc2F2ZSA9IHRydWUg
KTsKICAgIGludCBSZXBvc2l0aW9uKCBOUkhZX2NsYXNzVGhpbmcqIHRhcmdldCwgaW50IGZyYW1l
LAoJCSAgICBib29sIHNjYWxlID0gZmFsc2UsIGJvb2wgcm90ID0gdHJ1ZSwgYm9vbCB0cmFuID0g
dHJ1ZSwKCQkgICAgYm9vbCBzYXZlID0gdHJ1ZSApOwoKICAgIHZvaWQgU2V0SWdub3JlRXh0cmFD
aGFubmVsTW9kZSggWk9PTEVBTiBzdGF0ZSApIHsgZXh0cmFNb2RlID0gc3RhdGU7IH0KICAgIFpP
T0xFQU4gR2V0SWdub3JlRXh0cmFDaGFubmVsTW9kZSgpIHsgcmV0dXJuKGV4dHJhTW9kZSk7IH0K
ICAgIHZvaWQgU2V0T3JiaXRPYmplY3QoIE5SSFlfY2xhc3NPYmplY3QqIG9iaiApIHsgdGhpcy0+
b3JiaXRPYmplY3Q9b2JqOyB9CiAgICBOUkhZX2NsYXNzT2JqZWN0KiBHZXRPcmJpdE9iamVjdCgp
OwogICAgTV9WZWN0b3IgR2V0UmF5SW50ZXJzZWN0aW9uKCBNX1ZlY3RvciBvcmlnaW4sIE1fVmVj
dG9yIHJheSApOwogICAgQk9PTEVBTiBTZXRQcmltYXJ5Q29uc3RyYWludCggTlJIWV9jbGFzc1Ry
YWNrKiB0cmsgKSB7Cgl0aGlzLT5wcmltYXJ5Q29uc3RyYWludD10cms7IAoJcmV0dXJuIDEgOwog
ICAgfQogICAgTlJIWV9jbGFzc1RyYWNrKiBHZXRQcmltYXJ5Q29uc3RyYWludCgpIHsKCXJldHVy
biB0aGlzLT5wcmltYXJ5Q29uc3RyYWludDsKICAgIH0KICAgIEJPT0xFQU4gU2V0U2Vjb25kYXJ5
Q29uc3RyYWludCggTlJIWV9jbGFzc1RyYWNrKiB0cmsgKSB7Cgl0aGlzLT5zZWNvbmRhcnlDb25z
dHJhaW50PXRyazsKCXJldHVybiAxIDsKICAgIH0KICAgIE5SSFlfY2xhc3NUcmFjayogR2V0U2Vj
b25kYXJ5Q29uc3RyYWludCgpIHsKCXJldHVybiB0aGlzLT5zZWNvbmRhcnlDb25zdHJhaW50Owog
ICAgfQogICAgQk9PTEVBTiBTZXRDb25zdHJhaW50R2VvbWV0cnkoIE5SSFlfY2xhc3NPYmplY3Qq
IG9iamVjdCApIHsKCXRoaXMtPmNvbnN0cmFpbnRHZW9tZXRyeT1vYmplY3Q7IAoJcmV0dXJuIDEg
OwogICAgfQogICAgTlJIWV9jbGFzc09iamVjdCogR2V0Q29uc3RyYWludEdlb21ldHJ5KCkgewoJ
cmV0dXJuIHRoaXMtPmNvbnN0cmFpbnRHZW9tZXRyeTsKICAgIH0KCgoKICAgICAKICAgIEJPT0xF
QU4gICAgICAgICAgICAgICAgICAgICBTZXRGaWxlSGVybyAoY29uc3QgVHdpbmUgJiBuZXdGaWxl
SGVybyk7CiAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgU2V0RmlsZVNpbXAgKGNvbnN0
IFR3aW5lICYgbmV3RmlsZVNpbXApOwogICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgIFNl
dEZpbGVHcm91cCAoY29uc3QgVHdpbmUgJiBuZXdGaWxlR3JvdXApOwogICAgQk9PTEVBTiAgICAg
ICAgICAgICAgICAgICAgIFNldFVzZUhlcm9GbGFnIChCT09MRUFOIG5ld1N0YXR1cyk7CiAgICBC
T09MRUFOICAgICAgICAgICAgICAgICAgICAgR2V0VXNlSGVyb0ZsYWcgKCk7CiAgICBCT09MRUFO
ICAgICAgICAgICAgICAgICAgICAgU2V0VXNlRmlsZUNoYW5uZWwgKEJPT0xFQU4gbmV3U3RhdHVz
KTsKICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICBHZXRVc2VGaWxlQ2hhbm5lbCAoKTsK
CiAgICBjb25zdCBUd2luZSAmICAgICAgICAgICAgICAgR2V0RmlsZUhlcm8gKCk7CiAgICBjb25z
dCBUd2luZSAmICAgICAgICAgICAgICAgR2V0RmlsZVNpbXAgKCk7CiAgICBjb25zdCBUd2luZSAm
ICAgICAgICAgICAgICAgR2V0RmlsZUdyb3VwICgpOwoKICAgIGNvbnN0IFR3aW5lICYgICAgICAg
ICAgICAgICBHZXRPcmlnRmlsZUhlcm8gKCk7CiAgICBjb25zdCBUd2luZSAmICAgICAgICAgICAg
ICAgR2V0T3JpZ0ZpbGVTaW1wICgpOwoKICAgIGNvbnN0IExpc3QgPFR3aW5lPiAmICAgICAgICBH
ZXRGaWxlbmFtZXMgKGZsb2F0IHRpbWUpOwogICAgY29uc3QgVHdpbmUgJiAgICAgICAgICAgICAg
IEdldEZpbGVHcm91cEFuZE92ZXJyaWRlICgpOwoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICBPdmVycmlkZUZpbGUgKGNvbnN0IFR3aW5lICYgbmV3RmlsZSk7CiAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgT3ZlcnJpZGVOZXh0ZmlsZSAoY29uc3QgVHdpbmUgJiBuZXdOZXh0
ZmlsZSk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGVHcm91cCAoY29u
c3QgVHdpbmUgJiBuZXdHcm91cCk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgUmVz
ZXRPdmVycmlkZSAoKTsKCiAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgU2V0T2JqZWN0
T3JpZ2luKE5SSFlfY2xhc3NUaGluZyAqb3JpZ2luKTsKICAgIE5SSFlfY2xhc3NPYmplY3QgKkdl
dE9iamVjdFB0cigpIHsgcmV0dXJuIHRoaXM7IH0KfTsKCiAKCiAKCiMgNDAgImgvbnJoeV9jbGFz
c0NhbWVyYS5oIiAyCgojIDEgImgvbnJoeV9jbGFzc1ZpZXdNYW5pcHVsYXRvci5oIiAxCiAKCgoK
CgoKCgoKCgoKCgoKCmNsYXNzIE5SSFlfY2xhc3NPYmplY3Q7CmNsYXNzIE5SSFlfY2xhc3NUaGlu
ZzsKY2xhc3MgTlJIWV9jbGFzc0NhbWVyYTsKIyAxICJoL25yaHlfY2xhc3NPYnNlcnZlci5oIiAx
CgoKCiAKCgoKIAogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyMSAiaC9ucmh5X2NsYXNz
Vmlld01hbmlwdWxhdG9yLmgiIDIKCiMgMSAiaC9ucmh5X2NsYXNzQ2hhbm5lbExpc3QuaCIgMQog
CiAKIAogCiAKCgoKCgoKIyAxICIvc29mdHdhcmUvdGhhbGlhL2gvc3RkdHlwZXMuaCIgMQoKIAoK
CgoKCgoKCgoKCgoKCgoKCiMgMjAzICIvc29mdHdhcmUvdGhhbGlhL2gvc3RkdHlwZXMuaCIKCgoK
CgoKCgoKCgoKCgojIDEyICJoL25yaHlfY2xhc3NDaGFubmVsTGlzdC5oIiAyCgpjbGFzcyBOUkhZ
X2NsYXNzQ2hhbm5lbDsKCiAKIAoKY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtOwoKIAoK
Y2xhc3MgTlJIWV9jbGFzc0NoYW5uZWxMaXN0IDogCiAgICAgICAgcHVibGljIFN1YmplY3QsCiAg
ICAgICAgcHVibGljIE9ic2VydmVyLCAgCiAgICAgICAgcHVibGljIE9ic2VydmVyRmFjdG9yeTxO
UkhZX2NsYXNzQ2hhbm5lbExpc3Q+CnsKICAgIEJPT0xFQU4gY2hlY2tDaGFubmVsQ3VycmVuY3kg
KE5SSFlfY2xhc3NDaGFubmVsICpjaGFuKTsKICAgIEJPT0xFQU4gX21hZGVDdXJyZW50Owpwcm90
ZWN0ZWQ6CiAgICBMaXN0IDxjbGFzcyBOUkhZX2NsYXNzQ2hhbm5lbCAqPiBfY2hhbm5lbHM7CiAg
ICBMaXN0IDxjbGFzcyBOUkhZX2NsYXNzVGhpbmcgICAqPiBfdGhpbmdzOwogICAgQk9PTEVBTiBf
bmVlZHNTb3J0aW5nOwogICAgQk9PTEVBTiBfaXNTb3J0YWJsZTsKICAgIGludCAgQWxsb3dEZXN0
cnVjdEJ5U3ViamVjdCAoKSB7IHJldHVybiAwIDsgfTsKICAgIHZvaWQgc29ydCAoKTsKcHVibGlj
OgogICAgTlJIWV9jbGFzc0NoYW5uZWxMaXN0IChCT09MRUFOIG1ha2VDdXJyZW50ID0gMSApOwog
ICB+TlJIWV9jbGFzc0NoYW5uZWxMaXN0ICgpOwogICAgdm9pZCAgICBTb3J0ICgpIHsgaWYgKF9u
ZWVkc1NvcnRpbmcpIHNvcnQoKTsgfQogICAgdm9pZCAgICBSZW1vdmVBbGwgICgpOwogICAgdm9p
ZCAgICBTZXRDdXJyZW50IChjb25zdCBMaXN0IDxjbGFzcyBOUkhZX2NsYXNzQ2hhbm5lbCAqPiAm
KTsKICAgIEJPT0xFQU4gQWRkICAgICAoTlJIWV9jbGFzc0NoYW5uZWwgKik7CiAgICBCT09MRUFO
IFJlbW92ZSAgKE5SSFlfY2xhc3NDaGFubmVsICopOwogICAgQk9PTEVBTiBTYXZlICAgICgpOwog
ICAgQk9PTEVBTiBSZXNldCAgICgpOwogICAgdm9pZCAgICBSZWZyZXNoT2JzZXJ2ZXIgKFN1Ympl
Y3QgKik7CiAgICB2b2lkIENyZWF0ZU9ic2VydmVyIChpbnQgdHlwZSkgeyBkb0NyZWF0ZU9ic2Vy
dmVyICh0aGlzLCB0eXBlKTsgfTsKICAgIGludCAgICAgc2l6ZSAgICAoKSB7IHJldHVybiBfY2hh
bm5lbHMuc2l6ZSgpOyB9OwogICAgdm9pZCAgICBTZXRJc1NvcnRhYmxlIChCT09MRUFOIGY9IDEg
KSB7IF9pc1NvcnRhYmxlID0gZjsgfTsKICAgIE5SSFlfY2xhc3NDaGFubmVsICpvcGVyYXRvciBb
XSAoaW50IGkpIAogICAgICAgICAgICAgICAgeyBTb3J0ICgpOyByZXR1cm4gX2NoYW5uZWxzW2ld
OyB9OwogICAgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBOUkhZX2NsYXNzQ2hhbm5lbExpc3QmICk7
CiAgICBMaXN0IDxOUkhZX2NsYXNzQ2hhbm5lbCAqPiAmR2V0Q2hhbm5lbHMgKCkgCiAgICAgICAg
ICAgICAgICB7IFNvcnQgKCk7IHJldHVybiBfY2hhbm5lbHM7IH07CiAgICBMaXN0IDxOUkhZX2Ns
YXNzQ2hhbm5lbCAqPiAmR2V0VW5zb3J0ZWRDaGFubmVscyAoKSAKICAgICAgICAgICAgICAgIHsg
cmV0dXJuIF9jaGFubmVsczsgfTsKICAgIExpc3QgPE5SSFlfY2xhc3NDaGFubmVsICo+IEdldENo
YW5uZWxzQWRkZWQgKE5SSFlfY2xhc3NDaGFubmVsTGlzdCAmKTsKICAgIExpc3QgPE5SSFlfY2xh
c3NDaGFubmVsICo+IEdldENoYW5uZWxzUmVtb3ZlZCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoTlJIWV9jbGFzc0NoYW5uZWxMaXN0ICZjaGFuTGlzdCkgCiAgICAgICAgICAgICAg
ICB7IHJldHVybiBjaGFuTGlzdC5HZXRDaGFubmVsc0FkZGVkICgqdGhpcyk7IH07CiAgICBMaXN0
IDxOUkhZX2NsYXNzQ2hhbm5lbCAqPiBHZXRDaGFubmVsc0ZvclRoaW5nIChOUkhZX2NsYXNzVGhp
bmcgKik7CiAgICBMaXN0IDxOUkhZX2NsYXNzVGhpbmcgKj4gIEdldFRoaW5ncyAoKTsKICAgIExp
c3QgPE5SSFlfY2xhc3NUaGluZyAqPiAgR2V0VGhpbmdzQ2hhbmdlZCAoTlJIWV9jbGFzc0NoYW5u
ZWxMaXN0ICYpOwogICAgTGlzdCA8TlJIWV9jbGFzc1RoaW5nICo+ICBHZXRUaGluZ3NBZGRlZCAg
IChOUkhZX2NsYXNzQ2hhbm5lbExpc3QgJik7CiAgICBMaXN0IDxOUkhZX2NsYXNzVGhpbmcgKj4g
IEdldFRoaW5nc1JlbW92ZWQgKE5SSFlfY2xhc3NDaGFubmVsTGlzdCAmY2hhbkxpc3QpCiAgICAg
ICAgICAgICAgICB7IHJldHVybiBjaGFuTGlzdC5HZXRUaGluZ3NBZGRlZCAoKnRoaXMpOyB9Owog
ICAgaW50IEdldE9ic2VydmVyVHlwZSgpIHsgcmV0dXJuIDB4MDAwMDAwODAgOyB9OwoKICAgIHZv
aWQgRGVzY3JpYmVDdXJ2ZXMoIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSYgKTsKCn07CgogCmNs
YXNzIE5SSFlfY2xhc3NDaGFubmVsTGlzdE9ic2VydmVyIDogCiAgICBwdWJsaWMgT2JzZXJ2ZXIg
IAp7CnByaXZhdGU6CiAgICB2b2lkIFJlZnJlc2hPYnNlcnZlciAoU3ViamVjdCAqY2hhbkxpc3Qp
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgUmVmcmVzaENoYW5uZWxMaXN0IChj
aGFuTGlzdCk7IH07CiAgICBpbnQgIEdldFR5cGUgKCkgICAgICAgICAgICAgeyByZXR1cm4gR2V0
VHlwZUNoYW5uZWxMaXN0KCk7ICAgfTsKICAgIGludCAgQWxsb3dEZXN0cnVjdEJ5U3ViamVjdCAo
KSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBBbGxvd0Rlc3RydWN0
QnlTdWJqZWN0Q2hhbm5lbExpc3QoKTsgfTsKcHVibGljOgogICAgdmlydHVhbCB2b2lkIFJlZnJl
c2hDaGFubmVsTGlzdCAoU3ViamVjdCAqKSA9IDA7CiAgICB2aXJ0dWFsIGludCAgR2V0VHlwZUNo
YW5uZWxMaXN0ICgpID0gMDsKICAgIHZpcnR1YWwgaW50ICBBbGxvd0Rlc3RydWN0QnlTdWJqZWN0
Q2hhbm5lbExpc3QgKCkgPSAwOwoKICAgIE5SSFlfY2xhc3NDaGFubmVsTGlzdE9ic2VydmVyIChO
UkhZX2NsYXNzQ2hhbm5lbExpc3QgKmNoYW5MaXN0KSA6CiAgICAgICAgT2JzZXJ2ZXIgKGNoYW5M
aXN0KSB7IH07Cn07CgoKCiMgMjIgImgvbnJoeV9jbGFzc1ZpZXdNYW5pcHVsYXRvci5oIiAyCgoj
IDEgImgvVmlld01hbmlwdWxhdG9yLmgiIDEKCgoKIyAxICJoL01hbmlwdWxhdG9yLmgiIDEKCgoK
IyAxICIvc29mdHdhcmUvdGhhbGlhL2gvT3BlblN0YWdlLmgiIDEKCgoKIyAxICIvdXNyL1gxMVI2
L2luY2x1ZGUvWG0vWG0uaCIgMQogCgoKIAogCgogCiAKIAoKCgoKCgoKCgoKCgoKIyAxICIvdXNy
L1gxMVI2L2luY2x1ZGUvWDExL0ludHJpbnNpYy5oIiAxCiAKIAoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9YMTFSNi9pbmNs
dWRlL1gxMS9YbGliLmgiIDEKIAogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEvWC5oIiAxCiAK
CgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKIAoKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSUQ7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBNYXNrOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgQXRvbTsKdHlwZWRlZiB1bnNpZ25lZCBs
b25nIFZpc3VhbElEOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVGltZTsKCgoKCgoKCgoKdHlwZWRl
ZiBYSUQgV2luZG93Owp0eXBlZGVmIFhJRCBEcmF3YWJsZTsKdHlwZWRlZiBYSUQgRm9udDsKdHlw
ZWRlZiBYSUQgUGl4bWFwOwp0eXBlZGVmIFhJRCBDdXJzb3I7CnR5cGVkZWYgWElEIENvbG9ybWFw
Owp0eXBlZGVmIFhJRCBHQ29udGV4dDsKdHlwZWRlZiBYSUQgS2V5U3ltOwoKdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIEtleUNvZGU7CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKIAoKCgoKCgoKCQkgICAgICAgCiAKCgoKCgoKCgoKCiAKCgoKCgogCgoKCgogCgoK
CgoKIAoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoK
CgoKCgoKCgojIDM0NSAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YLmgiCgoKCgoKCgoKCgoKIAoK
CgogCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgog
CgoKCiAKCgoKCgogCgoKCgoKIAoKCgoKIAoKCgoKCiAKCgoKCgoKCiAKCgoKCiAKCgoKCgogCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKIAoKCgoKCiAKCgoKCgoKIAoKCgoK
IAoKCgoKIAoKCgoKCgogCgoKCgogCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCiAKCgoKCgoKIAoKCgogCgoKCgoKIAoKCgogCgoKCgoKIAoKCgoKCiAKCgoKIAoK
CgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKCgoK
CiAKCgoKIAoKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgojIDU2ICIvdXNyL1gxMVI2L2lu
Y2x1ZGUvWDExL1hsaWIuaCIgMgoKCiAKIyAxICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1hmdW5j
cHJvdG8uaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA1OSAiL3Vzci9Y
MTFSNi9pbmNsdWRlL1gxMS9YbGliLmgiIDIKCiMgMSAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9Y
b3NkZWZzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgCgoKCgoKCgojIDk0ICIvdXNyL1gxMVI2
L2luY2x1ZGUvWDExL1hvc2RlZnMuaCIKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
IDYwICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1hsaWIuaCIgMgoKCgoKCgoKCgoKCgoKIyAxICIv
dXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCiMgMzQyICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9l
Z2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKIyA3MyAiL3Vzci9YMTFSNi9pbmNsdWRl
L1gxMS9YbGliLmgiIDIKCiMgODYgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEvWGxpYi5oIgoKCgoK
CgoKCgoKdHlwZWRlZiBjaGFyICpYUG9pbnRlcjsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCnR5cGVkZWYgc3Ry
dWN0IF9YRXh0RGF0YSB7CglpbnQgbnVtYmVyOwkJIAoJc3RydWN0IF9YRXh0RGF0YSAqbmV4dDsJ
IAoJaW50ICgqZnJlZV9wcml2YXRlKSgJIAoKCXN0cnVjdCBfWEV4dERhdGEgKmV4dGVuc2lvbgoK
CSk7CglYUG9pbnRlciBwcml2YXRlX2RhdGE7CSAKfSBYRXh0RGF0YTsKCiAKCgp0eXBlZGVmIHN0
cnVjdCB7CQkgCglpbnQgZXh0ZW5zaW9uOwkJIAoJaW50IG1ham9yX29wY29kZTsJIAoJaW50IGZp
cnN0X2V2ZW50OwkgCglpbnQgZmlyc3RfZXJyb3I7CSAKfSBYRXh0Q29kZXM7CgogCgoKCnR5cGVk
ZWYgc3RydWN0IHsKICAgIGludCBkZXB0aDsKICAgIGludCBiaXRzX3Blcl9waXhlbDsKICAgIGlu
dCBzY2FubGluZV9wYWQ7Cn0gWFBpeG1hcEZvcm1hdFZhbHVlczsKCgogCgoKdHlwZWRlZiBzdHJ1
Y3QgewoJaW50IGZ1bmN0aW9uOwkJIAoJdW5zaWduZWQgbG9uZyBwbGFuZV9tYXNrOyAKCXVuc2ln
bmVkIGxvbmcgZm9yZWdyb3VuZDsgCgl1bnNpZ25lZCBsb25nIGJhY2tncm91bmQ7IAoJaW50IGxp
bmVfd2lkdGg7CQkgCglpbnQgbGluZV9zdHlsZTsJIAkgCglpbnQgY2FwX3N0eWxlOwkgIAkgCgoJ
aW50IGpvaW5fc3R5bGU7CSAJIAoJaW50IGZpbGxfc3R5bGU7CSAJIAoKCWludCBmaWxsX3J1bGU7
CSAgCSAKCWludCBhcmNfbW9kZTsJCSAKCVBpeG1hcCB0aWxlOwkJIAoJUGl4bWFwIHN0aXBwbGU7
CQkgCglpbnQgdHNfeF9vcmlnaW47CSAKCWludCB0c195X29yaWdpbjsKICAgICAgICBGb250IGZv
bnQ7CSAgICAgICAgIAoJaW50IHN1YndpbmRvd19tb2RlOyAgICAgIAoJaW50ICBncmFwaGljc19l
eHBvc3VyZXM7IAoJaW50IGNsaXBfeF9vcmlnaW47CSAKCWludCBjbGlwX3lfb3JpZ2luOwoJUGl4
bWFwIGNsaXBfbWFzazsJIAoJaW50IGRhc2hfb2Zmc2V0OwkgCgljaGFyIGRhc2hlczsKfSBYR0NW
YWx1ZXM7CgogCgoKCgp0eXBlZGVmIHN0cnVjdCBfWEdDCgoKCgoKCgoqR0M7CgogCgoKdHlwZWRl
ZiBzdHJ1Y3QgewoJWEV4dERhdGEgKmV4dF9kYXRhOwkgCglWaXN1YWxJRCB2aXN1YWxpZDsJIAoK
CWludCBjX2NsYXNzOwkJIAoKCgoJdW5zaWduZWQgbG9uZyByZWRfbWFzaywgZ3JlZW5fbWFzaywg
Ymx1ZV9tYXNrOwkgCglpbnQgYml0c19wZXJfcmdiOwkgCglpbnQgbWFwX2VudHJpZXM7CSAKfSBW
aXN1YWw7CgogCgoJCnR5cGVkZWYgc3RydWN0IHsKCWludCBkZXB0aDsJCSAKCWludCBudmlzdWFs
czsJCSAKCVZpc3VhbCAqdmlzdWFsczsJIAp9IERlcHRoOwoKIAoKCgoKCnN0cnVjdCBfWERpc3Bs
YXk7CQkgCgp0eXBlZGVmIHN0cnVjdCB7CglYRXh0RGF0YSAqZXh0X2RhdGE7CSAKCXN0cnVjdCBf
WERpc3BsYXkgKmRpc3BsYXk7IAoJV2luZG93IHJvb3Q7CQkgCglpbnQgd2lkdGgsIGhlaWdodDsJ
IAoJaW50IG13aWR0aCwgbWhlaWdodDsJIAoJaW50IG5kZXB0aHM7CQkgCglEZXB0aCAqZGVwdGhz
OwkJIAoJaW50IHJvb3RfZGVwdGg7CQkgCglWaXN1YWwgKnJvb3RfdmlzdWFsOwkgCglHQyBkZWZh
dWx0X2djOwkJIAoJQ29sb3JtYXAgY21hcDsJCSAKCXVuc2lnbmVkIGxvbmcgd2hpdGVfcGl4ZWw7
Cgl1bnNpZ25lZCBsb25nIGJsYWNrX3BpeGVsOwkgCglpbnQgbWF4X21hcHMsIG1pbl9tYXBzOwkg
CglpbnQgYmFja2luZ19zdG9yZTsJIAoJaW50ICBzYXZlX3VuZGVyczsJCglsb25nIHJvb3RfaW5w
dXRfbWFzazsJIAp9IFNjcmVlbjsKCiAKCgp0eXBlZGVmIHN0cnVjdCB7CglYRXh0RGF0YSAqZXh0
X2RhdGE7CSAKCWludCBkZXB0aDsJCSAKCWludCBiaXRzX3Blcl9waXhlbDsJIAoJaW50IHNjYW5s
aW5lX3BhZDsJIAp9IFNjcmVlbkZvcm1hdDsKCiAKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBQaXht
YXAgYmFja2dyb3VuZF9waXhtYXA7CSAKICAgIHVuc2lnbmVkIGxvbmcgYmFja2dyb3VuZF9waXhl
bDsJIAogICAgUGl4bWFwIGJvcmRlcl9waXhtYXA7CSAKICAgIHVuc2lnbmVkIGxvbmcgYm9yZGVy
X3BpeGVsOwkgCiAgICBpbnQgYml0X2dyYXZpdHk7CQkgCiAgICBpbnQgd2luX2dyYXZpdHk7CQkg
CiAgICBpbnQgYmFja2luZ19zdG9yZTsJCSAKICAgIHVuc2lnbmVkIGxvbmcgYmFja2luZ19wbGFu
ZXM7IAogICAgdW5zaWduZWQgbG9uZyBiYWNraW5nX3BpeGVsOyAKICAgIGludCAgc2F2ZV91bmRl
cjsJCSAKICAgIGxvbmcgZXZlbnRfbWFzazsJCSAKICAgIGxvbmcgZG9fbm90X3Byb3BhZ2F0ZV9t
YXNrOwkgCiAgICBpbnQgIG92ZXJyaWRlX3JlZGlyZWN0OwkgCiAgICBDb2xvcm1hcCBjb2xvcm1h
cDsJCSAKICAgIEN1cnNvciBjdXJzb3I7CQkgCn0gWFNldFdpbmRvd0F0dHJpYnV0ZXM7Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBpbnQgeCwgeTsJCQkgCiAgICBpbnQgd2lkdGgsIGhlaWdodDsJCSAK
ICAgIGludCBib3JkZXJfd2lkdGg7CQkgCiAgICBpbnQgZGVwdGg7ICAgICAgICAgIAkgCiAgICBW
aXN1YWwgKnZpc3VhbDsJCSAKICAgIFdpbmRvdyByb290OyAgICAgICAgCSAKCiAgICBpbnQgY19j
bGFzczsJCSAKCgoKICAgIGludCBiaXRfZ3Jhdml0eTsJCSAKICAgIGludCB3aW5fZ3Jhdml0eTsJ
CSAKICAgIGludCBiYWNraW5nX3N0b3JlOwkJIAogICAgdW5zaWduZWQgbG9uZyBiYWNraW5nX3Bs
YW5lczsgCiAgICB1bnNpZ25lZCBsb25nIGJhY2tpbmdfcGl4ZWw7IAogICAgaW50ICBzYXZlX3Vu
ZGVyOwkJIAogICAgQ29sb3JtYXAgY29sb3JtYXA7CQkgCiAgICBpbnQgIG1hcF9pbnN0YWxsZWQ7
CQkgCiAgICBpbnQgbWFwX3N0YXRlOwkJIAogICAgbG9uZyBhbGxfZXZlbnRfbWFza3M7CSAKICAg
IGxvbmcgeW91cl9ldmVudF9tYXNrOwkgCiAgICBsb25nIGRvX25vdF9wcm9wYWdhdGVfbWFzazsg
IAogICAgaW50ICBvdmVycmlkZV9yZWRpcmVjdDsJIAogICAgU2NyZWVuICpzY3JlZW47CQkgCn0g
WFdpbmRvd0F0dHJpYnV0ZXM7CgogCgoKCgp0eXBlZGVmIHN0cnVjdCB7CglpbnQgZmFtaWx5OwkJ
IAoJaW50IGxlbmd0aDsJCSAKCWNoYXIgKmFkZHJlc3M7CQkgCn0gWEhvc3RBZGRyZXNzOwoKIAoK
CnR5cGVkZWYgc3RydWN0IF9YSW1hZ2UgewogICAgaW50IHdpZHRoLCBoZWlnaHQ7CQkgCiAgICBp
bnQgeG9mZnNldDsJCSAKICAgIGludCBmb3JtYXQ7CQkJIAogICAgY2hhciAqZGF0YTsJCQkgCiAg
ICBpbnQgYnl0ZV9vcmRlcjsJCSAKICAgIGludCBiaXRtYXBfdW5pdDsJCSAKICAgIGludCBiaXRt
YXBfYml0X29yZGVyOwkgCiAgICBpbnQgYml0bWFwX3BhZDsJCSAKICAgIGludCBkZXB0aDsJCQkg
CiAgICBpbnQgYnl0ZXNfcGVyX2xpbmU7CQkgCiAgICBpbnQgYml0c19wZXJfcGl4ZWw7CQkgCiAg
ICB1bnNpZ25lZCBsb25nIHJlZF9tYXNrOwkgCiAgICB1bnNpZ25lZCBsb25nIGdyZWVuX21hc2s7
CiAgICB1bnNpZ25lZCBsb25nIGJsdWVfbWFzazsKICAgIFhQb2ludGVyIG9iZGF0YTsJCSAKICAg
IHN0cnVjdCBmdW5jcyB7CQkgCgoJc3RydWN0IF9YSW1hZ2UgKigqY3JlYXRlX2ltYWdlKSgKCQlz
dHJ1Y3QgX1hEaXNwbGF5KiAgLAoJCVZpc3VhbCoJCSAsCgkJdW5zaWduZWQgaW50CSAsCgkJaW50
CQkgLAoJCWludAkJICwKCQljaGFyKgkJICwKCQl1bnNpZ25lZCBpbnQJICwKCQl1bnNpZ25lZCBp
bnQJICwKCQlpbnQJCSAsCgkJaW50CQkgKTsKCWludCAoKmRlc3Ryb3lfaW1hZ2UpICAgICAgICAo
c3RydWN0IF9YSW1hZ2UgKik7Cgl1bnNpZ25lZCBsb25nICgqZ2V0X3BpeGVsKSAgKHN0cnVjdCBf
WEltYWdlICosIGludCwgaW50KTsKCWludCAoKnB1dF9waXhlbCkgICAgICAgICAgICAoc3RydWN0
IF9YSW1hZ2UgKiwgaW50LCBpbnQsIHVuc2lnbmVkIGxvbmcpOwoJc3RydWN0IF9YSW1hZ2UgKigq
c3ViX2ltYWdlKShzdHJ1Y3QgX1hJbWFnZSAqLCBpbnQsIGludCwgdW5zaWduZWQgaW50LCB1bnNp
Z25lZCBpbnQpOwoJaW50ICgqYWRkX3BpeGVsKSAgICAgICAgICAgIChzdHJ1Y3QgX1hJbWFnZSAq
LCBsb25nKTsKCgoKCgoKCgoJfSBmOwp9IFhJbWFnZTsKCiAKCgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICBpbnQgeCwgeTsKICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgaW50IGJvcmRlcl93aWR0aDsK
ICAgIFdpbmRvdyBzaWJsaW5nOwogICAgaW50IHN0YWNrX21vZGU7Cn0gWFdpbmRvd0NoYW5nZXM7
CgogCgoKdHlwZWRlZiBzdHJ1Y3QgewoJdW5zaWduZWQgbG9uZyBwaXhlbDsKCXVuc2lnbmVkIHNo
b3J0IHJlZCwgZ3JlZW4sIGJsdWU7CgljaGFyIGZsYWdzOyAgIAoJY2hhciBwYWQ7Cn0gWENvbG9y
OwoKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgc2hvcnQgeDEsIHkxLCB4MiwgeTI7Cn0gWFNl
Z21lbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBzaG9ydCB4LCB5Owp9IFhQb2ludDsKICAgIAp0
eXBlZGVmIHN0cnVjdCB7CiAgICBzaG9ydCB4LCB5OwogICAgdW5zaWduZWQgc2hvcnQgd2lkdGgs
IGhlaWdodDsKfSBYUmVjdGFuZ2xlOwogICAgCnR5cGVkZWYgc3RydWN0IHsKICAgIHNob3J0IHgs
IHk7CiAgICB1bnNpZ25lZCBzaG9ydCB3aWR0aCwgaGVpZ2h0OwogICAgc2hvcnQgYW5nbGUxLCBh
bmdsZTI7Cn0gWEFyYzsKCgogCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGtleV9jbGlj
a19wZXJjZW50OwogICAgICAgIGludCBiZWxsX3BlcmNlbnQ7CiAgICAgICAgaW50IGJlbGxfcGl0
Y2g7CiAgICAgICAgaW50IGJlbGxfZHVyYXRpb247CiAgICAgICAgaW50IGxlZDsKICAgICAgICBp
bnQgbGVkX21vZGU7CiAgICAgICAgaW50IGtleTsKICAgICAgICBpbnQgYXV0b19yZXBlYXRfbW9k
ZTsgICAgCn0gWEtleWJvYXJkQ29udHJvbDsKCiAKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBp
bnQga2V5X2NsaWNrX3BlcmNlbnQ7CglpbnQgYmVsbF9wZXJjZW50OwoJdW5zaWduZWQgaW50IGJl
bGxfcGl0Y2gsIGJlbGxfZHVyYXRpb247Cgl1bnNpZ25lZCBsb25nIGxlZF9tYXNrOwoJaW50IGds
b2JhbF9hdXRvX3JlcGVhdDsKCWNoYXIgYXV0b19yZXBlYXRzWzMyXTsKfSBYS2V5Ym9hcmRTdGF0
ZTsKCiAKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBUaW1lIHRpbWU7CglzaG9ydCB4LCB5Owp9
IFhUaW1lQ29vcmQ7CgogCgp0eXBlZGVmIHN0cnVjdCB7CiAJaW50IG1heF9rZXlwZXJtb2Q7CSAK
IAlLZXlDb2RlICptb2RpZmllcm1hcDsJIAp9IFhNb2RpZmllcktleW1hcDsKCgogCgoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7CgoKc3RydWN0IF9YUHJpdmF0ZTsJCSAKc3Ry
dWN0IF9Ycm1IYXNoQnVja2V0UmVjOwoKdHlwZWRlZiBzdHJ1Y3QgCgoKCnsKCVhFeHREYXRhICpl
eHRfZGF0YTsJIAoJc3RydWN0IF9YUHJpdmF0ZSAqcHJpdmF0ZTE7CglpbnQgZmQ7CQkJIAoJaW50
IHByaXZhdGUyOwoJaW50IHByb3RvX21ham9yX3ZlcnNpb247IAoJaW50IHByb3RvX21pbm9yX3Zl
cnNpb247IAoJY2hhciAqdmVuZG9yOwkJIAogICAgICAgIFhJRCBwcml2YXRlMzsKCVhJRCBwcml2
YXRlNDsKCVhJRCBwcml2YXRlNTsKCWludCBwcml2YXRlNjsKCVhJRCAoKnJlc291cmNlX2FsbG9j
KSgJIAoKCQlzdHJ1Y3QgX1hEaXNwbGF5KgoKCSk7CglpbnQgYnl0ZV9vcmRlcjsJCSAKCWludCBi
aXRtYXBfdW5pdDsJIAoJaW50IGJpdG1hcF9wYWQ7CQkgCglpbnQgYml0bWFwX2JpdF9vcmRlcjsJ
IAoJaW50IG5mb3JtYXRzOwkJIAoJU2NyZWVuRm9ybWF0ICpwaXhtYXBfZm9ybWF0OwkgCglpbnQg
cHJpdmF0ZTg7CglpbnQgcmVsZWFzZTsJCSAKCXN0cnVjdCBfWFByaXZhdGUgKnByaXZhdGU5LCAq
cHJpdmF0ZTEwOwoJaW50IHFsZW47CQkgCgl1bnNpZ25lZCBsb25nIGxhc3RfcmVxdWVzdF9yZWFk
OyAgCgl1bnNpZ25lZCBsb25nIHJlcXVlc3Q7CSAKCVhQb2ludGVyIHByaXZhdGUxMTsKCVhQb2lu
dGVyIHByaXZhdGUxMjsKCVhQb2ludGVyIHByaXZhdGUxMzsKCVhQb2ludGVyIHByaXZhdGUxNDsK
CXVuc2lnbmVkIG1heF9yZXF1ZXN0X3NpemU7ICAKCXN0cnVjdCBfWHJtSGFzaEJ1Y2tldFJlYyAq
ZGI7CglpbnQgKCpwcml2YXRlMTUpKAoKCQlzdHJ1Y3QgX1hEaXNwbGF5KgoKCQkpOwoJY2hhciAq
ZGlzcGxheV9uYW1lOwkgCglpbnQgZGVmYXVsdF9zY3JlZW47CSAKCWludCBuc2NyZWVuczsJCSAK
CVNjcmVlbiAqc2NyZWVuczsJIAoJdW5zaWduZWQgbG9uZyBtb3Rpb25fYnVmZmVyOwkgCgl1bnNp
Z25lZCBsb25nIHByaXZhdGUxNjsKCWludCBtaW5fa2V5Y29kZTsJIAoJaW50IG1heF9rZXljb2Rl
OwkgCglYUG9pbnRlciBwcml2YXRlMTc7CglYUG9pbnRlciBwcml2YXRlMTg7CglpbnQgcHJpdmF0
ZTE5OwoJY2hhciAqeGRlZmF1bHRzOwkgCgkgCn0KCgoKKl9YUHJpdkRpc3BsYXk7CgoKCgoKIAoK
CnR5cGVkZWYgc3RydWN0IHsKCWludCB0eXBlOwkJIAoJdW5zaWduZWQgbG9uZyBzZXJpYWw7CSAK
CWludCAgc2VuZF9ldmVudDsJIAoJRGlzcGxheSAqZGlzcGxheTsJIAoJV2luZG93IHdpbmRvdzsJ
ICAgICAgICAgCglXaW5kb3cgcm9vdDsJICAgICAgICAgCglXaW5kb3cgc3Vid2luZG93OwkgCglU
aW1lIHRpbWU7CQkgCglpbnQgeCwgeTsJCSAKCWludCB4X3Jvb3QsIHlfcm9vdDsJIAoJdW5zaWdu
ZWQgaW50IHN0YXRlOwkgCgl1bnNpZ25lZCBpbnQga2V5Y29kZTsJIAoJaW50ICBzYW1lX3NjcmVl
bjsJIAp9IFhLZXlFdmVudDsKdHlwZWRlZiBYS2V5RXZlbnQgWEtleVByZXNzZWRFdmVudDsKdHlw
ZWRlZiBYS2V5RXZlbnQgWEtleVJlbGVhc2VkRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CglpbnQg
dHlwZTsJCSAKCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQgIHNlbmRfZXZlbnQ7CSAKCURp
c3BsYXkgKmRpc3BsYXk7CSAKCVdpbmRvdyB3aW5kb3c7CSAgICAgICAgIAoJV2luZG93IHJvb3Q7
CSAgICAgICAgIAoJV2luZG93IHN1YndpbmRvdzsJIAoJVGltZSB0aW1lOwkJIAoJaW50IHgsIHk7
CQkgCglpbnQgeF9yb290LCB5X3Jvb3Q7CSAKCXVuc2lnbmVkIGludCBzdGF0ZTsJIAoJdW5zaWdu
ZWQgaW50IGJ1dHRvbjsJIAoJaW50ICBzYW1lX3NjcmVlbjsJIAp9IFhCdXR0b25FdmVudDsKdHlw
ZWRlZiBYQnV0dG9uRXZlbnQgWEJ1dHRvblByZXNzZWRFdmVudDsKdHlwZWRlZiBYQnV0dG9uRXZl
bnQgWEJ1dHRvblJlbGVhc2VkRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CglpbnQgdHlwZTsJCSAK
CXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQgIHNlbmRfZXZlbnQ7CSAKCURpc3BsYXkgKmRp
c3BsYXk7CSAKCVdpbmRvdyB3aW5kb3c7CSAgICAgICAgIAoJV2luZG93IHJvb3Q7CSAgICAgICAg
IAoJV2luZG93IHN1YndpbmRvdzsJIAoJVGltZSB0aW1lOwkJIAoJaW50IHgsIHk7CQkgCglpbnQg
eF9yb290LCB5X3Jvb3Q7CSAKCXVuc2lnbmVkIGludCBzdGF0ZTsJIAoJY2hhciBpc19oaW50OwkJ
IAoJaW50ICBzYW1lX3NjcmVlbjsJIAp9IFhNb3Rpb25FdmVudDsKdHlwZWRlZiBYTW90aW9uRXZl
bnQgWFBvaW50ZXJNb3ZlZEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50IHR5cGU7CQkgCgl1
bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5kX2V2ZW50OwkgCglEaXNwbGF5ICpkaXNw
bGF5OwkgCglXaW5kb3cgd2luZG93OwkgICAgICAgICAKCVdpbmRvdyByb290OwkgICAgICAgICAK
CVdpbmRvdyBzdWJ3aW5kb3c7CSAKCVRpbWUgdGltZTsJCSAKCWludCB4LCB5OwkJIAoJaW50IHhf
cm9vdCwgeV9yb290OwkgCglpbnQgbW9kZTsJCSAKCWludCBkZXRhaWw7CgkgCgoKCglpbnQgIHNh
bWVfc2NyZWVuOwkgCglpbnQgIGZvY3VzOwkJIAoJdW5zaWduZWQgaW50IHN0YXRlOwkgCn0gWENy
b3NzaW5nRXZlbnQ7CnR5cGVkZWYgWENyb3NzaW5nRXZlbnQgWEVudGVyV2luZG93RXZlbnQ7CnR5
cGVkZWYgWENyb3NzaW5nRXZlbnQgWExlYXZlV2luZG93RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7
CglpbnQgdHlwZTsJCSAKCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQgIHNlbmRfZXZlbnQ7
CSAKCURpc3BsYXkgKmRpc3BsYXk7CSAKCVdpbmRvdyB3aW5kb3c7CQkgCglpbnQgbW9kZTsJCSAK
CWludCBkZXRhaWw7CgkgCgoKCgp9IFhGb2N1c0NoYW5nZUV2ZW50Owp0eXBlZGVmIFhGb2N1c0No
YW5nZUV2ZW50IFhGb2N1c0luRXZlbnQ7CnR5cGVkZWYgWEZvY3VzQ2hhbmdlRXZlbnQgWEZvY3Vz
T3V0RXZlbnQ7CgogCnR5cGVkZWYgc3RydWN0IHsKCWludCB0eXBlOwoJdW5zaWduZWQgbG9uZyBz
ZXJpYWw7CSAKCWludCAgc2VuZF9ldmVudDsJIAoJRGlzcGxheSAqZGlzcGxheTsJIAoJV2luZG93
IHdpbmRvdzsKCWNoYXIga2V5X3ZlY3RvclszMl07Cn0gWEtleW1hcEV2ZW50OwkKCnR5cGVkZWYg
c3RydWN0IHsKCWludCB0eXBlOwoJdW5zaWduZWQgbG9uZyBzZXJpYWw7CSAKCWludCAgc2VuZF9l
dmVudDsJIAoJRGlzcGxheSAqZGlzcGxheTsJIAoJV2luZG93IHdpbmRvdzsKCWludCB4LCB5OwoJ
aW50IHdpZHRoLCBoZWlnaHQ7CglpbnQgY291bnQ7CQkgCn0gWEV4cG9zZUV2ZW50OwoKdHlwZWRl
ZiBzdHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5k
X2V2ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglEcmF3YWJsZSBkcmF3YWJsZTsKCWludCB4
LCB5OwoJaW50IHdpZHRoLCBoZWlnaHQ7CglpbnQgY291bnQ7CQkgCglpbnQgbWFqb3JfY29kZTsJ
CSAKCWludCBtaW5vcl9jb2RlOwkJIAp9IFhHcmFwaGljc0V4cG9zZUV2ZW50OwoKdHlwZWRlZiBz
dHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5kX2V2
ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglEcmF3YWJsZSBkcmF3YWJsZTsKCWludCBtYWpv
cl9jb2RlOwkJIAoJaW50IG1pbm9yX2NvZGU7CQkgCn0gWE5vRXhwb3NlRXZlbnQ7Cgp0eXBlZGVm
IHN0cnVjdCB7CglpbnQgdHlwZTsKCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQgIHNlbmRf
ZXZlbnQ7CSAKCURpc3BsYXkgKmRpc3BsYXk7CSAKCVdpbmRvdyB3aW5kb3c7CglpbnQgc3RhdGU7
CQkgCn0gWFZpc2liaWxpdHlFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKCWludCB0eXBlOwoJdW5z
aWduZWQgbG9uZyBzZXJpYWw7CSAKCWludCAgc2VuZF9ldmVudDsJIAoJRGlzcGxheSAqZGlzcGxh
eTsJIAoJV2luZG93IHBhcmVudDsJCSAKCVdpbmRvdyB3aW5kb3c7CQkgCglpbnQgeCwgeTsJCSAK
CWludCB3aWR0aCwgaGVpZ2h0OwkgCglpbnQgYm9yZGVyX3dpZHRoOwkgCglpbnQgIG92ZXJyaWRl
X3JlZGlyZWN0OwkgCn0gWENyZWF0ZVdpbmRvd0V2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50
IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5kX2V2ZW50OwkgCglEaXNw
bGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgZXZlbnQ7CglXaW5kb3cgd2luZG93Owp9IFhEZXN0cm95
V2luZG93RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CglpbnQgdHlwZTsKCXVuc2lnbmVkIGxvbmcg
c2VyaWFsOwkgCglpbnQgIHNlbmRfZXZlbnQ7CSAKCURpc3BsYXkgKmRpc3BsYXk7CSAKCVdpbmRv
dyBldmVudDsKCVdpbmRvdyB3aW5kb3c7CglpbnQgIGZyb21fY29uZmlndXJlOwp9IFhVbm1hcEV2
ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJ
IAoJaW50ICBzZW5kX2V2ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgZXZlbnQ7
CglXaW5kb3cgd2luZG93OwoJaW50ICBvdmVycmlkZV9yZWRpcmVjdDsJIAp9IFhNYXBFdmVudDsK
CnR5cGVkZWYgc3RydWN0IHsKCWludCB0eXBlOwoJdW5zaWduZWQgbG9uZyBzZXJpYWw7CSAKCWlu
dCAgc2VuZF9ldmVudDsJIAoJRGlzcGxheSAqZGlzcGxheTsJIAoJV2luZG93IHBhcmVudDsKCVdp
bmRvdyB3aW5kb3c7Cn0gWE1hcFJlcXVlc3RFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKCWludCB0
eXBlOwoJdW5zaWduZWQgbG9uZyBzZXJpYWw7CSAKCWludCAgc2VuZF9ldmVudDsJIAoJRGlzcGxh
eSAqZGlzcGxheTsJIAoJV2luZG93IGV2ZW50OwoJV2luZG93IHdpbmRvdzsKCVdpbmRvdyBwYXJl
bnQ7CglpbnQgeCwgeTsKCWludCAgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWFJlcGFyZW50RXZlbnQ7
Cgp0eXBlZGVmIHN0cnVjdCB7CglpbnQgdHlwZTsKCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglp
bnQgIHNlbmRfZXZlbnQ7CSAKCURpc3BsYXkgKmRpc3BsYXk7CSAKCVdpbmRvdyBldmVudDsKCVdp
bmRvdyB3aW5kb3c7CglpbnQgeCwgeTsKCWludCB3aWR0aCwgaGVpZ2h0OwoJaW50IGJvcmRlcl93
aWR0aDsKCVdpbmRvdyBhYm92ZTsKCWludCAgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWENvbmZpZ3Vy
ZUV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlh
bDsJIAoJaW50ICBzZW5kX2V2ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgZXZl
bnQ7CglXaW5kb3cgd2luZG93OwoJaW50IHgsIHk7Cn0gWEdyYXZpdHlFdmVudDsKCnR5cGVkZWYg
c3RydWN0IHsKCWludCB0eXBlOwoJdW5zaWduZWQgbG9uZyBzZXJpYWw7CSAKCWludCAgc2VuZF9l
dmVudDsJIAoJRGlzcGxheSAqZGlzcGxheTsJIAoJV2luZG93IHdpbmRvdzsKCWludCB3aWR0aCwg
aGVpZ2h0Owp9IFhSZXNpemVSZXF1ZXN0RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CglpbnQgdHlw
ZTsKCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQgIHNlbmRfZXZlbnQ7CSAKCURpc3BsYXkg
KmRpc3BsYXk7CSAKCVdpbmRvdyBwYXJlbnQ7CglXaW5kb3cgd2luZG93OwoJaW50IHgsIHk7Cglp
bnQgd2lkdGgsIGhlaWdodDsKCWludCBib3JkZXJfd2lkdGg7CglXaW5kb3cgYWJvdmU7CglpbnQg
ZGV0YWlsOwkJIAoJdW5zaWduZWQgbG9uZyB2YWx1ZV9tYXNrOwp9IFhDb25maWd1cmVSZXF1ZXN0
RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CglpbnQgdHlwZTsKCXVuc2lnbmVkIGxvbmcgc2VyaWFs
OwkgCglpbnQgIHNlbmRfZXZlbnQ7CSAKCURpc3BsYXkgKmRpc3BsYXk7CSAKCVdpbmRvdyBldmVu
dDsKCVdpbmRvdyB3aW5kb3c7CglpbnQgcGxhY2U7CQkgCn0gWENpcmN1bGF0ZUV2ZW50OwoKdHlw
ZWRlZiBzdHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBz
ZW5kX2V2ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgcGFyZW50OwoJV2luZG93
IHdpbmRvdzsKCWludCBwbGFjZTsJCSAKfSBYQ2lyY3VsYXRlUmVxdWVzdEV2ZW50OwoKdHlwZWRl
ZiBzdHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5k
X2V2ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgd2luZG93OwoJQXRvbSBhdG9t
OwoJVGltZSB0aW1lOwoJaW50IHN0YXRlOwkJIAp9IFhQcm9wZXJ0eUV2ZW50OwoKdHlwZWRlZiBz
dHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5kX2V2
ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgd2luZG93OwoJQXRvbSBzZWxlY3Rp
b247CglUaW1lIHRpbWU7Cn0gWFNlbGVjdGlvbkNsZWFyRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7
CglpbnQgdHlwZTsKCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwkgCglpbnQgIHNlbmRfZXZlbnQ7CSAK
CURpc3BsYXkgKmRpc3BsYXk7CSAKCVdpbmRvdyBvd25lcjsKCVdpbmRvdyByZXF1ZXN0b3I7CglB
dG9tIHNlbGVjdGlvbjsKCUF0b20gdGFyZ2V0OwoJQXRvbSBwcm9wZXJ0eTsKCVRpbWUgdGltZTsK
fSBYU2VsZWN0aW9uUmVxdWVzdEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50IHR5cGU7Cgl1
bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5kX2V2ZW50OwkgCglEaXNwbGF5ICpkaXNw
bGF5OwkgCglXaW5kb3cgcmVxdWVzdG9yOwoJQXRvbSBzZWxlY3Rpb247CglBdG9tIHRhcmdldDsK
CUF0b20gcHJvcGVydHk7CQkgCglUaW1lIHRpbWU7Cn0gWFNlbGVjdGlvbkV2ZW50OwoKdHlwZWRl
ZiBzdHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlhbDsJIAoJaW50ICBzZW5k
X2V2ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgd2luZG93OwoJQ29sb3JtYXAg
Y29sb3JtYXA7CSAKCglpbnQgIGNfbmV3OwkJIAoKCgoJaW50IHN0YXRlOwkJIAp9IFhDb2xvcm1h
cEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlh
bDsJIAoJaW50ICBzZW5kX2V2ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgd2lu
ZG93OwoJQXRvbSBtZXNzYWdlX3R5cGU7CglpbnQgZm9ybWF0OwoJdW5pb24gewoJCWNoYXIgYlsy
MF07CgkJc2hvcnQgc1sxMF07CgkJbG9uZyBsWzVdOwoJCX0gZGF0YTsKfSBYQ2xpZW50TWVzc2Fn
ZUV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50IHR5cGU7Cgl1bnNpZ25lZCBsb25nIHNlcmlh
bDsJIAoJaW50ICBzZW5kX2V2ZW50OwkgCglEaXNwbGF5ICpkaXNwbGF5OwkgCglXaW5kb3cgd2lu
ZG93OwkJIAoJaW50IHJlcXVlc3Q7CQkgCgoJaW50IGZpcnN0X2tleWNvZGU7CSAKCWludCBjb3Vu
dDsJCSAKfSBYTWFwcGluZ0V2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50IHR5cGU7CglEaXNw
bGF5ICpkaXNwbGF5OwkgCglYSUQgcmVzb3VyY2VpZDsJCSAKCXVuc2lnbmVkIGxvbmcgc2VyaWFs
OwkgCgl1bnNpZ25lZCBjaGFyIGVycm9yX2NvZGU7CSAKCXVuc2lnbmVkIGNoYXIgcmVxdWVzdF9j
b2RlOwkgCgl1bnNpZ25lZCBjaGFyIG1pbm9yX2NvZGU7CSAKfSBYRXJyb3JFdmVudDsKCnR5cGVk
ZWYgc3RydWN0IHsKCWludCB0eXBlOwoJdW5zaWduZWQgbG9uZyBzZXJpYWw7CSAKCWludCAgc2Vu
ZF9ldmVudDsJIAoJRGlzcGxheSAqZGlzcGxheTsgCglXaW5kb3cgd2luZG93OwkgCn0gWEFueUV2
ZW50OwoKIAoKCgp0eXBlZGVmIHVuaW9uIF9YRXZlbnQgewogICAgICAgIGludCB0eXBlOwkJIAoJ
WEFueUV2ZW50IHhhbnk7CglYS2V5RXZlbnQgeGtleTsKCVhCdXR0b25FdmVudCB4YnV0dG9uOwoJ
WE1vdGlvbkV2ZW50IHhtb3Rpb247CglYQ3Jvc3NpbmdFdmVudCB4Y3Jvc3Npbmc7CglYRm9jdXND
aGFuZ2VFdmVudCB4Zm9jdXM7CglYRXhwb3NlRXZlbnQgeGV4cG9zZTsKCVhHcmFwaGljc0V4cG9z
ZUV2ZW50IHhncmFwaGljc2V4cG9zZTsKCVhOb0V4cG9zZUV2ZW50IHhub2V4cG9zZTsKCVhWaXNp
YmlsaXR5RXZlbnQgeHZpc2liaWxpdHk7CglYQ3JlYXRlV2luZG93RXZlbnQgeGNyZWF0ZXdpbmRv
dzsKCVhEZXN0cm95V2luZG93RXZlbnQgeGRlc3Ryb3l3aW5kb3c7CglYVW5tYXBFdmVudCB4dW5t
YXA7CglYTWFwRXZlbnQgeG1hcDsKCVhNYXBSZXF1ZXN0RXZlbnQgeG1hcHJlcXVlc3Q7CglYUmVw
YXJlbnRFdmVudCB4cmVwYXJlbnQ7CglYQ29uZmlndXJlRXZlbnQgeGNvbmZpZ3VyZTsKCVhHcmF2
aXR5RXZlbnQgeGdyYXZpdHk7CglYUmVzaXplUmVxdWVzdEV2ZW50IHhyZXNpemVyZXF1ZXN0OwoJ
WENvbmZpZ3VyZVJlcXVlc3RFdmVudCB4Y29uZmlndXJlcmVxdWVzdDsKCVhDaXJjdWxhdGVFdmVu
dCB4Y2lyY3VsYXRlOwoJWENpcmN1bGF0ZVJlcXVlc3RFdmVudCB4Y2lyY3VsYXRlcmVxdWVzdDsK
CVhQcm9wZXJ0eUV2ZW50IHhwcm9wZXJ0eTsKCVhTZWxlY3Rpb25DbGVhckV2ZW50IHhzZWxlY3Rp
b25jbGVhcjsKCVhTZWxlY3Rpb25SZXF1ZXN0RXZlbnQgeHNlbGVjdGlvbnJlcXVlc3Q7CglYU2Vs
ZWN0aW9uRXZlbnQgeHNlbGVjdGlvbjsKCVhDb2xvcm1hcEV2ZW50IHhjb2xvcm1hcDsKCVhDbGll
bnRNZXNzYWdlRXZlbnQgeGNsaWVudDsKCVhNYXBwaW5nRXZlbnQgeG1hcHBpbmc7CglYRXJyb3JF
dmVudCB4ZXJyb3I7CglYS2V5bWFwRXZlbnQgeGtleW1hcDsKCWxvbmcgcGFkWzI0XTsKfSBYRXZl
bnQ7CgoKCgogCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgc2hvcnQJbGJlYXJpbmc7CSAKICAgIHNo
b3J0CXJiZWFyaW5nOwkgCiAgICBzaG9ydAl3aWR0aDsJCSAKICAgIHNob3J0CWFzY2VudDsJCSAK
ICAgIHNob3J0CWRlc2NlbnQ7CSAKICAgIHVuc2lnbmVkIHNob3J0IGF0dHJpYnV0ZXM7CSAKfSBY
Q2hhclN0cnVjdDsKCiAKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQXRvbSBuYW1lOwogICAgdW5z
aWduZWQgbG9uZyBjYXJkMzI7Cn0gWEZvbnRQcm9wOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgWEV4
dERhdGEJKmV4dF9kYXRhOwkgCiAgICBGb250ICAgICAgICBmaWQ7ICAgICAgICAgICAgIAogICAg
dW5zaWduZWQJZGlyZWN0aW9uOwkgCiAgICB1bnNpZ25lZAltaW5fY2hhcl9vcl9ieXRlMjsgCiAg
ICB1bnNpZ25lZAltYXhfY2hhcl9vcl9ieXRlMjsgCiAgICB1bnNpZ25lZAltaW5fYnl0ZTE7CSAK
ICAgIHVuc2lnbmVkCW1heF9ieXRlMTsJIAogICAgaW50IAlhbGxfY2hhcnNfZXhpc3Q7IAogICAg
dW5zaWduZWQJZGVmYXVsdF9jaGFyOwkgCiAgICBpbnQgICAgICAgICBuX3Byb3BlcnRpZXM7ICAg
IAogICAgWEZvbnRQcm9wCSpwcm9wZXJ0aWVzOwkgCiAgICBYQ2hhclN0cnVjdAltaW5fYm91bmRz
OwkgCiAgICBYQ2hhclN0cnVjdAltYXhfYm91bmRzOwkgCiAgICBYQ2hhclN0cnVjdAkqcGVyX2No
YXI7CSAKICAgIGludAkJYXNjZW50OwkJIAogICAgaW50CQlkZXNjZW50OwkgCn0gWEZvbnRTdHJ1
Y3Q7CgogCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgY2hhciAqY2hhcnM7CQkgCiAgICBpbnQgbmNo
YXJzOwkJCSAKICAgIGludCBkZWx0YTsJCQkgCiAgICBGb250IGZvbnQ7CQkJIAp9IFhUZXh0SXRl
bTsKCnR5cGVkZWYgc3RydWN0IHsJCSAKICAgIHVuc2lnbmVkIGNoYXIgYnl0ZTE7CiAgICB1bnNp
Z25lZCBjaGFyIGJ5dGUyOwp9IFhDaGFyMmI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBYQ2hhcjJi
ICpjaGFyczsJCSAKICAgIGludCBuY2hhcnM7CQkJIAogICAgaW50IGRlbHRhOwkJCSAKICAgIEZv
bnQgZm9udDsJCQkgCn0gWFRleHRJdGVtMTY7CgoKdHlwZWRlZiB1bmlvbiB7IERpc3BsYXkgKmRp
c3BsYXk7CgkJR0MgZ2M7CgkJVmlzdWFsICp2aXN1YWw7CgkJU2NyZWVuICpzY3JlZW47CgkJU2Ny
ZWVuRm9ybWF0ICpwaXhtYXBfZm9ybWF0OwoJCVhGb250U3RydWN0ICpmb250OyB9IFhFRGF0YU9i
amVjdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFhSZWN0YW5nbGUgICAgICBtYXhfaW5rX2V4dGVu
dDsKICAgIFhSZWN0YW5nbGUgICAgICBtYXhfbG9naWNhbF9leHRlbnQ7Cn0gWEZvbnRTZXRFeHRl
bnRzOwoKIAoKCgp0eXBlZGVmIHN0cnVjdCBfWE9NICpYT007CnR5cGVkZWYgc3RydWN0IF9YT0Mg
KlhPQywgKlhGb250U2V0OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgY2hhciAgICAgICAgICAgKmNo
YXJzOwogICAgaW50ICAgICAgICAgICAgIG5jaGFyczsKICAgIGludCAgICAgICAgICAgICBkZWx0
YTsKICAgIFhGb250U2V0ICAgICAgICBmb250X3NldDsKfSBYbWJUZXh0SXRlbTsKCnR5cGVkZWYg
c3RydWN0IHsKICAgIHdjaGFyX3QgICAgICAgICpjaGFyczsKICAgIGludCAgICAgICAgICAgICBu
Y2hhcnM7CiAgICBpbnQgICAgICAgICAgICAgZGVsdGE7CiAgICBYRm9udFNldCAgICAgICAgZm9u
dF9zZXQ7Cn0gWHdjVGV4dEl0ZW07CgoKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIGlu
dCBjaGFyc2V0X2NvdW50OwogICAgY2hhciAqKmNoYXJzZXRfbGlzdDsKfSBYT01DaGFyU2V0TGlz
dDsKCnR5cGVkZWYgZW51bSB7CiAgICBYT01PcmllbnRhdGlvbl9MVFJfVFRCLAogICAgWE9NT3Jp
ZW50YXRpb25fUlRMX1RUQiwKICAgIFhPTU9yaWVudGF0aW9uX1RUQl9MVFIsCiAgICBYT01Pcmll
bnRhdGlvbl9UVEJfUlRMLAogICAgWE9NT3JpZW50YXRpb25fQ29udGV4dAp9IFhPcmllbnRhdGlv
bjsKCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBudW1fb3JpZW50YXRpb247CiAgICBYT3JpZW50
YXRpb24gKm9yaWVudGF0aW9uOwkgCn0gWE9NT3JpZW50YXRpb247Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICBpbnQgbnVtX2ZvbnQ7CiAgICBYRm9udFN0cnVjdCAqKmZvbnRfc3RydWN0X2xpc3Q7CiAg
ICBjaGFyICoqZm9udF9uYW1lX2xpc3Q7Cn0gWE9NRm9udEluZm87Cgp0eXBlZGVmIHN0cnVjdCBf
WElNICpYSU07CnR5cGVkZWYgc3RydWN0IF9YSUMgKlhJQzsKCnR5cGVkZWYgdm9pZCAoKlhJTVBy
b2MpKAoKICAgIFhJTSwKICAgIFhQb2ludGVyLAogICAgWFBvaW50ZXIKCik7Cgp0eXBlZGVmIGlu
dCAgKCpYSUNQcm9jKSgKCiAgICBYSUMsCiAgICBYUG9pbnRlciwKICAgIFhQb2ludGVyCgopOwoK
dHlwZWRlZiB2b2lkICgqWElEUHJvYykoCgogICAgRGlzcGxheSosCiAgICBYUG9pbnRlciwKICAg
IFhQb2ludGVyCgopOwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJTVN0eWxlOwoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgdW5zaWduZWQgc2hvcnQgY291bnRfc3R5bGVzOwogICAgWElNU3R5bGUgKnN1
cHBvcnRlZF9zdHlsZXM7Cn0gWElNU3R5bGVzOwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAqWFZhTmVzdGVk
TGlzdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIFhQb2ludGVyIGNsaWVudF9kYXRhOwogICAg
WElNUHJvYyBjYWxsYmFjazsKfSBYSU1DYWxsYmFjazsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFhQ
b2ludGVyIGNsaWVudF9kYXRhOwogICAgWElDUHJvYyBjYWxsYmFjazsKfSBYSUNDYWxsYmFjazsK
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSU1GZWVkYmFjazsKCgoKCgoKCgoKCgp0eXBlZGVmIHN0
cnVjdCBfWElNVGV4dCB7CiAgICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CiAgICBYSU1GZWVkYmFj
ayAqZmVlZGJhY2s7CiAgICBpbnQgIGVuY29kaW5nX2lzX3djaGFyOyAKICAgIHVuaW9uIHsKCWNo
YXIgKm11bHRpX2J5dGU7Cgl3Y2hhcl90ICp3aWRlX2NoYXI7CiAgICB9IHN0cmluZzsgCn0gWElN
VGV4dDsKCnR5cGVkZWYJdW5zaWduZWQgbG9uZwkgWElNUHJlZWRpdFN0YXRlOwoKCgoKCnR5cGVk
ZWYJc3RydWN0CV9YSU1QcmVlZGl0U3RhdGVOb3RpZnlDYWxsYmFja1N0cnVjdCB7CiAgICBYSU1Q
cmVlZGl0U3RhdGUgc3RhdGU7Cn0gWElNUHJlZWRpdFN0YXRlTm90aWZ5Q2FsbGJhY2tTdHJ1Y3Q7
Cgp0eXBlZGVmCXVuc2lnbmVkIGxvbmcJIFhJTVJlc2V0U3RhdGU7CgoKCgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgWElNU3RyaW5nQ29udmVyc2lvbkZlZWRiYWNrOwoKCgoKCgoKCnR5cGVkZWYgc3Ry
dWN0IF9YSU1TdHJpbmdDb252ZXJzaW9uVGV4dCB7CiAgICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7
CiAgICBYSU1TdHJpbmdDb252ZXJzaW9uRmVlZGJhY2sgKmZlZWRiYWNrOwogICAgaW50ICBlbmNv
ZGluZ19pc193Y2hhcjsgCiAgICB1bmlvbiB7CgljaGFyICptYnM7Cgl3Y2hhcl90ICp3Y3M7CiAg
ICB9IHN0cmluZzsgCn0gWElNU3RyaW5nQ29udmVyc2lvblRleHQ7Cgp0eXBlZGVmCXVuc2lnbmVk
IHNob3J0CVhJTVN0cmluZ0NvbnZlcnNpb25Qb3NpdGlvbjsKCnR5cGVkZWYJdW5zaWduZWQgc2hv
cnQJWElNU3RyaW5nQ29udmVyc2lvblR5cGU7CgoKCgoKCnR5cGVkZWYJdW5zaWduZWQgc2hvcnQJ
WElNU3RyaW5nQ29udmVyc2lvbk9wZXJhdGlvbjsKCgoKIAoKCgoKCgp0eXBlZGVmIGVudW0gewog
ICAgWElNRm9yd2FyZENoYXIsIFhJTUJhY2t3YXJkQ2hhciwKICAgIFhJTUZvcndhcmRXb3JkLCBY
SU1CYWNrd2FyZFdvcmQsCiAgICBYSU1DYXJldFVwLCBYSU1DYXJldERvd24sCiAgICBYSU1OZXh0
TGluZSwgWElNUHJldmlvdXNMaW5lLAogICAgWElNTGluZVN0YXJ0LCBYSU1MaW5lRW5kLCAKICAg
IFhJTUFic29sdXRlUG9zaXRpb24sCiAgICBYSU1Eb250Q2hhbmdlCn0gWElNQ2FyZXREaXJlY3Rp
b247Cgp0eXBlZGVmIHN0cnVjdCBfWElNU3RyaW5nQ29udmVyc2lvbkNhbGxiYWNrU3RydWN0IHsK
ICAgIFhJTVN0cmluZ0NvbnZlcnNpb25Qb3NpdGlvbiBwb3NpdGlvbjsKICAgIFhJTUNhcmV0RGly
ZWN0aW9uIGRpcmVjdGlvbjsKICAgIFhJTVN0cmluZ0NvbnZlcnNpb25PcGVyYXRpb24gb3BlcmF0
aW9uOwogICAgdW5zaWduZWQgc2hvcnQgZmFjdG9yOwogICAgWElNU3RyaW5nQ29udmVyc2lvblRl
eHQgKnRleHQ7Cn0gWElNU3RyaW5nQ29udmVyc2lvbkNhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiBz
dHJ1Y3QgX1hJTVByZWVkaXREcmF3Q2FsbGJhY2tTdHJ1Y3QgewogICAgaW50IGNhcmV0OwkJIAog
ICAgaW50IGNoZ19maXJzdDsJIAogICAgaW50IGNoZ19sZW5ndGg7CSAKICAgIFhJTVRleHQgKnRl
eHQ7Cn0gWElNUHJlZWRpdERyYXdDYWxsYmFja1N0cnVjdDsKCnR5cGVkZWYgZW51bSB7CiAgICBY
SU1Jc0ludmlzaWJsZSwJICAKICAgIFhJTUlzUHJpbWFyeSwJIAogICAgWElNSXNTZWNvbmRhcnkJ
IAp9IFhJTUNhcmV0U3R5bGU7Cgp0eXBlZGVmIHN0cnVjdCBfWElNUHJlZWRpdENhcmV0Q2FsbGJh
Y2tTdHJ1Y3QgewogICAgaW50IHBvc2l0aW9uOwkJICAKICAgIFhJTUNhcmV0RGlyZWN0aW9uIGRp
cmVjdGlvbjsgIAogICAgWElNQ2FyZXRTdHlsZSBzdHlsZTsJICAKfSBYSU1QcmVlZGl0Q2FyZXRD
YWxsYmFja1N0cnVjdDsKCnR5cGVkZWYgZW51bSB7CiAgICBYSU1UZXh0VHlwZSwKICAgIFhJTUJp
dG1hcFR5cGUKfSBYSU1TdGF0dXNEYXRhVHlwZTsKCQp0eXBlZGVmIHN0cnVjdCBfWElNU3RhdHVz
RHJhd0NhbGxiYWNrU3RydWN0IHsKICAgIFhJTVN0YXR1c0RhdGFUeXBlIHR5cGU7CiAgICB1bmlv
biB7CglYSU1UZXh0ICp0ZXh0OwoJUGl4bWFwICBiaXRtYXA7CiAgICB9IGRhdGE7Cn0gWElNU3Rh
dHVzRHJhd0NhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiBzdHJ1Y3QgX1hJTUhvdEtleVRyaWdnZXIg
ewogICAgS2V5U3ltCSBrZXlzeW07CiAgICBpbnQJCSBtb2RpZmllcjsKICAgIGludAkJIG1vZGlm
aWVyX21hc2s7Cn0gWElNSG90S2V5VHJpZ2dlcjsKCnR5cGVkZWYgc3RydWN0IF9YSU1Ib3RLZXlU
cmlnZ2VycyB7CiAgICBpbnQJCQkgbnVtX2hvdF9rZXk7CiAgICBYSU1Ib3RLZXlUcmlnZ2VyCSpr
ZXk7Cn0gWElNSG90S2V5VHJpZ2dlcnM7Cgp0eXBlZGVmCXVuc2lnbmVkIGxvbmcJIFhJTUhvdEtl
eVN0YXRlOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgdW5zaWduZWQgc2hvcnQgY291bnRfdmFs
dWVzOwogICAgY2hhciAqKnN1cHBvcnRlZF92YWx1ZXM7Cn0gWElNVmFsdWVzTGlzdDsKCmV4dGVy
biAiQyIgeyAKCgoKCgpleHRlcm4gaW50IF9YZGVidWc7CgpleHRlcm4gWEZvbnRTdHJ1Y3QgKlhM
b2FkUXVlcnlGb250KAoKICAgIERpc3BsYXkqCQkgLAogICAgY29uc3QgIGNoYXIqCSAKCik7Cgpl
eHRlcm4gWEZvbnRTdHJ1Y3QgKlhRdWVyeUZvbnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBYSUQJ
CQkgCgopOwoKCmV4dGVybiBYVGltZUNvb3JkICpYR2V0TW90aW9uRXZlbnRzKAoKICAgIERpc3Bs
YXkqCQkgLAogICAgV2luZG93CQkgLAogICAgVGltZQkJICwKICAgIFRpbWUJCSAsCiAgICBpbnQq
CQkgCgopOwoKZXh0ZXJuIFhNb2RpZmllcktleW1hcCAqWERlbGV0ZU1vZGlmaWVybWFwRW50cnko
CgogICAgWE1vZGlmaWVyS2V5bWFwKgkgLAoKICAgIHVuc2lnbmVkIGludAkgLAoKCgogICAgaW50
CQkJIAoKKTsKCmV4dGVybiBYTW9kaWZpZXJLZXltYXAJKlhHZXRNb2RpZmllck1hcHBpbmcoCgog
ICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gWE1vZGlmaWVyS2V5bWFwCSpYSW5zZXJ0TW9kaWZp
ZXJtYXBFbnRyeSgKCiAgICBYTW9kaWZpZXJLZXltYXAqCSAsCgogICAgdW5zaWduZWQgaW50CSAs
CgoKCiAgICBpbnQJCQkgICAgIAoKKTsKCmV4dGVybiBYTW9kaWZpZXJLZXltYXAgKlhOZXdNb2Rp
Zmllcm1hcCgKCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIFhJbWFnZSAqWENyZWF0ZUltYWdlKAoK
ICAgIERpc3BsYXkqCQkgLAogICAgVmlzdWFsKgkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAg
aW50CQkJICwKICAgIGludAkJCSAsCiAgICBjaGFyKgkJICwKICAgIHVuc2lnbmVkIGludAkgLAog
ICAgdW5zaWduZWQgaW50CSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJIAoKKTsKZXh0ZXJuIGlu
dCAgWEluaXRJbWFnZSgKCiAgICBYSW1hZ2UqCQkgCgopOwpleHRlcm4gWEltYWdlICpYR2V0SW1h
Z2UoCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIGludAkJCSAsCiAgICBp
bnQJCQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2ln
bmVkIGxvbmcJICwKICAgIGludAkJCSAKCik7CmV4dGVybiBYSW1hZ2UgKlhHZXRTdWJJbWFnZSgK
CiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgaW50CQkJICwKICAgIGludAkJ
CSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQg
bG9uZwkgLAogICAgaW50CQkJICwKICAgIFhJbWFnZSoJCSAsCiAgICBpbnQJCQkgLAogICAgaW50
CQkJIAoKKTsKCiAKCgpleHRlcm4gRGlzcGxheSAqWE9wZW5EaXNwbGF5KAoKICAgIGNvbnN0ICBj
aGFyKgkgCgopOwoKZXh0ZXJuIHZvaWQgWHJtSW5pdGlhbGl6ZSgKCiAgICB2b2lkCgopOwoKZXh0
ZXJuIGNoYXIgKlhGZXRjaEJ5dGVzKAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50KgkJIAoKKTsK
ZXh0ZXJuIGNoYXIgKlhGZXRjaEJ1ZmZlcigKCiAgICBEaXNwbGF5KgkJICwKICAgIGludCoJCSAs
CiAgICBpbnQJCQkgCgopOwpleHRlcm4gY2hhciAqWEdldEF0b21OYW1lKAoKICAgIERpc3BsYXkq
CQkgLAogICAgQXRvbQkJIAoKKTsKZXh0ZXJuIGludCAgWEdldEF0b21OYW1lcygKCiAgICBEaXNw
bGF5KgkJICwKICAgIEF0b20qCQkgLAogICAgaW50CQkJICwKICAgIGNoYXIqKgkJIAoKKTsKZXh0
ZXJuIGNoYXIgKlhHZXREZWZhdWx0KAoKICAgIERpc3BsYXkqCQkgLAogICAgY29uc3QgIGNoYXIq
CSAsCiAgICBjb25zdCAgY2hhcioJIAkJICAKCik7CmV4dGVybiBjaGFyICpYRGlzcGxheU5hbWUo
CgogICAgY29uc3QgIGNoYXIqCSAKCik7CmV4dGVybiBjaGFyICpYS2V5c3ltVG9TdHJpbmcoCgog
ICAgS2V5U3ltCQkgCgopOwoKZXh0ZXJuIGludCAoKlhTeW5jaHJvbml6ZSgKCiAgICBEaXNwbGF5
KgkJICwKICAgIGludCAJCSAKCikpKAoKICAgIERpc3BsYXkqCQkgCgopOwpleHRlcm4gaW50ICgq
WFNldEFmdGVyRnVuY3Rpb24oCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQgKCopICgKCgkgICAg
IERpc3BsYXkqCSAKCiAgICAgICAgICAgICkJCSAKCikpKAoKICAgIERpc3BsYXkqCQkgCgopOwpl
eHRlcm4gQXRvbSBYSW50ZXJuQXRvbSgKCiAgICBEaXNwbGF5KgkJICwKICAgIGNvbnN0ICBjaGFy
KgkgLAogICAgaW50IAkJIAkJIAoKKTsKZXh0ZXJuIGludCAgWEludGVybkF0b21zKAoKICAgIERp
c3BsYXkqCQkgLAogICAgY2hhcioqCQkgLAogICAgaW50CQkJICwKICAgIGludCAJCSAsCiAgICBB
dG9tKgkJIAoKKTsKZXh0ZXJuIENvbG9ybWFwIFhDb3B5Q29sb3JtYXBBbmRGcmVlKAoKICAgIERp
c3BsYXkqCQkgLAogICAgQ29sb3JtYXAJCSAKCik7CmV4dGVybiBDb2xvcm1hcCBYQ3JlYXRlQ29s
b3JtYXAoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBWaXN1YWwqCQkgLAog
ICAgaW50CQkJIAkJCSAKCik7CmV4dGVybiBDdXJzb3IgWENyZWF0ZVBpeG1hcEN1cnNvcigKCiAg
ICBEaXNwbGF5KgkJICwKICAgIFBpeG1hcAkJICwKICAgIFBpeG1hcAkJICwKICAgIFhDb2xvcioJ
CSAsCiAgICBYQ29sb3IqCQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBpbnQJ
IAkJCSAgIAoKKTsKZXh0ZXJuIEN1cnNvciBYQ3JlYXRlR2x5cGhDdXJzb3IoCgogICAgRGlzcGxh
eSoJCSAsCiAgICBGb250CQkgLAogICAgRm9udAkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAg
dW5zaWduZWQgaW50CSAsCiAgICBYQ29sb3IqCQkgLAogICAgWENvbG9yKgkJIAoKKTsKZXh0ZXJu
IEN1cnNvciBYQ3JlYXRlRm9udEN1cnNvcigKCiAgICBEaXNwbGF5KgkJICwKICAgIHVuc2lnbmVk
IGludAkgCgopOwpleHRlcm4gRm9udCBYTG9hZEZvbnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBj
b25zdCAgY2hhcioJIAoKKTsKZXh0ZXJuIEdDIFhDcmVhdGVHQygKCiAgICBEaXNwbGF5KgkJICwK
ICAgIERyYXdhYmxlCQkgLAogICAgdW5zaWduZWQgbG9uZwkgLAogICAgWEdDVmFsdWVzKgkJIAoK
KTsKZXh0ZXJuIEdDb250ZXh0IFhHQ29udGV4dEZyb21HQygKCiAgICBHQwkJCSAKCik7CmV4dGVy
biB2b2lkIFhGbHVzaEdDKAoKICAgIERpc3BsYXkqCQkgLAogICAgR0MJCQkgCgopOwpleHRlcm4g
UGl4bWFwIFhDcmVhdGVQaXhtYXAoCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwK
ICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBpbnQJ
IAkJICAgICAgICAKCik7CmV4dGVybiBQaXhtYXAgWENyZWF0ZUJpdG1hcEZyb21EYXRhKAoKICAg
IERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIHVu
c2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAKCik7CmV4dGVybiBQaXhtYXAgWENyZWF0
ZVBpeG1hcEZyb21CaXRtYXBEYXRhKAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAs
CiAgICBjaGFyKgkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAsCiAg
ICB1bnNpZ25lZCBsb25nCSAsCiAgICB1bnNpZ25lZCBsb25nCSAsCiAgICB1bnNpZ25lZCBpbnQJ
IAoKKTsKZXh0ZXJuIFdpbmRvdyBYQ3JlYXRlU2ltcGxlV2luZG93KAoKICAgIERpc3BsYXkqCQkg
LAogICAgV2luZG93CQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICB1bnNpZ25lZCBp
bnQJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25l
ZCBsb25nCSAsCiAgICB1bnNpZ25lZCBsb25nCSAKCik7CmV4dGVybiBXaW5kb3cgWEdldFNlbGVj
dGlvbk93bmVyKAoKICAgIERpc3BsYXkqCQkgLAogICAgQXRvbQkJIAoKKTsKZXh0ZXJuIFdpbmRv
dyBYQ3JlYXRlV2luZG93KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50
CQkJICwKICAgIGludAkJCSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGludAkg
LAogICAgdW5zaWduZWQgaW50CSAsCiAgICBpbnQJCQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAg
ICBWaXN1YWwqCQkgLAogICAgdW5zaWduZWQgbG9uZwkgLAogICAgWFNldFdpbmRvd0F0dHJpYnV0
ZXMqCSAKCik7IApleHRlcm4gQ29sb3JtYXAgKlhMaXN0SW5zdGFsbGVkQ29sb3JtYXBzKAoKICAg
IERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50KgkJIAoKKTsKZXh0ZXJuIGNoYXIg
KipYTGlzdEZvbnRzKAoKICAgIERpc3BsYXkqCQkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBp
bnQJCQkgLAogICAgaW50KgkJIAoKKTsKZXh0ZXJuIGNoYXIgKipYTGlzdEZvbnRzV2l0aEluZm8o
CgogICAgRGlzcGxheSoJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIGludAkJCSAsCiAgICBp
bnQqCQkgLAogICAgWEZvbnRTdHJ1Y3QqKgkgCgopOwpleHRlcm4gY2hhciAqKlhHZXRGb250UGF0
aCgKCiAgICBEaXNwbGF5KgkJICwKICAgIGludCoJCSAKCik7CmV4dGVybiBjaGFyICoqWExpc3RF
eHRlbnNpb25zKAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50KgkJIAoKKTsKZXh0ZXJuIEF0b20g
KlhMaXN0UHJvcGVydGllcygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIGlu
dCoJCSAKCik7CmV4dGVybiBYSG9zdEFkZHJlc3MgKlhMaXN0SG9zdHMoCgogICAgRGlzcGxheSoJ
CSAsCiAgICBpbnQqCQkgLAogICAgaW50ICoJCSAKCik7CmV4dGVybiBLZXlTeW0gWEtleWNvZGVU
b0tleXN5bSgKCiAgICBEaXNwbGF5KgkJICwKCiAgICB1bnNpZ25lZCBpbnQJICwKCgoKICAgIGlu
dAkJCSAKCik7CmV4dGVybiBLZXlTeW0gWExvb2t1cEtleXN5bSgKCiAgICBYS2V5RXZlbnQqCQkg
LAogICAgaW50CQkJIAoKKTsKZXh0ZXJuIEtleVN5bSAqWEdldEtleWJvYXJkTWFwcGluZygKCiAg
ICBEaXNwbGF5KgkJICwKCiAgICB1bnNpZ25lZCBpbnQJICwKCgoKICAgIGludAkJCSAsCiAgICBp
bnQqCQkgCgopOwpleHRlcm4gS2V5U3ltIFhTdHJpbmdUb0tleXN5bSgKCiAgICBjb25zdCAgY2hh
cioJIAoKKTsKZXh0ZXJuIGxvbmcgWE1heFJlcXVlc3RTaXplKAoKICAgIERpc3BsYXkqCQkgCgop
OwpleHRlcm4gbG9uZyBYRXh0ZW5kZWRNYXhSZXF1ZXN0U2l6ZSgKCiAgICBEaXNwbGF5KgkJIAoK
KTsKZXh0ZXJuIGNoYXIgKlhSZXNvdXJjZU1hbmFnZXJTdHJpbmcoCgogICAgRGlzcGxheSoJCSAK
Cik7CmV4dGVybiBjaGFyICpYU2NyZWVuUmVzb3VyY2VTdHJpbmcoCgoJU2NyZWVuKgkJIAoKKTsK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWERpc3BsYXlNb3Rpb25CdWZmZXJTaXplKAoKICAgIERpc3Bs
YXkqCQkgCgopOwpleHRlcm4gVmlzdWFsSUQgWFZpc3VhbElERnJvbVZpc3VhbCgKCiAgICBWaXN1
YWwqCQkgCgopOwoKIAoKZXh0ZXJuIGludCAgWEluaXRUaHJlYWRzKAoKICAgIHZvaWQKCik7Cgpl
eHRlcm4gdm9pZCBYTG9ja0Rpc3BsYXkoCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gdm9p
ZCBYVW5sb2NrRGlzcGxheSgKCiAgICBEaXNwbGF5KgkJIAoKKTsKCiAKCmV4dGVybiBYRXh0Q29k
ZXMgKlhJbml0RXh0ZW5zaW9uKAoKICAgIERpc3BsYXkqCQkgLAogICAgY29uc3QgIGNoYXIqCSAK
Cik7CgpleHRlcm4gWEV4dENvZGVzICpYQWRkRXh0ZW5zaW9uKAoKICAgIERpc3BsYXkqCQkgCgop
OwpleHRlcm4gWEV4dERhdGEgKlhGaW5kT25FeHRlbnNpb25MaXN0KAoKICAgIFhFeHREYXRhKioJ
CSAsCiAgICBpbnQJCQkgCgopOwpleHRlcm4gWEV4dERhdGEgKipYRUhlYWRPZkV4dGVuc2lvbkxp
c3QoCgogICAgWEVEYXRhT2JqZWN0CSAKCik7CgogCmV4dGVybiBXaW5kb3cgWFJvb3RXaW5kb3co
CgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJCQkgCgopOwpleHRlcm4gV2luZG93IFhEZWZhdWx0
Um9vdFdpbmRvdygKCiAgICBEaXNwbGF5KgkJIAoKKTsKZXh0ZXJuIFdpbmRvdyBYUm9vdFdpbmRv
d09mU2NyZWVuKAoKICAgIFNjcmVlbioJCSAKCik7CmV4dGVybiBWaXN1YWwgKlhEZWZhdWx0Vmlz
dWFsKAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50CQkJIAoKKTsKZXh0ZXJuIFZpc3VhbCAqWERl
ZmF1bHRWaXN1YWxPZlNjcmVlbigKCiAgICBTY3JlZW4qCQkgCgopOwpleHRlcm4gR0MgWERlZmF1
bHRHQygKCiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJCSAKCik7CmV4dGVybiBHQyBYRGVmYXVs
dEdDT2ZTY3JlZW4oCgogICAgU2NyZWVuKgkJIAoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWEJs
YWNrUGl4ZWwoCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJCQkgCgopOwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBYV2hpdGVQaXhlbCgKCiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJCSAKCik7CmV4
dGVybiB1bnNpZ25lZCBsb25nIFhBbGxQbGFuZXMoCgogICAgdm9pZAoKKTsKZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgWEJsYWNrUGl4ZWxPZlNjcmVlbigKCiAgICBTY3JlZW4qCQkgCgopOwpleHRlcm4g
dW5zaWduZWQgbG9uZyBYV2hpdGVQaXhlbE9mU2NyZWVuKAoKICAgIFNjcmVlbioJCSAKCik7CmV4
dGVybiB1bnNpZ25lZCBsb25nIFhOZXh0UmVxdWVzdCgKCiAgICBEaXNwbGF5KgkJIAoKKTsKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgWExhc3RLbm93blJlcXVlc3RQcm9jZXNzZWQoCgogICAgRGlzcGxh
eSoJCSAKCik7CmV4dGVybiBjaGFyICpYU2VydmVyVmVuZG9yKAoKICAgIERpc3BsYXkqCQkgCgop
OwpleHRlcm4gY2hhciAqWERpc3BsYXlTdHJpbmcoCgogICAgRGlzcGxheSoJCSAKCik7CmV4dGVy
biBDb2xvcm1hcCBYRGVmYXVsdENvbG9ybWFwKAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50CQkJ
IAoKKTsKZXh0ZXJuIENvbG9ybWFwIFhEZWZhdWx0Q29sb3JtYXBPZlNjcmVlbigKCiAgICBTY3Jl
ZW4qCQkgCgopOwpleHRlcm4gRGlzcGxheSAqWERpc3BsYXlPZlNjcmVlbigKCiAgICBTY3JlZW4q
CQkgCgopOwpleHRlcm4gU2NyZWVuICpYU2NyZWVuT2ZEaXNwbGF5KAoKICAgIERpc3BsYXkqCQkg
LAogICAgaW50CQkJIAoKKTsKZXh0ZXJuIFNjcmVlbiAqWERlZmF1bHRTY3JlZW5PZkRpc3BsYXko
CgogICAgRGlzcGxheSoJCSAKCik7CmV4dGVybiBsb25nIFhFdmVudE1hc2tPZlNjcmVlbigKCiAg
ICBTY3JlZW4qCQkgCgopOwoKZXh0ZXJuIGludCBYU2NyZWVuTnVtYmVyT2ZTY3JlZW4oCgogICAg
U2NyZWVuKgkJIAoKKTsKCnR5cGVkZWYgaW50ICgqWEVycm9ySGFuZGxlcikgKAkgICAgIAoKICAg
IERpc3BsYXkqCQkgLAogICAgWEVycm9yRXZlbnQqCSAKCik7CgpleHRlcm4gWEVycm9ySGFuZGxl
ciBYU2V0RXJyb3JIYW5kbGVyICgKCiAgICBYRXJyb3JIYW5kbGVyCSAKCik7CgoKdHlwZWRlZiBp
bnQgKCpYSU9FcnJvckhhbmRsZXIpICggICAgIAoKICAgIERpc3BsYXkqCQkgCgopOwoKZXh0ZXJu
IFhJT0Vycm9ySGFuZGxlciBYU2V0SU9FcnJvckhhbmRsZXIgKAoKICAgIFhJT0Vycm9ySGFuZGxl
cgkgCgopOwoKCmV4dGVybiBYUGl4bWFwRm9ybWF0VmFsdWVzICpYTGlzdFBpeG1hcEZvcm1hdHMo
CgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQqCQkgCgopOwpleHRlcm4gaW50ICpYTGlzdERlcHRo
cygKCiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJCSAsCiAgICBpbnQqCQkgCgopOwoKIAogCmV4
dGVybiBpbnQgIFhSZWNvbmZpZ3VyZVdNV2luZG93KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2lu
ZG93CQkgLAogICAgaW50CQkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgWFdpbmRvd0NoYW5n
ZXMqCSAKCik7CgpleHRlcm4gaW50ICBYR2V0V01Qcm90b2NvbHMoCgogICAgRGlzcGxheSoJCSAs
CiAgICBXaW5kb3cJCSAsCiAgICBBdG9tKioJCSAsCiAgICBpbnQqCQkgCgopOwpleHRlcm4gaW50
ICBYU2V0V01Qcm90b2NvbHMoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBB
dG9tKgkJICwKICAgIGludAkJCSAKCik7CmV4dGVybiBpbnQgIFhJY29uaWZ5V2luZG93KAoKICAg
IERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50CQkJIAoKKTsKZXh0ZXJuIGludCAg
WFdpdGhkcmF3V2luZG93KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50
CQkJIAoKKTsKZXh0ZXJuIGludCAgWEdldENvbW1hbmQoCgogICAgRGlzcGxheSoJCSAsCiAgICBX
aW5kb3cJCSAsCiAgICBjaGFyKioqCQkgLAogICAgaW50KgkJIAoKKTsKZXh0ZXJuIGludCAgWEdl
dFdNQ29sb3JtYXBXaW5kb3dzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAg
V2luZG93KioJCSAsCiAgICBpbnQqCQkgCgopOwpleHRlcm4gaW50ICBYU2V0V01Db2xvcm1hcFdp
bmRvd3MoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBXaW5kb3cqCQkgLAog
ICAgaW50CQkJIAoKKTsKZXh0ZXJuIHZvaWQgWEZyZWVTdHJpbmdMaXN0KAoKICAgIGNoYXIqKgkJ
IAoKKTsKZXh0ZXJuIGludCBYU2V0VHJhbnNpZW50Rm9ySGludCgKCiAgICBEaXNwbGF5KgkJICwK
ICAgIFdpbmRvdwkJICwKICAgIFdpbmRvdwkJIAoKKTsKCiAKCmV4dGVybiBpbnQgWEFjdGl2YXRl
U2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gaW50IFhBZGRIb3N0KAoK
ICAgIERpc3BsYXkqCQkgLAogICAgWEhvc3RBZGRyZXNzKgkgCgopOwoKZXh0ZXJuIGludCBYQWRk
SG9zdHMoCgogICAgRGlzcGxheSoJCSAsCiAgICBYSG9zdEFkZHJlc3MqCSAsCiAgICBpbnQJCQkg
ICAgIAoKKTsKCmV4dGVybiBpbnQgWEFkZFRvRXh0ZW5zaW9uTGlzdCgKCiAgICBzdHJ1Y3QgX1hF
eHREYXRhKioJICwKICAgIFhFeHREYXRhKgkJIAoKKTsKCmV4dGVybiBpbnQgWEFkZFRvU2F2ZVNl
dCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJIAoKKTsKCmV4dGVybiBpbnQgIFhBbGxv
Y0NvbG9yKAoKICAgIERpc3BsYXkqCQkgLAogICAgQ29sb3JtYXAJCSAsCiAgICBYQ29sb3IqCQkg
CgopOwoKZXh0ZXJuIGludCAgWEFsbG9jQ29sb3JDZWxscygKCiAgICBEaXNwbGF5KgkJICwKICAg
IENvbG9ybWFwCQkgLAogICAgaW50IAkgICAgICAgICAsCiAgICB1bnNpZ25lZCBsb25nKgkgLAog
ICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBsb25nKgkgLAogICAgdW5zaWduZWQgaW50
IAkgCgopOwoKZXh0ZXJuIGludCAgWEFsbG9jQ29sb3JQbGFuZXMoCgogICAgRGlzcGxheSoJCSAs
CiAgICBDb2xvcm1hcAkJICwKICAgIGludCAJCSAsCiAgICB1bnNpZ25lZCBsb25nKgkgLAogICAg
aW50CQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIHVuc2ln
bmVkIGxvbmcqCSAsCiAgICB1bnNpZ25lZCBsb25nKgkgLAogICAgdW5zaWduZWQgbG9uZyoJIAoK
KTsKCmV4dGVybiBpbnQgIFhBbGxvY05hbWVkQ29sb3IoCgogICAgRGlzcGxheSoJCSAsCiAgICBD
b2xvcm1hcAkJICwKICAgIGNvbnN0ICBjaGFyKgkgLAogICAgWENvbG9yKgkJICwKICAgIFhDb2xv
cioJCSAKCik7CgpleHRlcm4gaW50IFhBbGxvd0V2ZW50cygKCiAgICBEaXNwbGF5KgkJICwKICAg
IGludAkJCSAsCiAgICBUaW1lCQkgCgopOwoKZXh0ZXJuIGludCBYQXV0b1JlcGVhdE9mZigKCiAg
ICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiBpbnQgWEF1dG9SZXBlYXRPbigKCiAgICBEaXNwbGF5
KgkJIAoKKTsKCmV4dGVybiBpbnQgWEJlbGwoCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJCQkg
CgopOwoKZXh0ZXJuIGludCBYQml0bWFwQml0T3JkZXIoCgogICAgRGlzcGxheSoJCSAKCik7Cgpl
eHRlcm4gaW50IFhCaXRtYXBQYWQoCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gaW50IFhC
aXRtYXBVbml0KAoKICAgIERpc3BsYXkqCQkgCgopOwoKZXh0ZXJuIGludCBYQ2VsbHNPZlNjcmVl
bigKCiAgICBTY3JlZW4qCQkgCgopOwoKZXh0ZXJuIGludCBYQ2hhbmdlQWN0aXZlUG9pbnRlckdy
YWIoCgogICAgRGlzcGxheSoJCSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIEN1cnNvcgkJICwK
ICAgIFRpbWUJCSAKCik7CgpleHRlcm4gaW50IFhDaGFuZ2VHQygKCiAgICBEaXNwbGF5KgkJICwK
ICAgIEdDCQkJICwKICAgIHVuc2lnbmVkIGxvbmcJICwKICAgIFhHQ1ZhbHVlcyoJCSAKCik7Cgpl
eHRlcm4gaW50IFhDaGFuZ2VLZXlib2FyZENvbnRyb2woCgogICAgRGlzcGxheSoJCSAsCiAgICB1
bnNpZ25lZCBsb25nCSAsCiAgICBYS2V5Ym9hcmRDb250cm9sKgkgCgopOwoKZXh0ZXJuIGludCBY
Q2hhbmdlS2V5Ym9hcmRNYXBwaW5nKAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50CQkJICwKICAg
IGludAkJCSAsCiAgICBLZXlTeW0qCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWENo
YW5nZVBvaW50ZXJDb250cm9sKAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50IAkJICwKICAgIGlu
dCAJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4g
aW50IFhDaGFuZ2VQcm9wZXJ0eSgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAg
IEF0b20JCSAsCiAgICBBdG9tCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBjb25z
dCAgdW5zaWduZWQgY2hhcioJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhDaGFuZ2VT
YXZlU2V0KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50CQkJIAoKKTsK
CmV4dGVybiBpbnQgWENoYW5nZVdpbmRvd0F0dHJpYnV0ZXMoCgogICAgRGlzcGxheSoJCSAsCiAg
ICBXaW5kb3cJCSAsCiAgICB1bnNpZ25lZCBsb25nCSAsCiAgICBYU2V0V2luZG93QXR0cmlidXRl
cyogIAoKKTsKCmV4dGVybiBpbnQgIFhDaGVja0lmRXZlbnQoCgogICAgRGlzcGxheSoJCSAsCiAg
ICBYRXZlbnQqCQkgLAogICAgaW50ICAoKikgKAoKCSAgICAgICBEaXNwbGF5KgkJCSAsCiAgICAg
ICAgICAgICAgIFhFdmVudCoJCQkgLAogICAgICAgICAgICAgICBYUG9pbnRlcgkJCSAKCiAgICAg
ICAgICAgICApCQkgLAogICAgWFBvaW50ZXIJCSAKCik7CgpleHRlcm4gaW50ICBYQ2hlY2tNYXNr
RXZlbnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBsb25nCQkgLAogICAgWEV2ZW50KgkJIAoKKTsK
CmV4dGVybiBpbnQgIFhDaGVja1R5cGVkRXZlbnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJ
CQkgLAogICAgWEV2ZW50KgkJIAoKKTsKCmV4dGVybiBpbnQgIFhDaGVja1R5cGVkV2luZG93RXZl
bnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBpbnQJCQkgLAogICAgWEV2
ZW50KgkJIAoKKTsKCmV4dGVybiBpbnQgIFhDaGVja1dpbmRvd0V2ZW50KAoKICAgIERpc3BsYXkq
CQkgLAogICAgV2luZG93CQkgLAogICAgbG9uZwkJICwKICAgIFhFdmVudCoJCSAKCik7CgpleHRl
cm4gaW50IFhDaXJjdWxhdGVTdWJ3aW5kb3dzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93
CQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWENpcmN1bGF0ZVN1YndpbmRvd3NEb3du
KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgCgopOwoKZXh0ZXJuIGludCBYQ2lyY3Vs
YXRlU3Vid2luZG93c1VwKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgCgopOwoKZXh0
ZXJuIGludCBYQ2xlYXJBcmVhKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAg
aW50CQkJICwKICAgIGludAkJCSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGlu
dAkgLAogICAgaW50IAkJIAoKKTsKCmV4dGVybiBpbnQgWENsZWFyV2luZG93KAoKICAgIERpc3Bs
YXkqCQkgLAogICAgV2luZG93CQkgCgopOwoKZXh0ZXJuIGludCBYQ2xvc2VEaXNwbGF5KAoKICAg
IERpc3BsYXkqCQkgCgopOwoKZXh0ZXJuIGludCBYQ29uZmlndXJlV2luZG93KAoKICAgIERpc3Bs
YXkqCQkgLAogICAgV2luZG93CQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBYV2luZG93Q2hh
bmdlcyoJIAkJIAoKKTsKCmV4dGVybiBpbnQgWENvbm5lY3Rpb25OdW1iZXIoCgogICAgRGlzcGxh
eSoJCSAKCik7CgpleHRlcm4gaW50IFhDb252ZXJ0U2VsZWN0aW9uKAoKICAgIERpc3BsYXkqCQkg
LAogICAgQXRvbQkJICwKICAgIEF0b20gCQkgLAogICAgQXRvbQkJICwKICAgIFdpbmRvdwkJICwK
ICAgIFRpbWUJCSAKCik7CgpleHRlcm4gaW50IFhDb3B5QXJlYSgKCiAgICBEaXNwbGF5KgkJICwK
ICAgIERyYXdhYmxlCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBHQwkJCSAsCiAgICBpbnQJCQkg
LAogICAgaW50CQkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAsCiAg
ICBpbnQJCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWENvcHlHQygKCiAgICBEaXNw
bGF5KgkJICwKICAgIEdDCQkJICwKICAgIHVuc2lnbmVkIGxvbmcJICwKICAgIEdDCQkJIAoKKTsK
CmV4dGVybiBpbnQgWENvcHlQbGFuZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkg
LAogICAgRHJhd2FibGUJCSAsCiAgICBHQwkJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwK
ICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBpbnQJCQkgLAogICAg
aW50CQkJICwKICAgIHVuc2lnbmVkIGxvbmcJIAoKKTsKCmV4dGVybiBpbnQgWERlZmF1bHREZXB0
aCgKCiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhEZWZhdWx0
RGVwdGhPZlNjcmVlbigKCiAgICBTY3JlZW4qCQkgCgopOwoKZXh0ZXJuIGludCBYRGVmYXVsdFNj
cmVlbigKCiAgICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiBpbnQgWERlZmluZUN1cnNvcigKCiAg
ICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIEN1cnNvcgkJIAoKKTsKCmV4dGVybiBp
bnQgWERlbGV0ZVByb3BlcnR5KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAg
QXRvbQkJIAoKKTsKCmV4dGVybiBpbnQgWERlc3Ryb3lXaW5kb3coCgogICAgRGlzcGxheSoJCSAs
CiAgICBXaW5kb3cJCSAKCik7CgpleHRlcm4gaW50IFhEZXN0cm95U3Vid2luZG93cygKCiAgICBE
aXNwbGF5KgkJICwKICAgIFdpbmRvdwkJIAoKKTsKCmV4dGVybiBpbnQgWERvZXNCYWNraW5nU3Rv
cmUoCgogICAgU2NyZWVuKgkJICAgICAKCik7CgpleHRlcm4gaW50ICBYRG9lc1NhdmVVbmRlcnMo
CgogICAgU2NyZWVuKgkJIAoKKTsKCmV4dGVybiBpbnQgWERpc2FibGVBY2Nlc3NDb250cm9sKAoK
ICAgIERpc3BsYXkqCQkgCgopOwoKCmV4dGVybiBpbnQgWERpc3BsYXlDZWxscygKCiAgICBEaXNw
bGF5KgkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhEaXNwbGF5SGVpZ2h0KAoKICAg
IERpc3BsYXkqCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWERpc3BsYXlIZWlnaHRN
TSgKCiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhEaXNwbGF5
S2V5Y29kZXMoCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQqCQkgLAogICAgaW50KgkJIAoKKTsK
CmV4dGVybiBpbnQgWERpc3BsYXlQbGFuZXMoCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJCQkg
CgopOwoKZXh0ZXJuIGludCBYRGlzcGxheVdpZHRoKAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50
CQkJIAoKKTsKCmV4dGVybiBpbnQgWERpc3BsYXlXaWR0aE1NKAoKICAgIERpc3BsYXkqCQkgLAog
ICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWERyYXdBcmMoCgogICAgRGlzcGxheSoJCSAsCiAg
ICBEcmF3YWJsZQkJICwKICAgIEdDCQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAg
dW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIGludAkJCSAsCiAgICBpbnQJ
CQkgCgopOwoKZXh0ZXJuIGludCBYRHJhd0FyY3MoCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3
YWJsZQkJICwKICAgIEdDCQkJICwKICAgIFhBcmMqCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVy
biBpbnQgWERyYXdJbWFnZVN0cmluZygKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkg
LAogICAgR0MJCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBjb25zdCAgY2hhcioJ
ICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhEcmF3SW1hZ2VTdHJpbmcxNigKCiAgICBE
aXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgR0MJCQkgLAogICAgaW50CQkJICwKICAg
IGludAkJCSAsCiAgICBjb25zdCAgWENoYXIyYioJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4g
aW50IFhEcmF3TGluZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgR0MJ
CQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJIAoK
KTsKCmV4dGVybiBpbnQgWERyYXdMaW5lcygKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxl
CQkgLAogICAgR0MJCQkgLAogICAgWFBvaW50KgkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkg
CgopOwoKZXh0ZXJuIGludCBYRHJhd1BvaW50KAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2Fi
bGUJCSAsCiAgICBHQwkJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBp
bnQgWERyYXdQb2ludHMoCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIEdD
CQkJICwKICAgIFhQb2ludCoJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVy
biBpbnQgWERyYXdSZWN0YW5nbGUoCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwK
ICAgIEdDCQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgdW5zaWduZWQgaW50CSAs
CiAgICB1bnNpZ25lZCBpbnQJIAoKKTsKCmV4dGVybiBpbnQgWERyYXdSZWN0YW5nbGVzKAoKICAg
IERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBHQwkJCSAsCiAgICBYUmVjdGFuZ2xl
KgkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhEcmF3U2VnbWVudHMoCgogICAgRGlz
cGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIEdDCQkJICwKICAgIFhTZWdtZW50KgkJICwK
ICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhEcmF3U3RyaW5nKAoKICAgIERpc3BsYXkqCQkg
LAogICAgRHJhd2FibGUJCSAsCiAgICBHQwkJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwK
ICAgIGNvbnN0ICBjaGFyKgkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWERyYXdTdHJp
bmcxNigKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgR0MJCQkgLAogICAg
aW50CQkJICwKICAgIGludAkJCSAsCiAgICBjb25zdCAgWENoYXIyYioJICwKICAgIGludAkJCSAK
Cik7CgpleHRlcm4gaW50IFhEcmF3VGV4dCgKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxl
CQkgLAogICAgR0MJCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBYVGV4dEl0ZW0q
CQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWERyYXdUZXh0MTYoCgogICAgRGlzcGxh
eSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIEdDCQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJ
CQkgLAogICAgWFRleHRJdGVtMTYqCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYRW5h
YmxlQWNjZXNzQ29udHJvbCgKCiAgICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiBpbnQgWEV2ZW50
c1F1ZXVlZCgKCiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50ICBY
RmV0Y2hOYW1lKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgY2hhcioqCQkg
CgopOwoKZXh0ZXJuIGludCBYRmlsbEFyYygKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxl
CQkgLAogICAgR0MJCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICB1bnNpZ25lZCBp
bnQJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAKCik7Cgpl
eHRlcm4gaW50IFhGaWxsQXJjcygKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAog
ICAgR0MJCQkgLAogICAgWEFyYyoJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYRmls
bFBvbHlnb24oCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIEdDCQkJICwK
ICAgIFhQb2ludCoJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAKCik7
CgpleHRlcm4gaW50IFhGaWxsUmVjdGFuZ2xlKAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2Fi
bGUJCSAsCiAgICBHQwkJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIHVuc2lnbmVk
IGludAkgLAogICAgdW5zaWduZWQgaW50CSAKCik7CgpleHRlcm4gaW50IFhGaWxsUmVjdGFuZ2xl
cygKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgR0MJCQkgLAogICAgWFJl
Y3RhbmdsZSoJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYRmx1c2goCgogICAgRGlz
cGxheSoJCSAKCik7CgpleHRlcm4gaW50IFhGb3JjZVNjcmVlblNhdmVyKAoKICAgIERpc3BsYXkq
CQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWEZyZWUoCgogICAgdm9pZCoJCSAKCik7
CgpleHRlcm4gaW50IFhGcmVlQ29sb3JtYXAoCgogICAgRGlzcGxheSoJCSAsCiAgICBDb2xvcm1h
cAkJIAoKKTsKCmV4dGVybiBpbnQgWEZyZWVDb2xvcnMoCgogICAgRGlzcGxheSoJCSAsCiAgICBD
b2xvcm1hcAkJICwKICAgIHVuc2lnbmVkIGxvbmcqCSAsCiAgICBpbnQJCQkgLAogICAgdW5zaWdu
ZWQgbG9uZwkgCgopOwoKZXh0ZXJuIGludCBYRnJlZUN1cnNvcigKCiAgICBEaXNwbGF5KgkJICwK
ICAgIEN1cnNvcgkJIAoKKTsKCmV4dGVybiBpbnQgWEZyZWVFeHRlbnNpb25MaXN0KAoKICAgIGNo
YXIqKgkJICAgICAKCik7CgpleHRlcm4gaW50IFhGcmVlRm9udCgKCiAgICBEaXNwbGF5KgkJICwK
ICAgIFhGb250U3RydWN0KgkgCgopOwoKZXh0ZXJuIGludCBYRnJlZUZvbnRJbmZvKAoKICAgIGNo
YXIqKgkJICwKICAgIFhGb250U3RydWN0KgkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQg
WEZyZWVGb250TmFtZXMoCgogICAgY2hhcioqCQkgCgopOwoKZXh0ZXJuIGludCBYRnJlZUZvbnRQ
YXRoKAoKICAgIGNoYXIqKgkJIAoKKTsKCmV4dGVybiBpbnQgWEZyZWVHQygKCiAgICBEaXNwbGF5
KgkJICwKICAgIEdDCQkJIAoKKTsKCmV4dGVybiBpbnQgWEZyZWVNb2RpZmllcm1hcCgKCiAgICBY
TW9kaWZpZXJLZXltYXAqCSAKCik7CgpleHRlcm4gaW50IFhGcmVlUGl4bWFwKAoKICAgIERpc3Bs
YXkqCQkgLAogICAgUGl4bWFwCQkgCgopOwoKZXh0ZXJuIGludCBYR2VvbWV0cnkoCgogICAgRGlz
cGxheSoJCSAsCiAgICBpbnQJCQkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBjb25zdCAgY2hh
cioJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25l
ZCBpbnQJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgaW50KgkJICwKICAgIGludCoJ
CSAsCiAgICBpbnQqCQkgLAogICAgaW50KgkJIAoKKTsKCmV4dGVybiBpbnQgWEdldEVycm9yRGF0
YWJhc2VUZXh0KAoKICAgIERpc3BsYXkqCQkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBjb25z
dCAgY2hhcioJICwKICAgIGNvbnN0ICBjaGFyKgkgLAogICAgY2hhcioJCSAsCiAgICBpbnQJCQkg
CgopOwoKZXh0ZXJuIGludCBYR2V0RXJyb3JUZXh0KAoKICAgIERpc3BsYXkqCQkgLAogICAgaW50
CQkJICwKICAgIGNoYXIqCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgIFhHZXRGb250
UHJvcGVydHkoCgogICAgWEZvbnRTdHJ1Y3QqCSAsCiAgICBBdG9tCQkgLAogICAgdW5zaWduZWQg
bG9uZyoJIAoKKTsKCmV4dGVybiBpbnQgIFhHZXRHQ1ZhbHVlcygKCiAgICBEaXNwbGF5KgkJICwK
ICAgIEdDCQkJICwKICAgIHVuc2lnbmVkIGxvbmcJICwKICAgIFhHQ1ZhbHVlcyoJCSAKCik7Cgpl
eHRlcm4gaW50ICBYR2V0R2VvbWV0cnkoCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJ
ICwKICAgIFdpbmRvdyoJCSAsCiAgICBpbnQqCQkgLAogICAgaW50KgkJICwKICAgIHVuc2lnbmVk
IGludCoJICwKICAgIHVuc2lnbmVkIGludCoJICwKICAgIHVuc2lnbmVkIGludCoJICwKICAgIHVu
c2lnbmVkIGludCoJIAoKKTsKCmV4dGVybiBpbnQgIFhHZXRJY29uTmFtZSgKCiAgICBEaXNwbGF5
KgkJICwKICAgIFdpbmRvdwkJICwKICAgIGNoYXIqKgkJIAoKKTsKCmV4dGVybiBpbnQgWEdldElu
cHV0Rm9jdXMoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cqCQkgLAogICAgaW50KgkJIAoK
KTsKCmV4dGVybiBpbnQgWEdldEtleWJvYXJkQ29udHJvbCgKCiAgICBEaXNwbGF5KgkJICwKICAg
IFhLZXlib2FyZFN0YXRlKgkgCgopOwoKZXh0ZXJuIGludCBYR2V0UG9pbnRlckNvbnRyb2woCgog
ICAgRGlzcGxheSoJCSAsCiAgICBpbnQqCQkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAKCik7
CgpleHRlcm4gaW50IFhHZXRQb2ludGVyTWFwcGluZygKCiAgICBEaXNwbGF5KgkJICwKICAgIHVu
c2lnbmVkIGNoYXIqCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYR2V0U2NyZWVuU2F2
ZXIoCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQqCQkgLAogICAgaW50KgkJICwKICAgIGludCoJ
CSAsCiAgICBpbnQqCQkgCgopOwoKZXh0ZXJuIGludCAgWEdldFRyYW5zaWVudEZvckhpbnQoCgog
ICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBXaW5kb3cqCQkgCgopOwoKZXh0ZXJu
IGludCBYR2V0V2luZG93UHJvcGVydHkoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAs
CiAgICBBdG9tCQkgLAogICAgbG9uZwkJICwKICAgIGxvbmcJCSAsCiAgICBpbnQgCQkgLAogICAg
QXRvbQkJICwKICAgIEF0b20qCQkgLAogICAgaW50KgkJICwKICAgIHVuc2lnbmVkIGxvbmcqCSAs
CiAgICB1bnNpZ25lZCBsb25nKgkgLAogICAgdW5zaWduZWQgY2hhcioqCSAKCik7CgpleHRlcm4g
aW50ICBYR2V0V2luZG93QXR0cmlidXRlcygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJ
ICwKICAgIFhXaW5kb3dBdHRyaWJ1dGVzKgkgCgopOwoKZXh0ZXJuIGludCBYR3JhYkJ1dHRvbigK
CiAgICBEaXNwbGF5KgkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAs
CiAgICBXaW5kb3cJCSAsCiAgICBpbnQgCQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBpbnQJ
CQkgLAogICAgaW50CQkJICwKICAgIFdpbmRvdwkJICwKICAgIEN1cnNvcgkJIAoKKTsKCmV4dGVy
biBpbnQgWEdyYWJLZXkoCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJCQkgLAogICAgdW5zaWdu
ZWQgaW50CSAsCiAgICBXaW5kb3cJCSAsCiAgICBpbnQgCQkgLAogICAgaW50CQkJICwKICAgIGlu
dAkJCSAKCik7CgpleHRlcm4gaW50IFhHcmFiS2V5Ym9hcmQoCgogICAgRGlzcGxheSoJCSAsCiAg
ICBXaW5kb3cJCSAsCiAgICBpbnQgCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBU
aW1lCQkgCgopOwoKZXh0ZXJuIGludCBYR3JhYlBvaW50ZXIoCgogICAgRGlzcGxheSoJCSAsCiAg
ICBXaW5kb3cJCSAsCiAgICBpbnQgCQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBpbnQJCQkg
LAogICAgaW50CQkJICwKICAgIFdpbmRvdwkJICwKICAgIEN1cnNvcgkJICwKICAgIFRpbWUJCSAK
Cik7CgpleHRlcm4gaW50IFhHcmFiU2VydmVyKAoKICAgIERpc3BsYXkqCQkgCgopOwoKZXh0ZXJu
IGludCBYSGVpZ2h0TU1PZlNjcmVlbigKCiAgICBTY3JlZW4qCQkgCgopOwoKZXh0ZXJuIGludCBY
SGVpZ2h0T2ZTY3JlZW4oCgogICAgU2NyZWVuKgkJIAoKKTsKCmV4dGVybiBpbnQgWElmRXZlbnQo
CgogICAgRGlzcGxheSoJCSAsCiAgICBYRXZlbnQqCQkgLAogICAgaW50ICAoKikgKAoKCSAgICAg
ICBEaXNwbGF5KgkJCSAsCiAgICAgICAgICAgICAgIFhFdmVudCoJCQkgLAogICAgICAgICAgICAg
ICBYUG9pbnRlcgkJCSAKCiAgICAgICAgICAgICApCQkgLAogICAgWFBvaW50ZXIJCSAKCik7Cgpl
eHRlcm4gaW50IFhJbWFnZUJ5dGVPcmRlcigKCiAgICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiBp
bnQgWEluc3RhbGxDb2xvcm1hcCgKCiAgICBEaXNwbGF5KgkJICwKICAgIENvbG9ybWFwCQkgCgop
OwoKZXh0ZXJuIEtleUNvZGUgWEtleXN5bVRvS2V5Y29kZSgKCiAgICBEaXNwbGF5KgkJICwKICAg
IEtleVN5bQkJIAoKKTsKCmV4dGVybiBpbnQgWEtpbGxDbGllbnQoCgogICAgRGlzcGxheSoJCSAs
CiAgICBYSUQJCQkgCgopOwoKZXh0ZXJuIGludCAgWExvb2t1cENvbG9yKAoKICAgIERpc3BsYXkq
CQkgLAogICAgQ29sb3JtYXAJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIFhDb2xvcioJCSAs
CiAgICBYQ29sb3IqCQkgCgopOwoKZXh0ZXJuIGludCBYTG93ZXJXaW5kb3coCgogICAgRGlzcGxh
eSoJCSAsCiAgICBXaW5kb3cJCSAKCik7CgpleHRlcm4gaW50IFhNYXBSYWlzZWQoCgogICAgRGlz
cGxheSoJCSAsCiAgICBXaW5kb3cJCSAKCik7CgpleHRlcm4gaW50IFhNYXBTdWJ3aW5kb3dzKAoK
ICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgCgopOwoKZXh0ZXJuIGludCBYTWFwV2luZG93
KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgCgopOwoKZXh0ZXJuIGludCBYTWFza0V2
ZW50KAoKICAgIERpc3BsYXkqCQkgLAogICAgbG9uZwkJICwKICAgIFhFdmVudCoJCSAKCik7Cgpl
eHRlcm4gaW50IFhNYXhDbWFwc09mU2NyZWVuKAoKICAgIFNjcmVlbioJCSAKCik7CgpleHRlcm4g
aW50IFhNaW5DbWFwc09mU2NyZWVuKAoKICAgIFNjcmVlbioJCSAKCik7CgpleHRlcm4gaW50IFhN
b3ZlUmVzaXplV2luZG93KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgaW50
CQkJICwKICAgIGludAkJCSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGludAkg
CgopOwoKZXh0ZXJuIGludCBYTW92ZVdpbmRvdygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRv
dwkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYTmV4dEV2ZW50
KAoKICAgIERpc3BsYXkqCQkgLAogICAgWEV2ZW50KgkJIAoKKTsKCmV4dGVybiBpbnQgWE5vT3Ao
CgogICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gaW50ICBYUGFyc2VDb2xvcigKCiAgICBEaXNw
bGF5KgkJICwKICAgIENvbG9ybWFwCQkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBYQ29sb3Iq
CQkgCgopOwoKZXh0ZXJuIGludCBYUGFyc2VHZW9tZXRyeSgKCiAgICBjb25zdCAgY2hhcioJICwK
ICAgIGludCoJCSAsCiAgICBpbnQqCQkgLAogICAgdW5zaWduZWQgaW50KgkgLAogICAgdW5zaWdu
ZWQgaW50KgkgCgopOwoKZXh0ZXJuIGludCBYUGVla0V2ZW50KAoKICAgIERpc3BsYXkqCQkgLAog
ICAgWEV2ZW50KgkJIAoKKTsKCmV4dGVybiBpbnQgWFBlZWtJZkV2ZW50KAoKICAgIERpc3BsYXkq
CQkgLAogICAgWEV2ZW50KgkJICwKICAgIGludCAgKCopICgKCgkgICAgICAgRGlzcGxheSoJCSAs
CiAgICAgICAgICAgICAgIFhFdmVudCoJCSAsCiAgICAgICAgICAgICAgIFhQb2ludGVyCQkgCgog
ICAgICAgICAgICAgKQkJICwKICAgIFhQb2ludGVyCQkgCgopOwoKZXh0ZXJuIGludCBYUGVuZGlu
ZygKCiAgICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiBpbnQgWFBsYW5lc09mU2NyZWVuKAoKICAg
IFNjcmVlbioJCSAKICAgIAoKKTsKCmV4dGVybiBpbnQgWFByb3RvY29sUmV2aXNpb24oCgogICAg
RGlzcGxheSoJCSAKCik7CgpleHRlcm4gaW50IFhQcm90b2NvbFZlcnNpb24oCgogICAgRGlzcGxh
eSoJCSAKCik7CgoKZXh0ZXJuIGludCBYUHV0QmFja0V2ZW50KAoKICAgIERpc3BsYXkqCQkgLAog
ICAgWEV2ZW50KgkJIAoKKTsKCmV4dGVybiBpbnQgWFB1dEltYWdlKAoKICAgIERpc3BsYXkqCQkg
LAogICAgRHJhd2FibGUJCSAsCiAgICBHQwkJCSAsCiAgICBYSW1hZ2UqCQkgLAogICAgaW50CQkJ
ICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIHVuc2lnbmVkIGlu
dAkgLAogICAgdW5zaWduZWQgaW50CSAJICAKCik7CgpleHRlcm4gaW50IFhRTGVuZ3RoKAoKICAg
IERpc3BsYXkqCQkgCgopOwoKZXh0ZXJuIGludCAgWFF1ZXJ5QmVzdEN1cnNvcigKCiAgICBEaXNw
bGF5KgkJICwKICAgIERyYXdhYmxlCQkgLAogICAgdW5zaWduZWQgaW50ICAgICAgICAgLAogICAg
dW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBpbnQqCSAsCiAgICB1bnNpZ25lZCBpbnQqCSAK
Cik7CgpleHRlcm4gaW50ICBYUXVlcnlCZXN0U2l6ZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIGlu
dAkJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQg
aW50CSAsCiAgICB1bnNpZ25lZCBpbnQqCSAsCiAgICB1bnNpZ25lZCBpbnQqCSAKCik7CgpleHRl
cm4gaW50ICBYUXVlcnlCZXN0U3RpcHBsZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdhYmxl
CQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVk
IGludCoJICwKICAgIHVuc2lnbmVkIGludCoJIAoKKTsKCmV4dGVybiBpbnQgIFhRdWVyeUJlc3RU
aWxlKAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICB1bnNpZ25lZCBpbnQJ
ICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgdW5zaWduZWQgaW50KgkgLAogICAgdW5zaWduZWQg
aW50KgkgCgopOwoKZXh0ZXJuIGludCBYUXVlcnlDb2xvcigKCiAgICBEaXNwbGF5KgkJICwKICAg
IENvbG9ybWFwCQkgLAogICAgWENvbG9yKgkJIAoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5Q29sb3Jz
KAoKICAgIERpc3BsYXkqCQkgLAogICAgQ29sb3JtYXAJCSAsCiAgICBYQ29sb3IqCQkgLAogICAg
aW50CQkJIAoKKTsKCmV4dGVybiBpbnQgIFhRdWVyeUV4dGVuc2lvbigKCiAgICBEaXNwbGF5KgkJ
ICwKICAgIGNvbnN0ICBjaGFyKgkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAsCiAgICBpbnQq
CQkgCgopOwoKZXh0ZXJuIGludCBYUXVlcnlLZXltYXAoCgogICAgRGlzcGxheSoJCSAsCiAgICBj
aGFyIFszMl0JCSAKCik7CgpleHRlcm4gaW50ICBYUXVlcnlQb2ludGVyKAoKICAgIERpc3BsYXkq
CQkgLAogICAgV2luZG93CQkgLAogICAgV2luZG93KgkJICwKICAgIFdpbmRvdyoJCSAsCiAgICBp
bnQqCQkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAsCiAgICBpbnQqCQkgLAogICAgdW5zaWdu
ZWQgaW50KiAgICAgICAgCgopOwoKZXh0ZXJuIGludCBYUXVlcnlUZXh0RXh0ZW50cygKCiAgICBE
aXNwbGF5KgkJICwKICAgIFhJRAkJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIGludAkJCSAs
CiAgICBpbnQqCQkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAsCiAgICBYQ2hhclN0cnVjdCoJ
ICAgICAKCik7CgpleHRlcm4gaW50IFhRdWVyeVRleHRFeHRlbnRzMTYoCgogICAgRGlzcGxheSoJ
CSAsCiAgICBYSUQJCQkgLAogICAgY29uc3QgIFhDaGFyMmIqCSAsCiAgICBpbnQJCQkgLAogICAg
aW50KgkJICwKICAgIGludCoJCSAsCiAgICBpbnQqCQkgLAogICAgWENoYXJTdHJ1Y3QqCSAKCik7
CgpleHRlcm4gaW50ICBYUXVlcnlUcmVlKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkg
LAogICAgV2luZG93KgkJICwKICAgIFdpbmRvdyoJCSAsCiAgICBXaW5kb3cqKgkJICwKICAgIHVu
c2lnbmVkIGludCoJIAoKKTsKCmV4dGVybiBpbnQgWFJhaXNlV2luZG93KAoKICAgIERpc3BsYXkq
CQkgLAogICAgV2luZG93CQkgCgopOwoKZXh0ZXJuIGludCBYUmVhZEJpdG1hcEZpbGUoCgogICAg
RGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZSAJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIHVu
c2lnbmVkIGludCoJICwKICAgIHVuc2lnbmVkIGludCoJICwKICAgIFBpeG1hcCoJCSAsCiAgICBp
bnQqCQkgLAogICAgaW50KgkJIAoKKTsKCmV4dGVybiBpbnQgWFJlYWRCaXRtYXBGaWxlRGF0YSgK
CiAgICBjb25zdCAgY2hhcioJICwKICAgIHVuc2lnbmVkIGludCoJICwKICAgIHVuc2lnbmVkIGlu
dCoJICwKICAgIHVuc2lnbmVkIGNoYXIqKgkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAKCik7
CgpleHRlcm4gaW50IFhSZWJpbmRLZXlzeW0oCgogICAgRGlzcGxheSoJCSAsCiAgICBLZXlTeW0J
CSAsCiAgICBLZXlTeW0qCQkgLAogICAgaW50CQkJICwKICAgIGNvbnN0ICB1bnNpZ25lZCBjaGFy
KgkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWFJlY29sb3JDdXJzb3IoCgogICAgRGlz
cGxheSoJCSAsCiAgICBDdXJzb3IJCSAsCiAgICBYQ29sb3IqCQkgLAogICAgWENvbG9yKgkJIAoK
KTsKCmV4dGVybiBpbnQgWFJlZnJlc2hLZXlib2FyZE1hcHBpbmcoCgogICAgWE1hcHBpbmdFdmVu
dCoJICAgICAKCik7CgpleHRlcm4gaW50IFhSZW1vdmVGcm9tU2F2ZVNldCgKCiAgICBEaXNwbGF5
KgkJICwKICAgIFdpbmRvdwkJIAoKKTsKCmV4dGVybiBpbnQgWFJlbW92ZUhvc3QoCgogICAgRGlz
cGxheSoJCSAsCiAgICBYSG9zdEFkZHJlc3MqCSAKCik7CgpleHRlcm4gaW50IFhSZW1vdmVIb3N0
cygKCiAgICBEaXNwbGF5KgkJICwKICAgIFhIb3N0QWRkcmVzcyoJICwKICAgIGludAkJCSAKCik7
CgpleHRlcm4gaW50IFhSZXBhcmVudFdpbmRvdygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRv
dwkJICwKICAgIFdpbmRvdwkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJu
IGludCBYUmVzZXRTY3JlZW5TYXZlcigKCiAgICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiBpbnQg
WFJlc2l6ZVdpbmRvdygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIHVuc2ln
bmVkIGludAkgLAogICAgdW5zaWduZWQgaW50CSAKCik7CgpleHRlcm4gaW50IFhSZXN0YWNrV2lu
ZG93cygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdyoJCSAsCiAgICBpbnQJCQkgCgopOwoK
ZXh0ZXJuIGludCBYUm90YXRlQnVmZmVycygKCiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJCSAK
Cik7CgpleHRlcm4gaW50IFhSb3RhdGVXaW5kb3dQcm9wZXJ0aWVzKAoKICAgIERpc3BsYXkqCQkg
LAogICAgV2luZG93CQkgLAogICAgQXRvbSoJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJIAoK
KTsKCmV4dGVybiBpbnQgWFNjcmVlbkNvdW50KAoKICAgIERpc3BsYXkqCQkgCgopOwoKZXh0ZXJu
IGludCBYU2VsZWN0SW5wdXQoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBs
b25nCQkgCgopOwoKZXh0ZXJuIGludCAgWFNlbmRFdmVudCgKCiAgICBEaXNwbGF5KgkJICwKICAg
IFdpbmRvdwkJICwKICAgIGludCAJCSAsCiAgICBsb25nCQkgLAogICAgWEV2ZW50KgkJIAoKKTsK
CmV4dGVybiBpbnQgWFNldEFjY2Vzc0NvbnRyb2woCgogICAgRGlzcGxheSoJCSAsCiAgICBpbnQJ
CQkgCgopOwoKZXh0ZXJuIGludCBYU2V0QXJjTW9kZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIEdD
CQkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhTZXRCYWNrZ3JvdW5kKAoKICAgIERp
c3BsYXkqCQkgLAogICAgR0MJCQkgLAogICAgdW5zaWduZWQgbG9uZwkgCgopOwoKZXh0ZXJuIGlu
dCBYU2V0Q2xpcE1hc2soCgogICAgRGlzcGxheSoJCSAsCiAgICBHQwkJCSAsCiAgICBQaXhtYXAJ
CSAKCik7CgpleHRlcm4gaW50IFhTZXRDbGlwT3JpZ2luKAoKICAgIERpc3BsYXkqCQkgLAogICAg
R0MJCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhTZXRDbGlw
UmVjdGFuZ2xlcygKCiAgICBEaXNwbGF5KgkJICwKICAgIEdDCQkJICwKICAgIGludAkJCSAsCiAg
ICBpbnQJCQkgLAogICAgWFJlY3RhbmdsZSoJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJIAoK
KTsKCmV4dGVybiBpbnQgWFNldENsb3NlRG93bk1vZGUoCgogICAgRGlzcGxheSoJCSAsCiAgICBp
bnQJCQkgCgopOwoKZXh0ZXJuIGludCBYU2V0Q29tbWFuZCgKCiAgICBEaXNwbGF5KgkJICwKICAg
IFdpbmRvdwkJICwKICAgIGNoYXIqKgkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhT
ZXREYXNoZXMoCgogICAgRGlzcGxheSoJCSAsCiAgICBHQwkJCSAsCiAgICBpbnQJCQkgLAogICAg
Y29uc3QgIGNoYXIqCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYU2V0RmlsbFJ1bGUo
CgogICAgRGlzcGxheSoJCSAsCiAgICBHQwkJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGlu
dCBYU2V0RmlsbFN0eWxlKAoKICAgIERpc3BsYXkqCQkgLAogICAgR0MJCQkgLAogICAgaW50CQkJ
IAoKKTsKCmV4dGVybiBpbnQgWFNldEZvbnQoCgogICAgRGlzcGxheSoJCSAsCiAgICBHQwkJCSAs
CiAgICBGb250CQkgCgopOwoKZXh0ZXJuIGludCBYU2V0Rm9udFBhdGgoCgogICAgRGlzcGxheSoJ
CSAsCiAgICBjaGFyKioJCSAsCiAgICBpbnQJCQkgCSAgICAgCgopOwoKZXh0ZXJuIGludCBYU2V0
Rm9yZWdyb3VuZCgKCiAgICBEaXNwbGF5KgkJICwKICAgIEdDCQkJICwKICAgIHVuc2lnbmVkIGxv
bmcJIAoKKTsKCmV4dGVybiBpbnQgWFNldEZ1bmN0aW9uKAoKICAgIERpc3BsYXkqCQkgLAogICAg
R0MJCQkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgWFNldEdyYXBoaWNzRXhwb3N1cmVz
KAoKICAgIERpc3BsYXkqCQkgLAogICAgR0MJCQkgLAogICAgaW50IAkJIAoKKTsKCmV4dGVybiBp
bnQgWFNldEljb25OYW1lKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgY29u
c3QgIGNoYXIqCSAKCik7CgpleHRlcm4gaW50IFhTZXRJbnB1dEZvY3VzKAoKICAgIERpc3BsYXkq
CQkgLAogICAgV2luZG93CQkgLAogICAgaW50CQkJICwKICAgIFRpbWUJCSAKCik7CgpleHRlcm4g
aW50IFhTZXRMaW5lQXR0cmlidXRlcygKCiAgICBEaXNwbGF5KgkJICwKICAgIEdDCQkJICwKICAg
IHVuc2lnbmVkIGludAkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgCgop
OwoKZXh0ZXJuIGludCBYU2V0TW9kaWZpZXJNYXBwaW5nKAoKICAgIERpc3BsYXkqCQkgLAogICAg
WE1vZGlmaWVyS2V5bWFwKgkgCgopOwoKZXh0ZXJuIGludCBYU2V0UGxhbmVNYXNrKAoKICAgIERp
c3BsYXkqCQkgLAogICAgR0MJCQkgLAogICAgdW5zaWduZWQgbG9uZwkgCgopOwoKZXh0ZXJuIGlu
dCBYU2V0UG9pbnRlck1hcHBpbmcoCgogICAgRGlzcGxheSoJCSAsCiAgICBjb25zdCAgdW5zaWdu
ZWQgY2hhcioJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhTZXRTY3JlZW5TYXZlcigK
CiAgICBEaXNwbGF5KgkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwK
ICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhTZXRTZWxlY3Rpb25Pd25lcigKCiAgICBEaXNw
bGF5KgkJICwKICAgIEF0b20JICAgICAgICAgLAogICAgV2luZG93CQkgLAogICAgVGltZQkJIAoK
KTsKCmV4dGVybiBpbnQgWFNldFN0YXRlKAoKICAgIERpc3BsYXkqCQkgLAogICAgR0MJCQkgLAog
ICAgdW5zaWduZWQgbG9uZyAJICwKICAgIHVuc2lnbmVkIGxvbmcJICwKICAgIGludAkJCSAsCiAg
ICB1bnNpZ25lZCBsb25nCSAKCik7CgpleHRlcm4gaW50IFhTZXRTdGlwcGxlKAoKICAgIERpc3Bs
YXkqCQkgLAogICAgR0MJCQkgLAogICAgUGl4bWFwCQkgCgopOwoKZXh0ZXJuIGludCBYU2V0U3Vi
d2luZG93TW9kZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIEdDCQkJICwKICAgIGludAkJCSAKCik7
CgpleHRlcm4gaW50IFhTZXRUU09yaWdpbigKCiAgICBEaXNwbGF5KgkJICwKICAgIEdDCQkJICwK
ICAgIGludAkJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYU2V0VGlsZSgKCiAgICBE
aXNwbGF5KgkJICwKICAgIEdDCQkJICwKICAgIFBpeG1hcAkJIAoKKTsKCmV4dGVybiBpbnQgWFNl
dFdpbmRvd0JhY2tncm91bmQoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICB1
bnNpZ25lZCBsb25nCSAKCik7CgpleHRlcm4gaW50IFhTZXRXaW5kb3dCYWNrZ3JvdW5kUGl4bWFw
KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgUGl4bWFwCQkgCgopOwoKZXh0
ZXJuIGludCBYU2V0V2luZG93Qm9yZGVyKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkg
LAogICAgdW5zaWduZWQgbG9uZwkgCgopOwoKZXh0ZXJuIGludCBYU2V0V2luZG93Qm9yZGVyUGl4
bWFwKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgUGl4bWFwCQkgCgopOwoK
ZXh0ZXJuIGludCBYU2V0V2luZG93Qm9yZGVyV2lkdGgoCgogICAgRGlzcGxheSoJCSAsCiAgICBX
aW5kb3cJCSAsCiAgICB1bnNpZ25lZCBpbnQJIAoKKTsKCmV4dGVybiBpbnQgWFNldFdpbmRvd0Nv
bG9ybWFwKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgQ29sb3JtYXAJCSAK
Cik7CgpleHRlcm4gaW50IFhTdG9yZUJ1ZmZlcigKCiAgICBEaXNwbGF5KgkJICwKICAgIGNvbnN0
ICBjaGFyKgkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhTdG9y
ZUJ5dGVzKAoKICAgIERpc3BsYXkqCQkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBpbnQJCQkg
CgopOwoKZXh0ZXJuIGludCBYU3RvcmVDb2xvcigKCiAgICBEaXNwbGF5KgkJICwKICAgIENvbG9y
bWFwCQkgLAogICAgWENvbG9yKgkJIAoKKTsKCmV4dGVybiBpbnQgWFN0b3JlQ29sb3JzKAoKICAg
IERpc3BsYXkqCQkgLAogICAgQ29sb3JtYXAJCSAsCiAgICBYQ29sb3IqCQkgLAogICAgaW50CQkJ
IAoKKTsKCmV4dGVybiBpbnQgWFN0b3JlTmFtZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRv
dwkJICwKICAgIGNvbnN0ICBjaGFyKgkgCgopOwoKZXh0ZXJuIGludCBYU3RvcmVOYW1lZENvbG9y
KAoKICAgIERpc3BsYXkqCQkgLAogICAgQ29sb3JtYXAJCSAsCiAgICBjb25zdCAgY2hhcioJICwK
ICAgIHVuc2lnbmVkIGxvbmcJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gaW50IFhTeW5jKAoK
ICAgIERpc3BsYXkqCQkgLAogICAgaW50IAkJIAoKKTsKCmV4dGVybiBpbnQgWFRleHRFeHRlbnRz
KAoKICAgIFhGb250U3RydWN0KgkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBpbnQJCQkgLAog
ICAgaW50KgkJICwKICAgIGludCoJCSAsCiAgICBpbnQqCQkgLAogICAgWENoYXJTdHJ1Y3QqCSAK
Cik7CgpleHRlcm4gaW50IFhUZXh0RXh0ZW50czE2KAoKICAgIFhGb250U3RydWN0KgkgLAogICAg
Y29uc3QgIFhDaGFyMmIqCSAsCiAgICBpbnQJCQkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAs
CiAgICBpbnQqCQkgLAogICAgWENoYXJTdHJ1Y3QqCSAKCik7CgpleHRlcm4gaW50IFhUZXh0V2lk
dGgoCgogICAgWEZvbnRTdHJ1Y3QqCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIGludAkJCSAK
Cik7CgpleHRlcm4gaW50IFhUZXh0V2lkdGgxNigKCiAgICBYRm9udFN0cnVjdCoJICwKICAgIGNv
bnN0ICBYQ2hhcjJiKgkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgIFhUcmFuc2xhdGVD
b29yZGluYXRlcygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFdpbmRvdwkJ
ICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAsCiAg
ICBXaW5kb3cqCQkgCgopOwoKZXh0ZXJuIGludCBYVW5kZWZpbmVDdXJzb3IoCgogICAgRGlzcGxh
eSoJCSAsCiAgICBXaW5kb3cJCSAKCik7CgpleHRlcm4gaW50IFhVbmdyYWJCdXR0b24oCgogICAg
RGlzcGxheSoJCSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAg
V2luZG93CQkgCgopOwoKZXh0ZXJuIGludCBYVW5ncmFiS2V5KAoKICAgIERpc3BsYXkqCQkgLAog
ICAgaW50CQkJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgV2luZG93CQkgCgopOwoKZXh0ZXJu
IGludCBYVW5ncmFiS2V5Ym9hcmQoCgogICAgRGlzcGxheSoJCSAsCiAgICBUaW1lCQkgCgopOwoK
ZXh0ZXJuIGludCBYVW5ncmFiUG9pbnRlcigKCiAgICBEaXNwbGF5KgkJICwKICAgIFRpbWUJCSAK
Cik7CgpleHRlcm4gaW50IFhVbmdyYWJTZXJ2ZXIoCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRl
cm4gaW50IFhVbmluc3RhbGxDb2xvcm1hcCgKCiAgICBEaXNwbGF5KgkJICwKICAgIENvbG9ybWFw
CQkgCgopOwoKZXh0ZXJuIGludCBYVW5sb2FkRm9udCgKCiAgICBEaXNwbGF5KgkJICwKICAgIEZv
bnQJCSAKCik7CgpleHRlcm4gaW50IFhVbm1hcFN1YndpbmRvd3MoCgogICAgRGlzcGxheSoJCSAs
CiAgICBXaW5kb3cJCSAKCik7CgpleHRlcm4gaW50IFhVbm1hcFdpbmRvdygKCiAgICBEaXNwbGF5
KgkJICwKICAgIFdpbmRvdwkJIAoKKTsKCmV4dGVybiBpbnQgWFZlbmRvclJlbGVhc2UoCgogICAg
RGlzcGxheSoJCSAKCik7CgpleHRlcm4gaW50IFhXYXJwUG9pbnRlcigKCiAgICBEaXNwbGF5KgkJ
ICwKICAgIFdpbmRvdwkJICwKICAgIFdpbmRvdwkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkg
LAogICAgdW5zaWduZWQgaW50CSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIGludAkJCSAsCiAg
ICBpbnQJCQkgCSAgICAgCgopOwoKZXh0ZXJuIGludCBYV2lkdGhNTU9mU2NyZWVuKAoKICAgIFNj
cmVlbioJCSAKCik7CgpleHRlcm4gaW50IFhXaWR0aE9mU2NyZWVuKAoKICAgIFNjcmVlbioJCSAK
Cik7CgpleHRlcm4gaW50IFhXaW5kb3dFdmVudCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRv
dwkJICwKICAgIGxvbmcJCSAsCiAgICBYRXZlbnQqCQkgCgopOwoKZXh0ZXJuIGludCBYV3JpdGVC
aXRtYXBGaWxlKAoKICAgIERpc3BsYXkqCQkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBQaXht
YXAJCSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGludAkgLAogICAgaW50CQkJ
ICwKICAgIGludAkJCSAJCSAgICAgCgopOwoKZXh0ZXJuIGludCAgWFN1cHBvcnRzTG9jYWxlKAoK
ICAgIHZvaWQKCik7CgpleHRlcm4gY2hhciAqWFNldExvY2FsZU1vZGlmaWVycygKCiAgICBjb25z
dCAgY2hhcioJIAoKKTsKCmV4dGVybiBYT00gWE9wZW5PTSgKCiAgICBEaXNwbGF5KgkJCSAsCiAg
ICBzdHJ1Y3QgX1hybUhhc2hCdWNrZXRSZWMqCSAsCiAgICBjb25zdCAgY2hhcioJCSAsCiAgICBj
b25zdCAgY2hhcioJCSAKCik7CgpleHRlcm4gaW50ICBYQ2xvc2VPTSgKCiAgICBYT00JCQkgCgop
OwoKZXh0ZXJuIGNoYXIgKlhTZXRPTVZhbHVlcygKCiAgICBYT00JCQkgLAogICAgLi4uCgopOwoK
ZXh0ZXJuIGNoYXIgKlhHZXRPTVZhbHVlcygKCiAgICBYT00JCQkgLAogICAgLi4uCgopOwoKZXh0
ZXJuIERpc3BsYXkgKlhEaXNwbGF5T2ZPTSgKCiAgICBYT00JCQkgCgopOwoKZXh0ZXJuIGNoYXIg
KlhMb2NhbGVPZk9NKAoKICAgIFhPTQkJCSAKCik7CgpleHRlcm4gWE9DIFhDcmVhdGVPQygKCiAg
ICBYT00JCQkgLAogICAgLi4uCgopOwoKZXh0ZXJuIHZvaWQgWERlc3Ryb3lPQygKCiAgICBYT0MJ
CQkgCgopOwoKZXh0ZXJuIFhPTSBYT01PZk9DKAoKICAgIFhPQwkJCSAKCik7CgpleHRlcm4gY2hh
ciAqWFNldE9DVmFsdWVzKAoKICAgIFhPQwkJCSAsCiAgICAuLi4KCik7CgpleHRlcm4gY2hhciAq
WEdldE9DVmFsdWVzKAoKICAgIFhPQwkJCSAsCiAgICAuLi4KCik7CgpleHRlcm4gWEZvbnRTZXQg
WENyZWF0ZUZvbnRTZXQoCgogICAgRGlzcGxheSoJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAg
IGNoYXIqKioJCSAsCiAgICBpbnQqCQkgLAogICAgY2hhcioqCQkgCgopOwoKZXh0ZXJuIHZvaWQg
WEZyZWVGb250U2V0KAoKICAgIERpc3BsYXkqCQkgLAogICAgWEZvbnRTZXQJCSAKCik7CgpleHRl
cm4gaW50IFhGb250c09mRm9udFNldCgKCiAgICBYRm9udFNldAkJICwKICAgIFhGb250U3RydWN0
KioqCSAsCiAgICBjaGFyKioqCQkgCgopOwoKZXh0ZXJuIGNoYXIgKlhCYXNlRm9udE5hbWVMaXN0
T2ZGb250U2V0KAoKICAgIFhGb250U2V0CQkgCgopOwoKZXh0ZXJuIGNoYXIgKlhMb2NhbGVPZkZv
bnRTZXQoCgogICAgWEZvbnRTZXQJCSAKCik7CgpleHRlcm4gaW50ICBYQ29udGV4dERlcGVuZGVu
dERyYXdpbmcoCgogICAgWEZvbnRTZXQJCSAKCik7CgpleHRlcm4gaW50ICBYRGlyZWN0aW9uYWxE
ZXBlbmRlbnREcmF3aW5nKAoKICAgIFhGb250U2V0CQkgCgopOwoKZXh0ZXJuIGludCAgWENvbnRl
eHR1YWxEcmF3aW5nKAoKICAgIFhGb250U2V0CQkgCgopOwoKZXh0ZXJuIFhGb250U2V0RXh0ZW50
cyAqWEV4dGVudHNPZkZvbnRTZXQoCgogICAgWEZvbnRTZXQJCSAKCik7CgpleHRlcm4gaW50IFht
YlRleHRFc2NhcGVtZW50KAoKICAgIFhGb250U2V0CQkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAg
ICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCBYd2NUZXh0RXNjYXBlbWVudCgKCiAgICBYRm9udFNl
dAkJICwKICAgIGNvbnN0ICB3Y2hhcl90KgkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQg
WG1iVGV4dEV4dGVudHMoCgogICAgWEZvbnRTZXQJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAg
IGludAkJCSAsCiAgICBYUmVjdGFuZ2xlKgkJICwKICAgIFhSZWN0YW5nbGUqCQkgCgopOwoKZXh0
ZXJuIGludCBYd2NUZXh0RXh0ZW50cygKCiAgICBYRm9udFNldAkJICwKICAgIGNvbnN0ICB3Y2hh
cl90KgkgLAogICAgaW50CQkJICwKICAgIFhSZWN0YW5nbGUqCQkgLAogICAgWFJlY3RhbmdsZSoJ
CSAKCik7CgpleHRlcm4gaW50ICBYbWJUZXh0UGVyQ2hhckV4dGVudHMoCgogICAgWEZvbnRTZXQJ
CSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIGludAkJCSAsCiAgICBYUmVjdGFuZ2xlKgkJICwK
ICAgIFhSZWN0YW5nbGUqCQkgLAogICAgaW50CQkJICwKICAgIGludCoJCSAsCiAgICBYUmVjdGFu
Z2xlKgkJICwKICAgIFhSZWN0YW5nbGUqCQkgCgopOwoKZXh0ZXJuIGludCAgWHdjVGV4dFBlckNo
YXJFeHRlbnRzKAoKICAgIFhGb250U2V0CQkgLAogICAgY29uc3QgIHdjaGFyX3QqCSAsCiAgICBp
bnQJCQkgLAogICAgWFJlY3RhbmdsZSoJCSAsCiAgICBYUmVjdGFuZ2xlKgkJICwKICAgIGludAkJ
CSAsCiAgICBpbnQqCQkgLAogICAgWFJlY3RhbmdsZSoJCSAsCiAgICBYUmVjdGFuZ2xlKgkJIAoK
KTsKCmV4dGVybiB2b2lkIFhtYkRyYXdUZXh0KAoKICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2Fi
bGUJCSAsCiAgICBHQwkJCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJICwKICAgIFhtYlRleHRJ
dGVtKgkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiB2b2lkIFh3Y0RyYXdUZXh0KAoKICAgIERp
c3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBHQwkJCSAsCiAgICBpbnQJCQkgLAogICAg
aW50CQkJICwKICAgIFh3Y1RleHRJdGVtKgkgLAogICAgaW50CQkJIAoKKTsKCmV4dGVybiB2b2lk
IFhtYkRyYXdTdHJpbmcoCgogICAgRGlzcGxheSoJCSAsCiAgICBEcmF3YWJsZQkJICwKICAgIFhG
b250U2V0CQkgLAogICAgR0MJCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBjb25z
dCAgY2hhcioJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gdm9pZCBYd2NEcmF3U3RyaW5nKAoK
ICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBYRm9udFNldAkJICwKICAgIEdD
CQkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgY29uc3QgIHdjaGFyX3QqCSAsCiAg
ICBpbnQJCQkgCgopOwoKZXh0ZXJuIHZvaWQgWG1iRHJhd0ltYWdlU3RyaW5nKAoKICAgIERpc3Bs
YXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBYRm9udFNldAkJICwKICAgIEdDCQkJICwKICAg
IGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBpbnQJCQkgCgop
OwoKZXh0ZXJuIHZvaWQgWHdjRHJhd0ltYWdlU3RyaW5nKAoKICAgIERpc3BsYXkqCQkgLAogICAg
RHJhd2FibGUJCSAsCiAgICBYRm9udFNldAkJICwKICAgIEdDCQkJICwKICAgIGludAkJCSAsCiAg
ICBpbnQJCQkgLAogICAgY29uc3QgIHdjaGFyX3QqCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJu
IFhJTSBYT3BlbklNKAoKICAgIERpc3BsYXkqCQkJICwKICAgIHN0cnVjdCBfWHJtSGFzaEJ1Y2tl
dFJlYyoJICwKICAgIGNoYXIqCQkJICwKICAgIGNoYXIqCQkJIAoKKTsKCmV4dGVybiBpbnQgIFhD
bG9zZUlNKAoKICAgIFhJTSAgCgopOwoKZXh0ZXJuIGNoYXIgKlhHZXRJTVZhbHVlcygKCiAgICBY
SU0gICwgLi4uCgopOwoKZXh0ZXJuIGNoYXIgKlhTZXRJTVZhbHVlcygKCiAgICBYSU0gICwgLi4u
CgopOwoKZXh0ZXJuIERpc3BsYXkgKlhEaXNwbGF5T2ZJTSgKCiAgICBYSU0gIAoKKTsKCmV4dGVy
biBjaGFyICpYTG9jYWxlT2ZJTSgKCiAgICBYSU0gIAoKKTsKCmV4dGVybiBYSUMgWENyZWF0ZUlD
KAoKICAgIFhJTSAgLCAuLi4KCik7CgpleHRlcm4gdm9pZCBYRGVzdHJveUlDKAoKICAgIFhJQyAg
CgopOwoKZXh0ZXJuIHZvaWQgWFNldElDRm9jdXMoCgogICAgWElDICAKCik7CgpleHRlcm4gdm9p
ZCBYVW5zZXRJQ0ZvY3VzKAoKICAgIFhJQyAgCgopOwoKZXh0ZXJuIHdjaGFyX3QgKlh3Y1Jlc2V0
SUMoCgogICAgWElDICAKCik7CgpleHRlcm4gY2hhciAqWG1iUmVzZXRJQygKCiAgICBYSUMgIAoK
KTsKCmV4dGVybiBjaGFyICpYU2V0SUNWYWx1ZXMoCgogICAgWElDICAsIC4uLgoKKTsKCmV4dGVy
biBjaGFyICpYR2V0SUNWYWx1ZXMoCgogICAgWElDICAsIC4uLgoKKTsKCmV4dGVybiBYSU0gWElN
T2ZJQygKCiAgICBYSUMgIAoKKTsKCmV4dGVybiBpbnQgIFhGaWx0ZXJFdmVudCgKCiAgICBYRXZl
bnQqCSAsCiAgICBXaW5kb3cJIAoKKTsKCmV4dGVybiBpbnQgWG1iTG9va3VwU3RyaW5nKAoKICAg
IFhJQwkJCSAsCiAgICBYS2V5UHJlc3NlZEV2ZW50KgkgLAogICAgY2hhcioJCSAsCiAgICBpbnQJ
CQkgLAogICAgS2V5U3ltKgkJICwKICAgIGludCAqCQkgCgopOwoKZXh0ZXJuIGludCBYd2NMb29r
dXBTdHJpbmcoCgogICAgWElDCQkJICwKICAgIFhLZXlQcmVzc2VkRXZlbnQqCSAsCiAgICB3Y2hh
cl90KgkJICwKICAgIGludAkJCSAsCiAgICBLZXlTeW0qCQkgLAogICAgaW50ICoJCSAKCik7Cgpl
eHRlcm4gWFZhTmVzdGVkTGlzdCBYVmFDcmVhdGVOZXN0ZWRMaXN0KAoKICAgIGludCAgLCAuLi4K
Cik7CgogCgpleHRlcm4gaW50ICBYUmVnaXN0ZXJJTUluc3RhbnRpYXRlQ2FsbGJhY2soCgogICAg
RGlzcGxheSoJCQkgLAogICAgc3RydWN0IF9Ycm1IYXNoQnVja2V0UmVjKgkgLAogICAgY2hhcioJ
CQkgLAogICAgY2hhcioJCQkgLAogICAgWElEUHJvYwkJCSAsCiAgICBYUG9pbnRlcgkJCSAKCik7
CgpleHRlcm4gaW50ICBYVW5yZWdpc3RlcklNSW5zdGFudGlhdGVDYWxsYmFjaygKCiAgICBEaXNw
bGF5KgkJCSAsCiAgICBzdHJ1Y3QgX1hybUhhc2hCdWNrZXRSZWMqCSAsCiAgICBjaGFyKgkJCSAs
CiAgICBjaGFyKgkJCSAsCiAgICBYSURQcm9jCQkJICwKICAgIFhQb2ludGVyCQkJIAoKKTsKCnR5
cGVkZWYgdm9pZCAoKlhDb25uZWN0aW9uV2F0Y2hQcm9jKSgKCiAgICBEaXNwbGF5KgkJCSAsCiAg
ICBYUG9pbnRlcgkJCSAsCiAgICBpbnQJCQkJICwKICAgIGludCAJCQkgLAkgIAogICAgWFBvaW50
ZXIqCQkJICAgCgopOwogICAgCgpleHRlcm4gaW50ICBYSW50ZXJuYWxDb25uZWN0aW9uTnVtYmVy
cygKCiAgICBEaXNwbGF5KgkJCSAsCiAgICBpbnQqKgkJCSAsCiAgICBpbnQqCQkJIAoKKTsKCmV4
dGVybiB2b2lkIFhQcm9jZXNzSW50ZXJuYWxDb25uZWN0aW9uKAoKICAgIERpc3BsYXkqCQkJICwK
ICAgIGludAkJCQkgCgopOwoKZXh0ZXJuIGludCAgWEFkZENvbm5lY3Rpb25XYXRjaCgKCiAgICBE
aXNwbGF5KgkJCSAsCiAgICBYQ29ubmVjdGlvbldhdGNoUHJvYwkgLAogICAgWFBvaW50ZXIJCQkg
CgopOwoKZXh0ZXJuIHZvaWQgWFJlbW92ZUNvbm5lY3Rpb25XYXRjaCgKCiAgICBEaXNwbGF5KgkJ
CSAsCiAgICBYQ29ubmVjdGlvbldhdGNoUHJvYwkgLAogICAgWFBvaW50ZXIJCQkgCgopOwoKfSAK
CgojIDU3ICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL0ludHJpbnNpYy5oIiAyCgojIDEgIi91c3Iv
WDExUjYvaW5jbHVkZS9YMTEvWHV0aWwuaCIgMQogCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCgoKCgoKCgoKCgoKCiAKCgoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgCWxvbmcgZmxhZ3M7CSAKCWludCB4LCB5OwkJIAoJaW50IHdpZHRoLCBo
ZWlnaHQ7CSAKCWludCBtaW5fd2lkdGgsIG1pbl9oZWlnaHQ7CglpbnQgbWF4X3dpZHRoLCBtYXhf
aGVpZ2h0OwogICAgCWludCB3aWR0aF9pbmMsIGhlaWdodF9pbmM7CglzdHJ1Y3QgewoJCWludCB4
OwkgCgkJaW50IHk7CSAKCX0gbWluX2FzcGVjdCwgbWF4X2FzcGVjdDsKCWludCBiYXNlX3dpZHRo
LCBiYXNlX2hlaWdodDsJCSAKCWludCB3aW5fZ3Jhdml0eTsJCQkgCn0gWFNpemVIaW50czsKCiAK
CgoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoJbG9uZyBmbGFnczsJIAoJ
aW50ICBpbnB1dDsJIAoKCWludCBpbml0aWFsX3N0YXRlOwkgCglQaXhtYXAgaWNvbl9waXhtYXA7
CSAKCVdpbmRvdyBpY29uX3dpbmRvdzsgCSAKCWludCBpY29uX3gsIGljb25feTsgCSAKCVBpeG1h
cCBpY29uX21hc2s7CSAKCVhJRCB3aW5kb3dfZ3JvdXA7CSAKCSAKfSBYV01IaW50czsKCiAKCgoK
CgoKCgoKCgoKIAoKCgoKIAoKCgoKCgkJCSAKCgogCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIHVu
c2lnbmVkIGNoYXIgKnZhbHVlOwkJIAogICAgQXRvbSBlbmNvZGluZzsJCQkgCiAgICBpbnQgZm9y
bWF0OwkJCQkgCiAgICB1bnNpZ25lZCBsb25nIG5pdGVtczsJCSAKfSBYVGV4dFByb3BlcnR5OwoK
CgoKCnR5cGVkZWYgZW51bSB7CiAgICBYU3RyaW5nU3R5bGUsCQkgCiAgICBYQ29tcG91bmRUZXh0
U3R5bGUsCQkgCiAgICBYVGV4dFN0eWxlLAkJCSAKICAgIFhTdGRJQ0NUZXh0U3R5bGUJCSAKfSBY
SUNDRW5jb2RpbmdTdHlsZTsKCnR5cGVkZWYgc3RydWN0IHsKCWludCBtaW5fd2lkdGgsIG1pbl9o
ZWlnaHQ7CglpbnQgbWF4X3dpZHRoLCBtYXhfaGVpZ2h0OwoJaW50IHdpZHRoX2luYywgaGVpZ2h0
X2luYzsKfSBYSWNvblNpemU7Cgp0eXBlZGVmIHN0cnVjdCB7CgljaGFyICpyZXNfbmFtZTsKCWNo
YXIgKnJlc19jbGFzczsKfSBYQ2xhc3NIaW50OwoKIAoKCgoKCgoKCgoKCgoKCiAKCgp0eXBlZGVm
IHN0cnVjdCBfWENvbXBvc2VTdGF0dXMgewogICAgWFBvaW50ZXIgY29tcG9zZV9wdHI7CSAKICAg
IGludCBjaGFyc19tYXRjaGVkOwkJIAp9IFhDb21wb3NlU3RhdHVzOwoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKdHlwZWRlZiBzdHJ1Y3QgX1hSZWdpb24gKlJlZ2lvbjsgCgogCiAKCgoK
IAoKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIFZpc3VhbCAqdmlzdWFsOwogIFZpc3VhbElEIHZp
c3VhbGlkOwogIGludCBzY3JlZW47CiAgaW50IGRlcHRoOwoKICBpbnQgY19jbGFzczsJCQkJCSAK
CgoKICB1bnNpZ25lZCBsb25nIHJlZF9tYXNrOwogIHVuc2lnbmVkIGxvbmcgZ3JlZW5fbWFzazsK
ICB1bnNpZ25lZCBsb25nIGJsdWVfbWFzazsKICBpbnQgY29sb3JtYXBfc2l6ZTsKICBpbnQgYml0
c19wZXJfcmdiOwp9IFhWaXN1YWxJbmZvOwoKCgoKCgoKCgoKCgoKIAoKCgp0eXBlZGVmIHN0cnVj
dCB7CglDb2xvcm1hcCBjb2xvcm1hcDsKCXVuc2lnbmVkIGxvbmcgcmVkX21heDsKCXVuc2lnbmVk
IGxvbmcgcmVkX211bHQ7Cgl1bnNpZ25lZCBsb25nIGdyZWVuX21heDsKCXVuc2lnbmVkIGxvbmcg
Z3JlZW5fbXVsdDsKCXVuc2lnbmVkIGxvbmcgYmx1ZV9tYXg7Cgl1bnNpZ25lZCBsb25nIGJsdWVf
bXVsdDsKCXVuc2lnbmVkIGxvbmcgYmFzZV9waXhlbDsKCVZpc3VhbElEIHZpc3VhbGlkOwkJIAoJ
WElEIGtpbGxpZDsJCQkgCn0gWFN0YW5kYXJkQ29sb3JtYXA7CgoKCgogCgoKCgoKCgogCgoKCgoK
CiAKCgoKCgp0eXBlZGVmIGludCBYQ29udGV4dDsKCgoKCmV4dGVybiAiQyIgeyAKCiAKCmV4dGVy
biBYQ2xhc3NIaW50ICpYQWxsb2NDbGFzc0hpbnQgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gWElj
b25TaXplICpYQWxsb2NJY29uU2l6ZSAoCgogICAgdm9pZAoKKTsKCmV4dGVybiBYU2l6ZUhpbnRz
ICpYQWxsb2NTaXplSGludHMgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gWFN0YW5kYXJkQ29sb3Jt
YXAgKlhBbGxvY1N0YW5kYXJkQ29sb3JtYXAgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gWFdNSGlu
dHMgKlhBbGxvY1dNSGludHMgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gaW50IFhDbGlwQm94KAoK
ICAgIFJlZ2lvbgkJICwKICAgIFhSZWN0YW5nbGUqCQkgCgopOwoKZXh0ZXJuIFJlZ2lvbiBYQ3Jl
YXRlUmVnaW9uKAoKICAgIHZvaWQKCik7CgpleHRlcm4gY2hhciAqWERlZmF1bHRTdHJpbmcoCgog
ICAgdm9pZAoKKTsKCmV4dGVybiBpbnQgWERlbGV0ZUNvbnRleHQoCgogICAgRGlzcGxheSoJCSAs
CiAgICBYSUQJCQkgLAogICAgWENvbnRleHQJCSAKCik7CgpleHRlcm4gaW50IFhEZXN0cm95UmVn
aW9uKAoKICAgIFJlZ2lvbgkJIAoKKTsKCmV4dGVybiBpbnQgWEVtcHR5UmVnaW9uKAoKICAgIFJl
Z2lvbgkJIAoKKTsKCmV4dGVybiBpbnQgWEVxdWFsUmVnaW9uKAoKICAgIFJlZ2lvbgkJICwKICAg
IFJlZ2lvbgkJIAoKKTsKCmV4dGVybiBpbnQgWEZpbmRDb250ZXh0KAoKICAgIERpc3BsYXkqCQkg
LAogICAgWElECQkJICwKICAgIFhDb250ZXh0CQkgLAogICAgWFBvaW50ZXIqCQkgCgopOwoKZXh0
ZXJuIGludCAgWEdldENsYXNzSGludCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwK
ICAgIFhDbGFzc0hpbnQqCQkgCgopOwoKZXh0ZXJuIGludCAgWEdldEljb25TaXplcygKCiAgICBE
aXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFhJY29uU2l6ZSoqCQkgLAogICAgaW50KgkJ
IAoKKTsKCmV4dGVybiBpbnQgIFhHZXROb3JtYWxIaW50cygKCiAgICBEaXNwbGF5KgkJICwKICAg
IFdpbmRvdwkJICwKICAgIFhTaXplSGludHMqCQkgCgopOwoKZXh0ZXJuIGludCAgWEdldFJHQkNv
bG9ybWFwcygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFhTdGFuZGFyZENv
bG9ybWFwKiogICwKICAgIGludCoJCSAsCiAgICBBdG9tCQkgCgopOwoKZXh0ZXJuIGludCAgWEdl
dFNpemVIaW50cygKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFhTaXplSGlu
dHMqCQkgLAogICAgQXRvbQkJIAoKKTsKCmV4dGVybiBpbnQgIFhHZXRTdGFuZGFyZENvbG9ybWFw
KAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgWFN0YW5kYXJkQ29sb3JtYXAq
CSAsCiAgICBBdG9tCQkgCQkJICAgIAoKKTsKCmV4dGVybiBpbnQgIFhHZXRUZXh0UHJvcGVydHko
CgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBYVGV4dFByb3BlcnR5KgkgLAog
ICAgQXRvbQkJIAoKKTsKCmV4dGVybiBYVmlzdWFsSW5mbyAqWEdldFZpc3VhbEluZm8oCgogICAg
RGlzcGxheSoJCSAsCiAgICBsb25nCQkgLAogICAgWFZpc3VhbEluZm8qCSAsCiAgICBpbnQqCQkg
CgopOwoKZXh0ZXJuIGludCAgWEdldFdNQ2xpZW50TWFjaGluZSgKCiAgICBEaXNwbGF5KgkJICwK
ICAgIFdpbmRvdwkJICwKICAgIFhUZXh0UHJvcGVydHkqCSAKCik7CgpleHRlcm4gWFdNSGludHMg
KlhHZXRXTUhpbnRzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgCQkgICAgICAKCik7
CgpleHRlcm4gaW50ICBYR2V0V01JY29uTmFtZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRv
dwkJICwKICAgIFhUZXh0UHJvcGVydHkqCSAKCik7CgpleHRlcm4gaW50ICBYR2V0V01OYW1lKAoK
ICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAogICAgWFRleHRQcm9wZXJ0eSoJIAoKKTsK
CmV4dGVybiBpbnQgIFhHZXRXTU5vcm1hbEhpbnRzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2lu
ZG93CQkgLAogICAgWFNpemVIaW50cyoJCSAsCiAgICBsb25nKgkJICAKCik7CgpleHRlcm4gaW50
ICBYR2V0V01TaXplSGludHMoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBY
U2l6ZUhpbnRzKgkJICwKICAgIGxvbmcqCQkgLAogICAgQXRvbQkJIAoKKTsKCmV4dGVybiBpbnQg
IFhHZXRab29tSGludHMoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBYU2l6
ZUhpbnRzKgkJIAoKKTsKCmV4dGVybiBpbnQgWEludGVyc2VjdFJlZ2lvbigKCiAgICBSZWdpb24J
CSAsCiAgICBSZWdpb24JCSAsCiAgICBSZWdpb24JCSAKCik7CgpleHRlcm4gdm9pZCBYQ29udmVy
dENhc2UoCgogICAgS2V5U3ltCQkgLAogICAgS2V5U3ltKgkJICwKICAgIEtleVN5bSoJCSAKCik7
CgpleHRlcm4gaW50IFhMb29rdXBTdHJpbmcoCgogICAgWEtleUV2ZW50KgkJICwKICAgIGNoYXIq
CQkgLAogICAgaW50CQkJICwKICAgIEtleVN5bSoJCSAsCiAgICBYQ29tcG9zZVN0YXR1cyoJIAoK
KTsKCmV4dGVybiBpbnQgIFhNYXRjaFZpc3VhbEluZm8oCgogICAgRGlzcGxheSoJCSAsCiAgICBp
bnQJCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAsCiAgICBYVmlzdWFsSW5mbyoJIAoKKTsK
CmV4dGVybiBpbnQgWE9mZnNldFJlZ2lvbigKCiAgICBSZWdpb24JCSAsCiAgICBpbnQJCQkgLAog
ICAgaW50CQkJIAoKKTsKCmV4dGVybiBpbnQgIFhQb2ludEluUmVnaW9uKAoKICAgIFJlZ2lvbgkJ
ICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIFJlZ2lvbiBYUG9seWdvblJl
Z2lvbigKCiAgICBYUG9pbnQqCQkgLAogICAgaW50CQkJICwKICAgIGludAkJCSAKCik7CgpleHRl
cm4gaW50IFhSZWN0SW5SZWdpb24oCgogICAgUmVnaW9uCQkgLAogICAgaW50CQkJICwKICAgIGlu
dAkJCSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIHVuc2lnbmVkIGludAkgCgopOwoKZXh0ZXJu
IGludCBYU2F2ZUNvbnRleHQoCgogICAgRGlzcGxheSoJCSAsCiAgICBYSUQJCQkgLAogICAgWENv
bnRleHQJCSAsCiAgICBjb25zdCAgY2hhcioJIAoKKTsKCmV4dGVybiBpbnQgWFNldENsYXNzSGlu
dCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFhDbGFzc0hpbnQqCQkgCgop
OwoKZXh0ZXJuIGludCBYU2V0SWNvblNpemVzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93
CQkgLAogICAgWEljb25TaXplKgkJICwKICAgIGludAkJCSAgICAgCgopOwoKZXh0ZXJuIGludCBY
U2V0Tm9ybWFsSGludHMoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBYU2l6
ZUhpbnRzKgkJIAoKKTsKCmV4dGVybiB2b2lkIFhTZXRSR0JDb2xvcm1hcHMoCgogICAgRGlzcGxh
eSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBYU3RhbmRhcmRDb2xvcm1hcCoJICwKICAgIGludAkJ
CSAsCiAgICBBdG9tCQkgCgopOwoKZXh0ZXJuIGludCBYU2V0U2l6ZUhpbnRzKAoKICAgIERpc3Bs
YXkqCQkgLAogICAgV2luZG93CQkgLAogICAgWFNpemVIaW50cyoJCSAsCiAgICBBdG9tCQkgCgop
OwoKZXh0ZXJuIGludCBYU2V0U3RhbmRhcmRQcm9wZXJ0aWVzKAoKICAgIERpc3BsYXkqCQkgLAog
ICAgV2luZG93CQkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAg
IFBpeG1hcAkJICwKICAgIGNoYXIqKgkJICwKICAgIGludAkJCSAsCiAgICBYU2l6ZUhpbnRzKgkJ
IAoKKTsKCmV4dGVybiB2b2lkIFhTZXRUZXh0UHJvcGVydHkoCgogICAgRGlzcGxheSoJCSAsCiAg
ICBXaW5kb3cJCSAsCiAgICBYVGV4dFByb3BlcnR5KgkgLAogICAgQXRvbQkJIAoKKTsKCmV4dGVy
biB2b2lkIFhTZXRXTUNsaWVudE1hY2hpbmUoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJ
CSAsCiAgICBYVGV4dFByb3BlcnR5KgkgCgopOwoKZXh0ZXJuIGludCBYU2V0V01IaW50cygKCiAg
ICBEaXNwbGF5KgkJICwKICAgIFdpbmRvdwkJICwKICAgIFhXTUhpbnRzKgkJIAoKKTsKCmV4dGVy
biB2b2lkIFhTZXRXTUljb25OYW1lKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkgLAog
ICAgWFRleHRQcm9wZXJ0eSoJIAoKKTsKCmV4dGVybiB2b2lkIFhTZXRXTU5hbWUoCgogICAgRGlz
cGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBYVGV4dFByb3BlcnR5KgkgCgopOwoKZXh0ZXJu
IHZvaWQgWFNldFdNTm9ybWFsSGludHMoCgogICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAs
CiAgICBYU2l6ZUhpbnRzKgkJIAoKKTsKCmV4dGVybiB2b2lkIFhTZXRXTVByb3BlcnRpZXMoCgog
ICAgRGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBYVGV4dFByb3BlcnR5KgkgLAogICAg
WFRleHRQcm9wZXJ0eSoJICwKICAgIGNoYXIqKgkJICwKICAgIGludAkJCSAsCiAgICBYU2l6ZUhp
bnRzKgkJICwKICAgIFhXTUhpbnRzKgkJICwKICAgIFhDbGFzc0hpbnQqCQkgCgopOwoKZXh0ZXJu
IHZvaWQgWG1iU2V0V01Qcm9wZXJ0aWVzKAoKICAgIERpc3BsYXkqCQkgLAogICAgV2luZG93CQkg
LAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIGNoYXIqKgkJICwK
ICAgIGludAkJCSAsCiAgICBYU2l6ZUhpbnRzKgkJICwKICAgIFhXTUhpbnRzKgkJICwKICAgIFhD
bGFzc0hpbnQqCQkgCgopOwoKZXh0ZXJuIHZvaWQgWFNldFdNU2l6ZUhpbnRzKAoKICAgIERpc3Bs
YXkqCQkgLAogICAgV2luZG93CQkgLAogICAgWFNpemVIaW50cyoJCSAsCiAgICBBdG9tCQkgCgop
OwoKZXh0ZXJuIGludCBYU2V0UmVnaW9uKAoKICAgIERpc3BsYXkqCQkgLAogICAgR0MJCQkgLAog
ICAgUmVnaW9uCQkgCgopOwoKZXh0ZXJuIHZvaWQgWFNldFN0YW5kYXJkQ29sb3JtYXAoCgogICAg
RGlzcGxheSoJCSAsCiAgICBXaW5kb3cJCSAsCiAgICBYU3RhbmRhcmRDb2xvcm1hcCoJICwKICAg
IEF0b20JCSAKCik7CgpleHRlcm4gaW50IFhTZXRab29tSGludHMoCgogICAgRGlzcGxheSoJCSAs
CiAgICBXaW5kb3cJCSAsCiAgICBYU2l6ZUhpbnRzKgkJIAoKKTsKCmV4dGVybiBpbnQgWFNocmlu
a1JlZ2lvbigKCiAgICBSZWdpb24JCSAsCiAgICBpbnQJCQkgLAogICAgaW50CQkJIAoKKTsKCmV4
dGVybiBpbnQgIFhTdHJpbmdMaXN0VG9UZXh0UHJvcGVydHkoCgogICAgY2hhcioqCQkgLAogICAg
aW50CQkJICwKICAgIFhUZXh0UHJvcGVydHkqCSAKCik7CgpleHRlcm4gaW50IFhTdWJ0cmFjdFJl
Z2lvbigKCiAgICBSZWdpb24JCSAsCiAgICBSZWdpb24JCSAsCiAgICBSZWdpb24JCSAKCik7Cgpl
eHRlcm4gaW50IFhtYlRleHRMaXN0VG9UZXh0UHJvcGVydHkoCgogICAgRGlzcGxheSoJCSAsCiAg
ICBjaGFyKioJCSAsCiAgICBpbnQJCQkgLAogICAgWElDQ0VuY29kaW5nU3R5bGUJICwKICAgIFhU
ZXh0UHJvcGVydHkqCSAKCik7CgpleHRlcm4gaW50IFh3Y1RleHRMaXN0VG9UZXh0UHJvcGVydHko
CgogICAgRGlzcGxheSoJCSAsCiAgICB3Y2hhcl90KioJCSAsCiAgICBpbnQJCQkgLAogICAgWElD
Q0VuY29kaW5nU3R5bGUJICwKICAgIFhUZXh0UHJvcGVydHkqCSAKCik7CgpleHRlcm4gdm9pZCBY
d2NGcmVlU3RyaW5nTGlzdCgKCiAgICB3Y2hhcl90KioJCSAKCik7CgpleHRlcm4gaW50ICBYVGV4
dFByb3BlcnR5VG9TdHJpbmdMaXN0KAoKICAgIFhUZXh0UHJvcGVydHkqCSAsCiAgICBjaGFyKioq
CQkgLAogICAgaW50KgkJIAoKKTsKCmV4dGVybiBpbnQgWG1iVGV4dFByb3BlcnR5VG9UZXh0TGlz
dCgKCiAgICBEaXNwbGF5KgkJICwKICAgIFhUZXh0UHJvcGVydHkqCSAsCiAgICBjaGFyKioqCQkg
LAogICAgaW50KgkJIAoKKTsKCmV4dGVybiBpbnQgWHdjVGV4dFByb3BlcnR5VG9UZXh0TGlzdCgK
CiAgICBEaXNwbGF5KgkJICwKICAgIFhUZXh0UHJvcGVydHkqCSAsCiAgICB3Y2hhcl90KioqCQkg
LAogICAgaW50KgkJIAoKKTsKCmV4dGVybiBpbnQgWFVuaW9uUmVjdFdpdGhSZWdpb24oCgogICAg
WFJlY3RhbmdsZSoJCSAsCiAgICBSZWdpb24JCSAsCiAgICBSZWdpb24JCSAKCik7CgpleHRlcm4g
aW50IFhVbmlvblJlZ2lvbigKCiAgICBSZWdpb24JCSAsCiAgICBSZWdpb24JCSAsCiAgICBSZWdp
b24JCSAKCik7CgpleHRlcm4gaW50IFhXTUdlb21ldHJ5KAoKICAgIERpc3BsYXkqCQkgLAogICAg
aW50CQkJICwKICAgIGNvbnN0ICBjaGFyKgkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICB1bnNp
Z25lZCBpbnQJICwKICAgIFhTaXplSGludHMqCQkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAs
CiAgICBpbnQqCQkgLAogICAgaW50KgkJICwKICAgIGludCoJCSAKCik7CgpleHRlcm4gaW50IFhY
b3JSZWdpb24oCgogICAgUmVnaW9uCQkgLAogICAgUmVnaW9uCQkgLAogICAgUmVnaW9uCQkgCgop
OwoKfSAKCgojIDU4ICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL0ludHJpbnNpYy5oIiAyCgojIDEg
Ii91c3IvWDExUjYvaW5jbHVkZS9YMTEvWHJlc291cmNlLmgiIDEKIAogCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKCgoKCgoKCgpleHRl
cm4gIkMiIHsgCgogCgoKCgoKZXh0ZXJuIGNoYXIgKlhwZXJtYWxsb2MoCgogICAgdW5zaWduZWQg
aW50CSAKCik7CgogCgoKCgoKdHlwZWRlZiBpbnQgICAgIFhybVF1YXJrLCAqWHJtUXVhcmtMaXN0
OwoKCnR5cGVkZWYgY2hhciAqWHJtU3RyaW5nOwoKCiAKZXh0ZXJuIFhybVF1YXJrIFhybVN0cmlu
Z1RvUXVhcmsoCgogICAgY29uc3QgIGNoYXIqIAkgCgopOwoKZXh0ZXJuIFhybVF1YXJrIFhybVBl
cm1TdHJpbmdUb1F1YXJrKAoKICAgIGNvbnN0ICBjaGFyKiAJIAoKKTsKCiAKZXh0ZXJuIFhybVN0
cmluZyBYcm1RdWFya1RvU3RyaW5nKAoKICAgIFhybVF1YXJrIAkJIAoKKTsKCmV4dGVybiBYcm1R
dWFyayBYcm1VbmlxdWVRdWFyaygKCiAgICB2b2lkCgopOwoKCgoKIAoKCgoKCnR5cGVkZWYgZW51
bSB7WHJtQmluZFRpZ2h0bHksIFhybUJpbmRMb29zZWx5fSBYcm1CaW5kaW5nLCAqWHJtQmluZGlu
Z0xpc3Q7CgpleHRlcm4gdm9pZCBYcm1TdHJpbmdUb1F1YXJrTGlzdCgKCiAgICBjb25zdCAgY2hh
cioJICwKICAgIFhybVF1YXJrTGlzdAkgCgopOwoKZXh0ZXJuIHZvaWQgWHJtU3RyaW5nVG9CaW5k
aW5nUXVhcmtMaXN0KAoKICAgIGNvbnN0ICBjaGFyKgkgLAogICAgWHJtQmluZGluZ0xpc3QJICwK
ICAgIFhybVF1YXJrTGlzdAkgCgopOwoKIAoKCgoKCnR5cGVkZWYgWHJtUXVhcmsgICAgIFhybU5h
bWU7CnR5cGVkZWYgWHJtUXVhcmtMaXN0IFhybU5hbWVMaXN0OwoKCgoKdHlwZWRlZiBYcm1RdWFy
ayAgICAgWHJtQ2xhc3M7CnR5cGVkZWYgWHJtUXVhcmtMaXN0IFhybUNsYXNzTGlzdDsKCgoKCgoK
IAoKCgoKCnR5cGVkZWYgWHJtUXVhcmsgICAgIFhybVJlcHJlc2VudGF0aW9uOwoKCgp0eXBlZGVm
IHN0cnVjdCB7CiAgICB1bnNpZ25lZCBpbnQgICAgc2l6ZTsKICAgIFhQb2ludGVyCSAgICBhZGRy
Owp9IFhybVZhbHVlLCAqWHJtVmFsdWVQdHI7CgoKIAoKCgoKCnR5cGVkZWYgc3RydWN0IF9Ycm1I
YXNoQnVja2V0UmVjICpYcm1IYXNoQnVja2V0Owp0eXBlZGVmIFhybUhhc2hCdWNrZXQgKlhybUhh
c2hUYWJsZTsKdHlwZWRlZiBYcm1IYXNoVGFibGUgWHJtU2VhcmNoTGlzdFtdOwp0eXBlZGVmIHN0
cnVjdCBfWHJtSGFzaEJ1Y2tldFJlYyAqWHJtRGF0YWJhc2U7CgoKZXh0ZXJuIHZvaWQgWHJtRGVz
dHJveURhdGFiYXNlKAoKICAgIFhybURhdGFiYXNlCQkgICAgIAoKKTsKCmV4dGVybiB2b2lkIFhy
bVFQdXRSZXNvdXJjZSgKCiAgICBYcm1EYXRhYmFzZSoJICwKICAgIFhybUJpbmRpbmdMaXN0CSAs
CiAgICBYcm1RdWFya0xpc3QJICwKICAgIFhybVJlcHJlc2VudGF0aW9uCSAsCiAgICBYcm1WYWx1
ZSoJCSAKCik7CgpleHRlcm4gdm9pZCBYcm1QdXRSZXNvdXJjZSgKCiAgICBYcm1EYXRhYmFzZSoJ
ICwKICAgIGNvbnN0ICBjaGFyKgkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBYcm1WYWx1ZSoJ
CSAKCik7CgpleHRlcm4gdm9pZCBYcm1RUHV0U3RyaW5nUmVzb3VyY2UoCgogICAgWHJtRGF0YWJh
c2UqCSAsCiAgICBYcm1CaW5kaW5nTGlzdCAgICAgICAsCiAgICBYcm1RdWFya0xpc3QJICwKICAg
IGNvbnN0ICBjaGFyKgkgCgopOwoKZXh0ZXJuIHZvaWQgWHJtUHV0U3RyaW5nUmVzb3VyY2UoCgog
ICAgWHJtRGF0YWJhc2UqCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAgIGNvbnN0ICBjaGFyKgkg
CgopOwoKZXh0ZXJuIHZvaWQgWHJtUHV0TGluZVJlc291cmNlKAoKICAgIFhybURhdGFiYXNlKgkg
LAogICAgY29uc3QgIGNoYXIqCSAKCik7CgpleHRlcm4gaW50ICBYcm1RR2V0UmVzb3VyY2UoCgog
ICAgWHJtRGF0YWJhc2UJCSAsCiAgICBYcm1OYW1lTGlzdAkJICwKICAgIFhybUNsYXNzTGlzdAkg
LAogICAgWHJtUmVwcmVzZW50YXRpb24qCSAsCiAgICBYcm1WYWx1ZSoJCSAKCik7CgpleHRlcm4g
aW50ICBYcm1HZXRSZXNvdXJjZSgKCiAgICBYcm1EYXRhYmFzZQkJICwKICAgIGNvbnN0ICBjaGFy
KgkgLAogICAgY29uc3QgIGNoYXIqCSAsCiAgICBjaGFyKioJCSAsCiAgICBYcm1WYWx1ZSoJCSAK
Cik7CgpleHRlcm4gaW50ICBYcm1RR2V0U2VhcmNoTGlzdCgKCiAgICBYcm1EYXRhYmFzZQkJICwK
ICAgIFhybU5hbWVMaXN0CQkgLAogICAgWHJtQ2xhc3NMaXN0CSAsCiAgICBYcm1TZWFyY2hMaXN0
CSAsCiAgICBpbnQJCQkgCgopOwoKZXh0ZXJuIGludCAgWHJtUUdldFNlYXJjaFJlc291cmNlKAoK
ICAgIFhybVNlYXJjaExpc3QJICwKICAgIFhybU5hbWUJCSAsCiAgICBYcm1DbGFzcwkJICwKICAg
IFhybVJlcHJlc2VudGF0aW9uKgkgLAogICAgWHJtVmFsdWUqCQkgCgopOwoKIAoKCgoKCmV4dGVy
biB2b2lkIFhybVNldERhdGFiYXNlKAoKICAgIERpc3BsYXkqCQkgLAogICAgWHJtRGF0YWJhc2UJ
CSAKCik7CgpleHRlcm4gWHJtRGF0YWJhc2UgWHJtR2V0RGF0YWJhc2UoCgogICAgRGlzcGxheSoJ
CSAKCik7CgpleHRlcm4gWHJtRGF0YWJhc2UgWHJtR2V0RmlsZURhdGFiYXNlKAoKICAgIGNvbnN0
ICBjaGFyKgkgCgopOwoKZXh0ZXJuIGludCAgWHJtQ29tYmluZUZpbGVEYXRhYmFzZSgKCiAgICBj
b25zdCAgY2hhciogCSAsCiAgICBYcm1EYXRhYmFzZSoJICwKICAgIGludCAJCSAKCik7CgpleHRl
cm4gWHJtRGF0YWJhc2UgWHJtR2V0U3RyaW5nRGF0YWJhc2UoCgogICAgY29uc3QgIGNoYXIqCSAg
ICAKCik7CgpleHRlcm4gdm9pZCBYcm1QdXRGaWxlRGF0YWJhc2UoCgogICAgWHJtRGF0YWJhc2UJ
CSAsCiAgICBjb25zdCAgY2hhcioJIAoKKTsKCmV4dGVybiB2b2lkIFhybU1lcmdlRGF0YWJhc2Vz
KAoKICAgIFhybURhdGFiYXNlCQkgLAogICAgWHJtRGF0YWJhc2UqCSAKCik7CgpleHRlcm4gdm9p
ZCBYcm1Db21iaW5lRGF0YWJhc2UoCgogICAgWHJtRGF0YWJhc2UJCSAsCiAgICBYcm1EYXRhYmFz
ZSoJICwKICAgIGludCAJCSAKCik7CgoKCgpleHRlcm4gaW50ICBYcm1FbnVtZXJhdGVEYXRhYmFz
ZSgKCiAgICBYcm1EYXRhYmFzZQkJICwKICAgIFhybU5hbWVMaXN0CQkgLAogICAgWHJtQ2xhc3NM
aXN0CSAsCiAgICBpbnQJCQkgLAogICAgaW50ICAoKikoCgoJICAgICBYcm1EYXRhYmFzZSoJICwK
CSAgICAgWHJtQmluZGluZ0xpc3QJICwKCSAgICAgWHJtUXVhcmtMaXN0CSAsCgkgICAgIFhybVJl
cHJlc2VudGF0aW9uKgkgLAoJICAgICBYcm1WYWx1ZSoJCSAsCgkgICAgIFhQb2ludGVyCQkgCgoJ
ICAgICApCQkgLAogICAgWFBvaW50ZXIJCSAKCik7CgpleHRlcm4gY2hhciAqWHJtTG9jYWxlT2ZE
YXRhYmFzZSgKCiAgICBYcm1EYXRhYmFzZSAJIAoKKTsKCgogCgoKCgoKdHlwZWRlZiBlbnVtIHsK
ICAgIFhybW9wdGlvbk5vQXJnLAkgCiAgICBYcm1vcHRpb25Jc0FyZywgICAgICAKICAgIFhybW9w
dGlvblN0aWNreUFyZywgIAogICAgWHJtb3B0aW9uU2VwQXJnLCAgICAgCiAgICBYcm1vcHRpb25S
ZXNBcmcsCSAKICAgIFhybW9wdGlvblNraXBBcmcsICAgIAogICAgWHJtb3B0aW9uU2tpcExpbmUs
ICAgCiAgICBYcm1vcHRpb25Ta2lwTkFyZ3MJIAoKfSBYcm1PcHRpb25LaW5kOwoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgY2hhcgkgICAgKm9wdGlvbjsJICAgICAKICAgIGNoYXIJICAgICpzcGVjaWZp
ZXI7ICAgICAgCiAgICBYcm1PcHRpb25LaW5kICAgYXJnS2luZDsJICAgICAKICAgIFhQb2ludGVy
CSAgICB2YWx1ZTsJICAgICAKfSBYcm1PcHRpb25EZXNjUmVjLCAqWHJtT3B0aW9uRGVzY0xpc3Q7
CgoKZXh0ZXJuIHZvaWQgWHJtUGFyc2VDb21tYW5kKAoKICAgIFhybURhdGFiYXNlKgkgLAogICAg
WHJtT3B0aW9uRGVzY0xpc3QJICwKICAgIGludAkJCSAsCiAgICBjb25zdCAgY2hhcioJICwKICAg
IGludCoJCSAsCiAgICBjaGFyKioJCSAJCSAgICAgCgopOwoKfSAKCgogCiMgNTkgIi91c3IvWDEx
UjYvaW5jbHVkZS9YMTEvSW50cmluc2ljLmgiIDIKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYg
Y2hhciAqU3RyaW5nOwoKCgogCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgp0eXBlZGVmIHN0cnVjdCBfV2lkZ2V0UmVjICpXaWRnZXQ7CnR5cGVkZWYgV2lkZ2V0ICpX
aWRnZXRMaXN0Owp0eXBlZGVmIHN0cnVjdCBfV2lkZ2V0Q2xhc3NSZWMgKldpZGdldENsYXNzOwp0
eXBlZGVmIHN0cnVjdCBfQ29tcG9zaXRlUmVjICpDb21wb3NpdGVXaWRnZXQ7CnR5cGVkZWYgc3Ry
dWN0IF9YdEFjdGlvbnNSZWMgKlh0QWN0aW9uTGlzdDsKdHlwZWRlZiBzdHJ1Y3QgX1h0RXZlbnRS
ZWMgKlh0RXZlbnRUYWJsZTsKCnR5cGVkZWYgc3RydWN0IF9YdEFwcFN0cnVjdCAqWHRBcHBDb250
ZXh0Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcJWHRWYWx1ZU1hc2s7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZwlYdEludGVydmFsSWQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZwlYdElucHV0SWQ7CnR5cGVk
ZWYgdW5zaWduZWQgbG9uZwlYdFdvcmtQcm9jSWQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZwlYdFNp
Z25hbElkOwp0eXBlZGVmIHVuc2lnbmVkIGludAlYdEdlb21ldHJ5TWFzazsKdHlwZWRlZiB1bnNp
Z25lZCBsb25nCVh0R0NNYXNrOyAgICAKdHlwZWRlZiB1bnNpZ25lZCBsb25nCVBpeGVsOwkgICAg
IAp0eXBlZGVmIGludAkJWHRDYWNoZVR5cGU7CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKdHlwZWRlZiBjaGFyCQlCb29sZWFuOwp0eXBlZGVmIGxvbmcJCVh0QXJnVmFsOwp0eXBlZGVm
IHVuc2lnbmVkIGNoYXIJWHRFbnVtOwoKCnR5cGVkZWYgdW5zaWduZWQgaW50CUNhcmRpbmFsOwp0
eXBlZGVmIHVuc2lnbmVkIHNob3J0CURpbWVuc2lvbjsgICAKdHlwZWRlZiBzaG9ydAkJUG9zaXRp
b247ICAgIAoKCnR5cGVkZWYgdm9pZCoJCVh0UG9pbnRlcjsKCgoKCiAKIAp0eXBlZGVmIFh0UG9p
bnRlcglPcGFxdWU7CgojIDEgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEvQ29yZS5oIiAxCiAKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBl
ZGVmIHN0cnVjdCBfV2lkZ2V0Q2xhc3NSZWMgKkNvcmVXaWRnZXRDbGFzczsKdHlwZWRlZiBzdHJ1
Y3QgX1dpZGdldFJlYyAqQ29yZVdpZGdldDsKZXh0ZXJuICBXaWRnZXRDbGFzcyBjb3JlV2lkZ2V0
Q2xhc3M7CgoKZXh0ZXJuICBXaWRnZXRDbGFzcyB3aWRnZXRDbGFzczsKCgoKCiAKIyAxOTIgIi91
c3IvWDExUjYvaW5jbHVkZS9YMTEvSW50cmluc2ljLmgiIDIKCiMgMSAiL3Vzci9YMTFSNi9pbmNs
dWRlL1gxMS9Db21wb3NpdGUuaCIgMQogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0NvbXBvc2l0ZUNsYXNzUmVjICpD
b21wb3NpdGVXaWRnZXRDbGFzczsKCnR5cGVkZWYgQ2FyZGluYWwgKCpYdE9yZGVyUHJvYykoCgog
ICAgV2lkZ2V0IAkgCgopOwoKZXh0ZXJuICJDIiB7IAoKZXh0ZXJuIHZvaWQgWHRNYW5hZ2VDaGls
ZHJlbigKCiAgICBXaWRnZXRMaXN0IAkJICwKICAgIENhcmRpbmFsIAkJIAoKKTsKCmV4dGVybiB2
b2lkIFh0TWFuYWdlQ2hpbGQoCgogICAgV2lkZ2V0IAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0VW5t
YW5hZ2VDaGlsZHJlbigKCiAgICBXaWRnZXRMaXN0IAkJICwKICAgIENhcmRpbmFsIAkJIAoKKTsK
CmV4dGVybiB2b2lkIFh0VW5tYW5hZ2VDaGlsZCgKCiAgICBXaWRnZXQgCQkgCgopOwoKdHlwZWRl
ZiB2b2lkICgqWHREb0NoYW5nZVByb2MpKAoKICAgIFdpZGdldAkJICwKICAgIFdpZGdldExpc3QJ
CSAsCiAgICBDYXJkaW5hbCAqCQkgLAogICAgV2lkZ2V0TGlzdAkJICwKICAgIENhcmRpbmFsICoJ
CSAsCiAgICBYdFBvaW50ZXIJCSAKCik7CgpleHRlcm4gdm9pZCBYdENoYW5nZU1hbmFnZWRTZXQo
CgogICAgV2lkZ2V0TGlzdAkJICwKICAgIENhcmRpbmFsCQkgLAogICAgWHREb0NoYW5nZVByb2MJ
ICwKICAgIFh0UG9pbnRlcgkJICwKICAgIFdpZGdldExpc3QJCSAsCiAgICBDYXJkaW5hbAkJIAoK
KTsKCn0gCgoKZXh0ZXJuICBXaWRnZXRDbGFzcyBjb21wb3NpdGVXaWRnZXRDbGFzczsKCgoKIAoj
IDE5MyAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9JbnRyaW5zaWMuaCIgMgoKIyAxICIvdXNyL1gx
MVI2L2luY2x1ZGUvWDExL0NvbnN0cmFpbnQuaCIgMQogCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9Db25zdHJhaW50
Q2xhc3NSZWMgKkNvbnN0cmFpbnRXaWRnZXRDbGFzczsKCgpleHRlcm4gIFdpZGdldENsYXNzIGNv
bnN0cmFpbnRXaWRnZXRDbGFzczsKCgoKIAojIDE5NCAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9J
bnRyaW5zaWMuaCIgMgoKIyAxICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL09iamVjdC5oIiAxCiAK
IAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgX09iamVjdFJlYyAqT2JqZWN0Owp0eXBlZGVmIHN0cnVjdCBfT2JqZWN0Q2xh
c3NSZWMgKk9iamVjdENsYXNzOwoKCmV4dGVybiAgV2lkZ2V0Q2xhc3Mgb2JqZWN0Q2xhc3M7CgoK
IAojIDE5NSAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9JbnRyaW5zaWMuaCIgMgoKIyAxICIvdXNy
L1gxMVI2L2luY2x1ZGUvWDExL1JlY3RPYmouaCIgMQogCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9SZWN0T2JqUmVj
ICpSZWN0T2JqOwp0eXBlZGVmIHN0cnVjdCBfUmVjdE9iakNsYXNzUmVjICpSZWN0T2JqQ2xhc3M7
CgoKZXh0ZXJuICBXaWRnZXRDbGFzcyByZWN0T2JqQ2xhc3M7CgoKIAojIDE5NiAiL3Vzci9YMTFS
Ni9pbmNsdWRlL1gxMS9JbnRyaW5zaWMuaCIgMgoKCnR5cGVkZWYgc3RydWN0IF9UcmFuc2xhdGlv
bkRhdGEgKlh0VHJhbnNsYXRpb25zOwp0eXBlZGVmIHN0cnVjdCBfVHJhbnNsYXRpb25EYXRhICpY
dEFjY2VsZXJhdG9yczsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgTW9kaWZpZXJzOwoKdHlwZWRlZiB2
b2lkICgqWHRBY3Rpb25Qcm9jKSgKCiAgICBXaWRnZXQgCQkgLAogICAgWEV2ZW50KgkJICwKICAg
IFN0cmluZyoJCSAsCiAgICBDYXJkaW5hbCoJCSAKCik7Cgp0eXBlZGVmIFh0QWN0aW9uUHJvYyog
WHRCb3VuZEFjdGlvbnM7Cgp0eXBlZGVmIHN0cnVjdCBfWHRBY3Rpb25zUmVjewogICAgU3RyaW5n
CSBzdHJpbmc7CiAgICBYdEFjdGlvblByb2MgcHJvYzsKfSBYdEFjdGlvbnNSZWM7Cgp0eXBlZGVm
IGVudW0gewogCiAKICAgIFh0QWRkcmVzcywJCSAKICAgIFh0QmFzZU9mZnNldCwJIAogICAgWHRJ
bW1lZGlhdGUsCSAKICAgIFh0UmVzb3VyY2VTdHJpbmcsCSAKICAgIFh0UmVzb3VyY2VRdWFyaywJ
IAogICAgWHRXaWRnZXRCYXNlT2Zmc2V0LAkgCiAgICBYdFByb2NlZHVyZUFyZwkgCn0gWHRBZGRy
ZXNzTW9kZTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFh0QWRkcmVzc01vZGUgICBhZGRyZXNzX21v
ZGU7CiAgICBYdFBvaW50ZXIJICAgIGFkZHJlc3NfaWQ7CiAgICBDYXJkaW5hbAkgICAgc2l6ZTsK
fSBYdENvbnZlcnRBcmdSZWMsICpYdENvbnZlcnRBcmdMaXN0OwoKdHlwZWRlZiB2b2lkICgqWHRD
b252ZXJ0QXJnUHJvYykoCgogICAgV2lkZ2V0IAkJICwKICAgIENhcmRpbmFsKgkJICwKICAgIFhy
bVZhbHVlKgkJIAoKKTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFh0R2VvbWV0cnlNYXNrIHJlcXVl
c3RfbW9kZTsKICAgIFBvc2l0aW9uIHgsIHk7CiAgICBEaW1lbnNpb24gd2lkdGgsIGhlaWdodCwg
Ym9yZGVyX3dpZHRoOwogICAgV2lkZ2V0IHNpYmxpbmc7CiAgICBpbnQgc3RhY2tfbW9kZTsgICAg
Cn0gWHRXaWRnZXRHZW9tZXRyeTsKCiAKCgogCgoKdHlwZWRlZiB2b2lkICgqWHRDb252ZXJ0ZXIp
KCAgCgogICAgWHJtVmFsdWUqCQkgLAogICAgQ2FyZGluYWwqCQkgLAogICAgWHJtVmFsdWUqCQkg
LAogICAgWHJtVmFsdWUqCQkgCgopOwoKdHlwZWRlZiBCb29sZWFuICgqWHRUeXBlQ29udmVydGVy
KSgKCiAgICBEaXNwbGF5KgkJICwKICAgIFhybVZhbHVlKgkJICwKICAgIENhcmRpbmFsKgkJICwK
ICAgIFhybVZhbHVlKgkJICwKICAgIFhybVZhbHVlKgkJICwKICAgIFh0UG9pbnRlcioJCSAKCik7
Cgp0eXBlZGVmIHZvaWQgKCpYdERlc3RydWN0b3IpKAoKICAgIFh0QXBwQ29udGV4dAkgLAogICAg
WHJtVmFsdWUqCQkgLAogICAgWHRQb2ludGVyIAkJICwKICAgIFhybVZhbHVlKgkJICwKICAgIENh
cmRpbmFsKgkJIAoKKTsKCnR5cGVkZWYgT3BhcXVlIFh0Q2FjaGVSZWY7Cgp0eXBlZGVmIE9wYXF1
ZSBYdEFjdGlvbkhvb2tJZDsKCnR5cGVkZWYgdm9pZCAoKlh0QWN0aW9uSG9va1Byb2MpKAoKICAg
IFdpZGdldAkJICwKICAgIFh0UG9pbnRlcgkJICwKICAgIFN0cmluZwkJICwKICAgIFhFdmVudCoJ
CSAsCiAgICBTdHJpbmcqCQkgLAogICAgQ2FyZGluYWwqCQkgCgopOwoKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIFh0QmxvY2tIb29rSWQ7Cgp0eXBlZGVmIHZvaWQgKCpYdEJsb2NrSG9va1Byb2MpKAoK
ICAgIFh0UG9pbnRlcgkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlh0S2V5UHJvYykoCgogICAgRGlz
cGxheSoJCSAsCiAgICB1bnNpZ25lZCBpbnQgIAkJICwKICAgIE1vZGlmaWVycwkJICwKICAgIE1v
ZGlmaWVycyoJCSAsCiAgICBLZXlTeW0qCQkgCgopOwoKdHlwZWRlZiB2b2lkICgqWHRDYXNlUHJv
YykoCgogICAgRGlzcGxheSoJCSAsCiAgICBLZXlTeW0JCSAsCiAgICBLZXlTeW0qCQkgLAogICAg
S2V5U3ltKgkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlh0RXZlbnRIYW5kbGVyKSgKCiAgICBXaWRn
ZXQgCQkgLAogICAgWHRQb2ludGVyIAkJICwKICAgIFhFdmVudCoJCSAsCiAgICBCb29sZWFuKgkJ
IAoKKTsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEV2ZW50TWFzazsKCnR5cGVkZWYgZW51bSB7WHRM
aXN0SGVhZCwgWHRMaXN0VGFpbCB9IFh0TGlzdFBvc2l0aW9uOwoKdHlwZWRlZiB1bnNpZ25lZCBs
b25nCVh0SW5wdXRNYXNrOwoKCgoKCnR5cGVkZWYgdm9pZCAoKlh0VGltZXJDYWxsYmFja1Byb2Mp
KAoKICAgIFh0UG9pbnRlciAJCSAsCiAgICBYdEludGVydmFsSWQqCSAKCik7Cgp0eXBlZGVmIHZv
aWQgKCpYdElucHV0Q2FsbGJhY2tQcm9jKSgKCiAgICBYdFBvaW50ZXIgCQkgLAogICAgaW50KgkJ
ICwKICAgIFh0SW5wdXRJZCoJCSAKCik7Cgp0eXBlZGVmIHZvaWQgKCpYdFNpZ25hbENhbGxiYWNr
UHJvYykoCgogICAgWHRQb2ludGVyCQkgLAogICAgWHRTaWduYWxJZCoJCSAKCik7Cgp0eXBlZGVm
IHN0cnVjdCB7CiAgICBTdHJpbmcJbmFtZTsKICAgIFh0QXJnVmFsCXZhbHVlOwp9IEFyZywgKkFy
Z0xpc3Q7Cgp0eXBlZGVmIFh0UG9pbnRlcglYdFZhckFyZ3NMaXN0OwoKdHlwZWRlZiB2b2lkICgq
WHRDYWxsYmFja1Byb2MpKAoKICAgIFdpZGdldCAJCSAsCiAgICBYdFBvaW50ZXIgCQkgLAkgCiAg
ICBYdFBvaW50ZXIgCQkgCSAKCik7Cgp0eXBlZGVmIHN0cnVjdCBfWHRDYWxsYmFja1JlYyB7CiAg
ICBYdENhbGxiYWNrUHJvYyAgY2FsbGJhY2s7CiAgICBYdFBvaW50ZXIJICAgIGNsb3N1cmU7Cn0g
WHRDYWxsYmFja1JlYywgKlh0Q2FsbGJhY2tMaXN0OwoKdHlwZWRlZiBlbnVtIHsKCVh0Q2FsbGJh
Y2tOb0xpc3QsCglYdENhbGxiYWNrSGFzTm9uZSwKCVh0Q2FsbGJhY2tIYXNTb21lCn0gWHRDYWxs
YmFja1N0YXR1czsKCnR5cGVkZWYgZW51bSAgewogICAgWHRHZW9tZXRyeVllcywJICAgCiAgICBY
dEdlb21ldHJ5Tm8sCSAgIAogICAgWHRHZW9tZXRyeUFsbW9zdCwJICAgCiAgICBYdEdlb21ldHJ5
RG9uZQkgICAKfSBYdEdlb21ldHJ5UmVzdWx0OwoKdHlwZWRlZiBlbnVtIHtYdEdyYWJOb25lLCBY
dEdyYWJOb25leGNsdXNpdmUsIFh0R3JhYkV4Y2x1c2l2ZX0gWHRHcmFiS2luZDsKCnR5cGVkZWYg
c3RydWN0IHsKICAgIFdpZGdldCAgc2hlbGxfd2lkZ2V0OwogICAgV2lkZ2V0ICBlbmFibGVfd2lk
Z2V0Owp9IFh0UG9wZG93bklEUmVjLCAqWHRQb3Bkb3duSUQ7Cgp0eXBlZGVmIHN0cnVjdCBfWHRS
ZXNvdXJjZSB7CiAgICBTdHJpbmcJcmVzb3VyY2VfbmFtZTsJIAogICAgU3RyaW5nCXJlc291cmNl
X2NsYXNzOwkgCiAgICBTdHJpbmcJcmVzb3VyY2VfdHlwZTsJIAogICAgQ2FyZGluYWwJcmVzb3Vy
Y2Vfc2l6ZTsJIAogICAgQ2FyZGluYWwJcmVzb3VyY2Vfb2Zmc2V0OyAKICAgIFN0cmluZwlkZWZh
dWx0X3R5cGU7CSAKICAgIFh0UG9pbnRlcglkZWZhdWx0X2FkZHI7CSAKfSBYdFJlc291cmNlLCAq
WHRSZXNvdXJjZUxpc3Q7Cgp0eXBlZGVmIHZvaWQgKCpYdFJlc291cmNlRGVmYXVsdFByb2MpKAoK
ICAgIFdpZGdldAkgLAogICAgaW50CQkgLAogICAgWHJtVmFsdWUqCSAKCik7Cgp0eXBlZGVmIFN0
cmluZyAoKlh0TGFuZ3VhZ2VQcm9jKSgKCiAgICBEaXNwbGF5KgkgLAogICAgU3RyaW5nCSAsCiAg
ICBYdFBvaW50ZXIJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlh0RXJyb3JNc2dIYW5kbGVyKSgKCiAg
ICBTdHJpbmcgCQkgLAogICAgU3RyaW5nCQkgLAogICAgU3RyaW5nCQkgLAogICAgU3RyaW5nCQkg
LAogICAgU3RyaW5nKgkJICwKICAgIENhcmRpbmFsKgkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlh0
RXJyb3JIYW5kbGVyKSgKCiAgU3RyaW5nCQkgCgopOwoKdHlwZWRlZiB2b2lkICgqWHRDcmVhdGVQ
b3B1cENoaWxkUHJvYykoCgogICAgV2lkZ2V0CSAKCik7Cgp0eXBlZGVmIEJvb2xlYW4gKCpYdFdv
cmtQcm9jKSgKCiAgICBYdFBvaW50ZXIgCQkgCSAKCik7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBj
aGFyIG1hdGNoOwogICAgU3RyaW5nIHN1YnN0aXR1dGlvbjsKfSBTdWJzdGl0dXRpb25SZWMsICpT
dWJzdGl0dXRpb247Cgp0eXBlZGVmIEJvb2xlYW4gKCpYdEZpbGVQcmVkaWNhdGUpKAoKICAgU3Ry
aW5nICAKCik7Cgp0eXBlZGVmIFh0UG9pbnRlciBYdFJlcXVlc3RJZDsKCnR5cGVkZWYgQm9vbGVh
biAoKlh0Q29udmVydFNlbGVjdGlvblByb2MpKAoKICAgIFdpZGdldCAJCSAsCiAgICBBdG9tKgkJ
ICwKICAgIEF0b20qCQkgLAogICAgQXRvbSoJCSAsCiAgICBYdFBvaW50ZXIqCQkgLAogICAgdW5z
aWduZWQgbG9uZyoJICwKICAgIGludCoJCSAKCik7Cgp0eXBlZGVmIHZvaWQgKCpYdExvc2VTZWxl
Y3Rpb25Qcm9jKSgKCiAgICBXaWRnZXQgCQkgLAogICAgQXRvbSoJCSAKCik7Cgp0eXBlZGVmIHZv
aWQgKCpYdFNlbGVjdGlvbkRvbmVQcm9jKSgKCiAgICBXaWRnZXQgCQkgLAogICAgQXRvbSoJCSAs
CiAgICBBdG9tKgkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlh0U2VsZWN0aW9uQ2FsbGJhY2tQcm9j
KSgKCiAgICBXaWRnZXQgCQkgLAogICAgWHRQb2ludGVyIAkJICwKICAgIEF0b20qCQkgLAogICAg
QXRvbSoJCSAsCiAgICBYdFBvaW50ZXIgCQkgLAogICAgdW5zaWduZWQgbG9uZyoJICwKICAgIGlu
dCoJCSAKCik7Cgp0eXBlZGVmIHZvaWQgKCpYdExvc2VTZWxlY3Rpb25JbmNyUHJvYykoCgogICAg
V2lkZ2V0IAkJICwKICAgIEF0b20qCQkgLAogICAgWHRQb2ludGVyIAkJIAoKKTsKCnR5cGVkZWYg
dm9pZCAoKlh0U2VsZWN0aW9uRG9uZUluY3JQcm9jKSgKCiAgICBXaWRnZXQgCQkgLAogICAgQXRv
bSoJCSAsCiAgICBBdG9tKgkJICwKICAgIFh0UmVxdWVzdElkKgkgLAogICAgWHRQb2ludGVyIAkJ
IAoKKTsKCnR5cGVkZWYgQm9vbGVhbiAoKlh0Q29udmVydFNlbGVjdGlvbkluY3JQcm9jKSgKCiAg
ICBXaWRnZXQgCQkgLAogICAgQXRvbSoJCSAsCiAgICBBdG9tKgkJICwKICAgIEF0b20qCQkgLAog
ICAgWHRQb2ludGVyKgkJICwKICAgIHVuc2lnbmVkIGxvbmcqCSAsCiAgICBpbnQqCQkgLAogICAg
dW5zaWduZWQgbG9uZyoJICwKICAgIFh0UG9pbnRlciAJCSAsCiAgICBYdFJlcXVlc3RJZCoJIAoK
KTsKCnR5cGVkZWYgdm9pZCAoKlh0Q2FuY2VsQ29udmVydFNlbGVjdGlvblByb2MpKAoKICAgIFdp
ZGdldCAJCSAsCiAgICBBdG9tKgkJICwKICAgIEF0b20qCQkgLAogICAgWHRSZXF1ZXN0SWQqCSAs
CiAgICBYdFBvaW50ZXIgCQkgCgopOwoKdHlwZWRlZiBCb29sZWFuICgqWHRFdmVudERpc3BhdGNo
UHJvYykoCgogICAgWEV2ZW50KgkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlh0RXh0ZW5zaW9uU2Vs
ZWN0UHJvYykoCgogICAgV2lkZ2V0CQkgLAogICAgaW50KgkJICwKICAgIFh0UG9pbnRlcioJCSAs
CiAgICBpbnQJCQkgLAogICAgWHRQb2ludGVyCQkgCgopOwoKIAoKCgoKCmV4dGVybiAiQyIgeyAK
CmV4dGVybiBCb29sZWFuIFh0Q29udmVydEFuZFN0b3JlKAoKICAgIFdpZGdldCAJCSAsCiAgICBj
b25zdCAgY2hhciogIAkgLAogICAgWHJtVmFsdWUqCQkgLAogICAgY29uc3QgIGNoYXIqICAJICwK
ICAgIFhybVZhbHVlKgkJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q2FsbENvbnZlcnRlcigKCiAg
ICBEaXNwbGF5KgkJICwKICAgIFh0VHlwZUNvbnZlcnRlciAJICwKICAgIFhybVZhbHVlUHRyIAkg
LAogICAgQ2FyZGluYWwgCQkgLAogICAgWHJtVmFsdWVQdHIgCSAsCiAgICBYcm1WYWx1ZSoJCSAs
CiAgICBYdENhY2hlUmVmKgkJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0RGlzcGF0Y2hFdmVudCgK
CiAgICBYRXZlbnQqIAkJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q2FsbEFjY2VwdEZvY3VzKAoK
ICAgIFdpZGdldCAJCSAsCiAgICBUaW1lKgkJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0UGVla0V2
ZW50KCAgCgogICAgWEV2ZW50KgkJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0QXBwUGVla0V2ZW50
KAoKICAgIFh0QXBwQ29udGV4dCAJICwKICAgIFhFdmVudCoJCSAKCik7CgpleHRlcm4gQm9vbGVh
biBYdElzU3ViY2xhc3MoCgogICAgV2lkZ2V0IAkJICwKICAgIFdpZGdldENsYXNzIAkgCgopOwoK
ZXh0ZXJuIEJvb2xlYW4gWHRJc09iamVjdCgKCiAgICBXaWRnZXQgCQkgCgopOwoKZXh0ZXJuIEJv
b2xlYW4gX1h0Q2hlY2tTdWJjbGFzc0ZsYWcoICAKCiAgICBXaWRnZXQJCSAsCiAgICB1bnNpZ25l
ZCBpbnQgCQkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gX1h0SXNTdWJjbGFzc09mKCAgCgogICAgV2lk
Z2V0CQkgLAogICAgV2lkZ2V0Q2xhc3MJCSAsCiAgICBXaWRnZXRDbGFzcwkJICwKICAgIHVuc2ln
bmVkIGludCAJCSAKCik7CgpleHRlcm4gQm9vbGVhbiBYdElzTWFuYWdlZCgKCiAgICBXaWRnZXQg
CQkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRJc1JlYWxpemVkKAoKICAgIFdpZGdldCAJCSAKCik7
CgpleHRlcm4gQm9vbGVhbiBYdElzU2Vuc2l0aXZlKAoKICAgIFdpZGdldCAJCSAKCik7CgpleHRl
cm4gQm9vbGVhbiBYdE93blNlbGVjdGlvbigKCiAgICBXaWRnZXQgCQkgLAogICAgQXRvbSAJCSAs
CiAgICBUaW1lIAkJICwKICAgIFh0Q29udmVydFNlbGVjdGlvblByb2MgICwKICAgIFh0TG9zZVNl
bGVjdGlvblByb2MJICwKICAgIFh0U2VsZWN0aW9uRG9uZVByb2MgIAoKKTsKCmV4dGVybiBCb29s
ZWFuIFh0T3duU2VsZWN0aW9uSW5jcmVtZW50YWwoCgogICAgV2lkZ2V0IAkJICwKICAgIEF0b20g
CQkgLAogICAgVGltZSAJCSAsCiAgICBYdENvbnZlcnRTZWxlY3Rpb25JbmNyUHJvYwkgLAogICAg
WHRMb3NlU2VsZWN0aW9uSW5jclByb2MJICwKICAgIFh0U2VsZWN0aW9uRG9uZUluY3JQcm9jCSAs
CiAgICBYdENhbmNlbENvbnZlcnRTZWxlY3Rpb25Qcm9jICAsCiAgICBYdFBvaW50ZXIgCQkgCgop
OwoKZXh0ZXJuIFh0R2VvbWV0cnlSZXN1bHQgWHRNYWtlUmVzaXplUmVxdWVzdCgKCiAgICBXaWRn
ZXQgCQkgLAogICAgdW5zaWduZWQgaW50IAkgLAogICAgdW5zaWduZWQgaW50IAkgLAogICAgRGlt
ZW5zaW9uKgkJICwKICAgIERpbWVuc2lvbioJCSAKCik7CgpleHRlcm4gdm9pZCBYdFRyYW5zbGF0
ZUNvb3JkcygKCiAgICBXaWRnZXQgCQkgLAogICAgaW50IAkJICwKICAgIGludCAJCSAsCiAgICBQ
b3NpdGlvbioJCSAsCiAgICBQb3NpdGlvbioJCSAKCik7CgpleHRlcm4gS2V5U3ltKiBYdEdldEtl
eXN5bVRhYmxlKAoKICAgIERpc3BsYXkqCQkgLAogICAgS2V5Q29kZSoJCSAsCiAgICBpbnQqCQkg
CgopOwoKZXh0ZXJuIHZvaWQgWHRLZXlzeW1Ub0tleWNvZGVMaXN0KAoKICAgIERpc3BsYXkqCQkg
LAogICAgS2V5U3ltIAkJICwKICAgIEtleUNvZGUqKgkJICwKICAgIENhcmRpbmFsKgkJIAoKKTsK
CmV4dGVybiB2b2lkIFh0U3RyaW5nQ29udmVyc2lvbldhcm5pbmcoICAKCiAgICBjb25zdCAgY2hh
ciogCSAsCiAgICBjb25zdCAgY2hhciogCSAKCik7CgpleHRlcm4gdm9pZCBYdERpc3BsYXlTdHJp
bmdDb252ZXJzaW9uV2FybmluZygKCiAgICBEaXNwbGF5KgkgCSAsCiAgICBjb25zdCAgY2hhciog
CSAsCiAgICBjb25zdCAgY2hhciogCSAKCik7CgoKZXh0ZXJuICBYdENvbnZlcnRBcmdSZWMgY29u
c3QgY29sb3JDb252ZXJ0QXJnc1tdOwpleHRlcm4gIFh0Q29udmVydEFyZ1JlYyBjb25zdCBzY3Jl
ZW5Db252ZXJ0QXJnW107CgoKCgoKZXh0ZXJuIHZvaWQgWHRBcHBBZGRDb252ZXJ0ZXIoICAKCiAg
ICBYdEFwcENvbnRleHQJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIGNvbnN0ICBjaGFyKiAJ
ICwKICAgIFh0Q29udmVydGVyIAkgLAogICAgWHRDb252ZXJ0QXJnTGlzdAkgLAogICAgQ2FyZGlu
YWwgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRBZGRDb252ZXJ0ZXIoICAKCiAgICBjb25zdCAgY2hh
ciogCSAsCiAgICBjb25zdCAgY2hhciogIAkgLAogICAgWHRDb252ZXJ0ZXIgCSAsCiAgICBYdENv
bnZlcnRBcmdMaXN0IAkgLAogICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRTZXRU
eXBlQ29udmVydGVyKAoKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBjb25zdCAgY2hhciogIAkg
LAogICAgWHRUeXBlQ29udmVydGVyIAkgLAogICAgWHRDb252ZXJ0QXJnTGlzdCAJICwKICAgIENh
cmRpbmFsIAkJICwKICAgIFh0Q2FjaGVUeXBlIAkgLAogICAgWHREZXN0cnVjdG9yIAkgCgopOwoK
ZXh0ZXJuIHZvaWQgWHRBcHBTZXRUeXBlQ29udmVydGVyKAoKICAgIFh0QXBwQ29udGV4dCAJICwK
ICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBjb25zdCAgY2hhciogIAkgLAogICAgWHRUeXBlQ29u
dmVydGVyIAkgLAogICAgWHRDb252ZXJ0QXJnTGlzdCAJICwKICAgIENhcmRpbmFsIAkJICwKICAg
IFh0Q2FjaGVUeXBlIAkgLAogICAgWHREZXN0cnVjdG9yIAkgCgopOwoKZXh0ZXJuIHZvaWQgWHRD
b252ZXJ0KCAgCgogICAgV2lkZ2V0IAkJICwKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBYcm1W
YWx1ZSoJCSAsCiAgICBjb25zdCAgY2hhciogIAkgLAogICAgWHJtVmFsdWUqCQkgCgopOwoKZXh0
ZXJuIHZvaWQgWHREaXJlY3RDb252ZXJ0KCAgCgogICAgWHRDb252ZXJ0ZXIgCSAsCiAgICBYcm1W
YWx1ZVB0ciAJICwKICAgIENhcmRpbmFsIAkJICwKICAgIFhybVZhbHVlUHRyIAkgLAogICAgWHJt
VmFsdWUqCQkgCgopOwoKIAoKCgoKCmV4dGVybiBYdFRyYW5zbGF0aW9ucyBYdFBhcnNlVHJhbnNs
YXRpb25UYWJsZSgKCiAgICBjb25zdCAgY2hhciogCSAKCik7CgpleHRlcm4gWHRBY2NlbGVyYXRv
cnMgWHRQYXJzZUFjY2VsZXJhdG9yVGFibGUoCgogICAgY29uc3QgIGNoYXIqIAkgCgopOwoKZXh0
ZXJuIHZvaWQgWHRPdmVycmlkZVRyYW5zbGF0aW9ucygKCiAgICBXaWRnZXQgCQkgLAogICAgWHRU
cmFuc2xhdGlvbnMgCSAKCik7CgpleHRlcm4gdm9pZCBYdEF1Z21lbnRUcmFuc2xhdGlvbnMoCgog
ICAgV2lkZ2V0IAkJICwKICAgIFh0VHJhbnNsYXRpb25zIAkgCgopOwoKZXh0ZXJuIHZvaWQgWHRJ
bnN0YWxsQWNjZWxlcmF0b3JzKAoKICAgIFdpZGdldCAJCSAsCiAgICBXaWRnZXQJCSAKCik7Cgpl
eHRlcm4gdm9pZCBYdEluc3RhbGxBbGxBY2NlbGVyYXRvcnMoCgogICAgV2lkZ2V0IAkJICwKICAg
IFdpZGdldAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0VW5pbnN0YWxsVHJhbnNsYXRpb25zKAoKICAg
IFdpZGdldCAJCSAKCik7CgpleHRlcm4gdm9pZCBYdEFwcEFkZEFjdGlvbnMoCgogICAgWHRBcHBD
b250ZXh0IAkgLAogICAgWHRBY3Rpb25MaXN0IAkgLAogICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0
ZXJuIHZvaWQgWHRBZGRBY3Rpb25zKCAgCgogICAgWHRBY3Rpb25MaXN0IAkgLAogICAgQ2FyZGlu
YWwgCQkgCgopOwoKZXh0ZXJuIFh0QWN0aW9uSG9va0lkIFh0QXBwQWRkQWN0aW9uSG9vaygKCiAg
ICBYdEFwcENvbnRleHQgCSAsCiAgICBYdEFjdGlvbkhvb2tQcm9jIAkgLAogICAgWHRQb2ludGVy
IAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0UmVtb3ZlQWN0aW9uSG9vaygKCiAgICBYdEFjdGlvbkhv
b2tJZCAJIAoKKTsKCmV4dGVybiB2b2lkIFh0R2V0QWN0aW9uTGlzdCgKCiAgICBXaWRnZXRDbGFz
cwkJICwKICAgIFh0QWN0aW9uTGlzdCoJICwKICAgIENhcmRpbmFsKgkJIAoKKTsKCmV4dGVybiB2
b2lkIFh0Q2FsbEFjdGlvblByb2MoCgogICAgV2lkZ2V0CQkgLAogICAgY29uc3QgIGNoYXIqIAkg
LAogICAgWEV2ZW50KgkJICwKICAgIFN0cmluZyoJCSAsCiAgICBDYXJkaW5hbAkJIAoKKTsKCmV4
dGVybiB2b2lkIFh0UmVnaXN0ZXJHcmFiQWN0aW9uKAoKICAgIFh0QWN0aW9uUHJvYyAJICwKICAg
IGludCAgCQkgLAogICAgdW5zaWduZWQgaW50IAkgLAogICAgaW50CQkJICwKICAgIGludAkgCQkg
CgopOwoKZXh0ZXJuIHZvaWQgWHRTZXRNdWx0aUNsaWNrVGltZSgKCiAgICBEaXNwbGF5KgkJICwK
ICAgIGludCAJCSAKCik7CgpleHRlcm4gaW50IFh0R2V0TXVsdGlDbGlja1RpbWUoCgogICAgRGlz
cGxheSoJCSAKCik7CgpleHRlcm4gS2V5U3ltIFh0R2V0QWN0aW9uS2V5c3ltKAoKICAgIFhFdmVu
dCoJCSAsCiAgICBNb2RpZmllcnMqCQkgCgopOwoKIAoKCgoKCmV4dGVybiB2b2lkIFh0VHJhbnNs
YXRlS2V5Y29kZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIHVuc2lnbmVkIGludCAgCQkgLAogICAg
TW9kaWZpZXJzIAkJICwKICAgIE1vZGlmaWVycyoJCSAsCiAgICBLZXlTeW0qCQkgCgopOwoKZXh0
ZXJuIHZvaWQgWHRUcmFuc2xhdGVLZXkoCgogICAgRGlzcGxheSoJCSAsCiAgICB1bnNpZ25lZCBp
bnQgCQkgLAogICAgTW9kaWZpZXJzCQkgLAogICAgTW9kaWZpZXJzKgkJICwKICAgIEtleVN5bSoJ
CSAKCik7CgpleHRlcm4gdm9pZCBYdFNldEtleVRyYW5zbGF0b3IoCgogICAgRGlzcGxheSoJCSAs
CiAgICBYdEtleVByb2MgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRSZWdpc3RlckNhc2VDb252ZXJ0
ZXIoCgogICAgRGlzcGxheSoJCSAsCiAgICBYdENhc2VQcm9jIAkJICwKICAgIEtleVN5bSAJCSAs
CiAgICBLZXlTeW0gCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRDb252ZXJ0Q2FzZSgKCiAgICBEaXNw
bGF5KgkJICwKICAgIEtleVN5bSAJCSAsCiAgICBLZXlTeW0qCQkgLAogICAgS2V5U3ltKgkJIAoK
KTsKCiAKCgoKCgogCgoKCgpleHRlcm4gdm9pZCBYdEFkZEV2ZW50SGFuZGxlcigKCiAgICBXaWRn
ZXQgCQkgLAogICAgRXZlbnRNYXNrIAkJICwKICAgIGludCAgCQkgLAogICAgWHRFdmVudEhhbmRs
ZXIgCSAsCiAgICBYdFBvaW50ZXIgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRSZW1vdmVFdmVudEhh
bmRsZXIoCgogICAgV2lkZ2V0IAkJICwKICAgIEV2ZW50TWFzayAJCSAsCiAgICBpbnQgIAkJICwK
ICAgIFh0RXZlbnRIYW5kbGVyIAkgLAogICAgWHRQb2ludGVyIAkJIAoKKTsKCmV4dGVybiB2b2lk
IFh0QWRkUmF3RXZlbnRIYW5kbGVyKAoKICAgIFdpZGdldCAJCSAsCiAgICBFdmVudE1hc2sgCQkg
LAogICAgaW50ICAJCSAsCiAgICBYdEV2ZW50SGFuZGxlciAJICwKICAgIFh0UG9pbnRlciAJCSAK
Cik7CgpleHRlcm4gdm9pZCBYdFJlbW92ZVJhd0V2ZW50SGFuZGxlcigKCiAgICBXaWRnZXQgCQkg
LAogICAgRXZlbnRNYXNrIAkJICwKICAgIGludCAgCQkgLAogICAgWHRFdmVudEhhbmRsZXIgCSAs
CiAgICBYdFBvaW50ZXIgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRJbnNlcnRFdmVudEhhbmRsZXIo
CgogICAgV2lkZ2V0IAkJICwKICAgIEV2ZW50TWFzayAJCSAsCiAgICBpbnQgIAkJICwKICAgIFh0
RXZlbnRIYW5kbGVyIAkgLAogICAgWHRQb2ludGVyIAkJICwKICAgIFh0TGlzdFBvc2l0aW9uIAkg
CgopOwoKZXh0ZXJuIHZvaWQgWHRJbnNlcnRSYXdFdmVudEhhbmRsZXIoCgogICAgV2lkZ2V0IAkJ
ICwKICAgIEV2ZW50TWFzayAJCSAsCiAgICBpbnQgIAkJICwKICAgIFh0RXZlbnRIYW5kbGVyIAkg
LAogICAgWHRQb2ludGVyIAkJICwKICAgIFh0TGlzdFBvc2l0aW9uIAkgCgopOwoKZXh0ZXJuIFh0
RXZlbnREaXNwYXRjaFByb2MgWHRTZXRFdmVudERpc3BhdGNoZXIoCgogICAgRGlzcGxheSoJCSAs
CiAgICBpbnQJCQkgLAogICAgWHRFdmVudERpc3BhdGNoUHJvYwkgCgopOwoKZXh0ZXJuIEJvb2xl
YW4gWHREaXNwYXRjaEV2ZW50VG9XaWRnZXQoCgogICAgV2lkZ2V0CQkgLAogICAgWEV2ZW50KgkJ
IAoKKTsKCmV4dGVybiB2b2lkIFh0SW5zZXJ0RXZlbnRUeXBlSGFuZGxlcigKCiAgICBXaWRnZXQJ
CSAsCiAgICBpbnQJCQkgLAogICAgWHRQb2ludGVyCQkgLAogICAgWHRFdmVudEhhbmRsZXIJICwK
ICAgIFh0UG9pbnRlcgkJICwKICAgIFh0TGlzdFBvc2l0aW9uCSAKCik7CgpleHRlcm4gdm9pZCBY
dFJlbW92ZUV2ZW50VHlwZUhhbmRsZXIoCgogICAgV2lkZ2V0CQkgLAogICAgaW50CQkJICwKICAg
IFh0UG9pbnRlcgkJICwKICAgIFh0RXZlbnRIYW5kbGVyCSAsCiAgICBYdFBvaW50ZXIJCSAKCik7
CgpleHRlcm4gRXZlbnRNYXNrIFh0QnVpbGRFdmVudE1hc2soCgogICAgV2lkZ2V0IAkJIAoKKTsK
CmV4dGVybiB2b2lkIFh0UmVnaXN0ZXJFeHRlbnNpb25TZWxlY3RvcigKCiAgICBEaXNwbGF5KgkJ
ICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkgLAogICAgWHRFeHRlbnNpb25TZWxlY3RQcm9jICAs
CiAgICBYdFBvaW50ZXIJCSAKCik7CgpleHRlcm4gdm9pZCBYdEFkZEdyYWIoCgogICAgV2lkZ2V0
IAkJICwKICAgIGludCAgCQkgLAogICAgaW50ICAJCSAKCik7CgpleHRlcm4gdm9pZCBYdFJlbW92
ZUdyYWIoCgogICAgV2lkZ2V0IAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0UHJvY2Vzc0V2ZW50KCAg
CgogICAgWHRJbnB1dE1hc2sgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRBcHBQcm9jZXNzRXZlbnQo
CgogICAgWHRBcHBDb250ZXh0IAkJICwKICAgIFh0SW5wdXRNYXNrIAkJIAoKKTsKCmV4dGVybiB2
b2lkIFh0TWFpbkxvb3AoICAKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZvaWQgWHRBcHBNYWluTG9v
cCgKCiAgICBYdEFwcENvbnRleHQgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRBZGRFeHBvc3VyZVRv
UmVnaW9uKAoKICAgIFhFdmVudCoJCSAsCiAgICBSZWdpb24gCQkgCgopOwoKZXh0ZXJuIHZvaWQg
WHRTZXRLZXlib2FyZEZvY3VzKAoKICAgIFdpZGdldAkJICwKICAgIFdpZGdldCAJCSAKCik7Cgpl
eHRlcm4gV2lkZ2V0IFh0R2V0S2V5Ym9hcmRGb2N1c1dpZGdldCgKCiAgICBXaWRnZXQJCSAKCik7
CgpleHRlcm4gWEV2ZW50KiBYdExhc3RFdmVudFByb2Nlc3NlZCgKCiAgICBEaXNwbGF5KgkJIAoK
KTsKCmV4dGVybiBUaW1lIFh0TGFzdFRpbWVzdGFtcFByb2Nlc3NlZCgKCiAgICBEaXNwbGF5KgkJ
IAoKKTsKCiAKCgoKCgpleHRlcm4gWHRJbnRlcnZhbElkIFh0QWRkVGltZU91dCggIAoKICAgIHVu
c2lnbmVkIGxvbmcgCSAsCiAgICBYdFRpbWVyQ2FsbGJhY2tQcm9jICAsCiAgICBYdFBvaW50ZXIg
CQkgCgopOwoKZXh0ZXJuIFh0SW50ZXJ2YWxJZCBYdEFwcEFkZFRpbWVPdXQoCgogICAgWHRBcHBD
b250ZXh0IAkgLAogICAgdW5zaWduZWQgbG9uZyAJICwKICAgIFh0VGltZXJDYWxsYmFja1Byb2Mg
ICwKICAgIFh0UG9pbnRlciAJCSAKCik7CgpleHRlcm4gdm9pZCBYdFJlbW92ZVRpbWVPdXQoCgog
ICAgWHRJbnRlcnZhbElkIAkgCgopOwoKZXh0ZXJuIFh0SW5wdXRJZCBYdEFkZElucHV0KCAgCgog
ICAgaW50IAkJICwKICAgIFh0UG9pbnRlciAJCSAsCiAgICBYdElucHV0Q2FsbGJhY2tQcm9jICAs
CiAgICBYdFBvaW50ZXIgCQkgCgopOwoKZXh0ZXJuIFh0SW5wdXRJZCBYdEFwcEFkZElucHV0KAoK
ICAgIFh0QXBwQ29udGV4dCAgICAgICAJICwKICAgIGludCAJCSAsCiAgICBYdFBvaW50ZXIgCQkg
LAogICAgWHRJbnB1dENhbGxiYWNrUHJvYyAgLAogICAgWHRQb2ludGVyIAkJIAoKKTsKCmV4dGVy
biB2b2lkIFh0UmVtb3ZlSW5wdXQoCgogICAgWHRJbnB1dElkIAkJIAoKKTsKCmV4dGVybiBYdFNp
Z25hbElkIFh0QXBwQWRkU2lnbmFsKAoKICAgIFh0QXBwQ29udGV4dCAgICAgICAJICwKICAgIFh0
U2lnbmFsQ2FsbGJhY2tQcm9jICAsCiAgICBYdFBvaW50ZXIgCQkgCgopOwoKZXh0ZXJuIHZvaWQg
WHRSZW1vdmVTaWduYWwoCgogICAgWHRTaWduYWxJZCAJCSAKCik7CgpleHRlcm4gdm9pZCBYdE5v
dGljZVNpZ25hbCgKCiAgICBYdFNpZ25hbElkCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHROZXh0RXZl
bnQoICAKCiAgICBYRXZlbnQqIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0QXBwTmV4dEV2ZW50KAoK
ICAgIFh0QXBwQ29udGV4dCAJICwKICAgIFhFdmVudCoJCSAKCik7CgoKCgoKCgpleHRlcm4gWHRJ
bnB1dE1hc2sgWHRQZW5kaW5nKCAgCgogICAgdm9pZAoKKTsKCmV4dGVybiBYdElucHV0TWFzayBY
dEFwcFBlbmRpbmcoCgogICAgWHRBcHBDb250ZXh0IAkgCgopOwoKZXh0ZXJuIFh0QmxvY2tIb29r
SWQgWHRBcHBBZGRCbG9ja0hvb2soCgogICAgWHRBcHBDb250ZXh0IAkgLAogICAgWHRCbG9ja0hv
b2tQcm9jIAkgLAogICAgWHRQb2ludGVyIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0UmVtb3ZlQmxv
Y2tIb29rKAoKICAgIFh0QmxvY2tIb29rSWQgCSAKCik7CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgpleHRlcm4gdm9pZCBYdFJlYWxpemVXaWRnZXQoCgogICAgV2lkZ2V0IAkJIAoKKTsK
CnZvaWQgWHRVbnJlYWxpemVXaWRnZXQoCgogICAgV2lkZ2V0IAkJIAoKKTsKCmV4dGVybiB2b2lk
IFh0RGVzdHJveVdpZGdldCgKCiAgICBXaWRnZXQgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRTZXRT
ZW5zaXRpdmUoCgogICAgV2lkZ2V0IAkJICwKICAgIGludCAgCQkgCgopOwoKZXh0ZXJuIHZvaWQg
WHRTZXRNYXBwZWRXaGVuTWFuYWdlZCgKCiAgICBXaWRnZXQgCQkgLAogICAgaW50ICAJCSAKCik7
CgpleHRlcm4gV2lkZ2V0IFh0TmFtZVRvV2lkZ2V0KAoKICAgIFdpZGdldCAJCSAsCiAgICBjb25z
dCAgY2hhciogCSAKCik7CgpleHRlcm4gV2lkZ2V0IFh0V2luZG93VG9XaWRnZXQoCgogICAgRGlz
cGxheSoJCSAsCiAgICBXaW5kb3cgCQkgCgopOwoKZXh0ZXJuIFh0UG9pbnRlciBYdEdldENsYXNz
RXh0ZW5zaW9uKAoKICAgIFdpZGdldENsYXNzCQkgLAogICAgQ2FyZGluYWwJCSAsCiAgICBYcm1R
dWFyawkJICwKICAgIGxvbmcJCSAsCiAgICBDYXJkaW5hbAkJIAoKKTsKCiAKCgoKCgoKCgoKZXh0
ZXJuIEFyZ0xpc3QgWHRNZXJnZUFyZ0xpc3RzKAoKICAgIEFyZ0xpc3QgCQkgLAogICAgQ2FyZGlu
YWwgCQkgLAogICAgQXJnTGlzdCAJCSAsCiAgICBDYXJkaW5hbCAJCSAKCik7CgogCgoKCgoKCgoK
ZXh0ZXJuIFh0VmFyQXJnc0xpc3QgWHRWYUNyZWF0ZUFyZ3NMaXN0KAoKICAgIFh0UG9pbnRlcgkJ
ICwgLi4uCgopOwoKIAoKCgoKCgoKIAoKZXh0ZXJuIERpc3BsYXkgKlh0RGlzcGxheSgKCiAgICBX
aWRnZXQgCQkgCgopOwoKZXh0ZXJuIERpc3BsYXkgKlh0RGlzcGxheU9mT2JqZWN0KAoKICAgIFdp
ZGdldCAJCSAKCik7CgpleHRlcm4gU2NyZWVuICpYdFNjcmVlbigKCiAgICBXaWRnZXQgCQkgCgop
OwoKZXh0ZXJuIFNjcmVlbiAqWHRTY3JlZW5PZk9iamVjdCgKCiAgICBXaWRnZXQgCQkgCgopOwoK
ZXh0ZXJuIFdpbmRvdyBYdFdpbmRvdygKCiAgICBXaWRnZXQgCQkgCgopOwoKZXh0ZXJuIFdpbmRv
dyBYdFdpbmRvd09mT2JqZWN0KAoKICAgIFdpZGdldCAJCSAKCik7CgpleHRlcm4gU3RyaW5nIFh0
TmFtZSgKCiAgICBXaWRnZXQgCQkgCgopOwoKZXh0ZXJuIFdpZGdldENsYXNzIFh0U3VwZXJjbGFz
cygKCiAgICBXaWRnZXQgCQkgCgopOwoKZXh0ZXJuIFdpZGdldENsYXNzIFh0Q2xhc3MoCgogICAg
V2lkZ2V0IAkJIAoKKTsKCmV4dGVybiBXaWRnZXQgWHRQYXJlbnQoCgogICAgV2lkZ2V0IAkJIAoK
KTsKCgoKCgoKCmV4dGVybiB2b2lkIFh0QWRkQ2FsbGJhY2soCgogICAgV2lkZ2V0IAkJICwKICAg
IGNvbnN0ICBjaGFyKiAgCSAsCiAgICBYdENhbGxiYWNrUHJvYyAJICwKICAgIFh0UG9pbnRlciAJ
CSAKCik7CgpleHRlcm4gdm9pZCBYdFJlbW92ZUNhbGxiYWNrKAoKICAgIFdpZGdldCAJCSAsCiAg
ICBjb25zdCAgY2hhciogIAkgLAogICAgWHRDYWxsYmFja1Byb2MgCSAsCiAgICBYdFBvaW50ZXIg
CQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRBZGRDYWxsYmFja3MoCgogICAgV2lkZ2V0IAkJICwKICAg
IGNvbnN0ICBjaGFyKiAJICwKICAgIFh0Q2FsbGJhY2tMaXN0IAkgCgopOwoKZXh0ZXJuIHZvaWQg
WHRSZW1vdmVDYWxsYmFja3MoCgogICAgV2lkZ2V0IAkJICwKICAgIGNvbnN0ICBjaGFyKiAgCSAs
CiAgICBYdENhbGxiYWNrTGlzdCAJIAoKKTsKCmV4dGVybiB2b2lkIFh0UmVtb3ZlQWxsQ2FsbGJh
Y2tzKAoKICAgIFdpZGdldCAJCSAsCiAgICBjb25zdCAgY2hhciogIAkgCgopOwoKCmV4dGVybiB2
b2lkIFh0Q2FsbENhbGxiYWNrcygKCiAgICBXaWRnZXQgCQkgLAogICAgY29uc3QgIGNoYXIqICAJ
ICwKICAgIFh0UG9pbnRlciAJCSAKCik7CgpleHRlcm4gdm9pZCBYdENhbGxDYWxsYmFja0xpc3Qo
CgogICAgV2lkZ2V0CQkgLAogICAgWHRDYWxsYmFja0xpc3QgCSAsCiAgICBYdFBvaW50ZXIgCQkg
CgopOwoKZXh0ZXJuIFh0Q2FsbGJhY2tTdGF0dXMgWHRIYXNDYWxsYmFja3MoCgogICAgV2lkZ2V0
IAkJICwKICAgIGNvbnN0ICBjaGFyKiAgCSAKCik7CgogCgoKCgoKCmV4dGVybiBYdEdlb21ldHJ5
UmVzdWx0IFh0TWFrZUdlb21ldHJ5UmVxdWVzdCgKCiAgICBXaWRnZXQgCQkgLAogICAgWHRXaWRn
ZXRHZW9tZXRyeSoJICwKICAgIFh0V2lkZ2V0R2VvbWV0cnkqCSAKCik7CgpleHRlcm4gWHRHZW9t
ZXRyeVJlc3VsdCBYdFF1ZXJ5R2VvbWV0cnkoCgogICAgV2lkZ2V0IAkJICwKICAgIFh0V2lkZ2V0
R2VvbWV0cnkqCSAsCiAgICBYdFdpZGdldEdlb21ldHJ5KgkgCgopOwoKZXh0ZXJuIFdpZGdldCBY
dENyZWF0ZVBvcHVwU2hlbGwoCgogICAgY29uc3QgIGNoYXIqIAkgLAogICAgV2lkZ2V0Q2xhc3Mg
CSAsCiAgICBXaWRnZXQgCQkgLAogICAgQXJnTGlzdCAJCSAsCiAgICBDYXJkaW5hbCAJCSAKCik7
CgpleHRlcm4gV2lkZ2V0IFh0VmFDcmVhdGVQb3B1cFNoZWxsKAoKICAgIGNvbnN0ICBjaGFyKiAJ
ICwKICAgIFdpZGdldENsYXNzCQkgLAogICAgV2lkZ2V0CQkgLAogICAgLi4uCgopOwoKZXh0ZXJu
IHZvaWQgWHRQb3B1cCgKCiAgICBXaWRnZXQgCQkgLAogICAgWHRHcmFiS2luZCAJCSAKCik7Cgpl
eHRlcm4gdm9pZCBYdFBvcHVwU3ByaW5nTG9hZGVkKAoKICAgIFdpZGdldCAJCSAKCik7CgpleHRl
cm4gdm9pZCBYdENhbGxiYWNrTm9uZSgKCiAgICBXaWRnZXQgCQkgLAogICAgWHRQb2ludGVyIAkJ
ICwKICAgIFh0UG9pbnRlciAJCSAKCik7CgpleHRlcm4gdm9pZCBYdENhbGxiYWNrTm9uZXhjbHVz
aXZlKAoKICAgIFdpZGdldCAJCSAsCiAgICBYdFBvaW50ZXIgCQkgLAogICAgWHRQb2ludGVyIAkJ
IAoKKTsKCmV4dGVybiB2b2lkIFh0Q2FsbGJhY2tFeGNsdXNpdmUoCgogICAgV2lkZ2V0IAkJICwK
ICAgIFh0UG9pbnRlciAJCSAsCiAgICBYdFBvaW50ZXIgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRQ
b3Bkb3duKAoKICAgIFdpZGdldCAJCSAKCik7CgpleHRlcm4gdm9pZCBYdENhbGxiYWNrUG9wZG93
bigKCiAgICBXaWRnZXQgCQkgLAogICAgWHRQb2ludGVyIAkJICwKICAgIFh0UG9pbnRlciAJCSAK
Cik7CgpleHRlcm4gdm9pZCBYdE1lbnVQb3B1cEFjdGlvbigKCiAgICBXaWRnZXQgCQkgLAogICAg
WEV2ZW50KgkJICwKICAgIFN0cmluZyoJCSAsCiAgICBDYXJkaW5hbCoJCSAKCik7CgpleHRlcm4g
V2lkZ2V0IFh0Q3JlYXRlV2lkZ2V0KAoKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBXaWRnZXRD
bGFzcyAJICwKICAgIFdpZGdldCAJCSAsCiAgICBBcmdMaXN0IAkJICwKICAgIENhcmRpbmFsIAkJ
IAoKKTsKCmV4dGVybiBXaWRnZXQgWHRDcmVhdGVNYW5hZ2VkV2lkZ2V0KAoKICAgIGNvbnN0ICBj
aGFyKiAgCSAsCiAgICBXaWRnZXRDbGFzcyAJICwKICAgIFdpZGdldCAJCSAsCiAgICBBcmdMaXN0
IAkJICwKICAgIENhcmRpbmFsIAkJIAoKKTsKCmV4dGVybiBXaWRnZXQgWHRWYUNyZWF0ZVdpZGdl
dCgKCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBXaWRnZXRDbGFzcwkJICwKICAgIFdpZGdldAkJ
ICwKICAgIC4uLgoKKTsKCmV4dGVybiBXaWRnZXQgWHRWYUNyZWF0ZU1hbmFnZWRXaWRnZXQoCgog
ICAgY29uc3QgIGNoYXIqIAkgLAogICAgV2lkZ2V0Q2xhc3MJCSAsCiAgICBXaWRnZXQJCSAsCiAg
ICAuLi4KCik7CgpleHRlcm4gV2lkZ2V0IFh0Q3JlYXRlQXBwbGljYXRpb25TaGVsbCggIAoKICAg
IGNvbnN0ICBjaGFyKiAgCSAsCiAgICBXaWRnZXRDbGFzcyAJICwKICAgIEFyZ0xpc3QgCQkgLAog
ICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0ZXJuIFdpZGdldCBYdEFwcENyZWF0ZVNoZWxsKAoKICAg
IGNvbnN0ICBjaGFyKiAJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIFdpZGdldENsYXNzIAkg
LAogICAgRGlzcGxheSoJCSAsCiAgICBBcmdMaXN0IAkJICwKICAgIENhcmRpbmFsIAkJIAoKKTsK
CmV4dGVybiBXaWRnZXQgWHRWYUFwcENyZWF0ZVNoZWxsKAoKICAgIGNvbnN0ICBjaGFyKiAJICwK
ICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIFdpZGdldENsYXNzCQkgLAogICAgRGlzcGxheSoJCSAs
CiAgICAuLi4KCik7CgogCgoKCgoKZXh0ZXJuIHZvaWQgWHRUb29sa2l0SW5pdGlhbGl6ZSgKCiAg
ICB2b2lkCgopOwoKZXh0ZXJuIFh0TGFuZ3VhZ2VQcm9jIFh0U2V0TGFuZ3VhZ2VQcm9jKAoKICAg
IFh0QXBwQ29udGV4dAkgLAogICAgWHRMYW5ndWFnZVByb2MJICwKICAgIFh0UG9pbnRlcgkJIAoK
KTsKCmV4dGVybiB2b2lkIFh0RGlzcGxheUluaXRpYWxpemUoCgogICAgWHRBcHBDb250ZXh0IAkg
LAogICAgRGlzcGxheSoJCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBjb25zdCAgY2hhciog
CSAsCiAgICBYcm1PcHRpb25EZXNjUmVjKiAJICwKICAgIENhcmRpbmFsIAkJICwKICAgIGludCoJ
CSAsCiAgICBjaGFyKioJCSAKCik7CgpleHRlcm4gV2lkZ2V0IFh0T3BlbkFwcGxpY2F0aW9uKAoK
ICAgIFh0QXBwQ29udGV4dCoJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIFhybU9wdGlvbkRl
c2NMaXN0IAkgLAogICAgQ2FyZGluYWwgCQkgLAogICAgaW50KgkJICwKICAgIFN0cmluZyoJCSAs
CiAgICBTdHJpbmcqCQkgLAogICAgV2lkZ2V0Q2xhc3MJCSAsCiAgICBBcmdMaXN0IAkJICwKICAg
IENhcmRpbmFsIAkJIAoKKTsKCmV4dGVybiBXaWRnZXQgWHRWYU9wZW5BcHBsaWNhdGlvbigKCiAg
ICBYdEFwcENvbnRleHQqCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBYcm1PcHRpb25EZXNj
TGlzdAkgLAogICAgQ2FyZGluYWwJCSAsCiAgICBpbnQqCQkgLAogICAgU3RyaW5nKgkJICwKICAg
IFN0cmluZyoJCSAsCiAgICBXaWRnZXRDbGFzcwkJICwKICAgIC4uLgoKKTsKCmV4dGVybiBXaWRn
ZXQgWHRBcHBJbml0aWFsaXplKCAgCgogICAgWHRBcHBDb250ZXh0KgkgLAogICAgY29uc3QgIGNo
YXIqIAkgLAogICAgWHJtT3B0aW9uRGVzY0xpc3QgCSAsCiAgICBDYXJkaW5hbCAJCSAsCiAgICBp
bnQqCQkgLAogICAgU3RyaW5nKgkJICwKICAgIFN0cmluZyoJCSAsCiAgICBBcmdMaXN0IAkJICwK
ICAgIENhcmRpbmFsIAkJIAoKKTsKCmV4dGVybiBXaWRnZXQgWHRWYUFwcEluaXRpYWxpemUoICAK
CiAgICBYdEFwcENvbnRleHQqCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBYcm1PcHRpb25E
ZXNjTGlzdAkgLAogICAgQ2FyZGluYWwJCSAsCiAgICBpbnQqCQkgLAogICAgU3RyaW5nKgkJICwK
ICAgIFN0cmluZyoJCSAsCiAgICAuLi4KCik7CgpleHRlcm4gV2lkZ2V0IFh0SW5pdGlhbGl6ZSgg
IAoKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBjb25zdCAgY2hhciogIAkgLAogICAgWHJtT3B0
aW9uRGVzY1JlYyogCSAsCiAgICBDYXJkaW5hbCAJCSAsCiAgICBpbnQqCQkgLAogICAgY2hhcioq
CQkgCgopOwoKZXh0ZXJuIERpc3BsYXkgKlh0T3BlbkRpc3BsYXkoCgogICAgWHRBcHBDb250ZXh0
IAkgLAogICAgY29uc3QgIGNoYXIqIAkgLAogICAgY29uc3QgIGNoYXIqIAkgLAogICAgY29uc3Qg
IGNoYXIqIAkgLAogICAgWHJtT3B0aW9uRGVzY1JlYyoJICwKICAgIENhcmRpbmFsIAkJICwKICAg
IGludCoJCSAsCiAgICBjaGFyKioJCSAKCik7CgpleHRlcm4gWHRBcHBDb250ZXh0IFh0Q3JlYXRl
QXBwbGljYXRpb25Db250ZXh0KAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBYdEFwcFNldEZh
bGxiYWNrUmVzb3VyY2VzKAoKICAgIFh0QXBwQ29udGV4dCAJICwKICAgIFN0cmluZyoJCSAKCik7
CgpleHRlcm4gdm9pZCBYdERlc3Ryb3lBcHBsaWNhdGlvbkNvbnRleHQoCgogICAgWHRBcHBDb250
ZXh0IAkgCgopOwoKZXh0ZXJuIHZvaWQgWHRJbml0aWFsaXplV2lkZ2V0Q2xhc3MoCgogICAgV2lk
Z2V0Q2xhc3MgCSAKCik7CgpleHRlcm4gWHRBcHBDb250ZXh0IFh0V2lkZ2V0VG9BcHBsaWNhdGlv
bkNvbnRleHQoCgogICAgV2lkZ2V0IAkJIAoKKTsKCmV4dGVybiBYdEFwcENvbnRleHQgWHREaXNw
bGF5VG9BcHBsaWNhdGlvbkNvbnRleHQoCgogICAgRGlzcGxheSoJCSAKCik7CgpleHRlcm4gWHJt
RGF0YWJhc2UgWHREYXRhYmFzZSgKCiAgICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiBYcm1EYXRh
YmFzZSBYdFNjcmVlbkRhdGFiYXNlKAoKICAgIFNjcmVlbioJCSAKCik7CgpleHRlcm4gdm9pZCBY
dENsb3NlRGlzcGxheSgKCiAgICBEaXNwbGF5KgkJIAoKKTsKCmV4dGVybiB2b2lkIFh0R2V0QXBw
bGljYXRpb25SZXNvdXJjZXMoCgogICAgV2lkZ2V0IAkJICwKICAgIFh0UG9pbnRlciAJCSAsCiAg
ICBYdFJlc291cmNlTGlzdCAJICwKICAgIENhcmRpbmFsIAkJICwKICAgIEFyZ0xpc3QgCQkgLAog
ICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRWYUdldEFwcGxpY2F0aW9uUmVzb3Vy
Y2VzKAoKICAgIFdpZGdldAkJICwKICAgIFh0UG9pbnRlcgkJICwKICAgIFh0UmVzb3VyY2VMaXN0
CSAsCiAgICBDYXJkaW5hbAkJICwKICAgIC4uLgoKKTsKCmV4dGVybiB2b2lkIFh0R2V0U3VicmVz
b3VyY2VzKAoKICAgIFdpZGdldCAJCSAsCiAgICBYdFBvaW50ZXIgCQkgLAogICAgY29uc3QgIGNo
YXIqICAJICwKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBYdFJlc291cmNlTGlzdCAJICwKICAg
IENhcmRpbmFsIAkJICwKICAgIEFyZ0xpc3QgCQkgLAogICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0
ZXJuIHZvaWQgWHRWYUdldFN1YnJlc291cmNlcygKCiAgICBXaWRnZXQJCSAsCiAgICBYdFBvaW50
ZXIJCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBYdFJl
c291cmNlTGlzdAkgLAogICAgQ2FyZGluYWwJCSAsCiAgICAuLi4KCik7CgpleHRlcm4gdm9pZCBY
dFNldFZhbHVlcygKCiAgICBXaWRnZXQgCQkgLAogICAgQXJnTGlzdCAJCSAsCiAgICBDYXJkaW5h
bCAJCSAKCik7CgpleHRlcm4gdm9pZCBYdFZhU2V0VmFsdWVzKAoKICAgIFdpZGdldAkJICwKICAg
IC4uLgoKKTsKCmV4dGVybiB2b2lkIFh0R2V0VmFsdWVzKAoKICAgIFdpZGdldCAJCSAsCiAgICBB
cmdMaXN0IAkJICwKICAgIENhcmRpbmFsIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0VmFHZXRWYWx1
ZXMoCgogICAgV2lkZ2V0CQkgLAogICAgLi4uCgopOwoKZXh0ZXJuIHZvaWQgWHRTZXRTdWJ2YWx1
ZXMoCgogICAgWHRQb2ludGVyIAkJICwKICAgIFh0UmVzb3VyY2VMaXN0IAkgLAogICAgQ2FyZGlu
YWwgCQkgLAogICAgQXJnTGlzdCAJCSAsCiAgICBDYXJkaW5hbCAJCSAKCik7CgpleHRlcm4gdm9p
ZCBYdFZhU2V0U3VidmFsdWVzKAoKICAgIFh0UG9pbnRlcgkJICwKICAgIFh0UmVzb3VyY2VMaXN0
CSAsCiAgICBDYXJkaW5hbAkJICwKICAgIC4uLgoKKTsKCmV4dGVybiB2b2lkIFh0R2V0U3VidmFs
dWVzKAoKICAgIFh0UG9pbnRlciAJCSAsCiAgICBYdFJlc291cmNlTGlzdCAJICwKICAgIENhcmRp
bmFsIAkJICwKICAgIEFyZ0xpc3QgCQkgLAogICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0ZXJuIHZv
aWQgWHRWYUdldFN1YnZhbHVlcygKCiAgICBYdFBvaW50ZXIJCSAsCiAgICBYdFJlc291cmNlTGlz
dAkgLAogICAgQ2FyZGluYWwJCSAsCiAgICAuLi4KCik7CgpleHRlcm4gdm9pZCBYdEdldFJlc291
cmNlTGlzdCgKCiAgICBXaWRnZXRDbGFzcyAJICwKICAgIFh0UmVzb3VyY2VMaXN0KgkgLAogICAg
Q2FyZGluYWwqCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRHZXRDb25zdHJhaW50UmVzb3VyY2VMaXN0
KAoKICAgIFdpZGdldENsYXNzIAkgLAogICAgWHRSZXNvdXJjZUxpc3QqCSAsCiAgICBDYXJkaW5h
bCoJCSAKCik7CgoKCgoKCgoKCgoKIyAyMDc2ICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL0ludHJp
bnNpYy5oIgoKCgoKCgoKCgoKCgoKIAoKCgoKCnR5cGVkZWYgc3RydWN0IF9YdENoZWNrcG9pbnRU
b2tlblJlYyB7CiAgICBpbnQJCXNhdmVfdHlwZTsKICAgIGludAkJaW50ZXJhY3Rfc3R5bGU7CiAg
ICBCb29sZWFuCXNodXRkb3duOwogICAgQm9vbGVhbglmYXN0OwogICAgQm9vbGVhbgljYW5jZWxf
c2h1dGRvd247CiAgICBpbnQJCXBoYXNlOwogICAgaW50CQlpbnRlcmFjdF9kaWFsb2dfdHlwZTsJ
IAogICAgQm9vbGVhbglyZXF1ZXN0X2NhbmNlbDsJCSAKICAgIEJvb2xlYW4JcmVxdWVzdF9uZXh0
X3BoYXNlOwkgCiAgICBCb29sZWFuCXNhdmVfc3VjY2VzczsJCSAKICAgIGludAkJdHlwZTsJCSAK
ICAgIFdpZGdldAl3aWRnZXQ7CQkgCn0gWHRDaGVja3BvaW50VG9rZW5SZWMsICpYdENoZWNrcG9p
bnRUb2tlbjsKClh0Q2hlY2twb2ludFRva2VuIFh0U2Vzc2lvbkdldFRva2VuKAoKICAgIFdpZGdl
dAkJIAoKKTsKCnZvaWQgWHRTZXNzaW9uUmV0dXJuVG9rZW4oCgogICAgWHRDaGVja3BvaW50VG9r
ZW4JIAoKKTsKCiAKCgoKCgpleHRlcm4gWHRFcnJvck1zZ0hhbmRsZXIgWHRBcHBTZXRFcnJvck1z
Z0hhbmRsZXIoCgogICAgWHRBcHBDb250ZXh0IAkgLAogICAgWHRFcnJvck1zZ0hhbmRsZXIgCSAK
Cik7CgpleHRlcm4gdm9pZCBYdFNldEVycm9yTXNnSGFuZGxlciggIAoKICAgIFh0RXJyb3JNc2dI
YW5kbGVyIAkgCgopOwoKZXh0ZXJuIFh0RXJyb3JNc2dIYW5kbGVyIFh0QXBwU2V0V2FybmluZ01z
Z0hhbmRsZXIoCgogICAgWHRBcHBDb250ZXh0IAkgLAogICAgWHRFcnJvck1zZ0hhbmRsZXIgCSAK
Cik7CgpleHRlcm4gdm9pZCBYdFNldFdhcm5pbmdNc2dIYW5kbGVyKCAgCgogICAgWHRFcnJvck1z
Z0hhbmRsZXIgCSAKCik7CgpleHRlcm4gdm9pZCBYdEFwcEVycm9yTXNnKAoKICAgIFh0QXBwQ29u
dGV4dCAJICwKICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBj
b25zdCAgY2hhciogCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBTdHJpbmcqCQkgLAogICAg
Q2FyZGluYWwqCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRFcnJvck1zZyggIAoKICAgIGNvbnN0ICBj
aGFyKiAgCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBj
b25zdCAgY2hhciogCSAsCiAgICBTdHJpbmcqCQkgLAogICAgQ2FyZGluYWwqCQkgCgopOwoKZXh0
ZXJuIHZvaWQgWHRBcHBXYXJuaW5nTXNnKAoKICAgIFh0QXBwQ29udGV4dCAJICwKICAgIGNvbnN0
ICBjaGFyKiAgCSAsCiAgICBjb25zdCAgY2hhciogIAkgLAogICAgY29uc3QgIGNoYXIqICAJICwK
ICAgIGNvbnN0ICBjaGFyKiAgCSAsCiAgICBTdHJpbmcqCQkgLAogICAgQ2FyZGluYWwqCQkgCgop
OwoKZXh0ZXJuIHZvaWQgWHRXYXJuaW5nTXNnKCAgCgogICAgY29uc3QgIGNoYXIqIAkgLAogICAg
Y29uc3QgIGNoYXIqIAkgLAogICAgY29uc3QgIGNoYXIqIAkgLAogICAgY29uc3QgIGNoYXIqIAkg
LAogICAgU3RyaW5nKgkJICwKICAgIENhcmRpbmFsKgkJIAoKKTsKCmV4dGVybiBYdEVycm9ySGFu
ZGxlciBYdEFwcFNldEVycm9ySGFuZGxlcigKCiAgICBYdEFwcENvbnRleHQgCSAsCiAgICBYdEVy
cm9ySGFuZGxlciAJIAoKKTsKCmV4dGVybiB2b2lkIFh0U2V0RXJyb3JIYW5kbGVyKCAgCgogICAg
WHRFcnJvckhhbmRsZXIgCSAKCik7CgpleHRlcm4gWHRFcnJvckhhbmRsZXIgWHRBcHBTZXRXYXJu
aW5nSGFuZGxlcigKCiAgICBYdEFwcENvbnRleHQgCSAsCiAgICBYdEVycm9ySGFuZGxlciAJIAoK
KTsKCmV4dGVybiB2b2lkIFh0U2V0V2FybmluZ0hhbmRsZXIoICAKCiAgICBYdEVycm9ySGFuZGxl
ciAJIAoKKTsKCmV4dGVybiB2b2lkIFh0QXBwRXJyb3IoCgogICAgWHRBcHBDb250ZXh0IAkgLAog
ICAgY29uc3QgIGNoYXIqIAkgCgopOwoKZXh0ZXJuIHZvaWQgWHRFcnJvciggIAoKICAgIGNvbnN0
ICBjaGFyKiAJIAoKKTsKCmV4dGVybiB2b2lkIFh0QXBwV2FybmluZygKCiAgICBYdEFwcENvbnRl
eHQgCSAsCiAgICBjb25zdCAgY2hhciogCSAKCik7CgpleHRlcm4gdm9pZCBYdFdhcm5pbmcoICAK
CiAgICBjb25zdCAgY2hhciogCSAKCik7CgpleHRlcm4gWHJtRGF0YWJhc2UgKlh0QXBwR2V0RXJy
b3JEYXRhYmFzZSgKCiAgICBYdEFwcENvbnRleHQgCSAKCik7CgpleHRlcm4gWHJtRGF0YWJhc2Ug
Klh0R2V0RXJyb3JEYXRhYmFzZSggIAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBYdEFwcEdl
dEVycm9yRGF0YWJhc2VUZXh0KAoKICAgIFh0QXBwQ29udGV4dCAJICwKICAgIGNvbnN0ICBjaGFy
KiAJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIGNvbnN0
ICBjaGFyKiAgCSAsCiAgICBTdHJpbmcgCQkgLAogICAgaW50IAkJICwKICAgIFhybURhdGFiYXNl
IAkgCgopOwoKZXh0ZXJuIHZvaWQgWHRHZXRFcnJvckRhdGFiYXNlVGV4dCggIAoKICAgIGNvbnN0
ICBjaGFyKiAJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAgIGNvbnN0ICBjaGFyKiAJICwKICAg
IGNvbnN0ICBjaGFyKiAgCSAsCiAgICBTdHJpbmcgCQkgLAogICAgaW50IAkJIAoKKTsKCiAKCgoK
CgpleHRlcm4gY2hhciAqWHRNYWxsb2MoCgogICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0ZXJuIGNo
YXIgKlh0Q2FsbG9jKAoKICAgIENhcmRpbmFsCQkgLAogICAgQ2FyZGluYWwgCQkgCgopOwoKZXh0
ZXJuIGNoYXIgKlh0UmVhbGxvYygKCiAgICBjaGFyKiAJCSAsCiAgICBDYXJkaW5hbCAJCSAKCik7
CgpleHRlcm4gdm9pZCBYdEZyZWUoCgogICAgY2hhcioJCSAKCik7CgojIDIzNTkgIi91c3IvWDEx
UjYvaW5jbHVkZS9YMTEvSW50cmluc2ljLmgiCgoKCgoKCiAKCgoKCgpleHRlcm4gWHRXb3JrUHJv
Y0lkIFh0QWRkV29ya1Byb2MoICAKCiAgICBYdFdvcmtQcm9jIAkJICwKICAgIFh0UG9pbnRlciAJ
CSAKCik7CgpleHRlcm4gWHRXb3JrUHJvY0lkIFh0QXBwQWRkV29ya1Byb2MoCgogICAgWHRBcHBD
b250ZXh0IAkgLAogICAgWHRXb3JrUHJvYyAJCSAsCiAgICBYdFBvaW50ZXIgCQkgCgopOwoKZXh0
ZXJuIHZvaWQgIFh0UmVtb3ZlV29ya1Byb2MoCgogICAgWHRXb3JrUHJvY0lkIAkgCgopOwoKCiAK
CgoKCmV4dGVybiBHQyBYdEdldEdDKAoKICAgIFdpZGdldCAJCSAsCiAgICBYdEdDTWFzayAJCSAs
CiAgICBYR0NWYWx1ZXMqIAkJIAoKKTsKCmV4dGVybiBHQyBYdEFsbG9jYXRlR0MoCgogICAgV2lk
Z2V0IAkJICwKICAgIENhcmRpbmFsCQkgLAogICAgWHRHQ01hc2sgCQkgLAogICAgWEdDVmFsdWVz
KiAJCSAsCiAgICBYdEdDTWFzawkJICwKICAgIFh0R0NNYXNrCQkgCgopOwoKIAoKCgpleHRlcm4g
dm9pZCBYdERlc3Ryb3lHQyggIAoKICAgIEdDIAkJCSAKCik7CgpleHRlcm4gdm9pZCBYdFJlbGVh
c2VHQygKCiAgICBXaWRnZXQgCQkgLAogICAgR0MgCQkJIAoKKTsKCgoKZXh0ZXJuIHZvaWQgWHRB
cHBSZWxlYXNlQ2FjaGVSZWZzKAoKICAgIFh0QXBwQ29udGV4dAkgLAogICAgWHRDYWNoZVJlZioJ
CSAKCik7CgpleHRlcm4gdm9pZCBYdENhbGxiYWNrUmVsZWFzZUNhY2hlUmVmKAoKICAgIFdpZGdl
dCAJCSAsCiAgICBYdFBvaW50ZXIgCQkgLAkgCiAgICBYdFBvaW50ZXIgCQkgCgopOwoKZXh0ZXJu
IHZvaWQgWHRDYWxsYmFja1JlbGVhc2VDYWNoZVJlZkxpc3QoCgogICAgV2lkZ2V0IAkJICwKICAg
IFh0UG9pbnRlciAJCSAsCSAKICAgIFh0UG9pbnRlciAJCSAKCik7CgpleHRlcm4gdm9pZCBYdFNl
dFdNQ29sb3JtYXBXaW5kb3dzKAoKICAgIFdpZGdldCAJCSAsCiAgICBXaWRnZXQqCQkgLAogICAg
Q2FyZGluYWwJCSAKCik7CgpleHRlcm4gU3RyaW5nIFh0RmluZEZpbGUoCgogICAgY29uc3QgIGNo
YXIqIAkgLAogICAgU3Vic3RpdHV0aW9uCSAsCiAgICBDYXJkaW5hbCAJCSAsCiAgICBYdEZpbGVQ
cmVkaWNhdGUJIAoKKTsKCmV4dGVybiBTdHJpbmcgWHRSZXNvbHZlUGF0aG5hbWUoCgogICAgRGlz
cGxheSoJCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBj
b25zdCAgY2hhciogCSAsCiAgICBjb25zdCAgY2hhciogCSAsCiAgICBTdWJzdGl0dXRpb24JICwK
ICAgIENhcmRpbmFsCQkgLAogICAgWHRGaWxlUHJlZGljYXRlIAkgCgopOwoKIAoKCgoKCgogICAg
CmV4dGVybiB2b2lkIFh0RGlzb3duU2VsZWN0aW9uKAoKICAgIFdpZGdldCAJCSAsCiAgICBBdG9t
IAkJICwKICAgIFRpbWUgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRHZXRTZWxlY3Rpb25WYWx1ZSgK
CiAgICBXaWRnZXQgCQkgLAogICAgQXRvbSAJCSAsCiAgICBBdG9tIAkJICwKICAgIFh0U2VsZWN0
aW9uQ2FsbGJhY2tQcm9jICAsCiAgICBYdFBvaW50ZXIgCQkgLAogICAgVGltZSAJCSAKCik7Cgpl
eHRlcm4gdm9pZCBYdEdldFNlbGVjdGlvblZhbHVlcygKCiAgICBXaWRnZXQgCQkgLAogICAgQXRv
bSAJCSAsCiAgICBBdG9tKgkJICwKICAgIGludCAJCSAsCiAgICBYdFNlbGVjdGlvbkNhbGxiYWNr
UHJvYyAgLAogICAgWHRQb2ludGVyKgkJICwKICAgIFRpbWUgCQkgCgopOwoKZXh0ZXJuIHZvaWQg
WHRBcHBTZXRTZWxlY3Rpb25UaW1lb3V0KAoKICAgIFh0QXBwQ29udGV4dCAJICwKICAgIHVuc2ln
bmVkIGxvbmcgCSAKCik7CgpleHRlcm4gdm9pZCBYdFNldFNlbGVjdGlvblRpbWVvdXQoICAKCiAg
ICB1bnNpZ25lZCBsb25nIAkgCgopOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWHRBcHBHZXRTZWxl
Y3Rpb25UaW1lb3V0KAoKICAgIFh0QXBwQ29udGV4dCAJIAoKKTsKCmV4dGVybiB1bnNpZ25lZCBs
b25nIFh0R2V0U2VsZWN0aW9uVGltZW91dCggIAoKICAgIHZvaWQKCik7CgpleHRlcm4gWFNlbGVj
dGlvblJlcXVlc3RFdmVudCAqWHRHZXRTZWxlY3Rpb25SZXF1ZXN0KAoKICAgIFdpZGdldCAJCSAs
CiAgICBBdG9tIAkJICwKICAgIFh0UmVxdWVzdElkIAkgCgopOwoKZXh0ZXJuIHZvaWQgWHRHZXRT
ZWxlY3Rpb25WYWx1ZUluY3JlbWVudGFsKAoKICAgIFdpZGdldCAJCSAsCiAgICBBdG9tIAkJICwK
ICAgIEF0b20gCQkgLAogICAgWHRTZWxlY3Rpb25DYWxsYmFja1Byb2MgICwKICAgIFh0UG9pbnRl
ciAJCSAsCiAgICBUaW1lIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0R2V0U2VsZWN0aW9uVmFsdWVz
SW5jcmVtZW50YWwoCgogICAgV2lkZ2V0IAkJICwKICAgIEF0b20gCQkgLAogICAgQXRvbSoJCSAs
CiAgICBpbnQgCQkgLAogICAgWHRTZWxlY3Rpb25DYWxsYmFja1Byb2MgICwKICAgIFh0UG9pbnRl
cioJCSAsCiAgICBUaW1lIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0U2V0U2VsZWN0aW9uUGFyYW1l
dGVycygKCiAgICBXaWRnZXQJCSAsCiAgICBBdG9tCQkgLAogICAgQXRvbQkJICwKICAgIFh0UG9p
bnRlcgkJICwKICAgIHVuc2lnbmVkIGxvbmcJICwKICAgIGludAkJCSAKCik7CgpleHRlcm4gdm9p
ZCBYdEdldFNlbGVjdGlvblBhcmFtZXRlcnMoCgogICAgV2lkZ2V0CQkgLAogICAgQXRvbQkJICwK
ICAgIFh0UmVxdWVzdElkCQkgLAogICAgQXRvbSoJCSAsCiAgICBYdFBvaW50ZXIqCQkgLAogICAg
dW5zaWduZWQgbG9uZyoJICwKICAgIGludCoJCSAKCik7CgpleHRlcm4gdm9pZCBYdENyZWF0ZVNl
bGVjdGlvblJlcXVlc3QoCgogICAgV2lkZ2V0CQkgLAogICAgQXRvbQkJIAoKKTsKCmV4dGVybiB2
b2lkIFh0U2VuZFNlbGVjdGlvblJlcXVlc3QoCgogICAgV2lkZ2V0CQkgLAogICAgQXRvbQkJICwK
ICAgIFRpbWUJCSAKCik7CgpleHRlcm4gdm9pZCBYdENhbmNlbFNlbGVjdGlvblJlcXVlc3QoCgog
ICAgV2lkZ2V0CQkgLAogICAgQXRvbQkJIAoKKTsKCmV4dGVybiBBdG9tIFh0UmVzZXJ2ZVByb3Bl
cnR5QXRvbSgKCiAgICBXaWRnZXQJCSAKCik7CgpleHRlcm4gdm9pZCBYdFJlbGVhc2VQcm9wZXJ0
eUF0b20oCgogICAgV2lkZ2V0CQkgLAogICAgQXRvbQkJIAoKKTsKCmV4dGVybiB2b2lkIFh0R3Jh
YktleSgKCiAgICBXaWRnZXQgCQkgLAogICAgdW5zaWduZWQgaW50ICAJCSAsCiAgICBNb2RpZmll
cnMJIAkgLAogICAgaW50ICAJCSAsCiAgICBpbnQgCQkgLAogICAgaW50IAkJIAoKKTsKCmV4dGVy
biB2b2lkIFh0VW5ncmFiS2V5KAoKICAgIFdpZGdldCAJCSAsCiAgICB1bnNpZ25lZCBpbnQgIAkJ
ICwKICAgIE1vZGlmaWVycwkgCSAKCik7CgpleHRlcm4gaW50IFh0R3JhYktleWJvYXJkKAoKICAg
IFdpZGdldCAJCSAsCiAgICBpbnQgIAkJICwKICAgIGludCAJCSAsCiAgICBpbnQgCQkgLAogICAg
VGltZSAJCSAKCik7CgpleHRlcm4gdm9pZCBYdFVuZ3JhYktleWJvYXJkKAoKICAgIFdpZGdldCAJ
CSAsCiAgICBUaW1lIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0R3JhYkJ1dHRvbigKCiAgICBXaWRn
ZXQgCQkgLAogICAgaW50IAkJICwKICAgIE1vZGlmaWVycwkgCSAsCiAgICBpbnQgIAkJICwKICAg
IHVuc2lnbmVkIGludAkgLAogICAgaW50IAkJICwKICAgIGludCAJCSAsCiAgICBXaW5kb3cgCQkg
LAogICAgQ3Vyc29yIAkJIAoKKTsKCmV4dGVybiB2b2lkIFh0VW5ncmFiQnV0dG9uKAoKICAgIFdp
ZGdldCAJCSAsCiAgICB1bnNpZ25lZCBpbnQJICwKICAgIE1vZGlmaWVycwkgCSAKCik7CgpleHRl
cm4gaW50IFh0R3JhYlBvaW50ZXIoCgogICAgV2lkZ2V0IAkJICwKICAgIGludCAgCQkgLAogICAg
dW5zaWduZWQgaW50CSAsCiAgICBpbnQgCQkgLAogICAgaW50IAkJICwKICAgIFdpbmRvdyAJCSAs
CiAgICBDdXJzb3IgCQkgLAogICAgVGltZSAJCSAKCik7CgpleHRlcm4gdm9pZCBYdFVuZ3JhYlBv
aW50ZXIoCgogICAgV2lkZ2V0IAkJICwKICAgIFRpbWUgCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRH
ZXRBcHBsaWNhdGlvbk5hbWVBbmRDbGFzcygKCiAgICBEaXNwbGF5KgkJICwKICAgIFN0cmluZyoJ
CSAsCiAgICBTdHJpbmcqCQkgCgopOwoKZXh0ZXJuIHZvaWQgWHRSZWdpc3RlckRyYXdhYmxlKAoK
ICAgIERpc3BsYXkqCQkgLAogICAgRHJhd2FibGUJCSAsCiAgICBXaWRnZXQJCSAKCik7CgpleHRl
cm4gdm9pZCBYdFVucmVnaXN0ZXJEcmF3YWJsZSgKCiAgICBEaXNwbGF5KgkJICwKICAgIERyYXdh
YmxlCQkgCgopOwoKZXh0ZXJuIFdpZGdldCBYdEhvb2tzT2ZEaXNwbGF5KAoKICAgIERpc3BsYXkq
CQkgCgopOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgU3RyaW5nIHR5cGU7CiAgICBXaWRnZXQgd2lk
Z2V0OwogICAgQXJnTGlzdCBhcmdzOwogICAgQ2FyZGluYWwgbnVtX2FyZ3M7Cn0gWHRDcmVhdGVI
b29rRGF0YVJlYywgKlh0Q3JlYXRlSG9va0RhdGE7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBTdHJp
bmcgdHlwZTsKICAgIFdpZGdldCB3aWRnZXQ7CiAgICBYdFBvaW50ZXIgZXZlbnRfZGF0YTsKICAg
IENhcmRpbmFsIG51bV9ldmVudF9kYXRhOwp9IFh0Q2hhbmdlSG9va0RhdGFSZWMsICpYdENoYW5n
ZUhvb2tEYXRhOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgV2lkZ2V0IG9sZCwgcmVxOwogICAgQXJn
TGlzdCBhcmdzOwogICAgQ2FyZGluYWwgbnVtX2FyZ3M7Cn0gWHRDaGFuZ2VIb29rU2V0VmFsdWVz
RGF0YVJlYywgKlh0Q2hhbmdlSG9va1NldFZhbHVlc0RhdGE7Cgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICBTdHJpbmcgdHlwZTsKICAgIFdpZGdldCB3aWRnZXQ7CiAgICBYdEdlb21ldHJ5TWFzayBjaGFu
Z2VNYXNrOwogICAgWFdpbmRvd0NoYW5nZXMgY2hhbmdlczsKfSBYdENvbmZpZ3VyZUhvb2tEYXRh
UmVjLCAqWHRDb25maWd1cmVIb29rRGF0YTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFN0cmluZyB0
eXBlOwogICAgV2lkZ2V0IHdpZGdldDsKICAgIFh0V2lkZ2V0R2VvbWV0cnkqIHJlcXVlc3Q7CiAg
ICBYdFdpZGdldEdlb21ldHJ5KiByZXBseTsKICAgIFh0R2VvbWV0cnlSZXN1bHQgcmVzdWx0Owp9
IFh0R2VvbWV0cnlIb29rRGF0YVJlYywgKlh0R2VvbWV0cnlIb29rRGF0YTsKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgIFN0cmluZyB0eXBlOwogICAgV2lkZ2V0IHdpZGdldDsKfSBYdERlc3Ryb3lIb29r
RGF0YVJlYywgKlh0RGVzdHJveUhvb2tEYXRhOwoKZXh0ZXJuIHZvaWQgWHRHZXREaXNwbGF5cygK
CiAgICBYdEFwcENvbnRleHQJICwKICAgIERpc3BsYXkqKioJCSAsCiAgICBDYXJkaW5hbCoJCSAK
Cik7CgpleHRlcm4gQm9vbGVhbiBYdFRvb2xraXRUaHJlYWRJbml0aWFsaXplKAoKICAgIHZvaWQK
Cik7CgpleHRlcm4gdm9pZCBYdEFwcFNldEV4aXRGbGFnKAoKICAgIFh0QXBwQ29udGV4dAkgCgop
OwoKZXh0ZXJuIEJvb2xlYW4gWHRBcHBHZXRFeGl0RmxhZygKCiAgICBYdEFwcENvbnRleHQJIAoK
KTsKCmV4dGVybiB2b2lkIFh0QXBwTG9jaygKCiAgICBYdEFwcENvbnRleHQJIAoKKTsKCmV4dGVy
biB2b2lkIFh0QXBwVW5sb2NrKAoKICAgIFh0QXBwQ29udGV4dAkgCgopOwoKIAoKCgoKIAoKZXh0
ZXJuIEJvb2xlYW4gWHRDdnRTdHJpbmdUb0FjY2VsZXJhdG9yVGFibGUoCgogICAgRGlzcGxheSoJ
ICwKICAgIFhybVZhbHVlUHRyICAsCSAKICAgIENhcmRpbmFsKiAgICAsCQogICAgWHJtVmFsdWVQ
dHIJICwKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYdFBvaW50ZXIqCSAKCik7CgpleHRlcm4gQm9v
bGVhbiBYdEN2dFN0cmluZ1RvQXRvbSgKCiAgICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIg
ICwJIAogICAgQ2FyZGluYWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQ
dHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q3Z0U3RyaW5nVG9C
b29sKAoKICAgIERpc3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCog
ICAgLAkKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVy
KgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRDdnRTdHJpbmdUb0Jvb2xlYW4oCgogICAgRGlzcGxh
eSoJICwKICAgIFhybVZhbHVlUHRyICAsCSAKICAgIENhcmRpbmFsKiAgICAsCQogICAgWHJtVmFs
dWVQdHIJICwKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYdFBvaW50ZXIqCSAKCik7CgpleHRlcm4g
Qm9vbGVhbiBYdEN2dFN0cmluZ1RvQ29tbWFuZEFyZ0FycmF5KAoKICAgIERpc3BsYXkqCSAsCiAg
ICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRyCSAs
CiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4g
WHRDdnRTdHJpbmdUb0N1cnNvcigKCiAgICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJ
IAogICAgQ2FyZGluYWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJ
ICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q3Z0U3RyaW5nVG9EaW1l
bnNpb24oCgogICAgRGlzcGxheSoJICwKICAgIFhybVZhbHVlUHRyICAsCSAKICAgIENhcmRpbmFs
KiAgICAsCQogICAgWHJtVmFsdWVQdHIJICwKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYdFBvaW50
ZXIqCSAKCik7CgpleHRlcm4gQm9vbGVhbiBYdEN2dFN0cmluZ1RvRGlyZWN0b3J5U3RyaW5nKAoK
ICAgIERpc3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAgLAkK
ICAgIFhybVZhbHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkgCgop
OwoKZXh0ZXJuIEJvb2xlYW4gWHRDdnRTdHJpbmdUb0Rpc3BsYXkoCgogICAgRGlzcGxheSoJICwK
ICAgIFhybVZhbHVlUHRyICAsCSAKICAgIENhcmRpbmFsKiAgICAsCQogICAgWHJtVmFsdWVQdHIJ
ICwKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYdFBvaW50ZXIqCSAKCik7CgpleHRlcm4gQm9vbGVh
biBYdEN2dFN0cmluZ1RvRmlsZSgKCiAgICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJ
IAogICAgQ2FyZGluYWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJ
ICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q3Z0U3RyaW5nVG9GbG9h
dCgKCiAgICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAg
ICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJ
IAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q3Z0U3RyaW5nVG9Gb250KAoKICAgIERpc3BsYXkqCSAs
CiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRy
CSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xl
YW4gWHRDdnRTdHJpbmdUb0ZvbnRTZXQoCgogICAgRGlzcGxheSoJICwKICAgIFhybVZhbHVlUHRy
ICAsCSAKICAgIENhcmRpbmFsKiAgICAsCQogICAgWHJtVmFsdWVQdHIJICwKICAgIFhybVZhbHVl
UHRyCSAsCiAgICBYdFBvaW50ZXIqCSAKCik7CgpleHRlcm4gQm9vbGVhbiBYdEN2dFN0cmluZ1Rv
Rm9udFN0cnVjdCgKCiAgICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJIAogICAgQ2Fy
ZGluYWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0
UG9pbnRlcioJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q3Z0U3RyaW5nVG9HcmF2aXR5KAoKICAg
IERpc3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAgLAogICAgQ2FyZGluYWwqICAgICwJCiAgICBY
cm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCmV4
dGVybiBCb29sZWFuIFh0Q3Z0U3RyaW5nVG9Jbml0aWFsU3RhdGUoCgogICAgRGlzcGxheSoJICwK
ICAgIFhybVZhbHVlUHRyICAsCSAKICAgIENhcmRpbmFsKiAgICAsCQogICAgWHJtVmFsdWVQdHIJ
ICwKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYdFBvaW50ZXIqCSAKCik7CgpleHRlcm4gQm9vbGVh
biBYdEN2dFN0cmluZ1RvSW50KAoKICAgIERpc3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAgLAkg
CiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0cgkg
LAogICAgWHRQb2ludGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRDdnRTdHJpbmdUb1BpeGVs
KAoKICAgIERpc3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAg
LAkKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkg
CgopOwoKCgpleHRlcm4gQm9vbGVhbiBYdEN2dFN0cmluZ1RvUmVzdGFydFN0eWxlKAoKICAgIERp
c3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhy
bVZhbHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKZXh0
ZXJuIEJvb2xlYW4gWHRDdnRTdHJpbmdUb1Nob3J0KAoKICAgIERpc3BsYXkqCSAsCiAgICBYcm1W
YWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRyCSAsCiAgICBY
cm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRDdnRT
dHJpbmdUb1RyYW5zbGF0aW9uVGFibGUoCgogICAgRGlzcGxheSoJICwKICAgIFhybVZhbHVlUHRy
ICAsCSAKICAgIENhcmRpbmFsKiAgICAsCQogICAgWHJtVmFsdWVQdHIJICwKICAgIFhybVZhbHVl
UHRyCSAsCiAgICBYdFBvaW50ZXIqCSAKCik7CgpleHRlcm4gQm9vbGVhbiBYdEN2dFN0cmluZ1Rv
VW5zaWduZWRDaGFyKAoKICAgIERpc3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBD
YXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAg
WHRQb2ludGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRDdnRTdHJpbmdUb1Zpc3VhbCgKCiAg
ICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAgICwJCiAg
ICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsK
CiAKCmV4dGVybiBCb29sZWFuIFh0Q3Z0SW50VG9Cb29sKAoKICAgIERpc3BsYXkqCSAsCiAgICBY
cm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRyCSAsCiAg
ICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRD
dnRJbnRUb0Jvb2xlYW4oCgogICAgRGlzcGxheSoJICwKICAgIFhybVZhbHVlUHRyICAsCSAKICAg
IENhcmRpbmFsKiAgICAsCQogICAgWHJtVmFsdWVQdHIJICwKICAgIFhybVZhbHVlUHRyCSAsCiAg
ICBYdFBvaW50ZXIqCSAKCik7CgpleHRlcm4gQm9vbGVhbiBYdEN2dEludFRvQ29sb3IoCgogICAg
RGlzcGxheSoJICwKICAgIFhybVZhbHVlUHRyICAsCSAKICAgIENhcmRpbmFsKiAgICAsCQogICAg
WHJtVmFsdWVQdHIJICwKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYdFBvaW50ZXIqCSAKCik7CgoK
CmV4dGVybiBCb29sZWFuIFh0Q3Z0SW50VG9GbG9hdCgKCiAgICBEaXNwbGF5KgkgLAogICAgWHJt
VmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAg
WHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCmV4dGVybiBCb29sZWFuIFh0Q3Z0
SW50VG9Gb250KAoKICAgIERpc3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJk
aW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQ
b2ludGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRDdnRJbnRUb1BpeGVsKAoKICAgIERpc3Bs
YXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhybVZh
bHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKZXh0ZXJu
IEJvb2xlYW4gWHRDdnRJbnRUb1BpeG1hcCgKCiAgICBEaXNwbGF5KgkgLAogICAgWHJtVmFsdWVQ
dHIgICwJIAogICAgQ2FyZGluYWwqICAgICwJCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHJtVmFs
dWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCgoKZXh0ZXJuIEJvb2xlYW4gWHRDdnRJbnRU
b1Nob3J0KAoKICAgIERpc3BsYXkqCSAsCiAgICBYcm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5h
bCogICAgLAkKICAgIFhybVZhbHVlUHRyCSAsCiAgICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2lu
dGVyKgkgCgopOwoKZXh0ZXJuIEJvb2xlYW4gWHRDdnRJbnRUb1Vuc2lnbmVkQ2hhcigKCiAgICBE
aXNwbGF5KgkgLAogICAgWHJtVmFsdWVQdHIgICwJIAogICAgQ2FyZGluYWwqICAgICwJCiAgICBY
cm1WYWx1ZVB0cgkgLAogICAgWHJtVmFsdWVQdHIJICwKICAgIFh0UG9pbnRlcioJIAoKKTsKCiAK
CmV4dGVybiBCb29sZWFuIFh0Q3Z0Q29sb3JUb1BpeGVsKAoKICAgIERpc3BsYXkqCSAsCiAgICBY
cm1WYWx1ZVB0ciAgLAkgCiAgICBDYXJkaW5hbCogICAgLAkKICAgIFhybVZhbHVlUHRyCSAsCiAg
ICBYcm1WYWx1ZVB0cgkgLAogICAgWHRQb2ludGVyKgkgCgopOwoKIAoKCgoKfSAKCgogCiMgMjMg
Ii91c3IvWDExUjYvaW5jbHVkZS9YbS9YbS5oIiAyCgojIDEgIi91c3IvWDExUjYvaW5jbHVkZS9Y
MTEvU2hlbGwuaCIgMQogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIyAxICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1NNL1NNbGliLmgiIDEKIAoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIyAxICIvdXNyL1gxMVI2L2luY2x1
ZGUvWDExL1NNL1NNLmgiIDEKIAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
IAoKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzcgIi91c3Iv
WDExUjYvaW5jbHVkZS9YMTEvU00vU01saWIuaCIgMgoKIyAxICIvdXNyL1gxMVI2L2luY2x1ZGUv
WDExL0lDRS9JQ0VsaWIuaCIgMQogCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IyAxICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL0lDRS9JQ0UuaCIgMQogCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDM1ICIvdXNyL1gxMVI2L2lu
Y2x1ZGUvWDExL0lDRS9JQ0VsaWIuaCIgMgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKkljZVBvaW50
ZXI7CgoKCgp0eXBlZGVmIGVudW0gewogICAgSWNlUG9BdXRoSGF2ZVJlcGx5LAogICAgSWNlUG9B
dXRoUmVqZWN0ZWQsCiAgICBJY2VQb0F1dGhGYWlsZWQsCiAgICBJY2VQb0F1dGhEb25lQ2xlYW51
cAp9IEljZVBvQXV0aFN0YXR1czsKCnR5cGVkZWYgZW51bSB7CiAgICBJY2VQYUF1dGhDb250aW51
ZSwKICAgIEljZVBhQXV0aEFjY2VwdGVkLAogICAgSWNlUGFBdXRoUmVqZWN0ZWQsCiAgICBJY2VQ
YUF1dGhGYWlsZWQKfSBJY2VQYUF1dGhTdGF0dXM7Cgp0eXBlZGVmIGVudW0gewogICAgSWNlQ29u
bmVjdFBlbmRpbmcsCiAgICBJY2VDb25uZWN0QWNjZXB0ZWQsCiAgICBJY2VDb25uZWN0UmVqZWN0
ZWQsCiAgICBJY2VDb25uZWN0SU9FcnJvcgp9IEljZUNvbm5lY3RTdGF0dXM7Cgp0eXBlZGVmIGVu
dW0gewogICAgSWNlUHJvdG9jb2xTZXR1cFN1Y2Nlc3MsCiAgICBJY2VQcm90b2NvbFNldHVwRmFp
bHVyZSwKICAgIEljZVByb3RvY29sU2V0dXBJT0Vycm9yLAogICAgSWNlUHJvdG9jb2xBbHJlYWR5
QWN0aXZlCn0gSWNlUHJvdG9jb2xTZXR1cFN0YXR1czsKCnR5cGVkZWYgZW51bSB7CiAgICBJY2VB
Y2NlcHRTdWNjZXNzLAogICAgSWNlQWNjZXB0RmFpbHVyZSwKICAgIEljZUFjY2VwdEJhZE1hbGxv
Ywp9IEljZUFjY2VwdFN0YXR1czsKCnR5cGVkZWYgZW51bSB7CiAgICBJY2VDbG9zZWROb3csCiAg
ICBJY2VDbG9zZWRBU0FQLAogICAgSWNlQ29ubmVjdGlvbkluVXNlLAogICAgSWNlU3RhcnRlZFNo
dXRkb3duTmVnb3RpYXRpb24KfSBJY2VDbG9zZVN0YXR1czsKCnR5cGVkZWYgZW51bSB7CiAgICBJ
Y2VQcm9jZXNzTWVzc2FnZXNTdWNjZXNzLAogICAgSWNlUHJvY2Vzc01lc3NhZ2VzSU9FcnJvciwK
ICAgIEljZVByb2Nlc3NNZXNzYWdlc0Nvbm5lY3Rpb25DbG9zZWQKfSBJY2VQcm9jZXNzTWVzc2Fn
ZXNTdGF0dXM7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICB1bnNpZ25lZCBsb25nCXNlcXVlbmNlX29m
X3JlcXVlc3Q7CiAgICBpbnQJCQltYWpvcl9vcGNvZGVfb2ZfcmVxdWVzdDsKICAgIGludAkJCW1p
bm9yX29wY29kZV9vZl9yZXF1ZXN0OwogICAgSWNlUG9pbnRlcgkJcmVwbHk7Cn0gSWNlUmVwbHlX
YWl0SW5mbzsKCnR5cGVkZWYgc3RydWN0IF9JY2VDb25uICpJY2VDb25uOwp0eXBlZGVmIHN0cnVj
dCBfSWNlTGlzdGVuT2JqICpJY2VMaXN0ZW5PYmo7Cgp0eXBlZGVmIHZvaWQgKCpJY2VXYXRjaFBy
b2MpICgKCiAgICBJY2VDb25uCQkgLAogICAgSWNlUG9pbnRlcgkJICwKICAgIGludCAJCSAsCiAg
ICBJY2VQb2ludGVyICoJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKkljZVBvUHJvY2Vzc01zZ1Byb2Mp
ICgKCiAgICBJY2VDb25uIAkJICwKICAgIEljZVBvaW50ZXIJCSAsCiAgICBpbnQJCQkgLAogICAg
dW5zaWduZWQgbG9uZwkgLAogICAgaW50IAkJICwKICAgIEljZVJlcGx5V2FpdEluZm8gKiAgICwK
ICAgIGludCAgKgkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKkljZVBhUHJvY2Vzc01zZ1Byb2MpICgK
CiAgICBJY2VDb25uIAkJICwKICAgIEljZVBvaW50ZXIJCSAsCiAgICBpbnQJCQkgLAogICAgdW5z
aWduZWQgbG9uZwkgLAogICAgaW50IAkJIAoKKTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIGludAkJ
CSBtYWpvcl92ZXJzaW9uOwogICAgaW50CQkJIG1pbm9yX3ZlcnNpb247CiAgICBJY2VQb1Byb2Nl
c3NNc2dQcm9jICBwcm9jZXNzX21zZ19wcm9jOwp9IEljZVBvVmVyc2lvblJlYzsKCnR5cGVkZWYg
c3RydWN0IHsKICAgIGludAkJCSBtYWpvcl92ZXJzaW9uOwogICAgaW50CQkJIG1pbm9yX3ZlcnNp
b247CiAgICBJY2VQYVByb2Nlc3NNc2dQcm9jICBwcm9jZXNzX21zZ19wcm9jOwp9IEljZVBhVmVy
c2lvblJlYzsKCnR5cGVkZWYgSWNlUG9BdXRoU3RhdHVzICgqSWNlUG9BdXRoUHJvYykgKAoKICAg
IEljZUNvbm4JCSAsCiAgICBJY2VQb2ludGVyICoJICwKICAgIGludCAJCSAsCiAgICBpbnQgCQkg
LAogICAgaW50CQkJICwKICAgIEljZVBvaW50ZXIJCSAsCiAgICBpbnQgKgkJICwKICAgIEljZVBv
aW50ZXIgKgkgLAogICAgY2hhciAqKgkJIAoKKTsKCnR5cGVkZWYgSWNlUGFBdXRoU3RhdHVzICgq
SWNlUGFBdXRoUHJvYykgKAoKICAgIEljZUNvbm4JCSAsCiAgICBJY2VQb2ludGVyICoJICwKICAg
IGludCAJCSAsCiAgICBpbnQJCQkgLAogICAgSWNlUG9pbnRlcgkJICwKICAgIGludCAqCQkgLAog
ICAgSWNlUG9pbnRlciAqCSAsCiAgICBjaGFyICoqCQkgCgopOwoKdHlwZWRlZiBpbnQgICgqSWNl
SG9zdEJhc2VkQXV0aFByb2MpICgKCiAgICBjaGFyICoJCSAKCik7Cgp0eXBlZGVmIGludCAgKCpJ
Y2VQcm90b2NvbFNldHVwUHJvYykgKAoKICAgIEljZUNvbm4gCQkgLAogICAgaW50CQkJICwKICAg
IGludAkJCSAsCiAgICBjaGFyICoJCSAsCiAgICBjaGFyICoJCSAsCiAgICBJY2VQb2ludGVyICoJ
ICwKICAgIGNoYXIgKioJCSAKCik7Cgp0eXBlZGVmIHZvaWQgKCpJY2VQcm90b2NvbEFjdGl2YXRl
UHJvYykgKAoKICAgIEljZUNvbm4gCQkgLAogICAgSWNlUG9pbnRlcgkJIAoKKTsKCnR5cGVkZWYg
dm9pZCAoKkljZUlPRXJyb3JQcm9jKSAoCgogICAgSWNlQ29ubiAJCSAKCik7Cgp0eXBlZGVmIHZv
aWQgKCpJY2VQaW5nUmVwbHlQcm9jKSAoCgogICAgSWNlQ29ubiAJCSAsCiAgICBJY2VQb2ludGVy
CQkgCgopOwoKdHlwZWRlZiB2b2lkICgqSWNlRXJyb3JIYW5kbGVyKSAoCgogICAgSWNlQ29ubiAJ
CSAsCiAgICBpbnQgCQkgLAogICAgaW50CQkJICwKICAgIHVuc2lnbmVkIGxvbmcgCSAsCiAgICBp
bnQgCQkgLAogICAgaW50CQkJICwKICAgIEljZVBvaW50ZXIJCSAKCik7Cgp0eXBlZGVmIHZvaWQg
KCpJY2VJT0Vycm9ySGFuZGxlcikgKAoKICAgIEljZUNvbm4gCQkgCgopOwoKCiAKCgoKZXh0ZXJu
ICJDIiB7IAoKZXh0ZXJuIGludCBJY2VSZWdpc3RlckZvclByb3RvY29sU2V0dXAgKAoKICAgIGNo
YXIgKgkJCSAsCiAgICBjaGFyICoJCQkgLAogICAgY2hhciAqCQkJICwKICAgIGludAkJCQkgLAog
ICAgSWNlUG9WZXJzaW9uUmVjICoJCSAsCiAgICBpbnQJCQkJICwKICAgIGNoYXIgKioJCQkgLAog
ICAgSWNlUG9BdXRoUHJvYyAqCQkgLAogICAgSWNlSU9FcnJvclByb2MJCSAKCik7CgpleHRlcm4g
aW50IEljZVJlZ2lzdGVyRm9yUHJvdG9jb2xSZXBseSAoCgogICAgY2hhciAqCQkJICwKICAgIGNo
YXIgKgkJCSAsCiAgICBjaGFyICoJCQkgLAogICAgaW50CQkJCSAsCiAgICBJY2VQYVZlcnNpb25S
ZWMgKgkJICwKICAgIGludAkJCQkgLAogICAgY2hhciAqKgkJCSAsCiAgICBJY2VQYUF1dGhQcm9j
ICoJCSAsCiAgICBJY2VIb3N0QmFzZWRBdXRoUHJvYwkgLAogICAgSWNlUHJvdG9jb2xTZXR1cFBy
b2MJICwKICAgIEljZVByb3RvY29sQWN0aXZhdGVQcm9jCSAsCiAgICBJY2VJT0Vycm9yUHJvYwkJ
IAoKKTsKCmV4dGVybiBJY2VDb25uIEljZU9wZW5Db25uZWN0aW9uICgKCiAgICBjaGFyICoJCSAs
CiAgICBJY2VQb2ludGVyCQkgLAogICAgaW50IAkJICwKICAgIGludAkJCSAsCiAgICBpbnQJCQkg
LAogICAgY2hhciAqCQkgCgopOwoKZXh0ZXJuIEljZVBvaW50ZXIgSWNlR2V0Q29ubmVjdGlvbkNv
bnRleHQgKAoKICAgIEljZUNvbm4JCSAKCik7CgpleHRlcm4gaW50ICBJY2VMaXN0ZW5Gb3JDb25u
ZWN0aW9ucyAoCgogICAgaW50ICoJCSAsCiAgICBJY2VMaXN0ZW5PYmogKioJICwKICAgIGludAkJ
CSAsCiAgICBjaGFyICoJCSAKCik7CgpleHRlcm4gaW50ICBJY2VMaXN0ZW5Gb3JXZWxsS25vd25D
b25uZWN0aW9ucyAoCgogICAgY2hhciAqCQkgLAogICAgaW50ICoJCSAsCiAgICBJY2VMaXN0ZW5P
YmogKioJICwKICAgIGludAkJCSAsCiAgICBjaGFyICoJCSAKCik7CgpleHRlcm4gaW50IEljZUdl
dExpc3RlbkNvbm5lY3Rpb25OdW1iZXIgKAoKICAgIEljZUxpc3Rlbk9iagkgCgopOwoKZXh0ZXJu
IGNoYXIgKkljZUdldExpc3RlbkNvbm5lY3Rpb25TdHJpbmcgKAoKICAgIEljZUxpc3Rlbk9iagkg
CgopOwoKZXh0ZXJuIGNoYXIgKkljZUNvbXBvc2VOZXR3b3JrSWRMaXN0ICgKCiAgICBpbnQJCQkg
LAogICAgSWNlTGlzdGVuT2JqICoJIAoKKTsKCmV4dGVybiB2b2lkIEljZUZyZWVMaXN0ZW5PYmpz
ICgKCiAgICBpbnQJCQkgLAogICAgSWNlTGlzdGVuT2JqICoJIAoKKTsKCmV4dGVybiB2b2lkIElj
ZVNldEhvc3RCYXNlZEF1dGhQcm9jICgKCiAgICBJY2VMaXN0ZW5PYmoJCSAsCiAgICBJY2VIb3N0
QmFzZWRBdXRoUHJvYyAgIAkgCgopOwoKZXh0ZXJuIEljZUNvbm4gSWNlQWNjZXB0Q29ubmVjdGlv
biAoCgogICAgSWNlTGlzdGVuT2JqCSAsCiAgICBJY2VBY2NlcHRTdGF0dXMgKgkgCgopOwoKZXh0
ZXJuIHZvaWQgSWNlU2V0U2h1dGRvd25OZWdvdGlhdGlvbiAoCgogICAgSWNlQ29ubgkJICwKICAg
IGludCAJCSAKCik7CgpleHRlcm4gaW50ICBJY2VDaGVja1NodXRkb3duTmVnb3RpYXRpb24gKAoK
ICAgIEljZUNvbm4JCSAKCik7CgpleHRlcm4gSWNlQ2xvc2VTdGF0dXMgSWNlQ2xvc2VDb25uZWN0
aW9uICgKCiAgICBJY2VDb25uCQkgCgopOwoKZXh0ZXJuIGludCAgSWNlQWRkQ29ubmVjdGlvbldh
dGNoICgKCiAgICBJY2VXYXRjaFByb2MJCSAsCiAgICBJY2VQb2ludGVyCQkJIAoKKTsKCmV4dGVy
biB2b2lkIEljZVJlbW92ZUNvbm5lY3Rpb25XYXRjaCAoCgogICAgSWNlV2F0Y2hQcm9jCQkgLAog
ICAgSWNlUG9pbnRlcgkJCSAKCik7CgpleHRlcm4gSWNlUHJvdG9jb2xTZXR1cFN0YXR1cyBJY2VQ
cm90b2NvbFNldHVwICgKCiAgICBJY2VDb25uCQkgLAogICAgaW50IAkJICwKICAgIEljZVBvaW50
ZXIJCSAsCiAgICBpbnQgCQkgLAogICAgaW50CSoJCSAsCiAgICBpbnQJKgkJICwKICAgIGNoYXIg
KioJCSAsCiAgICBjaGFyICoqCQkgLAogICAgaW50CQkJICwKICAgIGNoYXIgKgkJIAoKKTsKCmV4
dGVybiBpbnQgIEljZVByb3RvY29sU2h1dGRvd24gKAoKICAgIEljZUNvbm4JCSAsCiAgICBpbnQJ
CQkgCgopOwoKZXh0ZXJuIEljZVByb2Nlc3NNZXNzYWdlc1N0YXR1cyBJY2VQcm9jZXNzTWVzc2Fn
ZXMgKAoKICAgIEljZUNvbm4JCSAsCiAgICBJY2VSZXBseVdhaXRJbmZvICoJICwKICAgIGludCAg
KgkJIAoKKTsKCmV4dGVybiBpbnQgIEljZVBpbmcgKAoKICAgSWNlQ29ubgkJICwKICAgSWNlUGlu
Z1JlcGx5UHJvYwkgLAogICBJY2VQb2ludGVyCQkgCgopOwoKZXh0ZXJuIGNoYXIgKkljZUFsbG9j
U2NyYXRjaCAoCgogICBJY2VDb25uCQkgLAogICB1bnNpZ25lZCBsb25nCSAKCik7CgpleHRlcm4g
aW50IEljZUZsdXNoICgKCiAgIEljZUNvbm4JCSAKCik7CgpleHRlcm4gaW50IEljZUdldE91dEJ1
ZlNpemUgKAoKICAgSWNlQ29ubgkJIAoKKTsKCmV4dGVybiBpbnQgSWNlR2V0SW5CdWZTaXplICgK
CiAgIEljZUNvbm4JCSAKCik7CgpleHRlcm4gSWNlQ29ubmVjdFN0YXR1cyBJY2VDb25uZWN0aW9u
U3RhdHVzICgKCiAgICBJY2VDb25uCQkgCgopOwoKZXh0ZXJuIGNoYXIgKkljZVZlbmRvciAoCgog
ICAgSWNlQ29ubgkJIAoKKTsKCmV4dGVybiBjaGFyICpJY2VSZWxlYXNlICgKCiAgICBJY2VDb25u
CQkgCgopOwoKZXh0ZXJuIGludCBJY2VQcm90b2NvbFZlcnNpb24gKAoKICAgIEljZUNvbm4JCSAK
Cik7CgpleHRlcm4gaW50IEljZVByb3RvY29sUmV2aXNpb24gKAoKICAgIEljZUNvbm4JCSAKCik7
CgpleHRlcm4gaW50IEljZUNvbm5lY3Rpb25OdW1iZXIgKAoKICAgIEljZUNvbm4JCSAKCik7Cgpl
eHRlcm4gY2hhciAqSWNlQ29ubmVjdGlvblN0cmluZyAoCgogICAgSWNlQ29ubgkJIAoKKTsKCmV4
dGVybiB1bnNpZ25lZCBsb25nIEljZUxhc3RTZW50U2VxdWVuY2VOdW1iZXIgKAoKICAgIEljZUNv
bm4JCSAKCik7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBJY2VMYXN0UmVjZWl2ZWRTZXF1ZW5jZU51
bWJlciAoCgogICAgSWNlQ29ubgkJIAoKKTsKCmV4dGVybiBpbnQgIEljZVN3YXBwaW5nICgKCiAg
ICBJY2VDb25uCQkgCgopOwoKZXh0ZXJuIEljZUVycm9ySGFuZGxlciBJY2VTZXRFcnJvckhhbmRs
ZXIgKAoKICAgIEljZUVycm9ySGFuZGxlciAJIAoKKTsKCmV4dGVybiBJY2VJT0Vycm9ySGFuZGxl
ciBJY2VTZXRJT0Vycm9ySGFuZGxlciAoCgogICAgSWNlSU9FcnJvckhhbmRsZXIgCSAKCik7CgoK
IAoKCgpleHRlcm4gaW50ICBJY2VJbml0VGhyZWFkcyAoCgogICAgdm9pZAoKKTsKCmV4dGVybiB2
b2lkIEljZUFwcExvY2tDb25uICgKCiAgICBJY2VDb25uCQkgCgopOwoKZXh0ZXJuIHZvaWQgSWNl
QXBwVW5sb2NrQ29ubiAoCgogICAgSWNlQ29ubgkJIAoKKTsKCn0gCgoKIyAzOCAiL3Vzci9YMTFS
Ni9pbmNsdWRlL1gxMS9TTS9TTWxpYi5oIiAyCgoKCiAKCgoKdHlwZWRlZiBJY2VQb2ludGVyIFNt
UG9pbnRlcjsKCgogCgoKCnR5cGVkZWYgc3RydWN0IF9TbWNDb25uICpTbWNDb25uOwp0eXBlZGVm
IHN0cnVjdCBfU21zQ29ubiAqU21zQ29ubjsKCgogCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIGlu
dAkJbGVuZ3RoOwkJIAogICAgU21Qb2ludGVyICAgdmFsdWU7CQkgCn0gU21Qcm9wVmFsdWU7Cgp0
eXBlZGVmIHN0cnVjdCB7CiAgICBjaGFyCSpuYW1lOwkJIAogICAgY2hhcgkqdHlwZTsJCSAKICAg
IGludAkJbnVtX3ZhbHM7CSAKICAgIFNtUHJvcFZhbHVlICp2YWxzOwkJIAp9IFNtUHJvcDsKCgoM
CiAKCgoKdHlwZWRlZiBlbnVtIHsKICAgIFNtY0Nsb3NlZE5vdywKICAgIFNtY0Nsb3NlZEFTQVAs
CiAgICBTbWNDb25uZWN0aW9uSW5Vc2UKfSBTbWNDbG9zZVN0YXR1czsKCgoMCiAKCgoKdHlwZWRl
ZiB2b2lkICgqU21jU2F2ZVlvdXJzZWxmUHJvYykgKAoKICAgIFNtY0Nvbm4JCSAsCiAgICBTbVBv
aW50ZXIJCSAsCiAgICBpbnQgIAkJICwKICAgIGludCAJCSAsCiAgICBpbnQJCQkgLAogICAgaW50
IAkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlNtY1NhdmVZb3Vyc2VsZlBoYXNlMlByb2MpICgKCiAg
ICBTbWNDb25uCQkgLAogICAgU21Qb2ludGVyCQkgCgopOwoKdHlwZWRlZiB2b2lkICgqU21jSW50
ZXJhY3RQcm9jKSAoCgogICAgU21jQ29ubgkJICwKICAgIFNtUG9pbnRlcgkJIAoKKTsKCnR5cGVk
ZWYgdm9pZCAoKlNtY0RpZVByb2MpICgKCiAgICBTbWNDb25uCQkgLAogICAgU21Qb2ludGVyCQkg
CgopOwoKdHlwZWRlZiB2b2lkICgqU21jU2h1dGRvd25DYW5jZWxsZWRQcm9jKSAoCgogICAgU21j
Q29ubgkJICwKICAgIFNtUG9pbnRlcgkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlNtY1NhdmVDb21w
bGV0ZVByb2MpICgKCiAgICBTbWNDb25uCQkgLAogICAgU21Qb2ludGVyCQkgCgopOwoKdHlwZWRl
ZiB2b2lkICgqU21jUHJvcFJlcGx5UHJvYykgKAoKICAgIFNtY0Nvbm4JCSAsCiAgICBTbVBvaW50
ZXIJCSAsCiAgICBpbnQJCQkgLAogICAgU21Qcm9wICoqCQkgCgopOwoKCiAKCgoKdHlwZWRlZiBz
dHJ1Y3QgewoKICAgIHN0cnVjdCB7CglTbWNTYXZlWW91cnNlbGZQcm9jCSBjYWxsYmFjazsKCVNt
UG9pbnRlcgkJIGNsaWVudF9kYXRhOwogICAgfSBzYXZlX3lvdXJzZWxmOwoKICAgIHN0cnVjdCB7
CglTbWNEaWVQcm9jCQkgY2FsbGJhY2s7CglTbVBvaW50ZXIJCSBjbGllbnRfZGF0YTsKICAgIH0g
ZGllOwoKICAgIHN0cnVjdCB7CglTbWNTYXZlQ29tcGxldGVQcm9jCSBjYWxsYmFjazsKCVNtUG9p
bnRlcgkJIGNsaWVudF9kYXRhOwogICAgfSBzYXZlX2NvbXBsZXRlOwoKICAgIHN0cnVjdCB7CglT
bWNTaHV0ZG93bkNhbmNlbGxlZFByb2MgY2FsbGJhY2s7CglTbVBvaW50ZXIJCSBjbGllbnRfZGF0
YTsKICAgIH0gc2h1dGRvd25fY2FuY2VsbGVkOwoKfSBTbWNDYWxsYmFja3M7CgoKCgoKCgoMCiAK
CgoKdHlwZWRlZiBpbnQgICgqU21zUmVnaXN0ZXJDbGllbnRQcm9jKSAoCgogICAgU21zQ29ubiAJ
CSAsCiAgICBTbVBvaW50ZXIJCSAsCiAgICBjaGFyICoJCSAJCQkJICAgICAKCik7Cgp0eXBlZGVm
IHZvaWQgKCpTbXNJbnRlcmFjdFJlcXVlc3RQcm9jKSAoCgogICAgU21zQ29ubgkJICwKICAgIFNt
UG9pbnRlcgkJICwKICAgIGludAkJCSAKCik7Cgp0eXBlZGVmIHZvaWQgKCpTbXNJbnRlcmFjdERv
bmVQcm9jKSAoCgogICAgU21zQ29ubgkJICwKICAgIFNtUG9pbnRlcgkJICwKICAgIGludCAJCSAK
Cik7Cgp0eXBlZGVmIHZvaWQgKCpTbXNTYXZlWW91cnNlbGZSZXF1ZXN0UHJvYykgKAoKICAgIFNt
c0Nvbm4JCSAsCiAgICBTbVBvaW50ZXIJCSAsCiAgICBpbnQgIAkJICwKICAgIGludCAJCSAsCiAg
ICBpbnQJCQkgLAogICAgaW50IAkJICwKICAgIGludCAJCSAKCik7Cgp0eXBlZGVmIHZvaWQgKCpT
bXNTYXZlWW91cnNlbGZQaGFzZTJSZXF1ZXN0UHJvYykgKAoKICAgIFNtc0Nvbm4JCSAsCiAgICBT
bVBvaW50ZXIJCSAKCik7Cgp0eXBlZGVmIHZvaWQgKCpTbXNTYXZlWW91cnNlbGZEb25lUHJvYykg
KAoKICAgIFNtc0Nvbm4JCSAsCiAgICBTbVBvaW50ZXIJCSAsCiAgICBpbnQgCQkgCgopOwoKdHlw
ZWRlZiB2b2lkICgqU21zQ2xvc2VDb25uZWN0aW9uUHJvYykgKAoKICAgIFNtc0Nvbm4JCSAsCiAg
ICBTbVBvaW50ZXIJCSAsCiAgICBpbnQJCQkgLAogICAgY2hhciAqKgkJIAoKKTsKCnR5cGVkZWYg
dm9pZCAoKlNtc1NldFByb3BlcnRpZXNQcm9jKSAoCgogICAgU21zQ29ubgkJICwKICAgIFNtUG9p
bnRlcgkJICwKICAgIGludAkJCSAsCiAgICBTbVByb3AgKioJCSAKCik7Cgp0eXBlZGVmIHZvaWQg
KCpTbXNEZWxldGVQcm9wZXJ0aWVzUHJvYykgKAoKICAgIFNtc0Nvbm4JCSAsCiAgICBTbVBvaW50
ZXIJCSAsCiAgICBpbnQJCQkgLAogICAgY2hhciAqKgkJIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlNt
c0dldFByb3BlcnRpZXNQcm9jKSAoCgogICAgU21zQ29ubgkJICwKICAgIFNtUG9pbnRlcgkJIAoK
KTsKCgogCgoKCnR5cGVkZWYgc3RydWN0IHsKCiAgICBzdHJ1Y3QgewoJU21zUmVnaXN0ZXJDbGll
bnRQcm9jCWNhbGxiYWNrOwoJU21Qb2ludGVyCQltYW5hZ2VyX2RhdGE7CiAgICB9IHJlZ2lzdGVy
X2NsaWVudDsKCiAgICBzdHJ1Y3QgewoJU21zSW50ZXJhY3RSZXF1ZXN0UHJvYwljYWxsYmFjazsK
CVNtUG9pbnRlcgkJbWFuYWdlcl9kYXRhOwogICAgfSBpbnRlcmFjdF9yZXF1ZXN0OwoKICAgIHN0
cnVjdCB7CglTbXNJbnRlcmFjdERvbmVQcm9jCWNhbGxiYWNrOwoJU21Qb2ludGVyCQltYW5hZ2Vy
X2RhdGE7CiAgICB9IGludGVyYWN0X2RvbmU7CgogICAgc3RydWN0IHsKCVNtc1NhdmVZb3Vyc2Vs
ZlJlcXVlc3RQcm9jCWNhbGxiYWNrOwoJU21Qb2ludGVyCQkJbWFuYWdlcl9kYXRhOwogICAgfSBz
YXZlX3lvdXJzZWxmX3JlcXVlc3Q7CgogICAgc3RydWN0IHsKCVNtc1NhdmVZb3Vyc2VsZlBoYXNl
MlJlcXVlc3RQcm9jCWNhbGxiYWNrOwoJU21Qb2ludGVyCQkJCW1hbmFnZXJfZGF0YTsKICAgIH0g
c2F2ZV95b3Vyc2VsZl9waGFzZTJfcmVxdWVzdDsKCiAgICBzdHJ1Y3QgewoJU21zU2F2ZVlvdXJz
ZWxmRG9uZVByb2MJY2FsbGJhY2s7CglTbVBvaW50ZXIJCW1hbmFnZXJfZGF0YTsKICAgIH0gc2F2
ZV95b3Vyc2VsZl9kb25lOwoKICAgIHN0cnVjdCB7CglTbXNDbG9zZUNvbm5lY3Rpb25Qcm9jCWNh
bGxiYWNrOwoJU21Qb2ludGVyCQltYW5hZ2VyX2RhdGE7CiAgICB9IGNsb3NlX2Nvbm5lY3Rpb247
CgogICAgc3RydWN0IHsKCVNtc1NldFByb3BlcnRpZXNQcm9jCWNhbGxiYWNrOwoJU21Qb2ludGVy
CQltYW5hZ2VyX2RhdGE7CiAgICB9IHNldF9wcm9wZXJ0aWVzOwoKICAgIHN0cnVjdCB7CglTbXNE
ZWxldGVQcm9wZXJ0aWVzUHJvYwljYWxsYmFjazsKCVNtUG9pbnRlcgkJbWFuYWdlcl9kYXRhOwog
ICAgfSBkZWxldGVfcHJvcGVydGllczsKCiAgICBzdHJ1Y3QgewoJU21zR2V0UHJvcGVydGllc1By
b2MJY2FsbGJhY2s7CglTbVBvaW50ZXIJCW1hbmFnZXJfZGF0YTsKICAgIH0gZ2V0X3Byb3BlcnRp
ZXM7Cgp9IFNtc0NhbGxiYWNrczsKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgICgqU21zTmV3
Q2xpZW50UHJvYykgKAoKICAgIFNtc0Nvbm4gCQkgLAogICAgU21Qb2ludGVyCQkgLAogICAgdW5z
aWduZWQgbG9uZyAqCSAsCiAgICBTbXNDYWxsYmFja3MgKgkgLAogICAgY2hhciAqKgkJIAoKKTsK
CgoMCiAKCgoKdHlwZWRlZiB2b2lkICgqU21jRXJyb3JIYW5kbGVyKSAoCgogICAgU21jQ29ubgkJ
ICwKICAgIGludCAJCSAsCiAgICBpbnQJCQkgLAogICAgdW5zaWduZWQgbG9uZyAJICwKICAgIGlu
dCAJCSAsCiAgICBpbnQJCQkgLAogICAgU21Qb2ludGVyCQkgCgopOwoKdHlwZWRlZiB2b2lkICgq
U21zRXJyb3JIYW5kbGVyKSAoCgogICAgU21zQ29ubgkJICwKICAgIGludCAJCSAsCiAgICBpbnQJ
CQkgLAogICAgdW5zaWduZWQgbG9uZyAJICwKICAgIGludCAJCSAsCiAgICBpbnQJCQkgLAogICAg
U21Qb2ludGVyCQkgCgopOwoKCgwKIAoKCgpleHRlcm4gIkMiIHsgCgpleHRlcm4gU21jQ29ubiBT
bWNPcGVuQ29ubmVjdGlvbiAoCgogICAgY2hhciAqCQkgLAogICAgU21Qb2ludGVyCQkgLAogICAg
aW50CQkJICwKICAgIGludAkJCSAsCiAgICB1bnNpZ25lZCBsb25nCSAsCiAgICBTbWNDYWxsYmFj
a3MgKgkgLAogICAgY2hhciAqCQkgLAogICAgY2hhciAqKgkJICwKICAgIGludAkJCSAsCiAgICBj
aGFyICoJCSAKCik7CgpleHRlcm4gU21jQ2xvc2VTdGF0dXMgU21jQ2xvc2VDb25uZWN0aW9uICgK
CiAgICBTbWNDb25uCQkgLAogICAgaW50CQkJICwKICAgIGNoYXIgKioJCSAKCik7CgpleHRlcm4g
dm9pZCBTbWNNb2RpZnlDYWxsYmFja3MgKAoKICAgIFNtY0Nvbm4JCSAsCiAgICB1bnNpZ25lZCBs
b25nCSAsCiAgICBTbWNDYWxsYmFja3MgKgkgCgopOwoKZXh0ZXJuIHZvaWQgU21jU2V0UHJvcGVy
dGllcyAoCgogICAgU21jQ29ubgkJICwKICAgIGludCAgICAgIAkgICAgICAgICAsCiAgICBTbVBy
b3AgKioJCSAKCik7CgpleHRlcm4gdm9pZCBTbWNEZWxldGVQcm9wZXJ0aWVzICgKCiAgICBTbWND
b25uCQkgLAogICAgaW50ICAgICAgCSAgICAgICAgICwKICAgIGNoYXIgKioJCSAKCik7CgpleHRl
cm4gaW50ICBTbWNHZXRQcm9wZXJ0aWVzICgKCiAgICBTbWNDb25uCQkgLAogICAgU21jUHJvcFJl
cGx5UHJvYwkgLAogICAgU21Qb2ludGVyCQkgCgopOwoKZXh0ZXJuIGludCAgU21jSW50ZXJhY3RS
ZXF1ZXN0ICgKCiAgICBTbWNDb25uCQkgLAogICAgaW50CQkJICwKICAgIFNtY0ludGVyYWN0UHJv
YwkgLAogICAgU21Qb2ludGVyCQkgCgopOwoKZXh0ZXJuIHZvaWQgU21jSW50ZXJhY3REb25lICgK
CiAgICBTbWNDb25uCQkgLAogICAgaW50ICAJCSAKCik7CgpleHRlcm4gdm9pZCBTbWNSZXF1ZXN0
U2F2ZVlvdXJzZWxmICgKCiAgICBTbWNDb25uCQkgLAogICAgaW50CQkJICwKICAgIGludCAgCQkg
LAogICAgaW50CQkJICwKICAgIGludCAJCSAsCiAgICBpbnQgCQkgCgopOwoKZXh0ZXJuIGludCAg
U21jUmVxdWVzdFNhdmVZb3Vyc2VsZlBoYXNlMiAoCgogICAgU21jQ29ubgkJCSAsCiAgICBTbWNT
YXZlWW91cnNlbGZQaGFzZTJQcm9jCSAsCiAgICBTbVBvaW50ZXIJCQkgCgopOwoKZXh0ZXJuIHZv
aWQgU21jU2F2ZVlvdXJzZWxmRG9uZSAoCgogICAgU21jQ29ubgkJICwKICAgIGludCAJCSAKCik7
CgpleHRlcm4gaW50IFNtY1Byb3RvY29sVmVyc2lvbiAoCgogICAgU21jQ29ubgkJIAoKKTsKCmV4
dGVybiBpbnQgU21jUHJvdG9jb2xSZXZpc2lvbiAoCgogICAgU21jQ29ubgkJIAoKKTsKCmV4dGVy
biBjaGFyICpTbWNWZW5kb3IgKAoKICAgIFNtY0Nvbm4JCSAKCik7CgpleHRlcm4gY2hhciAqU21j
UmVsZWFzZSAoCgogICAgU21jQ29ubgkJIAoKKTsKCmV4dGVybiBjaGFyICpTbWNDbGllbnRJRCAo
CgogICAgU21jQ29ubgkJIAoKKTsKCmV4dGVybiBJY2VDb25uIFNtY0dldEljZUNvbm5lY3Rpb24g
KAoKICAgIFNtY0Nvbm4JCSAKCik7CgpleHRlcm4gaW50ICBTbXNJbml0aWFsaXplICgKCiAgICBj
aGFyICoJCQkgLAogICAgY2hhciAqCQkJICwKICAgIFNtc05ld0NsaWVudFByb2MJCSAsCiAgICBT
bVBvaW50ZXIJCQkgLAogICAgSWNlSG9zdEJhc2VkQXV0aFByb2MJICwKICAgIGludAkJCQkgLAog
ICAgY2hhciAqCQkJIAoKKTsKCmV4dGVybiBjaGFyICpTbXNDbGllbnRIb3N0TmFtZSAoCgogICAg
U21zQ29ubgkJIAoKKTsKCmV4dGVybiBjaGFyICpTbXNHZW5lcmF0ZUNsaWVudElEICgKCiAgICBT
bXNDb25uCQkgCgopOwoKZXh0ZXJuIGludCAgU21zUmVnaXN0ZXJDbGllbnRSZXBseSAoCgogICAg
U21zQ29ubgkJICwKICAgIGNoYXIgKgkJIAoKKTsKCmV4dGVybiB2b2lkIFNtc1NhdmVZb3Vyc2Vs
ZiAoCgogICAgU21zQ29ubgkJICwKICAgIGludAkJCSAsCiAgICBpbnQgIAkJICwKICAgIGludAkJ
CSAsCiAgICBpbnQgCQkgCgopOwoKZXh0ZXJuIHZvaWQgU21zU2F2ZVlvdXJzZWxmUGhhc2UyICgK
CiAgICBTbXNDb25uCQkgCgopOwoKZXh0ZXJuIHZvaWQgU21zSW50ZXJhY3QgKAoKICAgIFNtc0Nv
bm4JCSAKCik7CgpleHRlcm4gdm9pZCBTbXNEaWUgKAoKICAgIFNtc0Nvbm4JCSAKCik7CgpleHRl
cm4gdm9pZCBTbXNTYXZlQ29tcGxldGUgKAoKICAgIFNtc0Nvbm4JCSAKCik7CgpleHRlcm4gdm9p
ZCBTbXNTaHV0ZG93bkNhbmNlbGxlZCAoCgogICAgU21zQ29ubgkJIAoKKTsKCmV4dGVybiB2b2lk
IFNtc1JldHVyblByb3BlcnRpZXMgKAoKICAgIFNtc0Nvbm4JCSAsCiAgICBpbnQJCQkgLAogICAg
U21Qcm9wICoqCQkgCgopOwoKZXh0ZXJuIHZvaWQgU21zQ2xlYW5VcCAoCgogICAgU21zQ29ubgkJ
IAoKKTsKCmV4dGVybiBpbnQgU21zUHJvdG9jb2xWZXJzaW9uICgKCiAgICBTbXNDb25uCQkgCgop
OwoKZXh0ZXJuIGludCBTbXNQcm90b2NvbFJldmlzaW9uICgKCiAgICBTbXNDb25uCQkgCgopOwoK
ZXh0ZXJuIGNoYXIgKlNtc0NsaWVudElEICgKCiAgICBTbXNDb25uCQkgCgopOwoKZXh0ZXJuIElj
ZUNvbm4gU21zR2V0SWNlQ29ubmVjdGlvbiAoCgogICAgU21zQ29ubgkJIAoKKTsKCmV4dGVybiBT
bWNFcnJvckhhbmRsZXIgU21jU2V0RXJyb3JIYW5kbGVyICgKCiAgICBTbWNFcnJvckhhbmRsZXIg
CSAKCik7CgpleHRlcm4gU21zRXJyb3JIYW5kbGVyIFNtc1NldEVycm9ySGFuZGxlciAoCgogICAg
U21zRXJyb3JIYW5kbGVyIAkgCgopOwoKZXh0ZXJuIHZvaWQgU21GcmVlUHJvcGVydHkgKAoKICAg
IFNtUHJvcCAqCQkgCgopOwoKZXh0ZXJuIHZvaWQgU21GcmVlUmVhc29ucyAoCgogICAgaW50CQkJ
ICwKICAgIGNoYXIgKioJCSAKCik7Cgp9IAoKCiMgNTQgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEv
U2hlbGwuaCIgMgoKCiAKCgoKCiAKCgoKCgoKCgoKCgogCiAKIAogCgojIDE5NiAiL3Vzci9YMTFS
Ni9pbmNsdWRlL1gxMS9TaGVsbC5oIgoKZXh0ZXJuIGNvbnN0ICBjaGFyIFh0U2hlbGxTdHJpbmdz
W107CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCnR5cGVkZWYgc3RydWN0IF9TaGVsbENsYXNzUmVjICpTaGVsbFdpZGdl
dENsYXNzOwp0eXBlZGVmIHN0cnVjdCBfT3ZlcnJpZGVTaGVsbENsYXNzUmVjICpPdmVycmlkZVNo
ZWxsV2lkZ2V0Q2xhc3M7CnR5cGVkZWYgc3RydWN0IF9XTVNoZWxsQ2xhc3NSZWMgKldNU2hlbGxX
aWRnZXRDbGFzczsKdHlwZWRlZiBzdHJ1Y3QgX1RyYW5zaWVudFNoZWxsQ2xhc3NSZWMgKlRyYW5z
aWVudFNoZWxsV2lkZ2V0Q2xhc3M7CnR5cGVkZWYgc3RydWN0IF9Ub3BMZXZlbFNoZWxsQ2xhc3NS
ZWMgKlRvcExldmVsU2hlbGxXaWRnZXRDbGFzczsKdHlwZWRlZiBzdHJ1Y3QgX0FwcGxpY2F0aW9u
U2hlbGxDbGFzc1JlYyAqQXBwbGljYXRpb25TaGVsbFdpZGdldENsYXNzOwp0eXBlZGVmIHN0cnVj
dCBfU2Vzc2lvblNoZWxsQ2xhc3NSZWMgKlNlc3Npb25TaGVsbFdpZGdldENsYXNzOwoKCmV4dGVy
biAgV2lkZ2V0Q2xhc3Mgc2hlbGxXaWRnZXRDbGFzczsKZXh0ZXJuICBXaWRnZXRDbGFzcyBvdmVy
cmlkZVNoZWxsV2lkZ2V0Q2xhc3M7CmV4dGVybiAgV2lkZ2V0Q2xhc3Mgd21TaGVsbFdpZGdldENs
YXNzOwpleHRlcm4gIFdpZGdldENsYXNzIHRyYW5zaWVudFNoZWxsV2lkZ2V0Q2xhc3M7CmV4dGVy
biAgV2lkZ2V0Q2xhc3MgdG9wTGV2ZWxTaGVsbFdpZGdldENsYXNzOwpleHRlcm4gIFdpZGdldENs
YXNzIGFwcGxpY2F0aW9uU2hlbGxXaWRnZXRDbGFzczsKZXh0ZXJuICBXaWRnZXRDbGFzcyBzZXNz
aW9uU2hlbGxXaWRnZXRDbGFzczsKCgoKIAojIDI0ICIvdXNyL1gxMVI2L2luY2x1ZGUvWG0vWG0u
aCIgMgoKIyAxICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1hhdG9tLmgiIDEKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgojIDI1ICIvdXNyL1gxMVI2L2luY2x1ZGUvWG0vWG0uaCIgMgoKIyAxICIvdXNy
L1gxMVI2L2luY2x1ZGUvWG0vWG1TdHJEZWZzLmgiIDEKIAoKCiAKIAoKIAogCiAKCiAKCiAKIAoK
CgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKIAoKCiAKCiMgODk3ICIvdXNyL1gxMVI2L2luY2x1ZGUv
WG0vWG1TdHJEZWZzLmgiCgoKCgoKZXh0ZXJuICAgIGNoYXIgX1htU3RyaW5nc1tdOwoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCn0gICAKCgojIDEgIi91c3IvWDExUjYvaW5jbHVk
ZS9YMTEvU3RyaW5nRGVmcy5oIiAxCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCiAKCiMgMzI0ICIvdXNyL1gxMVI2L2lu
Y2x1ZGUvWDExL1N0cmluZ0RlZnMuaCIKCmV4dGVybiBjb25zdCAgY2hhciBYdFN0cmluZ3NbXTsK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzUwNiAiL3Vzci9YMTFSNi9pbmNsdWRlL1ht
L1htU3RyRGVmcy5oIiAyCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKfSAgIAoKCgoj
IDI2ICIvdXNyL1gxMVI2L2luY2x1ZGUvWG0vWG0uaCIgMgoKIyAxICIvdXNyL1gxMVI2L2luY2x1
ZGUvWG0vVmlydEtleXMuaCIgMQogCgoKIAogCgogCiAKIAoKCgoKIyAxICIvdXNyL1gxMVI2L2lu
Y2x1ZGUvWG0vWG0uaCIgMQogCgoKIAogCgogCiAKIAoKCiMgMTQzOSAiL3Vzci9YMTFSNi9pbmNs
dWRlL1htL1htLmgiCgogIAojIDE0ICIvdXNyL1gxMVI2L2luY2x1ZGUvWG0vVmlydEtleXMuaCIg
MgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKZXh0ZXJuIHZvaWQgWG1UcmFuc2xhdGVLZXkoIAogICAgICAgICAgICAgICAg
ICAgICAgICBEaXNwbGF5ICpkcHksCgogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQga2V5Y29kZSwKCgoKICAgICAgICAgICAgICAgICAgICAgICAgTW9kaWZpZXJzIG1vZGlmaWVy
cywKICAgICAgICAgICAgICAgICAgICAgICAgTW9kaWZpZXJzICptb2RpZmllcnNfcmV0dXJuLAog
ICAgICAgICAgICAgICAgICAgICAgICBLZXlTeW0gKmtleXN5bV9yZXR1cm4pIDsKCgogCgoKCn0g
ICAKCgoKIyAyNyAiL3Vzci9YMTFSNi9pbmNsdWRlL1htL1htLmgiIDIKCgoKZXh0ZXJuICJDIiB7
CgoKCgoKCgoKCmV4dGVybiAgaW50IHhtVXNlVmVyc2lvbjsKCgogCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgpleHRlcm4gICBjaGFyICAgIF9YbVNERUZBVUxUX0ZPTlRbXTsgICAgICAgICAgICAgCmV4
dGVybiAgIGNoYXIgICAgX1htU0RFRkFVTFRfQkFDS0dST1VORFtdOyAgICAgICAKCiAKCgoKCgp0
eXBlZGVmIGVudW17IFhtRk9OVF9JU19GT05ULCBYbUZPTlRfSVNfRk9OVFNFVCB9IFhtRm9udFR5
cGU7CgplbnVtIHsgWG1TVFJJTkdfRElSRUNUSU9OX0xfVE9fUiwJWG1TVFJJTkdfRElSRUNUSU9O
X1JfVE9fTCwKICAgICAgIFhtU1RSSU5HX0RJUkVDVElPTl9ERUZBVUxUID0gMjU1CiAgICAgfTsK
CnR5cGVkZWYgdW5zaWduZWQgY2hhciBYbVN0cmluZ0RpcmVjdGlvbjsgICAgICAKdHlwZWRlZiB1
bnNpZ25lZCBjaGFyICoJWG1TdHJpbmc7CQkgCnR5cGVkZWYgWG1TdHJpbmcgKglYbVN0cmluZ1Rh
YmxlOwkJIAp0eXBlZGVmIGNoYXIgKgkJWG1TdHJpbmdDaGFyU2V0OwkgCnR5cGVkZWYgdW5zaWdu
ZWQgY2hhcglYbVN0cmluZ0NvbXBvbmVudFR5cGU7CSAKCnR5cGVkZWYgc3RydWN0IF9YbUZvbnRM
aXN0UmVjICAgICAgICpYbUZvbnRMaXN0RW50cnk7ICAgCnR5cGVkZWYgc3RydWN0IF9YbUZvbnRM
aXN0UmVjICAgICAgICpYbUZvbnRMaXN0OyAgICAgICAgCnR5cGVkZWYgc3RydWN0IF9fWG1TdHJp
bmdDb250ZXh0UmVjICpfWG1TdHJpbmdDb250ZXh0OyAgCnR5cGVkZWYgc3RydWN0IF9fWG1TdHJp
bmdSZWMgICAgICAgICpfWG1TdHJpbmc7ICAgICAgICAgCnR5cGVkZWYgc3RydWN0IF9YbXRTdHJp
bmdDb250ZXh0UmVjICpYbVN0cmluZ0NvbnRleHQ7ICAgCnR5cGVkZWYgc3RydWN0IF9YbUZvbnRM
aXN0Q29udGV4dFJlYyAqWG1Gb250Q29udGV4dDsgICAgCgplbnVtewlYbVNUUklOR19DT01QT05F
TlRfVU5LTk9XTiwJWG1TVFJJTkdfQ09NUE9ORU5UX0NIQVJTRVQsCglYbVNUUklOR19DT01QT05F
TlRfVEVYVCwJWG1TVFJJTkdfQ09NUE9ORU5UX0RJUkVDVElPTiwKICAgICAgICBYbVNUUklOR19D
T01QT05FTlRfU0VQQVJBVE9SLCAgIFhtU1RSSU5HX0NPTVBPTkVOVF9MT0NBTEVfVEVYVAoJIAoJ
fSA7CgoKCgoJCQkgCgoKIAoKCgoKCgoKCiAKCgpleHRlcm4gIFdpZGdldENsYXNzIHhtUHJpbWl0
aXZlV2lkZ2V0Q2xhc3M7CgoKdHlwZWRlZiBzdHJ1Y3QgX1htUHJpbWl0aXZlQ2xhc3NSZWMgKiBY
bVByaW1pdGl2ZVdpZGdldENsYXNzOwp0eXBlZGVmIHN0cnVjdCBfWG1QcmltaXRpdmVSZWMgICAg
ICAqIFhtUHJpbWl0aXZlV2lkZ2V0OwoKCiAKCgpleHRlcm4gIFdpZGdldENsYXNzIHhtR2FkZ2V0
Q2xhc3M7CgoKdHlwZWRlZiBzdHJ1Y3QgX1htR2FkZ2V0Q2xhc3NSZWMgKiBYbUdhZGdldENsYXNz
Owp0eXBlZGVmIHN0cnVjdCBfWG1HYWRnZXRSZWMgICAgICAqIFhtR2FkZ2V0OwoKCiAKCgoKZXh0
ZXJuICBXaWRnZXRDbGFzcyB4bU1hbmFnZXJXaWRnZXRDbGFzczsKCgp0eXBlZGVmIHN0cnVjdCBf
WG1NYW5hZ2VyQ2xhc3NSZWMgKiBYbU1hbmFnZXJXaWRnZXRDbGFzczsKdHlwZWRlZiBzdHJ1Y3Qg
X1htTWFuYWdlclJlYyAgICAgICogWG1NYW5hZ2VyV2lkZ2V0OwoKCiAKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKIAoKZW51bXsJWG1DSEFOR0VfQUxMLAkJCVhtQ0hBTkdFX05PTkUsCglYbUNIQU5HRV9X
SURUSCwJCQlYbUNIQU5HRV9IRUlHSFQKCX0gOwoKIAoKZW51bXsJWG1QSVhFTFMsCQkJWG0xMDBU
SF9NSUxMSU1FVEVSUywKCVhtMTAwMFRIX0lOQ0hFUywJCVhtMTAwVEhfUE9JTlRTLAoJWG0xMDBU
SF9GT05UX1VOSVRTCgl9IDsKCiAKCmVudW17CVhtREVTVFJPWSwJCQlYbVVOTUFQLAoJWG1ET19O
T1RISU5HCgl9IDsKZW51bXsJWG1FWFBMSUNJVCwJCQlYbVBPSU5URVIKCX0gOwogCgoKCmVudW17
CVhtTk9ORSwJCQkJWG1UQUJfR1JPVVAsCglYbVNUSUNLWV9UQUJfR1JPVVAsCQlYbUVYQ0xVU0lW
RV9UQUJfR1JPVVAKCX0gOwoKCgogCgoKCmVudW17CSAJCQlYbUJFTEwgPSAxCgl9IDsKCiAKCgoK
ZW51bXsJWG1OT19PUklFTlRBVElPTiwJCVhtVkVSVElDQUwsCglYbUhPUklaT05UQUwKCX0gOwpl
bnVtewlYbVdPUktfQVJFQSwJCQlYbU1FTlVfQkFSLAoJWG1NRU5VX1BVTExET1dOLAkJWG1NRU5V
X1BPUFVQLAoJWG1NRU5VX09QVElPTgoJfSA7CmVudW17CVhtTk9fUEFDS0lORywJCQlYbVBBQ0tf
VElHSFQsCglYbVBBQ0tfQ09MVU1OLAkJCVhtUEFDS19OT05FCgl9IDsKZW51bXsgCglYbUFMSUdO
TUVOVF9DT05URU5UU19UT1AgPSAzLAoJWG1BTElHTk1FTlRfQ09OVEVOVFNfQk9UVE9NCgl9IDsK
ZW51bXsJWG1URUFSX09GRl9FTkFCTEVELAkJWG1URUFSX09GRl9ESVNBQkxFRAoJfSA7CmVudW17
CVhtVU5QT1NULAkJIAlYbVVOUE9TVF9BTkRfUkVQTEFZCgl9IDsKZW51bXsgICBYbUxBU1RfUE9T
SVRJT04gPSAtMSwgICAgICAgICAgIFhtRklSU1RfUE9TSVRJT04KCX0gOwogCgoKCmVudW17CVht
QUxJR05NRU5UX0JFR0lOTklORywJCVhtQUxJR05NRU5UX0NFTlRFUiwKCVhtQUxJR05NRU5UX0VO
RAoJfSA7CmVudW17ICAgWG1BTElHTk1FTlRfQkFTRUxJTkVfVE9QLCAgICAgCglYbUFMSUdOTUVO
VF9CQVNFTElORV9CT1RUT00gPSAyLCBYbUFMSUdOTUVOVF9XSURHRVRfVE9QLAoJWG1BTElHTk1F
TlRfV0lER0VUX0JPVFRPTQogICAJfSA7CiAKCgoKZW51bXsJWG1GUkFNRV9HRU5FUklDX0NISUxE
LCAgICAgICAgICBYbUZSQU1FX1dPUktBUkVBX0NISUxELAogICAgICAgIFhtRlJBTUVfVElUTEVf
Q0hJTEQKCX0gOwogCgoKCmVudW17CVhtTl9PRl9NQU5ZID0gMSwJCVhtT05FX09GX01BTlkKCX0g
OwogCgoKCmVudW17CVhtQVRUQUNIX05PTkUsCQkJWG1BVFRBQ0hfRk9STSwKCVhtQVRUQUNIX09Q
UE9TSVRFX0ZPUk0sCQlYbUFUVEFDSF9XSURHRVQsCglYbUFUVEFDSF9PUFBPU0lURV9XSURHRVQs
CVhtQVRUQUNIX1BPU0lUSU9OLAoJWG1BVFRBQ0hfU0VMRgoJfSA7CmVudW17CVhtUkVTSVpFX05P
TkUsCQkJWG1SRVNJWkVfR1JPVywKCVhtUkVTSVpFX0FOWQoJfSA7CiAKCgoKZW51bXsJWG1DUl9O
T05FLAkJCVhtQ1JfSEVMUCwKCVhtQ1JfVkFMVUVfQ0hBTkdFRCwJCVhtQ1JfSU5DUkVNRU5ULAoJ
WG1DUl9ERUNSRU1FTlQsCQkJWG1DUl9QQUdFX0lOQ1JFTUVOVCwKCVhtQ1JfUEFHRV9ERUNSRU1F
TlQsCQlYbUNSX1RPX1RPUCwKCVhtQ1JfVE9fQk9UVE9NLAkJCVhtQ1JfRFJBRywKCVhtQ1JfQUNU
SVZBVEUsCQkJWG1DUl9BUk0sCglYbUNSX0RJU0FSTSwJCQlYbUNSX01BUCA9IDE2LAoJWG1DUl9V
Tk1BUCwJCQlYbUNSX0ZPQ1VTLAoJWG1DUl9MT1NJTkdfRk9DVVMsCQlYbUNSX01PRElGWUlOR19U
RVhUX1ZBTFVFLAoJWG1DUl9NT1ZJTkdfSU5TRVJUX0NVUlNPUiwJWG1DUl9FWEVDVVRFLAoJWG1D
Ul9TSU5HTEVfU0VMRUNULAkJWG1DUl9NVUxUSVBMRV9TRUxFQ1QsCglYbUNSX0VYVEVOREVEX1NF
TEVDVCwJCVhtQ1JfQlJPV1NFX1NFTEVDVCwKCVhtQ1JfREVGQVVMVF9BQ1RJT04sCQlYbUNSX0NM
SVBCT0FSRF9EQVRBX1JFUVVFU1QsCglYbUNSX0NMSVBCT0FSRF9EQVRBX0RFTEVURSwJWG1DUl9D
QVNDQURJTkcsCglYbUNSX09LLAkJCVhtQ1JfQ0FOQ0VMLAoJWG1DUl9BUFBMWSA9IDM0LAkJWG1D
Ul9OT19NQVRDSCwKCVhtQ1JfQ09NTUFORF9FTlRFUkVELAkJWG1DUl9DT01NQU5EX0NIQU5HRUQs
CglYbUNSX0VYUE9TRSwJCQlYbUNSX1JFU0laRSwKCVhtQ1JfSU5QVVQsCQkJWG1DUl9HQUlOX1BS
SU1BUlksCglYbUNSX0xPU0VfUFJJTUFSWSwJCVhtQ1JfQ1JFQVRFLAoJWG1DUl9URUFSX09GRl9B
Q1RJVkFURSwJCVhtQ1JfVEVBUl9PRkZfREVBQ1RJVkFURSwKCVhtQ1JfT0JTQ1VSRURfVFJBVkVS
U0FMLAlYbUNSX1BST1RPQ09MUwoJIAoJfSA7CiAKCgoKdHlwZWRlZiBzdHJ1Y3QKewogICAgaW50
ICAgICByZWFzb247CiAgICBYRXZlbnQgICpldmVudDsKfSBYbUFueUNhbGxiYWNrU3RydWN0OwoK
dHlwZWRlZiBzdHJ1Y3QKewogICAgaW50ICAgICByZWFzb247CiAgICBYRXZlbnQgICpldmVudDsK
ICAgIGludAkgICAgY2xpY2tfY291bnQ7Cn0gWG1BcnJvd0J1dHRvbkNhbGxiYWNrU3RydWN0OwoK
dHlwZWRlZiBzdHJ1Y3QKewogICAgaW50ICAgICByZWFzb247CiAgICBYRXZlbnQgICpldmVudDsK
ICAgIFdpbmRvdyAgd2luZG93Owp9IFhtRHJhd2luZ0FyZWFDYWxsYmFja1N0cnVjdDsKCnR5cGVk
ZWYgc3RydWN0CnsKICAgIGludCAgICAgcmVhc29uOwogICAgWEV2ZW50ICAqZXZlbnQ7CiAgICBX
aW5kb3cgIHdpbmRvdzsKICAgIGludAkgICAgY2xpY2tfY291bnQ7Cn0gWG1EcmF3bkJ1dHRvbkNh
bGxiYWNrU3RydWN0OwoKdHlwZWRlZiBzdHJ1Y3QKewogICAgaW50ICAgICByZWFzb247CiAgICBY
RXZlbnQgICpldmVudDsKICAgIGludAkgICAgY2xpY2tfY291bnQ7Cn0gWG1QdXNoQnV0dG9uQ2Fs
bGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICBpbnQgICAgIHJlYXNvbjsKICAgIFhF
dmVudCAgKmV2ZW50OwogICAgV2lkZ2V0ICB3aWRnZXQ7CiAgICBjaGFyICAgICpkYXRhOwogICAg
Y2hhciAgICAqY2FsbGJhY2tzdHJ1Y3Q7Cn0gWG1Sb3dDb2x1bW5DYWxsYmFja1N0cnVjdDsKCnR5
cGVkZWYgc3RydWN0CnsKICAgaW50IHJlYXNvbjsKICAgWEV2ZW50ICogZXZlbnQ7CiAgIGludCB2
YWx1ZTsKICAgaW50IHBpeGVsOwp9IFhtU2Nyb2xsQmFyQ2FsbGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVm
IHN0cnVjdAp7CiAgIGludCByZWFzb247CiAgIFhFdmVudCAqIGV2ZW50OwogICBpbnQgc2V0Owp9
IFhtVG9nZ2xlQnV0dG9uQ2FsbGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgIGludCAJ
ICAgICByZWFzb247CiAgIFhFdmVudCAgICAqZXZlbnQ7CiAgIFhtU3RyaW5nICBpdGVtOwogICBp
bnQgICAgICAgaXRlbV9sZW5ndGg7CiAgIGludCAgICAgICBpdGVtX3Bvc2l0aW9uOwogICBYbVN0
cmluZyAgKnNlbGVjdGVkX2l0ZW1zOwogICBpbnQgICAgICAgc2VsZWN0ZWRfaXRlbV9jb3VudDsK
ICAgaW50ICAgICAgICpzZWxlY3RlZF9pdGVtX3Bvc2l0aW9uczsKICAgY2hhciAgICAgIHNlbGVj
dGlvbl90eXBlOwp9IFhtTGlzdENhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiBzdHJ1Y3QKewogICAg
aW50IHJlYXNvbjsKICAgIFhFdmVudAkqZXZlbnQ7CiAgICBYbVN0cmluZwl2YWx1ZTsKICAgIGlu
dAkJbGVuZ3RoOwp9IFhtU2VsZWN0aW9uQm94Q2FsbGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVmIHN0cnVj
dAp7CiAgICBpbnQgcmVhc29uOwogICAgWEV2ZW50CSpldmVudDsKICAgIFhtU3RyaW5nCXZhbHVl
OwogICAgaW50CQlsZW5ndGg7Cn0gWG1Db21tYW5kQ2FsbGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVmIHN0
cnVjdAp7CiAgICBpbnQgCXJlYXNvbjsKICAgIFhFdmVudAkqZXZlbnQ7CiAgICBYbVN0cmluZwl2
YWx1ZTsKICAgIGludAkJbGVuZ3RoOwogICAgWG1TdHJpbmcJbWFzazsKICAgIGludAkJbWFza19s
ZW5ndGg7CiAgICBYbVN0cmluZwlkaXIgOwogICAgaW50CQlkaXJfbGVuZ3RoIDsKICAgIFhtU3Ry
aW5nICAgIHBhdHRlcm4gOwogICAgaW50CQlwYXR0ZXJuX2xlbmd0aCA7Cn0gWG1GaWxlU2VsZWN0
aW9uQm94Q2FsbGJhY2tTdHJ1Y3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgCnsKICAgaW50IHJlYXNvbjsK
ICAgWEV2ZW50ICogZXZlbnQ7CiAgIGludCB2YWx1ZTsKfSBYbVNjYWxlQ2FsbGJhY2tTdHJ1Y3Q7
CgoKIAoKCgplbnVtewlYbU1VTFRJQ0xJQ0tfRElTQ0FSRCwJCVhtTVVMVElDTElDS19LRUVQCgl9
IDsKIAoKCgplbnVtewlYbVNIQURPV19JTiA9IDcsCQlYbVNIQURPV19PVVQKCX0gOwogCgoKCmVu
dW17CVhtQVJST1dfVVAsCQkJWG1BUlJPV19ET1dOLAoJWG1BUlJPV19MRUZULAkJCVhtQVJST1df
UklHSFQKCX0gOwogCgoKCgplbnVtewlYbU5PX0xJTkUsCQkJWG1TSU5HTEVfTElORSwKCVhtRE9V
QkxFX0xJTkUsCQkJWG1TSU5HTEVfREFTSEVEX0xJTkUsCglYbURPVUJMRV9EQVNIRURfTElORSwJ
CVhtU0hBRE9XX0VUQ0hFRF9JTiwKCVhtU0hBRE9XX0VUQ0hFRF9PVVQsCQlYbVNIQURPV19FVENI
RURfSU5fREFTSCwKCVhtU0hBRE9XX0VUQ0hFRF9PVVRfREFTSCwJWG1JTlZBTElEX1NFUEFSQVRP
Ul9UWVBFCgl9IDsKCmVudW17CVhtUElYTUFQID0gMSwJCQlYbVNUUklORwoJfSA7CgogCgoKCmVu
dW17CVhtV0lORE9XLAkJICAgICAgCglYbUNVUlNPUiA9IDIKCX0gOwoKIAoKCgplbnVtewlYbU1B
WF9PTl9UT1AsCQkJWG1NQVhfT05fQk9UVE9NLAoJWG1NQVhfT05fTEVGVCwJCQlYbU1BWF9PTl9S
SUdIVAoJfSA7CiAKCgoKCgplbnVtewlYbVNJTkdMRV9TRUxFQ1QsCQlYbU1VTFRJUExFX1NFTEVD
VCwKCVhtRVhURU5ERURfU0VMRUNULAkJWG1CUk9XU0VfU0VMRUNUCgl9IDsKZW51bXsJWG1TVEFU
SUMsCQkJWG1EWU5BTUlDCgl9IDsKIAoKCgoKCmVudW17CVhtVkFSSUFCTEUsCQkJWG1DT05TVEFO
VCwKCVhtUkVTSVpFX0lGX1BPU1NJQkxFCgl9IDsKZW51bXsJWG1BVVRPTUFUSUMsCQkJWG1BUFBM
SUNBVElPTl9ERUZJTkVECgl9IDsKZW51bXsJIAkJCVhtQVNfTkVFREVEID0gMQoJfSA7CgoKCgoK
CgoKCgoKIAoKCgoKCmVudW17CVhtQ09NTUFORF9BQk9WRV9XT1JLU1BBQ0UsCVhtQ09NTUFORF9C
RUxPV19XT1JLU1BBQ0UKCX0gOwogCgoKCgoKZW51bXsJWG1NVUxUSV9MSU5FX0VESVQsCQlYbVNJ
TkdMRV9MSU5FX0VESVQKCX0gOwoKdHlwZWRlZiBlbnVtewoJWG1URVhUX0ZPUldBUkQsCglYbVRF
WFRfQkFDS1dBUkQKCX0gWG1UZXh0RGlyZWN0aW9uOwoKdHlwZWRlZiBsb25nIFhtVGV4dFBvc2l0
aW9uOwp0eXBlZGVmIEF0b20gWG1UZXh0Rm9ybWF0OwoKCgoKCgoKdHlwZWRlZiBlbnVtewoJWG1T
RUxFQ1RfUE9TSVRJT04sCQlYbVNFTEVDVF9XSElURVNQQUNFLAoJWG1TRUxFQ1RfV09SRCwJCQlY
bVNFTEVDVF9MSU5FLAoJWG1TRUxFQ1RfQUxMLAkJCVhtU0VMRUNUX1BBUkFHUkFQSAoJfSBYbVRl
eHRTY2FuVHlwZSA7Cgp0eXBlZGVmIGVudW17CglYbUhJR0hMSUdIVF9OT1JNQUwsCQlYbUhJR0hM
SUdIVF9TRUxFQ1RFRCwKCVhtSElHSExJR0hUX1NFQ09OREFSWV9TRUxFQ1RFRAoJfSBYbUhpZ2hs
aWdodE1vZGUgOwoKIAoKdHlwZWRlZiBzdHJ1Y3QgewogICAgY2hhciAqcHRyOyAgICAgICAgICAg
ICAgICAgICAKICAgIGludCBsZW5ndGg7ICAgICAgICAgICAgICAgICAgCiAgICBYbVRleHRGb3Jt
YXQgZm9ybWF0OyAgICAgICAgCn0gWG1UZXh0QmxvY2tSZWMsICpYbVRleHRCbG9jazsKCnR5cGVk
ZWYgc3RydWN0CnsKICAgIGludCByZWFzb247CiAgICBYRXZlbnQgICpldmVudDsKICAgIEJvb2xl
YW4gZG9pdDsKICAgIGxvbmcgY3Vyckluc2VydCwgbmV3SW5zZXJ0OwogICAgbG9uZyBzdGFydFBv
cywgZW5kUG9zOwogICAgWG1UZXh0QmxvY2sgdGV4dDsKfSBYbVRleHRWZXJpZnlDYWxsYmFja1N0
cnVjdCwgKlhtVGV4dFZlcmlmeVB0cjsKCiAKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICB3Y2hhcl90
ICp3Y3NwdHI7ICAgICAgICAgICAgIAogICAgaW50IGxlbmd0aDsgICAgICAgICAgICAgICAgICAK
fSBYbVRleHRCbG9ja1JlY1djcywgKlhtVGV4dEJsb2NrV2NzOwoKdHlwZWRlZiBzdHJ1Y3QKewog
ICAgaW50IHJlYXNvbjsKICAgIFhFdmVudCAgKmV2ZW50OwogICAgQm9vbGVhbiBkb2l0OwogICAg
bG9uZyBjdXJySW5zZXJ0LCBuZXdJbnNlcnQ7CiAgICBsb25nIHN0YXJ0UG9zLCBlbmRQb3M7CiAg
ICBYbVRleHRCbG9ja1djcyB0ZXh0Owp9IFhtVGV4dFZlcmlmeUNhbGxiYWNrU3RydWN0V2NzLCAq
WG1UZXh0VmVyaWZ5UHRyV2NzOwoKIAoKCgoKCgoKIAoKCgoKCgogCgplbnVtewlYbURJQUxPR19O
T05FLAkJCVhtRElBTE9HX0FQUExZX0JVVFRPTiwKCVhtRElBTE9HX0NBTkNFTF9CVVRUT04sCQlY
bURJQUxPR19ERUZBVUxUX0JVVFRPTiwKCVhtRElBTE9HX09LX0JVVFRPTiwJCVhtRElBTE9HX0ZJ
TFRFUl9MQUJFTCwKCVhtRElBTE9HX0ZJTFRFUl9URVhULAkJWG1ESUFMT0dfSEVMUF9CVVRUT04s
CglYbURJQUxPR19MSVNULAkJCVhtRElBTE9HX0xJU1RfTEFCRUwsCglYbURJQUxPR19NRVNTQUdF
X0xBQkVMLAkJWG1ESUFMT0dfU0VMRUNUSU9OX0xBQkVMLAoJWG1ESUFMT0dfU1lNQk9MX0xBQkVM
LAkJWG1ESUFMT0dfVEVYVCwKCVhtRElBTE9HX1NFUEFSQVRPUiwJCVhtRElBTE9HX0RJUl9MSVNU
LAoJWG1ESUFMT0dfRElSX0xJU1RfTEFCRUwKCX0gOwoKCgoKCgoKCiAKCmVudW17CVhtRElBTE9H
X01PREVMRVNTLAkJWG1ESUFMT0dfUFJJTUFSWV9BUFBMSUNBVElPTl9NT0RBTCwKCVhtRElBTE9H
X0ZVTExfQVBQTElDQVRJT05fTU9EQUwsWG1ESUFMT0dfU1lTVEVNX01PREFMCgl9IDsKCiAKCgoK
IAoKCgogCgplbnVtewlYbVBMQUNFX1RPUCwJCQlYbVBMQUNFX0FCT1ZFX1NFTEVDVElPTiwKCVht
UExBQ0VfQkVMT1dfU0VMRUNUSU9OCgl9IDsKCiAKCgoKCgogCgplbnVtewlYbURJQUxPR19XT1JL
X0FSRUEsCQlYbURJQUxPR19QUk9NUFQsCglYbURJQUxPR19TRUxFQ1RJT04sCQlYbURJQUxPR19D
T01NQU5ELAoJWG1ESUFMT0dfRklMRV9TRUxFQ1RJT04KCX0gOwoKIAoKCgogCgplbnVtewlYbURJ
QUxPR19URU1QTEFURSwJCVhtRElBTE9HX0VSUk9SLAoJWG1ESUFMT0dfSU5GT1JNQVRJT04sCQlY
bURJQUxPR19NRVNTQUdFLAoJWG1ESUFMT0dfUVVFU1RJT04sCQlYbURJQUxPR19XQVJOSU5HLAoJ
WG1ESUFMT0dfV09SS0lORwoJfSA7CgogCgp0eXBlZGVmIGVudW17CglYbVZJU0lCSUxJVFlfVU5P
QlNDVVJFRCwJWG1WSVNJQklMSVRZX1BBUlRJQUxMWV9PQlNDVVJFRCwKCVhtVklTSUJJTElUWV9G
VUxMWV9PQlNDVVJFRAoJfSBYbVZpc2liaWxpdHkgOwoKCnR5cGVkZWYgZW51bXsKCVhtVFJBVkVS
U0VfQ1VSUkVOVCwJCVhtVFJBVkVSU0VfTkVYVCwKCVhtVFJBVkVSU0VfUFJFViwJCVhtVFJBVkVS
U0VfSE9NRSwKCVhtVFJBVkVSU0VfTkVYVF9UQUJfR1JPVVAsCVhtVFJBVkVSU0VfUFJFVl9UQUJf
R1JPVVAsCglYbVRSQVZFUlNFX1VQLAkJCVhtVFJBVkVSU0VfRE9XTiwKCVhtVFJBVkVSU0VfTEVG
VCwJCVhtVFJBVkVSU0VfUklHSFQKCX0gWG1UcmF2ZXJzYWxEaXJlY3Rpb24gOwoKdHlwZWRlZiBz
dHJ1Y3QgX1htVHJhdmVyc2VPYnNjdXJlZENhbGxiYWNrU3RydWN0CnsJaW50CQkJcmVhc29uIDsK
CVhFdmVudCAqCQlldmVudCA7CglXaWRnZXQJCQl0cmF2ZXJzYWxfZGVzdGluYXRpb24gOwoJWG1U
cmF2ZXJzYWxEaXJlY3Rpb24JZGlyZWN0aW9uIDsKCX0gWG1UcmF2ZXJzZU9ic2N1cmVkQ2FsbGJh
Y2tTdHJ1Y3QgOwoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgWG1OYXZpZ2F0aW9uVHlwZTsKCgog
CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFhtQnV0dG9uVHlwZTsKdHlwZWRlZiBYbUJ1dHRv
blR5cGUgKiBYbUJ1dHRvblR5cGVUYWJsZTsKdHlwZWRlZiBLZXlTeW0gKiBYbUtleVN5bVRhYmxl
Owp0eXBlZGVmIFhtU3RyaW5nQ2hhclNldCAqIFhtU3RyaW5nQ2hhclNldFRhYmxlOwoKZW51bXsJ
WG1QVVNIQlVUVE9OID0gMSwJCVhtVE9HR0xFQlVUVE9OLAoJWG1SQURJT0JVVFRPTiwJCQlYbUNB
U0NBREVCVVRUT04sCglYbVNFUEFSQVRPUiwJCQlYbURPVUJMRV9TRVBBUkFUT1IsCglYbVRJVExF
Cgl9IDsKCgoKIAoKCgp0eXBlZGVmIFh0UG9pbnRlcgkoKlhtUmVzb3VyY2VCYXNlUHJvYykoIFdp
ZGdldCwgWHRQb2ludGVyKSA7CgoKdHlwZWRlZiBzdHJ1Y3QgX1htU2Vjb25kYXJ5UmVzb3VyY2VE
YXRhUmVjewogICAgWG1SZXNvdXJjZUJhc2VQcm9jCWJhc2VfcHJvYzsKICAgIFh0UG9pbnRlcgkJ
Y2xpZW50X2RhdGE7CiAgICBTdHJpbmcJCW5hbWU7CiAgICBTdHJpbmcJCXJlc19jbGFzczsKICAg
IFh0UmVzb3VyY2VMaXN0CXJlc291cmNlczsKICAgIENhcmRpbmFsCQludW1fcmVzb3VyY2VzOwp9
WG1TZWNvbmRhcnlSZXNvdXJjZURhdGFSZWMsICpYbVNlY29uZGFyeVJlc291cmNlRGF0YTsKCiAK
CgoKCgoKZXh0ZXJuIENhcmRpbmFsIFhtR2V0U2Vjb25kYXJ5UmVzb3VyY2VEYXRhKCAKICAgICAg
ICAgICAgICAgICAgICAgICAgV2lkZ2V0Q2xhc3Mgd19jbGFzcywKICAgICAgICAgICAgICAgICAg
ICAgICAgWG1TZWNvbmRhcnlSZXNvdXJjZURhdGEgKipzZWNvbmRhcnlEYXRhUnRuKSA7CgoKIAoK
IAojIDczMiAiL3Vzci9YMTFSNi9pbmNsdWRlL1htL1htLmgiCgoKZXh0ZXJuIEJvb2xlYW4gWG1J
bnN0YWxsSW1hZ2UoIAogICAgICAgICAgICAgICAgICAgICAgICBYSW1hZ2UgKmltYWdlLAogICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICppbWFnZV9uYW1lKSA7CmV4dGVybiBCb29sZWFuIFht
VW5pbnN0YWxsSW1hZ2UoIAogICAgICAgICAgICAgICAgICAgICAgICBYSW1hZ2UgKmltYWdlKSA7
CmV4dGVybiBQaXhtYXAgWG1HZXRQaXhtYXAoIAogICAgICAgICAgICAgICAgICAgICAgICBTY3Jl
ZW4gKnNjcmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqaW1hZ2VfbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgUGl4ZWwgZm9yZWdyb3VuZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgUGl4ZWwgYmFja2dyb3VuZCkgOwpleHRlcm4gUGl4bWFwIFhtR2V0UGl4bWFwQnlEZXB0
aCggCiAgICAgICAgICAgICAgICAgICAgICAgIFNjcmVlbiAqc2NyZWVuLAogICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICppbWFnZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBQaXhl
bCBmb3JlZ3JvdW5kLAogICAgICAgICAgICAgICAgICAgICAgICBQaXhlbCBiYWNrZ3JvdW5kLAoJ
CQlpbnQgZGVwdGgpIDsKZXh0ZXJuIEJvb2xlYW4gWG1EZXN0cm95UGl4bWFwKCAKICAgICAgICAg
ICAgICAgICAgICAgICAgU2NyZWVuICpzY3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIFBp
eG1hcCBwaXhtYXApIDsKCgogCgogCgoKCgoKCmV4dGVybiB2b2lkIFhtVXBkYXRlRGlzcGxheSgg
CiAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldCB3KSA7CgoKIAoKIAoKdHlwZWRlZiBsb25n
IFhtT2Zmc2V0Owp0eXBlZGVmIFhtT2Zmc2V0ICpYbU9mZnNldFB0cjsKCiAKCgoKCgoKCgpleHRl
cm4gdm9pZCBYbVJlc29sdmVQYXJ0T2Zmc2V0cyggCiAgICAgICAgICAgICAgICAgICAgICAgIFdp
ZGdldENsYXNzIHdfY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgIFhtT2Zmc2V0UHRyICpv
ZmZzZXQpIDsKZXh0ZXJuIHZvaWQgWG1SZXNvbHZlQWxsUGFydE9mZnNldHMoIAogICAgICAgICAg
ICAgICAgICAgICAgICBXaWRnZXRDbGFzcyB3X2NsYXNzLAogICAgICAgICAgICAgICAgICAgICAg
ICBYbU9mZnNldFB0ciAqb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICBYbU9mZnNldFB0
ciAqY29uc3RyYWludF9vZmZzZXQpIDsKZXh0ZXJuIEJvb2xlYW4gWG1XaWRnZXRHZXRCYXNlbGlu
ZXMoCiAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldCB3aWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIERpbWVuc2lvbiAqKmJhc2VsaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgaW50
ICpsaW5lX2NvdW50KTsKZXh0ZXJuIEJvb2xlYW4gWG1XaWRnZXRHZXREaXNwbGF5UmVjdCgKICAg
ICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0IHdpZCwKICAgICAgICAgICAgICAgICAgICAgICAg
WFJlY3RhbmdsZSAqZGlzcGxheXJlY3QpOwoKCiAKCiAKIyA4MTQgIi91c3IvWDExUjYvaW5jbHVk
ZS9YbS9YbS5oIgoKCmV4dGVybiB2b2lkIFhtUmVnaXN0ZXJDb252ZXJ0ZXJzKCB2b2lkICkgOwpl
eHRlcm4gdm9pZCBYbUN2dFN0cmluZ1RvVW5pdFR5cGUoIAogICAgICAgICAgICAgICAgICAgICAg
ICBYcm1WYWx1ZVB0ciBhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICBDYXJkaW5hbCAqbnVt
X2FyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgIFhybVZhbHVlICpmcm9tX3ZhbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgWHJtVmFsdWUgKnRvX3ZhbCkgOwpleHRlcm4gY2hhciAqIFhtUmVn
aXN0ZXJTZWdtZW50RW5jb2RpbmcoIAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmb250
bGlzdF90YWcsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmN0X2VuY29kaW5nKSA7CmV4
dGVybiBjaGFyICogWG1NYXBTZWdtZW50RW5jb2RpbmcoIAogICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICpmb250bGlzdF90YWcpIDsKZXh0ZXJuIFhtU3RyaW5nIFhtQ3Z0Q1RUb1htU3RyaW5n
KCAKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqdGV4dCkgOwpleHRlcm4gQm9vbGVhbiBY
bUN2dFRleHRUb1htU3RyaW5nKCAKICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheSAqZGlz
cGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgWHJtVmFsdWVQdHIgYXJncywKICAgICAgICAg
ICAgICAgICAgICAgICAgQ2FyZGluYWwgKm51bV9hcmdzLAogICAgICAgICAgICAgICAgICAgICAg
ICBYcm1WYWx1ZSAqZnJvbV92YWwsCiAgICAgICAgICAgICAgICAgICAgICAgIFhybVZhbHVlICp0
b192YWwsCiAgICAgICAgICAgICAgICAgICAgICAgIFh0UG9pbnRlciAqY29udmVydGVyX2RhdGEp
IDsKZXh0ZXJuIGNoYXIgKiBYbUN2dFhtU3RyaW5nVG9DVCggCiAgICAgICAgICAgICAgICAgICAg
ICAgIFhtU3RyaW5nIHN0cmluZykgOwpleHRlcm4gQm9vbGVhbiBYbUN2dFhtU3RyaW5nVG9UZXh0
KCAKICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheSAqZGlzcGxheSwKICAgICAgICAgICAg
ICAgICAgICAgICAgWHJtVmFsdWVQdHIgYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgQ2Fy
ZGluYWwgKm51bV9hcmdzLAogICAgICAgICAgICAgICAgICAgICAgICBYcm1WYWx1ZSAqZnJvbV92
YWwsCiAgICAgICAgICAgICAgICAgICAgICAgIFhybVZhbHVlICp0b192YWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgIFh0UG9pbnRlciAqY29udmVydGVyX2RhdGEpIDsKCgogCgogCiMgODYwICIv
dXNyL1gxMVI2L2luY2x1ZGUvWG0vWG0uaCIKCgpleHRlcm4gaW50IFhtQ29udmVydFVuaXRzKCAK
ICAgICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0IHdpZGdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGRpbWVuc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgaW50
IGZyb21fdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgaW50IGZyb21fdmFs
LAogICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBpbnQgdG9fdHlwZSkgOwpleHRlcm4g
aW50IFhtQ3Z0VG9Ib3Jpem9udGFsUGl4ZWxzKCAKICAgICAgICAgICAgICAgICAgICAgICAgU2Ny
ZWVuICpzY3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGludCBmcm9tX3Zh
bCwKICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgaW50IGZyb21fdHlwZSkgOwpleHRl
cm4gaW50IFhtQ3Z0VG9WZXJ0aWNhbFBpeGVscyggCiAgICAgICAgICAgICAgICAgICAgICAgIFNj
cmVlbiAqc2NyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBpbnQgZnJvbV92
YWwsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGludCBmcm9tX3R5cGUpIDsKZXh0
ZXJuIGludCBYbUN2dEZyb21Ib3Jpem9udGFsUGl4ZWxzKCAKICAgICAgICAgICAgICAgICAgICAg
ICAgU2NyZWVuICpzY3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGludCBm
cm9tX3ZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgaW50IHRvX3R5cGUpIDsK
ZXh0ZXJuIGludCBYbUN2dEZyb21WZXJ0aWNhbFBpeGVscyggCiAgICAgICAgICAgICAgICAgICAg
ICAgIFNjcmVlbiAqc2NyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBpbnQg
ZnJvbV92YWwsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGludCB0b190eXBlKSA7
CmV4dGVybiB2b2lkIFhtU2V0Rm9udFVuaXRzKCAKICAgICAgICAgICAgICAgICAgICAgICAgRGlz
cGxheSAqZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhfdmFsdWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGludCB2X3ZhbHVlKSA7CmV4dGVybiB2b2lkIFhtU2V0Rm9udFVu
aXQoIAogICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5ICpkaXNwbGF5LAogICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgdmFsdWUpIDsKCgogCgogCgoKCgoKCgpleHRlcm4gdm9pZCBYbVNl
dE1lbnVDdXJzb3IoIAogICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5ICpkaXNwbGF5LAog
ICAgICAgICAgICAgICAgICAgICAgICBDdXJzb3IgY3Vyc29ySWQpIDsKZXh0ZXJuIEN1cnNvciBY
bUdldE1lbnVDdXJzb3IoIAogICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5ICpkaXNwbGF5
KSA7CgoKIAoKIAojIDkyMiAiL3Vzci9YMTFSNi9pbmNsdWRlL1htL1htLmgiCgoKZXh0ZXJuIFdp
ZGdldCBYbUNyZWF0ZVNpbXBsZU1lbnVCYXIoIAogICAgICAgICAgICAgICAgICAgICAgICBXaWRn
ZXQgcGFyZW50LAogICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgQXJnTGlzdCBhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICBDYXJk
aW5hbCBhcmdfY291bnQpIDsKZXh0ZXJuIFdpZGdldCBYbUNyZWF0ZVNpbXBsZVBvcHVwTWVudSgg
CiAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldCBwYXJlbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIFN0cmluZyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBBcmdMaXN0IGFyZ3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgIENhcmRpbmFsIGFyZ19jb3VudCkgOwpleHRlcm4gV2lk
Z2V0IFhtQ3JlYXRlU2ltcGxlUHVsbGRvd25NZW51KCAKICAgICAgICAgICAgICAgICAgICAgICAg
V2lkZ2V0IHBhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgIEFyZ0xpc3QgYXJncywKICAgICAgICAgICAgICAgICAgICAgICAg
Q2FyZGluYWwgYXJnX2NvdW50KSA7CmV4dGVybiBXaWRnZXQgWG1DcmVhdGVTaW1wbGVPcHRpb25N
ZW51KCAKICAgICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0IHBhcmVudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgU3RyaW5nIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIEFyZ0xpc3Qg
YXJncywKICAgICAgICAgICAgICAgICAgICAgICAgQ2FyZGluYWwgYXJnX2NvdW50KSA7CmV4dGVy
biBXaWRnZXQgWG1DcmVhdGVTaW1wbGVSYWRpb0JveCggCiAgICAgICAgICAgICAgICAgICAgICAg
IFdpZGdldCBwYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICBBcmdMaXN0IGFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAg
IENhcmRpbmFsIGFyZ19jb3VudCkgOwpleHRlcm4gV2lkZ2V0IFhtQ3JlYXRlU2ltcGxlQ2hlY2tC
b3goIAogICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXQgcGFyZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICBTdHJpbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgQXJnTGlzdCBh
cmdzLAogICAgICAgICAgICAgICAgICAgICAgICBDYXJkaW5hbCBhcmdfY291bnQpIDsKCgogCgog
CgoKCgoKCgoKZXh0ZXJuIFdpZGdldCBYbVZhQ3JlYXRlU2ltcGxlTWVudUJhciggCgkJCVdpZGdl
dCBwYXJlbnQsCgkJCVN0cmluZyBuYW1lLAoJCQkuLi4pIDsKZXh0ZXJuIFdpZGdldCBYbVZhQ3Jl
YXRlU2ltcGxlUG9wdXBNZW51KAoJCQlXaWRnZXQgcGFyZW50LAoJCQlTdHJpbmcgbmFtZSwKCQkJ
WHRDYWxsYmFja1Byb2MgY2FsbGJhY2ssCgkJCS4uLikgOwpleHRlcm4gV2lkZ2V0IFhtVmFDcmVh
dGVTaW1wbGVQdWxsZG93bk1lbnUoIAoJCQlXaWRnZXQgcGFyZW50LAoJCQlTdHJpbmcgbmFtZSwK
CQkJaW50IHBvc3RfZnJvbV9idXR0b24sCgkJCVh0Q2FsbGJhY2tQcm9jIGNhbGxiYWNrLAoJCQku
Li4pIDsKZXh0ZXJuIFdpZGdldCBYbVZhQ3JlYXRlU2ltcGxlT3B0aW9uTWVudSgKCQkJV2lkZ2V0
IHBhcmVudCwKCQkJU3RyaW5nIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFhtU3RyaW5n
IG9wdGlvbl9sYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgS2V5U3ltIG9wdGlvbl9tbmVt
b25pYywKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1dHRvbl9zZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIFh0Q2FsbGJhY2tQcm9jIGNhbGxiYWNrLAoJCQkuLi4pIDsKZXh0ZXJuIFdp
ZGdldCBYbVZhQ3JlYXRlU2ltcGxlUmFkaW9Cb3goIAoJCQlXaWRnZXQgcGFyZW50LAoJCQlTdHJp
bmcgbmFtZSwKCQkJaW50IGJ1dHRvbl9zZXQsCgkJCVh0Q2FsbGJhY2tQcm9jIGNhbGxiYWNrLAoJ
CQkuLi4pIDsKZXh0ZXJuIFdpZGdldCBYbVZhQ3JlYXRlU2ltcGxlQ2hlY2tCb3goIAoJCQlXaWRn
ZXQgcGFyZW50LAoJCQlTdHJpbmcgbmFtZSwKCQkJWHRDYWxsYmFja1Byb2MgY2FsbGJhY2ssCgkJ
CS4uLikgOwoKIAoKIAoKCgoKCgoKZXh0ZXJuIFdpZGdldCBYbVRyYWNraW5nRXZlbnQoIAogICAg
ICAgICAgICAgICAgICAgICAgICBXaWRnZXQgd2lkZ2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICBDdXJzb3IgY3Vyc29yLAoKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbmZpbmVUbywK
CgoKICAgICAgICAgICAgICAgICAgICAgICAgWEV2ZW50ICpwZXYpIDsKZXh0ZXJuIFdpZGdldCBY
bVRyYWNraW5nTG9jYXRlKCAKICAgICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0IHdpZGdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgQ3Vyc29yIGN1cnNvciwKCiAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBjb25maW5lVG8pIDsKCgoKCgogCgogCgoKCnR5cGVkZWYgdm9pZCAoKlhtQ29s
b3JQcm9jKSAoWENvbG9yICpiZ19jb2xvciwgWENvbG9yICpmZ19jb2xvciwKCVhDb2xvciAqc2Vs
X2NvbG9yLCBYQ29sb3IgKnRzX2NvbG9yLCBYQ29sb3IgKmJzX2NvbG9yKTsKCgogCgoKCgoKCgoK
CmV4dGVybiBYbUNvbG9yUHJvYyBYbVNldENvbG9yQ2FsY3VsYXRpb24oIAogICAgICAgICAgICAg
ICAgICAgICAgICBYbUNvbG9yUHJvYyBwcm9jKSA7CmV4dGVybiBYbUNvbG9yUHJvYyBYbUdldENv
bG9yQ2FsY3VsYXRpb24oIHZvaWQgKSA7CmV4dGVybiB2b2lkIFhtR2V0Q29sb3JzKCAKICAgICAg
ICAgICAgICAgICAgICAgICAgU2NyZWVuICpzY3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAg
IENvbG9ybWFwIGNvbG9yX21hcCwKICAgICAgICAgICAgICAgICAgICAgICAgUGl4ZWwgYmFja2dy
b3VuZCwKICAgICAgICAgICAgICAgICAgICAgICAgUGl4ZWwgKmZvcmVncm91bmRfcmV0LAogICAg
ICAgICAgICAgICAgICAgICAgICBQaXhlbCAqdG9wX3NoYWRvd19yZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIFBpeGVsICpib3R0b21fc2hhZG93X3JldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgUGl4ZWwgKnNlbGVjdF9yZXQpIDsKZXh0ZXJuIHZvaWQgWG1DaGFuZ2VDb2xvcigKICAgICAg
ICAgICAgICAgICAgICAgICAgV2lkZ2V0IHdpZGdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
UGl4ZWwgYmFja2dyb3VuZCkgOwoKCiAKCiAKIyAxMTIxICIvdXNyL1gxMVI2L2luY2x1ZGUvWG0v
WG0uaCIKCgpleHRlcm4gWG1TdHJpbmcgWG1TdHJpbmdDcmVhdGUoIAogICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICp0ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBYbVN0cmluZ0NoYXJT
ZXQgY2hhcnNldCkgOwpleHRlcm4gWG1TdHJpbmcgWG1TdHJpbmdDcmVhdGVTaW1wbGUoIAogICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICp0ZXh0KSA7CmV4dGVybiBYbVN0cmluZyBYbVN0cmlu
Z0NyZWF0ZUxvY2FsaXplZCggCiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0ZXh0KSA7
CmV4dGVybiBYbVN0cmluZyBYbVN0cmluZ0RpcmVjdGlvbkNyZWF0ZSggCgogICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZGlyZWN0aW9uKSA7CgoKCmV4dGVybiBYbVN0cmluZyBYbVN0cmluZ1Nl
cGFyYXRvckNyZWF0ZSggdm9pZCApIDsKZXh0ZXJuIFhtU3RyaW5nIFhtU3RyaW5nU2VnbWVudENy
ZWF0ZSggCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIFhtU3RyaW5nQ2hhclNldCBjaGFyc2V0LAoKICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlcGFyYXRvcikg
OwoKCgoKZXh0ZXJuIFhtU3RyaW5nIFhtU3RyaW5nTHRvUkNyZWF0ZSggCiAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIFhtU3RyaW5nQ2hh
clNldCBjaGFyc2V0KSA7CmV4dGVybiBYbVN0cmluZyBYbVN0cmluZ0NyZWF0ZUx0b1IoIAogICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICp0ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBY
bVN0cmluZ0NoYXJTZXQgY2hhcnNldCkgOwpleHRlcm4gQm9vbGVhbiBYbVN0cmluZ0luaXRDb250
ZXh0KCAKICAgICAgICAgICAgICAgICAgICAgICAgWG1TdHJpbmdDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICBYbVN0cmluZyBzdHJpbmcpIDsKZXh0ZXJuIHZvaWQgWG1T
dHJpbmdGcmVlQ29udGV4dCggCiAgICAgICAgICAgICAgICAgICAgICAgIFhtU3RyaW5nQ29udGV4
dCBjb250ZXh0KSA7CmV4dGVybiBYbVN0cmluZ0NvbXBvbmVudFR5cGUgWG1TdHJpbmdHZXROZXh0
Q29tcG9uZW50KCAKICAgICAgICAgICAgICAgICAgICAgICAgWG1TdHJpbmdDb250ZXh0IGNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKip0ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICBYbVN0cmluZ0NoYXJTZXQgKmNoYXJzZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
IFhtU3RyaW5nRGlyZWN0aW9uICpkaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIFht
U3RyaW5nQ29tcG9uZW50VHlwZSAqdW5rbm93bl90YWcsCiAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHNob3J0ICp1bmtub3duX2xlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciAqKnVua25vd25fdmFsdWUpIDsKZXh0ZXJuIFhtU3RyaW5nQ29tcG9uZW50
VHlwZSBYbVN0cmluZ1BlZWtOZXh0Q29tcG9uZW50KCAKICAgICAgICAgICAgICAgICAgICAgICAg
WG1TdHJpbmdDb250ZXh0IGNvbnRleHQpIDsKZXh0ZXJuIEJvb2xlYW4gWG1TdHJpbmdHZXROZXh0
U2VnbWVudCggCiAgICAgICAgICAgICAgICAgICAgICAgIFhtU3RyaW5nQ29udGV4dCBjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqdGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgWG1TdHJpbmdDaGFyU2V0ICpjaGFyc2V0LAogICAgICAgICAgICAgICAgICAgICAgICBY
bVN0cmluZ0RpcmVjdGlvbiAqZGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBCb29s
ZWFuICpzZXBhcmF0b3IpIDsKZXh0ZXJuIEJvb2xlYW4gWG1TdHJpbmdHZXRMdG9SKCAKICAgICAg
ICAgICAgICAgICAgICAgICAgWG1TdHJpbmcgc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAg
ICBYbVN0cmluZ0NoYXJTZXQgY2hhcnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
KnRleHQpIDsKZXh0ZXJuIFhtRm9udExpc3RFbnRyeSBYbUZvbnRMaXN0RW50cnlDcmVhdGUoIAog
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICp0YWcsCiAgICAgICAgICAgICAgICAgICAgICAg
IFhtRm9udFR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgWHRQb2ludGVyIGZvbnQp
IDsKZXh0ZXJuIHZvaWQgWG1Gb250TGlzdEVudHJ5RnJlZSggCiAgICAgICAgICAgICAgICAgICAg
ICAgIFhtRm9udExpc3RFbnRyeSAqZW50cnkpIDsKZXh0ZXJuIFh0UG9pbnRlciBYbUZvbnRMaXN0
RW50cnlHZXRGb250KCAKICAgICAgICAgICAgICAgICAgICAgICAgWG1Gb250TGlzdEVudHJ5IGVu
dHJ5LAogICAgICAgICAgICAgICAgICAgICAgICBYbUZvbnRUeXBlICp0eXBlUmV0dXJuKSA7CmV4
dGVybiBjaGFyICogWG1Gb250TGlzdEVudHJ5R2V0VGFnKCAKICAgICAgICAgICAgICAgICAgICAg
ICAgWG1Gb250TGlzdEVudHJ5IGVudHJ5KSA7CmV4dGVybiBYbUZvbnRMaXN0IFhtRm9udExpc3RB
cHBlbmRFbnRyeSggCiAgICAgICAgICAgICAgICAgICAgICAgIFhtRm9udExpc3Qgb2xkLAogICAg
ICAgICAgICAgICAgICAgICAgICBYbUZvbnRMaXN0RW50cnkgZW50cnkpIDsKZXh0ZXJuIFhtRm9u
dExpc3RFbnRyeSBYbUZvbnRMaXN0TmV4dEVudHJ5KCAKICAgICAgICAgICAgICAgICAgICAgICAg
WG1Gb250Q29udGV4dCBjb250ZXh0KSA7CmV4dGVybiBYbUZvbnRMaXN0IFhtRm9udExpc3RSZW1v
dmVFbnRyeSggCiAgICAgICAgICAgICAgICAgICAgICAgIFhtRm9udExpc3Qgb2xkLAogICAgICAg
ICAgICAgICAgICAgICAgICBYbUZvbnRMaXN0RW50cnkgZW50cnkpIDsKZXh0ZXJuIFhtRm9udExp
c3RFbnRyeSBYbUZvbnRMaXN0RW50cnlMb2FkKCAKICAgICAgICAgICAgICAgICAgICAgICAgRGlz
cGxheSAqZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZm9udE5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgIFhtRm9udFR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqdGFnKSA7CmV4dGVybiBYbUZvbnRMaXN0IFhtRm9udExpc3RDcmVhdGUoIAog
ICAgICAgICAgICAgICAgICAgICAgICBYRm9udFN0cnVjdCAqZm9udCwKICAgICAgICAgICAgICAg
ICAgICAgICAgWG1TdHJpbmdDaGFyU2V0IGNoYXJzZXQpIDsKZXh0ZXJuIFhtRm9udExpc3QgWG1T
dHJpbmdDcmVhdGVGb250TGlzdCggCiAgICAgICAgICAgICAgICAgICAgICAgIFhGb250U3RydWN0
ICpmb250LAogICAgICAgICAgICAgICAgICAgICAgICBYbVN0cmluZ0NoYXJTZXQgY2hhcnNldCkg
OwpleHRlcm4gdm9pZCBYbUZvbnRMaXN0RnJlZSggCiAgICAgICAgICAgICAgICAgICAgICAgIFht
Rm9udExpc3QgZm9udGxpc3QpIDsKZXh0ZXJuIFhtRm9udExpc3QgWG1Gb250TGlzdEFkZCggCiAg
ICAgICAgICAgICAgICAgICAgICAgIFhtRm9udExpc3Qgb2xkLAogICAgICAgICAgICAgICAgICAg
ICAgICBYRm9udFN0cnVjdCAqZm9udCwKICAgICAgICAgICAgICAgICAgICAgICAgWG1TdHJpbmdD
aGFyU2V0IGNoYXJzZXQpIDsKZXh0ZXJuIFhtRm9udExpc3QgWG1Gb250TGlzdENvcHkoIAogICAg
ICAgICAgICAgICAgICAgICAgICBYbUZvbnRMaXN0IGZvbnRsaXN0KSA7CmV4dGVybiBCb29sZWFu
IFhtRm9udExpc3RJbml0Rm9udENvbnRleHQoIAogICAgICAgICAgICAgICAgICAgICAgICBYbUZv
bnRDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBYbUZvbnRMaXN0IGZv
bnRsaXN0KSA7CmV4dGVybiBCb29sZWFuIFhtRm9udExpc3RHZXROZXh0Rm9udCggCiAgICAgICAg
ICAgICAgICAgICAgICAgIFhtRm9udENvbnRleHQgY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgWG1TdHJpbmdDaGFyU2V0ICpjaGFyc2V0LAogICAgICAgICAgICAgICAgICAgICAgICBY
Rm9udFN0cnVjdCAqKmZvbnQpIDsKZXh0ZXJuIHZvaWQgWG1Gb250TGlzdEZyZWVGb250Q29udGV4
dCggCiAgICAgICAgICAgICAgICAgICAgICAgIFhtRm9udENvbnRleHQgY29udGV4dCkgOwpleHRl
cm4gWG1TdHJpbmcgWG1TdHJpbmdDb25jYXQoIAogICAgICAgICAgICAgICAgICAgICAgICBYbVN0
cmluZyBhLAogICAgICAgICAgICAgICAgICAgICAgICBYbVN0cmluZyBiKSA7CmV4dGVybiBYbVN0
cmluZyBYbVN0cmluZ05Db25jYXQoIAogICAgICAgICAgICAgICAgICAgICAgICBYbVN0cmluZyBm
aXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgWG1TdHJpbmcgc2Vjb25kLAogICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbikgOwpleHRlcm4gWG1TdHJpbmcgWG1TdHJpbmdDb3B5KCAKICAg
ICAgICAgICAgICAgICAgICAgICAgWG1TdHJpbmcgc3RyaW5nKSA7CmV4dGVybiBYbVN0cmluZyBY
bVN0cmluZ05Db3B5KCAKICAgICAgICAgICAgICAgICAgICAgICAgWG1TdHJpbmcgc3RyLAogICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgbikgOwpleHRlcm4gQm9vbGVhbiBYbVN0cmluZ0J5dGVD
b21wYXJlKCAKICAgICAgICAgICAgICAgICAgICAgICAgWG1TdHJpbmcgYTEsCiAgICAgICAgICAg
ICAgICAgICAgICAgIFhtU3RyaW5nIGIxKSA7CmV4dGVybiBCb29sZWFuIFhtU3RyaW5nQ29tcGFy
ZSggCiAgICAgICAgICAgICAgICAgICAgICAgIFhtU3RyaW5nIGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgIFhtU3RyaW5nIGIpIDsKZXh0ZXJuIGludCBYbVN0cmluZ0xlbmd0aCggCiAgICAgICAg
ICAgICAgICAgICAgICAgIFhtU3RyaW5nIHN0cmluZykgOwpleHRlcm4gQm9vbGVhbiBYbVN0cmlu
Z0VtcHR5KCAKICAgICAgICAgICAgICAgICAgICAgICAgWG1TdHJpbmcgc3RyaW5nKSA7CmV4dGVy
biBCb29sZWFuIFhtU3RyaW5nSGFzU3Vic3RyaW5nKCAKICAgICAgICAgICAgICAgICAgICAgICAg
WG1TdHJpbmcgc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICBYbVN0cmluZyBzdWJzdHJp
bmcpIDsKZXh0ZXJuIHZvaWQgWG1TdHJpbmdGcmVlKCAKICAgICAgICAgICAgICAgICAgICAgICAg
WG1TdHJpbmcgc3RyaW5nKSA7CmV4dGVybiBEaW1lbnNpb24gWG1TdHJpbmdCYXNlbGluZSggCiAg
ICAgICAgICAgICAgICAgICAgICAgIFhtRm9udExpc3QgZm9udGxpc3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgIFhtU3RyaW5nIHN0cmluZykgOwpleHRlcm4gRGltZW5zaW9uIFhtU3RyaW5nV2lk
dGgoIAogICAgICAgICAgICAgICAgICAgICAgICBYbUZvbnRMaXN0IGZvbnRsaXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICBYbVN0cmluZyBzdHJpbmcpIDsKZXh0ZXJuIERpbWVuc2lvbiBYbVN0
cmluZ0hlaWdodCggCiAgICAgICAgICAgICAgICAgICAgICAgIFhtRm9udExpc3QgZm9udGxpc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgIFhtU3RyaW5nIHN0cmluZykgOwpleHRlcm4gdm9pZCBY
bVN0cmluZ0V4dGVudCggCiAgICAgICAgICAgICAgICAgICAgICAgIFhtRm9udExpc3QgZm9udGxp
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgIFhtU3RyaW5nIHN0cmluZywKICAgICAgICAgICAg
ICAgICAgICAgICAgRGltZW5zaW9uICp3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgRGlt
ZW5zaW9uICpoZWlnaHQpIDsKZXh0ZXJuIGludCBYbVN0cmluZ0xpbmVDb3VudCggCiAgICAgICAg
ICAgICAgICAgICAgICAgIFhtU3RyaW5nIHN0cmluZykgOwpleHRlcm4gdm9pZCBYbVN0cmluZ0Ry
YXcoIAogICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5ICpkLAogICAgICAgICAgICAgICAg
ICAgICAgICBXaW5kb3cgdywKICAgICAgICAgICAgICAgICAgICAgICAgWG1Gb250TGlzdCBmb250
bGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgWG1TdHJpbmcgc3RyaW5nLAogICAgICAgICAg
ICAgICAgICAgICAgICBHQyBnYywKCiAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LAogICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdp
ZHRoLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYWxpZ24sCiAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsYXlfZGlyLAoKCgoKCgoKICAgICAgICAgICAg
ICAgICAgICAgICAgWFJlY3RhbmdsZSAqY2xpcCkgOwpleHRlcm4gdm9pZCBYbVN0cmluZ0RyYXdJ
bWFnZSggCiAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXkgKmQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIFdpbmRvdyB3LAogICAgICAgICAgICAgICAgICAgICAgICBYbUZvbnRMaXN0IGZv
bnRsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICBYbVN0cmluZyBzdHJpbmcsCiAgICAgICAg
ICAgICAgICAgICAgICAgIEdDIGdjLAoKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQg
d2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhbGlnbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxheV9kaXIsCgoKCgoKCgogICAgICAgICAg
ICAgICAgICAgICAgICBYUmVjdGFuZ2xlICpjbGlwKSA7CmV4dGVybiB2b2lkIFhtU3RyaW5nRHJh
d1VuZGVybGluZSggCiAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXkgKmQsCiAgICAgICAg
ICAgICAgICAgICAgICAgIFdpbmRvdyB3LAogICAgICAgICAgICAgICAgICAgICAgICBYbUZvbnRM
aXN0IGZudGxzdCwKICAgICAgICAgICAgICAgICAgICAgICAgWG1TdHJpbmcgc3RyLAogICAgICAg
ICAgICAgICAgICAgICAgICBHQyBnYywKCiAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LAog
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYWxpZ24sCiAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsYXlfZGlyLAoKCgoKCgoKICAgICAgICAg
ICAgICAgICAgICAgICAgWFJlY3RhbmdsZSAqY2xpcCwKICAgICAgICAgICAgICAgICAgICAgICAg
WG1TdHJpbmcgdW5kZXIpIDsKCgogCgogCgoKCgoKCmV4dGVybiBXaWRnZXQgWG1HZXREZXN0aW5h
dGlvbiggCiAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXkgKmRpc3BsYXkpIDsKCgogCgog
CiMgMTM1NyAiL3Vzci9YMTFSNi9pbmNsdWRlL1htL1htLmgiCgoKZXh0ZXJuIEJvb2xlYW4gWG1J
c1RyYXZlcnNhYmxlKCAKICAgICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0IHdpZCkgOwpleHRl
cm4gWG1WaXNpYmlsaXR5IFhtR2V0VmlzaWJpbGl0eSggCiAgICAgICAgICAgICAgICAgICAgICAg
IFdpZGdldCB3aWQpIDsKZXh0ZXJuIFdpZGdldCBYbUdldFRhYkdyb3VwKCAKICAgICAgICAgICAg
ICAgICAgICAgICAgV2lkZ2V0IHdpZCkgOwpleHRlcm4gV2lkZ2V0IFhtR2V0Rm9jdXNXaWRnZXQo
IAogICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXQgd2lkKSA7CmV4dGVybiBCb29sZWFuIFht
UHJvY2Vzc1RyYXZlcnNhbCggCiAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldCB3LAogICAg
ICAgICAgICAgICAgICAgICAgICBYbVRyYXZlcnNhbERpcmVjdGlvbiBkaXIpIDsKZXh0ZXJuIHZv
aWQgWG1BZGRUYWJHcm91cCggCiAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldCB0YWJHcm91
cCkgOwpleHRlcm4gdm9pZCBYbVJlbW92ZVRhYkdyb3VwKCAKICAgICAgICAgICAgICAgICAgICAg
ICAgV2lkZ2V0IHcpIDsKCgogCgoKIAojIDEzOTIgIi91c3IvWDExUjYvaW5jbHVkZS9YbS9YbS5o
IgoKCmV4dGVybiB2b2lkIFhtSW1SZWdpc3RlciggCiAgICAgICAgICAgICAgICAgICAgICAgIFdp
ZGdldCB3LAoJCQl1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQpIDsKZXh0ZXJuIHZvaWQgWG1JbVVucmVn
aXN0ZXIoIAogICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXQgdykgOwpleHRlcm4gdm9pZCBY
bUltU2V0Rm9jdXNWYWx1ZXMoIAogICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXQgdywKICAg
ICAgICAgICAgICAgICAgICAgICAgQXJnTGlzdCBhcmdzLAogICAgICAgICAgICAgICAgICAgICAg
ICBDYXJkaW5hbCBudW1fYXJncykgOwpleHRlcm4gdm9pZCBYbUltU2V0VmFsdWVzKCAKICAgICAg
ICAgICAgICAgICAgICAgICAgV2lkZ2V0IHcsCiAgICAgICAgICAgICAgICAgICAgICAgIEFyZ0xp
c3QgYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgQ2FyZGluYWwgbnVtX2FyZ3MpIDsKZXh0
ZXJuIHZvaWQgWG1JbVVuc2V0Rm9jdXMoIAogICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXQg
dykgOwpleHRlcm4gWElNIFhtSW1HZXRYSU0oIAogICAgICAgICAgICAgICAgICAgICAgICBXaWRn
ZXQgdykgOwpleHRlcm4gaW50IFhtSW1NYkxvb2t1cFN0cmluZyggCiAgICAgICAgICAgICAgICAg
ICAgICAgIFdpZGdldCB3LAogICAgICAgICAgICAgICAgICAgICAgICBYS2V5UHJlc3NlZEV2ZW50
ICpldmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLAogICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbmJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICBLZXlTeW0gKmtl
eXN5bSwKICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzdGF0dXMpIDsKZXh0ZXJuIHZvaWQg
WG1JbVZhU2V0Rm9jdXNWYWx1ZXMoIAogICAgICAgICAgICAgICAgICAgICAgICBXaWRnZXQgdywK
ICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSA7CmV4dGVybiB2b2lkIFhtSW1WYVNldFZhbHVl
cyggCiAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldCB3LAogICAgICAgICAgICAgICAgICAg
ICAgICAuLi4pIDsKCgogCgogCgoKfSAgIAoKCiAKCgojIDEgIi91c3IvWDExUjYvaW5jbHVkZS9Y
bS9WZW5kb3JTLmgiIDEKIAoKCiAKIAoKIAogCiAKCiAKCiAKCiAKCgoKCiMgMSAiL3Vzci9YMTFS
Ni9pbmNsdWRlL1htL1htLmgiIDEKIAoKCiAKIAoKIAogCiAKCgojIDE0MzkgIi91c3IvWDExUjYv
aW5jbHVkZS9YbS9YbS5oIgoKICAKIyAyMCAiL3Vzci9YMTFSNi9pbmNsdWRlL1htL1ZlbmRvclMu
aCIgMgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9YbVZlbmRvclNoZWxs
UmVjICpYbVZlbmRvclNoZWxsV2lkZ2V0Owp0eXBlZGVmIHN0cnVjdCBfWG1WZW5kb3JTaGVsbENs
YXNzUmVjICpYbVZlbmRvclNoZWxsV2lkZ2V0Q2xhc3M7CmV4dGVybiAgV2lkZ2V0Q2xhc3MgdmVu
ZG9yU2hlbGxXaWRnZXRDbGFzczsKCgogCgoKCgoKCmV4dGVybiBCb29sZWFuIFhtSXNNb3RpZldN
UnVubmluZyggCiAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldCBzaGVsbCkgOwoKCiAKCgoK
fSAgIAoKCgogCiMgMTQzNyAiL3Vzci9YMTFSNi9pbmNsdWRlL1htL1htLmgiIDIKCgoKICAKIyA0
ICIvc29mdHdhcmUvdGhhbGlhL2gvT3BlblN0YWdlLmgiIDIKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QgX09wZW5T
dGFnZUNsYXNzUmVjICAgKk9wZW5TdGFnZVdpZGdldENsYXNzOwp0eXBlZGVmIHN0cnVjdCBfT3Bl
blN0YWdlUmVjICAgICAgICAqT3BlblN0YWdlV2lkZ2V0OwoKZXh0ZXJuIFdpZGdldENsYXNzIG9w
ZW5TdGFnZVdpZGdldENsYXNzOwoKZW51bSBPcGVuU3RhZ2VQbGFuZXMgewogICAgT3BlblN0YWdl
RW1wdHksCiAgICBPcGVuU3RhZ2VOb3JtYWwsCiAgICBPcGVuU3RhZ2VPdmVybGF5LAogICAgT3Bl
blN0YWdlUG9wdXAKICAgIH07CgogCgpleHRlcm4gIkMiIHsKCgpleHRlcm4gdm9pZCBPcGVuU3Rh
Z2VSZXF1ZXN0UmVkcmF3KCBXaWRnZXQgc3RhZ2UgKTsKZXh0ZXJuIHZvaWQgT3BlblN0YWdlUmVx
dWVzdE92ZXJsYXlSZWRyYXcoIFdpZGdldCBzdGFnZSApOwpleHRlcm4gdm9pZCBPcGVuU3RhZ2VS
ZXF1ZXN0UG9wdXBSZWRyYXcoIFdpZGdldCBzdGFnZSApOwoKCn0KCgogCgoKCgoKCgoKCnR5cGVk
ZWYgc3RydWN0CnsKICAgIGludCAgICAgICAgICAgICByZWFzb247ICAgICAgICAgIAogICAgWEV2
ZW50ICAgICAgICAgICpldmVudDsgICAgICAgICAgCiAgICBpbnQgICAgICAgICAgICAgeCwgeTsg
ICAgICAgICAgICAKICAgIGludCAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0OyAgIAogICAgdW5z
aWduZWQgaW50ICAgIHN0YXRlOyAgICAgICAgICAgCiAgICBpbnQgICAgICAgICAgICAgYnV0dG9u
OyAgICAgICAgICAKICAgIH0gT3BlblN0YWdlQ2FsbGJhY2tTdHJ1Y3Q7CgoKIyA0ICJoL01hbmlw
dWxhdG9yLmgiIDIKCiMgMSAiL3NvZnR3YXJlL3RoYWxpYS9oL3N0ZHR5cGVzLmgiIDEKCiAKCgoK
CgoKCgoKCgoKCgoKCgojIDIwMyAiL3NvZnR3YXJlL3RoYWxpYS9oL3N0ZHR5cGVzLmgiCgoKCgoK
CgoKCgoKCgoKIyA1ICJoL01hbmlwdWxhdG9yLmgiIDIKCgoKIyAxICIvdXNyL1gxMVI2L2luY2x1
ZGUvWDExL2N1cnNvcmZvbnQuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojIDggImgvTWFuaXB1bGF0b3IuaCIgMgoKCgpjbGFzcyBNYW5p
cHVsYXRvcgp7CnByb3RlY3RlZDoKICAgIHZvaWQqIF9pbnRlcmVzdDsKICAgIHVpbnQgX2N1cnNv
cjsKICAgIGZsb2F0IF9pbnRlbnNpdHk7CgpwdWJsaWM6CiAgICAgCiAgICBlbnVtIHsgSElULCBN
SVNTLCBESVNBQkxFRCB9OwoKICAgIE1hbmlwdWxhdG9yKHZvaWQqKTsKICAgIHZpcnR1YWwgfk1h
bmlwdWxhdG9yKCk7CiAgICB2aXJ0dWFsIGludCAgR2V0TWFuQ3Vyc29yKCkgeyByZXR1cm4oX2N1
cnNvcik7IH0KCiAgICB2aXJ0dWFsIGludCBTdGFydE1hbmlwdWxhdGlvbiggT3BlblN0YWdlQ2Fs
bGJhY2tTdHJ1Y3QqIGNiLAoJCQkJICAgdm9pZCogY2FtUHRyLCBpbnQgcG9ydFdpZHRoLAoJCQkJ
ICAgaW50IHBvcnRIZWlnaHQsIHZvaWQqIHVEYXRhID0gX19udWxsICkgPSAwOwogICAgdmlydHVh
bCBib29sIE1vdmUoIE9wZW5TdGFnZUNhbGxiYWNrU3RydWN0KiApID0gMDsKICAgIHZpcnR1YWwg
Ym9vbCBGaW5pc2hNYW5pcHVsYXRpb24oIE9wZW5TdGFnZUNhbGxiYWNrU3RydWN0KiApID0gMDsK
ICAgIHZpcnR1YWwgaW50IFN0YXJ0RmVlZGJhY2soKSA9IDA7CiAgICB2aXJ0dWFsIGJvb2wgTW90
aW9uRmVlZGJhY2soKSA9IDA7CiAgICB2aXJ0dWFsIGJvb2wgRmluaXNoRmVlZGJhY2soKSA9IDA7
CiAgICB2aXJ0dWFsIHZvaWQgUmVmcmVzaCgpID0gMDsKICAgIHZpcnR1YWwgaW50IENoZWNrSG90
U3BvdHMoIE9wZW5TdGFnZUNhbGxiYWNrU3RydWN0KiApID0gMDsKICAgIHZpcnR1YWwgdm9pZCBD
YWxjSG90U3BvdHMoIGludCwgaW50ICkgPSAwOwogICAgdmlydHVhbCB2b2lkIERyYXdpbmdSb3V0
aW5lKCB2b2lkKiApID0gMDsKCn07CgpjbGFzcyBPYmplY3RNYW5pcHVsYXRvcjogcHVibGljIE1h
bmlwdWxhdG9yCnsKcHJvdGVjdGVkOgogICAgdmlydHVhbCB2b2lkIFNlbGVjdE1hbmlwQXhpcygp
OwoKICAgICAKICAgICAKICAgICAKICAgIHZpcnR1YWwgdm9pZCAgICAgIFNldENhbWVyYSh2b2lk
ICopID0gMDsKICAgIHZpcnR1YWwgZmxvYXQgICAgIEdldENhbWVyYU9ydGhvU2NhbGUodm9pZCAq
KSA9IDA7CiAgICB2aXJ0dWFsIGZsb2F0ICAgICBHZXRDYW1lcmFGb2NhbExlbmd0aCh2b2lkICop
ID0gMDsKICAgIHZpcnR1YWwgZmxvYXQgICAgIEdldENhbWVyYVpvb20odm9pZCAqKSA9IDA7CiAg
ICB2aXJ0dWFsIE1fTWF0cml4ICBHZXRDYW1lcmFNYXRyaXgodm9pZCAqKSA9IDA7CiAgICB2aXJ0
dWFsIE1fTWF0cml4ICBHZXRDYW1lcmFJbnZlcnNlTWF0cml4KHZvaWQgKikgPSAwOwogICAgdmly
dHVhbCBib29sICAgaXNPcnRob0NhbWVyYSh2b2lkICopID0gMDsKICAgIE1fVmVjdG9yNCAgICAg
ICAgIE1ha2VTY3JlZW5QbGFuZShNX1ZlY3RvcjIgJiwgTV9WZWN0b3IyICYpOwogICAgdmlydHVh
bCBpbnQgICAgICAgR2V0TWFuaXB1bGF0aW9uU3BhY2UoKTsKCiAgICAgCiAgICBNX1ZlY3RvcjIg
ICAgICAgICAgICBfaG90WCxfaG90WSxfaG90WixfaG90TzsKICAgIE1fVmVjdG9yMiAgICAgIF9o
b3RYVmVjdCxfaG90WVZlY3QsX2hvdFpWZWN0OwogICAgZmxvYXQgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfaG90WFZlY3RMZW47CiAgICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9ob3RZVmVjdExlbjsKICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgX2hvdFpW
ZWN0TGVuOwoKICAgIHVpbnQgICAgIF9zcGFjZSwgX2F4aXMsIF9kaW0sIF90eXBlLCBfYWNjZXNz
OwogICAgTV9WZWN0b3IyICAgICAgICAgICAgICAgICBfaG90UHQsIF9ob3REaXJWZWM7CiAgICBm
bG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgX2hvdERpclZlY0xlbjsKICAgIE1fVmVjdG9y
ICAgICAgICAgICAgICAgICAgICAgICAgX3dvcmxkRGlyVmVjOwogICAgaW50ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfaWNvbk1vZGU7CgogICAgTV9NYXRyaXggICAgICAgICAgICBf
b3JpZW50YXRpb247CiAgICBNX01hdHJpeCAgICAgICAgICAgIF9uZXdPcmllbnRhdGlvbjsKICAg
ICAKICAgIHVpbnQgICAgICAgICAgICAgICAgX3N0YXJ0WCwgX3N0YXJ0WTsKICAgIHVpbnQgICAg
ICAgICAgICAgICAgX2xhc3RYLCAgX2xhc3RZOwogIAogICAgIAogICAgIAogICAgZmxvYXQgICAg
ICAgICAgICAgICBfdHJhblNlbnMsIF9yb3RTZW5zOwogICAgZmxvYXQgICAgICAgICAgICAgICBf
bWFuU2l6ZTsKCiAgICAgCiAgICAgCiAgICAgCiAgICB1aW50ICAgICAgICAgICAgICAgIF9wV2lk
dGgsIF9wSGVpZ2h0OwogICAgTV9NYXRyaXggICAgICAgICAgICBfY2FtTWF0LCBfaW52Q2FtTWF0
LCBfcHJvak1hdDsKICAgIGZsb2F0ICAgICAgICAgICAgICAgX2ZvY2FsLCBfaGl0aGVyLCBfYXNw
ZWN0LCBfYXBlcnR1cmUsIF96b29tOwogICAgZmxvYXQgICAgICAgICAgICAgICBfeE9mZnNldCwg
X3lPZmZzZXQsIF9pc09ydGhvLCBfb3J0aG9TY2FsZTsKCiAgICAgCiAgICAgCiAgICAgCiAgICBm
bG9hdCAgICAgICAgICAgICAgIF9yZWFsT3J0aG9TY2FsZTsKCnB1YmxpYzoKICAgIGVudW0geyBB
WElTX1gsIEFYSVNfWSwgQVhJU19aLCBBWElTX1pTLCBBWElTX1pDLCBBWElTX1hZLCBBWElTX05P
TkUgfTsKICAgIGVudW0geyBESU1fMUQsIERJTV8yRCB9OwogICAgZW51bSB7IEFDQ0VTU19IT1RL
RVksIEFDQ0VTU19JQ09OIH07CiAgICBlbnVtIHsgVFlQRV9UUkFOLCBUWVBFX1JPVCwgVFlQRV9T
Q0FMRSB9OwogICAgZW51bSB7IENPT1JEX05PTkUsIENPT1JEX09GRiwgQ09PUkRfTE9DQUwsIENP
T1JEX1dPUkxELCBDT09SRF9TQ1JFRU4sCgkgICBDT09SRF9NQU5JUFVMQVRPUiwgQ09PUkRfQ09O
U1RSQUlORUQsIENPT1JEX0NPTlNUUkFJTkVEMiB9OwogICAgZW51bSB7IElDT05fTk9ORSAgICAg
PSAwLCAKCSAgIElDT05fVFJBTlggICAgPSAxLCAKCSAgIElDT05fVFJBTlkgICAgPSAyLAoJICAg
SUNPTl9UUkFOWiAgICA9IDQsCgkgICBJQ09OX1JPVFggICAgID0gOCwKCSAgIElDT05fUk9UWSAg
ICAgPSAxNiwKCSAgIElDT05fUk9UWiAgICAgPSAzMiwKCSAgIElDT05fT1JJR0lOICAgPSA2NCwK
CSAgIElDT05fRElTQUJMRUQgPSAxMjggfTsKCiAgICBPYmplY3RNYW5pcHVsYXRvcih2b2lkICop
OwogICAgdmlydHVhbCB+T2JqZWN0TWFuaXB1bGF0b3IoKTsKCiAgICAgCiAgICB2aXJ0dWFsIGlu
dCAgICAgU3RhcnRNYW5pcHVsYXRpb24oT3BlblN0YWdlQ2FsbGJhY2tTdHJ1Y3QgKmNiLAoJCQkJ
ICAgICAgdm9pZCAqY2FtUHRyLAoJCQkJICAgICAgaW50IHBvcnRXaWR0aCwgaW50IHBvcnRIZWln
aHQsCgkJCQkgICAgICB2b2lkICp1RGF0YSA9IF9fbnVsbCApOwogICAgdmlydHVhbCBib29sIE1v
dmUoT3BlblN0YWdlQ2FsbGJhY2tTdHJ1Y3QgKmNiKTsKICAgIHZpcnR1YWwgYm9vbCBGaW5pc2hN
YW5pcHVsYXRpb24oT3BlblN0YWdlQ2FsbGJhY2tTdHJ1Y3QgKmNiKTsKCiAgICAgCiAgICB2aXJ0
dWFsIHZvaWQgRHJhd2luZ1JvdXRpbmUodm9pZCAqKTsKICAgIHZpcnR1YWwgaW50ICBDaGVja0hv
dFNwb3RzKE9wZW5TdGFnZUNhbGxiYWNrU3RydWN0ICpjYik7CiAgICB2aXJ0dWFsIHZvaWQgQ2Fs
Y0hvdFNwb3RzKGludCBwb3J0V2lkdGgsCgkJCSAgICAgIGludCBwb3J0SGVpZ2h0KTsKICAgIHZp
cnR1YWwgTV9NYXRyaXggR2V0TWFuQmFzaXMoY29uc3QgTV9NYXRyaXggJmNhbU1hdCkgPSAwOwoK
ICAgICAKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBUUkFOX0lDT05fV0lEVEg7CiAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgVFJBTl9JQ09OX0hFSUdIVDsKICAgIHN0YXRpYyBjb25zdCBpbnQg
VFJBTl9JQ09OX0hPVF9YOwogICAgc3RhdGljIGNvbnN0IGludCBUUkFOX0lDT05fSE9UX1k7CiAg
ICBzdGF0aWMgY29uc3QgY2hhciBUUkFOX0lDT05fQklUU1tdOwogICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFJPVF9JQ09OX1dJRFRIOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFJPVF9JQ09O
X0hFSUdIVDsKICAgIHN0YXRpYyBjb25zdCBpbnQgUk9UX0lDT05fSE9UX1g7CiAgICBzdGF0aWMg
Y29uc3QgaW50IFJPVF9JQ09OX0hPVF9ZOwogICAgc3RhdGljIGNvbnN0IGNoYXIgUk9UX0lDT05f
QklUU1tdOwoKfTsKCgojIDQgImgvVmlld01hbmlwdWxhdG9yLmgiIDIKCgpjbGFzcyBWaWV3TWFu
aXB1bGF0b3I6IHB1YmxpYyBNYW5pcHVsYXRvcgp7CnByb3RlY3RlZDoKICAKICAgIE1fVmVjdG9y
IF9vcmJpdEF4aXNYLCBfb3JiaXRBeGlzWSwgX29yYml0QXhpc1o7CiAgICBNX01hdHJpeCBfb3Ji
aXRNYXQ7CiAgICBNX01hdHJpeCBfb3JpZW50YXRpb247CiAgICBNX01hdHJpeCBfbmV3T3JpZW50
YXRpb247CiAgICB1aW50ICBfbW9kZTsKICAgIGZsb2F0IF9zdGFydFgsIF9zdGFydFk7CiAgICBm
bG9hdCBfbGFzdFgsICBfbGFzdFk7CiAgICB1aW50IF9wV2lkdGgsIF9wSGVpZ2h0OwogICAgYm9v
bCBfaXNPcnRob0NhbWVyYTsKICAgIGZsb2F0IF9vcnRob1NjYWxlOwoKcHVibGljOgogICAgIAog
ICAgZW51bSB7IFJPVFhZLCBST1RaLCBUUkFOWFksIFRSQU5aLCBOT09QIH07CgogICAgVmlld01h
bmlwdWxhdG9yKHZvaWQgKik7CiAgICB2aXJ0dWFsIH5WaWV3TWFuaXB1bGF0b3IoKTsKCiAgICB2
aXJ0dWFsIGludCBTdGFydE1hbmlwdWxhdGlvbiggT3BlblN0YWdlQ2FsbGJhY2tTdHJ1Y3QqIGNi
LAoJCQkJICAgdm9pZCogY2FtUHRyLAoJCQkJICAgaW50IHBvcnRXaWR0aCwgaW50IHBvcnRIZWln
aHQsCgkJCQkgICB2b2lkICp1RGF0YSA9IF9fbnVsbCAgKTsKICAgIHZpcnR1YWwgYm9vbCBNb3Zl
KE9wZW5TdGFnZUNhbGxiYWNrU3RydWN0ICpjYik7CiAgICB2aXJ0dWFsIGJvb2wgRmluaXNoTWFu
aXB1bGF0aW9uKE9wZW5TdGFnZUNhbGxiYWNrU3RydWN0ICpjYik7CiAgICB2aXJ0dWFsIGludCBD
aGVja0hvdFNwb3RzKE9wZW5TdGFnZUNhbGxiYWNrU3RydWN0ICpjYik7CiAgICB2aXJ0dWFsIHZv
aWQgQ2FsY0hvdFNwb3RzKCBpbnQgcG9ydFdpZHRoLCBpbnQgcG9ydEhlaWdodCApOwogICAgdmly
dHVhbCB2b2lkIERyYXdpbmdSb3V0aW5lKHZvaWQgKik7CgogICAgIAogICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIENBTV9JQ09OX1dJRFRIOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIENBTV9J
Q09OX0hFSUdIVDsKICAgIHN0YXRpYyBjb25zdCBpbnQgQ0FNX0lDT05fSE9UX1g7CiAgICBzdGF0
aWMgY29uc3QgaW50IENBTV9JQ09OX0hPVF9ZOwogICAgc3RhdGljIGNvbnN0IGNoYXIgQ0FNX0lD
T05fQklUU1tdOwp9OwoKCgoKIyAyMyAiaC9ucmh5X2NsYXNzVmlld01hbmlwdWxhdG9yLmgiIDIK
Cgp1c2luZyBzdGQ6OnZlY3RvcjsKCmNsYXNzIE5SSFlfQ2hhbm5lbE1hbmlwdWxhdG9yCnsKCnBy
b3RlY3RlZDoKICAgIE5SSFlfY2xhc3NDaGFubmVsTGlzdCBfY2hhbkxpc3Q7CiAgICB2aXJ0dWFs
IHZvaWQgZ2V0Q2hhbkxpc3QoIE5SSFlfY2xhc3NDaGFubmVsTGlzdCogY0xpc3QgPSBfX251bGwg
ICkgPSAwOwoKcHVibGljOgogICAgTlJIWV9DaGFubmVsTWFuaXB1bGF0b3IoKXt9CiAgICB2aXJ0
dWFsIH5OUkhZX0NoYW5uZWxNYW5pcHVsYXRvcigpe30KCiAgICAgCiAgICB2b2lkIFNhdmVDaGFu
bmVscygpOwogICAgdm9pZCBSZXNldENoYW5uZWxzKCk7CiAgICB2b2lkIEF1ZGl0Q2hhbm5lbHMo
KTsKICAgIHZvaWQgU2V0VW5kb0NoYW5uZWxzKCk7CgogICAgIAogICAgc3RhdGljIE5SSFlfQ2hh
bm5lbE1hbmlwdWxhdG9yKiBnZXQoIE1hbmlwdWxhdG9yKiApOwp9OwoKY2xhc3MgTlJIWV9DYW1l
cmFNYW5pcHVsYXRvcjoKICAgIHB1YmxpYyBOUkhZX0NoYW5uZWxNYW5pcHVsYXRvciwKICAgIHB1
YmxpYyBWaWV3TWFuaXB1bGF0b3IsCiAgICBwdWJsaWMgT2JzZXJ2ZXIKewoKICAgIGNsYXNzIE5S
SFlfY2xhc3NDYW1lcmEqIF9jYW1lcmE7Cgpwcm90ZWN0ZWQ6CiAgICAgCiAgICB2b2lkIGdldENo
YW5MaXN0KCBOUkhZX2NsYXNzQ2hhbm5lbExpc3QqIGNMaXN0ID0gX19udWxsICApOwoKcHVibGlj
OgogICAgTlJIWV9DYW1lcmFNYW5pcHVsYXRvciggTlJIWV9jbGFzc0NhbWVyYSogKTsKICAgIH5O
UkhZX0NhbWVyYU1hbmlwdWxhdG9yKCk7CgogICAgIAogICAgaW50ICBHZXRPYnNlcnZlclR5cGUo
KSB7IHJldHVybiAweDAwMDAwMDA0IDsgfTsKICAgIHZvaWQgUmVmcmVzaE9ic2VydmVyIChTdWJq
ZWN0ICopOwogICAgaW50ICBBbGxvd0Rlc3RydWN0QnlTdWJqZWN0ICgpIHsgcmV0dXJuIDAgOyB9
OwoKICAgICAKICAgIHZvaWQgUmVmcmVzaCgpOwogICAgaW50IFN0YXJ0RmVlZGJhY2soKTsKICAg
IGJvb2wgTW90aW9uRmVlZGJhY2soKTsKICAgIGJvb2wgRmluaXNoRmVlZGJhY2soKTsKICAgIGJv
b2wgTW92ZSggT3BlblN0YWdlQ2FsbGJhY2tTdHJ1Y3QqICk7Cgp9OwoKY2xhc3MgTlJIWV9DYW1l
cmFSaWdNYW5pcHVsYXRvcjoKICAgIHB1YmxpYyBOUkhZX0NoYW5uZWxNYW5pcHVsYXRvciwKICAg
IHB1YmxpYyBWaWV3TWFuaXB1bGF0b3IsCiAgICBwdWJsaWMgT2JzZXJ2ZXIKewogICAgTlJIWV9j
bGFzc09iamVjdCogX3BhcmVudDsKICAgIE5SSFlfY2xhc3NDYW1lcmEqIF9jYW1lcmE7Cgpwcm90
ZWN0ZWQ6CiAgICAgCiAgICB2b2lkIGdldENoYW5MaXN0KCBOUkhZX2NsYXNzQ2hhbm5lbExpc3Qq
IGNMaXN0ID0gX19udWxsICApOwoKcHVibGljOgogICAgTlJIWV9DYW1lcmFSaWdNYW5pcHVsYXRv
ciggTlJIWV9jbGFzc0NhbWVyYSogKTsKICAgIH5OUkhZX0NhbWVyYVJpZ01hbmlwdWxhdG9yKCk7
CgogICAgIAogICAgaW50IEdldE9ic2VydmVyVHlwZSgpIHsgcmV0dXJuIDB4MDAwMDAwMDQgOyB9
CiAgICB2b2lkIFJlZnJlc2hPYnNlcnZlciggU3ViamVjdCogKTsKICAgIGludCBBbGxvd0Rlc3Ry
dWN0QnlTdWJqZWN0KCkgeyByZXR1cm4gMCA7IH0KCiAgICAgCiAgICB2b2lkIFJlZnJlc2goKTsK
ICAgIGludCBTdGFydEZlZWRiYWNrKCk7CiAgICBib29sIE1vdGlvbkZlZWRiYWNrKCk7CiAgICBi
b29sIEZpbmlzaEZlZWRiYWNrKCk7Cgp9OwoKCiMgNDEgImgvbnJoeV9jbGFzc0NhbWVyYS5oIiAy
CgoKY2xhc3MgTlJIWV9jbGFzc1RyYWNrM2Q7CgogCiAKIAoKCiAKdGVtcGxhdGUgPGNsYXNzIFR5
cGU+IGNsYXNzIE5SSFlfbWF0Y2g7CnRlbXBsYXRlIDxjbGFzcyBUeXBlPiBjbGFzcyBOUkhZX2Fs
cGhhbGlzdDsKY2xhc3MgTlJIWV9jbGFzc1JvdG87CmNsYXNzIE5SSFlfY2xhc3NDaGFubmVsOwoK
IAoKc3RydWN0IE5SSFlfY2xhc3NDYW1lcmE6CiAgICBwdWJsaWMgTlJIWV9jbGFzc09iamVjdCwK
ICAgIHB1YmxpYyBPYnNlcnZlckZhY3RvcnkgPE5SSFlfY2xhc3NDYW1lcmE+CnsKcHJpdmF0ZToK
ICAgIHR5cGVkZWYgTlJIWV9jbGFzc09iamVjdCBpbmhlcml0ZWQ7CiAgICB0eXBlZGVmIE5SSFlf
YWxwaGFsaXN0PE5SSFlfY2xhc3NDYW1lcmE+IGFscGhhbGlzdDsKICAgIGZyaWVuZCBOUkhZX21h
dGNoIDxOUkhZX2NsYXNzQ2FtZXJhPjsKICAgIGZyaWVuZCBOUkhZX2FscGhhbGlzdDxOUkhZX2Ns
YXNzQ2FtZXJhPjsKCiAgICBUd2luZSAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25OYW1l
X2hlcm87CiAgICBUd2luZSAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25OYW1lX3NpbXA7
CiAgICBMaXN0PE5SSFlfY2xhc3NSb3RvKj4gICAgICAgICAgIHJvdG9zOwoKICAgIFpPT0xFQU4g
ICAgICAgICAgICAgICAgICAgICAgICAgb3J0aG9BY3RpdmU7CgogICAgIAoKICAgIE1fTWF0cml4
ICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhUHJvamVjdGlvbk1hdHJpeDsKICAgIE1fTWF0
cml4ICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhT3J0aG9NYXRyaXg7CgogICAgIAoKICAg
IE1fTWF0cml4ICAgICAgICAgICAgICAgICAgICAgICAgc3RlcmVvTGVmdE1hdHJpeDsKICAgIE1f
TWF0cml4ICAgICAgICAgICAgICAgICAgICAgICAgc3RlcmVvUmlnaHRNYXRyaXg7CiAgICBNX01h
dHJpeCAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXJlb0xlZnRQcm9qZWN0aW9uTWF0cml4Owog
ICAgTV9NYXRyaXggICAgICAgICAgICAgICAgICAgICAgICBzdGVyZW9SaWdodFByb2plY3Rpb25N
YXRyaXg7CgogICAgIAoKICAgIElOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcmVv
TW9kZTsKCiAgICAgCiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VNYXRy
aXggKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICB2b2lkIGRldGFjaChOUkhZX2Rl
cGVuZERhdGEgKik7CgogICAgIAogICAgTGlzdCA8TV9WZWN0b3IyPiAgICAgICAgICAgICAgICBz
a2V0Y2hQaXhlbHM7CiAgICBOUkhZX2NsYXNzT2JqZWN0KiBnZXRQb3NPYmplY3QoKTsKCnByb3Rl
Y3RlZDoKICAgIE5SSFlfY2xhc3NUcmFjazNkICAgICAgICAgICAgICAgKnRyYWNrM2RSZWNvcmQ7
CiAgICBWaWV3TWFuaXB1bGF0b3IqIGNhbWVyYU1hbmlwdWxhdG9yOwogICAgYm9vbCBkaXJ0eUNh
bWVyYU1hbmlwdWxhdG9yOwoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
aXRpYWxpemUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE9MSVNI
ICBvcnRob0ZsYWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAK
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdFdvcmxkVHJhdmVyc2UoKTsK
CnB1YmxpYzoKICAgICAKICAgIE5SSFlfY2xhc3NDYW1lcmEgKAogICAgICAgIGNvbnN0IENIQVIg
ICpuYW1lCiAgICAgICAgKTsKICAgIE5SSFlfY2xhc3NDYW1lcmEgKAogICAgICAgIGNvbnN0IENI
QVIgICAgICAgICAgKm5hbWUsCiAgICAgICAgTlJIWV9jbGFzc0NhbWVyYSAgICAqY2xvbmVGcm9t
CiAgICAgICAgKTsKICAgIE5SSFlfY2xhc3NDYW1lcmEgKAogICAgICAgIHZvaWQgCiAgICAgICAg
KTsKCiAgICB+TlJIWV9jbGFzc0NhbWVyYSAoCiAgICAgICAgdm9pZCAKICAgICAgICApOwoKICAg
ICAKICAgIHN0YXRpYyBjb25zdCBDSEFSICAgICAgICAgICAgICAgKlByaW50U2VsZkNsYXNzbmFt
ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsgcmV0dXJuICgiTlJIWV9jbGFzc0NhbWVy
YSIpOyB9CgogICAgIAoKICAgIHN0YXRpYyBJTlQgICAgICAgICAgICAgICAgICAgICAgR2V0U2Vs
ZkNsYXNzVHlwZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsgcmV0dXJuIChUSElOR19U
WVBFX0NBTUVSQSk7IH0KCgogICAgZW51bSB7IFJFUE9TSVRJT05fTk9ORSwgUkVQT1NJVElPTl9P
QkpFQ1QsIFJFUE9TSVRJT05fUklHIH07CiAgICBpbnQgUmVwb3NpdGlvblR5cGUoKTsKICAgIFZp
ZXdNYW5pcHVsYXRvciogR2V0Q2FtZXJhTWFuaXB1bGF0b3IoKTsKICAgIGJvb2wgQ3JlYXRlQ2Ft
ZXJhTWFuaXB1bGF0b3IoKTsgCiAgICB2b2lkIERlc3Ryb3lDYW1lcmFNYW5pcHVsYXRvcigpOwog
ICAgdm9pZCBEaXJ0eUNhbWVyYU1hbmlwdWxhdG9yKCk7CiAgICBpbnQgTG9va0F0T3JiaXRPYmpl
Y3QoKTsKICAgIGludCBQb2ludEF0T3JiaXRPYmplY3QoKTsKCiAgICBzdGF0aWMgTlJIWV9idW5j
aDxOUkhZX2NsYXNzQ2FtZXJhPiAgICAgKkZpbmQgKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgQ0hBUiAgKm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5h
bWUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0hBUiAg
Km5ld05hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICBOUkhZ
X2NsYXNzVGhpbmcgICAgICAgICAgICAgICAgICpDbG9uZSAoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDSEFSICAqbmV3TmFtZQoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICBjb25zdCBDSEFSICAgICAgICAgICAgICAgICAg
ICAgICpQcmludERlcml2ZWRDbGFzc09mU2VsZlR5cGVOYW1lICgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkgeyByZXR1cm4gKCJjYW1lcmEiKTsgfQogICAgSU5UICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZXREZXJpdmVkQ2xhc3NPZlNlbGZUeXBlICgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkgeyByZXR1cm4gKFRISU5HX1RZUEVfQ0FNRVJBKTsgfQoKICAgIHN0YXRpYyBaT09M
RUFOICAgICAgICAgICAgICAgICAgQ2hlY2tQb3NzaWJsZUZvY2FsICgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQUwgICAgICBmb2NhbAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgc3RhdGljIFpPT0xFQU4gICAgICAgICAg
ICAgICAgICBDaGVja1Bvc3NpYmxlQXNwZWN0ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFJFQUwgICAgICBhc3BlY3QKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKICAgIHN0YXRpYyBaT09MRUFOICAgICAgICAgICAgICAgICAgQ2hl
Y2tQb3NzaWJsZUFwZXJ0dXJlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFJFQUwgICAgICBhcGVydHVyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwogICAgc3RhdGljIFpPT0xFQU4gICAgICAgICAgICAgICAgICBDaGVja1Bvc3Np
YmxlSGl0aGVyICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJFQUwgICAgICBoaXRoZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
ICAgIHN0YXRpYyBaT09MRUFOICAgICAgICAgICAgICAgICAgQ2hlY2tQb3NzaWJsZVlvbiAoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRUFMICAgICAgeW9u
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBzdGF0aWMgWk9PTEVB
TiAgICAgICAgICAgICAgICAgIENoZWNrUG9zc2libGVGYWRlciAoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRUFMICAgICAgZmFkZXIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHN0YXRpYyBaT09MRUFOICAgICAgICAgICAg
ICAgICAgQ2hlY2tQb3NzaWJsZU9ydGhvU2NhbGUgKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgIG9ydGhvU2NhbGUKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgCgogICAgIAogICAgWk9PTEVBTiAgICAgICAg
ICAgICAgICAgICAgICAgICBTZXRSb3RvICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExpc3Q8TlJIWV9jbGFzc1JvdG8qPiAgICAgICAmbmV3Um90b0xpc3QKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICBJTlQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFkZFJvdG8gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlJIWV9jbGFzc1JvdG8gICAgICAgICAgICAgICpuZXdSb3RvCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgSU5UICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZW1vdmVSb3RvICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5SSFlfY2xhc3NSb3RvICAgICAgICAgICAgICAqUm90bwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApOwoKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0
Rm9jYWxJbk1NICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJFQUwgICAgICBuZXdGb2NhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
OwogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBTZXRBc3BlY3QgKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgIG5ld0FzcGVj
dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgWk9PTEVBTiAgICAg
ICAgICAgICAgICAgICAgICAgICBTZXRBcGVydHVyZSAoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBSRUFMICAgICAgbmV3QXBlcnR1cmUKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAg
ICAgICAgU2V0SGl0aGVyICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFJFQUwgICAgICBuZXdIaXRoZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKTsKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0WW9uICgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQUwgICAgICBuZXdZ
b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFpPT0xFQU4gICAg
ICAgICAgICAgICAgICAgICAgICAgU2V0RmFkZXIgKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgIG5ld0ZhZGVyCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAg
IFNldEljb25zY2FsZSAoZmxvYXQgbmV3SWNvbnNjYWxlKTsKICAgIFpPT0xFQU4gICAgICAgICAg
ICAgICAgICAgICAgICAgU2V0T3J0aG9BY3RpdmUgKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgWk9PTEVBTiAgIG5ld09ydGhvQWN0aXZlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAg
ICAgICAgIFNldE9ydGhvU2NhbGUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUkVBTCAgICAgIG5ld09ydGhvU2NhbGUKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKCiAgICAgCiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAg
ICAgIFNldFNvbGlkICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJFQUwgICAgICBuZXdTb2xpZFZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkgeyByZXR1cm4gKDAgKTsgfQogICAgIAogICAgWk9PTEVBTiAgICAgICAgICAgICAg
ICAgICAgICAgICBTZXRTdGVyZW9MZWZ0RXllQWN0aXZlICgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFpPT0xFQU4gICBzdGF0dXMKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAg
ICAgIFNldFN0ZXJlb1JpZ2h0RXllQWN0aXZlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFpPT0xFQU4gICBzdGF0dXMKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKCiAgICAgCgoKICAgICAKICAgICAKICAgIExpc3Q8TlJIWV9jbGFz
c1JvdG8qPiAgICAgICAgICAgJkdldFJvdG9zICgpIHsgcmV0dXJuIHRoaXMtPnJvdG9zOyB9Cgog
ICAgUkVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRGb2NhbEluTU0gKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKICAgIFJFQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R2V0QXNwZWN0ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBSRUFMICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdldEFwZXJ0dXJlICgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CiAgICBSRUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldEhpdGhlciAoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOwogICAgUkVBTCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHZXRZb24gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFJFQUwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2V0RmFkZXIgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIEdldE9ydGhvQWN0aXZlICgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICkgeyByZXR1cm4gKG9ydGhvQWN0aXZlKTsgfSAgCiAgICBS
RUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldE9ydGhvU2NhbGUgKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKCgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R2V0Q2FtZXJhTWF0cml4ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1fTWF0cml4ICAgICZtYXRyaXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldENhbWVyYVByb2plY3Rp
b25NYXRyaXggKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTV9NYXRy
aXggICAgJm1hdHJpeAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Q2FtZXJhSW52ZXJzZVdvcmxkTWF0
cml4ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1fTWF0cml4ICAg
ICZtYXRyaXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFJFQUwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Q2FtZXJhRmFkZXJWYWx1ZSAoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOwogICAgSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
ZXRDYW1lcmFTdGVyZW9BY3RpdmVGbGFnICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRDYW1lcmFTdGVyZW9MZWZ0TWF0
cml4ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1fTWF0cml4ICAg
ICZtYXRyaXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldENhbWVyYVN0ZXJlb1JpZ2h0TWF0cml4ICgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1fTWF0cml4ICAgICZtYXRy
aXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdldENhbWVyYVN0ZXJlb0xlZnRQcm9qZWN0aW9uTWF0cml4
ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1fTWF0cml4ICAgICZt
YXRyaXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdldENhbWVyYVN0ZXJlb1JpZ2h0UHJvamVjdGlvbk1h
dHJpeCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNX01hdHJpeCAg
ICAmbWF0cml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgIAog
ICAgUkVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRTb2xpZCAoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApIHsgcmV0dXJuICgoUkVBTCkwLjApOyB9CiAgICAgCiAgICBaT09MRUFO
ICAgICAgICAgICAgICAgICAgICAgICAgIEdldFN0ZXJlb0xlZnRFeWVBY3RpdmUgKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKCiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAg
IEdldFN0ZXJlb1JpZ2h0RXllQWN0aXZlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Cgog
ICAgSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRTdGVyZW9Nb2RlICgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CgogICAgdm9pZCBDcmVhdGVPYnNlcnZlciAoaW50IHR5cGUp
IHsgCglPYnNlcnZlckZhY3Rvcnk8TlJIWV9jbGFzc0NhbWVyYT46OmRvQ3JlYXRlT2JzZXJ2ZXIg
KHRoaXMsIHR5cGUpOyB9OwoKICAgICAKCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERlc2NyaWJlQ3JlYXRlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVGdWxsU3RhdGUgKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3Ry
ZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJlRnVsbFN0YXRlUGFja2VkICgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmli
ZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RGVzY3JpYmVEZWxldGUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmliZUZvY2FsSW5NTSAoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0g
JgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVBc3BlY3QgKAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERlc2NyaWJlQXBlcnR1cmUgKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERlc2NyaWJlSGl0aGVyICgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEZXNjcmliZVlvbiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOwoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RGVzY3JpYmVGYWRlciAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICApOwoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3Jp
YmVPcnRob0FjdGl2ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICApOwoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3Jp
YmVPcnRob1NjYWxlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
YXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CiAgICAgCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIERl
c2NyaWJlUm90byAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFz
cyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVU
cmFjazNkUmVjb3JkICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
YXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmli
ZUljb25zY2FsZShOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJik7CiAgICB2b2lkIAkJCSAgICBM
aXN0Q2FtZXJhKEZJTEUgKmZwLCBjb25zdCBMaXN0PFR3aW5lPiAmbHMpOwoKICAgIEJPT0xFQU4g
ICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZVRyYWNrM2RSZWNvcmQgKCk7CgogICAgQk9P
TEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlVHJhY2szZFJlY29yZCAoKTsKCiAg
ICBOUkhZX2NsYXNzVHJhY2szZCAgICAgICAgICAgICAgICAqR2V0VHJhY2szZFJlY29yZCAoKTsK
CgogICAgIAogICAgdm9pZCBhZGRTa2V0Y2hQaXhlbCggTV9WZWN0b3IyJiApOwogICAgdm9pZCBl
cmFzZVNrZXRjaFBpeGVscyggTV9WZWN0b3IyJiwgZmxvYXQgKTsKICAgIHZvaWQgd2lwZVNrZXRj
aCgpOwogICAgTV9WZWN0b3IyIHNrZXRjaFBpeGVsKCB1bnNpZ25lZCApOwogICAgdW5zaWduZWQg
blNrZXRjaFBpeGVscygpOwogICAgCgp9OwoKIAoKIAoKIyAzMiAibnJoeS9OUkhZX0FjY2Vzcy5j
IiAyCgojIDEgImgvbnJoeV9jbGFzc0xpZ2h0LmgiIDEKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgwKIAoKCgogCgoKIAoKCgoKCiAKCgoKY2xhc3MgTlJIWV9jbGFzc1VzZU1hcDsKCiAKIAogCgog
CnRlbXBsYXRlIDxjbGFzcyBUeXBlPiBjbGFzcyBOUkhZX21hdGNoOwp0ZW1wbGF0ZSA8Y2xhc3Mg
VHlwZT4gY2xhc3MgTlJIWV9hbHBoYWxpc3Q7CgogCgpzdHJ1Y3QgTlJIWV9jbGFzc0xpZ2h0IDog
CiAgICBwdWJsaWMgTlJIWV9jbGFzc09iamVjdCwKICAgIHB1YmxpYyBPYnNlcnZlckZhY3Rvcnkg
PE5SSFlfY2xhc3NMaWdodD4Kewpwcml2YXRlOgogICAgdHlwZWRlZiBOUkhZX2NsYXNzT2JqZWN0
IGluaGVyaXRlZDsKICAgIHR5cGVkZWYgTlJIWV9hbHBoYWxpc3Q8TlJIWV9jbGFzc0xpZ2h0PiBh
bHBoYWxpc3Q7CiAgICBmcmllbmQgTlJIWV9tYXRjaCA8TlJIWV9jbGFzc0xpZ2h0PjsKICAgIGZy
aWVuZCBOUkhZX2FscGhhbGlzdDxOUkhZX2NsYXNzTGlnaHQ+OwoKICAgIFR3aW5lICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWNvbk5hbWVfaGVybzsKICAgIFR3aW5lICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWNvbk5hbWVfc2ltcDsKCiAgICAgCiAgICBaT09MRUFOICAgICAgICAgICAg
ICAgICAgICAgICAgIHNwb3RsaWdodFN0YXR1czsKCiAgICAgCiAgICBaT09MRUFOICAgICAgICAg
ICAgICAgICAgICAgICAgIHNwb3RsaWdodEljb25TdGF0dXM7CgogICAgIAogICAgWk9PTEVBTiAg
ICAgICAgICAgICAgICAgICAgICAgICBzcG90bGlnaHRCZWFtU3RhdHVzOwoKICAgIHZvaWQgZGV0
YWNoKE5SSFlfZGVwZW5kRGF0YSAqKTsKCiAgICBib29sIF9zaGFkb3dGbGFnOwoKcHJvdGVjdGVk
OgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZSAoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIApwdWJsaWM6CiAgICAgCiAgICBOUkhZX2NsYXNzTGlnaHQg
KAogICAgICAgIGNvbnN0IENIQVIgICpuYW1lCiAgICAgICAgKTsKICAgIE5SSFlfY2xhc3NMaWdo
dCAoCiAgICAgICAgY29uc3QgQ0hBUiAgICAgICpuYW1lLAogICAgICAgIE5SSFlfY2xhc3NMaWdo
dCAqY2xvbmVGcm9tCiAgICAgICAgKTsKICAgIE5SSFlfY2xhc3NMaWdodCAoCiAgICAgICAgdm9p
ZCAKICAgICAgICApOwoKICAgIH5OUkhZX2NsYXNzTGlnaHQgKAogICAgICAgIHZvaWQgCiAgICAg
ICAgKTsKCiAgICAgCiAgICBzdGF0aWMgY29uc3QgQ0hBUiAgICAgICAgICAgICAgICpQcmludFNl
bGZDbGFzc25hbWUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7IHJldHVybiAoIk5SSFlf
Y2xhc3NMaWdodCIpOyB9CgogICAgIAoKICAgIHN0YXRpYyBJTlQgICAgICAgICAgICAgICAgICAg
ICAgR2V0U2VsZkNsYXNzVHlwZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsgcmV0dXJu
IChUSElOR19UWVBFX0xJR0hUKTsgfQoKICAgIHN0YXRpYyBOUkhZX2J1bmNoPE5SSFlfY2xhc3NM
aWdodD4gKkZpbmQgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQ0hBUiAgKm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5hbWUgKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0hBUiAgKm5ld05hbWUKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICBOUkhZX2NsYXNzVGhpbmcgICAgICAg
ICAgICAgICAgICpDbG9uZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDSEFSICAqbmV3TmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApOwoKICAgICAKCiAgICBjb25zdCBDSEFSICAgICAgICAgICAgICAgICAgICAgICpQcmludERl
cml2ZWRDbGFzc09mU2VsZlR5cGVOYW1lICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgeyBy
ZXR1cm4gKCJsaWdodCIpOyB9CiAgICBJTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
dERlcml2ZWRDbGFzc09mU2VsZlR5cGUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7IHJl
dHVybiAoVEhJTkdfVFlQRV9MSUdIVCk7IH0KCiAgICAgCiAgICBzdGF0aWMgWk9PTEVBTiAgICAg
ICAgICAgICAgICAgIENoZWNrUG9zc2libGVGb2N1cyAoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSRUFMICAgICAgICAqbmV3Rm9jdXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJTlQgICBudW1iZXIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHN0YXRpYyBaT09MRUFOICAgICAgICAgICAgICAg
ICAgQ2hlY2tQb3NzaWJsZUF0dGVuICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJFQUwgICAgICAgICpuZXdBdHRlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IElOVCAgIG51bWJlcgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICApOwoKICAgICAKCiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAg
IFNldExndENvbG9yICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJFQUwgICAgICAqbmV3TGd0Q29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBJTlQgICAgICAgbnVtYmVyCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIFNldExn
dERpZmYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVB
TCAgICAgICpuZXdMZ3REaWZmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSU5UICAgICAgIG51bWJlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOwogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBTZXRMZ3RTcGVjICgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQUwgICAgICAq
bmV3TGd0U3BlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IElOVCAgICAgICBudW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIFNldExndFNwZWNSZWQgKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgIG5ld0xn
dFNwZWNSZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFpPT0xF
QU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0TGd0U3BlY0dyZWVuICgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQUwgICAgICBuZXdMZ3RTcGVjR3Jl
ZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFpPT0xFQU4gICAg
ICAgICAgICAgICAgICAgICAgICAgU2V0TGd0U3BlY0JsdWUgKAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgIG5ld0xndFNwZWNCbHVlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgWk9PTEVBTiAgICAgICAgICAg
ICAgICAgICAgICAgICBTZXRMZ3REaWZmUmVkICgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFJFQUwgICAgICBuZXdMZ3REaWZmUmVkCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAg
ICAgIFNldExndERpZmZHcmVlbiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBSRUFMICAgICAgbmV3TGd0RGlmZkdyZWVuCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIFNl
dExndERpZmZCbHVlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJFQUwgICAgICBuZXdMZ3REaWZmQmx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwoKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0TGd0SW50
ZW5zICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQUwg
ICAgICBuZXdMZ3RJbnRlbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
ICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0TGd0U3BlY0ludGVucyAoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRUFMICAgICAgbmV3
TGd0SW50ZW5zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09M
RUFOICAgICAgICAgICAgICAgICAgICAgICAgIFNldExndERpZmZJbnRlbnMgKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgIG5ld0xndEludGVu
cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgIFpPT0xFQU4gICAg
ICAgICAgICAgICAgICAgICAgICAgU2V0TGd0U3BvdExpZ2h0SWNvblN0YXR1cyAoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBaT09MRUFOICAgbmV3TGd0U3Bv
dExpZ2h0SWNvblN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwog
ICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBTZXRMZ3RTcG90TGlnaHRCZWFtU3Rh
dHVzICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFpPT0xF
QU4gICBuZXdMZ3RTcG90TGlnaHRCZWFtU3RhdHVzCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIFNldExndFNw
b3RMaWdodFN0YXR1cyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBaT09MRUFOICAgbmV3TGd0U3BvdExpZ2h0U3RhdHVzCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIFNl
dEZvY3VzICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJF
QUwgICAgICAqbmV3Rm9jdXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJTlQgICAgICAgbnVtYmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIFNldEZvY3VzTWluICgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQUwgICAgICBu
ZXdGb2N1c01pbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgWk9P
TEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBTZXRGb2N1c01heCAoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRUFMICAgICAgbmV3Rm9jdXNNYXgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFpPT0xFQU4gICAgICAgICAg
ICAgICAgICAgICAgICAgU2V0Rm9jdXNFeHAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgIG5ld0ZvY3VzRXhwCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAg
IFNldEF0dGVuICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJFQUwgICAgICAqbmV3QXR0ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBJTlQgICAgICAgbnVtYmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIFNldEF0dGVuU3Rh
cnQgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVBTCAg
ICAgIG5ld0F0dGVuU3RhcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
ICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0QXR0ZW5FbmQgKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgIG5ld0F0dGVu
RW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAg
ICAgICAgICAgICAgICAgICAgICAgIFNldEF0dGVuRXhwICgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQUwgICAgICBuZXdBdHRlbkV4cAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAKICAgIFpPT0xFQU4gICAgICAgICAg
ICAgICAgICAgICAgICAgU2V0U29saWQgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUkVBTCAgICAgIG5ld1NvbGlkVmFsdWUKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKSB7IHJldHVybiAoMCApOyB9CiAgICBaT09MRUFOICAgICAgICAg
ICAgICAgICAgICAgICAgIFNldEljb25zY2FsZShmbG9hdCBuZXdJY29uc2NhbGUpOwogICAgUkVB
TCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRMZ3REaWZmUmVkICgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CiAgICBSRUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldExn
dERpZmZHcmVlbiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgUkVBTCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZXRMZ3REaWZmQmx1ZSAoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOwogICAgUkVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRMZ3REaWZmSW50
ZW5zICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgUkVBTCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZXRMZ3RTcGVjUmVkICgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7
CiAgICBSRUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldExndFNwZWNHcmVlbiAoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApOwogICAgUkVBTCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZXRMZ3RTcGVjQmx1ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgUkVB
TCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRMZ3RTcGVjSW50ZW5zICgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7CgoKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAg
R2V0TGd0U3BvdExpZ2h0SWNvblN0YXR1cyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsg
cmV0dXJuIChzcG90bGlnaHRJY29uU3RhdHVzKTsgfQogICAgWk9PTEVBTiAgICAgICAgICAgICAg
ICAgICAgICAgICBHZXRMZ3RTcG90TGlnaHRCZWFtU3RhdHVzICgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkgeyByZXR1cm4gKHNwb3RsaWdodEJlYW1TdGF0dXMpOyB9CiAgICBaT09MRUFOICAg
ICAgICAgICAgICAgICAgICAgICAgIEdldExndFNwb3RMaWdodFN0YXR1cyAoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApIHsgcmV0dXJuIChzcG90bGlnaHRTdGF0dXMpOyB9CiAgICBSRUFMICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdldExndFNwb3RFeHAgKAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKICAgIFJFQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0TGd0U3Bv
dEFuZ2xlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBSRUFMICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpHZXRGb2N1cyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwog
ICAgUkVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRGb2N1c01pbiAoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOwogICAgUkVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
ZXRGb2N1c01heCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgUkVBTCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZXRGb2N1c0V4cCAoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApOwogICAgUkVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqR2V0QXR0ZW4gKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFJFQUwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2V0QXR0ZW5TdGFydCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgUkVBTCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRBdHRlbkVuZCAoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwogICAgUkVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRBdHRlbkV4
cCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAKICAgIFJFQUwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2V0U29saWQgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7
IHJldHVybiAoKFJFQUwpMC4wKTsgfQogICAgCiAgICB2b2lkIENyZWF0ZU9ic2VydmVyIChpbnQg
dHlwZSkgewoJT2JzZXJ2ZXJGYWN0b3J5PE5SSFlfY2xhc3NMaWdodD46OmRvQ3JlYXRlT2JzZXJ2
ZXIgKHRoaXMsIHR5cGUpOyB9CiAgICAKICAgICAKCiAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERlc2NyaWJlQ3JlYXRlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERlc2NyaWJlRnVsbFN0YXRlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERlc2NyaWJlRnVsbFN0YXRlUGFja2VkICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERlc2NyaWJlV3JlbkZ1bGxTdGF0ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEZXNjcmliZURlbGV0ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
ZXNjcmliZUxndENvbG9yICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2Ny
aWJlTGd0SW50ZW5zICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
YXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJl
TGd0U3BvdExpZ2h0U3RhdHVzICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIERl
c2NyaWJlTGd0U3BvdExpZ2h0SWNvblN0YXR1cyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEZXNjcmliZUxndFNwb3RFeHAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRGVzY3JpYmVMZ3RTcG90QW5nbGUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRGVzY3JpYmVGb2N1cyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
ZXNjcmliZUF0dGVuICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
YXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJl
RGlmZnVzZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBO
UkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmliZVNwZWN1
bGFyICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIE5SSFlf
Q2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmliZVRleHR1cmUg
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFz
c0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVJY29uc2NhbGUoTlJI
WV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYpOwogICAgdm9pZCAJCQkgICAgU2V0VXNlTWFwc0xpc3Qg
KAogICAgCQkJCQlOUkhZX2J1bmNoIDxOUkhZX2NsYXNzVXNlTWFwPiAgKm5ld1VzZU1hcHMKCQkJ
CSAgICApOwogICAgdm9pZCAJCQkgICAgUmVtb3ZlVXNlTWFwc0xpc3QgKAogICAgCQkJCQlOUkhZ
X2J1bmNoIDxOUkhZX2NsYXNzVXNlTWFwPiAgKm5ld1VzZU1hcHMKCQkJCSAgICApOwoKICAgIHZv
aWQgCQkJICAgIEVyYXNlVXNlTWFwc0xpc3QgKAogICAgCQkJCQl2b2lkCgkJCQkgICAgKTsKICAg
IHZvaWQgCQkJICAgIExpc3RMaWdodChGSUxFICpmcCwgY29uc3QgTGlzdDxUd2luZT4gJmxzKTsK
CiAgICBib29sCUdldFNoYWRvd0ZsYWcodm9pZCkgeyByZXR1cm4gX3NoYWRvd0ZsYWc7IH0KCiAg
ICB2b2lkCVNldFNoYWRvd0ZsYWcoYm9vbCBmbGFnKSB7IF9zaGFkb3dGbGFnID0gZmxhZzsgfQoK
CiAgICBMaXN0PE5SSFlfY2xhc3NVc2VNYXAgICo+IAlfdXNlbWFwc0xpc3Q7CiAgIAogICAgc3Rh
dGljIGludAkJCV9tYXhMaWdodHM7Cgpwcm90ZWN0ZWQ6CiAgICAgCiAgICB2b2lkIHBvc3RXb3Js
ZFRyYXZlcnNlICgpOwp9OwoKIAoKIAoKIyAzMyAibnJoeS9OUkhZX0FjY2Vzcy5jIiAyCgojIDEg
ImgvbnJoeV9jbGFzc01hcC5oIiAxCgogCgoKCgoKCgoKCgoKCgoKCgwKIAoKCgogCgoKIAoKCgoK
CiAKCgojIDEgImgvbnJoeV9jbGFzc1JvdG9EYXRhLmgiIDEKCgoKCiMgMSAiL3NvZnR3YXJlL3Ro
YWxpYS9oL3N0ZHR5cGVzLmgiIDEKCiAKCgoKCgoKCgoKCgoKCgoKCgojIDIwMyAiL3NvZnR3YXJl
L3RoYWxpYS9oL3N0ZHR5cGVzLmgiCgoKCgoKCgoKCgoKCgoKIyA1ICJoL25yaHlfY2xhc3NSb3Rv
RGF0YS5oIiAyCgoKCgoKCgoKCmNsYXNzIE5SSFlfY2xhc3NNYXA7CmNsYXNzIE5SSFlfY2xhc3NS
b3RvOwoKY2xhc3MgICBOUkhZX2NsYXNzUm90b0RhdGEgewoKcHVibGljOgoKICAgIE5SSFlfY2xh
c3NSb3RvRGF0YSggdm9pZCApIHt9OwogICAgTlJIWV9jbGFzc1JvdG9EYXRhKCBJTlQgaW54LCBU
d2luZSBuYW1lLCBJTlQgZGVwdGgsIE5SSFlfY2xhc3NNYXAgKk1hcCk7CiAgICBOUkhZX2NsYXNz
Um90b0RhdGEoIE5SSFlfY2xhc3NSb3RvRGF0YSAqY2xvbmVGcm9tLCBOUkhZX2NsYXNzTWFwICpN
YXApOwogICAgfk5SSFlfY2xhc3NSb3RvRGF0YSggdm9pZCApOwoKICAgIHZvaWQgICAgIFJlYWRJ
bWFnZSgpOwogICAgdm9pZCAgICAgUmVhZENyb3BEYXRhUHJlY2lzZSggdm9pZCApOwogICAgdm9p
ZCAgICAgV3JpdGVDcm9wRGF0YVByZWNpc2UoIE5SSFlfY2xhc3NSb3RvICosIElOVCAqLAoJCQkJ
ICB1bnNpZ25lZCB3ID0gMCwgdW5zaWduZWQgaCA9IDAKCQkJCSAgKTsKICAgIHZvaWQgICAgIFZp
c2libGVDcm9wUGFyYW1ldGVyc1ByZWNpc2UoICAJUkVBTCAgICBwb3J0Wm9vbSwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJUkVBTCAgICBwb3J0WG9mZnNldCwgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJUkVBTCAgICBwb3J0WW9mZnNl
dCApOwogICAgSU5UICAgICBHZXRXaWR0aCAoIHZvaWQgKSB7IHJldHVybiggdGhpcy0+d2lkdGgp
O30KICAgIElOVCAgICAgR2V0SGVpZ2h0ICggdm9pZCApIHsgcmV0dXJuKCB0aGlzLT5oZWlnaHQp
O30KICAgIHZvaWQgICAgIFJlc2V0Q2xlYW4gKHZvaWQgKSB7IHRoaXMtPmNsZWFuID0gMCA7fQog
ICAgdm9pZCAgICAgQ2xlYXIgKHZvaWQgKTsKCiAgICB2b2lkIFNldE5hbWUgKFR3aW5lICZuYW1l
KSB7IGZpbGVuYW1lID0gbmFtZTsgfQogICAgc2hvcnQgR2V0Q29va2llICgpIHsgcmV0dXJuIF9t
YXBDb29raWU7IH0KICAgIHZvaWQgU2V0Q29va2llIChzaG9ydCBjKSB7IF9tYXBDb29raWUgPSBj
OyB9CgogICAgSU5UICAgICAgICAgICAgICAgICBpbmRleDsgICAgICAgICAgIAogICAgSU5UICAg
ICAgICAgICAgICAgICB3aWR0aDsgICAgICAgICAgIAogICAgSU5UICAgICAgICAgICAgICAgICBo
ZWlnaHQ7ICAgICAgICAgCiAgICAgCiAgICBSRUFMICAgICAgICAgICAgICAgIG9yaWdXaWR0aDsg
ICAgICAgCiAgICBSRUFMICAgICAgICAgICAgICAgIG9yaWdIZWlnaHQ7ICAgICAKICAgIFJFQUwg
ICAgICAgICAgICAgICAgeE9yaWdpbjsgICAgICAgICAKICAgIFJFQUwgICAgICAgICAgICAgICAg
eU9yaWdpbjsgICAgICAgICAKICAgIFJFQUwgICAgICAgICAgICAgICAgZGVjaW1hdGU7ICAgICAg
ICAKCiAgICBJTlQgICAgICAgICAgICAgICAgIGltYWdlV2lkdGg7ICAgICAgCiAgICBJTlQgICAg
ICAgICAgICAgICAgIGltYWdlSGVpZ2h0OwogICAgSU5UICAgICAgICAgICAgICAgICBwb3J0V2lk
dGg7ICAgICAgIAogICAgSU5UICAgICAgICAgICAgICAgICBwb3J0SGVpZ2h0OwogICAgICAgIAog
ICAgUkVBTCAgICAgICAgICAgICAgICB2aXNpYmxlQ3JvcFdpZHRoOwkgCiAgICBSRUFMICAgICAg
ICAgICAgICAgIHZpc2libGVDcm9wSGVpZ2h0OwogICAgUkVBTCAgICAgICAgICAgICAgICB2aXNp
YmxlQ3JvcFhvZmZzZXQ7ICAKICAgIFJFQUwgICAgICAgICAgICAgICAgdmlzaWJsZUNyb3BZb2Zm
c2V0OyAgCgogICAgUkVBTCAgICAgICAgICAgICAgICB3YXJyYXlXaWR0aDsJIAogICAgUkVBTCAg
ICAgICAgICAgICAgICB3YXJyYXlIZWlnaHQ7CiAgICBSRUFMICAgICAgICAgICAgICAgIHdhcnJh
eVhvZmZzZXQ7ICAgICAgIAogICAgUkVBTCAgICAgICAgICAgICAgICB3YXJyYXlZb2Zmc2V0OyAg
ICAgICAKCiAgICBSRUFMICAgICAgICAgICAgICAgIHBvcnRab29tOyAgICAgICAgCiAgICBSRUFM
ICAgICAgICAgICAgICAgIHBvcnRYb2Zmc2V0OyAgICAgCiAgICBSRUFMICAgICAgICAgICAgICAg
IHBvcnRZb2Zmc2V0OwoKICAgIFJFQUwgICAgICAgICAgICAgICAgcmVjdFpvb207ICAgICAgICAK
CiAgICBSRUFMICAgICAgICAgICAgICAgIHJlZFdlaWdodDsgICAgICAgCiAgICBSRUFMICAgICAg
ICAgICAgICAgIGdyZWVuV2VpZ2h0OwogICAgUkVBTCAgICAgICAgICAgICAgICBibHVlV2VpZ2h0
OwoKICAgIEJPT0xFQU4gICAgICAgICAgICAgZmlsbU1vZGU7ICAgICAgICAKCiAgICBCT09MRUFO
ICAgICAgICAgICAgIGZpdDsgICAgICAgICAgICAgCiAgICAgCiAgICB1bnNpZ25lZCBjaGFyICAg
ICAgIGRlcHRoOyAgICAgICAgICAgCiAgICB1bnNpZ25lZCBsb25nICAgICAgICpyYXJyYXk7ICAg
ICAgICAgCiAgICBVX0NIQVIgICAgICAgICAgICAgICpjYXJyYXk7ICAgICAgICAgCiAgICBUd2lu
ZSAgICAgICAgICAgICAgIGZpbGVuYW1lOyAgICAgICAgCiAgICBOUkhZX2NsYXNzTWFwICAgICAg
ICpNYXA7ICAgICAgICAgICAgCgogICAgIAogICAgc3RhdGljICB1bnNpZ25lZCBsb25nICAgICAg
ICAgICAqYnl0ZTJsb25nTFVUOwoKICAgIEJPT0xFQU4gICAgICAgICAgICAgY2xlYW47ICAgICAg
IAogICAgQk9PTEVBTiAgICAgICAgICAgICByZWFkV2hvbGVJbWFnZTsgIAoKcHJpdmF0ZToKCQog
ICAgc2hvcnQgX21hcENvb2tpZTsKCQp9OwoKaW5saW5lIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSgg
TlJIWV9jbGFzc1JvdG9EYXRhICkgeyByZXR1cm4gIk5SSFlfY2xhc3NSb3RvRGF0YSI7IH07CgpJ
TlQgR2V0QXZhaWxhYmxlTWVtb3J5KHZvaWQpOwoKCiMgMzUgImgvbnJoeV9jbGFzc01hcC5oIiAy
CgojIDEgImgvTlJIWV9Db29raWUuaCIgMQoKCgpjbGFzcyBOUkhZX0Nvb2tpZSB7CiAgICBzaG9y
dCBfY29va2llOwpwdWJsaWM6CiAgICBOUkhZX0Nvb2tpZSgpIDogX2Nvb2tpZSgxKSB7fQogICAg
dm9pZCBVcGRhdGVDb29raWUoKSB7IF9jb29raWUrKzsgfQogICAgc2hvcnQgR2V0QmFkQ29va2ll
KCkgeyByZXR1cm4gX2Nvb2tpZSAtIDE7IH0KICAgIHNob3J0IEdldENvb2tpZSgpIHsgcmV0dXJu
IF9jb29raWU7IH0KfTsKCgojIDM2ICJoL25yaHlfY2xhc3NNYXAuaCIgMgoKCmVudW0gZXhjZXB0
aW9uVVYgeyBCTEVFRCwgTk9STUFMIH07CgogCiAKIAoKIAp0ZW1wbGF0ZSA8Y2xhc3MgVHlwZT4g
Y2xhc3MgTlJIWV9tYXRjaDsKdGVtcGxhdGUgPGNsYXNzIFR5cGU+IGNsYXNzIE5SSFlfYWxwaGFs
aXN0OwoKc3RydWN0IE5SSFlfY2xhc3NNYXA6cHVibGljIE5SSFlfY2xhc3NUaGluZyB7CnByaXZh
dGU6CiAgICB0eXBlZGVmIE5SSFlfY2xhc3NUaGluZyBpbmhlcml0ZWQ7CiAgICB0eXBlZGVmIE5S
SFlfYWxwaGFsaXN0PE5SSFlfY2xhc3NNYXA+IGFscGhhbGlzdDsKICAgIGZyaWVuZCBOUkhZX21h
dGNoIDxOUkhZX2NsYXNzTWFwPjsKICAgIGZyaWVuZCBOUkhZX2FscGhhbGlzdDxOUkhZX2NsYXNz
TWFwPjsKCiAgICAgCiAgICAgICAgSU5UICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQ7Cgpwcm90
ZWN0ZWQ6CgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZSAo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAKCiAgICBJTlQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlcHRoOwoKICAgICAKICAgICAKICAgICAKCiAgICBUd2luZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZEZpbGVuYW1lOwoKICAgIExpc3Q8TlJIWV9jbGFz
c1JvdG9EYXRhICo+ICAgICAgbWFwRGF0YTsKICAgIE5SSFlfY2xhc3NSb3RvRGF0YSAgICAgICAg
ICAgICAgKmN1cnJlbnRNYXA7CgogICAgIAoKICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAg
ICAgICAgKnJhcnJheTsgICAgICAgIAoKICAgIElOVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW1hZ2VXaWR0aDsgICAgICAKICAgIElOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW1hZ2VIZWlnaHQ7CiAgICBJTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3BXaWR0
aDsKICAgIElOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JvcEhlaWdodDsKICAgIElO
VCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JvcFhvcmlnaW47CiAgICBJTlQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENyb3BZb3JpZ2luOwogICAgRkxPQVQgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDcm9wRGVjaW1hdGU7ICAgCiAgICB2b2lkIHBvc3RXb3JsZFRyYXZlcnNl
ICgpOwoKcHVibGljOgoKICAgIExpc3Q8VHdpbmU+CSAgICBfd3Jlbk9wdHM7CiAgICBCT09MRUFO
ICAgICAgICAgX2NyZWF0ZURwdDsKCgogICAgVHdpbmUgICAgICAgICAgIGZpbGVOYW1lOwogICAg
ZXhjZXB0aW9uVVYgICAgIG91dFVWYXJlYTsgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgIFR3aW5lICAgICAgICAgICBtb3N0UmVjZW50bHlSZWFkRmlsZTsK
ICAgIAogICAgQk9PTEVBTiAgICAgICAgIGZpbG1Nb2RlOyAgICAgICAgCiAgICBCT09MRUFOICAg
ICAgICAgcmVhZFdob2xlSW1hZ2U7ICAKCiAgICBOUkhZX0Nvb2tpZSAgICAgX01hcENvb2tpZTsK
CiAgICAgCiAgICBOUkhZX2NsYXNzTWFwICgKICAgICAgICBjb25zdCBDSEFSICAqbmFtZQogICAg
ICAgICk7CiAgICBOUkhZX2NsYXNzTWFwICgKICAgICAgICBjb25zdCBDSEFSICAgICAgKm5hbWUs
CiAgICAgICAgTlJIWV9jbGFzc01hcCAgICpjbG9uZUZyb20KICAgICAgICApOwogICAgTlJIWV9j
bGFzc01hcCAoCiAgICAgICAgdm9pZCAKICAgICAgICApOwoKICAgIH5OUkhZX2NsYXNzTWFwICgK
ICAgICAgICB2b2lkIAogICAgICAgICk7CgogICAgIAogICAgc3RhdGljIGNvbnN0IENIQVIgICAg
ICAgICAgICAgICAqUHJpbnRTZWxmQ2xhc3NuYW1lICgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICkgeyByZXR1cm4gKCJOUkhZX2NsYXNzTWFwIik7IH0KCiAgICAgCgogICAgc3RhdGljIElOVCAg
ICAgICAgICAgICAgICAgICAgICBHZXRTZWxmQ2xhc3NUeXBlICgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkgeyByZXR1cm4gKFRISU5HX1RZUEVfTUFQKTsgfQoKICAgIHN0YXRpYyBOUkhZX2J1
bmNoPE5SSFlfY2xhc3NNYXA+ICpGaW5kICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENIQVIgICpuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICk7CgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuYW1lICgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENIQVIgICpuZXdO
YW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgTlJIWV9jbGFz
c1RoaW5nICAgICAgICAgICAgICAgICAqQ2xvbmUgKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgQ0hBUiAgKm5ld05hbWUKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKCiAgICBjb25zdCBDSEFSICAgICAgICAgICAgICAgICAgICAgICpQ
cmludERlcml2ZWRDbGFzc09mU2VsZlR5cGVOYW1lICgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICkgeyByZXR1cm4gKCJtYXAiKTsgfQogICAgSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHZXREZXJpdmVkQ2xhc3NPZlNlbGZUeXBlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkg
eyByZXR1cm4gKFRISU5HX1RZUEVfTUFQKTsgfQoKCiAgICAgCgoKICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRGVzY3JpYmVDcmVhdGUgKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRGVzY3JpYmVGdWxsU3RhdGUgKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRGVzY3JpYmVGdWxsU3RhdGVQYWNrZWQgKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRGVzY3JpYmVXcmVuRnVsbFN0YXRlICgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERlc2NyaWJlRGVsZXRlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERlc2NyaWJlRmlsZU5hbWUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGVzY3JpYmVEZXB0aCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNj
cmliZU1hcE9uICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNz
IE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRGVzY3JpYmVGaWxtTW9kZSAoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJlQ3JvcCAo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNz
RGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERlc2NyaWJlV3Jlbk9wdHMgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICB2b2lkIAkJCSAgICBMaXN0TWFwKEZJTEUgKmZw
LCBjb25zdCBMaXN0PFR3aW5lPiAmbHMpOwoKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAg
ICAgICAgU2V0RmlsZU5hbWUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ0hBUiAgICAgICpuZXdGaWxlTmFtZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICApOwogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBTZXREZXB0
aCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJTlQgICAg
ICAgbmV3RGVwdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFR3
aW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0RmlsZU5hbWUgKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKSB7IHJldHVybiAodGhpcy0+cGFyc2VkRmlsZW5hbWUpOyB9CiAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZUZpbGVOYW1lICgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CiAgICBJTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldERl
cHRoICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgeyByZXR1cm4gKGRlcHRoKTsgfQoKICAg
IEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0Q3VycmVudE1hcCggSU5UIHZhbHVl
KTsKICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0Q3VycmVudE1hcCggdm9p
ZCApOwogICAgTlJIWV9jbGFzc1JvdG9EYXRhICAgICAgICAgICAgICAqR2V0Q3VycmVudE1hcCgp
OwogICAgTlJIWV9jbGFzc1JvdG9EYXRhICAgICAgICAgICAgICAqR2V0Q3VycmVudE1hcCggSU5U
IHZhbHVlKTsKCiAgICAgCiAgICBJTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldElt
YWdlV2lkdGgodm9pZCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
IHJldHVybiAodGhpcy0+SW1hZ2VXaWR0aCk7IH0gICAgICAgCiAgICBJTlQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdldEltYWdlSGVpZ2h0KHZvaWQgKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gKHRoaXMtPkltYWdlSGVpZ2h0KTsgfQoKICAg
IEZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Q3JvcFByZURlY2ltV2lkdGgodm9p
ZCApOwogICAgRkxPQVQgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRDcm9wUHJlRGVjaW1I
ZWlnaHQodm9pZCApOwogICAgRkxPQVQgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRDcm9w
WG9yaWdpbih2b2lkICk7CiAgICBGTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldENy
b3BZb3JpZ2luKHZvaWQgKTsKICAgIEZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0
RGVjaW1hdGUodm9pZCApOwoKICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgICAgICAgKkdl
dEltYWdlRGF0YVJlYWRQdHIodm9pZCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7IHJldHVybiAodGhpcy0+cmFycmF5KTsgfSAgICAgICAKCiAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWFkSW1hZ2UoVHdpbmUpOwogICAgWk9PTEVBTiAgICAg
ICAgICAgICAgICAgICAgICAgICBDaGVja01lbW9yeSAoY29uc3QgY2hhciAqbmFtZSk7CiAgICBl
eGNlcHRpb25VViAgICAgICAgICAgICAgICAgICAgIEdldEV4Y2VwdGlvblR5cGUoIHZvaWQgKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gKHRoaXMtPm91
dFVWYXJlYSk7IH0KICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1cmdlRnJh
bmdlKE5SSFlfSU5UX0ZSQU5HRSAqcmFuZ2UpOwogICAgVHdpbmUgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb25zdHJ1Y3RNYXBOYW1lKElOVCB2YWx1ZSk7CgogICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVsb2FkKHZvaWQgKTsKCiAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgVXBkYXRlV3Jlbk9wdHMoIAogCQkJCVR3aW5lICAgICAgICAgICZ0CiAgICApOwogICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgIFJlbW92ZVdyZW5PcHRzKCAKIAkJCQlUd2luZSAgICAg
ICAgICAmdAogICAgKTsKCn07CgogCgogCgojIDM0ICJucmh5L05SSFlfQWNjZXNzLmMiIDIKCiMg
MSAiaC9ucmh5X2NsYXNzTWF0ZXJpYWwuaCIgMQoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKDAog
CgoKCiAKCgogCgoKCgoKIAoKCgpjbGFzcyBOUkhZX2NsYXNzVXNlTWFwOwoKIAogCiAKCiAKdGVt
cGxhdGUgPGNsYXNzIFR5cGU+IGNsYXNzIE5SSFlfbWF0Y2g7CnRlbXBsYXRlIDxjbGFzcyBUeXBl
PiBjbGFzcyBOUkhZX2FscGhhbGlzdDsKCiAKCnN0cnVjdCBOUkhZX2NsYXNzTWF0ZXJpYWwgOgog
ICAgcHVibGljIE5SSFlfY2xhc3NUaGluZywKICAgIHB1YmxpYyBPYnNlcnZlckZhY3RvcnkgPE5S
SFlfY2xhc3NNYXRlcmlhbD4KewogICAgdHlwZWRlZiBOUkhZX2NsYXNzVGhpbmcgaW5oZXJpdGVk
OwogICAgdHlwZWRlZiBOUkhZX2FscGhhbGlzdDxOUkhZX2NsYXNzTWF0ZXJpYWw+IGFscGhhbGlz
dDsKICAgIGZyaWVuZCBOUkhZX21hdGNoIDxOUkhZX2NsYXNzTWF0ZXJpYWw+OwogICAgZnJpZW5k
IE5SSFlfYWxwaGFsaXN0PE5SSFlfY2xhc3NNYXRlcmlhbD47CgogICAgdm9pZCBkZXRhY2goTlJI
WV9kZXBlbmREYXRhICopOwoKICAgIHNob3J0IAlfdXNlbWFwQ29va2llOwoKcHJvdGVjdGVkOgog
ICAgVHdpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICBfYWN0aXZlVXNlbWFwOwoKICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemUgKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKCnB1YmxpYzoKICAgICAKICAgIE5SSFlfY2xhc3NNYXRlcmlhbCAoCiAg
ICAgICAgY29uc3QgQ0hBUiAgKm5hbWUKICAgICAgICApOwogICAgTlJIWV9jbGFzc01hdGVyaWFs
ICgKICAgICAgICBjb25zdCBDSEFSICAgICAgICAgICpuYW1lLAogICAgICAgIE5SSFlfY2xhc3NN
YXRlcmlhbCAgKmNsb25lRnJvbQogICAgICAgICk7CiAgICBOUkhZX2NsYXNzTWF0ZXJpYWwgKAog
ICAgICAgIHZvaWQgCiAgICAgICAgKTsKCiAgICB+TlJIWV9jbGFzc01hdGVyaWFsICgKICAgICAg
ICB2b2lkIAogICAgICAgICk7CgogICAgIAogICAgc3RhdGljIGNvbnN0IENIQVIgICAgICAgICAg
ICAgICAqUHJpbnRTZWxmQ2xhc3NuYW1lICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgeyBy
ZXR1cm4gKCJOUkhZX2NsYXNzTWF0ZXJpYWwiKTsgfQoKICAgICAKCiAgICBzdGF0aWMgSU5UICAg
ICAgICAgICAgICAgICAgICAgIEdldFNlbGZDbGFzc1R5cGUgKAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKSB7IHJldHVybiAoVEhJTkdfVFlQRV9NQVRFUklBTCk7IH0KCiAgICBzdGF0aWMgTlJI
WV9idW5jaDxOUkhZX2NsYXNzTWF0ZXJpYWw+ICpGaW5kICgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENIQVIgICpuYW1lCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7CiAKCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZW5hbWUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q0hBUiAgKm5ld05hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAg
ICBOUkhZX2NsYXNzVGhpbmcgICAgICAgICAgICAgICAgICpDbG9uZSAoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDSEFSICAqbmV3TmFtZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAKCgogICAgY29uc3QgQ0hBUiAgICAg
ICAgICAgICAgICAgICAgICAqUHJpbnREZXJpdmVkQ2xhc3NPZlNlbGZUeXBlTmFtZSAoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApIHsgcmV0dXJuICgibWF0ZXJpYWwiKTsgfQogICAgSU5UICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZXREZXJpdmVkQ2xhc3NPZlNlbGZUeXBlICgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICkgeyByZXR1cm4gKFRISU5HX1RZUEVfTUFURVJJQUwpOyB9
CgogICAgIAogICAgc3RhdGljIFpPT0xFQU4gICAgICAgICAgICAgICAgICBDaGVja1Bvc3NpYmxl
QW1iaWVudCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUFMICAg
ICAgICAqbmV3QW1iaWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IElOVCAgIG51bWJlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
OwogICAgc3RhdGljIFpPT0xFQU4gICAgICAgICAgICAgICAgICBDaGVja1Bvc3NpYmxlRGlmZnVz
ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUFMICAgICAgICAq
bmV3RGlmZnVzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IElOVCAgIG51bWJlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAg
c3RhdGljIFpPT0xFQU4gICAgICAgICAgICAgICAgICBDaGVja1Bvc3NpYmxlU3BlY3VsYXIgKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCAgICAgICAgKm5ld1Nw
ZWN1bGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSU5U
ICAgbnVtYmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBzdGF0
aWMgWk9PTEVBTiAgICAgICAgICAgICAgICAgIENoZWNrUG9zc2libGVTcGVjdWxhckV4cG9uZW50
ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQUwgIG5l
d1NwZWN1bGFyRXhwb25lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
ICAgIHN0YXRpYyBaT09MRUFOICAgICAgICAgICAgICAgICAgQ2hlY2tQb3NzaWJsZU9wYWNpdHkg
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCAgICAgICAgKm5l
d09wYWNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJ
TlQgICBudW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHN0
YXRpYyBaT09MRUFOICAgICAgICAgICAgICAgICAgQ2hlY2tQb3NzaWJsZVJlZmxlY3RpdmUgKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCAgICAgICAgKm5ld1Jl
ZmxlY3RpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJ
TlQgICBudW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHN0
YXRpYyBaT09MRUFOICAgICAgICAgICAgICAgICAgQ2hlY2tQb3NzaWJsZUlsbHVtICgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElOVCAgICAgICBuZXdJbGx1
bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAKCiAgICBaT09M
RUFOICAgICAgICAgICAgICAgICAgICAgICAgIFNldEFtYmllbnQgKAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgICpuZXdBbWJpZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSU5UICAgICAgIG51bWJl
cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgWk9PTEVBTiAgICAg
ICAgICAgICAgICAgICAgICAgICBTZXRBbWJpZW50UmVkICgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQUwgICAgICBuZXdBbWJpZW50UmVkCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAg
ICAgICAgICAgIFNldEFtYmllbnRHcmVlbiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBSRUFMICAgICAgbmV3QW1iaWVudEdyZWVuCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAg
ICAgIFNldEFtYmllbnRCbHVlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFJFQUwgICAgICBuZXdBbWJpZW50Qmx1ZQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApOwogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBTZXRB
bWJpZW50SW50ZW5zICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJFQUwgICAgICBuZXdBbWJpZW50SW50ZW5zCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CgogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBTZXREaWZm
dXNlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQUwg
ICAgICAqbmV3RGlmZnVzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IElOVCAgICAgICBudW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0RGlmZnVzZVJlZCAo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRUFMICAgICAg
bmV3RGlmZnVzZVJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAg
Wk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBTZXREaWZmdXNlR3JlZW4gKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgIG5ld0RpZmZ1
c2VHcmVlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgWk9PTEVB
TiAgICAgICAgICAgICAgICAgICAgICAgICBTZXREaWZmdXNlQmx1ZSAoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRUFMICAgICAgbmV3RGlmZnVzZUJsdWUK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFpPT0xFQU4gICAgICAg
ICAgICAgICAgICAgICAgICAgU2V0RGlmZnVzZUludGVucyAoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSRUFMICAgICAgbmV3RGlmZnVzZUludGVucwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgIFpPT0xFQU4gICAgICAgICAg
ICAgICAgICAgICAgICAgU2V0U3BlY3VsYXIgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgICpuZXdTcGVjdWxhciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElOVCAgICAgICBudW1iZXIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAg
ICAgICAgICAgU2V0U3BlY3VsYXJSZWQgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUkVBTCAgICAgIG5ld1NwZWN1bGFyUmVkCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAg
IFNldFNwZWN1bGFyR3JlZW4gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUkVBTCAgICAgIG5ld1NwZWN1bGFyR3JlZW4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0
U3BlY3VsYXJCbHVlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJFQUwgICAgICBuZXdTcGVjdWxhckJsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0U3BlY3Vs
YXJJbnRlbnMgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UkVBTCAgICAgIG5ld1NwZWN1bGFySW50ZW5zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICk7CgogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBTZXRTcGVjdWxh
ckV4cG9uZW50ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJFQUwgICAgICBuZXdTcGVjdWxhckV4cG9uZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CgogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBTZXRPcGFj
aXR5ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQUwg
ICAgICAqbmV3T3BhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IElOVCAgICAgICBudW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0T3BhY2l0eU1pbiAo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRUFMICAgICAg
bmV3T3BhY2l0eU1pbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAg
Wk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBTZXRPcGFjaXR5TWF4ICgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQUwgICAgICBuZXdPcGFjaXR5
TWF4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAg
ICAgICAgICAgICAgICAgICAgICAgIFNldE9wYWNpdHlFeHAgKAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgIG5ld09wYWNpdHlFeHAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICBaT09MRUFOICAgICAgICAgICAg
ICAgICAgICAgICAgIFNldFJlZmxlY3RpdmUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUkVBTCAgICAgICpuZXdSZWZsZWN0aXZlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSU5UICAgICAgIG51bWJlcgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgWk9PTEVBTiAgICAgICAgICAgICAg
ICAgICAgICAgICBTZXRSZWZsZWN0aXZlUmVkICgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFJFQUwgICAgICBuZXdSZWZsZWN0aXZlUmVkCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAg
ICAgICAgIFNldFJlZmxlY3RpdmVHcmVlbiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBSRUFMICAgICAgbmV3UmVmbGVjdGl2ZUdyZWVuCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAg
ICAgICAgIFNldFJlZmxlY3RpdmVCbHVlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFJFQUwgICAgICBuZXdSZWZsZWN0aXZlQmx1ZQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApOwogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAg
ICAgICBTZXRSZWZsZWN0aXZlSW50ZW5zICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFJFQUwgICAgICBuZXdSZWZsZWN0aXZlSW50ZW5zCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAg
ICAgICAgICBTZXRJbGx1bSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJTlQgICAgICAgbmV3SWxsdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKTsKCiAgICAgCiAgICBSRUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICpHZXRB
bWJpZW50ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBSRUFMICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdldEFtYmllbnRSZWQgKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KTsKICAgIFJFQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0QW1iaWVudEdyZWVuICgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBSRUFMICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdldEFtYmllbnRCbHVlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBS
RUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldEFtYmllbnRJbnRlbnMgKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKCiAgICBSRUFMICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpHZXREaWZmdXNlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBSRUFMICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdldERpZmZ1c2VSZWQgKAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKTsKICAgIFJFQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0RGlmZnVzZUdy
ZWVuICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBSRUFMICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdldERpZmZ1c2VCbHVlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7
CiAgICBSRUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldERpZmZ1c2VJbnRlbnMgKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICBSRUFMICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpHZXRTcGVjdWxhciAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgUkVB
TCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRTcGVjdWxhclJlZCAoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApOwogICAgUkVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRT
cGVjdWxhckdyZWVuICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBSRUFMICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdldFNwZWN1bGFyQmx1ZSAoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwogICAgUkVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRTcGVjdWxh
ckludGVucyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgIFJFQUwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2V0U3BlY3VsYXJFeHBvbmVudCAoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwoKICAgIFJFQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkdldE9wYWNp
dHkgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFJFQUwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2V0T3BhY2l0eU1pbiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwog
ICAgUkVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRPcGFjaXR5TWF4ICgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgICBSRUFMICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdldE9wYWNpdHlFeHAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICBSRUFMICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpHZXRSZWZsZWN0aXZlICgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CiAgICBSRUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFJlZmxl
Y3RpdmVSZWQgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIFJFQUwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2V0UmVmbGVjdGl2ZUdyZWVuICgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICk7CiAgICBSRUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFJlZmxlY3Rp
dmVCbHVlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBSRUFMICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdldFJlZmxlY3RpdmVJbnRlbnMgKAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKTsKCiAgICBJTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldElsbHVtICgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBUd2luZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdldElsbHVtQXNjaWkgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAg
CgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmliZUNyZWF0ZSAoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVz
Y3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERlc2NyaWJlRnVsbFN0YXRlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVGdWxsU3RhdGVQYWNrZWQgKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rl
c2NyaWJlU3RyZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEZXNjcmliZVdyZW5GdWxsU3RhdGUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmliZURlbGV0ZSAoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3Jp
YmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERlc2NyaWJlTWF0ZXJpYWxPbiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGFzcyBOUkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOwoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RGVzY3JpYmVBbWJpZW50ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNj
cmliZURpZmZ1c2UgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xh
c3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVT
cGVjdWxhciAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBO
UkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOwoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVTcGVj
dWxhckV4cG9uZW50ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
YXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmli
ZU9wYWNpdHkgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Mg
TlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKTsKCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJlUmVm
bGVjdGl2ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBO
UkhZX0NsYXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOwoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVJbGx1
bSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0Ns
YXNzRGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
OwoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVUZXh0dXJlICgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIE5SSFlfQ2xhc3NE
ZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Cgog
ICAgdm9pZCAJCQkgICAgTGlzdE1hdGVyaWFsKEZJTEUgKmZwLCBjb25zdCBMaXN0PFR3aW5lPiAm
bHMpOwoKICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgU2V0VXNlTWFwICgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5SSFlfYnVuY2ggPE5SSFlfY2xh
c3NVc2VNYXA+ICAgKm5ld1VzZU1hcFB0cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOwogICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBTZXRVc2VNYXAgKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlJIWV9jbGFzc1VzZU1hcCAg
ICAqbmV3VXNlTWFwUHRyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAg
ICBOUkhZX2NsYXNzVXNlTWFwICAgICAgICAgICAgICAgICpHZXRVc2VNYXAoIHZvaWQgKSB7cmV0
dXJuIHVzZW1hcDt9CgogICAgdm9pZCAJCQkgICAgU2V0VXNlTWFwc0xpc3QgKAogICAgCQkJCQlO
UkhZX2J1bmNoIDxOUkhZX2NsYXNzVXNlTWFwPiAgKm5ld1VzZU1hcHMKCQkJCSAgICApOwoKICAg
IHZvaWQgCQkJICAgIFJlbW92ZVVzZU1hcHNMaXN0ICgKICAgIAkJCQkJTlJIWV9idW5jaCA8TlJI
WV9jbGFzc1VzZU1hcD4gICpuZXdVc2VNYXBzCgkJCQkgICAgKTsKCiAgICB2b2lkIAkJCSAgICBF
cmFzZVVzZU1hcHNMaXN0ICgKICAgIAkJCQkJdm9pZAoJCQkJICAgICk7CgogICAgdm9pZAkJCSAg
ICBTZXRBY3RpdmVVc2VtYXBOYW1lIChUd2luZSBuYW1lKXsKCQkJCQlfYWN0aXZlVXNlbWFwID0g
bmFtZTsKCQkJCQlTZXRBY3RpdmVVc2VtYXAoKTsKCQkJCSAgICB9OwoKICAgIHZvaWQJCQkgICAg
U2V0QWN0aXZlVXNlbWFwKHZvaWQpOwoKICAgIFR3aW5lCQkJICAgIEdldEFjdGl2ZVVzZW1hcE5h
bWUgKHZvaWQpewoJCQkJCXJldHVybiBfYWN0aXZlVXNlbWFwOwoJCQkJICAgIH07CgogICAgTlJI
WV9jbGFzc1VzZU1hcCAgICAgICAgICAgICAgICAqdXNlbWFwOwogICAgTGlzdDxOUkhZX2NsYXNz
VXNlTWFwICAqPiAgICAgICBfdXNlbWFwc0xpc3Q7CgogICAgVHdpbmUgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXBUd2luZTsKICAgIFR3aW5lICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWFwdHlwZVR3aW5lOwogICAgVHdpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICB1dnRhZ1R3
aW5lOwoKICAgIHZvaWQgQ3JlYXRlT2JzZXJ2ZXIgKGludCB0eXBlKSB7IGRvQ3JlYXRlT2JzZXJ2
ZXIgKHRoaXMsIHR5cGUpOyB9Owp9OwoKIAoKIAoKIyAzNSAibnJoeS9OUkhZX0FjY2Vzcy5jIiAy
CgojIDEgImgvbnJoeV9jbGFzc01vZGVsLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKIAoKCiAKCgoKCgogCgoKCiAKY2xhc3MgTlJIWV9jbGFzc1RyYWNrU2hhcGU7CgoKIAoKCgoK
CgogCgoKCiAKCiAKIAogCgogCnRlbXBsYXRlIDxjbGFzcyBUeXBlPiBjbGFzcyBOUkhZX21hdGNo
Owp0ZW1wbGF0ZSA8Y2xhc3MgVHlwZT4gY2xhc3MgTlJIWV9hbHBoYWxpc3Q7CgogCgpzdHJ1Y3Qg
TlJIWV9jbGFzc01vZGVsOgogICAgcHVibGljIE5SSFlfY2xhc3NPYmplY3QsCiAgICBwdWJsaWMg
T2JzZXJ2ZXJGYWN0b3J5IDxOUkhZX2NsYXNzTW9kZWw+CnsKcHJpdmF0ZToKICAgIHR5cGVkZWYg
TlJIWV9jbGFzc09iamVjdCBpbmhlcml0ZWQ7CiAgICB0eXBlZGVmIE5SSFlfYWxwaGFsaXN0PE5S
SFlfY2xhc3NNb2RlbD4gYWxwaGFsaXN0OwogICAgZnJpZW5kIE5SSFlfbWF0Y2ggPE5SSFlfY2xh
c3NNb2RlbD47CiAgICBmcmllbmQgTlJIWV9hbHBoYWxpc3Q8TlJIWV9jbGFzc01vZGVsPjsKCnBy
aXZhdGU6CgogCgoKCgogICAgIAogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBk
b05vdExpZ2h0OwogCgogICAgIAoKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAg
Ym91bmRpbmc7Cgpwcm90ZWN0ZWQ6CiAgICBOUkhZX2NsYXNzVHJhY2tTaGFwZSAgICAgICAgICAg
ICp0cmFja1NoYXBlSW5mbzsgICAgCgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5pdGlhbGl6ZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKcHVibGljOgogICAg
IAogICAgTlJIWV9jbGFzc01vZGVsICgKICAgICAgICBjb25zdCBDSEFSICAqbmFtZQogICAgICAg
ICk7CiAgICBOUkhZX2NsYXNzTW9kZWwgKAogICAgICAgIGNvbnN0IENIQVIgICAgICAqbmFtZSwK
ICAgICAgICBOUkhZX2NsYXNzTW9kZWwgKmNsb25lRnJvbQogICAgICAgICk7CgogICAgTlJIWV9j
bGFzc01vZGVsICgKICAgICAgICB2b2lkIAogICAgICAgICk7CgogICAgfk5SSFlfY2xhc3NNb2Rl
bCAoCiAgICAgICAgdm9pZCAKICAgICAgICApOwoKICAgICAKICAgIHN0YXRpYyBjb25zdCBDSEFS
ICAgICAgICAgICAgICAgKlByaW50U2VsZkNsYXNzbmFtZSAoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApIHsgcmV0dXJuICgiTlJIWV9jbGFzc01vZGVsIik7IH0KCiAgICAgCgogICAgc3RhdGlj
IElOVCAgICAgICAgICAgICAgICAgICAgICBHZXRTZWxmQ2xhc3NUeXBlICgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICkgeyByZXR1cm4gKFRISU5HX1RZUEVfTU9ERUwpOyB9CgogICAgc3RhdGlj
IE5SSFlfYnVuY2g8TlJIWV9jbGFzc01vZGVsPiAqRmluZCAoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDSEFSICAqbmFtZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApOwoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlbmFtZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
SEFSICAqbmV3TmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAg
IE5SSFlfY2xhc3NUaGluZyAgICAgICAgICAgICAgICAgKkNsb25lICgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENIQVIgICpuZXdOYW1lCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgIAoKICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRGVzY3JpYmVDcmVhdGUgKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmliZUZ1bGxTdGF0ZSAo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNz
RGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERlc2NyaWJlRnVsbFN0YXRlUGFja2VkICgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsYXNzIE5SSFlfQ2xhc3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVEZWxldGUgKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rl
c2NyaWJlU3RyZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAK
CgoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVEb05vdExpZ2h0
ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIE5SSFlfQ2xh
c3NEZXNjcmliZVN0cmVhbSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7
CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJlU29saWQgKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2Ny
aWJlU3RyZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVQcmltYXJ5Q29uc3RyYWludCAo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBOUkhZX0NsYXNz
RGVzY3JpYmVTdHJlYW0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwog
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmliZVNlY29uZGFyeUNvbnN0
cmFpbnQgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgTlJI
WV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVDb25zdHJh
aW50R2VvbWV0cnkgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xh
c3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJl
VHJhY2tTaGFwZUluZm8gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2Ny
aWJlVHJhY2tTaGFwZUluZm9QYWNrZWQgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xhc3MgTlJIWV9DbGFzc0Rlc2NyaWJlU3RyZWFtICYKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERlc2NyaWJlRXh0cmFDaGFubmVsTW9kZSgKCQkJCQljbGFzcyBOUkhZX0NsYXNzRGVzY3Jp
YmVTdHJlYW0gJgoJCQkJICAgICk7CgogCgogICAgY29uc3QgQ0hBUiAgICAgICAgICAgICAgICAg
ICAgICAqUHJpbnREZXJpdmVkQ2xhc3NPZlNlbGZUeXBlTmFtZSAoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApIHsgcmV0dXJuICgibW9kZWwiKTsgfQogICAgSU5UICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZXREZXJpdmVkQ2xhc3NPZlNlbGZUeXBlICgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkgeyByZXR1cm4gKFRISU5HX1RZUEVfTU9ERUwpOyB9CgogCgoKCiAgICBaT09MRUFO
ICAgICAgICAgICAgICAgICAgICAgICAgIFNldERvTm90TGlnaHQgKAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWk9PTEVBTiAgICAgbmV3U3RhdHVzCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAg
ICAgICAgIEdldERvTm90TGlnaHQgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7IHJldHVy
biAoZG9Ob3RMaWdodCk7IH0KIAoKICAgIFpPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAg
U2V0U29saWQgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UkVBTCAgICAgIG5ld1NvbGlkVmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKICAgIFJFQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0U29saWQgKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICBaT09MRUFOICAgICAgICAgICAgICAgICAgICAg
ICAgIFNldEJvdW5kaW5nICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFpPT0xFQU4gICBuZXdCb3VuZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwogICAgWk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBHZXRCb3VuZGlu
ZyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKCiAKCgoKCiAgICB2b2lkIENyZWF0ZU9i
c2VydmVyIChpbnQgdHlwZSkgewoJT2JzZXJ2ZXJGYWN0b3J5PE5SSFlfY2xhc3NNb2RlbD46OmRv
Q3JlYXRlT2JzZXJ2ZXIgKHRoaXMsIHR5cGUpOyB9OwoKIAoKICAgIEJPT0xFQU4gICAgICAgICAg
ICAgICAgICAgICAgICAgIENyZWF0ZVRyYWNrU2hhcGVJbmZvICgpOwoKICAgIEJPT0xFQU4gICAg
ICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVRyYWNrU2hhcGVJbmZvICgpOwoKICAgIE5SSFlf
Y2xhc3NUcmFja1NoYXBlICAgICAgICAgICAgICpHZXRUcmFja1NoYXBlSW5mbyAoKTsKfTsKCiAK
CiAKCgoKIyAzNiAibnJoeS9OUkhZX0FjY2Vzcy5jIiAyCgojIDEgImgvbnJoeV9jbGFzc1VzZU1h
cC5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKDAoKIAoKCgojIDEgIi91c3IvaW5jbHVkZS9HTC9nbC5o
IiAxIDMKIAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgojIDEzNyAiL3Vzci9pbmNsdWRlL0dML2dsLmgiIDMKCgoKCgoKCgpleHRlcm4g
IkMiIHsKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgp0eXBlZGVmIGVudW0gewoJIAoJ
R0xfRkFMU0UJCQk9IDAsCglHTF9UUlVFCQkJCT0gMSwKCgkgCglHTF9CWVRFCQkJCT0gMHgxNDAw
LAoJR0xfVU5TSUdORURfQllURQkJPSAweDE0MDEsCglHTF9TSE9SVAkJCT0gMHgxNDAyLAoJR0xf
VU5TSUdORURfU0hPUlQJCT0gMHgxNDAzLAoJR0xfSU5UCQkJCT0gMHgxNDA0LAoJR0xfVU5TSUdO
RURfSU5UCQkJPSAweDE0MDUsCglHTF9GTE9BVAkJCT0gMHgxNDA2LAoJR0xfRE9VQkxFCQkJPSAw
eDE0MEEsCglHTF8yX0JZVEVTCQkJPSAweDE0MDcsCglHTF8zX0JZVEVTCQkJPSAweDE0MDgsCglH
TF80X0JZVEVTCQkJPSAweDE0MDksCgoJIAoJR0xfTElORVMJCQk9IDB4MDAwMSwKCUdMX1BPSU5U
UwkJCT0gMHgwMDAwLAoJR0xfTElORV9TVFJJUAkJCT0gMHgwMDAzLAoJR0xfTElORV9MT09QCQkJ
PSAweDAwMDIsCglHTF9UUklBTkdMRVMJCQk9IDB4MDAwNCwKCUdMX1RSSUFOR0xFX1NUUklQCQk9
IDB4MDAwNSwKCUdMX1RSSUFOR0xFX0ZBTgkJCT0gMHgwMDA2LAoJR0xfUVVBRFMJCQk9IDB4MDAw
NywKCUdMX1FVQURfU1RSSVAJCQk9IDB4MDAwOCwKCUdMX1BPTFlHT04JCQk9IDB4MDAwOSwKCUdM
X0VER0VfRkxBRwkJCT0gMHgwQjQzLAoKCSAKCUdMX1ZFUlRFWF9BUlJBWQkJCT0gMHg4MDc0LAoJ
R0xfTk9STUFMX0FSUkFZCQkJPSAweDgwNzUsCglHTF9DT0xPUl9BUlJBWQkJCT0gMHg4MDc2LAoJ
R0xfSU5ERVhfQVJSQVkJCQk9IDB4ODA3NywKCUdMX1RFWFRVUkVfQ09PUkRfQVJSQVkJCT0gMHg4
MDc4LAoJR0xfRURHRV9GTEFHX0FSUkFZCQk9IDB4ODA3OSwKCUdMX1ZFUlRFWF9BUlJBWV9TSVpF
CQk9IDB4ODA3QSwKCUdMX1ZFUlRFWF9BUlJBWV9UWVBFCQk9IDB4ODA3QiwKCUdMX1ZFUlRFWF9B
UlJBWV9TVFJJREUJCT0gMHg4MDdDLAoJR0xfTk9STUFMX0FSUkFZX1RZUEUJCT0gMHg4MDdFLAoJ
R0xfTk9STUFMX0FSUkFZX1NUUklERQkJPSAweDgwN0YsCglHTF9DT0xPUl9BUlJBWV9TSVpFCQk9
IDB4ODA4MSwKCUdMX0NPTE9SX0FSUkFZX1RZUEUJCT0gMHg4MDgyLAoJR0xfQ09MT1JfQVJSQVlf
U1RSSURFCQk9IDB4ODA4MywKCUdMX0lOREVYX0FSUkFZX1RZUEUJCT0gMHg4MDg1LAoJR0xfSU5E
RVhfQVJSQVlfU1RSSURFCQk9IDB4ODA4NiwKCUdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfU0laRQk9
IDB4ODA4OCwKCUdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfVFlQRQk9IDB4ODA4OSwKCUdMX1RFWFRV
UkVfQ09PUkRfQVJSQVlfU1RSSURFCT0gMHg4MDhBLAoJR0xfRURHRV9GTEFHX0FSUkFZX1NUUklE
RQk9IDB4ODA4QywKCUdMX1ZFUlRFWF9BUlJBWV9QT0lOVEVSCQk9IDB4ODA4RSwKCUdMX05PUk1B
TF9BUlJBWV9QT0lOVEVSCQk9IDB4ODA4RiwKCUdMX0NPTE9SX0FSUkFZX1BPSU5URVIJCT0gMHg4
MDkwLAoJR0xfSU5ERVhfQVJSQVlfUE9JTlRFUgkJPSAweDgwOTEsCglHTF9URVhUVVJFX0NPT1JE
X0FSUkFZX1BPSU5URVIJPSAweDgwOTIsCglHTF9FREdFX0ZMQUdfQVJSQVlfUE9JTlRFUgk9IDB4
ODA5MywKICAgICAgICBHTF9WMkYJCQkJPSAweDJBMjAsCglHTF9WM0YJCQkJPSAweDJBMjEsCglH
TF9DNFVCX1YyRgkJCT0gMHgyQTIyLAoJR0xfQzRVQl9WM0YJCQk9IDB4MkEyMywKCUdMX0MzRl9W
M0YJCQk9IDB4MkEyNCwKCUdMX04zRl9WM0YJCQk9IDB4MkEyNSwKCUdMX0M0Rl9OM0ZfVjNGCQkJ
PSAweDJBMjYsCglHTF9UMkZfVjNGCQkJPSAweDJBMjcsCglHTF9UNEZfVjRGCQkJPSAweDJBMjgs
CglHTF9UMkZfQzRVQl9WM0YJCQk9IDB4MkEyOSwKCUdMX1QyRl9DM0ZfVjNGCQkJPSAweDJBMkEs
CglHTF9UMkZfTjNGX1YzRgkJCT0gMHgyQTJCLAoJR0xfVDJGX0M0Rl9OM0ZfVjNGCQk9IDB4MkEy
QywKCUdMX1Q0Rl9DNEZfTjNGX1Y0RgkJPSAweDJBMkQsCgoJIAoJR0xfTUFUUklYX01PREUJCQk9
IDB4MEJBMCwKCUdMX01PREVMVklFVwkJCT0gMHgxNzAwLAoJR0xfUFJPSkVDVElPTgkJCT0gMHgx
NzAxLAoJR0xfVEVYVFVSRQkJCT0gMHgxNzAyLAoKCSAKCUdMX1BPSU5UX1NNT09USAkJCT0gMHgw
QjEwLAoJR0xfUE9JTlRfU0laRQkJCT0gMHgwQjExLAoJR0xfUE9JTlRfU0laRV9HUkFOVUxBUklU
WSAJPSAweDBCMTMsCglHTF9QT0lOVF9TSVpFX1JBTkdFCQk9IDB4MEIxMiwKCgkgCglHTF9MSU5F
X1NNT09USAkJCT0gMHgwQjIwLAoJR0xfTElORV9TVElQUExFCQkJPSAweDBCMjQsCglHTF9MSU5F
X1NUSVBQTEVfUEFUVEVSTgkJPSAweDBCMjUsCglHTF9MSU5FX1NUSVBQTEVfUkVQRUFUCQk9IDB4
MEIyNiwKCUdMX0xJTkVfV0lEVEgJCQk9IDB4MEIyMSwKCUdMX0xJTkVfV0lEVEhfR1JBTlVMQVJJ
VFkJPSAweDBCMjMsCglHTF9MSU5FX1dJRFRIX1JBTkdFCQk9IDB4MEIyMiwKCgkgCglHTF9QT0lO
VAkJCT0gMHgxQjAwLAoJR0xfTElORQkJCQk9IDB4MUIwMSwKCUdMX0ZJTEwJCQkJPSAweDFCMDIs
CglHTF9DQ1cJCQkJPSAweDA5MDEsCglHTF9DVwkJCQk9IDB4MDkwMCwKCUdMX0ZST05UCQkJPSAw
eDA0MDQsCglHTF9CQUNLCQkJCT0gMHgwNDA1LAoJR0xfQ1VMTF9GQUNFCQkJPSAweDBCNDQsCglH
TF9DVUxMX0ZBQ0VfTU9ERQkJPSAweDBCNDUsCglHTF9QT0xZR09OX1NNT09USAkJPSAweDBCNDEs
CglHTF9QT0xZR09OX1NUSVBQTEUJCT0gMHgwQjQyLAoJR0xfRlJPTlRfRkFDRQkJCT0gMHgwQjQ2
LAoJR0xfUE9MWUdPTl9NT0RFCQkJPSAweDBCNDAsCglHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IJ
PSAweDgwMzgsCglHTF9QT0xZR09OX09GRlNFVF9VTklUUwkJPSAweDJBMDAsCglHTF9QT0xZR09O
X09GRlNFVF9QT0lOVAkJPSAweDJBMDEsCglHTF9QT0xZR09OX09GRlNFVF9MSU5FCQk9IDB4MkEw
MiwKCUdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwJCT0gMHg4MDM3LAoKCSAKCUdMX0NPTVBJTEUJCQk9
IDB4MTMwMCwKCUdMX0NPTVBJTEVfQU5EX0VYRUNVVEUJCT0gMHgxMzAxLAoJR0xfTElTVF9CQVNF
CQkJPSAweDBCMzIsCglHTF9MSVNUX0lOREVYCQkJPSAweDBCMzMsCglHTF9MSVNUX01PREUJCQk9
IDB4MEIzMCwKCgkgCglHTF9ORVZFUgkJCT0gMHgwMjAwLAoJR0xfTEVTUwkJCQk9IDB4MDIwMSwK
CUdMX0dFUVVBTAkJCT0gMHgwMjA2LAoJR0xfTEVRVUFMCQkJPSAweDAyMDMsCglHTF9HUkVBVEVS
CQkJPSAweDAyMDQsCglHTF9OT1RFUVVBTAkJCT0gMHgwMjA1LAoJR0xfRVFVQUwJCQk9IDB4MDIw
MiwKCUdMX0FMV0FZUwkJCT0gMHgwMjA3LAoJR0xfREVQVEhfVEVTVAkJCT0gMHgwQjcxLAoJR0xf
REVQVEhfQklUUwkJCT0gMHgwRDU2LAoJR0xfREVQVEhfQ0xFQVJfVkFMVUUJCT0gMHgwQjczLAoJ
R0xfREVQVEhfRlVOQwkJCT0gMHgwQjc0LAoJR0xfREVQVEhfUkFOR0UJCQk9IDB4MEI3MCwKCUdM
X0RFUFRIX1dSSVRFTUFTSwkJPSAweDBCNzIsCglHTF9ERVBUSF9DT01QT05FTlQJCT0gMHgxOTAy
LAoKCSAKCUdMX0xJR0hUSU5HCQkJPSAweDBCNTAsCglHTF9MSUdIVDAJCQk9IDB4NDAwMCwKCUdM
X0xJR0hUMQkJCT0gMHg0MDAxLAoJR0xfTElHSFQyCQkJPSAweDQwMDIsCglHTF9MSUdIVDMJCQk9
IDB4NDAwMywKCUdMX0xJR0hUNAkJCT0gMHg0MDA0LAoJR0xfTElHSFQ1CQkJPSAweDQwMDUsCglH
TF9MSUdIVDYJCQk9IDB4NDAwNiwKCUdMX0xJR0hUNwkJCT0gMHg0MDA3LAoJR0xfU1BPVF9FWFBP
TkVOVAkJPSAweDEyMDUsCglHTF9TUE9UX0NVVE9GRgkJCT0gMHgxMjA2LAoJR0xfQ09OU1RBTlRf
QVRURU5VQVRJT04JCT0gMHgxMjA3LAoJR0xfTElORUFSX0FUVEVOVUFUSU9OCQk9IDB4MTIwOCwK
CUdMX1FVQURSQVRJQ19BVFRFTlVBVElPTgk9IDB4MTIwOSwKCUdMX0FNQklFTlQJCQk9IDB4MTIw
MCwKCUdMX0RJRkZVU0UJCQk9IDB4MTIwMSwKCUdMX1NQRUNVTEFSCQkJPSAweDEyMDIsCglHTF9T
SElOSU5FU1MJCQk9IDB4MTYwMSwKCUdMX0VNSVNTSU9OCQkJPSAweDE2MDAsCglHTF9QT1NJVElP
TgkJCT0gMHgxMjAzLAoJR0xfU1BPVF9ESVJFQ1RJT04JCT0gMHgxMjA0LAoJR0xfQU1CSUVOVF9B
TkRfRElGRlVTRQkJPSAweDE2MDIsCglHTF9DT0xPUl9JTkRFWEVTCQk9IDB4MTYwMywKCUdMX0xJ
R0hUX01PREVMX1RXT19TSURFCQk9IDB4MEI1MiwKCUdMX0xJR0hUX01PREVMX0xPQ0FMX1ZJRVdF
Ugk9IDB4MEI1MSwKCUdMX0xJR0hUX01PREVMX0FNQklFTlQJCT0gMHgwQjUzLAoJR0xfRlJPTlRf
QU5EX0JBQ0sJCT0gMHgwNDA4LAoJR0xfU0hBREVfTU9ERUwJCQk9IDB4MEI1NCwKCUdMX0ZMQVQJ
CQkJPSAweDFEMDAsCglHTF9TTU9PVEgJCQk9IDB4MUQwMSwKCUdMX0NPTE9SX01BVEVSSUFMCQk9
IDB4MEI1NywKCUdMX0NPTE9SX01BVEVSSUFMX0ZBQ0UJCT0gMHgwQjU1LAoJR0xfQ09MT1JfTUFU
RVJJQUxfUEFSQU1FVEVSCT0gMHgwQjU2LAoJR0xfTk9STUFMSVpFCQkJPSAweDBCQTEsCgoJIAoJ
R0xfQ0xJUF9QTEFORTAJCQk9IDB4MzAwMCwKCUdMX0NMSVBfUExBTkUxCQkJPSAweDMwMDEsCglH
TF9DTElQX1BMQU5FMgkJCT0gMHgzMDAyLAoJR0xfQ0xJUF9QTEFORTMJCQk9IDB4MzAwMywKCUdM
X0NMSVBfUExBTkU0CQkJPSAweDMwMDQsCglHTF9DTElQX1BMQU5FNQkJCT0gMHgzMDA1LAoKCSAK
CUdMX0FDQ1VNX1JFRF9CSVRTCQk9IDB4MEQ1OCwKCUdMX0FDQ1VNX0dSRUVOX0JJVFMJCT0gMHgw
RDU5LAoJR0xfQUNDVU1fQkxVRV9CSVRTCQk9IDB4MEQ1QSwKCUdMX0FDQ1VNX0FMUEhBX0JJVFMJ
CT0gMHgwRDVCLAoJR0xfQUNDVU1fQ0xFQVJfVkFMVUUJCT0gMHgwQjgwLAoJR0xfQUNDVU0JCQk9
IDB4MDEwMCwKCUdMX0FERAkJCQk9IDB4MDEwNCwKCUdMX0xPQUQJCQkJPSAweDAxMDEsCglHTF9N
VUxUCQkJCT0gMHgwMTAzLAoJR0xfUkVUVVJOCQkJPSAweDAxMDIsCgoJIAoJR0xfQUxQSEFfVEVT
VAkJCT0gMHgwQkMwLAoJR0xfQUxQSEFfVEVTVF9SRUYJCT0gMHgwQkMyLAoJR0xfQUxQSEFfVEVT
VF9GVU5DCQk9IDB4MEJDMSwKCgkgCglHTF9CTEVORAkJCT0gMHgwQkUyLAoJR0xfQkxFTkRfU1JD
CQkJPSAweDBCRTEsCglHTF9CTEVORF9EU1QJCQk9IDB4MEJFMCwKCUdMX1pFUk8JCQkJPSAwLAoJ
R0xfT05FCQkJCT0gMSwKCUdMX1NSQ19DT0xPUgkJCT0gMHgwMzAwLAoJR0xfT05FX01JTlVTX1NS
Q19DT0xPUgkJPSAweDAzMDEsCglHTF9EU1RfQ09MT1IJCQk9IDB4MDMwNiwKCUdMX09ORV9NSU5V
U19EU1RfQ09MT1IJCT0gMHgwMzA3LAoJR0xfU1JDX0FMUEhBCQkJPSAweDAzMDIsCglHTF9PTkVf
TUlOVVNfU1JDX0FMUEhBCQk9IDB4MDMwMywKCUdMX0RTVF9BTFBIQQkJCT0gMHgwMzA0LAoJR0xf
T05FX01JTlVTX0RTVF9BTFBIQQkJPSAweDAzMDUsCglHTF9TUkNfQUxQSEFfU0FUVVJBVEUJCT0g
MHgwMzA4LAoJR0xfQ09OU1RBTlRfQ09MT1IJCT0gMHg4MDAxLAoJR0xfT05FX01JTlVTX0NPTlNU
QU5UX0NPTE9SCT0gMHg4MDAyLAoJR0xfQ09OU1RBTlRfQUxQSEEJCT0gMHg4MDAzLAoJR0xfT05F
X01JTlVTX0NPTlNUQU5UX0FMUEhBCT0gMHg4MDA0LAoKCSAKCUdMX0ZFRURCQUNLCQkJPSAweDFD
MDEsCglHTF9SRU5ERVIJCQk9IDB4MUMwMCwKCUdMX1NFTEVDVAkJCT0gMHgxQzAyLAoKCSAKCUdM
XzJECQkJCT0gMHgwNjAwLAoJR0xfM0QJCQkJPSAweDA2MDEsCglHTF8zRF9DT0xPUgkJCT0gMHgw
NjAyLAoJR0xfM0RfQ09MT1JfVEVYVFVSRQkJPSAweDA2MDMsCglHTF80RF9DT0xPUl9URVhUVVJF
CQk9IDB4MDYwNCwKCUdMX1BPSU5UX1RPS0VOCQkJPSAweDA3MDEsCglHTF9MSU5FX1RPS0VOCQkJ
PSAweDA3MDIsCglHTF9MSU5FX1JFU0VUX1RPS0VOCQk9IDB4MDcwNywKCUdMX1BPTFlHT05fVE9L
RU4JCT0gMHgwNzAzLAoJR0xfQklUTUFQX1RPS0VOCQkJPSAweDA3MDQsCglHTF9EUkFXX1BJWEVM
X1RPS0VOCQk9IDB4MDcwNSwKCUdMX0NPUFlfUElYRUxfVE9LRU4JCT0gMHgwNzA2LAoJR0xfUEFT
U19USFJPVUdIX1RPS0VOCQk9IDB4MDcwMCwKCUdMX0ZFRURCQUNLX0JVRkZFUl9QT0lOVEVSCT0g
MHgwREYwLAoJR0xfRkVFREJBQ0tfQlVGRkVSX1NJWkUJCT0gMHgwREYxLAoJR0xfRkVFREJBQ0tf
QlVGRkVSX1RZUEUJCT0gMHgwREYyLAoKCgkgCglHTF9GT0cJCQkJPSAweDBCNjAsCglHTF9GT0df
TU9ERQkJCT0gMHgwQjY1LAoJR0xfRk9HX0RFTlNJVFkJCQk9IDB4MEI2MiwKCUdMX0ZPR19DT0xP
UgkJCT0gMHgwQjY2LAoJR0xfRk9HX0lOREVYCQkJPSAweDBCNjEsCglHTF9GT0dfU1RBUlQJCQk9
IDB4MEI2MywKCUdMX0ZPR19FTkQJCQk9IDB4MEI2NCwKCUdMX0xJTkVBUgkJCT0gMHgyNjAxLAoJ
R0xfRVhQCQkJCT0gMHgwODAwLAoJR0xfRVhQMgkJCQk9IDB4MDgwMSwKCgkgCglHTF9MT0dJQ19P
UAkJCT0gMHgwQkYxLAoJR0xfSU5ERVhfTE9HSUNfT1AJCT0gMHgwQkYxLAoJR0xfQ09MT1JfTE9H
SUNfT1AJCT0gMHgwQkYyLAoJR0xfTE9HSUNfT1BfTU9ERQkJPSAweDBCRjAsCglHTF9DTEVBUgkJ
CT0gMHgxNTAwLAoJR0xfU0VUCQkJCT0gMHgxNTBGLAoJR0xfQ09QWQkJCQk9IDB4MTUwMywKCUdM
X0NPUFlfSU5WRVJURUQJCT0gMHgxNTBDLAoJR0xfTk9PUAkJCQk9IDB4MTUwNSwKCUdMX0lOVkVS
VAkJCT0gMHgxNTBBLAoJR0xfQU5ECQkJCT0gMHgxNTAxLAoJR0xfTkFORAkJCQk9IDB4MTUwRSwK
CUdMX09SCQkJCT0gMHgxNTA3LAoJR0xfTk9SCQkJCT0gMHgxNTA4LAoJR0xfWE9SCQkJCT0gMHgx
NTA2LAoJR0xfRVFVSVYJCQk9IDB4MTUwOSwKCUdMX0FORF9SRVZFUlNFCQkJPSAweDE1MDIsCglH
TF9BTkRfSU5WRVJURUQJCQk9IDB4MTUwNCwKCUdMX09SX1JFVkVSU0UJCQk9IDB4MTUwQiwKCUdM
X09SX0lOVkVSVEVECQkJPSAweDE1MEQsCgoJIAoJR0xfU1RFTkNJTF9URVNUCQkJPSAweDBCOTAs
CglHTF9TVEVOQ0lMX1dSSVRFTUFTSwkJPSAweDBCOTgsCglHTF9TVEVOQ0lMX0JJVFMJCQk9IDB4
MEQ1NywKCUdMX1NURU5DSUxfRlVOQwkJCT0gMHgwQjkyLAoJR0xfU1RFTkNJTF9WQUxVRV9NQVNL
CQk9IDB4MEI5MywKCUdMX1NURU5DSUxfUkVGCQkJPSAweDBCOTcsCglHTF9TVEVOQ0lMX0ZBSUwJ
CQk9IDB4MEI5NCwKCUdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTCT0gMHgwQjk2LAoJR0xfU1RF
TkNJTF9QQVNTX0RFUFRIX0ZBSUwJPSAweDBCOTUsCglHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFCQk9
IDB4MEI5MSwKCUdMX1NURU5DSUxfSU5ERVgJCT0gMHgxOTAxLAoJR0xfS0VFUAkJCQk9IDB4MUUw
MCwKCUdMX1JFUExBQ0UJCQk9IDB4MUUwMSwKCUdMX0lOQ1IJCQkJPSAweDFFMDIsCglHTF9ERUNS
CQkJCT0gMHgxRTAzLAoKCSAKCUdMX05PTkUJCQkJPSAwLAoJR0xfTEVGVAkJCQk9IDB4MDQwNiwK
CUdMX1JJR0hUCQkJPSAweDA0MDcsCgkgCgkgCgkgCglHTF9GUk9OVF9MRUZUCQkJPSAweDA0MDAs
CglHTF9GUk9OVF9SSUdIVAkJCT0gMHgwNDAxLAoJR0xfQkFDS19MRUZUCQkJPSAweDA0MDIsCglH
TF9CQUNLX1JJR0hUCQkJPSAweDA0MDMsCglHTF9BVVgwCQkJCT0gMHgwNDA5LAoJR0xfQVVYMQkJ
CQk9IDB4MDQwQSwKCUdMX0FVWDIJCQkJPSAweDA0MEIsCglHTF9BVVgzCQkJCT0gMHgwNDBDLAoJ
R0xfQ09MT1JfSU5ERVgJCQk9IDB4MTkwMCwKCUdMX1JFRAkJCQk9IDB4MTkwMywKCUdMX0dSRUVO
CQkJPSAweDE5MDQsCglHTF9CTFVFCQkJCT0gMHgxOTA1LAoJR0xfQUxQSEEJCQk9IDB4MTkwNiwK
CUdMX0xVTUlOQU5DRQkJCT0gMHgxOTA5LAoJR0xfTFVNSU5BTkNFX0FMUEhBCQk9IDB4MTkwQSwK
CUdMX0FMUEhBX0JJVFMJCQk9IDB4MEQ1NSwKCUdMX1JFRF9CSVRTCQkJPSAweDBENTIsCglHTF9H
UkVFTl9CSVRTCQkJPSAweDBENTMsCglHTF9CTFVFX0JJVFMJCQk9IDB4MEQ1NCwKCUdMX0lOREVY
X0JJVFMJCQk9IDB4MEQ1MSwKCUdMX1NVQlBJWEVMX0JJVFMJCT0gMHgwRDUwLAoJR0xfQVVYX0JV
RkZFUlMJCQk9IDB4MEMwMCwKCUdMX1JFQURfQlVGRkVSCQkJPSAweDBDMDIsCglHTF9EUkFXX0JV
RkZFUgkJCT0gMHgwQzAxLAoJR0xfRE9VQkxFQlVGRkVSCQkJPSAweDBDMzIsCglHTF9TVEVSRU8J
CQk9IDB4MEMzMywKCUdMX0JJVE1BUAkJCT0gMHgxQTAwLAoJR0xfQ09MT1IJCQk9IDB4MTgwMCwK
CUdMX0RFUFRICQkJPSAweDE4MDEsCglHTF9TVEVOQ0lMCQkJPSAweDE4MDIsCglHTF9ESVRIRVIJ
CQk9IDB4MEJEMCwKCUdMX1JHQgkJCQk9IDB4MTkwNywKCUdMX1JHQkEJCQkJPSAweDE5MDgsCgoJ
IAoJR0xfTUFYX0xJU1RfTkVTVElORwkJPSAweDBCMzEsCglHTF9NQVhfQVRUUklCX1NUQUNLX0RF
UFRICT0gMHgwRDM1LAoJR0xfTUFYX01PREVMVklFV19TVEFDS19ERVBUSAk9IDB4MEQzNiwKCUdM
X01BWF9OQU1FX1NUQUNLX0RFUFRICQk9IDB4MEQzNywKCUdMX01BWF9QUk9KRUNUSU9OX1NUQUNL
X0RFUFRICT0gMHgwRDM4LAoJR0xfTUFYX1RFWFRVUkVfU1RBQ0tfREVQVEgJPSAweDBEMzksCglH
TF9NQVhfRVZBTF9PUkRFUgkJPSAweDBEMzAsCglHTF9NQVhfTElHSFRTCQkJPSAweDBEMzEsCglH
TF9NQVhfQ0xJUF9QTEFORVMJCT0gMHgwRDMyLAoJR0xfTUFYX1RFWFRVUkVfU0laRQkJPSAweDBE
MzMsCglHTF9NQVhfUElYRUxfTUFQX1RBQkxFCQk9IDB4MEQzNCwKCUdMX01BWF9WSUVXUE9SVF9E
SU1TCQk9IDB4MEQzQSwKCUdMX01BWF9DTElFTlRfQVRUUklCX1NUQUNLX0RFUFRIPSAweDBEM0Is
CgoJIAoJR0xfQVRUUklCX1NUQUNLX0RFUFRICQk9IDB4MEJCMCwKCUdMX0NMSUVOVF9BVFRSSUJf
U1RBQ0tfREVQVEgJPSAweDBCQjEsCglHTF9DT0xPUl9DTEVBUl9WQUxVRQkJPSAweDBDMjIsCglH
TF9DT0xPUl9XUklURU1BU0sJCT0gMHgwQzIzLAoJR0xfQ1VSUkVOVF9JTkRFWAkJPSAweDBCMDEs
CglHTF9DVVJSRU5UX0NPTE9SCQk9IDB4MEIwMCwKCUdMX0NVUlJFTlRfTk9STUFMCQk9IDB4MEIw
MiwKCUdMX0NVUlJFTlRfUkFTVEVSX0NPTE9SCQk9IDB4MEIwNCwKCUdMX0NVUlJFTlRfUkFTVEVS
X0RJU1RBTkNFCT0gMHgwQjA5LAoJR0xfQ1VSUkVOVF9SQVNURVJfSU5ERVgJCT0gMHgwQjA1LAoJ
R0xfQ1VSUkVOVF9SQVNURVJfUE9TSVRJT04JPSAweDBCMDcsCglHTF9DVVJSRU5UX1JBU1RFUl9U
RVhUVVJFX0NPT1JEUyA9IDB4MEIwNiwKCUdMX0NVUlJFTlRfUkFTVEVSX1BPU0lUSU9OX1ZBTElE
ID0gMHgwQjA4LAoJR0xfQ1VSUkVOVF9URVhUVVJFX0NPT1JEUwk9IDB4MEIwMywKCUdMX0lOREVY
X0NMRUFSX1ZBTFVFCQk9IDB4MEMyMCwKCUdMX0lOREVYX01PREUJCQk9IDB4MEMzMCwKCUdMX0lO
REVYX1dSSVRFTUFTSwkJPSAweDBDMjEsCglHTF9NT0RFTFZJRVdfTUFUUklYCQk9IDB4MEJBNiwK
CUdMX01PREVMVklFV19TVEFDS19ERVBUSAk9IDB4MEJBMywKCUdMX05BTUVfU1RBQ0tfREVQVEgJ
CT0gMHgwRDcwLAoJR0xfUFJPSkVDVElPTl9NQVRSSVgJCT0gMHgwQkE3LAoJR0xfUFJPSkVDVElP
Tl9TVEFDS19ERVBUSAk9IDB4MEJBNCwKCUdMX1JFTkRFUl9NT0RFCQkJPSAweDBDNDAsCglHTF9S
R0JBX01PREUJCQk9IDB4MEMzMSwKCUdMX1RFWFRVUkVfTUFUUklYCQk9IDB4MEJBOCwKCUdMX1RF
WFRVUkVfU1RBQ0tfREVQVEgJCT0gMHgwQkE1LAoJR0xfVklFV1BPUlQJCQk9IDB4MEJBMiwKCgoJ
IAoJR0xfQVVUT19OT1JNQUwJCQk9IDB4MEQ4MCwKCUdMX01BUDFfQ09MT1JfNAkJCT0gMHgwRDkw
LAoJR0xfTUFQMV9HUklEX0RPTUFJTgkJPSAweDBERDAsCglHTF9NQVAxX0dSSURfU0VHTUVOVFMJ
CT0gMHgwREQxLAoJR0xfTUFQMV9JTkRFWAkJCT0gMHgwRDkxLAoJR0xfTUFQMV9OT1JNQUwJCQk9
IDB4MEQ5MiwKCUdMX01BUDFfVEVYVFVSRV9DT09SRF8xCQk9IDB4MEQ5MywKCUdMX01BUDFfVEVY
VFVSRV9DT09SRF8yCQk9IDB4MEQ5NCwKCUdMX01BUDFfVEVYVFVSRV9DT09SRF8zCQk9IDB4MEQ5
NSwKCUdMX01BUDFfVEVYVFVSRV9DT09SRF80CQk9IDB4MEQ5NiwKCUdMX01BUDFfVkVSVEVYXzMJ
CT0gMHgwRDk3LAoJR0xfTUFQMV9WRVJURVhfNAkJPSAweDBEOTgsCglHTF9NQVAyX0NPTE9SXzQJ
CQk9IDB4MERCMCwKCUdMX01BUDJfR1JJRF9ET01BSU4JCT0gMHgwREQyLAoJR0xfTUFQMl9HUklE
X1NFR01FTlRTCQk9IDB4MEREMywKCUdMX01BUDJfSU5ERVgJCQk9IDB4MERCMSwKCUdMX01BUDJf
Tk9STUFMCQkJPSAweDBEQjIsCglHTF9NQVAyX1RFWFRVUkVfQ09PUkRfMQkJPSAweDBEQjMsCglH
TF9NQVAyX1RFWFRVUkVfQ09PUkRfMgkJPSAweDBEQjQsCglHTF9NQVAyX1RFWFRVUkVfQ09PUkRf
MwkJPSAweDBEQjUsCglHTF9NQVAyX1RFWFRVUkVfQ09PUkRfNAkJPSAweDBEQjYsCglHTF9NQVAy
X1ZFUlRFWF8zCQk9IDB4MERCNywKCUdMX01BUDJfVkVSVEVYXzQJCT0gMHgwREI4LAoJR0xfQ09F
RkYJCQk9IDB4MEEwMCwKCUdMX0RPTUFJTgkJCT0gMHgwQTAyLAoJR0xfT1JERVIJCQk9IDB4MEEw
MSwKCgkgCglHTF9GT0dfSElOVAkJCT0gMHgwQzU0LAoJR0xfTElORV9TTU9PVEhfSElOVAkJPSAw
eDBDNTIsCglHTF9QRVJTUEVDVElWRV9DT1JSRUNUSU9OX0hJTlQJPSAweDBDNTAsCglHTF9QT0lO
VF9TTU9PVEhfSElOVAkJPSAweDBDNTEsCglHTF9QT0xZR09OX1NNT09USF9ISU5UCQk9IDB4MEM1
MywKCUdMX0RPTlRfQ0FSRQkJCT0gMHgxMTAwLAoJR0xfRkFTVEVTVAkJCT0gMHgxMTAxLAoJR0xf
TklDRVNUCQkJPSAweDExMDIsCgoJIAoJR0xfU0NJU1NPUl9URVNUCQkJPSAweDBDMTEsCglHTF9T
Q0lTU09SX0JPWAkJCT0gMHgwQzEwLAoKCSAKCUdMX01BUF9DT0xPUgkJCT0gMHgwRDEwLAoJR0xf
TUFQX1NURU5DSUwJCQk9IDB4MEQxMSwKCUdMX0lOREVYX1NISUZUCQkJPSAweDBEMTIsCglHTF9J
TkRFWF9PRkZTRVQJCQk9IDB4MEQxMywKCUdMX1JFRF9TQ0FMRQkJCT0gMHgwRDE0LAoJR0xfUkVE
X0JJQVMJCQk9IDB4MEQxNSwKCUdMX0dSRUVOX1NDQUxFCQkJPSAweDBEMTgsCglHTF9HUkVFTl9C
SUFTCQkJPSAweDBEMTksCglHTF9CTFVFX1NDQUxFCQkJPSAweDBEMUEsCglHTF9CTFVFX0JJQVMJ
CQk9IDB4MEQxQiwKCUdMX0FMUEhBX1NDQUxFCQkJPSAweDBEMUMsCglHTF9BTFBIQV9CSUFTCQkJ
PSAweDBEMUQsCglHTF9ERVBUSF9TQ0FMRQkJCT0gMHgwRDFFLAoJR0xfREVQVEhfQklBUwkJCT0g
MHgwRDFGLAoJR0xfUElYRUxfTUFQX1NfVE9fU19TSVpFCT0gMHgwQ0IxLAoJR0xfUElYRUxfTUFQ
X0lfVE9fSV9TSVpFCT0gMHgwQ0IwLAoJR0xfUElYRUxfTUFQX0lfVE9fUl9TSVpFCT0gMHgwQ0Iy
LAoJR0xfUElYRUxfTUFQX0lfVE9fR19TSVpFCT0gMHgwQ0IzLAoJR0xfUElYRUxfTUFQX0lfVE9f
Ql9TSVpFCT0gMHgwQ0I0LAoJR0xfUElYRUxfTUFQX0lfVE9fQV9TSVpFCT0gMHgwQ0I1LAoJR0xf
UElYRUxfTUFQX1JfVE9fUl9TSVpFCT0gMHgwQ0I2LAoJR0xfUElYRUxfTUFQX0dfVE9fR19TSVpF
CT0gMHgwQ0I3LAoJR0xfUElYRUxfTUFQX0JfVE9fQl9TSVpFCT0gMHgwQ0I4LAoJR0xfUElYRUxf
TUFQX0FfVE9fQV9TSVpFCT0gMHgwQ0I5LAoJR0xfUElYRUxfTUFQX1NfVE9fUwkJPSAweDBDNzEs
CglHTF9QSVhFTF9NQVBfSV9UT19JCQk9IDB4MEM3MCwKCUdMX1BJWEVMX01BUF9JX1RPX1IJCT0g
MHgwQzcyLAoJR0xfUElYRUxfTUFQX0lfVE9fRwkJPSAweDBDNzMsCglHTF9QSVhFTF9NQVBfSV9U
T19CCQk9IDB4MEM3NCwKCUdMX1BJWEVMX01BUF9JX1RPX0EJCT0gMHgwQzc1LAoJR0xfUElYRUxf
TUFQX1JfVE9fUgkJPSAweDBDNzYsCglHTF9QSVhFTF9NQVBfR19UT19HCQk9IDB4MEM3NywKCUdM
X1BJWEVMX01BUF9CX1RPX0IJCT0gMHgwQzc4LAoJR0xfUElYRUxfTUFQX0FfVE9fQQkJPSAweDBD
NzksCglHTF9QQUNLX0FMSUdOTUVOVAkJPSAweDBEMDUsCglHTF9QQUNLX0xTQl9GSVJTVAkJPSAw
eDBEMDEsCglHTF9QQUNLX1JPV19MRU5HVEgJCT0gMHgwRDAyLAoJR0xfUEFDS19TS0lQX1BJWEVM
UwkJPSAweDBEMDQsCglHTF9QQUNLX1NLSVBfUk9XUwkJPSAweDBEMDMsCglHTF9QQUNLX1NXQVBf
QllURVMJCT0gMHgwRDAwLAoJR0xfVU5QQUNLX0FMSUdOTUVOVAkJPSAweDBDRjUsCglHTF9VTlBB
Q0tfTFNCX0ZJUlNUCQk9IDB4MENGMSwKCUdMX1VOUEFDS19ST1dfTEVOR1RICQk9IDB4MENGMiwK
CUdMX1VOUEFDS19TS0lQX1BJWEVMUwkJPSAweDBDRjQsCglHTF9VTlBBQ0tfU0tJUF9ST1dTCQk9
IDB4MENGMywKCUdMX1VOUEFDS19TV0FQX0JZVEVTCQk9IDB4MENGMCwKCUdMX1pPT01fWAkJCT0g
MHgwRDE2LAoJR0xfWk9PTV9ZCQkJPSAweDBEMTcsCgoJIAoJR0xfVEVYVFVSRV9FTlYJCQk9IDB4
MjMwMCwKCUdMX1RFWFRVUkVfRU5WX01PREUJCT0gMHgyMjAwLAoJR0xfVEVYVFVSRV8xRAkJCT0g
MHgwREUwLAoJR0xfVEVYVFVSRV8yRAkJCT0gMHgwREUxLAoJR0xfVEVYVFVSRV9XUkFQX1MJCT0g
MHgyODAyLAoJR0xfVEVYVFVSRV9XUkFQX1QJCT0gMHgyODAzLAoJR0xfVEVYVFVSRV9NQUdfRklM
VEVSCQk9IDB4MjgwMCwKCUdMX1RFWFRVUkVfTUlOX0ZJTFRFUgkJPSAweDI4MDEsCglHTF9URVhU
VVJFX0VOVl9DT0xPUgkJPSAweDIyMDEsCglHTF9URVhUVVJFX0dFTl9TCQk9IDB4MEM2MCwKCUdM
X1RFWFRVUkVfR0VOX1QJCT0gMHgwQzYxLAoJR0xfVEVYVFVSRV9HRU5fTU9ERQkJPSAweDI1MDAs
CglHTF9URVhUVVJFX0JPUkRFUl9DT0xPUgkJPSAweDEwMDQsCglHTF9URVhUVVJFX1dJRFRICQk9
IDB4MTAwMCwKCUdMX1RFWFRVUkVfSEVJR0hUCQk9IDB4MTAwMSwKCUdMX1RFWFRVUkVfQk9SREVS
CQk9IDB4MTAwNSwKCUdMX1RFWFRVUkVfQ09NUE9ORU5UUwkJPSAweDEwMDMsCglHTF9URVhUVVJF
X1JFRF9TSVpFCQk9IDB4ODA1QywKCUdMX1RFWFRVUkVfR1JFRU5fU0laRQkJPSAweDgwNUQsCglH
TF9URVhUVVJFX0JMVUVfU0laRQkJPSAweDgwNUUsCglHTF9URVhUVVJFX0FMUEhBX1NJWkUJCT0g
MHg4MDVGLAoJR0xfVEVYVFVSRV9MVU1JTkFOQ0VfU0laRQk9IDB4ODA2MCwKCUdMX1RFWFRVUkVf
SU5URU5TSVRZX1NJWkUJPSAweDgwNjEsCglHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUCT0gMHgy
NzAwLAoJR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSCT0gMHgyNzAyLAoJR0xfTElORUFSX01JUE1B
UF9ORUFSRVNUCT0gMHgyNzAxLAoJR0xfTElORUFSX01JUE1BUF9MSU5FQVIJCT0gMHgyNzAzLAoJ
R0xfT0JKRUNUX0xJTkVBUgkJPSAweDI0MDEsCglHTF9PQkpFQ1RfUExBTkUJCQk9IDB4MjUwMSwK
CUdMX0VZRV9MSU5FQVIJCQk9IDB4MjQwMCwKCUdMX0VZRV9QTEFORQkJCT0gMHgyNTAyLAoJR0xf
U1BIRVJFX01BUAkJCT0gMHgyNDAyLAoJR0xfREVDQUwJCQk9IDB4MjEwMSwKCUdMX01PRFVMQVRF
CQkJPSAweDIxMDAsCglHTF9ORUFSRVNUCQkJPSAweDI2MDAsCglHTF9SRVBFQVQJCQk9IDB4Mjkw
MSwKCUdMX0NMQU1QCQkJPSAweDI5MDAsCglHTF9TCQkJCT0gMHgyMDAwLAoJR0xfVAkJCQk9IDB4
MjAwMSwKCUdMX1IJCQkJPSAweDIwMDIsCglHTF9RCQkJCT0gMHgyMDAzLAoJR0xfVEVYVFVSRV9H
RU5fUgkJPSAweDBDNjIsCglHTF9URVhUVVJFX0dFTl9RCQk9IDB4MEM2MywKCglHTF9QUk9YWV9U
RVhUVVJFXzFECQk9IDB4ODA2MywKCUdMX1BST1hZX1RFWFRVUkVfMkQJCT0gMHg4MDY0LAoJR0xf
VEVYVFVSRV9QUklPUklUWQkJPSAweDgwNjYsCglHTF9URVhUVVJFX1JFU0lERU5UCQk9IDB4ODA2
NywKCUdMX1RFWFRVUkVfQklORElOR18xRAkJPSAweDgwNjgsCglHTF9URVhUVVJFX0JJTkRJTkdf
MkQJCT0gMHg4MDY5LAoKCSAKCUdMX0FMUEhBNAkJCT0gMHg4MDNCLAoJR0xfQUxQSEE4CQkJPSAw
eDgwM0MsCglHTF9BTFBIQTEyCQkJPSAweDgwM0QsCglHTF9BTFBIQTE2CQkJPSAweDgwM0UsCglH
TF9MVU1JTkFOQ0U0CQkJPSAweDgwM0YsCglHTF9MVU1JTkFOQ0U4CQkJPSAweDgwNDAsCglHTF9M
VU1JTkFOQ0UxMgkJCT0gMHg4MDQxLAoJR0xfTFVNSU5BTkNFMTYJCQk9IDB4ODA0MiwKCUdMX0xV
TUlOQU5DRTRfQUxQSEE0CQk9IDB4ODA0MywKCUdMX0xVTUlOQU5DRTZfQUxQSEEyCQk9IDB4ODA0
NCwKCUdMX0xVTUlOQU5DRThfQUxQSEE4CQk9IDB4ODA0NSwKCUdMX0xVTUlOQU5DRTEyX0FMUEhB
NAkJPSAweDgwNDYsCglHTF9MVU1JTkFOQ0UxMl9BTFBIQTEyCQk9IDB4ODA0NywKCUdMX0xVTUlO
QU5DRTE2X0FMUEhBMTYJCT0gMHg4MDQ4LAoJR0xfSU5URU5TSVRZCQkJPSAweDgwNDksCglHTF9J
TlRFTlNJVFk0CQkJPSAweDgwNEEsCglHTF9JTlRFTlNJVFk4CQkJPSAweDgwNEIsCglHTF9JTlRF
TlNJVFkxMgkJCT0gMHg4MDRDLAoJR0xfSU5URU5TSVRZMTYJCQk9IDB4ODA0RCwKCUdMX1IzX0cz
X0IyCQkJPSAweDJBMTAsCglHTF9SR0I0CQkJCT0gMHg4MDRGLAoJR0xfUkdCNQkJCQk9IDB4ODA1
MCwKCUdMX1JHQjgJCQkJPSAweDgwNTEsCglHTF9SR0IxMAkJCT0gMHg4MDUyLAoJR0xfUkdCMTIJ
CQk9IDB4ODA1MywKCUdMX1JHQjE2CQkJPSAweDgwNTQsCglHTF9SR0JBMgkJCT0gMHg4MDU1LAoJ
R0xfUkdCQTQJCQk9IDB4ODA1NiwKCUdMX1JHQjVfQTEJCQk9IDB4ODA1NywKCUdMX1JHQkE4CQkJ
PSAweDgwNTgsCglHTF9SR0IxMF9BMgkJCT0gMHg4MDU5LAoJR0xfUkdCQTEyCQkJPSAweDgwNUEs
CglHTF9SR0JBMTYJCQk9IDB4ODA1QiwKCgkgCglHTF9WRU5ET1IJCQk9IDB4MUYwMCwKCUdMX1JF
TkRFUkVSCQkJPSAweDFGMDEsCglHTF9WRVJTSU9OCQkJPSAweDFGMDIsCglHTF9FWFRFTlNJT05T
CQkJPSAweDFGMDMsCgoJIAoJR0xfSU5WQUxJRF9WQUxVRQkJPSAweDA1MDEsCglHTF9JTlZBTElE
X0VOVU0JCQk9IDB4MDUwMCwKCUdMX0lOVkFMSURfT1BFUkFUSU9OCQk9IDB4MDUwMiwKCUdMX1NU
QUNLX09WRVJGTE9XCQk9IDB4MDUwMywKCUdMX1NUQUNLX1VOREVSRkxPVwkJPSAweDA1MDQsCglH
TF9PVVRfT0ZfTUVNT1JZCQk9IDB4MDUwNSwKCgkgCgoKICAgICAgICAgCglHTF9DT05TVEFOVF9D
T0xPUl9FWFQJCT0gMHg4MDAxLAoJR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SX0VYVAk9IDB4
ODAwMiwKCUdMX0NPTlNUQU5UX0FMUEhBX0VYVAkJPSAweDgwMDMsCglHTF9PTkVfTUlOVVNfQ09O
U1RBTlRfQUxQSEFfRVhUCT0gMHg4MDA0LAoJR0xfQkxFTkRfRVFVQVRJT05fRVhUCQk9IDB4ODAw
OSwKCUdMX01JTl9FWFQJCQk9IDB4ODAwNywKCUdMX01BWF9FWFQJCQk9IDB4ODAwOCwKCUdMX0ZV
TkNfQUREX0VYVAkJCT0gMHg4MDA2LAoJR0xfRlVOQ19TVUJUUkFDVF9FWFQJCT0gMHg4MDBBLAoJ
R0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUX0VYVAk9IDB4ODAwQiwKCUdMX0JMRU5EX0NPTE9SX0VY
VAkJPSAweDgwMDUsCgoJIAogICAgICAgIEdMX1BPTFlHT05fT0ZGU0VUX0VYVCAgICAgICAgICAg
PSAweDgwMzcsCiAgICAgICAgR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SX0VYVCAgICA9IDB4ODAz
OCwKICAgICAgICBHTF9QT0xZR09OX09GRlNFVF9CSUFTX0VYVCAgICAgID0gMHg4MDM5LAoKCSAK
CUdMX1ZFUlRFWF9BUlJBWV9FWFQJCQk9IDB4ODA3NCwKCUdMX05PUk1BTF9BUlJBWV9FWFQJCQk9
IDB4ODA3NSwKCUdMX0NPTE9SX0FSUkFZX0VYVAkJCT0gMHg4MDc2LAoJR0xfSU5ERVhfQVJSQVlf
RVhUCQkJPSAweDgwNzcsCglHTF9URVhUVVJFX0NPT1JEX0FSUkFZX0VYVAkJPSAweDgwNzgsCglH
TF9FREdFX0ZMQUdfQVJSQVlfRVhUCQkJPSAweDgwNzksCglHTF9WRVJURVhfQVJSQVlfU0laRV9F
WFQJCT0gMHg4MDdBLAoJR0xfVkVSVEVYX0FSUkFZX1RZUEVfRVhUCQk9IDB4ODA3QiwKCUdMX1ZF
UlRFWF9BUlJBWV9TVFJJREVfRVhUCQk9IDB4ODA3QywKCUdMX1ZFUlRFWF9BUlJBWV9DT1VOVF9F
WFQJCT0gMHg4MDdELAoJR0xfTk9STUFMX0FSUkFZX1RZUEVfRVhUCQk9IDB4ODA3RSwKCUdMX05P
Uk1BTF9BUlJBWV9TVFJJREVfRVhUCQk9IDB4ODA3RiwKCUdMX05PUk1BTF9BUlJBWV9DT1VOVF9F
WFQJCT0gMHg4MDgwLAoJR0xfQ09MT1JfQVJSQVlfU0laRV9FWFQJCQk9IDB4ODA4MSwKCUdMX0NP
TE9SX0FSUkFZX1RZUEVfRVhUCQkJPSAweDgwODIsCglHTF9DT0xPUl9BUlJBWV9TVFJJREVfRVhU
CQk9IDB4ODA4MywKCUdMX0NPTE9SX0FSUkFZX0NPVU5UX0VYVAkJPSAweDgwODQsCglHTF9JTkRF
WF9BUlJBWV9UWVBFX0VYVAkJCT0gMHg4MDg1LAoJR0xfSU5ERVhfQVJSQVlfU1RSSURFX0VYVAkJ
PSAweDgwODYsCglHTF9JTkRFWF9BUlJBWV9DT1VOVF9FWFQJCT0gMHg4MDg3LAoJR0xfVEVYVFVS
RV9DT09SRF9BUlJBWV9TSVpFX0VYVAkJPSAweDgwODgsCglHTF9URVhUVVJFX0NPT1JEX0FSUkFZ
X1RZUEVfRVhUCQk9IDB4ODA4OSwKCUdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfU1RSSURFX0VYVAk9
IDB4ODA4QSwKCUdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfQ09VTlRfRVhUCT0gMHg4MDhCLAoJR0xf
RURHRV9GTEFHX0FSUkFZX1NUUklERV9FWFQJCT0gMHg4MDhDLAoJR0xfRURHRV9GTEFHX0FSUkFZ
X0NPVU5UX0VYVAkJPSAweDgwOEQsCglHTF9WRVJURVhfQVJSQVlfUE9JTlRFUl9FWFQJCT0gMHg4
MDhFLAoJR0xfTk9STUFMX0FSUkFZX1BPSU5URVJfRVhUCQk9IDB4ODA4RiwKCUdMX0NPTE9SX0FS
UkFZX1BPSU5URVJfRVhUCQk9IDB4ODA5MCwKCUdMX0lOREVYX0FSUkFZX1BPSU5URVJfRVhUCQk9
IDB4ODA5MSwKCUdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfUE9JTlRFUl9FWFQJPSAweDgwOTIsCglH
TF9FREdFX0ZMQUdfQVJSQVlfUE9JTlRFUl9FWFQJCT0gMHg4MDkzLAoKCSAKCUdMX1RFWFRVUkVf
UFJJT1JJVFlfRVhUCQk9IDB4ODA2NiwKCUdMX1RFWFRVUkVfUkVTSURFTlRfRVhUCQk9IDB4ODA2
NywKCUdMX1RFWFRVUkVfMURfQklORElOR19FWFQJPSAweDgwNjgsCglHTF9URVhUVVJFXzJEX0JJ
TkRJTkdfRVhUCT0gMHg4MDY5LAoKCSAKCUdMX1BBQ0tfU0tJUF9JTUFHRVNfRVhUCQk9IDB4ODA2
QiwKCUdMX1BBQ0tfSU1BR0VfSEVJR0hUX0VYVAk9IDB4ODA2QywKCUdMX1VOUEFDS19TS0lQX0lN
QUdFU19FWFQJPSAweDgwNkQsCglHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUX0VYVAk9IDB4ODA2RSwK
CUdMX1RFWFRVUkVfM0RfRVhUCQk9IDB4ODA2RiwKCUdMX1BST1hZX1RFWFRVUkVfM0RfRVhUCQk9
IDB4ODA3MCwKCUdMX1RFWFRVUkVfREVQVEhfRVhUCQk9IDB4ODA3MSwKCUdMX1RFWFRVUkVfV1JB
UF9SX0VYVAkJPSAweDgwNzIsCglHTF9NQVhfM0RfVEVYVFVSRV9TSVpFX0VYVAk9IDB4ODA3MywK
CUdMX1RFWFRVUkVfM0RfQklORElOR19FWFQJPSAweDgwNkEsCgogICAgICAgICAKCUdMX1RBQkxF
X1RPT19MQVJHRV9FWFQJCQk9IDB4ODAzMSwKCUdMX0NPTE9SX1RBQkxFX0ZPUk1BVF9FWFQJCT0g
MHg4MEQ4LAoJR0xfQ09MT1JfVEFCTEVfV0lEVEhfRVhUCQk9IDB4ODBEOSwKCUdMX0NPTE9SX1RB
QkxFX1JFRF9TSVpFX0VYVAkJPSAweDgwREEsCglHTF9DT0xPUl9UQUJMRV9HUkVFTl9TSVpFX0VY
VAkJPSAweDgwREIsCglHTF9DT0xPUl9UQUJMRV9CTFVFX1NJWkVfRVhUCQk9IDB4ODBEQywKCUdM
X0NPTE9SX1RBQkxFX0FMUEhBX1NJWkVfRVhUCSAJPSAweDgwREQsCglHTF9DT0xPUl9UQUJMRV9M
VU1JTkFOQ0VfU0laRV9FWFQJPSAweDgwREUsCglHTF9DT0xPUl9UQUJMRV9JTlRFTlNJVFlfU0la
RV9FWFQJPSAweDgwREYsCglHTF9URVhUVVJFX0lOREVYX1NJWkVfRVhUCQk9IDB4ODBFMSwgIAoJ
R0xfQ09MT1JfSU5ERVgxX0VYVAkJCT0gMHg4MEUyLAoJR0xfQ09MT1JfSU5ERVgyX0VYVAkJCT0g
MHg4MEUzLAoJR0xfQ09MT1JfSU5ERVg0X0VYVAkJCT0gMHg4MEU0LAoJR0xfQ09MT1JfSU5ERVg4
X0VYVAkJCT0gMHg4MEU1LAoJR0xfQ09MT1JfSU5ERVgxMl9FWFQJCQk9IDB4ODBFNiwKCUdMX0NP
TE9SX0lOREVYMTZfRVhUCQkJPSAweDgwRTcsCgoJIAoJR0xfU0hBUkVEX1RFWFRVUkVfUEFMRVRU
RV9FWFQJCT0gMHg4MUZCLAoKCgoKCgoKCgoJIAoJR0xfUE9JTlRfU0laRV9NSU5fRVhUCQkJPSAw
eDgxMjYsCglHTF9QT0lOVF9TSVpFX01BWF9FWFQJCQk9IDB4ODEyNywKCUdMX1BPSU5UX0ZBREVf
VEhSRVNIT0xEX1NJWkVfRVhUCT0gMHg4MTI4LAoJR0xfRElTVEFOQ0VfQVRURU5VQVRJT05fRVhU
CQk9IDB4ODEyOQp9CgoKCgoKICAgCiAgR0xlbnVtOwoKCgogCgoKCgplbnVtIHsKCUdMX0NVUlJF
TlRfQklUCQk9IDB4MDAwMDAwMDEsCglHTF9QT0lOVF9CSVQJCT0gMHgwMDAwMDAwMiwKCUdMX0xJ
TkVfQklUCQk9IDB4MDAwMDAwMDQsCglHTF9QT0xZR09OX0JJVAkJPSAweDAwMDAwMDA4LAoJR0xf
UE9MWUdPTl9TVElQUExFX0JJVAk9IDB4MDAwMDAwMTAsCglHTF9QSVhFTF9NT0RFX0JJVAk9IDB4
MDAwMDAwMjAsCglHTF9MSUdIVElOR19CSVQJCT0gMHgwMDAwMDA0MCwKCUdMX0ZPR19CSVQJCT0g
MHgwMDAwMDA4MCwKCUdMX0RFUFRIX0JVRkZFUl9CSVQJPSAweDAwMDAwMTAwLAoJR0xfQUNDVU1f
QlVGRkVSX0JJVAk9IDB4MDAwMDAyMDAsCglHTF9TVEVOQ0lMX0JVRkZFUl9CSVQJPSAweDAwMDAw
NDAwLAoJR0xfVklFV1BPUlRfQklUCQk9IDB4MDAwMDA4MDAsCglHTF9UUkFOU0ZPUk1fQklUCT0g
MHgwMDAwMTAwMCwKCUdMX0VOQUJMRV9CSVQJCT0gMHgwMDAwMjAwMCwKCUdMX0NPTE9SX0JVRkZF
Ul9CSVQJPSAweDAwMDA0MDAwLAoJR0xfSElOVF9CSVQJCT0gMHgwMDAwODAwMCwKCUdMX0VWQUxf
QklUCQk9IDB4MDAwMTAwMDAsCglHTF9MSVNUX0JJVAkJPSAweDAwMDIwMDAwLAoJR0xfVEVYVFVS
RV9CSVQJCT0gMHgwMDA0MDAwMCwKCUdMX1NDSVNTT1JfQklUCQk9IDB4MDAwODAwMDAsCglHTF9B
TExfQVRUUklCX0JJVFMJPSAweDAwMGZmZmZmCn07CgoKZW51bSB7CglHTF9DTElFTlRfUElYRUxf
U1RPUkVfQklUCT0gMHgwMDAwMDAwMSwKCUdMX0NMSUVOVF9WRVJURVhfQVJSQVlfQklUCT0gMHgw
MDAwMDAwMiwKCUdMX0NMSUVOVF9BTExfQVRUUklCX0JJVFMJPSAweDAwMDBGRkZGCn07CgoKCnR5
cGVkZWYgdW5zaWduZWQgaW50IEdMYml0ZmllbGQ7CgoKCgoKCgogCgoKCgoKIAogCnR5cGVkZWYg
dm9pZAkJR0x2b2lkOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIJR0xib29sZWFuOwp0eXBlZGVmIHNp
Z25lZCBjaGFyCUdMYnl0ZTsJCSAKdHlwZWRlZiBzaG9ydAkJR0xzaG9ydDsJIAp0eXBlZGVmIGlu
dAkJR0xpbnQ7CQkgCnR5cGVkZWYgdW5zaWduZWQgY2hhcglHTHVieXRlOwkgCnR5cGVkZWYgdW5z
aWduZWQgc2hvcnQJR0x1c2hvcnQ7CSAKdHlwZWRlZiB1bnNpZ25lZCBpbnQJR0x1aW50OwkJIAp0
eXBlZGVmIGludAkJR0xzaXplaTsJIAp0eXBlZGVmIGZsb2F0CQlHTGZsb2F0OwkgCnR5cGVkZWYg
ZmxvYXQJCUdMY2xhbXBmOwkgCnR5cGVkZWYgZG91YmxlCQlHTGRvdWJsZTsJIAp0eXBlZGVmIGRv
dWJsZQkJR0xjbGFtcGQ7CSAKCgoKCgoKCgogCgoKCmV4dGVybiAgdm9pZCAgIGdsQ2xlYXJJbmRl
eCggR0xmbG9hdCBjICk7CgpleHRlcm4gIHZvaWQgICBnbENsZWFyQ29sb3IoIEdMY2xhbXBmIHJl
ZCwKCQkJICBHTGNsYW1wZiBncmVlbiwKCQkJICBHTGNsYW1wZiBibHVlLAoJCQkgIEdMY2xhbXBm
IGFscGhhICk7CgpleHRlcm4gIHZvaWQgICBnbENsZWFyKCBHTGJpdGZpZWxkIG1hc2sgKTsKCmV4
dGVybiAgdm9pZCAgIGdsSW5kZXhNYXNrKCBHTHVpbnQgbWFzayApOwoKZXh0ZXJuICB2b2lkICAg
Z2xDb2xvck1hc2soIEdMYm9vbGVhbiByZWQsIEdMYm9vbGVhbiBncmVlbiwKCQkJIEdMYm9vbGVh
biBibHVlLCBHTGJvb2xlYW4gYWxwaGEgKTsKCmV4dGVybiAgdm9pZCAgIGdsQWxwaGFGdW5jKCBH
TGVudW0gZnVuYywgR0xjbGFtcGYgcmVmICk7CgpleHRlcm4gIHZvaWQgICBnbEJsZW5kRnVuYygg
R0xlbnVtIHNmYWN0b3IsIEdMZW51bSBkZmFjdG9yICk7CgpleHRlcm4gIHZvaWQgICBnbExvZ2lj
T3AoIEdMZW51bSBvcGNvZGUgKTsKCmV4dGVybiAgdm9pZCAgIGdsQ3VsbEZhY2UoIEdMZW51bSBt
b2RlICk7CgpleHRlcm4gIHZvaWQgICBnbEZyb250RmFjZSggR0xlbnVtIG1vZGUgKTsKCmV4dGVy
biAgdm9pZCAgIGdsUG9pbnRTaXplKCBHTGZsb2F0IHNpemUgKTsKCmV4dGVybiAgdm9pZCAgIGds
TGluZVdpZHRoKCBHTGZsb2F0IHdpZHRoICk7CgpleHRlcm4gIHZvaWQgICBnbExpbmVTdGlwcGxl
KCBHTGludCBmYWN0b3IsIEdMdXNob3J0IHBhdHRlcm4gKTsKCmV4dGVybiAgdm9pZCAgIGdsUG9s
eWdvbk1vZGUoIEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xQ
b2x5Z29uT2Zmc2V0KCBHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cyApOwoKZXh0ZXJuICB2
b2lkICAgZ2xQb2x5Z29uU3RpcHBsZSggY29uc3QgR0x1Ynl0ZSAqbWFzayApOwoKZXh0ZXJuICB2
b2lkICAgZ2xHZXRQb2x5Z29uU3RpcHBsZSggR0x1Ynl0ZSAqbWFzayApOwoKZXh0ZXJuICB2b2lk
ICAgZ2xFZGdlRmxhZyggR0xib29sZWFuIGZsYWcgKTsKCmV4dGVybiAgdm9pZCAgIGdsRWRnZUZs
YWd2KCBjb25zdCBHTGJvb2xlYW4gKmZsYWcgKTsKCmV4dGVybiAgdm9pZCAgIGdsU2Npc3Nvcigg
R0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CgpleHRlcm4gIHZvaWQgICBnbENsaXBQbGFuZSgg
R0xlbnVtIHBsYW5lLCBjb25zdCBHTGRvdWJsZSAqZXF1YXRpb24gKTsKCmV4dGVybiAgdm9pZCAg
IGdsR2V0Q2xpcFBsYW5lKCBHTGVudW0gcGxhbmUsIEdMZG91YmxlICplcXVhdGlvbiApOwoKZXh0
ZXJuICB2b2lkICAgZ2xEcmF3QnVmZmVyKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuICB2b2lkICAg
Z2xSZWFkQnVmZmVyKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xFbmFibGUoIEdM
ZW51bSBjYXAgKTsKCmV4dGVybiAgdm9pZCAgIGdsRGlzYWJsZSggR0xlbnVtIGNhcCApOwoKZXh0
ZXJuICBHTGJvb2xlYW4gICBnbElzRW5hYmxlZCggR0xlbnVtIGNhcCApOwoKCmV4dGVybiAgdm9p
ZCAgIGdsRW5hYmxlQ2xpZW50U3RhdGUoIEdMZW51bSBjYXAgKTsgICAKCmV4dGVybiAgdm9pZCAg
IGdsRGlzYWJsZUNsaWVudFN0YXRlKCBHTGVudW0gY2FwICk7ICAgCgoKZXh0ZXJuICB2b2lkICAg
Z2xHZXRCb29sZWFudiggR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcyApOwoKZXh0ZXJu
ICB2b2lkICAgZ2xHZXREb3VibGV2KCBHTGVudW0gcG5hbWUsIEdMZG91YmxlICpwYXJhbXMgKTsK
CmV4dGVybiAgdm9pZCAgIGdsR2V0RmxvYXR2KCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFt
cyApOwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRJbnRlZ2VydiggR0xlbnVtIHBuYW1lLCBHTGludCAq
cGFyYW1zICk7CgoKZXh0ZXJuICB2b2lkICAgZ2xQdXNoQXR0cmliKCBHTGJpdGZpZWxkIG1hc2sg
KTsKCmV4dGVybiAgdm9pZCAgIGdsUG9wQXR0cmliKCB2b2lkICk7CgoKZXh0ZXJuICB2b2lkICAg
Z2xQdXNoQ2xpZW50QXR0cmliKCBHTGJpdGZpZWxkIG1hc2sgKTsKCmV4dGVybiAgdm9pZCAgIGds
UG9wQ2xpZW50QXR0cmliKCB2b2lkICk7CgoKZXh0ZXJuICBHTGludCAgIGdsUmVuZGVyTW9kZSgg
R0xlbnVtIG1vZGUgKTsKCmV4dGVybiAgR0xlbnVtICAgZ2xHZXRFcnJvciggdm9pZCApOwoKZXh0
ZXJuICBjb25zdCBHTHVieXRlKiAgIGdsR2V0U3RyaW5nKCBHTGVudW0gbmFtZSApOwoKZXh0ZXJu
ICB2b2lkICAgZ2xGaW5pc2goIHZvaWQgKTsKCmV4dGVybiAgdm9pZCAgIGdsRmx1c2goIHZvaWQg
KTsKCmV4dGVybiAgdm9pZCAgIGdsSGludCggR0xlbnVtIHRhcmdldCwgR0xlbnVtIG1vZGUgKTsK
CgoKIAoKCgpleHRlcm4gIHZvaWQgICBnbENsZWFyRGVwdGgoIEdMY2xhbXBkIGRlcHRoICk7Cgpl
eHRlcm4gIHZvaWQgICBnbERlcHRoRnVuYyggR0xlbnVtIGZ1bmMgKTsKCmV4dGVybiAgdm9pZCAg
IGdsRGVwdGhNYXNrKCBHTGJvb2xlYW4gZmxhZyApOwoKZXh0ZXJuICB2b2lkICAgZ2xEZXB0aFJh
bmdlKCBHTGNsYW1wZCBuZWFyX3ZhbCwgR0xjbGFtcGQgZmFyX3ZhbCApOwoKCiAKCgoKZXh0ZXJu
ICB2b2lkICAgZ2xDbGVhckFjY3VtKCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxw
aGEgKTsKCmV4dGVybiAgdm9pZCAgIGdsQWNjdW0oIEdMZW51bSBvcCwgR0xmbG9hdCB2YWx1ZSAp
OwoKCgogCgoKCmV4dGVybiAgdm9pZCAgIGdsTWF0cml4TW9kZSggR0xlbnVtIG1vZGUgKTsKCmV4
dGVybiAgdm9pZCAgIGdsT3J0aG8oIEdMZG91YmxlIGxlZnQsIEdMZG91YmxlIHJpZ2h0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBib3R0b20sIEdMZG91YmxlIHRv
cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgbmVhcl92YWwsIEdM
ZG91YmxlIGZhcl92YWwgKTsKCmV4dGVybiAgdm9pZCAgIGdsRnJ1c3R1bSggR0xkb3VibGUgbGVm
dCwgR0xkb3VibGUgcmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xk
b3VibGUgYm90dG9tLCBHTGRvdWJsZSB0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xkb3VibGUgbmVhcl92YWwsIEdMZG91YmxlIGZhcl92YWwgKTsKCmV4dGVybiAgdm9p
ZCAgIGdsVmlld3BvcnQoIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0ICk7CgpleHRlcm4gIHZv
aWQgICBnbFB1c2hNYXRyaXgoIHZvaWQgKTsKCmV4dGVybiAgdm9pZCAgIGdsUG9wTWF0cml4KCB2
b2lkICk7CgpleHRlcm4gIHZvaWQgICBnbExvYWRJZGVudGl0eSggdm9pZCApOwoKZXh0ZXJuICB2
b2lkICAgZ2xMb2FkTWF0cml4ZCggY29uc3QgR0xkb3VibGUgKm0gKTsKZXh0ZXJuICB2b2lkICAg
Z2xMb2FkTWF0cml4ZiggY29uc3QgR0xmbG9hdCAqbSApOwoKZXh0ZXJuICB2b2lkICAgZ2xNdWx0
TWF0cml4ZCggY29uc3QgR0xkb3VibGUgKm0gKTsKZXh0ZXJuICB2b2lkICAgZ2xNdWx0TWF0cml4
ZiggY29uc3QgR0xmbG9hdCAqbSApOwoKZXh0ZXJuICB2b2lkICAgZ2xSb3RhdGVkKCBHTGRvdWJs
ZSBhbmdsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB4LCBH
TGRvdWJsZSB5LCBHTGRvdWJsZSB6ICk7CmV4dGVybiAgdm9pZCAgIGdsUm90YXRlZiggR0xmbG9h
dCBhbmdsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHgsIEdM
ZmxvYXQgeSwgR0xmbG9hdCB6ICk7CgpleHRlcm4gIHZvaWQgICBnbFNjYWxlZCggR0xkb3VibGUg
eCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiApOwpleHRlcm4gIHZvaWQgICBnbFNjYWxlZiggR0xm
bG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiApOwoKZXh0ZXJuICB2b2lkICAgZ2xUcmFuc2xh
dGVkKCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6ICk7CmV4dGVybiAgdm9pZCAg
IGdsVHJhbnNsYXRlZiggR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiApOwoKCgogCgoK
CmV4dGVybiAgR0xib29sZWFuICAgZ2xJc0xpc3QoIEdMdWludCBsaXN0ICk7CgpleHRlcm4gIHZv
aWQgICBnbERlbGV0ZUxpc3RzKCBHTHVpbnQgbGlzdCwgR0xzaXplaSByYW5nZSApOwoKZXh0ZXJu
ICBHTHVpbnQgICBnbEdlbkxpc3RzKCBHTHNpemVpIHJhbmdlICk7CgpleHRlcm4gIHZvaWQgICBn
bE5ld0xpc3QoIEdMdWludCBsaXN0LCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xF
bmRMaXN0KCB2b2lkICk7CgpleHRlcm4gIHZvaWQgICBnbENhbGxMaXN0KCBHTHVpbnQgbGlzdCAp
OwoKZXh0ZXJuICB2b2lkICAgZ2xDYWxsTGlzdHMoIEdMc2l6ZWkgbiwgR0xlbnVtIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmxpc3RzICk7
CgpleHRlcm4gIHZvaWQgICBnbExpc3RCYXNlKCBHTHVpbnQgYmFzZSApOwoKCgogCgoKCmV4dGVy
biAgdm9pZCAgIGdsQmVnaW4oIEdMZW51bSBtb2RlICk7CgpleHRlcm4gIHZvaWQgICBnbEVuZCgg
dm9pZCApOwoKCmV4dGVybiAgdm9pZCAgIGdsVmVydGV4MmQoIEdMZG91YmxlIHgsIEdMZG91Ymxl
IHkgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXgyZiggR0xmbG9hdCB4LCBHTGZsb2F0IHkgKTsK
ZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXgyaSggR0xpbnQgeCwgR0xpbnQgeSApOwpleHRlcm4gIHZv
aWQgICBnbFZlcnRleDJzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSApOwoKZXh0ZXJuICB2b2lkICAg
Z2xWZXJ0ZXgzZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiApOwpleHRlcm4g
IHZvaWQgICBnbFZlcnRleDNmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6ICk7CmV4
dGVybiAgdm9pZCAgIGdsVmVydGV4M2koIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHogKTsKZXh0
ZXJuICB2b2lkICAgZ2xWZXJ0ZXgzcyggR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiAp
OwoKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXg0ZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xk
b3VibGUgeiwgR0xkb3VibGUgdyApOwpleHRlcm4gIHZvaWQgICBnbFZlcnRleDRmKCBHTGZsb2F0
IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcgKTsKZXh0ZXJuICB2b2lkICAgZ2xW
ZXJ0ZXg0aSggR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyApOwpleHRlcm4gIHZv
aWQgICBnbFZlcnRleDRzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6LCBHTHNob3J0
IHcgKTsKCmV4dGVybiAgdm9pZCAgIGdsVmVydGV4MmR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpl
eHRlcm4gIHZvaWQgICBnbFZlcnRleDJmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gIHZv
aWQgICBnbFZlcnRleDJpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0
ZXgyc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiAgdm9pZCAgIGdsVmVydGV4M2R2KCBj
b25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbFZlcnRleDNmdiggY29uc3QgR0xm
bG9hdCAqdiApOwpleHRlcm4gIHZvaWQgICBnbFZlcnRleDNpdiggY29uc3QgR0xpbnQgKnYgKTsK
ZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXgzc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiAg
dm9pZCAgIGdsVmVydGV4NGR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gIHZvaWQgICBn
bFZlcnRleDRmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gIHZvaWQgICBnbFZlcnRleDRp
diggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXg0c3YoIGNvbnN0IEdM
c2hvcnQgKnYgKTsKCgpleHRlcm4gIHZvaWQgICBnbE5vcm1hbDNiKCBHTGJ5dGUgbngsIEdMYnl0
ZSBueSwgR0xieXRlIG56ICk7CmV4dGVybiAgdm9pZCAgIGdsTm9ybWFsM2QoIEdMZG91YmxlIG54
LCBHTGRvdWJsZSBueSwgR0xkb3VibGUgbnogKTsKZXh0ZXJuICB2b2lkICAgZ2xOb3JtYWwzZigg
R0xmbG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiApOwpleHRlcm4gIHZvaWQgICBnbE5v
cm1hbDNpKCBHTGludCBueCwgR0xpbnQgbnksIEdMaW50IG56ICk7CmV4dGVybiAgdm9pZCAgIGds
Tm9ybWFsM3MoIEdMc2hvcnQgbngsIEdMc2hvcnQgbnksIEdMc2hvcnQgbnogKTsKCmV4dGVybiAg
dm9pZCAgIGdsTm9ybWFsM2J2KCBjb25zdCBHTGJ5dGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xO
b3JtYWwzZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsTm9ybWFsM2Z2
KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsTm9ybWFsM2l2KCBjb25zdCBH
TGludCAqdiApOwpleHRlcm4gIHZvaWQgICBnbE5vcm1hbDNzdiggY29uc3QgR0xzaG9ydCAqdiAp
OwoKCmV4dGVybiAgdm9pZCAgIGdsSW5kZXhkKCBHTGRvdWJsZSBjICk7CmV4dGVybiAgdm9pZCAg
IGdsSW5kZXhmKCBHTGZsb2F0IGMgKTsKZXh0ZXJuICB2b2lkICAgZ2xJbmRleGkoIEdMaW50IGMg
KTsKZXh0ZXJuICB2b2lkICAgZ2xJbmRleHMoIEdMc2hvcnQgYyApOwpleHRlcm4gIHZvaWQgICBn
bEluZGV4dWIoIEdMdWJ5dGUgYyApOyAgIAoKZXh0ZXJuICB2b2lkICAgZ2xJbmRleGR2KCBjb25z
dCBHTGRvdWJsZSAqYyApOwpleHRlcm4gIHZvaWQgICBnbEluZGV4ZnYoIGNvbnN0IEdMZmxvYXQg
KmMgKTsKZXh0ZXJuICB2b2lkICAgZ2xJbmRleGl2KCBjb25zdCBHTGludCAqYyApOwpleHRlcm4g
IHZvaWQgICBnbEluZGV4c3YoIGNvbnN0IEdMc2hvcnQgKmMgKTsKZXh0ZXJuICB2b2lkICAgZ2xJ
bmRleHVidiggY29uc3QgR0x1Ynl0ZSAqYyApOyAgIAoKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjNi
KCBHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlICk7CmV4dGVybiAgdm9pZCAg
IGdsQ29sb3IzZCggR0xkb3VibGUgcmVkLCBHTGRvdWJsZSBncmVlbiwgR0xkb3VibGUgYmx1ZSAp
OwpleHRlcm4gIHZvaWQgICBnbENvbG9yM2YoIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBH
TGZsb2F0IGJsdWUgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjNpKCBHTGludCByZWQsIEdMaW50
IGdyZWVuLCBHTGludCBibHVlICk7CmV4dGVybiAgdm9pZCAgIGdsQ29sb3IzcyggR0xzaG9ydCBy
ZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSApOwpleHRlcm4gIHZvaWQgICBnbENvbG9y
M3ViKCBHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVlICk7CmV4dGVybiAg
dm9pZCAgIGdsQ29sb3IzdWkoIEdMdWludCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50IGJsdWUg
KTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjN1cyggR0x1c2hvcnQgcmVkLCBHTHVzaG9ydCBncmVl
biwgR0x1c2hvcnQgYmx1ZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjRiKCBHTGJ5dGUgcmVk
LCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlLCBHTGJ5dGUgYWxwaGEgKTsKZXh0ZXJuICB2b2lk
ICAgZ2xDb2xvcjRkKCBHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVuLAoJCSAgICAgICBHTGRv
dWJsZSBibHVlLCBHTGRvdWJsZSBhbHBoYSApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yNGYoIEdM
ZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLAoJCSAgICAgICBHTGZsb2F0IGJsdWUsIEdMZmxvYXQg
YWxwaGEgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjRpKCBHTGludCByZWQsIEdMaW50IGdyZWVu
LCBHTGludCBibHVlLCBHTGludCBhbHBoYSApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yNHMoIEdM
c2hvcnQgcmVkLCBHTHNob3J0IGdyZWVuLAoJCSAgICAgICBHTHNob3J0IGJsdWUsIEdMc2hvcnQg
YWxwaGEgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjR1YiggR0x1Ynl0ZSByZWQsIEdMdWJ5dGUg
Z3JlZW4sCgkJCUdMdWJ5dGUgYmx1ZSwgR0x1Ynl0ZSBhbHBoYSApOwpleHRlcm4gIHZvaWQgICBn
bENvbG9yNHVpKCBHTHVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWludCBibHVlLCBHTHVpbnQg
YWxwaGEgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjR1cyggR0x1c2hvcnQgcmVkLCBHTHVzaG9y
dCBncmVlbiwKCQkJR0x1c2hvcnQgYmx1ZSwgR0x1c2hvcnQgYWxwaGEgKTsKCgpleHRlcm4gIHZv
aWQgICBnbENvbG9yM2J2KCBjb25zdCBHTGJ5dGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xv
cjNkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjNmdiggY29u
c3QgR0xmbG9hdCAqdiApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yM2l2KCBjb25zdCBHTGludCAq
diApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yM3N2KCBjb25zdCBHTHNob3J0ICp2ICk7CmV4dGVy
biAgdm9pZCAgIGdsQ29sb3IzdWJ2KCBjb25zdCBHTHVieXRlICp2ICk7CmV4dGVybiAgdm9pZCAg
IGdsQ29sb3IzdWl2KCBjb25zdCBHTHVpbnQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjN1
c3YoIGNvbnN0IEdMdXNob3J0ICp2ICk7CgpleHRlcm4gIHZvaWQgICBnbENvbG9yNGJ2KCBjb25z
dCBHTGJ5dGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjRkdiggY29uc3QgR0xkb3VibGUg
KnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjRmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRl
cm4gIHZvaWQgICBnbENvbG9yNGl2KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4gIHZvaWQgICBn
bENvbG9yNHN2KCBjb25zdCBHTHNob3J0ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsQ29sb3I0dWJ2
KCBjb25zdCBHTHVieXRlICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsQ29sb3I0dWl2KCBjb25zdCBH
THVpbnQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjR1c3YoIGNvbnN0IEdMdXNob3J0ICp2
ICk7CgoKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDFkKCBHTGRvdWJsZSBzICk7CmV4dGVybiAg
dm9pZCAgIGdsVGV4Q29vcmQxZiggR0xmbG9hdCBzICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29v
cmQxaSggR0xpbnQgcyApOwpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkMXMoIEdMc2hvcnQgcyAp
OwoKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDJkKCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0ICk7
CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQyZiggR0xmbG9hdCBzLCBHTGZsb2F0IHQgKTsKZXh0
ZXJuICB2b2lkICAgZ2xUZXhDb29yZDJpKCBHTGludCBzLCBHTGludCB0ICk7CmV4dGVybiAgdm9p
ZCAgIGdsVGV4Q29vcmQycyggR0xzaG9ydCBzLCBHTHNob3J0IHQgKTsKCmV4dGVybiAgdm9pZCAg
IGdsVGV4Q29vcmQzZCggR0xkb3VibGUgcywgR0xkb3VibGUgdCwgR0xkb3VibGUgciApOwpleHRl
cm4gIHZvaWQgICBnbFRleENvb3JkM2YoIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIg
KTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDNpKCBHTGludCBzLCBHTGludCB0LCBHTGludCBy
ICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQzcyggR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdM
c2hvcnQgciApOwoKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDRkKCBHTGRvdWJsZSBzLCBHTGRv
dWJsZSB0LCBHTGRvdWJsZSByLCBHTGRvdWJsZSBxICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29v
cmQ0ZiggR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgciwgR0xmbG9hdCBxICk7CmV4dGVy
biAgdm9pZCAgIGdsVGV4Q29vcmQ0aSggR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgciwgR0xpbnQg
cSApOwpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkNHMoIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBH
THNob3J0IHIsIEdMc2hvcnQgcSApOwoKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDFkdiggY29u
c3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDFmdiggY29uc3QgR0xm
bG9hdCAqdiApOwpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkMWl2KCBjb25zdCBHTGludCAqdiAp
OwpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkMXN2KCBjb25zdCBHTHNob3J0ICp2ICk7CgpleHRl
cm4gIHZvaWQgICBnbFRleENvb3JkMmR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gIHZv
aWQgICBnbFRleENvb3JkMmZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiAgdm9pZCAgIGds
VGV4Q29vcmQyaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQy
c3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQzZHYoIGNv
bnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQzZnYoIGNvbnN0IEdM
ZmxvYXQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDNpdiggY29uc3QgR0xpbnQgKnYg
KTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDNzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0
ZXJuICB2b2lkICAgZ2xUZXhDb29yZDRkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuICB2
b2lkICAgZ2xUZXhDb29yZDRmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gIHZvaWQgICBn
bFRleENvb3JkNGl2KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4gIHZvaWQgICBnbFRleENvb3Jk
NHN2KCBjb25zdCBHTHNob3J0ICp2ICk7CgoKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3MyZCgg
R0xkb3VibGUgeCwgR0xkb3VibGUgeSApOwpleHRlcm4gIHZvaWQgICBnbFJhc3RlclBvczJmKCBH
TGZsb2F0IHgsIEdMZmxvYXQgeSApOwpleHRlcm4gIHZvaWQgICBnbFJhc3RlclBvczJpKCBHTGlu
dCB4LCBHTGludCB5ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zMnMoIEdMc2hvcnQgeCwg
R0xzaG9ydCB5ICk7CgpleHRlcm4gIHZvaWQgICBnbFJhc3RlclBvczNkKCBHTGRvdWJsZSB4LCBH
TGRvdWJsZSB5LCBHTGRvdWJsZSB6ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zM2YoIEdM
ZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQ
b3MzaSggR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiApOwpleHRlcm4gIHZvaWQgICBnbFJhc3Rl
clBvczNzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6ICk7CgpleHRlcm4gIHZvaWQg
ICBnbFJhc3RlclBvczRkKCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRv
dWJsZSB3ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zNGYoIEdMZmxvYXQgeCwgR0xmbG9h
dCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyApOwpleHRlcm4gIHZvaWQgICBnbFJhc3RlclBvczRp
KCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3ICk7CmV4dGVybiAgdm9pZCAgIGds
UmFzdGVyUG9zNHMoIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHosIEdMc2hvcnQgdyAp
OwoKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3MyZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4
dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zMmZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiAg
dm9pZCAgIGdsUmFzdGVyUG9zMml2KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4gIHZvaWQgICBn
bFJhc3RlclBvczJzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuICB2b2lkICAgZ2xSYXN0
ZXJQb3MzZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9z
M2Z2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zM2l2KCBj
b25zdCBHTGludCAqdiApOwpleHRlcm4gIHZvaWQgICBnbFJhc3RlclBvczNzdiggY29uc3QgR0xz
aG9ydCAqdiApOwoKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3M0ZHYoIGNvbnN0IEdMZG91Ymxl
ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zNGZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7
CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zNGl2KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4g
IHZvaWQgICBnbFJhc3RlclBvczRzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKCmV4dGVybiAgdm9p
ZCAgIGdsUmVjdGQoIEdMZG91YmxlIHgxLCBHTGRvdWJsZSB5MSwgR0xkb3VibGUgeDIsIEdMZG91
YmxlIHkyICk7CmV4dGVybiAgdm9pZCAgIGdsUmVjdGYoIEdMZmxvYXQgeDEsIEdMZmxvYXQgeTEs
IEdMZmxvYXQgeDIsIEdMZmxvYXQgeTIgKTsKZXh0ZXJuICB2b2lkICAgZ2xSZWN0aSggR0xpbnQg
eDEsIEdMaW50IHkxLCBHTGludCB4MiwgR0xpbnQgeTIgKTsKZXh0ZXJuICB2b2lkICAgZ2xSZWN0
cyggR0xzaG9ydCB4MSwgR0xzaG9ydCB5MSwgR0xzaG9ydCB4MiwgR0xzaG9ydCB5MiApOwoKCmV4
dGVybiAgdm9pZCAgIGdsUmVjdGR2KCBjb25zdCBHTGRvdWJsZSAqdjEsIGNvbnN0IEdMZG91Ymxl
ICp2MiApOwpleHRlcm4gIHZvaWQgICBnbFJlY3RmdiggY29uc3QgR0xmbG9hdCAqdjEsIGNvbnN0
IEdMZmxvYXQgKnYyICk7CmV4dGVybiAgdm9pZCAgIGdsUmVjdGl2KCBjb25zdCBHTGludCAqdjEs
IGNvbnN0IEdMaW50ICp2MiApOwpleHRlcm4gIHZvaWQgICBnbFJlY3RzdiggY29uc3QgR0xzaG9y
dCAqdjEsIGNvbnN0IEdMc2hvcnQgKnYyICk7CgoKCiAKCgoKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0
ZXhQb2ludGVyKCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiAgdm9p
ZCAgIGdsTm9ybWFsUG9pbnRlciggR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcHRyICk7CgpleHRlcm4gIHZvaWQg
ICBnbENvbG9yUG9pbnRlciggR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVy
biAgdm9pZCAgIGdsSW5kZXhQb2ludGVyKCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNv
bnN0IEdMdm9pZCAqcHRyICk7CgpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkUG9pbnRlciggR0xp
bnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiAgdm9pZCAgIGdsRWRnZUZs
YWdQb2ludGVyKCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0xib29sZWFuICpwdHIgKTsKCmV4dGVy
biAgdm9pZCAgIGdsR2V0UG9pbnRlcnYoIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcyApOwoK
ZXh0ZXJuICB2b2lkICAgZ2xBcnJheUVsZW1lbnQoIEdMaW50IGkgKTsKCmV4dGVybiAgdm9pZCAg
IGdsRHJhd0FycmF5cyggR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50ICk7
CgpleHRlcm4gIHZvaWQgICBnbERyYXdFbGVtZW50cyggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk
ICppbmRpY2VzICk7CgpleHRlcm4gIHZvaWQgICBnbEludGVybGVhdmVkQXJyYXlzKCBHTGVudW0g
Zm9ybWF0LCBHTHNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x2b2lkICpwb2ludGVyICk7CgoKIAoKCgpleHRlcm4gIHZvaWQgICBnbFNoYWRlTW9k
ZWwoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gIHZvaWQgICBnbExpZ2h0ZiggR0xlbnVtIGxpZ2h0
LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xMaWdodGko
IEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwpleHRlcm4gIHZvaWQg
ICBnbExpZ2h0ZnYoIEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpw
YXJhbXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xMaWdodGl2KCBHTGVudW0gbGlnaHQsIEdMZW51bSBw
bmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRMaWdodGZ2
KCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiAg
dm9pZCAgIGdsR2V0TGlnaHRpdiggR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpw
YXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsTGlnaHRNb2RlbGYoIEdMZW51bSBwbmFtZSwgR0xm
bG9hdCBwYXJhbSApOwpleHRlcm4gIHZvaWQgICBnbExpZ2h0TW9kZWxpKCBHTGVudW0gcG5hbWUs
IEdMaW50IHBhcmFtICk7CmV4dGVybiAgdm9pZCAgIGdsTGlnaHRNb2RlbGZ2KCBHTGVudW0gcG5h
bWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gIHZvaWQgICBnbExpZ2h0TW9kZWxp
diggR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBn
bE1hdGVyaWFsZiggR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSApOwpl
eHRlcm4gIHZvaWQgICBnbE1hdGVyaWFsaSggR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xp
bnQgcGFyYW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xNYXRlcmlhbGZ2KCBHTGVudW0gZmFjZSwgR0xl
bnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xNYXRl
cmlhbGl2KCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zICk7
CgpleHRlcm4gIHZvaWQgICBnbEdldE1hdGVyaWFsZnYoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gIHZvaWQgICBnbEdldE1hdGVyaWFsaXYoIEdM
ZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAg
IGdsQ29sb3JNYXRlcmlhbCggR0xlbnVtIGZhY2UsIEdMZW51bSBtb2RlICk7CgoKCgogCgoKCmV4
dGVybiAgdm9pZCAgIGdsUGl4ZWxab29tKCBHTGZsb2F0IHhmYWN0b3IsIEdMZmxvYXQgeWZhY3Rv
ciApOwoKZXh0ZXJuICB2b2lkICAgZ2xQaXhlbFN0b3JlZiggR0xlbnVtIHBuYW1lLCBHTGZsb2F0
IHBhcmFtICk7CmV4dGVybiAgdm9pZCAgIGdsUGl4ZWxTdG9yZWkoIEdMZW51bSBwbmFtZSwgR0xp
bnQgcGFyYW0gKTsKCmV4dGVybiAgdm9pZCAgIGdsUGl4ZWxUcmFuc2ZlcmYoIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCBwYXJhbSApOwpleHRlcm4gIHZvaWQgICBnbFBpeGVsVHJhbnNmZXJpKCBHTGVu
dW0gcG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gIHZvaWQgICBnbFBpeGVsTWFwZnYoIEdM
ZW51bSBtYXAsIEdMaW50IG1hcHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWVzICk7CmV4dGVybiAgdm9pZCAgIGdsUGl4ZWxNYXB1
aXYoIEdMZW51bSBtYXAsIEdMaW50IG1hcHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWVzICk7CmV4dGVybiAgdm9pZCAgIGdsUGl4
ZWxNYXB1c3YoIEdMZW51bSBtYXAsIEdMaW50IG1hcHNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdXNob3J0ICp2YWx1ZXMgKTsKCmV4dGVybiAgdm9p
ZCAgIGdsR2V0UGl4ZWxNYXBmdiggR0xlbnVtIG1hcCwgR0xmbG9hdCAqdmFsdWVzICk7CmV4dGVy
biAgdm9pZCAgIGdsR2V0UGl4ZWxNYXB1aXYoIEdMZW51bSBtYXAsIEdMdWludCAqdmFsdWVzICk7
CmV4dGVybiAgdm9pZCAgIGdsR2V0UGl4ZWxNYXB1c3YoIEdMZW51bSBtYXAsIEdMdXNob3J0ICp2
YWx1ZXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsQml0bWFwKCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeG9yaWcs
IEdMZmxvYXQgeW9yaWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IHhtb3ZlLCBHTGZsb2F0IHltb3ZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1Ynl0ZSAqYml0bWFwICk7CgpleHRlcm4gIHZvaWQgICBnbFJlYWRQaXhlbHMoIEdM
aW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMgKTsKCmV4dGVybiAgdm9pZCAgIGdsRHJh
d1BpeGVscyggR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMgKTsKCmV4
dGVybiAgdm9pZCAgIGdsQ29weVBpeGVscyggR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSApOwoKCgog
CgoKCmV4dGVybiAgdm9pZCAgIGdsU3RlbmNpbEZ1bmMoIEdMZW51bSBmdW5jLCBHTGludCByZWYs
IEdMdWludCBtYXNrICk7CgpleHRlcm4gIHZvaWQgICBnbFN0ZW5jaWxNYXNrKCBHTHVpbnQgbWFz
ayApOwoKZXh0ZXJuICB2b2lkICAgZ2xTdGVuY2lsT3AoIEdMZW51bSBmYWlsLCBHTGVudW0gemZh
aWwsIEdMZW51bSB6cGFzcyApOwoKZXh0ZXJuICB2b2lkICAgZ2xDbGVhclN0ZW5jaWwoIEdMaW50
IHMgKTsKCgoKIAoKCgpleHRlcm4gIHZvaWQgICBnbFRleEdlbmQoIEdMZW51bSBjb29yZCwgR0xl
bnVtIHBuYW1lLCBHTGRvdWJsZSBwYXJhbSApOwpleHRlcm4gIHZvaWQgICBnbFRleEdlbmYoIEdM
ZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CmV4dGVybiAgdm9pZCAg
IGdsVGV4R2VuaSggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtICk7Cgpl
eHRlcm4gIHZvaWQgICBnbFRleEdlbmR2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29u
c3QgR0xkb3VibGUgKnBhcmFtcyApOwpleHRlcm4gIHZvaWQgICBnbFRleEdlbmZ2KCBHTGVudW0g
Y29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiAgdm9p
ZCAgIGdsVGV4R2VuaXYoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAq
cGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbEdldFRleEdlbmR2KCBHTGVudW0gY29vcmQsIEdM
ZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcyApOwpleHRlcm4gIHZvaWQgICBnbEdldFRleEdl
bmZ2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVy
biAgdm9pZCAgIGdsR2V0VGV4R2VuaXYoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zICk7CgoKZXh0ZXJuICB2b2lkICAgZ2xUZXhFbnZmKCBHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhFbnZpKCBH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gIHZvaWQg
ICBnbFRleEVudmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQg
KnBhcmFtcyApOwpleHRlcm4gIHZvaWQgICBnbFRleEVudml2KCBHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0VGV4
RW52ZnYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zICk7CmV4
dGVybiAgdm9pZCAgIGdsR2V0VGV4RW52aXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcyApOwoKCmV4dGVybiAgdm9pZCAgIGdsVGV4UGFyYW1ldGVyZiggR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CmV4dGVybiAgdm9pZCAgIGds
VGV4UGFyYW1ldGVyaSggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSAp
OwoKZXh0ZXJuICB2b2lkICAgZ2xUZXhQYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVt
IHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhQYXJhbWV0ZXJpdiggR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbEdldFRleFBh
cmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CmV4dGVybiAgdm9p
ZCAgIGdsR2V0VGV4UGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyAp
OwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gIHZvaWQgICBn
bEdldFRleExldmVsUGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKnBhcmFtcyApOwoKCmV4dGVybiAgdm9pZCAgIGdsVGV4SW1hZ2UxRCggR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCwgR0xpbnQgYm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzICk7CgpleHRlcm4g
IHZvaWQgICBnbFRleEltYWdlMkQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRl
ciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0
VGV4SW1hZ2UoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMgKTsKCgoKIAoKZXh0
ZXJuICB2b2lkICAgZ2xHZW5UZXh0dXJlcyggR0xzaXplaSBuLCBHTHVpbnQgKnRleHR1cmVzICk7
CgpleHRlcm4gIHZvaWQgICBnbERlbGV0ZVRleHR1cmVzKCBHTHNpemVpIG4sIGNvbnN0IEdMdWlu
dCAqdGV4dHVyZXMpOwoKZXh0ZXJuICB2b2lkICAgZ2xCaW5kVGV4dHVyZSggR0xlbnVtIHRhcmdl
dCwgR0x1aW50IHRleHR1cmUgKTsKCmV4dGVybiAgdm9pZCAgIGdsUHJpb3JpdGl6ZVRleHR1cmVz
KCBHTHNpemVpIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHVpbnQgKnRleHR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xjbGFtcGYgKnByaW9yaXRpZXMgKTsKCmV4dGVybiAgR0xi
b29sZWFuICAgZ2xBcmVUZXh0dXJlc1Jlc2lkZW50KCBHTHNpemVpIG4sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1
cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuICpyZXNpZGVuY2VzICk7CgpleHRlcm4gIEdMYm9vbGVhbiAgIGdsSXNUZXh0dXJl
KCBHTHVpbnQgdGV4dHVyZSApOwoKCmV4dGVybiAgdm9pZCAgIGdsVGV4U3ViSW1hZ2UxRCggR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVscyAp
OwoKCmV4dGVybiAgdm9pZCAgIGdsVGV4U3ViSW1hZ2UyRCggR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoK
CmV4dGVybiAgdm9pZCAgIGdsQ29weVRleEltYWdlMUQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJvcmRlciApOwoKCmV4dGVybiAgdm9pZCAgIGdsQ29weVRl
eEltYWdlMkQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBi
b3JkZXIgKTsKCgpleHRlcm4gIHZvaWQgICBnbENvcHlUZXhTdWJJbWFnZTFEKCBHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCApOwoKCmV4dGVybiAgdm9p
ZCAgIGdsQ29weVRleFN1YkltYWdlMkQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCApOwoKCgoKIAoKCgpleHRlcm4g
IHZvaWQgICBnbE1hcDFkKCBHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSB1MSwgR0xkb3VibGUgdTIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0cmlkZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgb3JkZXIsIGNvbnN0IEdMZG91YmxlICpwb2lu
dHMgKTsKZXh0ZXJuICB2b2lkICAgZ2xNYXAxZiggR0xlbnVtIHRhcmdldCwgR0xmbG9hdCB1MSwg
R0xmbG9hdCB1MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RyaWRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBvcmRlciwgY29uc3QgR0xm
bG9hdCAqcG9pbnRzICk7CgpleHRlcm4gIHZvaWQgICBnbE1hcDJkKCBHTGVudW0gdGFyZ2V0LAoJ
CSAgICAgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLCBHTGludCB1c3RyaWRlLCBHTGludCB1b3Jk
ZXIsCgkJICAgICBHTGRvdWJsZSB2MSwgR0xkb3VibGUgdjIsIEdMaW50IHZzdHJpZGUsIEdMaW50
IHZvcmRlciwKCQkgICAgIGNvbnN0IEdMZG91YmxlICpwb2ludHMgKTsKZXh0ZXJuICB2b2lkICAg
Z2xNYXAyZiggR0xlbnVtIHRhcmdldCwKCQkgICAgIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIsIEdM
aW50IHVzdHJpZGUsIEdMaW50IHVvcmRlciwKCQkgICAgIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIs
IEdMaW50IHZzdHJpZGUsIEdMaW50IHZvcmRlciwKCQkgICAgIGNvbnN0IEdMZmxvYXQgKnBvaW50
cyApOwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRNYXBkdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1
ZXJ5LCBHTGRvdWJsZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbEdldE1hcGZ2KCBHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcXVlcnksIEdMZmxvYXQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xHZXRNYXBp
diggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTGludCAqdiApOwoKZXh0ZXJuICB2b2lk
ICAgZ2xFdmFsQ29vcmQxZCggR0xkb3VibGUgdSApOwpleHRlcm4gIHZvaWQgICBnbEV2YWxDb29y
ZDFmKCBHTGZsb2F0IHUgKTsKCmV4dGVybiAgdm9pZCAgIGdsRXZhbENvb3JkMWR2KCBjb25zdCBH
TGRvdWJsZSAqdSApOwpleHRlcm4gIHZvaWQgICBnbEV2YWxDb29yZDFmdiggY29uc3QgR0xmbG9h
dCAqdSApOwoKZXh0ZXJuICB2b2lkICAgZ2xFdmFsQ29vcmQyZCggR0xkb3VibGUgdSwgR0xkb3Vi
bGUgdiApOwpleHRlcm4gIHZvaWQgICBnbEV2YWxDb29yZDJmKCBHTGZsb2F0IHUsIEdMZmxvYXQg
diApOwoKZXh0ZXJuICB2b2lkICAgZ2xFdmFsQ29vcmQyZHYoIGNvbnN0IEdMZG91YmxlICp1ICk7
CmV4dGVybiAgdm9pZCAgIGdsRXZhbENvb3JkMmZ2KCBjb25zdCBHTGZsb2F0ICp1ICk7CgpleHRl
cm4gIHZvaWQgICBnbE1hcEdyaWQxZCggR0xpbnQgdW4sIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1
MiApOwpleHRlcm4gIHZvaWQgICBnbE1hcEdyaWQxZiggR0xpbnQgdW4sIEdMZmxvYXQgdTEsIEdM
ZmxvYXQgdTIgKTsKCmV4dGVybiAgdm9pZCAgIGdsTWFwR3JpZDJkKCBHTGludCB1biwgR0xkb3Vi
bGUgdTEsIEdMZG91YmxlIHUyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgdm4sIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2MiApOwpleHRlcm4gIHZvaWQgICBnbE1h
cEdyaWQyZiggR0xpbnQgdW4sIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2biwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiAp
OwoKZXh0ZXJuICB2b2lkICAgZ2xFdmFsUG9pbnQxKCBHTGludCBpICk7CgpleHRlcm4gIHZvaWQg
ICBnbEV2YWxQb2ludDIoIEdMaW50IGksIEdMaW50IGogKTsKCmV4dGVybiAgdm9pZCAgIGdsRXZh
bE1lc2gxKCBHTGVudW0gbW9kZSwgR0xpbnQgaTEsIEdMaW50IGkyICk7CgpleHRlcm4gIHZvaWQg
ICBnbEV2YWxNZXNoMiggR0xlbnVtIG1vZGUsIEdMaW50IGkxLCBHTGludCBpMiwgR0xpbnQgajEs
IEdMaW50IGoyICk7CgoKCiAKCgoKZXh0ZXJuICB2b2lkICAgZ2xGb2dmKCBHTGVudW0gcG5hbWUs
IEdMZmxvYXQgcGFyYW0gKTsKCmV4dGVybiAgdm9pZCAgIGdsRm9naSggR0xlbnVtIHBuYW1lLCBH
TGludCBwYXJhbSApOwoKZXh0ZXJuICB2b2lkICAgZ2xGb2dmdiggR0xlbnVtIHBuYW1lLCBjb25z
dCBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsRm9naXYoIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKCgogCgoKCmV4dGVybiAgdm9pZCAgIGdsRmVlZGJh
Y2tCdWZmZXIoIEdMc2l6ZWkgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMZmxvYXQgKmJ1ZmZlciApOwoK
ZXh0ZXJuICB2b2lkICAgZ2xQYXNzVGhyb3VnaCggR0xmbG9hdCB0b2tlbiApOwoKZXh0ZXJuICB2
b2lkICAgZ2xTZWxlY3RCdWZmZXIoIEdMc2l6ZWkgc2l6ZSwgR0x1aW50ICpidWZmZXIgKTsKCmV4
dGVybiAgdm9pZCAgIGdsSW5pdE5hbWVzKCB2b2lkICk7CgpleHRlcm4gIHZvaWQgICBnbExvYWRO
YW1lKCBHTHVpbnQgbmFtZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xQdXNoTmFtZSggR0x1aW50IG5h
bWUgKTsKCmV4dGVybiAgdm9pZCAgIGdsUG9wTmFtZSggdm9pZCApOwoKCgogCgoKCiAKZXh0ZXJu
ICB2b2lkICAgZ2xCbGVuZEVxdWF0aW9uRVhUKCBHTGVudW0gbW9kZSApOwoKCgogCmV4dGVybiAg
dm9pZCAgIGdsQmxlbmRDb2xvckVYVCggR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNsYW1wZiBibHVlLCBHTGNs
YW1wZiBhbHBoYSApOwoKCgogCmV4dGVybiAgdm9pZCAgIGdsUG9seWdvbk9mZnNldEVYVCggR0xm
bG9hdCBmYWN0b3IsIEdMZmxvYXQgYmlhcyApOwoKCgogCgpleHRlcm4gIHZvaWQgICBnbFZlcnRl
eFBvaW50ZXJFWFQoIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdm9pZCAq
cHRyICk7CgpleHRlcm4gIHZvaWQgICBnbE5vcm1hbFBvaW50ZXJFWFQoIEdMZW51bSB0eXBlLCBH
THNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQgKnB0ciApOwoKZXh0ZXJuICB2b2lkICAgZ2xD
b2xvclBvaW50ZXJFWFQoIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQg
KnB0ciApOwoKZXh0ZXJuICB2b2lkICAgZ2xJbmRleFBvaW50ZXJFWFQoIEdMZW51bSB0eXBlLCBH
THNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdm9pZCAqcHRyICk7CgpleHRlcm4gIHZvaWQgICBnbFRl
eENvb3JkUG9pbnRlckVYVCggR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdm9pZCAqcHRyICk7CgpleHRlcm4gIHZvaWQgICBnbEVkZ2VGbGFnUG9pbnRlckVYVCggR0xz
aXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGJvb2xlYW4gKnB0ciApOwoKZXh0ZXJuICB2b2lkICAg
Z2xHZXRQb2ludGVydkVYVCggR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zICk7CgpleHRlcm4g
IHZvaWQgICBnbEFycmF5RWxlbWVudEVYVCggR0xpbnQgaSApOwoKZXh0ZXJuICB2b2lkICAgZ2xE
cmF3QXJyYXlzRVhUKCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCApOwoKCgogCgpleHRlcm4gIHZv
aWQgICBnbEdlblRleHR1cmVzRVhUKCBHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMgKTsKCmV4
dGVybiAgdm9pZCAgIGdsRGVsZXRlVGV4dHVyZXNFWFQoIEdMc2l6ZWkgbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp0ZXh0dXJlcyk7
CgpleHRlcm4gIHZvaWQgICBnbEJpbmRUZXh0dXJlRVhUKCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
dGV4dHVyZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xQcmlvcml0aXplVGV4dHVyZXNFWFQoIEdMc2l6
ZWkgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdWludCAqdGV4dHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGNsYW1wZiAqcHJpb3JpdGllcyApOwoKZXh0ZXJuICBHTGJv
b2xlYW4gICBnbEFyZVRleHR1cmVzUmVzaWRlbnRFWFQoIEdMc2l6ZWkgbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAq
dGV4dHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gKnJlc2lkZW5jZXMgKTsKCmV4dGVybiAgR0xib29sZWFuICAgZ2xJ
c1RleHR1cmVFWFQoIEdMdWludCB0ZXh0dXJlICk7CgoKCiAKCmV4dGVybiAgdm9pZCAgIGdsVGV4
SW1hZ2UzREVYVCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVw
dGgsIEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMgKTsKIApleHRlcm4gIHZvaWQgICBn
bFRleFN1YkltYWdlM0RFWFQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
em9mZnNldCwgR0xzaXplaSB3aWR0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk
ICpwaXhlbHMpOwoKZXh0ZXJuICB2b2lkICAgZ2xDb3B5VGV4U3ViSW1hZ2UzREVYVCggR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHpvZmZzZXQsIEdMaW50IHgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHks
IEdMc2l6ZWkgd2lkdGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGhlaWdodCApOwoKCgogCgpleHRlcm4gIHZvaWQgICBnbENvbG9yVGFi
bGVFWFQoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLCBj
b25zdCBHTHZvaWQgKnRhYmxlICk7CgpleHRlcm4gIHZvaWQgICBnbENvbG9yU3ViVGFibGVFWFQo
IEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBzdGFydCwgR0xzaXplaSBjb3VudCwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhICk7
CgpleHRlcm4gIHZvaWQgICBnbEdldENvbG9yVGFibGVFWFQoIEdMZW51bSB0YXJnZXQsIEdMZW51
bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsIEdMdm9pZCAqdGFibGUgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0Q29sb3JUYWJs
ZVBhcmFtZXRlcmZ2RVhUKCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1z
ICk7CgpleHRlcm4gIHZvaWQgICBnbEdldENvbG9yVGFibGVQYXJhbWV0ZXJpdkVYVCggR0xlbnVt
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMgKTsKCgoKIApleHRlcm4gIHZvaWQgICBn
bFBvaW50UGFyYW1ldGVyZkVYVCggR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CmV4dGVy
biAgdm9pZCAgIGdsUG9pbnRQYXJhbWV0ZXJmdkVYVCggR0xlbnVtIHBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFt
cyApOwoKCgogCgpleHRlcm4gIHZvaWQgICBnbFdpbmRvd1BvczJpTUVTQSggR0xpbnQgeCwgR0xp
bnQgeSApOwpleHRlcm4gIHZvaWQgICBnbFdpbmRvd1BvczJzTUVTQSggR0xzaG9ydCB4LCBHTHNo
b3J0IHkgKTsKZXh0ZXJuICB2b2lkICAgZ2xXaW5kb3dQb3MyZk1FU0EoIEdMZmxvYXQgeCwgR0xm
bG9hdCB5ICk7CmV4dGVybiAgdm9pZCAgIGdsV2luZG93UG9zMmRNRVNBKCBHTGRvdWJsZSB4LCBH
TGRvdWJsZSB5ICk7CgpleHRlcm4gIHZvaWQgICBnbFdpbmRvd1BvczJpdk1FU0EoIGNvbnN0IEdM
aW50ICpwICk7CmV4dGVybiAgdm9pZCAgIGdsV2luZG93UG9zMnN2TUVTQSggY29uc3QgR0xzaG9y
dCAqcCApOwpleHRlcm4gIHZvaWQgICBnbFdpbmRvd1BvczJmdk1FU0EoIGNvbnN0IEdMZmxvYXQg
KnAgKTsKZXh0ZXJuICB2b2lkICAgZ2xXaW5kb3dQb3MyZHZNRVNBKCBjb25zdCBHTGRvdWJsZSAq
cCApOwoKZXh0ZXJuICB2b2lkICAgZ2xXaW5kb3dQb3MzaU1FU0EoIEdMaW50IHgsIEdMaW50IHks
IEdMaW50IHogKTsKZXh0ZXJuICB2b2lkICAgZ2xXaW5kb3dQb3Mzc01FU0EoIEdMc2hvcnQgeCwg
R0xzaG9ydCB5LCBHTHNob3J0IHogKTsKZXh0ZXJuICB2b2lkICAgZ2xXaW5kb3dQb3MzZk1FU0Eo
IEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKZXh0ZXJuICB2b2lkICAgZ2xXaW5k
b3dQb3MzZE1FU0EoIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHogKTsKCmV4dGVy
biAgdm9pZCAgIGdsV2luZG93UG9zM2l2TUVTQSggY29uc3QgR0xpbnQgKnAgKTsKZXh0ZXJuICB2
b2lkICAgZ2xXaW5kb3dQb3Mzc3ZNRVNBKCBjb25zdCBHTHNob3J0ICpwICk7CmV4dGVybiAgdm9p
ZCAgIGdsV2luZG93UG9zM2Z2TUVTQSggY29uc3QgR0xmbG9hdCAqcCApOwpleHRlcm4gIHZvaWQg
ICBnbFdpbmRvd1BvczNkdk1FU0EoIGNvbnN0IEdMZG91YmxlICpwICk7CgpleHRlcm4gIHZvaWQg
ICBnbFdpbmRvd1BvczRpTUVTQSggR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyAp
OwpleHRlcm4gIHZvaWQgICBnbFdpbmRvd1BvczRzTUVTQSggR0xzaG9ydCB4LCBHTHNob3J0IHks
IEdMc2hvcnQgeiwgR0xzaG9ydCB3ICk7CmV4dGVybiAgdm9pZCAgIGdsV2luZG93UG9zNGZNRVNB
KCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcgKTsKZXh0ZXJuICB2
b2lkICAgZ2xXaW5kb3dQb3M0ZE1FU0EoIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91Ymxl
IHosIEdMZG91YmxlIHcpOwoKZXh0ZXJuICB2b2lkICAgZ2xXaW5kb3dQb3M0aXZNRVNBKCBjb25z
dCBHTGludCAqcCApOwpleHRlcm4gIHZvaWQgICBnbFdpbmRvd1BvczRzdk1FU0EoIGNvbnN0IEdM
c2hvcnQgKnAgKTsKZXh0ZXJuICB2b2lkICAgZ2xXaW5kb3dQb3M0ZnZNRVNBKCBjb25zdCBHTGZs
b2F0ICpwICk7CmV4dGVybiAgdm9pZCAgIGdsV2luZG93UG9zNGR2TUVTQSggY29uc3QgR0xkb3Vi
bGUgKnAgKTsKCgogCgpleHRlcm4gIHZvaWQgICBnbFJlc2l6ZUJ1ZmZlcnNNRVNBKCk7CgoKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKfQoKCgojIDIzICJoL25yaHlfY2xhc3NV
c2VNYXAuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvR0wvZ2x1LmgiIDEgMwogCgogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4
dGVybiAiQyIgewoKCgoKCgoKCgoKCgoKCgoKCgoKCgplbnVtIHsKCSAKCUdMVV9TTU9PVEgJPSAx
MDAwMDAsCglHTFVfRkxBVAk9IDEwMDAwMSwKCUdMVV9OT05FCT0gMTAwMDAyLAoKCSAKCUdMVV9Q
T0lOVAk9IDEwMDAxMCwKCUdMVV9MSU5FCT0gMTAwMDExLAoJR0xVX0ZJTEwJPSAxMDAwMTIsCglH
TFVfU0lMSE9VRVRURQk9IDEwMDAxMywKCgkgCglHTFVfT1VUU0lERQk9IDEwMDAyMCwKCUdMVV9J
TlNJREUJPSAxMDAwMjEsCgoJIAoJR0xVX0JFR0lOCT0gMTAwMTAwLAoJR0xVX1ZFUlRFWAk9IDEw
MDEwMSwKCUdMVV9FTkQJCT0gMTAwMTAyLAoJR0xVX0VSUk9SCT0gMTAwMTAzLAoJR0xVX0VER0Vf
RkxBRwk9IDEwMDEwNCwKCgkgCglHTFVfQ1cJCT0gMTAwMTIwLAoJR0xVX0NDVwkJPSAxMDAxMjEs
CglHTFVfSU5URVJJT1IJPSAxMDAxMjIsCglHTFVfRVhURVJJT1IJPSAxMDAxMjMsCglHTFVfVU5L
Tk9XTgk9IDEwMDEyNCwKCgkgCglHTFVfVEVTU19FUlJPUjEJPSAxMDAxNTEsICAgCglHTFVfVEVT
U19FUlJPUjIgPSAxMDAxNTIsICAgCglHTFVfVEVTU19FUlJPUjMgPSAxMDAxNTMsICAgCglHTFVf
VEVTU19FUlJPUjQgPSAxMDAxNTQsICAgCglHTFVfVEVTU19FUlJPUjUgPSAxMDAxNTUsICAgCglH
TFVfVEVTU19FUlJPUjYgPSAxMDAxNTYsICAgCglHTFVfVEVTU19FUlJPUjcgPSAxMDAxNTcsICAg
CglHTFVfVEVTU19FUlJPUjggPSAxMDAxNTgsICAgCglHTFVfVEVTU19FUlJPUjkgPSAxMDAxNTks
ICAgCgoJIAoJR0xVX0FVVE9fTE9BRF9NQVRSSVgJPSAxMDAyMDAsCglHTFVfQ1VMTElORwkJPSAx
MDAyMDEsCglHTFVfUEFSQU1FVFJJQ19UT0xFUkFOQ0U9IDEwMDIwMiwKCUdMVV9TQU1QTElOR19U
T0xFUkFOQ0UJPSAxMDAyMDMsCglHTFVfRElTUExBWV9NT0RFCT0gMTAwMjA0LAoJR0xVX1NBTVBM
SU5HX01FVEhPRAk9IDEwMDIwNSwKCUdMVV9VX1NURVAJCT0gMTAwMjA2LAoJR0xVX1ZfU1RFUAkJ
PSAxMDAyMDcsCgoJR0xVX1BBVEhfTEVOR1RICQk9IDEwMDIxNSwKCUdMVV9QQVJBTUVUUklDX0VS
Uk9SCT0gMTAwMjE2LAoJR0xVX0RPTUFJTl9ESVNUQU5DRQk9IDEwMDIxNywKCglHTFVfTUFQMV9U
UklNXzIJCT0gMTAwMjEwLAoJR0xVX01BUDFfVFJJTV8zCQk9IDEwMDIxMSwKCglHTFVfT1VUTElO
RV9QT0xZR09OCT0gMTAwMjQwLAoJR0xVX09VVExJTkVfUEFUQ0gJPSAxMDAyNDEsCgoJR0xVX05V
UkJTX0VSUk9SMSAgPSAxMDAyNTEsICAgIAoJR0xVX05VUkJTX0VSUk9SMiAgPSAxMDAyNTIsICAg
IAoJR0xVX05VUkJTX0VSUk9SMyAgPSAxMDAyNTMsICAgIAoJR0xVX05VUkJTX0VSUk9SNCAgPSAx
MDAyNTQsICAgIAoJR0xVX05VUkJTX0VSUk9SNSAgPSAxMDAyNTUsICAgIAoJR0xVX05VUkJTX0VS
Uk9SNiAgPSAxMDAyNTYsICAgIAoJR0xVX05VUkJTX0VSUk9SNyAgPSAxMDAyNTcsICAgIAoJR0xV
X05VUkJTX0VSUk9SOCAgPSAxMDAyNTgsICAgIAoJR0xVX05VUkJTX0VSUk9SOSAgPSAxMDAyNTks
ICAgIAoJR0xVX05VUkJTX0VSUk9SMTAgPSAxMDAyNjAsICAgIAoJR0xVX05VUkJTX0VSUk9SMTEg
PSAxMDAyNjEsICAgIAoJR0xVX05VUkJTX0VSUk9SMTIgPSAxMDAyNjIsICAgIAoJR0xVX05VUkJT
X0VSUk9SMTMgPSAxMDAyNjMsICAgIAoJR0xVX05VUkJTX0VSUk9SMTQgPSAxMDAyNjQsICAgIAoJ
R0xVX05VUkJTX0VSUk9SMTUgPSAxMDAyNjUsICAgIAoJR0xVX05VUkJTX0VSUk9SMTYgPSAxMDAy
NjYsICAgIAoJR0xVX05VUkJTX0VSUk9SMTcgPSAxMDAyNjcsICAgIAoJR0xVX05VUkJTX0VSUk9S
MTggPSAxMDAyNjgsICAgIAoJR0xVX05VUkJTX0VSUk9SMTkgPSAxMDAyNjksICAgIAoJR0xVX05V
UkJTX0VSUk9SMjAgPSAxMDAyNzAsICAgIAoJR0xVX05VUkJTX0VSUk9SMjEgPSAxMDAyNzEsICAg
IAoJR0xVX05VUkJTX0VSUk9SMjIgPSAxMDAyNzIsICAgIAoJR0xVX05VUkJTX0VSUk9SMjMgPSAx
MDAyNzMsICAgIAoJR0xVX05VUkJTX0VSUk9SMjQgPSAxMDAyNzQsICAgIAoJR0xVX05VUkJTX0VS
Uk9SMjUgPSAxMDAyNzUsICAgIAoJR0xVX05VUkJTX0VSUk9SMjYgPSAxMDAyNzYsICAgIAoJR0xV
X05VUkJTX0VSUk9SMjcgPSAxMDAyNzcsICAgIAoJR0xVX05VUkJTX0VSUk9SMjggPSAxMDAyNzgs
ICAgIAoJR0xVX05VUkJTX0VSUk9SMjkgPSAxMDAyNzksICAgIAoJR0xVX05VUkJTX0VSUk9SMzAg
PSAxMDAyODAsICAgIAoJR0xVX05VUkJTX0VSUk9SMzEgPSAxMDAyODEsICAgIAoJR0xVX05VUkJT
X0VSUk9SMzIgPSAxMDAyODIsICAgIAoJR0xVX05VUkJTX0VSUk9SMzMgPSAxMDAyODMsICAgIAoJ
R0xVX05VUkJTX0VSUk9SMzQgPSAxMDAyODQsICAgIAoJR0xVX05VUkJTX0VSUk9SMzUgPSAxMDAy
ODUsICAgIAoJR0xVX05VUkJTX0VSUk9SMzYgPSAxMDAyODYsICAgIAoJR0xVX05VUkJTX0VSUk9S
MzcgPSAxMDAyODcsICAgIAoKCSAKCUdMVV9JTlZBTElEX0VOVU0JCT0gMTAwOTAwLAoJR0xVX0lO
VkFMSURfVkFMVUUJCT0gMTAwOTAxLAoJR0xVX09VVF9PRl9NRU1PUlkJCT0gMTAwOTAyLAoJR0xV
X0lOQ09NUEFUSUJMRV9HTF9WRVJTSU9OCT0gMTAwOTAzLAoKCSAKCUdMVV9WRVJTSU9OCT0gMTAw
ODAwLAoJR0xVX0VYVEVOU0lPTlMJPSAxMDA4MDEKfTsKCgogCgoKdHlwZWRlZiBzdHJ1Y3QgR0xV
cXVhZHJpY09iaiBHTFVxdWFkcmljT2JqOwoKdHlwZWRlZiBzdHJ1Y3QgR0xVdHJpYW5ndWxhdG9y
T2JqIEdMVXRyaWFuZ3VsYXRvck9iajsKCnR5cGVkZWYgc3RydWN0IEdMVW51cmJzT2JqIEdMVW51
cmJzT2JqOwoKCgoKCgoKCiAKCgoKCgpleHRlcm4gdm9pZCAgIGdsdUxvb2tBdCggR0xkb3VibGUg
ZXlleCwgR0xkb3VibGUgZXlleSwgR0xkb3VibGUgZXlleiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGRvdWJsZSBjZW50ZXJ4LCBHTGRvdWJsZSBjZW50ZXJ5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGNlbnRlcnosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xkb3VibGUgdXB4LCBHTGRvdWJsZSB1cHksIEdMZG91YmxlIHVweiAp
OwoKCmV4dGVybiB2b2lkICAgZ2x1T3J0aG8yRCggR0xkb3VibGUgbGVmdCwgR0xkb3VibGUgcmln
aHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xk
b3VibGUgdG9wICk7CgoKZXh0ZXJuIHZvaWQgICBnbHVQZXJzcGVjdGl2ZSggR0xkb3VibGUgZm92
eSwgR0xkb3VibGUgYXNwZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xkb3VibGUgek5lYXIsIEdMZG91YmxlIHpGYXIgKTsKCgpleHRlcm4gdm9pZCAgIGdsdVBpY2tN
YXRyaXgoIEdMZG91YmxlIHgsIEdMZG91YmxlIHksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZG91YmxlIHdpZHRoLCBHTGRvdWJsZSBoZWlnaHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50IHZpZXdwb3J0WzRdICk7CgpleHRlcm4g
R0xpbnQgICBnbHVQcm9qZWN0KCBHTGRvdWJsZSBvYmp4LCBHTGRvdWJsZSBvYmp5LCBHTGRvdWJs
ZSBvYmp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUg
bW9kZWxNYXRyaXhbMTZdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xkb3VibGUgcHJvak1hdHJpeFsxNl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCB2aWV3cG9ydFs0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZG91YmxlICp3aW54LCBHTGRvdWJsZSAqd2lueSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZG91YmxlICp3aW56ICk7CgpleHRlcm4gR0xpbnQgICBnbHVVblByb2pl
Y3QoIEdMZG91YmxlIHdpbngsIEdMZG91YmxlIHdpbnksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZG91YmxlIHdpbnosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZG91YmxlIG1vZGVsTWF0cml4WzE2XSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgcHJvak1hdHJpeFsxNl0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50IHZpZXdwb3J0WzRdLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSAqb2JqeCwgR0xkb3VibGUg
Km9ianksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlICpvYmp6
ICk7CgpleHRlcm4gY29uc3QgR0x1Ynl0ZSogICBnbHVFcnJvclN0cmluZyggR0xlbnVtIGVycm9y
Q29kZSApOwoKCgogCgoKCgoKZXh0ZXJuIEdMaW50ICAgZ2x1U2NhbGVJbWFnZSggR0xlbnVtIGZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHdpZHRoaW4s
IEdMaW50IGhlaWdodGluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGVpbiwgY29uc3Qgdm9pZCAqZGF0YWluLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgd2lkdGhvdXQsIEdMaW50IGhlaWdodG91dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlb3V0LCB2b2lkICpkYXRhb3V0ICk7
CgpleHRlcm4gR0xpbnQgICBnbHVCdWlsZDFETWlwbWFwcyggR0xlbnVtIHRhcmdldCwgR0xpbnQg
Y29tcG9uZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB3aWR0aCwgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqZGF0YSApOwoKZXh0ZXJuIEdMaW50ICAg
Z2x1QnVpbGQyRE1pcG1hcHMoIEdMZW51bSB0YXJnZXQsIEdMaW50IGNvbXBvbmVudHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgd2lkdGgsIEdMaW50IGhl
aWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LCBjb25zdCB2b2lkICpkYXRhICk7CgoKCiAKCgoKCgpleHRlcm4gR0xVcXVhZHJpY09iaiogICBn
bHVOZXdRdWFkcmljKCB2b2lkICk7CgpleHRlcm4gdm9pZCAgIGdsdURlbGV0ZVF1YWRyaWMoIEdM
VXF1YWRyaWNPYmogKnN0YXRlICk7CgpleHRlcm4gdm9pZCAgIGdsdVF1YWRyaWNEcmF3U3R5bGUo
IEdMVXF1YWRyaWNPYmogKnF1YWRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBkcmF3U3R5bGUgKTsKCmV4dGVybiB2b2lkICAgZ2x1UXVhZHJp
Y09yaWVudGF0aW9uKCBHTFVxdWFkcmljT2JqICpxdWFkT2JqZWN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBvcmllbnRhdGlvbiApOwoKZXh0ZXJu
IHZvaWQgICBnbHVRdWFkcmljTm9ybWFscyggR0xVcXVhZHJpY09iaiAqcXVhZE9iamVjdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBub3JtYWxzICk7Cgpl
eHRlcm4gdm9pZCAgIGdsdVF1YWRyaWNUZXh0dXJlKCBHTFVxdWFkcmljT2JqICpxdWFkT2JqZWN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRleHR1
cmVDb29yZHMgKTsKCmV4dGVybiB2b2lkICAgZ2x1UXVhZHJpY0NhbGxiYWNrKCBHTFVxdWFkcmlj
T2JqICpxb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB3aGljaCwgdm9pZCAoICAqZm4pKCkgKTsKCmV4dGVybiB2b2lkICAgZ2x1Q3lsaW5kZXIoIEdM
VXF1YWRyaWNPYmogKnFvYmosC