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
IH0KICAgIG9wZXJhdG9yIGludCgpICAgeyByZXR1cm4gSW5kZXg7I