louisdh / openterm

OpenTerm, a sandboxed command line interface for iOS
Other
1.63k stars 249 forks source link

Commands that are added using replaceCommand don't work in TestFlight builds. #125

Closed louisdh closed 6 years ago

louisdh commented 6 years ago

For example, the credits command is added as such:

replaceCommand("credits", mangleFunctionName("credits"), true)

When built from Xcode (even using release mode), this command works. In TestFlight builds, we get: credits: command not found .

@holzschu Is this a bug in ios_system? Perhaps the function name mangling breaking?

holzschu commented 6 years ago

That's odd. I guess it applies to all commands added through replaceCommand.

mangleFunctionName depends on the class name (OpenTerm). I don't see any reason why it wouldn't work in TestFlight. Can you run nm <path to TF application file> | grep credits?

holzschu commented 6 years ago

is there any other difference besides TestFlight / non-TestFlight? Is the TF application built with a different version of Xcode?

louisdh commented 6 years ago

TestFlight builds are built with the same Xcode version that I use for development (Xcode 9.3). To my knowledge there isn't any difference with a release build.

Interestingly, nm OpenTerm | grep credits gives no results.

The full output from nm OpenTerm:

U _CGAffineTransformMakeScale U _CGContextAddPath U _CGRectGetHeight U _CGRectGetMaxX U _CGRectGetWidth U _CGRectInset U _CGRectIntersection U _NSBackgroundColorAttributeName U _NSFileSize U _NSFontAttributeName U _NSForegroundColorAttributeName U _NSRunLoopCommonModes U _NSStrikethroughColorAttributeName U _NSStrikethroughStyleAttributeName U _NSStringFromClass U _NSURLIsDirectoryKey U _NSUnderlineColorAttributeName U _NSUnderlineStyleAttributeName U _OBJC_CLASS_$_AVSpeechSynthesisVoice U _OBJC_CLASS_$_AVSpeechSynthesizer U _OBJC_CLASS_$_AVSpeechUtterance U _OBJC_CLASS_$_CADisplayLink U _OBJC_CLASS_$_CAGradientLayer U _OBJC_CLASS_$_MFMailComposeViewController U _OBJC_CLASS_$_NSAttributedString U _OBJC_CLASS_$_NSBundle U _OBJC_CLASS_$_NSError U _OBJC_CLASS_$_NSFileHandle U _OBJC_CLASS_$_NSFileManager U _OBJC_CLASS_$_NSFileWrapper U _OBJC_CLASS_$_NSJSONSerialization U _OBJC_CLASS_$_NSKeyedArchiver U _OBJC_CLASS_$_NSKeyedUnarchiver U _OBJC_CLASS_$_NSLayoutConstraint U _OBJC_CLASS_$_NSMutableAttributedString U _OBJC_CLASS_$_NSMutableData U _OBJC_CLASS_$_NSMutableString U _OBJC_CLASS_$_NSNotificationCenter U _OBJC_CLASS_$_NSNumber U _OBJC_CLASS_$_NSObject U _OBJC_CLASS_$_NSPipe U _OBJC_CLASS_$_NSRunLoop U _OBJC_CLASS_$_NSScanner U _OBJC_CLASS_$_NSString U _OBJC_CLASS_$_NSThread U _OBJC_CLASS_$_NSUserDefaults U _OBJC_CLASS_$_NSValue U _OBJC_CLASS_$_SKStoreReviewController U _OBJC_CLASS_$_SwiftObject U _OBJC_CLASS_$_UIActivityViewController U _OBJC_CLASS_$_UIAlertAction U _OBJC_CLASS_$_UIAlertController U _OBJC_CLASS_$_UIApplication U _OBJC_CLASS_$_UIBarButtonItem U _OBJC_CLASS_$_UIBezierPath U _OBJC_CLASS_$_UIButton U _OBJC_CLASS_$_UICollectionView U _OBJC_CLASS_$_UICollectionViewCell U _OBJC_CLASS_$_UIColor U _OBJC_CLASS_$_UIDevice U _OBJC_CLASS_$_UIDocument U _OBJC_CLASS_$_UIDocumentPickerViewController U _OBJC_CLASS_$_UIDragItem U _OBJC_CLASS_$_UIFont U _OBJC_CLASS_$_UIFontDescriptor U _OBJC_CLASS_$_UIGraphicsImageRenderer U _OBJC_CLASS_$_UIImage U _OBJC_CLASS_$_UIKeyCommand U _OBJC_CLASS_$_UILabel U _OBJC_CLASS_$_UINavigationController U _OBJC_CLASS_$_UINib U _OBJC_CLASS_$_UIPasteboard U _OBJC_CLASS_$_UIResponder U _OBJC_CLASS_$_UIScreen U _OBJC_CLASS_$_UIScrollView U _OBJC_CLASS_$_UISearchController U _OBJC_CLASS_$_UIStepper U _OBJC_CLASS_$_UIStoryboard U _OBJC_CLASS_$_UISwitch U _OBJC_CLASS_$_UITableView U _OBJC_CLASS_$_UITableViewCell U _OBJC_CLASS_$_UITableViewController U _OBJC_CLASS_$_UITableViewHeaderFooterView U _OBJC_CLASS_$_UITextField U _OBJC_CLASS_$_UITextRange U _OBJC_CLASS_$_UITextView U _OBJC_CLASS_$_UIView U _OBJC_CLASS_$_UIViewController U _OBJC_CLASS_$_UIWindow U _OBJC_CLASS_$_WKWebView U _OBJC_METACLASS_$_NSObject U _OBJC_METACLASS_$_SwiftObject U _OBJC_METACLASS_$_UIBarButtonItem U _OBJC_METACLASS_$_UICollectionViewCell U _OBJC_METACLASS_$_UIDocument U _OBJC_METACLASS_$_UIResponder U _OBJC_METACLASS_$_UITableViewCell U _OBJC_METACLASS_$_UITableViewController U _OBJC_METACLASS_$_UITextView U _OBJC_METACLASS_$_UIView U _OBJC_METACLASS_$_UIViewController U _OBJC_METACLASS_$__TtC6HueKit14ColorBarPicker U _OBJC_METACLASS_$__TtC7TabView17TabViewController U _UIApplicationDidEnterBackgroundNotification U _UIApplicationMain U _UIKeyInputDownArrow U _UIKeyInputUpArrow U _UIKeyboardAnimationCurveUserInfoKey U _UIKeyboardAnimationDurationUserInfoKey U _UIKeyboardDidChangeFrameNotification U _UIKeyboardDidHideNotification U _UIKeyboardDidShowNotification U _UIKeyboardFrameBeginUserInfoKey U _UIKeyboardFrameEndUserInfoKey U _UIKeyboardIsLocalUserInfoKey U _UIKeyboardWillChangeFrameNotification U _UIKeyboardWillHideNotification U _UIKeyboardWillShowNotification U _UITextViewTextDidChangeNotification U __Block_copy U __Block_release U __NSConcreteStackBlock U __T010Foundation11JSONDecoderC6decodexxm_AA4DataV4fromtKs9DecodableRzlF U __T010Foundation11JSONDecoderCACycfc U __T010Foundation11JSONDecoderCMa U __T010Foundation11JSONDecoderCN U __T010Foundation12CharacterSetV11whitespacesACvgZ U __T010Foundation12CharacterSetV13alphanumericsACvgZ U __T010Foundation12CharacterSetV15urlQueryAllowedACvgZ U __T010Foundation12CharacterSetV22whitespacesAndNewlinesACvgZ U __T010Foundation12CharacterSetV8invertedACvg U __T010Foundation12CharacterSetV8newlinesACvgZ U __T010Foundation12NotificationV36_unconditionallyBridgeFromObjectiveCACSo14NSNotificationCSgFZ U __T010Foundation12URLQueryItemV4nameSSvg U __T010Foundation12URLQueryItemV5valueSSSgvg U __T010Foundation12_DataStorageC11_needToZeroSbvpWvd U __T010Foundation12_DataStorageC3gets5UInt8VSiF U __T010Foundation12_DataStorageC5_growySi_SbtF U __T010Foundation12_DataStorageC6_bytesSvSgvpWvd U __T010Foundation12_DataStorageC7_lengthSivpWvd U __T010Foundation12_DataStorageC7_offsetSivpWvd U __T010Foundation12_DataStorageC8_backingAC7BackingOvpWvd U __T010Foundation12_DataStorageC9_capacitySivpWvd U __T010Foundation12_DataStorageCACSo09NSMutableB0C16mutableReference_Si6offsettcfc U __T010Foundation12_DataStorageCACSvSg5bytes_Si6lengthSb4copyySv_SitcSg11deallocatorSi6offsettcfc U __T010Foundation12_DataStorageCMa U __T010Foundation13URLComponentsV10queryItemsSayAA12URLQueryItemVGSgvg U __T010Foundation13URLComponentsVACSgAA3URLV3url_Sb020resolvingAgainstBaseC0tcfC U __T010Foundation14DateComponentsV36_unconditionallyBridgeFromObjectiveCACSo06NSDateC0CSgFZ U __T010Foundation14DateComponentsV4yearSiSgvg U __T010Foundation17URLResourceValuesV11isDirectorySbSgvg U __T010Foundation19PropertyListDecoderC6decodexxm_AA4DataV4fromtKs9DecodableRzlF U __T010Foundation19PropertyListDecoderCACycfc U __T010Foundation19PropertyListDecoderCMa U __T010Foundation19PropertyListDecoderCN U __T010Foundation19PropertyListEncoderC12outputFormatSo0bC13SerializationC0bcF0OvpWvd U __T010Foundation19PropertyListEncoderC6encodeAA4DataVxKs9EncodableRzlF U __T010Foundation19PropertyListEncoderCACycfc U __T010Foundation19PropertyListEncoderCMa U __T010Foundation19PropertyListEncoderCN U __T010Foundation21NSKeyValueObservationCMa U __T010Foundation22_convertErrorToNSErrorSo0E0Cs0C0_pF U __T010Foundation22_convertNSErrorToErrors0E0_pSo0C0CSgF U __T010Foundation27_KeyValueCodingAndObservingPAAE7observeAA05NSKeyC11ObservationCs0B4PathCyxqd__G_SC0hcF7OptionsV7optionsyx_AA0hC14ObservedChangeVyqd__Gtc13changeHandlertlF U __T010Foundation27_KeyValueCodingAndObservingPAAE7observeAA05NSKeyC11ObservationCs0B4PathCyxqd__G_SC0hcF7OptionsV7optionsyx_AA0hC14ObservedChangeVyqd__Gtc13changeHandlertlFfA0_ U __T010Foundation3URLV016standardizedFileB0ACvg U __T010Foundation3URLV08absoluteB0ACvg U __T010Foundation3URLV12bookmarkDataAA0D0VAC14withContentsOf_tKFZ U __T010Foundation3URLV12bookmarkDataAA0D0VSo5NSURLC23BookmarkCreationOptionsV7options_s3SetVySC14URLResourceKeyVGSg30includingResourceValuesForKeysACSg10relativeTotKF U __T010Foundation3URLV13pathExtensionSSvg U __T010Foundation3URLV14absoluteStringSSvg U __T010Foundation3URLV14resourceValuesAA011URLResourceD0Vs3SetVySC0E3KeyVG7forKeys_tKF U __T010Foundation3URLV17lastPathComponentSSvg U __T010Foundation3URLV17writeBookmarkDatayAA0E0V_AC2totKFZ U __T010Foundation3URLV19_bridgeToObjectiveCSo5NSURLCyF U __T010Foundation3URLV22appendingPathComponentACSSF U __T010Foundation3URLV22appendingPathComponentACSS_Sb11isDirectorytF U __T010Foundation3URLV23deleteLastPathComponentyyF U __T010Foundation3URLV24checkResourceIsReachableSbyKF U __T010Foundation3URLV25deletingLastPathComponentACyF U __T010Foundation3URLV2eeoiSbAC_ACtFZ U __T010Foundation3URLV36_unconditionallyBridgeFromObjectiveCACSo5NSURLCSgFZ U __T010Foundation3URLV36startAccessingSecurityScopedResourceSbyF U __T010Foundation3URLV4hostSSSgvg U __T010Foundation3URLV4pathSSvg U __T010Foundation3URLV6schemeSSSgvg U __T010Foundation3URLVACSS15fileURLWithPath_tcfC U __T010Foundation3URLVACSgAA4DataV017resolvingBookmarkC0_So5NSURLC0E17ResolutionOptionsV7optionsAD10relativeToSbz08bookmarkC7IsStaletKcfC U __T010Foundation3URLVACSgAA4DataV017resolvingBookmarkC0_So5NSURLC0E17ResolutionOptionsV7optionsAD10relativeToSbz08bookmarkC7IsStaletKcfcfA0_ U __T010Foundation3URLVACSgAA4DataV017resolvingBookmarkC0_So5NSURLC0E17ResolutionOptionsV7optionsAD10relativeToSbz08bookmarkC7IsStaletKcfcfA1_ U __T010Foundation3URLVACSgSS6string_tcfC U __T010Foundation3URLVN U __T010Foundation4DataV12makeIteratorAC0D0VyF U __T010Foundation4DataV13_copyContentsAC8IteratorV_SitSrys5UInt8VG12initializing_tF U __T010Foundation4DataV14_validateIndexySi_SSSg7messagetF U __T010Foundation4DataV14_validateIndexySi_SSSg7messagetFfA0_ U __T010Foundation4DataV14_validateRangeyxs0D10ExpressionRzSi5BoundRtzlF U __T010Foundation4DataV19_bridgeToObjectiveCSo6NSDataCyF U __T010Foundation4DataV36_unconditionallyBridgeFromObjectiveCACSo6NSDataCSgFZ U __T010Foundation4DataV5writeyAA3URLV2to_So6NSDataC14WritingOptionsV7optionstKF U __T010Foundation4DataV5writeyAA3URLV2to_So6NSDataC14WritingOptionsV7optionstKFfA0_ U __T010Foundation4DataV8IteratorV4nexts5UInt8VSgyF U __T010Foundation4DataVACSV5bytes_Si5counttcfC U __T010Foundation4DataVACs10ArraySliceVys5UInt8VG5bytes_tcfC U __T010Foundation4DataVACycfC U __T010Foundation4DataVAcA3URLV10contentsOf_So6NSDataC14ReadingOptionsV7optionstKcfC U __T010Foundation4DataVAcA3URLV10contentsOf_So6NSDataC14ReadingOptionsV7optionstKcfcfA0_ U __T010Foundation4DataVN U __T010Foundation4DateV17timeIntervalSinceSdACF U __T010Foundation4DateV19_bridgeToObjectiveCSo6NSDateCyF U __T010Foundation4DateVACycfC U __T010Foundation4DateVN U __T010Foundation4UUIDV10uuidStringSSvg U __T010Foundation4UUIDVACycfC U __T010Foundation8CalendarV19_bridgeToObjectiveCSo10NSCalendarCyF U __T010Foundation8CalendarV7currentACvgZ U __T010Foundation8IndexSetV19_bridgeToObjectiveCSo07NSIndexC0CyF U __T010Foundation8IndexSetVACSi7integer_tcfC U __T010Foundation9IndexPathV19_bridgeToObjectiveCSo07NSIndexC0CyF U __T010Foundation9IndexPathV2eeoiSbAC_ACtFZ U __T010Foundation9IndexPathV36_unconditionallyBridgeFromObjectiveCACSo07NSIndexC0CSgFZ U __T010Foundation9IndexPathV5UIKitE3rowSivg U __T010Foundation9IndexPathV5UIKitE7sectionSivg U __T010Foundation9IndexPathV5UIKitEACSi4item_Si7sectiontcfC U __T010Foundation9IndexPathVN U __T010ObjectiveC15autoreleasepoolxxyKc8invoking_tKlF U __T010ObjectiveC22_convertBoolToObjCBoolAA0eF0VSbF U __T010ObjectiveC22_convertObjCBoolToBoolSbAA0cD0VF U __T010ObjectiveC2eeoiSbSo8NSObjectC_ADtF U __T010SavannaKit14SyntaxTextViewC06insertD0ySSF U __T010SavannaKit14SyntaxTextViewC07contentdE0So06UITextE0Cvg U __T010SavannaKit14SyntaxTextViewC12contentInsetSC12UIEdgeInsetsVvm U __T010SavannaKit14SyntaxTextViewC4textSSvg U __T010SavannaKit14SyntaxTextViewC4textSSvs U __T010SavannaKit14SyntaxTextViewC8delegateAA0cdE8Delegate_pSgXwvs U __T010SavannaKit14SyntaxTextViewCMa U __T010SavannaKit14SyntaxTextViewCN U __T010SavannaKit22SyntaxTextViewDelegateMp U __T010SavannaKit5LexerMp U __T010SavannaKit5TokenMp U __T010SavannaKit9TokenTypeMp U __T012CoreGraphics7CGFloatVN U __T014InputAssistant0aB12ViewDelegateMp U __T014InputAssistant0aB14ViewDataSourceMp U __T014InputAssistant0aB4ViewC10dataSourceAA0abc4DataE0_pSgXwvs U __T014InputAssistant0aB4ViewC15trailingActionsSayAA0aB6ActionVGvs U __T014InputAssistant0aB4ViewC6attachySo06UITextC0C2to_tF U __T014InputAssistant0aB4ViewC8delegateAA0abC8Delegate_pSgXwvs U __T014InputAssistant0aB4ViewCMa U __T014InputAssistant0aB4ViewCN U __T014InputAssistant0aB6ActionVACSo7UIImageC5image_yXlSg6target10ObjectiveC8SelectorVSg6actiontcfC U __T014InputAssistant0aB6ActionVN U __T03Cub13AutoCompleterC21completionSuggestionsSayAA20CompletionSuggestionVGSS3for_Si6cursortF U __T03Cub13AutoCompleterCACycfc U __T03Cub13AutoCompleterCMa U __T03Cub13AutoCompleterCN U __T03Cub16DisplayableErrorMp U __T03Cub17DocumentationItemVN U __T03Cub17DocumentationItemVs9DecodableAAWP U __T03Cub17DocumentationItemVs9EncodableAAWP U __T03Cub20CompletionSuggestionVN U __T03Cub21DocumentationItemTypeO8rawValueSSvg U __T03Cub5LexerC8tokenizeSayAA5TokenVGyF U __T03Cub5LexerCACSS5input_tcfc U __T03Cub5LexerCMa U __T03Cub5LexerCN U __T03Cub5TokenVN U __T03Cub6RunnerC24registerExternalFunctionySSSg13documentation_SS4nameSaySSG13argumentNamesSb7returnsys10DictionaryVySSAA9ValueTypeOG_SbANSgctc8callbacktF U __T03Cub6RunnerC3runySSKF U __T03Cub6RunnerC8compilerAA16BytecodeCompilerCvpWvd U __T03Cub6RunnerCACSb8logDebug_Sb0C4Timetcfc U __T03Cub6RunnerCMa U __T03Cub6RunnerCN U __T03Cub9TokenTypeON U __T03Cub9ValueTypeO11descriptionSSAA16BytecodeCompilerC4with_tF U __T03Cub9ValueTypeON U __T06Darwin4opens5Int32VSPys4Int8VG_ADtF U __T06Darwin5stdinSpySC7__sFILEVGvg U __T06Darwin6stderrSpySC7__sFILEVGvg U __T06Darwin6stdoutSpySC7__sFILEVGvg U __T06HueKit14ColorBarPickerC05colorD4ViewAA0cdG0Cvg U __T06HueKit14ColorBarPickerC05colorD4ViewAA0cdG0Cvm U __T06HueKit14ColorBarPickerC05colorD4ViewAA0cdG0Cvs U __T06HueKit14ColorBarPickerC10isVertical33_204C536BF98326483B28B38C358A877ALLSbvg U __T06HueKit14ColorBarPickerC10isVertical33_204C536BF98326483B28B38C358A877ALLSbvm U __T06HueKit14ColorBarPickerC10isVertical33_204C536BF98326483B28B38C358A877ALLSbvs U __T06HueKit14ColorBarPickerC13growIndicator33_204C536BF98326483B28B38C358A877ALLyyF U __T06HueKit14ColorBarPickerC14trackIndicator33_204C536BF98326483B28B38C358A877ALLySo7UITouchC4with_tF U __T06HueKit14ColorBarPickerC15shrinkIndicator33_204C536BF98326483B28B38C358A877ALLyyF U __T06HueKit14ColorBarPickerC17updateOrientationyyF U __T06HueKit14ColorBarPickerC19changeIndicatorSize33_204C536BF98326483B28B38C358A877ALLySC6CGSizeV2to_tF U __T06HueKit14ColorBarPickerC19updateVerticalState33_204C536BF98326483B28B38C358A877ALLyyF U __T06HueKit14ColorBarPickerC3hue12CoreGraphics7CGFloatVvg U __T06HueKit14ColorBarPickerC3hue12CoreGraphics7CGFloatVvm U __T06HueKit14ColorBarPickerC3hue12CoreGraphics7CGFloatVvs U __T06HueKit14ColorBarPickerC5value33_204C536BF98326483B28B38C358A877ALL12CoreGraphics7CGFloatVvg U __T06HueKit14ColorBarPickerC5value33_204C536BF98326483B28B38C358A877ALL12CoreGraphics7CGFloatVvm U __T06HueKit14ColorBarPickerC5value33_204C536BF98326483B28B38C358A877ALL12CoreGraphics7CGFloatVvs U __T06HueKit14ColorBarPickerC9indicator33_204C536BF98326483B28B38C358A877ALLAA0C13IndicatorViewCvg U __T06HueKit14ColorBarPickerC9indicator33_204C536BF98326483B28B38C358A877ALLAA0C13IndicatorViewCvm U __T06HueKit14ColorBarPickerC9indicator33_204C536BF98326483B28B38C358A877ALLAA0C13IndicatorViewCvs U __T06HueKit14ColorBarPickerCACSC6CGRectV5frame_tcfc U __T06HueKit14ColorBarPickerCACSgSo7NSCoderC5coder_tcfc U __T06HueKit14ColorBarPickerCN U __T07TabView0aB10ControllerC011hidesSingleA0Sbvg U __T07TabView0aB10ControllerC011hidesSingleA0Sbvm U __T07TabView0aB10ControllerC011hidesSingleA0Sbvs U __T07TabView0aB10ControllerC012_hidesSingleA033_D0CB6DF8B6FA4EC289BE5802C711953ELLSbvg U __T07TabView0aB10ControllerC012_hidesSingleA033_D0CB6DF8B6FA4EC289BE5802C711953ELLSbvm U __T07TabView0aB10ControllerC012_hidesSingleA033_D0CB6DF8B6FA4EC289BE5802C711953ELLSbvs U __T07TabView0aB10ControllerC012displayEmptyB8IfNeeded33_D0CB6DF8B6FA4EC289BE5802C711953ELLyyF U __T07TabView0aB10ControllerC013updateVisiblebC6Insets33_D0CB6DF8B6FA4EC289BE5802C711953ELLyyF U __T07TabView0aB10ControllerC05closeA0ySo06UIViewC0CF U __T07TabView0aB10ControllerC05emptyB0So6UIViewCSgvg U __T07TabView0aB10ControllerC05emptyB0So6UIViewCSgvm U __T07TabView0aB10ControllerC05emptyB0So6UIViewCSgvs U __T07TabView0aB10ControllerC06insertA0ySo06UIViewC0C_Si7atIndextF U __T07TabView0aB10ControllerC07refreshA3Bar33_D0CB6DF8B6FA4EC289BE5802C711953ELLyyF U __T07TabView0aB10ControllerC07visiblebC0So06UIViewC0CSgvg U __T07TabView0aB10ControllerC07visiblebC0So06UIViewC0CSgvm U __T07TabView0aB10ControllerC07visiblebC0So06UIViewC0CSgvs U __T07TabView0aB10ControllerC08activateA0ySo06UIViewC0CF U __T07TabView0aB10ControllerC10applyTheme33_D0CB6DF8B6FA4EC289BE5802C711953ELLyAA0abE0_pF U __T07TabView0aB10ControllerC14dragInProgressSbvg U __T07TabView0aB10ControllerC14dragInProgressSbvm U __T07TabView0aB10ControllerC14dragInProgressSbvs U __T07TabView0aB10ControllerC15viewControllersSaySo06UIViewC0CGvg U __T07TabView0aB10ControllerC15viewControllersSaySo06UIViewC0CGvm U __T07TabView0aB10ControllerC15viewControllersSaySo06UIViewC0CGvs U __T07TabView0aB10ControllerC16_viewControllers33_D0CB6DF8B6FA4EC289BE5802C711953ELLSaySo06UIViewC0CGvg U __T07TabView0aB10ControllerC16_viewControllers33_D0CB6DF8B6FA4EC289BE5802C711953ELLSaySo06UIViewC0CGvm U __T07TabView0aB10ControllerC16_viewControllers33_D0CB6DF8B6FA4EC289BE5802C711953ELLSaySo06UIViewC0CGvs U __T07TabView0aB10ControllerC25ownNavigationItemObserver33_D0CB6DF8B6FA4EC289BE5802C711953ELLAA0efG0CSgvg U __T07TabView0aB10ControllerC25ownNavigationItemObserver33_D0CB6DF8B6FA4EC289BE5802C711953ELLAA0efG0CSgvm U __T07TabView0aB10ControllerC25ownNavigationItemObserver33_D0CB6DF8B6FA4EC289BE5802C711953ELLAA0efG0CSgvs U __T07TabView0aB10ControllerC29visibleNavigationItemObserver33_D0CB6DF8B6FA4EC289BE5802C711953ELLAA0efG0CSgvg U __T07TabView0aB10ControllerC29visibleNavigationItemObserver33_D0CB6DF8B6FA4EC289BE5802C711953ELLAA0efG0CSgvm U __T07TabView0aB10ControllerC29visibleNavigationItemObserver33_D0CB6DF8B6FA4EC289BE5802C711953ELLAA0efG0CSgvs U __T07TabView0aB10ControllerC5themeAA0aB5Theme_pvg U __T07TabView0aB10ControllerC5themeAA0aB5Theme_pvm U __T07TabView0aB10ControllerC5themeAA0aB5Theme_pvs U __T07TabView0aB10ControllerC9containerAA0aB9Container_pSgXwvg U __T07TabView0aB10ControllerC9containerAA0aB9Container_pSgXwvm U __T07TabView0aB10ControllerC9containerAA0aB9Container_pSgXwvs U __T07TabView0aB10ControllerCAcA0aB5Theme_p5theme_tcfc U __T07TabView0aB10ControllerCN U __T07TabView0aB9ThemeDarkCAA0abC0AAWP U __T07TabView0aB9ThemeDarkCACycfc U __T07TabView0aB9ThemeDarkCMa U __T07TabView0ab9ContainerB10ControllerC07primaryabD0xvpWvd U __T07TabView0ab9ContainerB10ControllerCACyxGAA0aB5Theme_p5theme_tcfc U __T07TabView0ab9ContainerB10ControllerCMa U __T08Dispatch0A13WorkItemFlagsVACSu8rawValue_tcfC U __T08Dispatch0A3QoSV11unspecifiedACvau U __T08Dispatch0A3QoSV15userInteractiveACvau U __T08Dispatch0A3QoSV7utilityACvau U __T08Dispatch0A4TimeV13distantFutureACvau U __T08Dispatch0A4TimeV3nowACyFZ U __T08Dispatch1poiAA0A4TimeVAD_SdtF U __T08Dispatch25_dispatchPreconditionTestSbAA0A9PredicateOF U __T08PanelKit0A10StateCoderMp U __T08PanelKit0A14ViewControllerC015panelNavigationD0AA0afD0CvpWvd U __T08PanelKit0A14ViewControllerCAcA0A15ContentDelegate_So06UIViewD0CXc4with_AA0A7Manager_p2intcfC U __T08PanelKit0A14ViewControllerCMa U __T08PanelKit0A15ContentDelegateMp U __T08PanelKit0A15ContentDelegatePAAE09preferredA11PinnedWidth12CoreGraphics7CGFloatVvg U __T08PanelKit0A15ContentDelegatePAAE14popButtonTitleSSvg U __T08PanelKit0A15ContentDelegatePAAE16closeButtonTitleSSvg U __T08PanelKit0A15ContentDelegatePAAE18leftBarButtonItemsSaySo05UIBarG4ItemCGvg U __T08PanelKit0A15ContentDelegatePAAE19rightBarButtonItemsSaySo05UIBarG4ItemCGvg U __T08PanelKit0A15ContentDelegatePAAE21modalCloseButtonTitleSSvg U __T08PanelKit0A15ContentDelegatePAAE23shouldAdjustForKeyboardSbvg U __T08PanelKit0A15ContentDelegatePAAE23updateUIForKeyboardHideyyF U __T08PanelKit0A15ContentDelegatePAAE23updateUIForKeyboardShowySC6CGRectV4with_tF U __T08PanelKit0A15ContentDelegatePAAE26panelDragGestureRecognizerSbSo09UIGestureH0C_So7UITouchC13shouldReceivetF U __T08PanelKit0A15ContentDelegatePAAE32updateConstraintsForKeyboardHideyyF U __T08PanelKit0A15ContentDelegatePAAE32updateConstraintsForKeyboardShowySC6CGRectV4with_tF U __T08PanelKit0A15ContentDelegatePAASo16UIViewControllerCRbzrlE015panelNavigationF0AA0ahF0CSgXwvg U __T08PanelKit0A15ContentDelegatePAASo16UIViewControllerCRbzrlE23updateNavigationButtonsyyF U __T08PanelKit0A20NavigationControllerC09panelViewD0AA0afD0CSgXwvg U __T08PanelKit0A20NavigationControllerCN U __T08PanelKit0A5StateVN U __T08PanelKit0A5StateVs9DecodableAAWP U __T08PanelKit0A5StateVs9EncodableAAWP U __T08PanelKit0A7ManagerMp U __T08PanelKit0A7ManagerPAAE05allowA7PinningSbvg U __T08PanelKit0A7ManagerPAAE05panelC8LogLevelAA0eF0Ovg U __T08PanelKit0A7ManagerPAAE07restoreA6Statesys10DictionaryVySiAA0A5StateVGF U __T08PanelKit0A7ManagerPAAE10dragInsetsSC06UIEdgeE0VAA0A14ViewControllerC3for_tF U __T08PanelKit0A7ManagerPAAE11panelStatess10DictionaryVySiAA0A5StateVGvg U __T08PanelKit0A7ManagerPAAE14willExitExposeyyF U __T08PanelKit0A7ManagerPAAE15willEnterExposeyyF U __T08PanelKit0A7ManagerPAAE19allowFloatingPanelsSbvg U __T08PanelKit0A7ManagerPAAE20closeAllPinnedPanelsyyF U __T08PanelKit0A7ManagerPAAE21didUpdatePinnedPanelsyyF U __T08PanelKit0A7ManagerPAAE22closeAllFloatingPanelsyyF U __T08PanelKit0A7ManagerPAAE23exposeOverlayBlurEffectSo06UIBlurG0Cvg U __T08PanelKit0A7ManagerPAAE5closeyAA0A14ViewControllerCF U __T08PanelKit0A7ManagerPAAE5floatyAA0A14ViewControllerC_SC6CGRectV2attF U __T08PanelKit0A7ManagerPAASo16UIViewControllerCRbzrlE011managerViewE0AEvg U __T0BOWV U __T0BoWV U __T0S2SBp21_builtinStringLiteral_Bw17utf8CodeUnitCountBi1_7isASCIItcfC U __T0SC8_NSRangeV10FoundationEABx_q_2intcs15RangeExpressionRzs14StringProtocolR_SS5IndexV5BoundRtzAhGRt_r0_lufC U __T0SPMa U __T0SQMa U __T0SS10FoundationE19_bridgeToObjectiveCSo8NSStringCyF U __T0SS10FoundationE26_forceBridgeFromObjectiveCySo8NSStringC_SSSgz6resulttFZ U __T0SS10FoundationE34_conditionallyBridgeFromObjectiveCSbSo8NSStringC_SSSgz6resulttFZ U __T0SS10FoundationE36_unconditionallyBridgeFromObjectiveCSSSo8NSStringCSgFZ U __T0SS10FoundationE8EncodingV4utf8ACvau U __T0SS10FoundationES2S14contentsOfFile_tKcfC U __T0SS10FoundationESSAA3URLV10contentsOf_tKcfC U __T0SS10FoundationESSSgAA4DataV4data_SSAAE8EncodingV8encodingtcfC U __T0SS14_CharacterViewV42_measureExtendedGraphemeClusterForwardSlowS2i11startOffset_tF U __T0SS14_CharacterViewV43_measureExtendedGraphemeClusterBackwardSlowS2i9endOffset_tF U __T0SS15reserveCapacityySiF U __T0SS23_bridgeToObjectiveCImplyXlyF U __T0SS37_compareDeterministicUnicodeCollationSiSSF U __T0SS5IndexVN U __T0SS5IndexVs10ComparablesWP U __T0SS8UTF8ViewV12makeIteratorAB0D0VyF U __T0SS8UTF8ViewV6_indexSS5IndexVSi15atEncodedOffset_tF U __T0SS8UTF8ViewV8IteratorV4nexts5UInt8VSgyF U __T0SS8UTF8ViewV8endIndexSS0D0Vvg U __T0SSMa U __T0SSN U __T0SSs14StringProtocolsWP U __T0SSs16TextOutputStreamsWP U __T0SSs16_SwiftStringViewsWP U __T0SSs8HashablesWP U __T0Sa10FoundationE19_bridgeToObjectiveCSo7NSArrayCyF U __T0Sa10FoundationE36_unconditionallyBridgeFromObjectiveCSayxGSo7NSArrayCSgFZ U __T0SaMa U __T0SayxGs9DecodablessABRzlWa U __T0SayxGs9EncodablessABRzlWa U __T0SbN U __T0SdN U __T0SiMa U __T0SiN U __T0Sis10ComparablesWP U __T0Sis8HashablesWP U __T0Sis9DecodablesWP U __T0Sis9EncodablesWP U __T0So12UIBezierPathC06BezierB6LengthE6length12CoreGraphics7CGFloatVvg U __T0So13DispatchQueueC0A0E10AttributesVAEs6UInt64V8rawValue_tcfC U __T0So13DispatchQueueC0A0E10asyncAfteryAC0A4TimeV8deadline_AC0A3QoSV3qosAC0A13WorkItemFlagsV5flagsyyXB7executetF U __T0So13DispatchQueueC0A0E4mainABvgZ U __T0So13DispatchQueueC0A0E5asyncySo0A5GroupCSg5group_AC0A3QoSV3qosAC0A13WorkItemFlagsV5flagsyyXB7executetF U __T0So13DispatchQueueC0A0E6globalAbC0A3QoSV0D6SClassO3qos_tFZ U __T0So13DispatchQueueC0A0EABSS5label_AC0A3QoSV3qosAbCE10AttributesV10attributesAbCE20AutoreleaseFrequencyO011autoreleaseI0ABSg6targettcfC U __T0So14DispatchSourceC0A0E020makeFileSystemObjectB0So0abdeF0_ps5Int32V14fileDescriptor_AbCE0dE5EventV9eventMaskSo0A5QueueCSg5queuetFZ U __T0So14DispatchSourceC0A0E15FileSystemEventV5writeAEvau U __T0So14DispatchSourceC0A0E15FileSystemEventVAESu8rawValue_tcfC U __T0So14DispatchSourceC0A0E15FileSystemEventVN U __T0So17DispatchSemaphoreC0A0E4waitAC0A13TimeoutResultOAC0A4TimeV7timeout_tF U __T0So17DispatchSemaphoreC0A0E4waityyF U __T0So17DispatchSemaphoreC0A0E6signalSiyF U __T0So22DispatchSourceProtocolP0A0E15setEventHandleryAC0A3QoSV3qos_AC0A13WorkItemFlagsV5flagsyyXBSg7handlertF U __T0So22DispatchSourceProtocolP0A0E16setCancelHandleryAC0A3QoSV3qos_AC0A13WorkItemFlagsV5flagsyyXBSg7handlertF U __T0So22DispatchSourceProtocolP0A0E6cancelyyF U __T0So22DispatchSourceProtocolP0A0E6resumeyyF U __T0So7UIImageC5UIKitEABSS24imageLiteralResourceName_tcfC U __T0So8NSObjectC10Foundation27_KeyValueCodingAndObservingACWP U __T0SpMa U __T0SqMa U __T0SuMa U __T0SuN U __T0SvN U __T0s019_cocoaStringToSwiftB9_NonASCIISSyXlF U __T0s10DictionaryV10FoundationE19_bridgeToObjectiveCSo12NSDictionaryCyF U __T0s10DictionaryV10FoundationE36_unconditionallyBridgeFromObjectiveCAByxq_GSo12NSDictionaryCSgFZ U __T0s10DictionaryVMa U __T0s10DictionaryVyxq_Gs9DecodablessADRzsADR_rlWa U __T0s10DictionaryVyxq_Gs9EncodablessADRzsADR_rlWa U __T0s10SetAlgebraMp U __T0s10SetAlgebraPsExqd__cs8SequenceRd__7ElementQyd__ADRtzlufC U __T0s11_StringCoreV12_copyInPlaceySi7newSize_Si0F8CapacitySi15minElementWidthtF U __T0s11_hashStringSiSSF U __T0s12StaticStringVN U __T0s13ManagedBufferCMa U __T0s13OpaquePointerVN U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE10componentsSaySSGAC12CharacterSetV11separatedBy_tF U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE10componentsSaySSGqd__11separatedBy_tsAARd__lF U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE16rangeOfCharacters5RangeVyAEGSgAC0G3SetV4from_So8NSStringC14CompareOptionsV7optionsAK0E0tF U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE16rangeOfCharacters5RangeVyAEGSgAC0G3SetV4from_So8NSStringC14CompareOptionsV7optionsAK0E0tFfA0_ U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE16rangeOfCharacters5RangeVyAEGSgAC0G3SetV4from_So8NSStringC14CompareOptionsV7optionsAK0E0tFfA1_ U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE18trimmingCharactersSSAC12CharacterSetV2in_tF U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE20replacingOccurrencesSSqd__2of_qd_0_4withSo8NSStringC14CompareOptionsV7optionss5RangeVyAEGSg5rangetsAARd__sAARd_0_r0_lF U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE20replacingOccurrencesSSqd__2of_qd_0_4withSo8NSStringC14CompareOptionsV7optionss5RangeVyAEGSg5rangetsAARd__sAARd_0_r0_lFfA1_ U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE20replacingOccurrencesSSqd__2of_qd_0_4withSo8NSStringC14CompareOptionsV7optionss5RangeVyAEGSg5rangetsAARd__sAARd_0_r0_lFfA2_ U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE21addingPercentEncodingSSSgAC12CharacterSetV21withAllowedCharacters_tF U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE4dataAC4DataVSgSSACE8EncodingV5using_Sb20allowLossyConversiontF U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE4dataAC4DataVSgSSACE8EncodingV5using_Sb20allowLossyConversiontFfA0_ U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE5writeyAC3URLV2to_Sb10atomicallySSACE8EncodingV8encodingtKF U __T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE8containsSbqd__sAARd__lF U __T0s14_StopIterationON U __T0s14_StopIterationOs5ErrorsWP U __T0s14_getSuperclassyXlXpSgyXlXpF U __T0s15_AnySequenceBoxC13_makeIterators0aE0VyxGyF U __T0s15_print_unlockedyx_q_zts16TextOutputStreamR_r0_lF U __T0s16RawRepresentableMp U __T0s17CustomReflectableMp U __T0s17_AnyCollectionBoxC11_startIndexs01_aeC0_pvpWvd U __T0s17_AnyCollectionBoxC9_endIndexs01_aeC0_pvpWvd U __T0s17_AnyCollectionBoxCMa U __T0s17_CocoaSetIteratorC05cocoaB0s6_NSSet_pvpWvd U __T0s17_CocoaSetIteratorC21_fastEnumerationStateSC012_SwiftNSFasteF0VvpWvd U __T0s17_CocoaSetIteratorC24_fastEnumerationStackBufs01_a4FastefG0VvpWvd U __T0s17_CocoaSetIteratorC24_fastEnumerationStatePtrSpySC012_SwiftNSFasteF0VGvg U __T0s17_CocoaSetIteratorC27_fastEnumerationStackBufPtrSpys01_a4FastefG0VGvg U __T0s17_CocoaSetIteratorC9itemCountSivpWvd U __T0s17_CocoaSetIteratorC9itemIndexSivpWvd U __T0s17_CocoaSetIteratorCMa U __T0s17_HeapBufferHeaderVMa U __T0s17_UnwrappingFailedVN U __T0s17_UnwrappingFailedVs5ErrorsWP U __T0s17_assertionFailures5NeverOs12StaticStringV_SSAE4fileSu4lines6UInt32V5flagstF U __T0s17_cocoaStringSlices01_B4CoreVAC_s5RangeVySiGtF U __T0s18_StringBufferIVarsVN U __T0s19_AnyIteratorBoxBaseC4nextxSgyF U __T0s19_AnyIteratorBoxBaseCMa U __T0s19_NSContiguousStringC5_cores01_B4CoreVvpWvd U __T0s19_NSContiguousStringCMa U __T0s19_cocoaStringReadAllyyXl_Spys6UInt16VGtF U __T0s19_emptyStringStorages6UInt32Vvau U __T0s20_ConcreteHashableBoxVMa U __T0s20_ConcreteHashableBoxVyxGs04_AnybC0sWP U __T0s20_RawNativeSetStorageC18initializedEntriess13_UnsafeBitMapVvpWvd U __T0s20_RawNativeSetStorageC4keysSvvpWvd U __T0s20_RawNativeSetStorageC5countSivpWvd U __T0s20_RawNativeSetStorageC8capacitySivpWvd U __T0s20_SwiftNewtypeWrapperMp U __T0s20_debugPrint_unlockedyx_q_zts16TextOutputStreamR_r0_lF U __T0s21_ObjectiveCBridgeableMp U __T0s21_cocoaStringSubscripts6UInt16Vs01_B4CoreV_SitF U __T0s21_findStringSwitchCaseSiSays06StaticB0VG5cases_SS6stringtF U __T0s23CustomStringConvertibleMp U __T0s23_ContiguousArrayStorageCMa U __T0s24_CocoaDictionaryIteratorC05cocoaB0s13_NSDictionary_pvpWvd U __T0s24_CocoaDictionaryIteratorC21_fastEnumerationStateSC012_SwiftNSFasteF0VvpWvd U __T0s24_CocoaDictionaryIteratorC24_fastEnumerationStackBufs01_a4FastefG0VvpWvd U __T0s24_CocoaDictionaryIteratorC9itemCountSivpWvd U __T0s24_CocoaDictionaryIteratorC9itemIndexSivpWvd U __T0s24_CocoaDictionaryIteratorCMa U __T0s25ExpressibleByArrayLiteralMp U __T0s26_RandomAccessCollectionBoxCMa U __T0s27_ContiguousArrayStorageBaseC16countAndCapacitys01_B4BodyVvpWvd U __T0s27_ContiguousArrayStorageBaseC17staticElementTypeypXpvg U __T0s27_ContiguousArrayStorageBaseCMa U __T0s27_ContiguousArrayStorageBaseCN U __T0s27_KeyedDecodingContainerBaseC6decodeS2Sm_x6forKeytKF U __T0s27_KeyedDecodingContainerBaseC6decodeS2dm_x6forKeytKF U __T0s27_KeyedDecodingContainerBaseC6decodeqd__qd__m_x6forKeytKs9DecodableRd__lF U __T0s27_KeyedDecodingContainerBaseCMa U __T0s27_KeyedEncodingContainerBaseC6encodeySS_x6forKeytKF U __T0s27_KeyedEncodingContainerBaseC6encodeySd_x6forKeytKF U __T0s27_KeyedEncodingContainerBaseC6encodeyqd___x6forKeytKs9EncodableRd__lF U __T0s27_KeyedEncodingContainerBaseCMa U __T0s27_RawNativeDictionaryStorageC18initializedEntriess13_UnsafeBitMapVvpWvd U __T0s27_RawNativeDictionaryStorageC4keysSvvpWvd U __T0s27_RawNativeDictionaryStorageC5countSivpWvd U __T0s27_RawNativeDictionaryStorageC6valuesSvvpWvd U __T0s27_RawNativeDictionaryStorageC8capacitySivpWvd U __T0s27_bridgeAnythingToObjectiveCyXlxlF U __T0s28CustomDebugStringConvertibleMp U __T0s30_HashableTypedNativeSetStorageCMa U __T0s30_findStringSwitchCaseWithCacheSiSays06StaticB0VG5cases_SS6strings07_OpaquebcF0Vz5cachetF U __T0s32_bridgeNonVerbatimFromObjectiveCyyXl_xmxSgztlF U __T0s35_HasCustomAnyHashableRepresentationMp U __T0s37_HashableTypedNativeDictionaryStorageCMa U __T0s38_bridgeAnythingNonVerbatimToObjectiveCyXlxlF U __T0s4Int8VN U __T0s5ErrorMp U __T0s5ErrorP10FoundationE20localizedDescriptionSSvg U __T0s5ErrorPsE9_userInfoyXlSgvg U __T0s5Int16VN U __T0s5Int32VN U __T0s5Int64VN U __T0s5RangeV10FoundationSS5IndexVRszrlEAByAEGSgSC8_NSRangeV_SS2intcfC U __T0s5RangeVMa U __T0s5RangeVyxGs0A10ExpressionsWa U __T0s5UInt8VN U __T0s5printyypd_SS9separatorSS10terminatortF U __T0s5printyypd_SS9separatorSS10terminatortFfA0_ U __T0s5printyypd_SS9separatorSS10terminatortFfA1_ U __T0s6MirrorV14LegacyChildrenVN U __T0s6MirrorV14LegacyChildrenVs22RandomAccessCollectionsWP U __T0s6UInt16VN U __T0s6UInt32VMa U __T0s6UInt32VN U __T0s7UnicodeO4UTF8ON U __T0s7UnicodeO5UTF16ON U __T0s7UnicodeO5UTF32ON U __T0s7_MirrorPsE06_superA0sAA_pSgyF U __T0s8HashableMp U __T0s9CodingKeyMp U __T0s9DecodableMp U __T0s9EncodableMp U __T0s9EquatableMp U __T0s9OptionSetMp U __T0s9_IndexBoxCMa U __T0s9_IndexBoxCyxGs04_AnyaB0sWP U __T0ytN U ___stack_chk_fail U ___stack_chk_guard 0000000100000000 T __mh_execute_header U __objc_empty_cache U __stdlib_malloc_size U __stdlib_memcmp U __stdlib_strlen U __swiftEmptyArrayStorage U __swiftEmptyDictionaryStorage U __swiftEmptySetStorage U __swift_FORCE_LOAD_$_swiftAVFoundation U __swift_FORCE_LOAD_$_swiftCoreAudio U __swift_FORCE_LOAD_$_swiftCoreFoundation U __swift_FORCE_LOAD_$_swiftCoreGraphics U __swift_FORCE_LOAD_$_swiftCoreImage U __swift_FORCE_LOAD_$_swiftCoreMedia U __swift_FORCE_LOAD_$_swiftDarwin U __swift_FORCE_LOAD_$_swiftDispatch U __swift_FORCE_LOAD_$_swiftFoundation U __swift_FORCE_LOAD_$_swiftMetal U __swift_FORCE_LOAD_$_swiftObjectiveC U __swift_FORCE_LOAD_$_swiftQuartzCore U __swift_FORCE_LOAD_$_swiftUIKit U __swift_FORCE_LOAD_$_swiftsimd U __swift_Foundation_getOptionalNilSentinelObject U __swift_allocObject U __swift_deallocObject U __swift_dynamicCast U __swift_dynamicCastClass U __swift_getExistentialTypeMetadata U __swift_getInitializedObjCClass U __swift_isUniquelyReferencedOrPinned_nonNull_native U __swift_isUniquelyReferenced_nonNull_native U __swift_makeAnyHashableUpcastingToHashableBaseType U __swift_release U __swift_release_n U __swift_retain U __swift_retain_n U __swift_slowAlloc U __swift_slowDealloc U __swift_stdlib_HashingDetail_fixedSeedOverride U __swift_stdlib_getDefaultErrorCode U __swift_stdlib_reportUnimplementedInitializer U __swift_stdlib_strtod_clocale U __swift_tryPin U __swift_unpin U _bzero U _close U _commandsAsArray U _commandsAsString U _dispatch_semaphore_create U _fdopen U _fflush U _fileno U _fputs U _free U _getenv U _initializeEnvironment U _ios_closeSession U _ios_kill U _ios_setDirectoryURL U _ios_setMiniRoot U _ios_setMiniRootURL U _ios_setStreams U _ios_switchSession U _ios_system U _kUTTypeFolder U _malloc U _malloc_good_size U _memcpy U _memmove U _memset U _objc_allocWithZone U _objc_autorelease U _objc_autoreleaseReturnValue U _objc_lookUpClass U _objc_msgSend U _objc_msgSendSuper2 U _objc_release U _objc_retain U _objc_retainAutoreleasedReturnValue U _pthread_main_np U _read U _replaceCommand U _setenv U _strlen U _swift_allocBox U _swift_allocError U _swift_arrayAssignWithTake U _swift_arrayDestroy U _swift_arrayInitWithCopy U _swift_arrayInitWithTakeBackToFront U _swift_arrayInitWithTakeFrontToBack U _swift_bridgeObjectRelease U _swift_bridgeObjectRelease_n U _swift_bridgeObjectRetain U _swift_bridgeObjectRetain_n U _swift_bufferAllocate U _swift_deallocClassInstance U _swift_deallocPartialClassInstance U _swift_deletedMethodError U _swift_dynamicCastClassUnconditional U _swift_dynamicCastMetatype U _swift_dynamicCastObjCClass U _swift_errorRelease U _swift_errorRetain U _swift_getDynamicType U _swift_getErrorValue U _swift_getForeignTypeMetadata U _swift_getFunctionTypeMetadata U _swift_getFunctionTypeMetadata1 U _swift_getFunctionTypeMetadata3 U _swift_getKeyPath U _swift_getMetatypeMetadata U _swift_getObjCClassFromMetadata U _swift_getObjCClassMetadata U _swift_getObjectType U _swift_getTupleTypeMetadata U _swift_getTupleTypeMetadata2 U _swift_getTupleTypeMetadata3 U _swift_initStackObject U _swift_initStaticObject U _swift_int64ToString U _swift_isClassType U _swift_isUniquelyReferencedNonObjC U _swift_isUniquelyReferencedNonObjC_nonNull_bridgeObject U _swift_isaMask U _swift_once U _swift_reflectAny U _swift_setDeallocating U _swift_stdlib_NSStringHasPrefixNFD U _swift_stdlib_NSStringHasPrefixNFDPointer U _swift_stdlib_NSStringHasSuffixNFD U _swift_stdlib_NSStringHasSuffixNFDPointer U _swift_stdlib_NSStringLowercaseString U _swift_unknownRelease U _swift_unknownRelease_n U _swift_unknownRetain U _swift_unknownRetain_n U _swift_unknownWeakAssign U _swift_unknownWeakDestroy U _swift_unknownWeakInit U _swift_unknownWeakLoadStrong U _swift_weakDestroy U _swift_weakInit U _swift_weakLoadStrong U _thread_stderr U _thread_stdin U _thread_stdout U _uname U _write U dyld_stub_binder

louisdh commented 6 years ago

Perhaps these function are removed by a special compiler optimization?

holzschu commented 6 years ago

That's strange: the words "OpenTerm" do not appear at all in this dump.

louisdh commented 6 years ago

Ok, so very interesting: even a debug archive doesn't contain the credits command function. It doesn't appear to be related to the build configuration. Xcode's archiving must do something weird that removes those command functions.

louisdh commented 6 years ago

Btw: Apple might reject OpenTerm for using mangled names, as described in this thread: https://forums.developer.apple.com/thread/88716

It would be ideal for ios_system to use function pointers if possible.

holzschu commented 6 years ago

I can't use function pointers with dynamic libraries; the two concepts are incompatible. If we use dynamic libraries, we need to use dlsym() to find the pointer to the function. But object-oriented methods introduce some mangling so the function name is unique. One way to get around this issue would be to have a pure C dynamic library, linked by the swift code, and ios_system referencing that C library.

holzschu commented 6 years ago

Update: this article describes @_cdecl, which enforces C mangling in Swift. It seems interesting. I'll check if it works. https://gist.github.com/HiImJulien/c79f07a8a619431b88ea33cca51de787

holzschu commented 6 years ago

It appears to work. I'm going to branch and make a PR.

BTW: "say -h" or "say -help" does not return on my configuration. "say Hello" and "say -v Voice Hello" both work as expected. Do you want me to create an issue?

louisdh commented 6 years ago

Cool, thanks!

And sure, feel free to open an issue regarding the say command.

louisdh commented 6 years ago

Even without the name mangling, it still gives the same result in TestFlight builds 😕.

I really wonder if the compiler somehow decides the command functions can be removed during an optimization phase (while archiving).

louisdh commented 6 years ago

Annotating the functions, as described here (https://github.com/apple/swift/blob/master/docs/TransparentAttr.rst) might fix this

Edit: this didn't make a difference

holzschu commented 6 years ago

Based on the "nm" dump, the compiler removed all "OpenTerm" functions, which is odd. I'm going to read docs on Xcode archiving.

louisdh commented 6 years ago

I think I'm onto the problem, there's a "Deployment" section in Xcode's build settings (which I believe is used during archiving). This includes settings regarding "symbol stripping", which are enabled by default.

louisdh commented 6 years ago

STRIP_STYLE = "non-global"; seems to fix it, will make a TestFlight build to confirm.

louisdh commented 6 years ago

Confirmed in a TestFlight build, commands that are added via replaceCommand now work again. @holzschu Thanks for your help on this!