diff --git a/.buckconfig b/.buckconfig
index 4a7428e624..45e72bada4 100644
--- a/.buckconfig
+++ b/.buckconfig
@@ -15,8 +15,8 @@
use_swift_delegate = false
use_header_maps_in_xcode = false
generate_missing_umbrella_headers = true
- iphonesimulator_target_sdk_version = 8.0
- iphoneos_target_sdk_version = 8.0
+ iphonesimulator_target_sdk_version = 9.0
+ iphoneos_target_sdk_version = 9.0
provisioning_profile_read_command = security cms -Di
xctool_default_destination_specifier = platform=iOS Simulator,OS=latest
xctool_path = tools/xctool/bin/xctool
diff --git a/Config/configs.bzl b/Config/configs.bzl
index 5ef6de43d9..a9e3f90884 100644
--- a/Config/configs.bzl
+++ b/Config/configs.bzl
@@ -26,7 +26,7 @@ def pretty(dict, current = ""):
return current
SHARED_CONFIGS = {
- "IPHONEOS_DEPLOYMENT_TARGET": "8.0",
+ "IPHONEOS_DEPLOYMENT_TARGET": "9.0",
"SDKROOT": "iphoneos",
"GCC_OPTIMIZATION_LEVEL": "0",
"SWIFT_WHOLE_MODULE_OPTIMIZATION": "NO",
diff --git a/Telegram-iOS/en.lproj/Localizable.strings b/Telegram-iOS/en.lproj/Localizable.strings
index 5cd32281af..a8fcd7afa4 100644
--- a/Telegram-iOS/en.lproj/Localizable.strings
+++ b/Telegram-iOS/en.lproj/Localizable.strings
@@ -4752,3 +4752,5 @@ Any member of this group will be able to see messages in the channel.";
"Channel.EditAdmin.PermissionDeleteMessagesOfOthers" = "Delete Messages of Others";
"Channel.AdminLog.CanDeleteMessagesOfOthers" = "Delete Messages of Others";
+
+"Settings.Wallet" = "Wallet";
diff --git a/Telegram_Buck.xcworkspace/buck-project.meta.json b/Telegram_Buck.xcworkspace/buck-project.meta.json
index a7d9390b8d..573f189fa5 100644
--- a/Telegram_Buck.xcworkspace/buck-project.meta.json
+++ b/Telegram_Buck.xcworkspace/buck-project.meta.json
@@ -1 +1 @@
-{"required-targets":["//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_ac3_parser.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_adts_parser.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_avcodec.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_avdct.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_avfft.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_d3d11va.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_dirac.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_dv_profile.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_dxva2.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_jni.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_mediacodec.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_qsv.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_vaapi.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_vdpau.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_version.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_videotoolbox.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_vorbis_parser.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_xvmc.h","//submodules/FFMpeg:ffmpeg_header_libavformat_sub_avformat.h","//submodules/FFMpeg:ffmpeg_header_libavformat_sub_avio.h","//submodules/FFMpeg:ffmpeg_header_libavformat_sub_version.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_adler32.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_aes.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_aes_ctr.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_attributes.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_audio_fifo.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avassert.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avconfig.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avstring.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avutil.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_base64.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_blowfish.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_bprint.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_bswap.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_buffer.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_camellia.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_cast5.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_channel_layout.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_common.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_cpu.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_crc.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_des.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_dict.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_display.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_downmix_info.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_encryption_info.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_error.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_eval.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_ffversion.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_fifo.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_file.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_frame.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hash.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hmac.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_cuda.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_d3d11va.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_drm.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_dxva2.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_mediacodec.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_qsv.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_vaapi.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_vdpau.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_videotoolbox.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_imgutils.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_intfloat.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_intreadwrite.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_lfg.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_log.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_lzo.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_macros.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_mastering_display_metadata.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_mathematics.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_md5.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_mem.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_motion_vector.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_murmur3.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_opt.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_parseutils.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_pixdesc.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_pixelutils.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_pixfmt.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_random_seed.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_rational.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_rc4.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_replaygain.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_ripemd.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_samplefmt.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_sha.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_sha512.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_spherical.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_stereo3d.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_tea.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_threadmessage.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_time.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_timecode.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_timestamp.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_tree.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_twofish.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_version.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_xtea.h","//submodules/FFMpeg:ffmpeg_header_libswresample_sub_swresample.h","//submodules/FFMpeg:ffmpeg_header_libswresample_sub_version.h","//submodules/FFMpeg:libffmpeg_build","//submodules/MtProtoKit:openssl_libs","//submodules/Opus:opus_lib_file","//submodules/WebP:WebP_lib_file"],"xcconfig-paths":["buck-out/gen/AppLibrary-Debug.xcconfig","buck-out/gen/AppLibrary-Profile.xcconfig","buck-out/gen/AppLibrary-Release.xcconfig","buck-out/gen/IntentsExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/IntentsExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/IntentsExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/NotificationContentExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/NotificationContentExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/NotificationContentExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/NotificationServiceExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/NotificationServiceExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/NotificationServiceExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/ShareExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/ShareExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/ShareExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/Telegram-Debug.xcconfig","buck-out/gen/Telegram-Profile.xcconfig","buck-out/gen/Telegram-Release.xcconfig","buck-out/gen/WatchApp#watchsimulator-i386-Debug.xcconfig","buck-out/gen/WatchApp#watchsimulator-i386-Profile.xcconfig","buck-out/gen/WatchApp#watchsimulator-i386-Release.xcconfig","buck-out/gen/WatchAppExtension#watchsimulator-i386-Debug.xcconfig","buck-out/gen/WatchAppExtension#watchsimulator-i386-Profile.xcconfig","buck-out/gen/WatchAppExtension#watchsimulator-i386-Release.xcconfig","buck-out/gen/WidgetExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/WidgetExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/WidgetExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/submodules/AccountContext/AccountContext-Debug.xcconfig","buck-out/gen/submodules/AccountContext/AccountContext-Profile.xcconfig","buck-out/gen/submodules/AccountContext/AccountContext-Release.xcconfig","buck-out/gen/submodules/ActionSheetPeerItem/ActionSheetPeerItem-Debug.xcconfig","buck-out/gen/submodules/ActionSheetPeerItem/ActionSheetPeerItem-Profile.xcconfig","buck-out/gen/submodules/ActionSheetPeerItem/ActionSheetPeerItem-Release.xcconfig","buck-out/gen/submodules/ActivityIndicator/ActivityIndicator-Debug.xcconfig","buck-out/gen/submodules/ActivityIndicator/ActivityIndicator-Profile.xcconfig","buck-out/gen/submodules/ActivityIndicator/ActivityIndicator-Release.xcconfig","buck-out/gen/submodules/AlertUI/AlertUI-Debug.xcconfig","buck-out/gen/submodules/AlertUI/AlertUI-Profile.xcconfig","buck-out/gen/submodules/AlertUI/AlertUI-Release.xcconfig","buck-out/gen/submodules/AnimationUI/AnimationUI-Debug.xcconfig","buck-out/gen/submodules/AnimationUI/AnimationUI-Profile.xcconfig","buck-out/gen/submodules/AnimationUI/AnimationUI-Release.xcconfig","buck-out/gen/submodules/AppBundle/AppBundle-Debug.xcconfig","buck-out/gen/submodules/AppBundle/AppBundle-Profile.xcconfig","buck-out/gen/submodules/AppBundle/AppBundle-Release.xcconfig","buck-out/gen/submodules/AsyncDisplayKit/AsyncDisplayKit#shared-Debug.xcconfig","buck-out/gen/submodules/AsyncDisplayKit/AsyncDisplayKit#shared-Profile.xcconfig","buck-out/gen/submodules/AsyncDisplayKit/AsyncDisplayKit#shared-Release.xcconfig","buck-out/gen/submodules/AuthorizationUI/AuthorizationUI-Debug.xcconfig","buck-out/gen/submodules/AuthorizationUI/AuthorizationUI-Profile.xcconfig","buck-out/gen/submodules/AuthorizationUI/AuthorizationUI-Release.xcconfig","buck-out/gen/submodules/AvatarNode/AvatarNode-Debug.xcconfig","buck-out/gen/submodules/AvatarNode/AvatarNode-Profile.xcconfig","buck-out/gen/submodules/AvatarNode/AvatarNode-Release.xcconfig","buck-out/gen/submodules/BotPaymentsUI/BotPaymentsUI-Debug.xcconfig","buck-out/gen/submodules/BotPaymentsUI/BotPaymentsUI-Profile.xcconfig","buck-out/gen/submodules/BotPaymentsUI/BotPaymentsUI-Release.xcconfig","buck-out/gen/submodules/BuildConfig/BuildConfig-Debug.xcconfig","buck-out/gen/submodules/BuildConfig/BuildConfig-Profile.xcconfig","buck-out/gen/submodules/BuildConfig/BuildConfig-Release.xcconfig","buck-out/gen/submodules/CallListUI/CallListUI-Debug.xcconfig","buck-out/gen/submodules/CallListUI/CallListUI-Profile.xcconfig","buck-out/gen/submodules/CallListUI/CallListUI-Release.xcconfig","buck-out/gen/submodules/ChatListSearchItemHeader/ChatListSearchItemHeader-Debug.xcconfig","buck-out/gen/submodules/ChatListSearchItemHeader/ChatListSearchItemHeader-Profile.xcconfig","buck-out/gen/submodules/ChatListSearchItemHeader/ChatListSearchItemHeader-Release.xcconfig","buck-out/gen/submodules/ChatListSearchItemNode/ChatListSearchItemNode-Debug.xcconfig","buck-out/gen/submodules/ChatListSearchItemNode/ChatListSearchItemNode-Profile.xcconfig","buck-out/gen/submodules/ChatListSearchItemNode/ChatListSearchItemNode-Release.xcconfig","buck-out/gen/submodules/ChatListSearchRecentPeersNode/ChatListSearchRecentPeersNode-Debug.xcconfig","buck-out/gen/submodules/ChatListSearchRecentPeersNode/ChatListSearchRecentPeersNode-Profile.xcconfig","buck-out/gen/submodules/ChatListSearchRecentPeersNode/ChatListSearchRecentPeersNode-Release.xcconfig","buck-out/gen/submodules/ChatListUI/ChatListUI-Debug.xcconfig","buck-out/gen/submodules/ChatListUI/ChatListUI-Profile.xcconfig","buck-out/gen/submodules/ChatListUI/ChatListUI-Release.xcconfig","buck-out/gen/submodules/ChatTitleActivityNode/ChatTitleActivityNode-Debug.xcconfig","buck-out/gen/submodules/ChatTitleActivityNode/ChatTitleActivityNode-Profile.xcconfig","buck-out/gen/submodules/ChatTitleActivityNode/ChatTitleActivityNode-Release.xcconfig","buck-out/gen/submodules/CheckNode/CheckNode-Debug.xcconfig","buck-out/gen/submodules/CheckNode/CheckNode-Profile.xcconfig","buck-out/gen/submodules/CheckNode/CheckNode-Release.xcconfig","buck-out/gen/submodules/ComposePollUI/ComposePollUI-Debug.xcconfig","buck-out/gen/submodules/ComposePollUI/ComposePollUI-Profile.xcconfig","buck-out/gen/submodules/ComposePollUI/ComposePollUI-Release.xcconfig","buck-out/gen/submodules/ContactListUI/ContactListUI-Debug.xcconfig","buck-out/gen/submodules/ContactListUI/ContactListUI-Profile.xcconfig","buck-out/gen/submodules/ContactListUI/ContactListUI-Release.xcconfig","buck-out/gen/submodules/ContactsPeerItem/ContactsPeerItem-Debug.xcconfig","buck-out/gen/submodules/ContactsPeerItem/ContactsPeerItem-Profile.xcconfig","buck-out/gen/submodules/ContactsPeerItem/ContactsPeerItem-Release.xcconfig","buck-out/gen/submodules/ContextUI/ContextUI-Debug.xcconfig","buck-out/gen/submodules/ContextUI/ContextUI-Profile.xcconfig","buck-out/gen/submodules/ContextUI/ContextUI-Release.xcconfig","buck-out/gen/submodules/CounterContollerTitleView/CounterContollerTitleView-Debug.xcconfig","buck-out/gen/submodules/CounterContollerTitleView/CounterContollerTitleView-Profile.xcconfig","buck-out/gen/submodules/CounterContollerTitleView/CounterContollerTitleView-Release.xcconfig","buck-out/gen/submodules/CountrySelectionUI/CountrySelectionUI-Debug.xcconfig","buck-out/gen/submodules/CountrySelectionUI/CountrySelectionUI-Profile.xcconfig","buck-out/gen/submodules/CountrySelectionUI/CountrySelectionUI-Release.xcconfig","buck-out/gen/submodules/Crc32/Crc32-Debug.xcconfig","buck-out/gen/submodules/Crc32/Crc32-Profile.xcconfig","buck-out/gen/submodules/Crc32/Crc32-Release.xcconfig","buck-out/gen/submodules/DateSelectionUI/DateSelectionUI-Debug.xcconfig","buck-out/gen/submodules/DateSelectionUI/DateSelectionUI-Profile.xcconfig","buck-out/gen/submodules/DateSelectionUI/DateSelectionUI-Release.xcconfig","buck-out/gen/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem-Debug.xcconfig","buck-out/gen/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem-Profile.xcconfig","buck-out/gen/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem-Release.xcconfig","buck-out/gen/submodules/DeviceAccess/DeviceAccess-Debug.xcconfig","buck-out/gen/submodules/DeviceAccess/DeviceAccess-Profile.xcconfig","buck-out/gen/submodules/DeviceAccess/DeviceAccess-Release.xcconfig","buck-out/gen/submodules/DeviceLocationManager/DeviceLocationManager-Debug.xcconfig","buck-out/gen/submodules/DeviceLocationManager/DeviceLocationManager-Profile.xcconfig","buck-out/gen/submodules/DeviceLocationManager/DeviceLocationManager-Release.xcconfig","buck-out/gen/submodules/DeviceProximity/DeviceProximity-Debug.xcconfig","buck-out/gen/submodules/DeviceProximity/DeviceProximity-Profile.xcconfig","buck-out/gen/submodules/DeviceProximity/DeviceProximity-Release.xcconfig","buck-out/gen/submodules/DirectionalPanGesture/DirectionalPanGesture-Debug.xcconfig","buck-out/gen/submodules/DirectionalPanGesture/DirectionalPanGesture-Profile.xcconfig","buck-out/gen/submodules/DirectionalPanGesture/DirectionalPanGesture-Release.xcconfig","buck-out/gen/submodules/Display/Display#shared-Debug.xcconfig","buck-out/gen/submodules/Display/Display#shared-Profile.xcconfig","buck-out/gen/submodules/Display/Display#shared-Release.xcconfig","buck-out/gen/submodules/Emoji/Emoji-Debug.xcconfig","buck-out/gen/submodules/Emoji/Emoji-Profile.xcconfig","buck-out/gen/submodules/Emoji/Emoji-Release.xcconfig","buck-out/gen/submodules/EncryptionKeyVisualization/EncryptionKeyVisualization-Debug.xcconfig","buck-out/gen/submodules/EncryptionKeyVisualization/EncryptionKeyVisualization-Profile.xcconfig","buck-out/gen/submodules/EncryptionKeyVisualization/EncryptionKeyVisualization-Release.xcconfig","buck-out/gen/submodules/FFMpeg/FFMpeg-Debug.xcconfig","buck-out/gen/submodules/FFMpeg/FFMpeg-Profile.xcconfig","buck-out/gen/submodules/FFMpeg/FFMpeg-Release.xcconfig","buck-out/gen/submodules/FFMpeg/libffmpeg-Debug.xcconfig","buck-out/gen/submodules/FFMpeg/libffmpeg-Profile.xcconfig","buck-out/gen/submodules/FFMpeg/libffmpeg-Release.xcconfig","buck-out/gen/submodules/GZip/GZip-Debug.xcconfig","buck-out/gen/submodules/GZip/GZip-Profile.xcconfig","buck-out/gen/submodules/GZip/GZip-Release.xcconfig","buck-out/gen/submodules/GalleryUI/GalleryUI-Debug.xcconfig","buck-out/gen/submodules/GalleryUI/GalleryUI-Profile.xcconfig","buck-out/gen/submodules/GalleryUI/GalleryUI-Release.xcconfig","buck-out/gen/submodules/GameUI/GameUI-Debug.xcconfig","buck-out/gen/submodules/GameUI/GameUI-Profile.xcconfig","buck-out/gen/submodules/GameUI/GameUI-Release.xcconfig","buck-out/gen/submodules/Geocoding/Geocoding-Debug.xcconfig","buck-out/gen/submodules/Geocoding/Geocoding-Profile.xcconfig","buck-out/gen/submodules/Geocoding/Geocoding-Release.xcconfig","buck-out/gen/submodules/GridMessageSelectionNode/GridMessageSelectionNode-Debug.xcconfig","buck-out/gen/submodules/GridMessageSelectionNode/GridMessageSelectionNode-Profile.xcconfig","buck-out/gen/submodules/GridMessageSelectionNode/GridMessageSelectionNode-Release.xcconfig","buck-out/gen/submodules/HashtagSearchUI/HashtagSearchUI-Debug.xcconfig","buck-out/gen/submodules/HashtagSearchUI/HashtagSearchUI-Profile.xcconfig","buck-out/gen/submodules/HashtagSearchUI/HashtagSearchUI-Release.xcconfig","buck-out/gen/submodules/HexColor/HexColor-Debug.xcconfig","buck-out/gen/submodules/HexColor/HexColor-Profile.xcconfig","buck-out/gen/submodules/HexColor/HexColor-Release.xcconfig","buck-out/gen/submodules/HockeySDK-iOS/HockeySDK-Debug.xcconfig","buck-out/gen/submodules/HockeySDK-iOS/HockeySDK-Profile.xcconfig","buck-out/gen/submodules/HockeySDK-iOS/HockeySDK-Release.xcconfig","buck-out/gen/submodules/HorizontalPeerItem/HorizontalPeerItem-Debug.xcconfig","buck-out/gen/submodules/HorizontalPeerItem/HorizontalPeerItem-Profile.xcconfig","buck-out/gen/submodules/HorizontalPeerItem/HorizontalPeerItem-Release.xcconfig","buck-out/gen/submodules/ImageBlur/ImageBlur-Debug.xcconfig","buck-out/gen/submodules/ImageBlur/ImageBlur-Profile.xcconfig","buck-out/gen/submodules/ImageBlur/ImageBlur-Release.xcconfig","buck-out/gen/submodules/ImageCompression/ImageCompression-Debug.xcconfig","buck-out/gen/submodules/ImageCompression/ImageCompression-Profile.xcconfig","buck-out/gen/submodules/ImageCompression/ImageCompression-Release.xcconfig","buck-out/gen/submodules/ImageTransparency/ImageTransparency-Debug.xcconfig","buck-out/gen/submodules/ImageTransparency/ImageTransparency-Profile.xcconfig","buck-out/gen/submodules/ImageTransparency/ImageTransparency-Release.xcconfig","buck-out/gen/submodules/InstantPageCache/InstantPageCache-Debug.xcconfig","buck-out/gen/submodules/InstantPageCache/InstantPageCache-Profile.xcconfig","buck-out/gen/submodules/InstantPageCache/InstantPageCache-Release.xcconfig","buck-out/gen/submodules/InstantPageUI/InstantPageUI-Debug.xcconfig","buck-out/gen/submodules/InstantPageUI/InstantPageUI-Profile.xcconfig","buck-out/gen/submodules/InstantPageUI/InstantPageUI-Release.xcconfig","buck-out/gen/submodules/ItemListAddressItem/ItemListAddressItem-Debug.xcconfig","buck-out/gen/submodules/ItemListAddressItem/ItemListAddressItem-Profile.xcconfig","buck-out/gen/submodules/ItemListAddressItem/ItemListAddressItem-Release.xcconfig","buck-out/gen/submodules/ItemListAvatarAndNameInfoItem/ItemListAvatarAndNameInfoItem-Debug.xcconfig","buck-out/gen/submodules/ItemListAvatarAndNameInfoItem/ItemListAvatarAndNameInfoItem-Profile.xcconfig","buck-out/gen/submodules/ItemListAvatarAndNameInfoItem/ItemListAvatarAndNameInfoItem-Release.xcconfig","buck-out/gen/submodules/ItemListPeerActionItem/ItemListPeerActionItem-Debug.xcconfig","buck-out/gen/submodules/ItemListPeerActionItem/ItemListPeerActionItem-Profile.xcconfig","buck-out/gen/submodules/ItemListPeerActionItem/ItemListPeerActionItem-Release.xcconfig","buck-out/gen/submodules/ItemListPeerItem/ItemListPeerItem-Debug.xcconfig","buck-out/gen/submodules/ItemListPeerItem/ItemListPeerItem-Profile.xcconfig","buck-out/gen/submodules/ItemListPeerItem/ItemListPeerItem-Release.xcconfig","buck-out/gen/submodules/ItemListStickerPackItem/ItemListStickerPackItem-Debug.xcconfig","buck-out/gen/submodules/ItemListStickerPackItem/ItemListStickerPackItem-Profile.xcconfig","buck-out/gen/submodules/ItemListStickerPackItem/ItemListStickerPackItem-Release.xcconfig","buck-out/gen/submodules/ItemListUI/ItemListUI-Debug.xcconfig","buck-out/gen/submodules/ItemListUI/ItemListUI-Profile.xcconfig","buck-out/gen/submodules/ItemListUI/ItemListUI-Release.xcconfig","buck-out/gen/submodules/JoinLinkPreviewUI/JoinLinkPreviewUI-Debug.xcconfig","buck-out/gen/submodules/JoinLinkPreviewUI/JoinLinkPreviewUI-Profile.xcconfig","buck-out/gen/submodules/JoinLinkPreviewUI/JoinLinkPreviewUI-Release.xcconfig","buck-out/gen/submodules/LanguageLinkPreviewUI/LanguageLinkPreviewUI-Debug.xcconfig","buck-out/gen/submodules/LanguageLinkPreviewUI/LanguageLinkPreviewUI-Profile.xcconfig","buck-out/gen/submodules/LanguageLinkPreviewUI/LanguageLinkPreviewUI-Release.xcconfig","buck-out/gen/submodules/LanguageSuggestionUI/LanguageSuggestionUI-Debug.xcconfig","buck-out/gen/submodules/LanguageSuggestionUI/LanguageSuggestionUI-Profile.xcconfig","buck-out/gen/submodules/LanguageSuggestionUI/LanguageSuggestionUI-Release.xcconfig","buck-out/gen/submodules/LegacyComponents/LegacyComponents-Debug.xcconfig","buck-out/gen/submodules/LegacyComponents/LegacyComponents-Profile.xcconfig","buck-out/gen/submodules/LegacyComponents/LegacyComponents-Release.xcconfig","buck-out/gen/submodules/LegacyDataImport/LegacyDataImport-Debug.xcconfig","buck-out/gen/submodules/LegacyDataImport/LegacyDataImport-Profile.xcconfig","buck-out/gen/submodules/LegacyDataImport/LegacyDataImport-Release.xcconfig","buck-out/gen/submodules/LegacyMediaPickerUI/LegacyMediaPickerUI-Debug.xcconfig","buck-out/gen/submodules/LegacyMediaPickerUI/LegacyMediaPickerUI-Profile.xcconfig","buck-out/gen/submodules/LegacyMediaPickerUI/LegacyMediaPickerUI-Release.xcconfig","buck-out/gen/submodules/LegacyUI/LegacyUI-Debug.xcconfig","buck-out/gen/submodules/LegacyUI/LegacyUI-Profile.xcconfig","buck-out/gen/submodules/LegacyUI/LegacyUI-Release.xcconfig","buck-out/gen/submodules/LightweightAccountData/LightweightAccountData-Debug.xcconfig","buck-out/gen/submodules/LightweightAccountData/LightweightAccountData-Profile.xcconfig","buck-out/gen/submodules/LightweightAccountData/LightweightAccountData-Release.xcconfig","buck-out/gen/submodules/ListSectionHeaderNode/ListSectionHeaderNode-Debug.xcconfig","buck-out/gen/submodules/ListSectionHeaderNode/ListSectionHeaderNode-Profile.xcconfig","buck-out/gen/submodules/ListSectionHeaderNode/ListSectionHeaderNode-Release.xcconfig","buck-out/gen/submodules/LiveLocationManager/LiveLocationManager-Debug.xcconfig","buck-out/gen/submodules/LiveLocationManager/LiveLocationManager-Profile.xcconfig","buck-out/gen/submodules/LiveLocationManager/LiveLocationManager-Release.xcconfig","buck-out/gen/submodules/LiveLocationPositionNode/LiveLocationPositionNode-Debug.xcconfig","buck-out/gen/submodules/LiveLocationPositionNode/LiveLocationPositionNode-Profile.xcconfig","buck-out/gen/submodules/LiveLocationPositionNode/LiveLocationPositionNode-Release.xcconfig","buck-out/gen/submodules/LiveLocationTimerNode/LiveLocationTimerNode-Debug.xcconfig","buck-out/gen/submodules/LiveLocationTimerNode/LiveLocationTimerNode-Profile.xcconfig","buck-out/gen/submodules/LiveLocationTimerNode/LiveLocationTimerNode-Release.xcconfig","buck-out/gen/submodules/LocalAuth/LocalAuth-Debug.xcconfig","buck-out/gen/submodules/LocalAuth/LocalAuth-Profile.xcconfig","buck-out/gen/submodules/LocalAuth/LocalAuth-Release.xcconfig","buck-out/gen/submodules/LocalMediaResources/LocalMediaResources-Debug.xcconfig","buck-out/gen/submodules/LocalMediaResources/LocalMediaResources-Profile.xcconfig","buck-out/gen/submodules/LocalMediaResources/LocalMediaResources-Release.xcconfig","buck-out/gen/submodules/LocalizedPeerData/LocalizedPeerData-Debug.xcconfig","buck-out/gen/submodules/LocalizedPeerData/LocalizedPeerData-Profile.xcconfig","buck-out/gen/submodules/LocalizedPeerData/LocalizedPeerData-Release.xcconfig","buck-out/gen/submodules/LocationUI/LocationUI-Debug.xcconfig","buck-out/gen/submodules/LocationUI/LocationUI-Profile.xcconfig","buck-out/gen/submodules/LocationUI/LocationUI-Release.xcconfig","buck-out/gen/submodules/MapResourceToAvatarSizes/MapResourceToAvatarSizes-Debug.xcconfig","buck-out/gen/submodules/MapResourceToAvatarSizes/MapResourceToAvatarSizes-Profile.xcconfig","buck-out/gen/submodules/MapResourceToAvatarSizes/MapResourceToAvatarSizes-Release.xcconfig","buck-out/gen/submodules/MediaPlayer/UniversalMediaPlayer-Debug.xcconfig","buck-out/gen/submodules/MediaPlayer/UniversalMediaPlayer-Profile.xcconfig","buck-out/gen/submodules/MediaPlayer/UniversalMediaPlayer-Release.xcconfig","buck-out/gen/submodules/MediaResources/MediaResources-Debug.xcconfig","buck-out/gen/submodules/MediaResources/MediaResources-Profile.xcconfig","buck-out/gen/submodules/MediaResources/MediaResources-Release.xcconfig","buck-out/gen/submodules/MergeLists/MergeLists-Debug.xcconfig","buck-out/gen/submodules/MergeLists/MergeLists-Profile.xcconfig","buck-out/gen/submodules/MergeLists/MergeLists-Release.xcconfig","buck-out/gen/submodules/MessageReactionListUI/MessageReactionListUI-Debug.xcconfig","buck-out/gen/submodules/MessageReactionListUI/MessageReactionListUI-Profile.xcconfig","buck-out/gen/submodules/MessageReactionListUI/MessageReactionListUI-Release.xcconfig","buck-out/gen/submodules/MimeTypes/MimeTypes-Debug.xcconfig","buck-out/gen/submodules/MimeTypes/MimeTypes-Profile.xcconfig","buck-out/gen/submodules/MimeTypes/MimeTypes-Release.xcconfig","buck-out/gen/submodules/MosaicLayout/MosaicLayout-Debug.xcconfig","buck-out/gen/submodules/MosaicLayout/MosaicLayout-Profile.xcconfig","buck-out/gen/submodules/MosaicLayout/MosaicLayout-Release.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKit#shared-Debug.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKit#shared-Profile.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKit#shared-Release.xcconfig","buck-out/gen/submodules/MtProtoKit/openssl-Debug.xcconfig","buck-out/gen/submodules/MtProtoKit/openssl-Profile.xcconfig","buck-out/gen/submodules/MtProtoKit/openssl-Release.xcconfig","buck-out/gen/submodules/MusicAlbumArtResources/MusicAlbumArtResources-Debug.xcconfig","buck-out/gen/submodules/MusicAlbumArtResources/MusicAlbumArtResources-Profile.xcconfig","buck-out/gen/submodules/MusicAlbumArtResources/MusicAlbumArtResources-Release.xcconfig","buck-out/gen/submodules/NotificationMuteSettingsUI/NotificationMuteSettingsUI-Debug.xcconfig","buck-out/gen/submodules/NotificationMuteSettingsUI/NotificationMuteSettingsUI-Profile.xcconfig","buck-out/gen/submodules/NotificationMuteSettingsUI/NotificationMuteSettingsUI-Release.xcconfig","buck-out/gen/submodules/NotificationSoundSelectionUI/NotificationSoundSelectionUI-Debug.xcconfig","buck-out/gen/submodules/NotificationSoundSelectionUI/NotificationSoundSelectionUI-Profile.xcconfig","buck-out/gen/submodules/NotificationSoundSelectionUI/NotificationSoundSelectionUI-Release.xcconfig","buck-out/gen/submodules/OpenInExternalAppUI/OpenInExternalAppUI-Debug.xcconfig","buck-out/gen/submodules/OpenInExternalAppUI/OpenInExternalAppUI-Profile.xcconfig","buck-out/gen/submodules/OpenInExternalAppUI/OpenInExternalAppUI-Release.xcconfig","buck-out/gen/submodules/Opus/opus-Debug.xcconfig","buck-out/gen/submodules/Opus/opus-Profile.xcconfig","buck-out/gen/submodules/Opus/opus-Release.xcconfig","buck-out/gen/submodules/Opus/opus_lib-Debug.xcconfig","buck-out/gen/submodules/Opus/opus_lib-Profile.xcconfig","buck-out/gen/submodules/Opus/opus_lib-Release.xcconfig","buck-out/gen/submodules/OpusBinding/OpusBinding-Debug.xcconfig","buck-out/gen/submodules/OpusBinding/OpusBinding-Profile.xcconfig","buck-out/gen/submodules/OpusBinding/OpusBinding-Release.xcconfig","buck-out/gen/submodules/OverlayStatusController/OverlayStatusController-Debug.xcconfig","buck-out/gen/submodules/OverlayStatusController/OverlayStatusController-Profile.xcconfig","buck-out/gen/submodules/OverlayStatusController/OverlayStatusController-Release.xcconfig","buck-out/gen/submodules/PasscodeUI/PasscodeUI-Debug.xcconfig","buck-out/gen/submodules/PasscodeUI/PasscodeUI-Profile.xcconfig","buck-out/gen/submodules/PasscodeUI/PasscodeUI-Release.xcconfig","buck-out/gen/submodules/PassportUI/PassportUI-Debug.xcconfig","buck-out/gen/submodules/PassportUI/PassportUI-Profile.xcconfig","buck-out/gen/submodules/PassportUI/PassportUI-Release.xcconfig","buck-out/gen/submodules/PasswordSetupUI/PasswordSetupUI-Debug.xcconfig","buck-out/gen/submodules/PasswordSetupUI/PasswordSetupUI-Profile.xcconfig","buck-out/gen/submodules/PasswordSetupUI/PasswordSetupUI-Release.xcconfig","buck-out/gen/submodules/Pdf/Pdf-Debug.xcconfig","buck-out/gen/submodules/Pdf/Pdf-Profile.xcconfig","buck-out/gen/submodules/Pdf/Pdf-Release.xcconfig","buck-out/gen/submodules/PeerAvatarGalleryUI/PeerAvatarGalleryUI-Debug.xcconfig","buck-out/gen/submodules/PeerAvatarGalleryUI/PeerAvatarGalleryUI-Profile.xcconfig","buck-out/gen/submodules/PeerAvatarGalleryUI/PeerAvatarGalleryUI-Release.xcconfig","buck-out/gen/submodules/PeerInfoUI/PeerInfoUI-Debug.xcconfig","buck-out/gen/submodules/PeerInfoUI/PeerInfoUI-Profile.xcconfig","buck-out/gen/submodules/PeerInfoUI/PeerInfoUI-Release.xcconfig","buck-out/gen/submodules/PeerOnlineMarkerNode/PeerOnlineMarkerNode-Debug.xcconfig","buck-out/gen/submodules/PeerOnlineMarkerNode/PeerOnlineMarkerNode-Profile.xcconfig","buck-out/gen/submodules/PeerOnlineMarkerNode/PeerOnlineMarkerNode-Release.xcconfig","buck-out/gen/submodules/PeerPresenceStatusManager/PeerPresenceStatusManager-Debug.xcconfig","buck-out/gen/submodules/PeerPresenceStatusManager/PeerPresenceStatusManager-Profile.xcconfig","buck-out/gen/submodules/PeerPresenceStatusManager/PeerPresenceStatusManager-Release.xcconfig","buck-out/gen/submodules/PeersNearbyIconNode/PeersNearbyIconNode-Debug.xcconfig","buck-out/gen/submodules/PeersNearbyIconNode/PeersNearbyIconNode-Profile.xcconfig","buck-out/gen/submodules/PeersNearbyIconNode/PeersNearbyIconNode-Release.xcconfig","buck-out/gen/submodules/PeersNearbyUI/PeersNearbyUI-Debug.xcconfig","buck-out/gen/submodules/PeersNearbyUI/PeersNearbyUI-Profile.xcconfig","buck-out/gen/submodules/PeersNearbyUI/PeersNearbyUI-Release.xcconfig","buck-out/gen/submodules/PersistentStringHash/PersistentStringHash-Debug.xcconfig","buck-out/gen/submodules/PersistentStringHash/PersistentStringHash-Profile.xcconfig","buck-out/gen/submodules/PersistentStringHash/PersistentStringHash-Release.xcconfig","buck-out/gen/submodules/PhoneInputNode/PhoneInputNode-Debug.xcconfig","buck-out/gen/submodules/PhoneInputNode/PhoneInputNode-Profile.xcconfig","buck-out/gen/submodules/PhoneInputNode/PhoneInputNode-Release.xcconfig","buck-out/gen/submodules/PhotoResources/PhotoResources-Debug.xcconfig","buck-out/gen/submodules/PhotoResources/PhotoResources-Profile.xcconfig","buck-out/gen/submodules/PhotoResources/PhotoResources-Release.xcconfig","buck-out/gen/submodules/PlatformRestrictionMatching/PlatformRestrictionMatching-Debug.xcconfig","buck-out/gen/submodules/PlatformRestrictionMatching/PlatformRestrictionMatching-Profile.xcconfig","buck-out/gen/submodules/PlatformRestrictionMatching/PlatformRestrictionMatching-Release.xcconfig","buck-out/gen/submodules/Postbox/Postbox#shared-Debug.xcconfig","buck-out/gen/submodules/Postbox/Postbox#shared-Profile.xcconfig","buck-out/gen/submodules/Postbox/Postbox#shared-Release.xcconfig","buck-out/gen/submodules/ProgressNavigationButtonNode/ProgressNavigationButtonNode-Debug.xcconfig","buck-out/gen/submodules/ProgressNavigationButtonNode/ProgressNavigationButtonNode-Profile.xcconfig","buck-out/gen/submodules/ProgressNavigationButtonNode/ProgressNavigationButtonNode-Release.xcconfig","buck-out/gen/submodules/QrCode/QrCode-Debug.xcconfig","buck-out/gen/submodules/QrCode/QrCode-Profile.xcconfig","buck-out/gen/submodules/QrCode/QrCode-Release.xcconfig","buck-out/gen/submodules/RMIntro/RMIntro-Debug.xcconfig","buck-out/gen/submodules/RMIntro/RMIntro-Profile.xcconfig","buck-out/gen/submodules/RMIntro/RMIntro-Release.xcconfig","buck-out/gen/submodules/RadialStatusNode/RadialStatusNode-Debug.xcconfig","buck-out/gen/submodules/RadialStatusNode/RadialStatusNode-Profile.xcconfig","buck-out/gen/submodules/RadialStatusNode/RadialStatusNode-Release.xcconfig","buck-out/gen/submodules/RaiseToListen/RaiseToListen-Debug.xcconfig","buck-out/gen/submodules/RaiseToListen/RaiseToListen-Profile.xcconfig","buck-out/gen/submodules/RaiseToListen/RaiseToListen-Release.xcconfig","buck-out/gen/submodules/ReactionSelectionNode/ReactionSelectionNode-Debug.xcconfig","buck-out/gen/submodules/ReactionSelectionNode/ReactionSelectionNode-Profile.xcconfig","buck-out/gen/submodules/ReactionSelectionNode/ReactionSelectionNode-Release.xcconfig","buck-out/gen/submodules/SSignalKit/SSignalKit/SSignalKit-Debug.xcconfig","buck-out/gen/submodules/SSignalKit/SSignalKit/SSignalKit-Profile.xcconfig","buck-out/gen/submodules/SSignalKit/SSignalKit/SSignalKit-Release.xcconfig","buck-out/gen/submodules/SSignalKit/SwiftSignalKit/SwiftSignalKit#shared-Debug.xcconfig","buck-out/gen/submodules/SSignalKit/SwiftSignalKit/SwiftSignalKit#shared-Profile.xcconfig","buck-out/gen/submodules/SSignalKit/SwiftSignalKit/SwiftSignalKit#shared-Release.xcconfig","buck-out/gen/submodules/SaveToCameraRoll/SaveToCameraRoll-Debug.xcconfig","buck-out/gen/submodules/SaveToCameraRoll/SaveToCameraRoll-Profile.xcconfig","buck-out/gen/submodules/SaveToCameraRoll/SaveToCameraRoll-Release.xcconfig","buck-out/gen/submodules/ScreenCaptureDetection/ScreenCaptureDetection-Debug.xcconfig","buck-out/gen/submodules/ScreenCaptureDetection/ScreenCaptureDetection-Profile.xcconfig","buck-out/gen/submodules/ScreenCaptureDetection/ScreenCaptureDetection-Release.xcconfig","buck-out/gen/submodules/SearchBarNode/SearchBarNode-Debug.xcconfig","buck-out/gen/submodules/SearchBarNode/SearchBarNode-Profile.xcconfig","buck-out/gen/submodules/SearchBarNode/SearchBarNode-Release.xcconfig","buck-out/gen/submodules/SearchUI/SearchUI-Debug.xcconfig","buck-out/gen/submodules/SearchUI/SearchUI-Profile.xcconfig","buck-out/gen/submodules/SearchUI/SearchUI-Release.xcconfig","buck-out/gen/submodules/SegmentedControlNode/SegmentedControlNode-Debug.xcconfig","buck-out/gen/submodules/SegmentedControlNode/SegmentedControlNode-Profile.xcconfig","buck-out/gen/submodules/SegmentedControlNode/SegmentedControlNode-Release.xcconfig","buck-out/gen/submodules/SelectablePeerNode/SelectablePeerNode-Debug.xcconfig","buck-out/gen/submodules/SelectablePeerNode/SelectablePeerNode-Profile.xcconfig","buck-out/gen/submodules/SelectablePeerNode/SelectablePeerNode-Release.xcconfig","buck-out/gen/submodules/SettingsUI/SettingsUI-Debug.xcconfig","buck-out/gen/submodules/SettingsUI/SettingsUI-Profile.xcconfig","buck-out/gen/submodules/SettingsUI/SettingsUI-Release.xcconfig","buck-out/gen/submodules/ShareController/ShareController-Debug.xcconfig","buck-out/gen/submodules/ShareController/ShareController-Profile.xcconfig","buck-out/gen/submodules/ShareController/ShareController-Release.xcconfig","buck-out/gen/submodules/ShareItems/ShareItems-Debug.xcconfig","buck-out/gen/submodules/ShareItems/ShareItems-Profile.xcconfig","buck-out/gen/submodules/ShareItems/ShareItems-Release.xcconfig","buck-out/gen/submodules/SinglePhoneInputNode/SinglePhoneInputNode-Debug.xcconfig","buck-out/gen/submodules/SinglePhoneInputNode/SinglePhoneInputNode-Profile.xcconfig","buck-out/gen/submodules/SinglePhoneInputNode/SinglePhoneInputNode-Release.xcconfig","buck-out/gen/submodules/SolidRoundedButtonNode/SolidRoundedButtonNode-Debug.xcconfig","buck-out/gen/submodules/SolidRoundedButtonNode/SolidRoundedButtonNode-Profile.xcconfig","buck-out/gen/submodules/SolidRoundedButtonNode/SolidRoundedButtonNode-Release.xcconfig","buck-out/gen/submodules/StickerPackPreviewUI/StickerPackPreviewUI-Debug.xcconfig","buck-out/gen/submodules/StickerPackPreviewUI/StickerPackPreviewUI-Profile.xcconfig","buck-out/gen/submodules/StickerPackPreviewUI/StickerPackPreviewUI-Release.xcconfig","buck-out/gen/submodules/StickerResources/StickerResources-Debug.xcconfig","buck-out/gen/submodules/StickerResources/StickerResources-Profile.xcconfig","buck-out/gen/submodules/StickerResources/StickerResources-Release.xcconfig","buck-out/gen/submodules/Stripe/Stripe-Debug.xcconfig","buck-out/gen/submodules/Stripe/Stripe-Profile.xcconfig","buck-out/gen/submodules/Stripe/Stripe-Release.xcconfig","buck-out/gen/submodules/SwipeToDismissGesture/SwipeToDismissGesture-Debug.xcconfig","buck-out/gen/submodules/SwipeToDismissGesture/SwipeToDismissGesture-Profile.xcconfig","buck-out/gen/submodules/SwipeToDismissGesture/SwipeToDismissGesture-Release.xcconfig","buck-out/gen/submodules/SwitchNode/SwitchNode-Debug.xcconfig","buck-out/gen/submodules/SwitchNode/SwitchNode-Profile.xcconfig","buck-out/gen/submodules/SwitchNode/SwitchNode-Release.xcconfig","buck-out/gen/submodules/TelegramApi/TelegramApi-Debug.xcconfig","buck-out/gen/submodules/TelegramApi/TelegramApi-Profile.xcconfig","buck-out/gen/submodules/TelegramApi/TelegramApi-Release.xcconfig","buck-out/gen/submodules/TelegramAudio/TelegramAudio-Debug.xcconfig","buck-out/gen/submodules/TelegramAudio/TelegramAudio-Profile.xcconfig","buck-out/gen/submodules/TelegramAudio/TelegramAudio-Release.xcconfig","buck-out/gen/submodules/TelegramBaseController/TelegramBaseController-Debug.xcconfig","buck-out/gen/submodules/TelegramBaseController/TelegramBaseController-Profile.xcconfig","buck-out/gen/submodules/TelegramBaseController/TelegramBaseController-Release.xcconfig","buck-out/gen/submodules/TelegramCallsUI/TelegramCallsUI-Debug.xcconfig","buck-out/gen/submodules/TelegramCallsUI/TelegramCallsUI-Profile.xcconfig","buck-out/gen/submodules/TelegramCallsUI/TelegramCallsUI-Release.xcconfig","buck-out/gen/submodules/TelegramCore/TelegramCore#shared-Debug.xcconfig","buck-out/gen/submodules/TelegramCore/TelegramCore#shared-Profile.xcconfig","buck-out/gen/submodules/TelegramCore/TelegramCore#shared-Release.xcconfig","buck-out/gen/submodules/TelegramNotices/TelegramNotices-Debug.xcconfig","buck-out/gen/submodules/TelegramNotices/TelegramNotices-Profile.xcconfig","buck-out/gen/submodules/TelegramNotices/TelegramNotices-Release.xcconfig","buck-out/gen/submodules/TelegramPermissions/TelegramPermissions-Debug.xcconfig","buck-out/gen/submodules/TelegramPermissions/TelegramPermissions-Profile.xcconfig","buck-out/gen/submodules/TelegramPermissions/TelegramPermissions-Release.xcconfig","buck-out/gen/submodules/TelegramPermissionsUI/TelegramPermissionsUI-Debug.xcconfig","buck-out/gen/submodules/TelegramPermissionsUI/TelegramPermissionsUI-Profile.xcconfig","buck-out/gen/submodules/TelegramPermissionsUI/TelegramPermissionsUI-Release.xcconfig","buck-out/gen/submodules/TelegramPresentationData/TelegramPresentationData-Debug.xcconfig","buck-out/gen/submodules/TelegramPresentationData/TelegramPresentationData-Profile.xcconfig","buck-out/gen/submodules/TelegramPresentationData/TelegramPresentationData-Release.xcconfig","buck-out/gen/submodules/TelegramStringFormatting/TelegramStringFormatting-Debug.xcconfig","buck-out/gen/submodules/TelegramStringFormatting/TelegramStringFormatting-Profile.xcconfig","buck-out/gen/submodules/TelegramStringFormatting/TelegramStringFormatting-Release.xcconfig","buck-out/gen/submodules/TelegramUI/TelegramUI#shared-Debug.xcconfig","buck-out/gen/submodules/TelegramUI/TelegramUI#shared-Profile.xcconfig","buck-out/gen/submodules/TelegramUI/TelegramUI#shared-Release.xcconfig","buck-out/gen/submodules/TelegramUIPreferences/TelegramUIPreferences-Debug.xcconfig","buck-out/gen/submodules/TelegramUIPreferences/TelegramUIPreferences-Profile.xcconfig","buck-out/gen/submodules/TelegramUIPreferences/TelegramUIPreferences-Release.xcconfig","buck-out/gen/submodules/TelegramUniversalVideoContent/TelegramUniversalVideoContent-Debug.xcconfig","buck-out/gen/submodules/TelegramUniversalVideoContent/TelegramUniversalVideoContent-Profile.xcconfig","buck-out/gen/submodules/TelegramUniversalVideoContent/TelegramUniversalVideoContent-Release.xcconfig","buck-out/gen/submodules/TelegramUpdateUI/TelegramUpdateUI-Debug.xcconfig","buck-out/gen/submodules/TelegramUpdateUI/TelegramUpdateUI-Profile.xcconfig","buck-out/gen/submodules/TelegramUpdateUI/TelegramUpdateUI-Release.xcconfig","buck-out/gen/submodules/TelegramVoip/TelegramVoip-Debug.xcconfig","buck-out/gen/submodules/TelegramVoip/TelegramVoip-Profile.xcconfig","buck-out/gen/submodules/TelegramVoip/TelegramVoip-Release.xcconfig","buck-out/gen/submodules/TemporaryCachedPeerDataManager/TemporaryCachedPeerDataManager-Debug.xcconfig","buck-out/gen/submodules/TemporaryCachedPeerDataManager/TemporaryCachedPeerDataManager-Profile.xcconfig","buck-out/gen/submodules/TemporaryCachedPeerDataManager/TemporaryCachedPeerDataManager-Release.xcconfig","buck-out/gen/submodules/TextFormat/TextFormat-Debug.xcconfig","buck-out/gen/submodules/TextFormat/TextFormat-Profile.xcconfig","buck-out/gen/submodules/TextFormat/TextFormat-Release.xcconfig","buck-out/gen/submodules/TextSelectionNode/TextSelectionNode-Debug.xcconfig","buck-out/gen/submodules/TextSelectionNode/TextSelectionNode-Profile.xcconfig","buck-out/gen/submodules/TextSelectionNode/TextSelectionNode-Release.xcconfig","buck-out/gen/submodules/TinyThumbnail/TinyThumbnail-Debug.xcconfig","buck-out/gen/submodules/TinyThumbnail/TinyThumbnail-Profile.xcconfig","buck-out/gen/submodules/TinyThumbnail/TinyThumbnail-Release.xcconfig","buck-out/gen/submodules/TouchDownGesture/TouchDownGesture-Debug.xcconfig","buck-out/gen/submodules/TouchDownGesture/TouchDownGesture-Profile.xcconfig","buck-out/gen/submodules/TouchDownGesture/TouchDownGesture-Release.xcconfig","buck-out/gen/submodules/Tuples/Tuples-Debug.xcconfig","buck-out/gen/submodules/Tuples/Tuples-Profile.xcconfig","buck-out/gen/submodules/Tuples/Tuples-Release.xcconfig","buck-out/gen/submodules/UndoUI/UndoUI-Debug.xcconfig","buck-out/gen/submodules/UndoUI/UndoUI-Profile.xcconfig","buck-out/gen/submodules/UndoUI/UndoUI-Release.xcconfig","buck-out/gen/submodules/UrlEscaping/UrlEscaping-Debug.xcconfig","buck-out/gen/submodules/UrlEscaping/UrlEscaping-Profile.xcconfig","buck-out/gen/submodules/UrlEscaping/UrlEscaping-Release.xcconfig","buck-out/gen/submodules/UrlHandling/UrlHandling-Debug.xcconfig","buck-out/gen/submodules/UrlHandling/UrlHandling-Profile.xcconfig","buck-out/gen/submodules/UrlHandling/UrlHandling-Release.xcconfig","buck-out/gen/submodules/WallpaperResources/WallpaperResources-Debug.xcconfig","buck-out/gen/submodules/WallpaperResources/WallpaperResources-Profile.xcconfig","buck-out/gen/submodules/WallpaperResources/WallpaperResources-Release.xcconfig","buck-out/gen/submodules/WatchBridge/WatchBridge-Debug.xcconfig","buck-out/gen/submodules/WatchBridge/WatchBridge-Profile.xcconfig","buck-out/gen/submodules/WatchBridge/WatchBridge-Release.xcconfig","buck-out/gen/submodules/WatchBridgeAudio/WatchBridgeAudio-Debug.xcconfig","buck-out/gen/submodules/WatchBridgeAudio/WatchBridgeAudio-Profile.xcconfig","buck-out/gen/submodules/WatchBridgeAudio/WatchBridgeAudio-Release.xcconfig","buck-out/gen/submodules/WatchCommon/Host/WatchCommon-Debug.xcconfig","buck-out/gen/submodules/WatchCommon/Host/WatchCommon-Profile.xcconfig","buck-out/gen/submodules/WatchCommon/Host/WatchCommon-Release.xcconfig","buck-out/gen/submodules/WebP/WebPImage-Debug.xcconfig","buck-out/gen/submodules/WebP/WebPImage-Profile.xcconfig","buck-out/gen/submodules/WebP/WebPImage-Release.xcconfig","buck-out/gen/submodules/WebP/WebP_lib-Debug.xcconfig","buck-out/gen/submodules/WebP/WebP_lib-Profile.xcconfig","buck-out/gen/submodules/WebP/WebP_lib-Release.xcconfig","buck-out/gen/submodules/WebSearchUI/WebSearchUI-Debug.xcconfig","buck-out/gen/submodules/WebSearchUI/WebSearchUI-Profile.xcconfig","buck-out/gen/submodules/WebSearchUI/WebSearchUI-Release.xcconfig","buck-out/gen/submodules/WebUI/WebUI-Debug.xcconfig","buck-out/gen/submodules/WebUI/WebUI-Profile.xcconfig","buck-out/gen/submodules/WebUI/WebUI-Release.xcconfig","buck-out/gen/submodules/WebsiteType/WebsiteType-Debug.xcconfig","buck-out/gen/submodules/WebsiteType/WebsiteType-Profile.xcconfig","buck-out/gen/submodules/WebsiteType/WebsiteType-Release.xcconfig","buck-out/gen/submodules/YuvConversion/YuvConversion-Debug.xcconfig","buck-out/gen/submodules/YuvConversion/YuvConversion-Profile.xcconfig","buck-out/gen/submodules/YuvConversion/YuvConversion-Release.xcconfig","buck-out/gen/submodules/libphonenumber/libphonenumber-Debug.xcconfig","buck-out/gen/submodules/libphonenumber/libphonenumber-Profile.xcconfig","buck-out/gen/submodules/libphonenumber/libphonenumber-Release.xcconfig","buck-out/gen/submodules/libtgvoip/libtgvoip-Debug.xcconfig","buck-out/gen/submodules/libtgvoip/libtgvoip-Profile.xcconfig","buck-out/gen/submodules/libtgvoip/libtgvoip-Release.xcconfig","buck-out/gen/submodules/lottie-ios/Lottie-Debug.xcconfig","buck-out/gen/submodules/lottie-ios/Lottie-Profile.xcconfig","buck-out/gen/submodules/lottie-ios/Lottie-Release.xcconfig","buck-out/gen/submodules/rlottie/RLottieBinding-Debug.xcconfig","buck-out/gen/submodules/rlottie/RLottieBinding-Profile.xcconfig","buck-out/gen/submodules/rlottie/RLottieBinding-Release.xcconfig","buck-out/gen/submodules/sqlcipher/sqlcipher-Debug.xcconfig","buck-out/gen/submodules/sqlcipher/sqlcipher-Profile.xcconfig","buck-out/gen/submodules/sqlcipher/sqlcipher-Release.xcconfig"],"copy-in-xcode":[]}
\ No newline at end of file
+{"required-targets":["//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_ac3_parser.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_adts_parser.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_avcodec.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_avdct.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_avfft.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_d3d11va.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_dirac.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_dv_profile.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_dxva2.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_jni.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_mediacodec.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_qsv.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_vaapi.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_vdpau.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_version.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_videotoolbox.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_vorbis_parser.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_xvmc.h","//submodules/FFMpeg:ffmpeg_header_libavformat_sub_avformat.h","//submodules/FFMpeg:ffmpeg_header_libavformat_sub_avio.h","//submodules/FFMpeg:ffmpeg_header_libavformat_sub_version.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_adler32.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_aes.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_aes_ctr.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_attributes.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_audio_fifo.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avassert.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avconfig.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avstring.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avutil.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_base64.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_blowfish.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_bprint.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_bswap.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_buffer.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_camellia.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_cast5.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_channel_layout.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_common.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_cpu.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_crc.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_des.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_dict.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_display.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_downmix_info.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_encryption_info.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_error.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_eval.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_ffversion.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_fifo.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_file.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_frame.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hash.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hmac.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_cuda.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_d3d11va.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_drm.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_dxva2.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_mediacodec.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_qsv.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_vaapi.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_vdpau.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_videotoolbox.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_imgutils.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_intfloat.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_intreadwrite.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_lfg.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_log.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_lzo.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_macros.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_mastering_display_metadata.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_mathematics.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_md5.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_mem.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_motion_vector.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_murmur3.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_opt.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_parseutils.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_pixdesc.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_pixelutils.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_pixfmt.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_random_seed.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_rational.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_rc4.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_replaygain.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_ripemd.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_samplefmt.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_sha.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_sha512.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_spherical.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_stereo3d.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_tea.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_threadmessage.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_time.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_timecode.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_timestamp.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_tree.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_twofish.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_version.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_xtea.h","//submodules/FFMpeg:ffmpeg_header_libswresample_sub_swresample.h","//submodules/FFMpeg:ffmpeg_header_libswresample_sub_version.h","//submodules/FFMpeg:libffmpeg_build","//submodules/MtProtoKit:openssl_libs","//submodules/MtProtoKit:ton_libs","//submodules/Opus:opus_lib_file","//submodules/WebP:WebP_lib_file"],"xcconfig-paths":["buck-out/gen/AppLibrary-Debug.xcconfig","buck-out/gen/AppLibrary-Profile.xcconfig","buck-out/gen/AppLibrary-Release.xcconfig","buck-out/gen/IntentsExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/IntentsExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/IntentsExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/NotificationContentExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/NotificationContentExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/NotificationContentExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/NotificationServiceExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/NotificationServiceExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/NotificationServiceExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/ShareExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/ShareExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/ShareExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/Telegram-Debug.xcconfig","buck-out/gen/Telegram-Profile.xcconfig","buck-out/gen/Telegram-Release.xcconfig","buck-out/gen/WatchApp#watchsimulator-i386-Debug.xcconfig","buck-out/gen/WatchApp#watchsimulator-i386-Profile.xcconfig","buck-out/gen/WatchApp#watchsimulator-i386-Release.xcconfig","buck-out/gen/WatchAppExtension#watchsimulator-i386-Debug.xcconfig","buck-out/gen/WatchAppExtension#watchsimulator-i386-Profile.xcconfig","buck-out/gen/WatchAppExtension#watchsimulator-i386-Release.xcconfig","buck-out/gen/WidgetExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/WidgetExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/WidgetExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/submodules/AccountContext/AccountContext-Debug.xcconfig","buck-out/gen/submodules/AccountContext/AccountContext-Profile.xcconfig","buck-out/gen/submodules/AccountContext/AccountContext-Release.xcconfig","buck-out/gen/submodules/ActionSheetPeerItem/ActionSheetPeerItem-Debug.xcconfig","buck-out/gen/submodules/ActionSheetPeerItem/ActionSheetPeerItem-Profile.xcconfig","buck-out/gen/submodules/ActionSheetPeerItem/ActionSheetPeerItem-Release.xcconfig","buck-out/gen/submodules/ActivityIndicator/ActivityIndicator-Debug.xcconfig","buck-out/gen/submodules/ActivityIndicator/ActivityIndicator-Profile.xcconfig","buck-out/gen/submodules/ActivityIndicator/ActivityIndicator-Release.xcconfig","buck-out/gen/submodules/AlertUI/AlertUI-Debug.xcconfig","buck-out/gen/submodules/AlertUI/AlertUI-Profile.xcconfig","buck-out/gen/submodules/AlertUI/AlertUI-Release.xcconfig","buck-out/gen/submodules/AnimationUI/AnimationUI-Debug.xcconfig","buck-out/gen/submodules/AnimationUI/AnimationUI-Profile.xcconfig","buck-out/gen/submodules/AnimationUI/AnimationUI-Release.xcconfig","buck-out/gen/submodules/AppBundle/AppBundle-Debug.xcconfig","buck-out/gen/submodules/AppBundle/AppBundle-Profile.xcconfig","buck-out/gen/submodules/AppBundle/AppBundle-Release.xcconfig","buck-out/gen/submodules/AsyncDisplayKit/AsyncDisplayKit#shared-Debug.xcconfig","buck-out/gen/submodules/AsyncDisplayKit/AsyncDisplayKit#shared-Profile.xcconfig","buck-out/gen/submodules/AsyncDisplayKit/AsyncDisplayKit#shared-Release.xcconfig","buck-out/gen/submodules/AuthorizationUI/AuthorizationUI-Debug.xcconfig","buck-out/gen/submodules/AuthorizationUI/AuthorizationUI-Profile.xcconfig","buck-out/gen/submodules/AuthorizationUI/AuthorizationUI-Release.xcconfig","buck-out/gen/submodules/AvatarNode/AvatarNode-Debug.xcconfig","buck-out/gen/submodules/AvatarNode/AvatarNode-Profile.xcconfig","buck-out/gen/submodules/AvatarNode/AvatarNode-Release.xcconfig","buck-out/gen/submodules/BotPaymentsUI/BotPaymentsUI-Debug.xcconfig","buck-out/gen/submodules/BotPaymentsUI/BotPaymentsUI-Profile.xcconfig","buck-out/gen/submodules/BotPaymentsUI/BotPaymentsUI-Release.xcconfig","buck-out/gen/submodules/BuildConfig/BuildConfig-Debug.xcconfig","buck-out/gen/submodules/BuildConfig/BuildConfig-Profile.xcconfig","buck-out/gen/submodules/BuildConfig/BuildConfig-Release.xcconfig","buck-out/gen/submodules/CallListUI/CallListUI-Debug.xcconfig","buck-out/gen/submodules/CallListUI/CallListUI-Profile.xcconfig","buck-out/gen/submodules/CallListUI/CallListUI-Release.xcconfig","buck-out/gen/submodules/ChatListSearchItemHeader/ChatListSearchItemHeader-Debug.xcconfig","buck-out/gen/submodules/ChatListSearchItemHeader/ChatListSearchItemHeader-Profile.xcconfig","buck-out/gen/submodules/ChatListSearchItemHeader/ChatListSearchItemHeader-Release.xcconfig","buck-out/gen/submodules/ChatListSearchItemNode/ChatListSearchItemNode-Debug.xcconfig","buck-out/gen/submodules/ChatListSearchItemNode/ChatListSearchItemNode-Profile.xcconfig","buck-out/gen/submodules/ChatListSearchItemNode/ChatListSearchItemNode-Release.xcconfig","buck-out/gen/submodules/ChatListSearchRecentPeersNode/ChatListSearchRecentPeersNode-Debug.xcconfig","buck-out/gen/submodules/ChatListSearchRecentPeersNode/ChatListSearchRecentPeersNode-Profile.xcconfig","buck-out/gen/submodules/ChatListSearchRecentPeersNode/ChatListSearchRecentPeersNode-Release.xcconfig","buck-out/gen/submodules/ChatListUI/ChatListUI-Debug.xcconfig","buck-out/gen/submodules/ChatListUI/ChatListUI-Profile.xcconfig","buck-out/gen/submodules/ChatListUI/ChatListUI-Release.xcconfig","buck-out/gen/submodules/ChatTitleActivityNode/ChatTitleActivityNode-Debug.xcconfig","buck-out/gen/submodules/ChatTitleActivityNode/ChatTitleActivityNode-Profile.xcconfig","buck-out/gen/submodules/ChatTitleActivityNode/ChatTitleActivityNode-Release.xcconfig","buck-out/gen/submodules/CheckNode/CheckNode-Debug.xcconfig","buck-out/gen/submodules/CheckNode/CheckNode-Profile.xcconfig","buck-out/gen/submodules/CheckNode/CheckNode-Release.xcconfig","buck-out/gen/submodules/ComposePollUI/ComposePollUI-Debug.xcconfig","buck-out/gen/submodules/ComposePollUI/ComposePollUI-Profile.xcconfig","buck-out/gen/submodules/ComposePollUI/ComposePollUI-Release.xcconfig","buck-out/gen/submodules/ContactListUI/ContactListUI-Debug.xcconfig","buck-out/gen/submodules/ContactListUI/ContactListUI-Profile.xcconfig","buck-out/gen/submodules/ContactListUI/ContactListUI-Release.xcconfig","buck-out/gen/submodules/ContactsPeerItem/ContactsPeerItem-Debug.xcconfig","buck-out/gen/submodules/ContactsPeerItem/ContactsPeerItem-Profile.xcconfig","buck-out/gen/submodules/ContactsPeerItem/ContactsPeerItem-Release.xcconfig","buck-out/gen/submodules/ContextUI/ContextUI-Debug.xcconfig","buck-out/gen/submodules/ContextUI/ContextUI-Profile.xcconfig","buck-out/gen/submodules/ContextUI/ContextUI-Release.xcconfig","buck-out/gen/submodules/CounterContollerTitleView/CounterContollerTitleView-Debug.xcconfig","buck-out/gen/submodules/CounterContollerTitleView/CounterContollerTitleView-Profile.xcconfig","buck-out/gen/submodules/CounterContollerTitleView/CounterContollerTitleView-Release.xcconfig","buck-out/gen/submodules/CountrySelectionUI/CountrySelectionUI-Debug.xcconfig","buck-out/gen/submodules/CountrySelectionUI/CountrySelectionUI-Profile.xcconfig","buck-out/gen/submodules/CountrySelectionUI/CountrySelectionUI-Release.xcconfig","buck-out/gen/submodules/Crc32/Crc32-Debug.xcconfig","buck-out/gen/submodules/Crc32/Crc32-Profile.xcconfig","buck-out/gen/submodules/Crc32/Crc32-Release.xcconfig","buck-out/gen/submodules/DateSelectionUI/DateSelectionUI-Debug.xcconfig","buck-out/gen/submodules/DateSelectionUI/DateSelectionUI-Profile.xcconfig","buck-out/gen/submodules/DateSelectionUI/DateSelectionUI-Release.xcconfig","buck-out/gen/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem-Debug.xcconfig","buck-out/gen/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem-Profile.xcconfig","buck-out/gen/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem-Release.xcconfig","buck-out/gen/submodules/DeviceAccess/DeviceAccess-Debug.xcconfig","buck-out/gen/submodules/DeviceAccess/DeviceAccess-Profile.xcconfig","buck-out/gen/submodules/DeviceAccess/DeviceAccess-Release.xcconfig","buck-out/gen/submodules/DeviceLocationManager/DeviceLocationManager-Debug.xcconfig","buck-out/gen/submodules/DeviceLocationManager/DeviceLocationManager-Profile.xcconfig","buck-out/gen/submodules/DeviceLocationManager/DeviceLocationManager-Release.xcconfig","buck-out/gen/submodules/DeviceProximity/DeviceProximity-Debug.xcconfig","buck-out/gen/submodules/DeviceProximity/DeviceProximity-Profile.xcconfig","buck-out/gen/submodules/DeviceProximity/DeviceProximity-Release.xcconfig","buck-out/gen/submodules/DirectionalPanGesture/DirectionalPanGesture-Debug.xcconfig","buck-out/gen/submodules/DirectionalPanGesture/DirectionalPanGesture-Profile.xcconfig","buck-out/gen/submodules/DirectionalPanGesture/DirectionalPanGesture-Release.xcconfig","buck-out/gen/submodules/Display/Display#shared-Debug.xcconfig","buck-out/gen/submodules/Display/Display#shared-Profile.xcconfig","buck-out/gen/submodules/Display/Display#shared-Release.xcconfig","buck-out/gen/submodules/Emoji/Emoji-Debug.xcconfig","buck-out/gen/submodules/Emoji/Emoji-Profile.xcconfig","buck-out/gen/submodules/Emoji/Emoji-Release.xcconfig","buck-out/gen/submodules/EncryptionKeyVisualization/EncryptionKeyVisualization-Debug.xcconfig","buck-out/gen/submodules/EncryptionKeyVisualization/EncryptionKeyVisualization-Profile.xcconfig","buck-out/gen/submodules/EncryptionKeyVisualization/EncryptionKeyVisualization-Release.xcconfig","buck-out/gen/submodules/FFMpeg/FFMpeg-Debug.xcconfig","buck-out/gen/submodules/FFMpeg/FFMpeg-Profile.xcconfig","buck-out/gen/submodules/FFMpeg/FFMpeg-Release.xcconfig","buck-out/gen/submodules/FFMpeg/libffmpeg-Debug.xcconfig","buck-out/gen/submodules/FFMpeg/libffmpeg-Profile.xcconfig","buck-out/gen/submodules/FFMpeg/libffmpeg-Release.xcconfig","buck-out/gen/submodules/GZip/GZip-Debug.xcconfig","buck-out/gen/submodules/GZip/GZip-Profile.xcconfig","buck-out/gen/submodules/GZip/GZip-Release.xcconfig","buck-out/gen/submodules/GalleryUI/GalleryUI-Debug.xcconfig","buck-out/gen/submodules/GalleryUI/GalleryUI-Profile.xcconfig","buck-out/gen/submodules/GalleryUI/GalleryUI-Release.xcconfig","buck-out/gen/submodules/GameUI/GameUI-Debug.xcconfig","buck-out/gen/submodules/GameUI/GameUI-Profile.xcconfig","buck-out/gen/submodules/GameUI/GameUI-Release.xcconfig","buck-out/gen/submodules/Geocoding/Geocoding-Debug.xcconfig","buck-out/gen/submodules/Geocoding/Geocoding-Profile.xcconfig","buck-out/gen/submodules/Geocoding/Geocoding-Release.xcconfig","buck-out/gen/submodules/GridMessageSelectionNode/GridMessageSelectionNode-Debug.xcconfig","buck-out/gen/submodules/GridMessageSelectionNode/GridMessageSelectionNode-Profile.xcconfig","buck-out/gen/submodules/GridMessageSelectionNode/GridMessageSelectionNode-Release.xcconfig","buck-out/gen/submodules/HashtagSearchUI/HashtagSearchUI-Debug.xcconfig","buck-out/gen/submodules/HashtagSearchUI/HashtagSearchUI-Profile.xcconfig","buck-out/gen/submodules/HashtagSearchUI/HashtagSearchUI-Release.xcconfig","buck-out/gen/submodules/HexColor/HexColor-Debug.xcconfig","buck-out/gen/submodules/HexColor/HexColor-Profile.xcconfig","buck-out/gen/submodules/HexColor/HexColor-Release.xcconfig","buck-out/gen/submodules/HockeySDK-iOS/HockeySDK-Debug.xcconfig","buck-out/gen/submodules/HockeySDK-iOS/HockeySDK-Profile.xcconfig","buck-out/gen/submodules/HockeySDK-iOS/HockeySDK-Release.xcconfig","buck-out/gen/submodules/HorizontalPeerItem/HorizontalPeerItem-Debug.xcconfig","buck-out/gen/submodules/HorizontalPeerItem/HorizontalPeerItem-Profile.xcconfig","buck-out/gen/submodules/HorizontalPeerItem/HorizontalPeerItem-Release.xcconfig","buck-out/gen/submodules/ImageBlur/ImageBlur-Debug.xcconfig","buck-out/gen/submodules/ImageBlur/ImageBlur-Profile.xcconfig","buck-out/gen/submodules/ImageBlur/ImageBlur-Release.xcconfig","buck-out/gen/submodules/ImageCompression/ImageCompression-Debug.xcconfig","buck-out/gen/submodules/ImageCompression/ImageCompression-Profile.xcconfig","buck-out/gen/submodules/ImageCompression/ImageCompression-Release.xcconfig","buck-out/gen/submodules/ImageTransparency/ImageTransparency-Debug.xcconfig","buck-out/gen/submodules/ImageTransparency/ImageTransparency-Profile.xcconfig","buck-out/gen/submodules/ImageTransparency/ImageTransparency-Release.xcconfig","buck-out/gen/submodules/InstantPageCache/InstantPageCache-Debug.xcconfig","buck-out/gen/submodules/InstantPageCache/InstantPageCache-Profile.xcconfig","buck-out/gen/submodules/InstantPageCache/InstantPageCache-Release.xcconfig","buck-out/gen/submodules/InstantPageUI/InstantPageUI-Debug.xcconfig","buck-out/gen/submodules/InstantPageUI/InstantPageUI-Profile.xcconfig","buck-out/gen/submodules/InstantPageUI/InstantPageUI-Release.xcconfig","buck-out/gen/submodules/ItemListAddressItem/ItemListAddressItem-Debug.xcconfig","buck-out/gen/submodules/ItemListAddressItem/ItemListAddressItem-Profile.xcconfig","buck-out/gen/submodules/ItemListAddressItem/ItemListAddressItem-Release.xcconfig","buck-out/gen/submodules/ItemListAvatarAndNameInfoItem/ItemListAvatarAndNameInfoItem-Debug.xcconfig","buck-out/gen/submodules/ItemListAvatarAndNameInfoItem/ItemListAvatarAndNameInfoItem-Profile.xcconfig","buck-out/gen/submodules/ItemListAvatarAndNameInfoItem/ItemListAvatarAndNameInfoItem-Release.xcconfig","buck-out/gen/submodules/ItemListPeerActionItem/ItemListPeerActionItem-Debug.xcconfig","buck-out/gen/submodules/ItemListPeerActionItem/ItemListPeerActionItem-Profile.xcconfig","buck-out/gen/submodules/ItemListPeerActionItem/ItemListPeerActionItem-Release.xcconfig","buck-out/gen/submodules/ItemListPeerItem/ItemListPeerItem-Debug.xcconfig","buck-out/gen/submodules/ItemListPeerItem/ItemListPeerItem-Profile.xcconfig","buck-out/gen/submodules/ItemListPeerItem/ItemListPeerItem-Release.xcconfig","buck-out/gen/submodules/ItemListStickerPackItem/ItemListStickerPackItem-Debug.xcconfig","buck-out/gen/submodules/ItemListStickerPackItem/ItemListStickerPackItem-Profile.xcconfig","buck-out/gen/submodules/ItemListStickerPackItem/ItemListStickerPackItem-Release.xcconfig","buck-out/gen/submodules/ItemListUI/ItemListUI-Debug.xcconfig","buck-out/gen/submodules/ItemListUI/ItemListUI-Profile.xcconfig","buck-out/gen/submodules/ItemListUI/ItemListUI-Release.xcconfig","buck-out/gen/submodules/JoinLinkPreviewUI/JoinLinkPreviewUI-Debug.xcconfig","buck-out/gen/submodules/JoinLinkPreviewUI/JoinLinkPreviewUI-Profile.xcconfig","buck-out/gen/submodules/JoinLinkPreviewUI/JoinLinkPreviewUI-Release.xcconfig","buck-out/gen/submodules/LanguageLinkPreviewUI/LanguageLinkPreviewUI-Debug.xcconfig","buck-out/gen/submodules/LanguageLinkPreviewUI/LanguageLinkPreviewUI-Profile.xcconfig","buck-out/gen/submodules/LanguageLinkPreviewUI/LanguageLinkPreviewUI-Release.xcconfig","buck-out/gen/submodules/LanguageSuggestionUI/LanguageSuggestionUI-Debug.xcconfig","buck-out/gen/submodules/LanguageSuggestionUI/LanguageSuggestionUI-Profile.xcconfig","buck-out/gen/submodules/LanguageSuggestionUI/LanguageSuggestionUI-Release.xcconfig","buck-out/gen/submodules/LegacyComponents/LegacyComponents-Debug.xcconfig","buck-out/gen/submodules/LegacyComponents/LegacyComponents-Profile.xcconfig","buck-out/gen/submodules/LegacyComponents/LegacyComponents-Release.xcconfig","buck-out/gen/submodules/LegacyDataImport/LegacyDataImport-Debug.xcconfig","buck-out/gen/submodules/LegacyDataImport/LegacyDataImport-Profile.xcconfig","buck-out/gen/submodules/LegacyDataImport/LegacyDataImport-Release.xcconfig","buck-out/gen/submodules/LegacyMediaPickerUI/LegacyMediaPickerUI-Debug.xcconfig","buck-out/gen/submodules/LegacyMediaPickerUI/LegacyMediaPickerUI-Profile.xcconfig","buck-out/gen/submodules/LegacyMediaPickerUI/LegacyMediaPickerUI-Release.xcconfig","buck-out/gen/submodules/LegacyUI/LegacyUI-Debug.xcconfig","buck-out/gen/submodules/LegacyUI/LegacyUI-Profile.xcconfig","buck-out/gen/submodules/LegacyUI/LegacyUI-Release.xcconfig","buck-out/gen/submodules/LightweightAccountData/LightweightAccountData-Debug.xcconfig","buck-out/gen/submodules/LightweightAccountData/LightweightAccountData-Profile.xcconfig","buck-out/gen/submodules/LightweightAccountData/LightweightAccountData-Release.xcconfig","buck-out/gen/submodules/ListSectionHeaderNode/ListSectionHeaderNode-Debug.xcconfig","buck-out/gen/submodules/ListSectionHeaderNode/ListSectionHeaderNode-Profile.xcconfig","buck-out/gen/submodules/ListSectionHeaderNode/ListSectionHeaderNode-Release.xcconfig","buck-out/gen/submodules/LiveLocationManager/LiveLocationManager-Debug.xcconfig","buck-out/gen/submodules/LiveLocationManager/LiveLocationManager-Profile.xcconfig","buck-out/gen/submodules/LiveLocationManager/LiveLocationManager-Release.xcconfig","buck-out/gen/submodules/LiveLocationPositionNode/LiveLocationPositionNode-Debug.xcconfig","buck-out/gen/submodules/LiveLocationPositionNode/LiveLocationPositionNode-Profile.xcconfig","buck-out/gen/submodules/LiveLocationPositionNode/LiveLocationPositionNode-Release.xcconfig","buck-out/gen/submodules/LiveLocationTimerNode/LiveLocationTimerNode-Debug.xcconfig","buck-out/gen/submodules/LiveLocationTimerNode/LiveLocationTimerNode-Profile.xcconfig","buck-out/gen/submodules/LiveLocationTimerNode/LiveLocationTimerNode-Release.xcconfig","buck-out/gen/submodules/LocalAuth/LocalAuth-Debug.xcconfig","buck-out/gen/submodules/LocalAuth/LocalAuth-Profile.xcconfig","buck-out/gen/submodules/LocalAuth/LocalAuth-Release.xcconfig","buck-out/gen/submodules/LocalMediaResources/LocalMediaResources-Debug.xcconfig","buck-out/gen/submodules/LocalMediaResources/LocalMediaResources-Profile.xcconfig","buck-out/gen/submodules/LocalMediaResources/LocalMediaResources-Release.xcconfig","buck-out/gen/submodules/LocalizedPeerData/LocalizedPeerData-Debug.xcconfig","buck-out/gen/submodules/LocalizedPeerData/LocalizedPeerData-Profile.xcconfig","buck-out/gen/submodules/LocalizedPeerData/LocalizedPeerData-Release.xcconfig","buck-out/gen/submodules/LocationUI/LocationUI-Debug.xcconfig","buck-out/gen/submodules/LocationUI/LocationUI-Profile.xcconfig","buck-out/gen/submodules/LocationUI/LocationUI-Release.xcconfig","buck-out/gen/submodules/MapResourceToAvatarSizes/MapResourceToAvatarSizes-Debug.xcconfig","buck-out/gen/submodules/MapResourceToAvatarSizes/MapResourceToAvatarSizes-Profile.xcconfig","buck-out/gen/submodules/MapResourceToAvatarSizes/MapResourceToAvatarSizes-Release.xcconfig","buck-out/gen/submodules/MediaPlayer/UniversalMediaPlayer-Debug.xcconfig","buck-out/gen/submodules/MediaPlayer/UniversalMediaPlayer-Profile.xcconfig","buck-out/gen/submodules/MediaPlayer/UniversalMediaPlayer-Release.xcconfig","buck-out/gen/submodules/MediaResources/MediaResources-Debug.xcconfig","buck-out/gen/submodules/MediaResources/MediaResources-Profile.xcconfig","buck-out/gen/submodules/MediaResources/MediaResources-Release.xcconfig","buck-out/gen/submodules/MergeLists/MergeLists-Debug.xcconfig","buck-out/gen/submodules/MergeLists/MergeLists-Profile.xcconfig","buck-out/gen/submodules/MergeLists/MergeLists-Release.xcconfig","buck-out/gen/submodules/MessageReactionListUI/MessageReactionListUI-Debug.xcconfig","buck-out/gen/submodules/MessageReactionListUI/MessageReactionListUI-Profile.xcconfig","buck-out/gen/submodules/MessageReactionListUI/MessageReactionListUI-Release.xcconfig","buck-out/gen/submodules/MimeTypes/MimeTypes-Debug.xcconfig","buck-out/gen/submodules/MimeTypes/MimeTypes-Profile.xcconfig","buck-out/gen/submodules/MimeTypes/MimeTypes-Release.xcconfig","buck-out/gen/submodules/MosaicLayout/MosaicLayout-Debug.xcconfig","buck-out/gen/submodules/MosaicLayout/MosaicLayout-Profile.xcconfig","buck-out/gen/submodules/MosaicLayout/MosaicLayout-Release.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKit#shared-Debug.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKit#shared-Profile.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKit#shared-Release.xcconfig","buck-out/gen/submodules/MtProtoKit/openssl-Debug.xcconfig","buck-out/gen/submodules/MtProtoKit/openssl-Profile.xcconfig","buck-out/gen/submodules/MtProtoKit/openssl-Release.xcconfig","buck-out/gen/submodules/MtProtoKit/ton-Debug.xcconfig","buck-out/gen/submodules/MtProtoKit/ton-Profile.xcconfig","buck-out/gen/submodules/MtProtoKit/ton-Release.xcconfig","buck-out/gen/submodules/MusicAlbumArtResources/MusicAlbumArtResources-Debug.xcconfig","buck-out/gen/submodules/MusicAlbumArtResources/MusicAlbumArtResources-Profile.xcconfig","buck-out/gen/submodules/MusicAlbumArtResources/MusicAlbumArtResources-Release.xcconfig","buck-out/gen/submodules/NotificationMuteSettingsUI/NotificationMuteSettingsUI-Debug.xcconfig","buck-out/gen/submodules/NotificationMuteSettingsUI/NotificationMuteSettingsUI-Profile.xcconfig","buck-out/gen/submodules/NotificationMuteSettingsUI/NotificationMuteSettingsUI-Release.xcconfig","buck-out/gen/submodules/NotificationSoundSelectionUI/NotificationSoundSelectionUI-Debug.xcconfig","buck-out/gen/submodules/NotificationSoundSelectionUI/NotificationSoundSelectionUI-Profile.xcconfig","buck-out/gen/submodules/NotificationSoundSelectionUI/NotificationSoundSelectionUI-Release.xcconfig","buck-out/gen/submodules/OpenInExternalAppUI/OpenInExternalAppUI-Debug.xcconfig","buck-out/gen/submodules/OpenInExternalAppUI/OpenInExternalAppUI-Profile.xcconfig","buck-out/gen/submodules/OpenInExternalAppUI/OpenInExternalAppUI-Release.xcconfig","buck-out/gen/submodules/Opus/opus-Debug.xcconfig","buck-out/gen/submodules/Opus/opus-Profile.xcconfig","buck-out/gen/submodules/Opus/opus-Release.xcconfig","buck-out/gen/submodules/Opus/opus_lib-Debug.xcconfig","buck-out/gen/submodules/Opus/opus_lib-Profile.xcconfig","buck-out/gen/submodules/Opus/opus_lib-Release.xcconfig","buck-out/gen/submodules/OpusBinding/OpusBinding-Debug.xcconfig","buck-out/gen/submodules/OpusBinding/OpusBinding-Profile.xcconfig","buck-out/gen/submodules/OpusBinding/OpusBinding-Release.xcconfig","buck-out/gen/submodules/OverlayStatusController/OverlayStatusController-Debug.xcconfig","buck-out/gen/submodules/OverlayStatusController/OverlayStatusController-Profile.xcconfig","buck-out/gen/submodules/OverlayStatusController/OverlayStatusController-Release.xcconfig","buck-out/gen/submodules/PasscodeUI/PasscodeUI-Debug.xcconfig","buck-out/gen/submodules/PasscodeUI/PasscodeUI-Profile.xcconfig","buck-out/gen/submodules/PasscodeUI/PasscodeUI-Release.xcconfig","buck-out/gen/submodules/PassportUI/PassportUI-Debug.xcconfig","buck-out/gen/submodules/PassportUI/PassportUI-Profile.xcconfig","buck-out/gen/submodules/PassportUI/PassportUI-Release.xcconfig","buck-out/gen/submodules/PasswordSetupUI/PasswordSetupUI-Debug.xcconfig","buck-out/gen/submodules/PasswordSetupUI/PasswordSetupUI-Profile.xcconfig","buck-out/gen/submodules/PasswordSetupUI/PasswordSetupUI-Release.xcconfig","buck-out/gen/submodules/Pdf/Pdf-Debug.xcconfig","buck-out/gen/submodules/Pdf/Pdf-Profile.xcconfig","buck-out/gen/submodules/Pdf/Pdf-Release.xcconfig","buck-out/gen/submodules/PeerAvatarGalleryUI/PeerAvatarGalleryUI-Debug.xcconfig","buck-out/gen/submodules/PeerAvatarGalleryUI/PeerAvatarGalleryUI-Profile.xcconfig","buck-out/gen/submodules/PeerAvatarGalleryUI/PeerAvatarGalleryUI-Release.xcconfig","buck-out/gen/submodules/PeerInfoUI/PeerInfoUI-Debug.xcconfig","buck-out/gen/submodules/PeerInfoUI/PeerInfoUI-Profile.xcconfig","buck-out/gen/submodules/PeerInfoUI/PeerInfoUI-Release.xcconfig","buck-out/gen/submodules/PeerOnlineMarkerNode/PeerOnlineMarkerNode-Debug.xcconfig","buck-out/gen/submodules/PeerOnlineMarkerNode/PeerOnlineMarkerNode-Profile.xcconfig","buck-out/gen/submodules/PeerOnlineMarkerNode/PeerOnlineMarkerNode-Release.xcconfig","buck-out/gen/submodules/PeerPresenceStatusManager/PeerPresenceStatusManager-Debug.xcconfig","buck-out/gen/submodules/PeerPresenceStatusManager/PeerPresenceStatusManager-Profile.xcconfig","buck-out/gen/submodules/PeerPresenceStatusManager/PeerPresenceStatusManager-Release.xcconfig","buck-out/gen/submodules/PeersNearbyIconNode/PeersNearbyIconNode-Debug.xcconfig","buck-out/gen/submodules/PeersNearbyIconNode/PeersNearbyIconNode-Profile.xcconfig","buck-out/gen/submodules/PeersNearbyIconNode/PeersNearbyIconNode-Release.xcconfig","buck-out/gen/submodules/PeersNearbyUI/PeersNearbyUI-Debug.xcconfig","buck-out/gen/submodules/PeersNearbyUI/PeersNearbyUI-Profile.xcconfig","buck-out/gen/submodules/PeersNearbyUI/PeersNearbyUI-Release.xcconfig","buck-out/gen/submodules/PersistentStringHash/PersistentStringHash-Debug.xcconfig","buck-out/gen/submodules/PersistentStringHash/PersistentStringHash-Profile.xcconfig","buck-out/gen/submodules/PersistentStringHash/PersistentStringHash-Release.xcconfig","buck-out/gen/submodules/PhoneInputNode/PhoneInputNode-Debug.xcconfig","buck-out/gen/submodules/PhoneInputNode/PhoneInputNode-Profile.xcconfig","buck-out/gen/submodules/PhoneInputNode/PhoneInputNode-Release.xcconfig","buck-out/gen/submodules/PhotoResources/PhotoResources-Debug.xcconfig","buck-out/gen/submodules/PhotoResources/PhotoResources-Profile.xcconfig","buck-out/gen/submodules/PhotoResources/PhotoResources-Release.xcconfig","buck-out/gen/submodules/PlatformRestrictionMatching/PlatformRestrictionMatching-Debug.xcconfig","buck-out/gen/submodules/PlatformRestrictionMatching/PlatformRestrictionMatching-Profile.xcconfig","buck-out/gen/submodules/PlatformRestrictionMatching/PlatformRestrictionMatching-Release.xcconfig","buck-out/gen/submodules/Postbox/Postbox#shared-Debug.xcconfig","buck-out/gen/submodules/Postbox/Postbox#shared-Profile.xcconfig","buck-out/gen/submodules/Postbox/Postbox#shared-Release.xcconfig","buck-out/gen/submodules/ProgressNavigationButtonNode/ProgressNavigationButtonNode-Debug.xcconfig","buck-out/gen/submodules/ProgressNavigationButtonNode/ProgressNavigationButtonNode-Profile.xcconfig","buck-out/gen/submodules/ProgressNavigationButtonNode/ProgressNavigationButtonNode-Release.xcconfig","buck-out/gen/submodules/QrCode/QrCode-Debug.xcconfig","buck-out/gen/submodules/QrCode/QrCode-Profile.xcconfig","buck-out/gen/submodules/QrCode/QrCode-Release.xcconfig","buck-out/gen/submodules/RMIntro/RMIntro-Debug.xcconfig","buck-out/gen/submodules/RMIntro/RMIntro-Profile.xcconfig","buck-out/gen/submodules/RMIntro/RMIntro-Release.xcconfig","buck-out/gen/submodules/RadialStatusNode/RadialStatusNode-Debug.xcconfig","buck-out/gen/submodules/RadialStatusNode/RadialStatusNode-Profile.xcconfig","buck-out/gen/submodules/RadialStatusNode/RadialStatusNode-Release.xcconfig","buck-out/gen/submodules/RaiseToListen/RaiseToListen-Debug.xcconfig","buck-out/gen/submodules/RaiseToListen/RaiseToListen-Profile.xcconfig","buck-out/gen/submodules/RaiseToListen/RaiseToListen-Release.xcconfig","buck-out/gen/submodules/ReactionSelectionNode/ReactionSelectionNode-Debug.xcconfig","buck-out/gen/submodules/ReactionSelectionNode/ReactionSelectionNode-Profile.xcconfig","buck-out/gen/submodules/ReactionSelectionNode/ReactionSelectionNode-Release.xcconfig","buck-out/gen/submodules/SSignalKit/SSignalKit/SSignalKit-Debug.xcconfig","buck-out/gen/submodules/SSignalKit/SSignalKit/SSignalKit-Profile.xcconfig","buck-out/gen/submodules/SSignalKit/SSignalKit/SSignalKit-Release.xcconfig","buck-out/gen/submodules/SSignalKit/SwiftSignalKit/SwiftSignalKit#shared-Debug.xcconfig","buck-out/gen/submodules/SSignalKit/SwiftSignalKit/SwiftSignalKit#shared-Profile.xcconfig","buck-out/gen/submodules/SSignalKit/SwiftSignalKit/SwiftSignalKit#shared-Release.xcconfig","buck-out/gen/submodules/SaveToCameraRoll/SaveToCameraRoll-Debug.xcconfig","buck-out/gen/submodules/SaveToCameraRoll/SaveToCameraRoll-Profile.xcconfig","buck-out/gen/submodules/SaveToCameraRoll/SaveToCameraRoll-Release.xcconfig","buck-out/gen/submodules/ScreenCaptureDetection/ScreenCaptureDetection-Debug.xcconfig","buck-out/gen/submodules/ScreenCaptureDetection/ScreenCaptureDetection-Profile.xcconfig","buck-out/gen/submodules/ScreenCaptureDetection/ScreenCaptureDetection-Release.xcconfig","buck-out/gen/submodules/SearchBarNode/SearchBarNode-Debug.xcconfig","buck-out/gen/submodules/SearchBarNode/SearchBarNode-Profile.xcconfig","buck-out/gen/submodules/SearchBarNode/SearchBarNode-Release.xcconfig","buck-out/gen/submodules/SearchUI/SearchUI-Debug.xcconfig","buck-out/gen/submodules/SearchUI/SearchUI-Profile.xcconfig","buck-out/gen/submodules/SearchUI/SearchUI-Release.xcconfig","buck-out/gen/submodules/SegmentedControlNode/SegmentedControlNode-Debug.xcconfig","buck-out/gen/submodules/SegmentedControlNode/SegmentedControlNode-Profile.xcconfig","buck-out/gen/submodules/SegmentedControlNode/SegmentedControlNode-Release.xcconfig","buck-out/gen/submodules/SelectablePeerNode/SelectablePeerNode-Debug.xcconfig","buck-out/gen/submodules/SelectablePeerNode/SelectablePeerNode-Profile.xcconfig","buck-out/gen/submodules/SelectablePeerNode/SelectablePeerNode-Release.xcconfig","buck-out/gen/submodules/SettingsUI/SettingsUI-Debug.xcconfig","buck-out/gen/submodules/SettingsUI/SettingsUI-Profile.xcconfig","buck-out/gen/submodules/SettingsUI/SettingsUI-Release.xcconfig","buck-out/gen/submodules/ShareController/ShareController-Debug.xcconfig","buck-out/gen/submodules/ShareController/ShareController-Profile.xcconfig","buck-out/gen/submodules/ShareController/ShareController-Release.xcconfig","buck-out/gen/submodules/ShareItems/ShareItems-Debug.xcconfig","buck-out/gen/submodules/ShareItems/ShareItems-Profile.xcconfig","buck-out/gen/submodules/ShareItems/ShareItems-Release.xcconfig","buck-out/gen/submodules/SinglePhoneInputNode/SinglePhoneInputNode-Debug.xcconfig","buck-out/gen/submodules/SinglePhoneInputNode/SinglePhoneInputNode-Profile.xcconfig","buck-out/gen/submodules/SinglePhoneInputNode/SinglePhoneInputNode-Release.xcconfig","buck-out/gen/submodules/SolidRoundedButtonNode/SolidRoundedButtonNode-Debug.xcconfig","buck-out/gen/submodules/SolidRoundedButtonNode/SolidRoundedButtonNode-Profile.xcconfig","buck-out/gen/submodules/SolidRoundedButtonNode/SolidRoundedButtonNode-Release.xcconfig","buck-out/gen/submodules/StickerPackPreviewUI/StickerPackPreviewUI-Debug.xcconfig","buck-out/gen/submodules/StickerPackPreviewUI/StickerPackPreviewUI-Profile.xcconfig","buck-out/gen/submodules/StickerPackPreviewUI/StickerPackPreviewUI-Release.xcconfig","buck-out/gen/submodules/StickerResources/StickerResources-Debug.xcconfig","buck-out/gen/submodules/StickerResources/StickerResources-Profile.xcconfig","buck-out/gen/submodules/StickerResources/StickerResources-Release.xcconfig","buck-out/gen/submodules/Stripe/Stripe-Debug.xcconfig","buck-out/gen/submodules/Stripe/Stripe-Profile.xcconfig","buck-out/gen/submodules/Stripe/Stripe-Release.xcconfig","buck-out/gen/submodules/SwipeToDismissGesture/SwipeToDismissGesture-Debug.xcconfig","buck-out/gen/submodules/SwipeToDismissGesture/SwipeToDismissGesture-Profile.xcconfig","buck-out/gen/submodules/SwipeToDismissGesture/SwipeToDismissGesture-Release.xcconfig","buck-out/gen/submodules/SwitchNode/SwitchNode-Debug.xcconfig","buck-out/gen/submodules/SwitchNode/SwitchNode-Profile.xcconfig","buck-out/gen/submodules/SwitchNode/SwitchNode-Release.xcconfig","buck-out/gen/submodules/TelegramApi/TelegramApi-Debug.xcconfig","buck-out/gen/submodules/TelegramApi/TelegramApi-Profile.xcconfig","buck-out/gen/submodules/TelegramApi/TelegramApi-Release.xcconfig","buck-out/gen/submodules/TelegramAudio/TelegramAudio-Debug.xcconfig","buck-out/gen/submodules/TelegramAudio/TelegramAudio-Profile.xcconfig","buck-out/gen/submodules/TelegramAudio/TelegramAudio-Release.xcconfig","buck-out/gen/submodules/TelegramBaseController/TelegramBaseController-Debug.xcconfig","buck-out/gen/submodules/TelegramBaseController/TelegramBaseController-Profile.xcconfig","buck-out/gen/submodules/TelegramBaseController/TelegramBaseController-Release.xcconfig","buck-out/gen/submodules/TelegramCallsUI/TelegramCallsUI-Debug.xcconfig","buck-out/gen/submodules/TelegramCallsUI/TelegramCallsUI-Profile.xcconfig","buck-out/gen/submodules/TelegramCallsUI/TelegramCallsUI-Release.xcconfig","buck-out/gen/submodules/TelegramCore/TelegramCore#shared-Debug.xcconfig","buck-out/gen/submodules/TelegramCore/TelegramCore#shared-Profile.xcconfig","buck-out/gen/submodules/TelegramCore/TelegramCore#shared-Release.xcconfig","buck-out/gen/submodules/TelegramNotices/TelegramNotices-Debug.xcconfig","buck-out/gen/submodules/TelegramNotices/TelegramNotices-Profile.xcconfig","buck-out/gen/submodules/TelegramNotices/TelegramNotices-Release.xcconfig","buck-out/gen/submodules/TelegramPermissions/TelegramPermissions-Debug.xcconfig","buck-out/gen/submodules/TelegramPermissions/TelegramPermissions-Profile.xcconfig","buck-out/gen/submodules/TelegramPermissions/TelegramPermissions-Release.xcconfig","buck-out/gen/submodules/TelegramPermissionsUI/TelegramPermissionsUI-Debug.xcconfig","buck-out/gen/submodules/TelegramPermissionsUI/TelegramPermissionsUI-Profile.xcconfig","buck-out/gen/submodules/TelegramPermissionsUI/TelegramPermissionsUI-Release.xcconfig","buck-out/gen/submodules/TelegramPresentationData/TelegramPresentationData-Debug.xcconfig","buck-out/gen/submodules/TelegramPresentationData/TelegramPresentationData-Profile.xcconfig","buck-out/gen/submodules/TelegramPresentationData/TelegramPresentationData-Release.xcconfig","buck-out/gen/submodules/TelegramStringFormatting/TelegramStringFormatting-Debug.xcconfig","buck-out/gen/submodules/TelegramStringFormatting/TelegramStringFormatting-Profile.xcconfig","buck-out/gen/submodules/TelegramStringFormatting/TelegramStringFormatting-Release.xcconfig","buck-out/gen/submodules/TelegramUI/TelegramUI#shared-Debug.xcconfig","buck-out/gen/submodules/TelegramUI/TelegramUI#shared-Profile.xcconfig","buck-out/gen/submodules/TelegramUI/TelegramUI#shared-Release.xcconfig","buck-out/gen/submodules/TelegramUIPreferences/TelegramUIPreferences-Debug.xcconfig","buck-out/gen/submodules/TelegramUIPreferences/TelegramUIPreferences-Profile.xcconfig","buck-out/gen/submodules/TelegramUIPreferences/TelegramUIPreferences-Release.xcconfig","buck-out/gen/submodules/TelegramUniversalVideoContent/TelegramUniversalVideoContent-Debug.xcconfig","buck-out/gen/submodules/TelegramUniversalVideoContent/TelegramUniversalVideoContent-Profile.xcconfig","buck-out/gen/submodules/TelegramUniversalVideoContent/TelegramUniversalVideoContent-Release.xcconfig","buck-out/gen/submodules/TelegramUpdateUI/TelegramUpdateUI-Debug.xcconfig","buck-out/gen/submodules/TelegramUpdateUI/TelegramUpdateUI-Profile.xcconfig","buck-out/gen/submodules/TelegramUpdateUI/TelegramUpdateUI-Release.xcconfig","buck-out/gen/submodules/TelegramVoip/TelegramVoip-Debug.xcconfig","buck-out/gen/submodules/TelegramVoip/TelegramVoip-Profile.xcconfig","buck-out/gen/submodules/TelegramVoip/TelegramVoip-Release.xcconfig","buck-out/gen/submodules/TemporaryCachedPeerDataManager/TemporaryCachedPeerDataManager-Debug.xcconfig","buck-out/gen/submodules/TemporaryCachedPeerDataManager/TemporaryCachedPeerDataManager-Profile.xcconfig","buck-out/gen/submodules/TemporaryCachedPeerDataManager/TemporaryCachedPeerDataManager-Release.xcconfig","buck-out/gen/submodules/TextFormat/TextFormat-Debug.xcconfig","buck-out/gen/submodules/TextFormat/TextFormat-Profile.xcconfig","buck-out/gen/submodules/TextFormat/TextFormat-Release.xcconfig","buck-out/gen/submodules/TextSelectionNode/TextSelectionNode-Debug.xcconfig","buck-out/gen/submodules/TextSelectionNode/TextSelectionNode-Profile.xcconfig","buck-out/gen/submodules/TextSelectionNode/TextSelectionNode-Release.xcconfig","buck-out/gen/submodules/TinyThumbnail/TinyThumbnail-Debug.xcconfig","buck-out/gen/submodules/TinyThumbnail/TinyThumbnail-Profile.xcconfig","buck-out/gen/submodules/TinyThumbnail/TinyThumbnail-Release.xcconfig","buck-out/gen/submodules/TouchDownGesture/TouchDownGesture-Debug.xcconfig","buck-out/gen/submodules/TouchDownGesture/TouchDownGesture-Profile.xcconfig","buck-out/gen/submodules/TouchDownGesture/TouchDownGesture-Release.xcconfig","buck-out/gen/submodules/Tuples/Tuples-Debug.xcconfig","buck-out/gen/submodules/Tuples/Tuples-Profile.xcconfig","buck-out/gen/submodules/Tuples/Tuples-Release.xcconfig","buck-out/gen/submodules/UndoUI/UndoUI-Debug.xcconfig","buck-out/gen/submodules/UndoUI/UndoUI-Profile.xcconfig","buck-out/gen/submodules/UndoUI/UndoUI-Release.xcconfig","buck-out/gen/submodules/UrlEscaping/UrlEscaping-Debug.xcconfig","buck-out/gen/submodules/UrlEscaping/UrlEscaping-Profile.xcconfig","buck-out/gen/submodules/UrlEscaping/UrlEscaping-Release.xcconfig","buck-out/gen/submodules/UrlHandling/UrlHandling-Debug.xcconfig","buck-out/gen/submodules/UrlHandling/UrlHandling-Profile.xcconfig","buck-out/gen/submodules/UrlHandling/UrlHandling-Release.xcconfig","buck-out/gen/submodules/WalletUI/WalletUI-Debug.xcconfig","buck-out/gen/submodules/WalletUI/WalletUI-Profile.xcconfig","buck-out/gen/submodules/WalletUI/WalletUI-Release.xcconfig","buck-out/gen/submodules/WallpaperResources/WallpaperResources-Debug.xcconfig","buck-out/gen/submodules/WallpaperResources/WallpaperResources-Profile.xcconfig","buck-out/gen/submodules/WallpaperResources/WallpaperResources-Release.xcconfig","buck-out/gen/submodules/WatchBridge/WatchBridge-Debug.xcconfig","buck-out/gen/submodules/WatchBridge/WatchBridge-Profile.xcconfig","buck-out/gen/submodules/WatchBridge/WatchBridge-Release.xcconfig","buck-out/gen/submodules/WatchBridgeAudio/WatchBridgeAudio-Debug.xcconfig","buck-out/gen/submodules/WatchBridgeAudio/WatchBridgeAudio-Profile.xcconfig","buck-out/gen/submodules/WatchBridgeAudio/WatchBridgeAudio-Release.xcconfig","buck-out/gen/submodules/WatchCommon/Host/WatchCommon-Debug.xcconfig","buck-out/gen/submodules/WatchCommon/Host/WatchCommon-Profile.xcconfig","buck-out/gen/submodules/WatchCommon/Host/WatchCommon-Release.xcconfig","buck-out/gen/submodules/WebP/WebPImage-Debug.xcconfig","buck-out/gen/submodules/WebP/WebPImage-Profile.xcconfig","buck-out/gen/submodules/WebP/WebPImage-Release.xcconfig","buck-out/gen/submodules/WebP/WebP_lib-Debug.xcconfig","buck-out/gen/submodules/WebP/WebP_lib-Profile.xcconfig","buck-out/gen/submodules/WebP/WebP_lib-Release.xcconfig","buck-out/gen/submodules/WebSearchUI/WebSearchUI-Debug.xcconfig","buck-out/gen/submodules/WebSearchUI/WebSearchUI-Profile.xcconfig","buck-out/gen/submodules/WebSearchUI/WebSearchUI-Release.xcconfig","buck-out/gen/submodules/WebUI/WebUI-Debug.xcconfig","buck-out/gen/submodules/WebUI/WebUI-Profile.xcconfig","buck-out/gen/submodules/WebUI/WebUI-Release.xcconfig","buck-out/gen/submodules/WebsiteType/WebsiteType-Debug.xcconfig","buck-out/gen/submodules/WebsiteType/WebsiteType-Profile.xcconfig","buck-out/gen/submodules/WebsiteType/WebsiteType-Release.xcconfig","buck-out/gen/submodules/YuvConversion/YuvConversion-Debug.xcconfig","buck-out/gen/submodules/YuvConversion/YuvConversion-Profile.xcconfig","buck-out/gen/submodules/YuvConversion/YuvConversion-Release.xcconfig","buck-out/gen/submodules/libphonenumber/libphonenumber-Debug.xcconfig","buck-out/gen/submodules/libphonenumber/libphonenumber-Profile.xcconfig","buck-out/gen/submodules/libphonenumber/libphonenumber-Release.xcconfig","buck-out/gen/submodules/libtgvoip/libtgvoip-Debug.xcconfig","buck-out/gen/submodules/libtgvoip/libtgvoip-Profile.xcconfig","buck-out/gen/submodules/libtgvoip/libtgvoip-Release.xcconfig","buck-out/gen/submodules/lottie-ios/Lottie-Debug.xcconfig","buck-out/gen/submodules/lottie-ios/Lottie-Profile.xcconfig","buck-out/gen/submodules/lottie-ios/Lottie-Release.xcconfig","buck-out/gen/submodules/rlottie/RLottieBinding-Debug.xcconfig","buck-out/gen/submodules/rlottie/RLottieBinding-Profile.xcconfig","buck-out/gen/submodules/rlottie/RLottieBinding-Release.xcconfig","buck-out/gen/submodules/sqlcipher/sqlcipher-Debug.xcconfig","buck-out/gen/submodules/sqlcipher/sqlcipher-Profile.xcconfig","buck-out/gen/submodules/sqlcipher/sqlcipher-Release.xcconfig"],"copy-in-xcode":[]}
\ No newline at end of file
diff --git a/Telegram_Buck.xcworkspace/contents.xcworkspacedata b/Telegram_Buck.xcworkspace/contents.xcworkspacedata
index fbd281cb51..3e61562224 100644
--- a/Telegram_Buck.xcworkspace/contents.xcworkspacedata
+++ b/Telegram_Buck.xcworkspace/contents.xcworkspacedata
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/Telegram_Buck.xcworkspace/xcshareddata/xcschemes/Telegram_Buck.xcscheme b/Telegram_Buck.xcworkspace/xcshareddata/xcschemes/Telegram_Buck.xcscheme
index ab39efcec7..3a3c953561 100644
--- a/Telegram_Buck.xcworkspace/xcshareddata/xcschemes/Telegram_Buck.xcscheme
+++ b/Telegram_Buck.xcworkspace/xcshareddata/xcschemes/Telegram_Buck.xcscheme
@@ -76,6 +76,20 @@
ReferencedContainer = "container:submodules/MtProtoKit/MtProtoKit.xcodeproj">
+
+
+
+
+
+
+
+
Void)? = nil) {
- self.controllerNode.animateOut(completion: completion)
- }
-
@objc private func cancelPressed() {
self.dismiss()
}
diff --git a/submodules/BotPaymentsUI/Sources/BotCheckoutInfoController.swift b/submodules/BotPaymentsUI/Sources/BotCheckoutInfoController.swift
index 773b4b2f88..b959d65554 100644
--- a/submodules/BotPaymentsUI/Sources/BotCheckoutInfoController.swift
+++ b/submodules/BotPaymentsUI/Sources/BotCheckoutInfoController.swift
@@ -153,9 +153,4 @@ final class BotCheckoutInfoController: ViewController {
@objc func donePressed() {
self.controllerNode.verify()
}
-
- override public func dismiss(completion: (() -> Void)? = nil) {
- self.view.endEditing(true)
- self.controllerNode.animateOut(completion: completion)
- }
}
diff --git a/submodules/BotPaymentsUI/Sources/BotCheckoutNativeCardEntryController.swift b/submodules/BotPaymentsUI/Sources/BotCheckoutNativeCardEntryController.swift
index 0ad8395f29..dcefe1f5d2 100644
--- a/submodules/BotPaymentsUI/Sources/BotCheckoutNativeCardEntryController.swift
+++ b/submodules/BotPaymentsUI/Sources/BotCheckoutNativeCardEntryController.swift
@@ -148,9 +148,4 @@ final class BotCheckoutNativeCardEntryController: ViewController {
@objc private func donePressed() {
self.controllerNode.verify()
}
-
- override public func dismiss(completion: (() -> Void)? = nil) {
- self.view.endEditing(true)
- self.controllerNode.animateOut(completion: completion)
- }
}
diff --git a/submodules/BotPaymentsUI/Sources/BotCheckoutWebInteractionController.swift b/submodules/BotPaymentsUI/Sources/BotCheckoutWebInteractionController.swift
index 42c385472c..a07f96cf6b 100644
--- a/submodules/BotPaymentsUI/Sources/BotCheckoutWebInteractionController.swift
+++ b/submodules/BotPaymentsUI/Sources/BotCheckoutWebInteractionController.swift
@@ -71,13 +71,6 @@ final class BotCheckoutWebInteractionController: ViewController {
}
}
- override func dismiss(completion: (() -> Void)? = nil) {
- self.controllerNode.animateOut(completion: { [weak self] in
- self?.presentingViewController?.dismiss(animated: false, completion: nil)
- completion?()
- })
- }
-
override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
super.containerLayoutUpdated(layout, transition: transition)
diff --git a/submodules/BotPaymentsUI/Sources/BotReceiptController.swift b/submodules/BotPaymentsUI/Sources/BotReceiptController.swift
index c21c2013a6..db972623e6 100644
--- a/submodules/BotPaymentsUI/Sources/BotReceiptController.swift
+++ b/submodules/BotPaymentsUI/Sources/BotReceiptController.swift
@@ -83,10 +83,6 @@ public final class BotReceiptController: ViewController {
self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition)
}
- override public func dismiss(completion: (() -> Void)? = nil) {
- self.controllerNode.animateOut(completion: completion)
- }
-
@objc private func cancelPressed() {
self.dismiss()
}
diff --git a/submodules/BuildConfig/Sources/BuildConfig.h b/submodules/BuildConfig/Sources/BuildConfig.h
index 32a001384d..59b1abcd50 100644
--- a/submodules/BuildConfig/Sources/BuildConfig.h
+++ b/submodules/BuildConfig/Sources/BuildConfig.h
@@ -22,4 +22,7 @@
+ (DeviceSpecificEncryptionParameters * _Nonnull)deviceSpecificEncryptionParameters:(NSString * _Nonnull)rootPath baseAppBundleId:(NSString * _Nonnull)baseAppBundleId;
- (NSData * _Nullable)bundleDataWithAppToken:(NSData * _Nullable)appToken;
++ (void)encryptApplicationSecret:(NSData * _Nonnull)secret baseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable))completion;
++ (void)decryptApplicationSecret:(NSData * _Nonnull)secret baseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable))completion;
+
@end
diff --git a/submodules/BuildConfig/Sources/BuildConfig.m b/submodules/BuildConfig/Sources/BuildConfig.m
index 4e45fedb8f..bdf2841213 100644
--- a/submodules/BuildConfig/Sources/BuildConfig.m
+++ b/submodules/BuildConfig/Sources/BuildConfig.m
@@ -554,6 +554,132 @@ API_AVAILABLE(ios(10))
return result;
}
++ (LocalPrivateKey * _Nullable)getApplicationSecretKey:(NSString * _Nonnull)baseAppBundleId API_AVAILABLE(ios(10)) {
+ NSString *bundleSeedId = [self bundleSeedId];
+ if (bundleSeedId == nil) {
+ return nil;
+ }
+
+ NSString *accessGroup = [bundleSeedId stringByAppendingFormat:@".%@", baseAppBundleId];
+
+ NSData *applicationTag = [@"telegramApplicationSecretKey" dataUsingEncoding:NSUTF8StringEncoding];
+
+ NSDictionary *query = @{
+ (id)kSecClass: (id)kSecClassKey,
+ (id)kSecAttrApplicationTag: applicationTag,
+ (id)kSecAttrKeyType: (id)kSecAttrKeyTypeECSECPrimeRandom,
+ (id)kSecAttrAccessGroup: (id)accessGroup,
+ (id)kSecReturnRef: @YES,
+ };
+ SecKeyRef privateKey = NULL;
+ OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef *)&privateKey);
+ if (status != errSecSuccess) {
+ return nil;
+ }
+
+ SecKeyRef publicKey = SecKeyCopyPublicKey(privateKey);
+ if (!publicKey) {
+ if (privateKey) {
+ CFRelease(privateKey);
+ }
+ return nil;
+ }
+
+ LocalPrivateKey *result = [[LocalPrivateKey alloc] initWithPrivateKey:privateKey publicKey:publicKey];
+
+ if (publicKey) {
+ CFRelease(publicKey);
+ }
+ if (privateKey) {
+ CFRelease(privateKey);
+ }
+
+ return result;
+}
+
++ (bool)removeApplicationSecretKey:(NSString * _Nonnull)baseAppBundleId API_AVAILABLE(ios(10)) {
+ NSString *bundleSeedId = [self bundleSeedId];
+ if (bundleSeedId == nil) {
+ return nil;
+ }
+
+ NSData *applicationTag = [@"telegramApplicationSecretKey" dataUsingEncoding:NSUTF8StringEncoding];
+ NSString *accessGroup = [bundleSeedId stringByAppendingFormat:@".%@", baseAppBundleId];
+
+ NSDictionary *query = @{
+ (id)kSecClass: (id)kSecClassKey,
+ (id)kSecAttrApplicationTag: applicationTag,
+ (id)kSecAttrKeyType: (id)kSecAttrKeyTypeECSECPrimeRandom,
+ (id)kSecAttrAccessGroup: (id)accessGroup
+ };
+ OSStatus status = SecItemDelete((__bridge CFDictionaryRef)query);
+ if (status != errSecSuccess) {
+ return false;
+ }
+ return true;
+}
+
++ (LocalPrivateKey * _Nullable)addApplicationSecretKey:(NSString * _Nonnull)baseAppBundleId API_AVAILABLE(ios(10)) {
+ NSString *bundleSeedId = [self bundleSeedId];
+ if (bundleSeedId == nil) {
+ return nil;
+ }
+
+ NSData *applicationTag = [@"telegramApplicationSecretKey" dataUsingEncoding:NSUTF8StringEncoding];
+ NSString *accessGroup = [bundleSeedId stringByAppendingFormat:@".%@", baseAppBundleId];
+
+ SecAccessControlRef access = SecAccessControlCreateWithFlags(kCFAllocatorDefault, kSecAttrAccessibleAlwaysThisDeviceOnly, kSecAccessControlUserPresence | kSecAccessControlPrivateKeyUsage, NULL);
+ NSDictionary *attributes = @{
+ (id)kSecAttrKeyType: (id)kSecAttrKeyTypeECSECPrimeRandom,
+ (id)kSecAttrKeySizeInBits: @256,
+ (id)kSecAttrTokenID: (id)kSecAttrTokenIDSecureEnclave,
+ (id)kSecPrivateKeyAttrs: @{
+ (id)kSecAttrIsPermanent: @YES,
+ (id)kSecAttrApplicationTag: applicationTag,
+ (id)kSecAttrAccessControl: (__bridge id)access,
+ (id)kSecAttrAccessGroup: (id)accessGroup,
+ },
+ };
+
+ CFErrorRef error = NULL;
+ SecKeyRef privateKey = SecKeyCreateRandomKey((__bridge CFDictionaryRef)attributes, &error);
+ if (!privateKey) {
+ if (access) {
+ CFRelease(access);
+ }
+
+ __unused NSError *err = CFBridgingRelease(error);
+ return nil;
+ }
+
+ SecKeyRef publicKey = SecKeyCopyPublicKey(privateKey);
+ if (!publicKey) {
+ if (privateKey) {
+ CFRelease(privateKey);
+ }
+ if (access) {
+ CFRelease(access);
+ }
+
+ __unused NSError *err = CFBridgingRelease(error);
+ return nil;
+ }
+
+ LocalPrivateKey *result = [[LocalPrivateKey alloc] initWithPrivateKey:privateKey publicKey:publicKey];
+
+ if (publicKey) {
+ CFRelease(publicKey);
+ }
+ if (privateKey) {
+ CFRelease(privateKey);
+ }
+ if (access) {
+ CFRelease(access);
+ }
+
+ return result;
+}
+
+ (DeviceSpecificEncryptionParameters * _Nonnull)deviceSpecificEncryptionParameters:(NSString * _Nonnull)rootPath baseAppBundleId:(NSString * _Nonnull)baseAppBundleId {
CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent();
@@ -609,4 +735,35 @@ API_AVAILABLE(ios(10))
return [[DeviceSpecificEncryptionParameters alloc] initWithKey:key salt:salt];
}
++ (void)encryptApplicationSecret:(NSData * _Nonnull)secret baseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable))completion {
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+ LocalPrivateKey *privateKey = [self getApplicationSecretKey:baseAppBundleId];
+ if (privateKey == nil) {
+ privateKey = [self addApplicationSecretKey:baseAppBundleId];
+ }
+ if (privateKey == nil) {
+ completion(nil);
+ return;
+ }
+ NSData *result = [privateKey encrypt:secret];
+ completion(result);
+ });
+}
+
++ (void)decryptApplicationSecret:(NSData * _Nonnull)secret baseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable))completion {
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+ LocalPrivateKey *privateKey = [self getApplicationSecretKey:baseAppBundleId];
+ if (privateKey == nil) {
+ completion(nil);
+ return;
+ }
+ if (privateKey == nil) {
+ completion(nil);
+ return;
+ }
+ NSData *result = [privateKey decrypt:secret];
+ completion(result);
+ });
+}
+
@end
diff --git a/submodules/ContextUI/Sources/ContextController.swift b/submodules/ContextUI/Sources/ContextController.swift
index d890ae4961..ae0d65c4ba 100644
--- a/submodules/ContextUI/Sources/ContextController.swift
+++ b/submodules/ContextUI/Sources/ContextController.swift
@@ -1287,7 +1287,7 @@ public enum ContextContentSource {
case controller(ContextControllerContentSource)
}
-public final class ContextController: ViewController {
+public final class ContextController: ViewController, StandalonePresentableController {
private let account: Account
private var theme: PresentationTheme
private var strings: PresentationStrings
diff --git a/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift b/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift
index 634d08f6c1..e5a634f6de 100644
--- a/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift
+++ b/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift
@@ -205,11 +205,4 @@ public final class AuthorizationSequenceCountrySelectionController: ViewControll
self.dismissed?()
self.dismiss(completion: nil)
}
-
- override public func dismiss(completion: (() -> Void)? = nil) {
- self.navigationContentNode?.deactivate()
- self.controllerNode.animateOut(completion: { [weak self] in
- self?.presentingViewController?.dismiss(animated: true, completion: nil)
- })
- }
}
diff --git a/submodules/Display/Display/ActionSheetController.swift b/submodules/Display/Display/ActionSheetController.swift
index 46df40e0ca..8fd76c318a 100644
--- a/submodules/Display/Display/ActionSheetController.swift
+++ b/submodules/Display/Display/ActionSheetController.swift
@@ -1,7 +1,7 @@
import Foundation
import UIKit
-open class ActionSheetController: ViewController, PresentableController {
+open class ActionSheetController: ViewController, PresentableController, StandalonePresentableController {
private var actionSheetNode: ActionSheetControllerNode {
return self.displayNode as! ActionSheetControllerNode
}
diff --git a/submodules/Display/Display/AlertController.swift b/submodules/Display/Display/AlertController.swift
index 7e74a95ee9..870c1a2a14 100644
--- a/submodules/Display/Display/AlertController.swift
+++ b/submodules/Display/Display/AlertController.swift
@@ -62,7 +62,7 @@ public final class AlertControllerTheme: Equatable {
}
}
-open class AlertController: ViewController {
+open class AlertController: ViewController, StandalonePresentableController {
private var controllerNode: AlertControllerNode {
return self.displayNode as! AlertControllerNode
}
diff --git a/submodules/Display/Display/ContextMenuController.swift b/submodules/Display/Display/ContextMenuController.swift
index eb5e921664..20e0b73e49 100644
--- a/submodules/Display/Display/ContextMenuController.swift
+++ b/submodules/Display/Display/ContextMenuController.swift
@@ -12,7 +12,7 @@ public final class ContextMenuControllerPresentationArguments {
}
}
-public final class ContextMenuController: ViewController, KeyShortcutResponder {
+public final class ContextMenuController: ViewController, KeyShortcutResponder, StandalonePresentableController {
private var contextMenuNode: ContextMenuNode {
return self.displayNode as! ContextMenuNode
}
diff --git a/submodules/Display/Display/Navigation/NavigationController.swift b/submodules/Display/Display/Navigation/NavigationController.swift
index 4d8735844b..829910453e 100644
--- a/submodules/Display/Display/Navigation/NavigationController.swift
+++ b/submodules/Display/Display/Navigation/NavigationController.swift
@@ -642,6 +642,17 @@ open class NavigationController: UINavigationController, ContainableController,
}
}
+ public func replaceController(_ controller: ViewController, with other: ViewController, animated: Bool) {
+ var controllers = self._viewControllers
+ for i in 0 ..< controllers.count {
+ if controllers[i] === controller {
+ controllers[i] = other
+ break
+ }
+ }
+ self.setViewControllers(controllers, animated: animated)
+ }
+
public func replaceControllersAndPush(controllers: [UIViewController], controller: ViewController, animated: Bool, options: NavigationAnimationOptions = [], ready: ValuePromise? = nil, completion: @escaping () -> Void = {}) {
ready?.set(true)
var controllers = controllers
diff --git a/submodules/Display/Display/NavigationBar.swift b/submodules/Display/Display/NavigationBar.swift
index 073729ed53..24f50d137c 100644
--- a/submodules/Display/Display/NavigationBar.swift
+++ b/submodules/Display/Display/NavigationBar.swift
@@ -1053,11 +1053,13 @@ open class NavigationBar: ASDisplayNode {
}
}
+ public var intrinsicCanTransitionInline: Bool = true
+
public var canTransitionInline: Bool {
if let contentNode = self.contentNode, case .replacement = contentNode.mode {
return false
} else {
- return true
+ return self.intrinsicCanTransitionInline
}
}
diff --git a/submodules/Display/Display/TooltipController.swift b/submodules/Display/Display/TooltipController.swift
index 7e9f4526c0..84dcab6b94 100644
--- a/submodules/Display/Display/TooltipController.swift
+++ b/submodules/Display/Display/TooltipController.swift
@@ -53,7 +53,7 @@ public final class TooltipControllerPresentationArguments {
}
}
-open class TooltipController: ViewController {
+open class TooltipController: ViewController, StandalonePresentableController {
private var controllerNode: TooltipControllerNode {
return self.displayNode as! TooltipControllerNode
}
diff --git a/submodules/Display/Display/ViewController.swift b/submodules/Display/Display/ViewController.swift
index 3c04ba961d..3cd5b2d3af 100644
--- a/submodules/Display/Display/ViewController.swift
+++ b/submodules/Display/Display/ViewController.swift
@@ -3,6 +3,9 @@ import UIKit
import AsyncDisplayKit
import SwiftSignalKit
+public protocol StandalonePresentableController: ViewController {
+}
+
private func findCurrentResponder(_ view: UIView) -> UIResponder? {
if view.isFirstResponder {
return view
@@ -471,7 +474,7 @@ public enum ViewControllerNavigationPresentation {
}
public func present(_ controller: ViewController, in context: PresentationContextType, with arguments: Any? = nil, blockInteraction: Bool = false, completion: @escaping () -> Void = {}) {
- if case .window = context, let arguments = arguments as? ViewControllerPresentationArguments, case .modalSheet = arguments.presentationAnimation {
+ if !(controller is StandalonePresentableController), case .window = context, let arguments = arguments as? ViewControllerPresentationArguments, case .modalSheet = arguments.presentationAnimation {
controller.navigationPresentation = .modal
self.push(controller)
} else {
diff --git a/submodules/GalleryUI/Sources/GalleryController.swift b/submodules/GalleryUI/Sources/GalleryController.swift
index a5b146553a..31a75de627 100644
--- a/submodules/GalleryUI/Sources/GalleryController.swift
+++ b/submodules/GalleryUI/Sources/GalleryController.swift
@@ -272,7 +272,7 @@ public enum GalleryControllerItemNodeAction {
case timecode(Double)
}
-public class GalleryController: ViewController {
+public class GalleryController: ViewController, StandalonePresentableController {
public static let darkNavigationTheme = NavigationBarTheme(buttonColor: .white, disabledButtonColor: UIColor(rgb: 0x525252), primaryTextColor: .white, backgroundColor: UIColor(white: 0.0, alpha: 0.6), separatorColor: UIColor(white: 0.0, alpha: 0.8), badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear)
public static let lightNavigationTheme = NavigationBarTheme(buttonColor: UIColor(rgb: 0x007ee5), disabledButtonColor: UIColor(rgb: 0xd0d0d0), primaryTextColor: .black, backgroundColor: UIColor(red: 0.968626451, green: 0.968626451, blue: 0.968626451, alpha: 1.0), separatorColor: UIColor(red: 0.6953125, green: 0.6953125, blue: 0.6953125, alpha: 1.0), badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear)
diff --git a/submodules/GameUI/Sources/GameController.swift b/submodules/GameUI/Sources/GameController.swift
index d82d782767..dc8079c6db 100644
--- a/submodules/GameUI/Sources/GameController.swift
+++ b/submodules/GameUI/Sources/GameController.swift
@@ -75,13 +75,6 @@ public final class GameController: ViewController {
}, message: self.message)
}
- override public func dismiss(completion: (() -> Void)? = nil) {
- self.controllerNode.animateOut(completion: { [weak self] in
- self?.presentingViewController?.dismiss(animated: false, completion: nil)
- completion?()
- })
- }
-
override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
super.containerLayoutUpdated(layout, transition: transition)
diff --git a/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift b/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift
index b0e61f6416..99cd5a3ca1 100644
--- a/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift
+++ b/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift
@@ -142,7 +142,7 @@ public final class InstantPageGalleryControllerPresentationArguments {
}
}
-public class InstantPageGalleryController: ViewController {
+public class InstantPageGalleryController: ViewController, StandalonePresentableController {
private var galleryNode: GalleryControllerNode {
return self.displayNode as! GalleryControllerNode
}
diff --git a/submodules/MtProtoKit/BUCK b/submodules/MtProtoKit/BUCK
index 9d5d6ad159..7849442a2a 100644
--- a/submodules/MtProtoKit/BUCK
+++ b/submodules/MtProtoKit/BUCK
@@ -25,6 +25,58 @@ apple_library(
],
)
+ton_lib_names = [
+ "adnllite",
+ "crc32c",
+ "fift",
+ "keys",
+ "memprof",
+ "tdactor",
+ "tddb",
+ "tdnet",
+ "tdtl",
+ "tdutils",
+ "terminal",
+ "tl-lite-utils",
+ "tl-utils",
+ "tl_api",
+ "tl_lite_api",
+ "tl_tonlib_api",
+ "tl_tonlib_api_json",
+ "ton_block",
+ "ton_crypto",
+ "ton_db",
+ "tonlib",
+ "tonlibjson_private",
+ "tonlibjson_static",
+]
+
+ton_lib_flags = ["-l" + name for name in ton_lib_names]
+
+genrule(
+ name = "ton_libs",
+ srcs = glob([
+ "TON/*.a",
+ ]),
+ bash = "mkdir -p $OUT; cp $SRCS $OUT/",
+ out = "ton_libs",
+ visibility = ["PUBLIC"]
+)
+
+apple_library(
+ name = "ton",
+ visibility = [
+ "//submodules/MtProtoKit:MtProtoKit"
+ ],
+ header_namespace = "ton",
+ exported_headers = glob([
+ "TON/include/*.h",
+ ]),
+ exported_linker_flags = [
+ "-L$(location :ton_libs)",
+ ] + ton_lib_flags,
+)
+
framework(
name = "MtProtoKit",
srcs = glob([
@@ -32,12 +84,16 @@ framework(
"MtProtoKit/*.m",
"thirdparty/AFNetworking/*.m",
"thirdparty/AsyncSocket/*.m",
+ "TON/*.m",
+ "TON/*.mm",
]),
headers = glob([
"*.h",
"MtProtoKit/*.h",
"thirdparty/AFNetworking/*.h",
"thirdparty/AsyncSocket/*.h",
+ "TON/*.h",
+ "TON/include/*.h",
]),
exported_headers = [
"MtProtoKit/MTTime.h",
@@ -99,10 +155,12 @@ framework(
"MTGzip.h",
"MTDatacenterVerificationData.h",
"MTPKCS.h",
+ "TON/TON.h",
],
visibility = ["PUBLIC"],
deps = [
":openssl",
+ ":ton",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",
diff --git a/submodules/MtProtoKit/MtProtoKitDynamic/MtProtoKitDynamic.h b/submodules/MtProtoKit/MtProtoKitDynamic/MtProtoKitDynamic.h
index 71b8db618f..80ab27624e 100644
--- a/submodules/MtProtoKit/MtProtoKitDynamic/MtProtoKitDynamic.h
+++ b/submodules/MtProtoKit/MtProtoKitDynamic/MtProtoKitDynamic.h
@@ -76,3 +76,4 @@ FOUNDATION_EXPORT const unsigned char MtProtoKitDynamicVersionString[];
#import
#import
#import
+#import
diff --git a/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/project.pbxproj b/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/project.pbxproj
index 3927679786..20d7499874 100644
--- a/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/project.pbxproj
+++ b/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/project.pbxproj
@@ -7,6 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
+ D00083C922DD33E500EC418C /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D00083C822DD33E500EC418C /* libc++.tbd */; };
D00354681C173BF0006610DA /* MtProtoKitStabilityTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D00354671C173BF0006610DA /* MtProtoKitStabilityTests.m */; };
D003546A1C173BF0006610DA /* MtProtoKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0CB05F71ADC4483005E298F /* MtProtoKit.framework */; };
D00354701C173CB9006610DA /* SSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0580ABE1B0F3E7100E8235B /* SSignalKit.framework */; };
@@ -34,6 +35,41 @@
D015E01B225CD19E00CB9E8A /* MTGzip.m in Sources */ = {isa = PBXBuildFile; fileRef = D015E017225CD19E00CB9E8A /* MTGzip.m */; };
D015E01C225CD19E00CB9E8A /* MTGzip.m in Sources */ = {isa = PBXBuildFile; fileRef = D015E017225CD19E00CB9E8A /* MTGzip.m */; };
D015E01D225CD19E00CB9E8A /* MTGzip.m in Sources */ = {isa = PBXBuildFile; fileRef = D015E017225CD19E00CB9E8A /* MTGzip.m */; };
+ D018559022DDD36C00AC458A /* Client.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558A22DDD36C00AC458A /* Client.h */; };
+ D018559122DDD36C00AC458A /* TlObject.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558B22DDD36C00AC458A /* TlObject.h */; };
+ D018559222DDD36C00AC458A /* tonlib_api.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558C22DDD36C00AC458A /* tonlib_api.h */; };
+ D018559322DDD36C00AC458A /* int_types.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558D22DDD36C00AC458A /* int_types.h */; };
+ D018559422DDD36C00AC458A /* TonlibCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558E22DDD36C00AC458A /* TonlibCallback.h */; };
+ D018559522DDD36C00AC458A /* platform.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558F22DDD36C00AC458A /* platform.h */; };
+ D018559622DDD37300AC458A /* Client.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558A22DDD36C00AC458A /* Client.h */; };
+ D018559722DDD37300AC458A /* TlObject.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558B22DDD36C00AC458A /* TlObject.h */; };
+ D018559822DDD37300AC458A /* tonlib_api.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558C22DDD36C00AC458A /* tonlib_api.h */; };
+ D018559922DDD37300AC458A /* int_types.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558D22DDD36C00AC458A /* int_types.h */; };
+ D018559A22DDD37300AC458A /* TonlibCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558E22DDD36C00AC458A /* TonlibCallback.h */; };
+ D018559B22DDD37300AC458A /* platform.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558F22DDD36C00AC458A /* platform.h */; };
+ D018559C22DDD38B00AC458A /* libtdutils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D08A159322DD32CF0073B508 /* libtdutils.a */; };
+ D018559D22DDD38B00AC458A /* libtddb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D08A159522DD32CF0073B508 /* libtddb.a */; };
+ D018559E22DDD38B00AC458A /* libtdactor.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D08A159422DD32CF0073B508 /* libtdactor.a */; };
+ D01855B322DDD38D00AC458A /* libtl_lite_api.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D018559F22DDD38B00AC458A /* libtl_lite_api.a */; };
+ D01855B422DDD38D00AC458A /* libadnllite.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A022DDD38C00AC458A /* libadnllite.a */; };
+ D01855B522DDD38D00AC458A /* libfift.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A122DDD38C00AC458A /* libfift.a */; };
+ D01855B622DDD38D00AC458A /* libkeys.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A222DDD38C00AC458A /* libkeys.a */; };
+ D01855B722DDD38D00AC458A /* libtl-lite-utils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A322DDD38C00AC458A /* libtl-lite-utils.a */; };
+ D01855B822DDD38D00AC458A /* libtl-utils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A422DDD38C00AC458A /* libtl-utils.a */; };
+ D01855B922DDD38D00AC458A /* libton_db.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A522DDD38C00AC458A /* libton_db.a */; };
+ D01855BA22DDD38D00AC458A /* libtonlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A622DDD38C00AC458A /* libtonlib.a */; };
+ D01855BB22DDD38D00AC458A /* libterminal.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A722DDD38C00AC458A /* libterminal.a */; };
+ D01855BC22DDD38D00AC458A /* libtonlibjson_private.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A822DDD38C00AC458A /* libtonlibjson_private.a */; };
+ D01855BD22DDD38D00AC458A /* libton_crypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A922DDD38C00AC458A /* libton_crypto.a */; };
+ D01855BE22DDD38D00AC458A /* libtl_tonlib_api_json.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855AA22DDD38C00AC458A /* libtl_tonlib_api_json.a */; };
+ D01855BF22DDD38D00AC458A /* libtdnet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855AB22DDD38C00AC458A /* libtdnet.a */; };
+ D01855C022DDD38D00AC458A /* libtl_tonlib_api.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855AC22DDD38C00AC458A /* libtl_tonlib_api.a */; };
+ D01855C122DDD38D00AC458A /* libtonlibjson_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855AD22DDD38C00AC458A /* libtonlibjson_static.a */; };
+ D01855C222DDD38D00AC458A /* libton_block.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855AE22DDD38D00AC458A /* libton_block.a */; };
+ D01855C322DDD38D00AC458A /* libtl_api.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855AF22DDD38D00AC458A /* libtl_api.a */; };
+ D01855C422DDD38D00AC458A /* libcrc32c.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855B022DDD38D00AC458A /* libcrc32c.a */; };
+ D01855C522DDD38D00AC458A /* libtdtl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855B122DDD38D00AC458A /* libtdtl.a */; };
+ D01855C622DDD38D00AC458A /* libmemprof.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855B222DDD38D00AC458A /* libmemprof.a */; };
D0185E722089D265005E1A6C /* MTProxyConnectivity.h in Headers */ = {isa = PBXBuildFile; fileRef = D0185E702089D265005E1A6C /* MTProxyConnectivity.h */; settings = {ATTRIBUTES = (Public, ); }; };
D0185E732089D265005E1A6C /* MTProxyConnectivity.h in Headers */ = {isa = PBXBuildFile; fileRef = D0185E702089D265005E1A6C /* MTProxyConnectivity.h */; settings = {ATTRIBUTES = (Public, ); }; };
D0185E742089D265005E1A6C /* MTProxyConnectivity.h in Headers */ = {isa = PBXBuildFile; fileRef = D0185E702089D265005E1A6C /* MTProxyConnectivity.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -63,6 +99,10 @@
D073D2D81FB5E493009E1DA2 /* MTBindingTempAuthKeyContext.m in Sources */ = {isa = PBXBuildFile; fileRef = D0C0EAE51FB5DBEA00DCF07C /* MTBindingTempAuthKeyContext.m */; };
D073D2D91FB5E494009E1DA2 /* MTBindingTempAuthKeyContext.m in Sources */ = {isa = PBXBuildFile; fileRef = D0C0EAE51FB5DBEA00DCF07C /* MTBindingTempAuthKeyContext.m */; };
D079AB9C1AF39B8000076F59 /* MtProtoKitMac.h in Headers */ = {isa = PBXBuildFile; fileRef = D079AB9B1AF39B8000076F59 /* MtProtoKitMac.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D08A159122DD32B40073B508 /* tonlibjson_export.h in Headers */ = {isa = PBXBuildFile; fileRef = D08A158F22DD32B40073B508 /* tonlibjson_export.h */; };
+ D08A159222DD32B40073B508 /* tonlib_client_json.h in Headers */ = {isa = PBXBuildFile; fileRef = D08A159022DD32B40073B508 /* tonlib_client_json.h */; };
+ D08A159D22DD32F20073B508 /* TON.h in Headers */ = {isa = PBXBuildFile; fileRef = D08A159B22DD32F20073B508 /* TON.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D08A159E22DD32F20073B508 /* TON.mm in Sources */ = {isa = PBXBuildFile; fileRef = D08A159C22DD32F20073B508 /* TON.mm */; };
D09A59581B582EFF00FC3724 /* MTFileBasedKeychain.h in Headers */ = {isa = PBXBuildFile; fileRef = D09A59561B582EFF00FC3724 /* MTFileBasedKeychain.h */; settings = {ATTRIBUTES = (Public, ); }; };
D09A59591B582EFF00FC3724 /* MTFileBasedKeychain.m in Sources */ = {isa = PBXBuildFile; fileRef = D09A59571B582EFF00FC3724 /* MTFileBasedKeychain.m */; };
D0B0DF5D1DD7E75B003BA12D /* MTBag.m in Sources */ = {isa = PBXBuildFile; fileRef = D0B0DF5C1DD7E75B003BA12D /* MTBag.m */; };
@@ -604,6 +644,9 @@
93DBD23018B2D72800631ADC /* MTRequestErrorContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MTRequestErrorContext.m; path = MtProtoKit/MTRequestErrorContext.m; sourceTree = ""; };
93DBD23318B2D9AA00631ADC /* MTTime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MTTime.h; path = MtProtoKit/MTTime.h; sourceTree = ""; };
93DBD23418B2DA1E00631ADC /* MTTime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MTTime.m; path = MtProtoKit/MTTime.m; sourceTree = ""; };
+ D00083C822DD33E500EC418C /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
+ D00083CA22DD42F600EC418C /* libtonlibjson.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtonlibjson.dylib; path = TON/libtonlibjson.dylib; sourceTree = ""; };
+ D00083D722DD467100EC418C /* libtdjson.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtdjson.dylib; path = TON/libtdjson.dylib; sourceTree = ""; };
D00354651C173BF0006610DA /* MtProtoKitStabilityTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MtProtoKitStabilityTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
D00354671C173BF0006610DA /* MtProtoKitStabilityTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MtProtoKitStabilityTests.m; sourceTree = ""; };
D00354691C173BF0006610DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
@@ -619,6 +662,32 @@
D0119CC820CAD65D00895300 /* PingFoundation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PingFoundation.m; sourceTree = ""; };
D015E016225CD19E00CB9E8A /* MTGzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTGzip.h; sourceTree = ""; };
D015E017225CD19E00CB9E8A /* MTGzip.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MTGzip.m; sourceTree = ""; };
+ D018558A22DDD36C00AC458A /* Client.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Client.h; sourceTree = ""; };
+ D018558B22DDD36C00AC458A /* TlObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TlObject.h; sourceTree = ""; };
+ D018558C22DDD36C00AC458A /* tonlib_api.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tonlib_api.h; sourceTree = ""; };
+ D018558D22DDD36C00AC458A /* int_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = int_types.h; sourceTree = ""; };
+ D018558E22DDD36C00AC458A /* TonlibCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TonlibCallback.h; sourceTree = ""; };
+ D018558F22DDD36C00AC458A /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform.h; sourceTree = ""; };
+ D018559F22DDD38B00AC458A /* libtl_lite_api.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtl_lite_api.a; path = TON/libtl_lite_api.a; sourceTree = ""; };
+ D01855A022DDD38C00AC458A /* libadnllite.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libadnllite.a; path = TON/libadnllite.a; sourceTree = ""; };
+ D01855A122DDD38C00AC458A /* libfift.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libfift.a; path = TON/libfift.a; sourceTree = ""; };
+ D01855A222DDD38C00AC458A /* libkeys.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libkeys.a; path = TON/libkeys.a; sourceTree = ""; };
+ D01855A322DDD38C00AC458A /* libtl-lite-utils.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libtl-lite-utils.a"; path = "TON/libtl-lite-utils.a"; sourceTree = ""; };
+ D01855A422DDD38C00AC458A /* libtl-utils.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libtl-utils.a"; path = "TON/libtl-utils.a"; sourceTree = ""; };
+ D01855A522DDD38C00AC458A /* libton_db.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libton_db.a; path = TON/libton_db.a; sourceTree = ""; };
+ D01855A622DDD38C00AC458A /* libtonlib.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtonlib.a; path = TON/libtonlib.a; sourceTree = ""; };
+ D01855A722DDD38C00AC458A /* libterminal.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libterminal.a; path = TON/libterminal.a; sourceTree = ""; };
+ D01855A822DDD38C00AC458A /* libtonlibjson_private.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtonlibjson_private.a; path = TON/libtonlibjson_private.a; sourceTree = ""; };
+ D01855A922DDD38C00AC458A /* libton_crypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libton_crypto.a; path = TON/libton_crypto.a; sourceTree = ""; };
+ D01855AA22DDD38C00AC458A /* libtl_tonlib_api_json.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtl_tonlib_api_json.a; path = TON/libtl_tonlib_api_json.a; sourceTree = ""; };
+ D01855AB22DDD38C00AC458A /* libtdnet.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtdnet.a; path = TON/libtdnet.a; sourceTree = ""; };
+ D01855AC22DDD38C00AC458A /* libtl_tonlib_api.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtl_tonlib_api.a; path = TON/libtl_tonlib_api.a; sourceTree = ""; };
+ D01855AD22DDD38C00AC458A /* libtonlibjson_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtonlibjson_static.a; path = TON/libtonlibjson_static.a; sourceTree = ""; };
+ D01855AE22DDD38D00AC458A /* libton_block.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libton_block.a; path = TON/libton_block.a; sourceTree = ""; };
+ D01855AF22DDD38D00AC458A /* libtl_api.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtl_api.a; path = TON/libtl_api.a; sourceTree = ""; };
+ D01855B022DDD38D00AC458A /* libcrc32c.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrc32c.a; path = TON/libcrc32c.a; sourceTree = ""; };
+ D01855B122DDD38D00AC458A /* libtdtl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtdtl.a; path = TON/libtdtl.a; sourceTree = ""; };
+ D01855B222DDD38D00AC458A /* libmemprof.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmemprof.a; path = TON/libmemprof.a; sourceTree = ""; };
D0185E702089D265005E1A6C /* MTProxyConnectivity.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTProxyConnectivity.h; sourceTree = ""; };
D0185E712089D265005E1A6C /* MTProxyConnectivity.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MTProxyConnectivity.m; sourceTree = ""; };
D020FAF81D994E3100F279AA /* MTHttpRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MTHttpRequestOperation.h; path = MTProtoKit/MTHttpRequestOperation.h; sourceTree = ""; };
@@ -738,6 +807,14 @@
D079AB9B1AF39B8000076F59 /* MtProtoKitMac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MtProtoKitMac.h; sourceTree = ""; };
D079ABA71AF39B8000076F59 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
D079ABA81AF39B8000076F59 /* MtProtoKitMacTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MtProtoKitMacTests.m; sourceTree = ""; };
+ D08A158F22DD32B40073B508 /* tonlibjson_export.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tonlibjson_export.h; sourceTree = ""; };
+ D08A159022DD32B40073B508 /* tonlib_client_json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tonlib_client_json.h; sourceTree = ""; };
+ D08A159322DD32CF0073B508 /* libtdutils.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtdutils.a; path = TON/libtdutils.a; sourceTree = ""; };
+ D08A159422DD32CF0073B508 /* libtdactor.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtdactor.a; path = TON/libtdactor.a; sourceTree = ""; };
+ D08A159522DD32CF0073B508 /* libtddb.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtddb.a; path = TON/libtddb.a; sourceTree = ""; };
+ D08A159622DD32CF0073B508 /* libtonlibjson.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtonlibjson.a; path = TON/libtonlibjson.a; sourceTree = ""; };
+ D08A159B22DD32F20073B508 /* TON.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TON.h; sourceTree = ""; };
+ D08A159C22DD32F20073B508 /* TON.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = TON.mm; sourceTree = ""; };
D09A59561B582EFF00FC3724 /* MTFileBasedKeychain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MTFileBasedKeychain.h; path = MTProtoKit/MTFileBasedKeychain.h; sourceTree = ""; };
D09A59571B582EFF00FC3724 /* MTFileBasedKeychain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MTFileBasedKeychain.m; path = MTProtoKit/MTFileBasedKeychain.m; sourceTree = ""; };
D0B0DF5C1DD7E75B003BA12D /* MTBag.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MTBag.m; sourceTree = ""; };
@@ -875,6 +952,30 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D01855B322DDD38D00AC458A /* libtl_lite_api.a in Frameworks */,
+ D01855B422DDD38D00AC458A /* libadnllite.a in Frameworks */,
+ D01855B522DDD38D00AC458A /* libfift.a in Frameworks */,
+ D01855B622DDD38D00AC458A /* libkeys.a in Frameworks */,
+ D01855B722DDD38D00AC458A /* libtl-lite-utils.a in Frameworks */,
+ D01855B822DDD38D00AC458A /* libtl-utils.a in Frameworks */,
+ D01855B922DDD38D00AC458A /* libton_db.a in Frameworks */,
+ D01855BA22DDD38D00AC458A /* libtonlib.a in Frameworks */,
+ D01855BB22DDD38D00AC458A /* libterminal.a in Frameworks */,
+ D01855BC22DDD38D00AC458A /* libtonlibjson_private.a in Frameworks */,
+ D01855BD22DDD38D00AC458A /* libton_crypto.a in Frameworks */,
+ D01855BE22DDD38D00AC458A /* libtl_tonlib_api_json.a in Frameworks */,
+ D01855BF22DDD38D00AC458A /* libtdnet.a in Frameworks */,
+ D01855C022DDD38D00AC458A /* libtl_tonlib_api.a in Frameworks */,
+ D01855C122DDD38D00AC458A /* libtonlibjson_static.a in Frameworks */,
+ D01855C222DDD38D00AC458A /* libton_block.a in Frameworks */,
+ D01855C322DDD38D00AC458A /* libtl_api.a in Frameworks */,
+ D01855C422DDD38D00AC458A /* libcrc32c.a in Frameworks */,
+ D01855C522DDD38D00AC458A /* libtdtl.a in Frameworks */,
+ D01855C622DDD38D00AC458A /* libmemprof.a in Frameworks */,
+ D018559C22DDD38B00AC458A /* libtdutils.a in Frameworks */,
+ D018559D22DDD38B00AC458A /* libtddb.a in Frameworks */,
+ D018559E22DDD38B00AC458A /* libtdactor.a in Frameworks */,
+ D00083C922DD33E500EC418C /* libc++.tbd in Frameworks */,
D0CAF2FD1D7628FD0011F558 /* libcrypto.a in Frameworks */,
D0CAF2F11D75F4EA0011F558 /* CFNetwork.framework in Frameworks */,
D0CAF2EF1D75F4E20011F558 /* UIKit.framework in Frameworks */,
@@ -915,9 +1016,23 @@
path = MtProtoKitStabilityTests;
sourceTree = "";
};
+ D018558922DDD36C00AC458A /* include */ = {
+ isa = PBXGroup;
+ children = (
+ D018558A22DDD36C00AC458A /* Client.h */,
+ D018558B22DDD36C00AC458A /* TlObject.h */,
+ D018558C22DDD36C00AC458A /* tonlib_api.h */,
+ D018558D22DDD36C00AC458A /* int_types.h */,
+ D018558E22DDD36C00AC458A /* TonlibCallback.h */,
+ D018558F22DDD36C00AC458A /* platform.h */,
+ );
+ path = include;
+ sourceTree = "";
+ };
D05A830918AFB3F9007F1076 = {
isa = PBXGroup;
children = (
+ D08A158E22DD32740073B508 /* TON */,
D05A84E718AFF0EE007F1076 /* Third Party */,
D05A849B18AFCA3D007F1076 /* MTProtoKit */,
D05A831918AFB3F9007F1076 /* MtProtoKit iOS */,
@@ -950,6 +1065,33 @@
D05A831618AFB3F9007F1076 /* Frameworks */ = {
isa = PBXGroup;
children = (
+ D01855A022DDD38C00AC458A /* libadnllite.a */,
+ D01855B022DDD38D00AC458A /* libcrc32c.a */,
+ D01855A122DDD38C00AC458A /* libfift.a */,
+ D01855A222DDD38C00AC458A /* libkeys.a */,
+ D01855B222DDD38D00AC458A /* libmemprof.a */,
+ D01855AB22DDD38C00AC458A /* libtdnet.a */,
+ D01855B122DDD38D00AC458A /* libtdtl.a */,
+ D01855A722DDD38C00AC458A /* libterminal.a */,
+ D01855AF22DDD38D00AC458A /* libtl_api.a */,
+ D018559F22DDD38B00AC458A /* libtl_lite_api.a */,
+ D01855AA22DDD38C00AC458A /* libtl_tonlib_api_json.a */,
+ D01855AC22DDD38C00AC458A /* libtl_tonlib_api.a */,
+ D01855A322DDD38C00AC458A /* libtl-lite-utils.a */,
+ D01855A422DDD38C00AC458A /* libtl-utils.a */,
+ D01855AE22DDD38D00AC458A /* libton_block.a */,
+ D01855A922DDD38C00AC458A /* libton_crypto.a */,
+ D01855A522DDD38C00AC458A /* libton_db.a */,
+ D01855A622DDD38C00AC458A /* libtonlib.a */,
+ D01855A822DDD38C00AC458A /* libtonlibjson_private.a */,
+ D01855AD22DDD38C00AC458A /* libtonlibjson_static.a */,
+ D00083D722DD467100EC418C /* libtdjson.dylib */,
+ D00083CA22DD42F600EC418C /* libtonlibjson.dylib */,
+ D00083C822DD33E500EC418C /* libc++.tbd */,
+ D08A159422DD32CF0073B508 /* libtdactor.a */,
+ D08A159522DD32CF0073B508 /* libtddb.a */,
+ D08A159322DD32CF0073B508 /* libtdutils.a */,
+ D08A159622DD32CF0073B508 /* libtonlibjson.a */,
D0B4187C1D7E04EB004562A4 /* libcrypto.a */,
D0B4187A1D7E04CF004562A4 /* libz.tbd */,
D0B418781D7E04CB004562A4 /* Security.framework */,
@@ -1351,6 +1493,18 @@
name = "Supporting Files";
sourceTree = "";
};
+ D08A158E22DD32740073B508 /* TON */ = {
+ isa = PBXGroup;
+ children = (
+ D018558922DDD36C00AC458A /* include */,
+ D08A159022DD32B40073B508 /* tonlib_client_json.h */,
+ D08A158F22DD32B40073B508 /* tonlibjson_export.h */,
+ D08A159B22DD32F20073B508 /* TON.h */,
+ D08A159C22DD32F20073B508 /* TON.mm */,
+ );
+ path = TON;
+ sourceTree = "";
+ };
D0CB05F81ADC4483005E298F /* MtProtoKit */ = {
isa = PBXGroup;
children = (
@@ -1612,6 +1766,7 @@
D0D1A03A1ADD983C007D9ED6 /* MTBufferReader.h in Headers */,
D0CB065C1ADC45CE005E298F /* MTTcpConnection.h in Headers */,
D0D1A0501ADD983C007D9ED6 /* MTMsgsAckMessage.h in Headers */,
+ D018559322DDD36C00AC458A /* int_types.h in Headers */,
D0CAF2CB1D75E24C0011F558 /* MTSignal.h in Headers */,
D0CB06461ADC45A2005E298F /* MTMessageService.h in Headers */,
D0B0DF611DD7E7A2003BA12D /* MTBag.h in Headers */,
@@ -1620,12 +1775,14 @@
D0D1A0441ADD983C007D9ED6 /* MTInternalMessageParser.h in Headers */,
D0D1A05A1ADD983C007D9ED6 /* MTPongMessage.h in Headers */,
D0CFBB8A1FD718C500B65C0D /* AFHTTPRequestOperation.h in Headers */,
+ D018559422DDD36C00AC458A /* TonlibCallback.h in Headers */,
D0D1A0481ADD983C007D9ED6 /* MTMsgAllInfoMessage.h in Headers */,
D0CFBB871FD7188200B65C0D /* AFURLConnectionOperation.h in Headers */,
D0CAF2D71D75E2840011F558 /* MTDisposable.h in Headers */,
D0CB062A1ADC4575005E298F /* MTDatacenterTransferAuthAction.h in Headers */,
D0CB064F1ADC45B1005E298F /* MTApiEnvironment.h in Headers */,
D0CB06191ADC4541005E298F /* MTTimer.h in Headers */,
+ D018559122DDD36C00AC458A /* TlObject.h in Headers */,
D0CB06381ADC4591005E298F /* MTProto.h in Headers */,
D0CB06321ADC4583005E298F /* MTDatacenterAuthInfo.h in Headers */,
D0D1A0541ADD983C007D9ED6 /* MTMsgsStateReqMessage.h in Headers */,
@@ -1636,6 +1793,7 @@
D0D1A0361ADD983C007D9ED6 /* MTBadMsgNotificationMessage.h in Headers */,
D0529D2B21A434BF00D7C3C4 /* MTTransportSchemeStats.h in Headers */,
D0CB06581ADC45CE005E298F /* MTNetworkAvailability.h in Headers */,
+ D018559522DDD36C00AC458A /* platform.h in Headers */,
D0CB06211ADC454C005E298F /* MTKeychain.h in Headers */,
D0580AC21B0F3E9C00E8235B /* MTDiscoverConnectionSignals.h in Headers */,
D0C932231E095D6A0074F044 /* MTNetworkUsageCalculationInfo.h in Headers */,
@@ -1663,6 +1821,7 @@
D0D1A05E1ADD983C007D9ED6 /* MTRpcError.h in Headers */,
D0E2E17720866780005737E8 /* MTDNS.h in Headers */,
D0C9322B1E095E280074F044 /* MTNetworkUsageManager.h in Headers */,
+ D018559022DDD36C00AC458A /* Client.h in Headers */,
D0CB063A1ADC4591005E298F /* MTTimeFixContext.h in Headers */,
D0CB065D1ADC45CE005E298F /* MTTcpConnectionBehaviour.h in Headers */,
D09A59581B582EFF00FC3724 /* MTFileBasedKeychain.h in Headers */,
@@ -1687,6 +1846,7 @@
D0CB066A1ADC4846005E298F /* MTResendMessageService.h in Headers */,
D0CB061D1ADC4541005E298F /* MTQueue.h in Headers */,
D0CB06171ADC4536005E298F /* MTProtoKit.h in Headers */,
+ D018559222DDD36C00AC458A /* tonlib_api.h in Headers */,
D0CB06391ADC4591005E298F /* MTSessionInfo.h in Headers */,
D0CB06331ADC4583005E298F /* MTDatacenterSaltInfo.h in Headers */,
D0CB062B1ADC4575005E298F /* MTDatacenterAuthAction.h in Headers */,
@@ -1716,6 +1876,7 @@
D0CD97F61D74B94B00F41187 /* MTRsa.h in Headers */,
D0CD98C11D74BA8300F41187 /* MTTcpTransport.h in Headers */,
D0CD98CB1D74BA9500F41187 /* MTTcpConnectionBehaviour.h in Headers */,
+ D08A159D22DD32F20073B508 /* TON.h in Headers */,
D0CD982D1D74B99500F41187 /* MTResPqMessage.h in Headers */,
D0CD98E91D75C0BB00F41187 /* MTMessageService.h in Headers */,
D0B0DF631DD7E7A4003BA12D /* MTBag.h in Headers */,
@@ -1733,6 +1894,8 @@
D0CD984C1D74B9AD00F41187 /* MTRpcError.h in Headers */,
D0CD98251D74B99500F41187 /* MTMsgDetailedInfoMessage.h in Headers */,
D0CD989D1D74BA6500F41187 /* MTIncomingMessage.h in Headers */,
+ D08A159222DD32B40073B508 /* tonlib_client_json.h in Headers */,
+ D018559722DDD37300AC458A /* TlObject.h in Headers */,
D0CD98011D74B96400F41187 /* MTBadMsgNotificationMessage.h in Headers */,
D0CD98201D74B99500F41187 /* MTFutureSaltsMessage.h in Headers */,
D0CD985E1D74B9BF00F41187 /* MTServerDhParamsMessage.h in Headers */,
@@ -1742,6 +1905,7 @@
D0CD98041D74B96400F41187 /* MTDestroySessionResponseMessage.h in Headers */,
D0CD97FB1D74B95100F41187 /* MTSerialization.h in Headers */,
D0CD98651D74B9D800F41187 /* MTFileBasedKeychain.h in Headers */,
+ D018559622DDD37300AC458A /* Client.h in Headers */,
D0CD98991D74BA6500F41187 /* MTSessionInfo.h in Headers */,
D0CD97D71D74B92000F41187 /* MTTimer.h in Headers */,
D0529D2D21A434BF00D7C3C4 /* MTTransportSchemeStats.h in Headers */,
@@ -1752,6 +1916,7 @@
D033873B223BC115007A2CE4 /* MTPKCS.h in Headers */,
D0CD985C1D74B9BF00F41187 /* MTRpcResultMessage.h in Headers */,
D0D225101B4D817B0085E26D /* MtProtoKitDynamic.h in Headers */,
+ D018559922DDD37300AC458A /* int_types.h in Headers */,
D0CD98241D74B99500F41187 /* MTMsgContainerMessage.h in Headers */,
D0CD98281D74B99500F41187 /* MTMsgsStateInfoMessage.h in Headers */,
D0CD98271D74B99500F41187 /* MTMsgsAckMessage.h in Headers */,
@@ -1760,7 +1925,9 @@
D0CD988D1D74BA5200F41187 /* MTDatacenterAddressListData.h in Headers */,
D0CD985D1D74B9BF00F41187 /* MTServerDhInnerDataMessage.h in Headers */,
D0CD98611D74B9D000F41187 /* MTKeychain.h in Headers */,
+ D018559822DDD37300AC458A /* tonlib_api.h in Headers */,
D0CD98261D74B99500F41187 /* MTMsgResendReqMessage.h in Headers */,
+ D018559B22DDD37300AC458A /* platform.h in Headers */,
D0CD97EE1D74B94300F41187 /* MTLogging.h in Headers */,
D0CD98FB1D75C0E500F41187 /* MTRequest.h in Headers */,
D0CAF2DA1D75E3160011F558 /* MTSubscriber.h in Headers */,
@@ -1782,6 +1949,8 @@
D0CD97F11D74B94300F41187 /* MTQueue.h in Headers */,
D0CD98051D74B96400F41187 /* MTDropRpcResultMessage.h in Headers */,
D0CD987C1D74BA4100F41187 /* MTDatacenterAuthAction.h in Headers */,
+ D018559A22DDD37300AC458A /* TonlibCallback.h in Headers */,
+ D08A159122DD32B40073B508 /* tonlibjson_export.h in Headers */,
D0CD982A1D74B99500F41187 /* MTNewSessionCreatedMessage.h in Headers */,
D0CD987B1D74BA4100F41187 /* MTDatacenterTransferAuthAction.h in Headers */,
D0CD990B1D75C0F400F41187 /* MTResendMessageService.h in Headers */,
@@ -2206,6 +2375,7 @@
D0CD98821D74BA4900F41187 /* MTDatacenterAuthAction.m in Sources */,
D0CD98961D74BA5A00F41187 /* MTDatacenterSaltInfo.m in Sources */,
D0CD98771D74BA0700F41187 /* MTDiscoverDatacenterAddressAction.m in Sources */,
+ D08A159E22DD32F20073B508 /* TON.mm in Sources */,
D0CD98CD1D74BA9700F41187 /* MTTcpConnectionBehaviour.m in Sources */,
D0CD98491D74B9AA00F41187 /* MTPingMessage.m in Sources */,
D0CD97DB1D74B93100F41187 /* MTQueue.m in Sources */,
@@ -2411,6 +2581,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = NO;
@@ -2472,6 +2643,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -2497,11 +2669,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -2681,6 +2854,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = YES;
@@ -2747,6 +2921,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -2775,11 +2950,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -2928,6 +3104,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = YES;
@@ -2995,6 +3172,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -3023,11 +3201,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -3176,6 +3355,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = YES;
@@ -3243,6 +3423,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -3271,11 +3452,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -3585,6 +3767,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = YES;
@@ -3652,6 +3835,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -3680,11 +3864,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -3822,6 +4007,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = NO;
@@ -3883,6 +4069,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -3907,11 +4094,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -4042,6 +4230,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = NO;
@@ -4103,6 +4292,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -4127,11 +4317,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -4262,6 +4453,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = NO;
@@ -4322,6 +4514,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -4346,11 +4539,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -4481,6 +4675,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = NO;
@@ -4541,6 +4736,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -4565,11 +4761,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -4711,6 +4908,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = YES;
@@ -4778,6 +4976,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -4806,11 +5005,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -4914,6 +5114,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = YES;
@@ -4968,6 +5169,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = NO;
@@ -5059,6 +5261,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = NO;
@@ -5120,6 +5323,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -5144,11 +5348,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -5210,6 +5415,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -5238,11 +5444,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -5266,6 +5473,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -5290,11 +5498,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -5444,6 +5653,7 @@
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MACH_O_TYPE = staticlib;
MTL_ENABLE_DEBUG_INFO = YES;
@@ -5511,6 +5721,7 @@
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -5539,11 +5750,12 @@
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
INFOPLIST_FILE = MtProtoKitDynamic/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
+ "$(PROJECT_DIR)/TON",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
diff --git a/submodules/MtProtoKit/TON/TON.h b/submodules/MtProtoKit/TON/TON.h
new file mode 100644
index 0000000000..010f7faf0b
--- /dev/null
+++ b/submodules/MtProtoKit/TON/TON.h
@@ -0,0 +1,48 @@
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class MTSignal;
+
+@interface TONError : NSObject
+
+@property (nonatomic, strong, readonly) NSString *text;
+
+@end
+
+@interface TONKey : NSObject
+
+@property (nonatomic, strong, readonly) NSString *publicKey;
+@property (nonatomic, strong, readonly) NSData *secret;
+
+- (instancetype)initWithPublicKey:(NSString *)publicKey secret:(NSData *)secret;
+
+@end
+
+@interface TONAccountState : NSObject
+
+@property (nonatomic, readonly) int64_t balance;
+@property (nonatomic, readonly) int32_t seqno;
+
+- (instancetype)initWithBalance:(int64_t)balance seqno:(int32_t)seqno;
+
+@end
+
+@interface TON : NSObject
+
+- (instancetype)initWithKeystoreDirectory:(NSString *)keystoreDirectory config:(NSString *)config;
+
+- (MTSignal *)createKeyWithLocalPassword:(NSData *)localPassword mnemonicPassword:(NSString *)mnemonicPassword;
+- (MTSignal *)getTestWalletAccountAddressWithPublicKey:(NSString *)publicKey;
+- (MTSignal *)getTestGiverAccountState;
+- (MTSignal *)testGiverSendGramsWithAccountState:(TONAccountState *)accountState accountAddress:(NSString *)accountAddress amount:(int64_t)amount;
+- (MTSignal *)getAccountStateWithAddress:(NSString *)accountAddress;
+- (MTSignal *)sendGramsFromKey:(TONKey *)key localPassword:(NSData *)localPassword fromAddress:(NSString *)fromAddress toAddress:(NSString *)address amount:(int64_t)amount;
+- (MTSignal *)exportKey:(TONKey *)key localPassword:(NSData *)localPassword;
+- (MTSignal *)importKeyWithLocalPassword:(NSData *)localPassword mnemonicPassword:(NSString *)mnemonicPassword wordList:(NSArray *)wordList;
+- (MTSignal *)deleteKeyWithPublicKey:(NSString *)publicKey;
+- (MTSignal *)makeWalletInitialized:(TONKey *)key localPassword:(NSData *)localPassword;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/submodules/MtProtoKit/TON/TON.mm b/submodules/MtProtoKit/TON/TON.mm
new file mode 100644
index 0000000000..9fe09d5050
--- /dev/null
+++ b/submodules/MtProtoKit/TON/TON.mm
@@ -0,0 +1,472 @@
+#import "TON.h"
+
+#import "tonlib_client_json.h"
+#import "MTLogging.h"
+#import "Client.h"
+#import "MTQueue.h"
+#import "MTSignal.h"
+
+@implementation TONKey
+
+- (instancetype)initWithPublicKey:(NSString *)publicKey secret:(NSData *)secret {
+ self = [super init];
+ if (self != nil) {
+ _publicKey = publicKey;
+ _secret = secret;
+ }
+ return self;
+}
+
+@end
+
+@implementation TONAccountState
+
+- (instancetype)initWithBalance:(int64_t)balance seqno:(int32_t)seqno {
+ self = [super init];
+ if (self != nil) {
+ _balance = balance;
+ _seqno = seqno;
+ }
+ return self;
+}
+
+@end
+
+using tonlib_api::make_object;
+
+@interface TONReceiveThreadParams : NSObject
+
+@property (nonatomic, readonly) std::shared_ptr client;
+@property (nonatomic, copy, readonly) void (^received)(tonlib::Client::Response &);
+
+@end
+
+@implementation TONReceiveThreadParams
+
+- (instancetype)initWithClient:(std::shared_ptr)client received:(void (^)(tonlib::Client::Response &))received {
+ self = [super init];
+ if (self != nil) {
+ _client = client;
+ _received = [received copy];
+ }
+ return self;
+}
+
+@end
+
+@interface TONRequestHandler : NSObject
+
+@property (nonatomic, copy, readonly) void (^completion)(tonlib_api::object_ptr &);
+
+@end
+
+@implementation TONRequestHandler
+
+- (instancetype)initWithCompletion:(void (^)(tonlib_api::object_ptr &))completion {
+ self = [super init];
+ if (self != nil) {
+ _completion = [completion copy];
+ }
+ return self;
+}
+
+@end
+
+@implementation TONError
+
+- (instancetype)initWithText:(NSString *)text {
+ self = [super init];
+ if (self != nil) {
+ _text = text;
+ }
+ return self;
+}
+
+@end
+
+@interface TON () {
+ std::shared_ptr _client;
+ uint64_t _nextRequestId;
+ NSLock *_requestHandlersLock;
+ NSMutableDictionary *_requestHandlers;
+ MTPipe *_initialized;
+}
+
+@end
+
+@implementation TON
+
++ (void)receiveThread:(TONReceiveThreadParams *)params {
+ while (true) {
+ auto response = params.client->receive(1000);
+ if (response.object) {
+ params.received(response);
+ }
+ }
+}
+
+- (instancetype)initWithKeystoreDirectory:(NSString *)keystoreDirectory config:(NSString *)config {
+ self = [super init];
+ if (self != nil) {
+ _requestHandlersLock = [[NSLock alloc] init];
+ _requestHandlers = [[NSMutableDictionary alloc] init];
+ _initialized = [[MTPipe alloc] initWithReplay:true];
+ _initialized.sink(@false);
+ _nextRequestId = 1;
+
+ _client = std::make_shared();
+
+ NSLock *requestHandlersLock = _requestHandlersLock;
+ NSMutableDictionary *requestHandlers = _requestHandlers;
+ NSThread *thread = [[NSThread alloc] initWithTarget:[self class] selector:@selector(receiveThread:) object:[[TONReceiveThreadParams alloc] initWithClient:_client received:^(tonlib::Client::Response &response) {
+ NSNumber *requestId = @(response.id);
+ [requestHandlersLock lock];
+ TONRequestHandler *handler = requestHandlers[requestId];
+ [requestHandlers removeObjectForKey:requestId];
+ [requestHandlersLock unlock];
+ if (handler != nil) {
+ handler.completion(response.object);
+ }
+ }]];
+ [thread start];
+
+ [[NSFileManager defaultManager] createDirectoryAtPath:keystoreDirectory withIntermediateDirectories:true attributes:nil error:nil];
+
+ [[self requestInitWithConfigString:config keystoreDirectory:keystoreDirectory] startWithNext:nil completed:^{
+ _initialized.sink(@true);
+ }];
+ }
+ return self;
+}
+
+- (MTSignal *)requestInitWithConfigString:(NSString *)configString keystoreDirectory:(NSString *)keystoreDirectory {
+ return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ uint64_t requestId = _nextRequestId;
+ _nextRequestId += 1;
+
+ _requestHandlers[@(requestId)] = [[TONRequestHandler alloc] initWithCompletion:^(tonlib_api::object_ptr &object) {
+ if (object->get_id() == tonlib_api::error::ID) {
+ auto error = tonlib_api::move_object_as(object);
+ [subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
+ } else {
+ [subscriber putCompletion];
+ }
+ }];
+
+ auto query = make_object(make_object(configString.UTF8String, keystoreDirectory.UTF8String));
+ _client->send({ requestId, std::move(query) });
+
+ return [[MTBlockDisposable alloc] initWithBlock:^{
+ }];
+ }] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
+}
+
+- (MTSignal *)createKeyWithLocalPassword:(NSData *)localPassword mnemonicPassword:(NSString *)mnemonicPassword {
+ return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ uint64_t requestId = _nextRequestId;
+ _nextRequestId += 1;
+
+ _requestHandlers[@(requestId)] = [[TONRequestHandler alloc] initWithCompletion:^(tonlib_api::object_ptr &object) {
+ if (object->get_id() == tonlib_api::error::ID) {
+ auto error = tonlib_api::move_object_as(object);
+ [subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
+ } else if (object->get_id() == tonlib_api::key::ID) {
+ auto result = tonlib_api::move_object_as(object);
+ NSString *publicKey = [[[NSData alloc] initWithBytes:result->public_key_.data() length:result->public_key_.length()] base64EncodedStringWithOptions:0];
+ NSData *secret = [[NSData alloc] initWithBytes:result->secret_.data() length:result->secret_.length()];
+ [subscriber putNext:[[TONKey alloc] initWithPublicKey:publicKey secret:secret]];
+ [subscriber putCompletion];
+ } else {
+ assert(false);
+ }
+ }];
+
+ NSString *localPasswordString = [localPassword base64EncodedStringWithOptions:0];
+
+ auto query = make_object(localPasswordString.UTF8String, mnemonicPassword.UTF8String);
+ _client->send({ requestId, std::move(query) });
+
+ return [[MTBlockDisposable alloc] initWithBlock:^{
+ }];
+ }] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
+}
+
+- (MTSignal *)getTestWalletAccountAddressWithPublicKey:(NSString *)publicKey {
+ return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ uint64_t requestId = _nextRequestId;
+ _nextRequestId += 1;
+
+ _requestHandlers[@(requestId)] = [[TONRequestHandler alloc] initWithCompletion:^(tonlib_api::object_ptr &object) {
+ if (object->get_id() == tonlib_api::error::ID) {
+ auto error = tonlib_api::move_object_as(object);
+ [subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
+ } else if (object->get_id() == tonlib_api::accountAddress::ID) {
+ auto result = tonlib_api::move_object_as(object);
+ [subscriber putNext:[[NSString alloc] initWithUTF8String:result->account_address_.c_str()]];
+ [subscriber putCompletion];
+ } else {
+ assert(false);
+ }
+ }];
+
+ NSData *publicKeyData = [[NSData alloc] initWithBase64EncodedString:publicKey options:0];
+ std::string publicKeyString((uint8_t *)publicKeyData.bytes, (uint8_t *)publicKeyData.bytes + publicKeyData.length);
+
+ auto query = make_object(make_object(publicKeyString));
+ _client->send({ requestId, std::move(query) });
+
+ return [[MTBlockDisposable alloc] initWithBlock:^{
+ }];
+ }] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
+}
+
+- (MTSignal *)getTestGiverAccountState {
+ return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ uint64_t requestId = _nextRequestId;
+ _nextRequestId += 1;
+
+ _requestHandlers[@(requestId)] = [[TONRequestHandler alloc] initWithCompletion:^(tonlib_api::object_ptr &object) {
+ if (object->get_id() == tonlib_api::error::ID) {
+ auto error = tonlib_api::move_object_as(object);
+ [subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
+ } else if (object->get_id() == tonlib_api::testGiver_accountState::ID) {
+ auto result = tonlib_api::move_object_as(object);
+ [subscriber putNext:[[TONAccountState alloc] initWithBalance:result->balance_ seqno:result->seqno_]];
+ [subscriber putCompletion];
+ } else {
+ assert(false);
+ }
+ }];
+
+ auto query = make_object();
+ _client->send({ requestId, std::move(query) });
+
+ return [[MTBlockDisposable alloc] initWithBlock:^{
+ }];
+ }] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
+}
+
+- (MTSignal *)testGiverSendGramsWithAccountState:(TONAccountState *)accountState accountAddress:(NSString *)accountAddress amount:(int64_t)amount {
+ return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ uint64_t requestId = _nextRequestId;
+ _nextRequestId += 1;
+
+ _requestHandlers[@(requestId)] = [[TONRequestHandler alloc] initWithCompletion:^(tonlib_api::object_ptr &object) {
+ if (object->get_id() == tonlib_api::error::ID) {
+ auto error = tonlib_api::move_object_as(object);
+ [subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
+ } else {
+ [subscriber putCompletion];
+ }
+ }];
+
+ auto query = make_object(make_object(accountAddress.UTF8String), accountState.seqno, amount);
+ _client->send({ requestId, std::move(query) });
+
+ return [[MTBlockDisposable alloc] initWithBlock:^{
+ }];
+ }] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
+}
+
+- (MTSignal *)getAccountStateWithAddress:(NSString *)accountAddress {
+ return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ uint64_t requestId = _nextRequestId;
+ _nextRequestId += 1;
+
+ _requestHandlers[@(requestId)] = [[TONRequestHandler alloc] initWithCompletion:^(tonlib_api::object_ptr &object) {
+ if (object->get_id() == tonlib_api::error::ID) {
+ auto error = tonlib_api::move_object_as(object);
+ [subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
+ } else if (object->get_id() == tonlib_api::generic_accountStateUninited::ID) {
+ auto result = tonlib_api::move_object_as(object);
+ [subscriber putNext:[[TONAccountState alloc] initWithBalance:result->account_state_->balance_ seqno:-1]];
+ [subscriber putCompletion];
+ } else if (object->get_id() == tonlib_api::generic_accountStateTestWallet::ID) {
+ auto result = tonlib_api::move_object_as(object);
+ [subscriber putNext:[[TONAccountState alloc] initWithBalance:result->account_state_->balance_ seqno:result->account_state_->seqno_]];
+ [subscriber putCompletion];
+ } else {
+ assert(false);
+ }
+ }];
+
+ auto query = make_object(make_object(accountAddress.UTF8String));
+ _client->send({ requestId, std::move(query) });
+
+ return [[MTBlockDisposable alloc] initWithBlock:^{
+ }];
+ }] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
+}
+
+- (MTSignal *)sendGramsFromKey:(TONKey *)key localPassword:(NSData *)localPassword fromAddress:(NSString *)fromAddress toAddress:(NSString *)address amount:(int64_t)amount {
+ return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ uint64_t requestId = _nextRequestId;
+ _nextRequestId += 1;
+
+ _requestHandlers[@(requestId)] = [[TONRequestHandler alloc] initWithCompletion:^(tonlib_api::object_ptr &object) {
+ if (object->get_id() == tonlib_api::error::ID) {
+ auto error = tonlib_api::move_object_as(object);
+ [subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
+ } else {
+ [subscriber putCompletion];
+ }
+ }];
+
+ NSData *publicKeyData = [[NSData alloc] initWithBase64EncodedString:key.publicKey options:0];
+ std::string publicKeyString((uint8_t *)publicKeyData.bytes, (uint8_t *)publicKeyData.bytes + publicKeyData.length);
+
+ NSData *secretData = key.secret;
+ std::string secretString((uint8_t *)secretData.bytes, (uint8_t *)secretData.bytes + secretData.length);
+
+ NSString *localPasswordConvertedString = [localPassword base64EncodedStringWithOptions:0];
+ NSData *localPasswordData = [localPasswordConvertedString dataUsingEncoding:NSUTF8StringEncoding];
+ std::string localPasswordString((uint8_t *)localPasswordData.bytes, (uint8_t *)localPasswordData.bytes + localPasswordData.length);
+
+ auto query = make_object(make_object(make_object(publicKeyString, secretString), localPasswordString), make_object(fromAddress.UTF8String), make_object(address.UTF8String), amount);
+ _client->send({ requestId, std::move(query) });
+
+ return [[MTBlockDisposable alloc] initWithBlock:^{
+ }];
+ }] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
+}
+
+- (MTSignal *)exportKey:(TONKey *)key localPassword:(NSData *)localPassword {
+ return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ uint64_t requestId = _nextRequestId;
+ _nextRequestId += 1;
+
+ _requestHandlers[@(requestId)] = [[TONRequestHandler alloc] initWithCompletion:^(tonlib_api::object_ptr &object) {
+ if (object->get_id() == tonlib_api::error::ID) {
+ auto error = tonlib_api::move_object_as(object);
+ [subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
+ } else if (object->get_id() == tonlib_api::exportedKey::ID) {
+ auto result = tonlib_api::move_object_as(object);
+ NSMutableArray *wordList = [[NSMutableArray alloc] init];
+ for (auto it : result->word_list_) {
+ [wordList addObject:[[NSString alloc] initWithUTF8String:it.c_str()]];
+ }
+ [subscriber putNext:wordList];
+ [subscriber putCompletion];
+ } else {
+ assert(false);
+ }
+ }];
+
+ NSData *publicKeyData = [[NSData alloc] initWithBase64EncodedString:key.publicKey options:0];
+ std::string publicKeyString((uint8_t *)publicKeyData.bytes, (uint8_t *)publicKeyData.bytes + publicKeyData.length);
+
+ NSData *secretData = key.secret;
+ std::string secretString((uint8_t *)secretData.bytes, (uint8_t *)secretData.bytes + secretData.length);
+
+ NSString *localPasswordConvertedString = [localPassword base64EncodedStringWithOptions:0];
+ NSData *localPasswordData = [localPasswordConvertedString dataUsingEncoding:NSUTF8StringEncoding];
+ std::string localPasswordString((uint8_t *)localPasswordData.bytes, (uint8_t *)localPasswordData.bytes + localPasswordData.length);
+
+ auto query = make_object(make_object(make_object(publicKeyString, secretString), localPasswordString));
+ _client->send({ requestId, std::move(query) });
+
+ return [[MTBlockDisposable alloc] initWithBlock:^{
+ }];
+ }] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
+}
+
+- (MTSignal *)makeWalletInitialized:(TONKey *)key localPassword:(NSData *)localPassword {
+ return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ uint64_t requestId = _nextRequestId;
+ _nextRequestId += 1;
+
+ _requestHandlers[@(requestId)] = [[TONRequestHandler alloc] initWithCompletion:^(tonlib_api::object_ptr &object) {
+ if (object->get_id() == tonlib_api::error::ID) {
+ auto error = tonlib_api::move_object_as(object);
+ [subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
+ } else {
+ [subscriber putCompletion];
+ }
+ }];
+
+ NSData *publicKeyData = [[NSData alloc] initWithBase64EncodedString:key.publicKey options:0];
+ std::string publicKeyString((uint8_t *)publicKeyData.bytes, (uint8_t *)publicKeyData.bytes + publicKeyData.length);
+
+ NSData *secretData = key.secret;
+ std::string secretString((uint8_t *)secretData.bytes, (uint8_t *)secretData.bytes + secretData.length);
+
+ NSString *localPasswordConvertedString = [localPassword base64EncodedStringWithOptions:0];
+ NSData *localPasswordData = [localPasswordConvertedString dataUsingEncoding:NSUTF8StringEncoding];
+ std::string localPasswordString((uint8_t *)localPasswordData.bytes, (uint8_t *)localPasswordData.bytes + localPasswordData.length);
+
+ auto query = make_object(make_object(make_object(publicKeyString, secretString), localPasswordString));
+ _client->send({ requestId, std::move(query) });
+
+ return [[MTBlockDisposable alloc] initWithBlock:^{
+ }];
+ }] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
+}
+
+- (MTSignal *)importKeyWithLocalPassword:(NSData *)localPassword mnemonicPassword:(NSString *)mnemonicPassword wordList:(NSArray *)wordList {
+ return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ uint64_t requestId = _nextRequestId;
+ _nextRequestId += 1;
+
+ _requestHandlers[@(requestId)] = [[TONRequestHandler alloc] initWithCompletion:^(tonlib_api::object_ptr &object) {
+ if (object->get_id() == tonlib_api::error::ID) {
+ auto error = tonlib_api::move_object_as(object);
+ [subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
+ } else if (object->get_id() == tonlib_api::key::ID) {
+ auto result = tonlib_api::move_object_as(object);
+ NSString *publicKey = [[[NSData alloc] initWithBytes:result->public_key_.data() length:result->public_key_.length()] base64EncodedStringWithOptions:0];
+ NSData *secret = [[NSData alloc] initWithBytes:result->secret_.data() length:result->secret_.length()];
+ [subscriber putNext:[[TONKey alloc] initWithPublicKey:publicKey secret:secret]];
+ [subscriber putCompletion];
+ } else {
+ assert(false);
+ }
+ }];
+
+ NSString *localPasswordConvertedString = [localPassword base64EncodedStringWithOptions:0];
+ NSData *localPasswordData = [localPasswordConvertedString dataUsingEncoding:NSUTF8StringEncoding];
+ std::string localPasswordString((uint8_t *)localPasswordData.bytes, (uint8_t *)localPasswordData.bytes + localPasswordData.length);
+
+ NSData *mnemonicPasswordData = [mnemonicPassword dataUsingEncoding:NSUTF8StringEncoding];
+ std::string mnemonicPasswordString((uint8_t *)mnemonicPasswordData.bytes, (uint8_t *)mnemonicPasswordData.bytes + mnemonicPasswordData.length);
+
+ std::vector wordVector;
+ for (NSString *word in wordList) {
+ NSData *wordData = [word dataUsingEncoding:NSUTF8StringEncoding];
+ std::string wordString((uint8_t *)wordData.bytes, (uint8_t *)wordData.bytes + wordData.length);
+ wordVector.push_back(wordString);
+ }
+
+ auto query = make_object(localPasswordString, mnemonicPasswordString, make_object(std::move(wordVector)));
+ _client->send({ requestId, std::move(query) });
+
+ return [[MTBlockDisposable alloc] initWithBlock:^{
+ }];
+ }] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
+}
+
+- (MTSignal *)deleteKeyWithPublicKey:(NSString *)publicKey {
+ return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ uint64_t requestId = _nextRequestId;
+ _nextRequestId += 1;
+
+ _requestHandlers[@(requestId)] = [[TONRequestHandler alloc] initWithCompletion:^(tonlib_api::object_ptr &object) {
+ if (object->get_id() == tonlib_api::error::ID) {
+ auto error = tonlib_api::move_object_as(object);
+ [subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
+ } else {
+ [subscriber putCompletion];
+ }
+ }];
+
+ NSData *publicKeyData = [[NSData alloc] initWithBase64EncodedString:publicKey options:0];
+ std::string publicKeyString((uint8_t *)publicKeyData.bytes, (uint8_t *)publicKeyData.bytes + publicKeyData.length);
+
+ auto query = make_object(publicKeyString);
+ _client->send({ requestId, std::move(query) });
+
+ return [[MTBlockDisposable alloc] initWithBlock:^{
+ }];
+ }] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
+}
+
+@end
diff --git a/submodules/MtProtoKit/TON/include/Client.h b/submodules/MtProtoKit/TON/include/Client.h
new file mode 100644
index 0000000000..f1b14ad686
--- /dev/null
+++ b/submodules/MtProtoKit/TON/include/Client.h
@@ -0,0 +1,34 @@
+#pragma once
+#include "tonlib_api.h"
+
+#include "TonlibCallback.h"
+
+namespace tonlib {
+class Client final {
+ public:
+ Client();
+ struct Request {
+ std::uint64_t id;
+ tonlib_api::object_ptr function;
+ };
+
+ void send(Request&& request);
+
+ struct Response {
+ std::uint64_t id;
+ tonlib_api::object_ptr object;
+ };
+
+ Response receive(double timeout);
+
+ static Response execute(Request&& request);
+
+ ~Client();
+ Client(Client&& other);
+ Client& operator=(Client&& other);
+
+ private:
+ class Impl;
+ std::unique_ptr impl_;
+};
+} // namespace tonlib
diff --git a/submodules/MtProtoKit/TON/include/TlObject.h b/submodules/MtProtoKit/TON/include/TlObject.h
new file mode 100644
index 0000000000..d79419a605
--- /dev/null
+++ b/submodules/MtProtoKit/TON/include/TlObject.h
@@ -0,0 +1,159 @@
+#pragma once
+
+/**
+ * \file
+ * Contains declarations of a base class for all TL-objects and some helper methods
+ */
+
+#include
+#include
+#include
+#include
+
+namespace td {
+class TlStorerCalcLength;
+
+class TlStorerUnsafe;
+
+class TlStorerToString;
+} // namespace td
+namespace ton {
+/**
+ * This class is a base class for all TL-objects.
+ */
+class TlObject {
+ public:
+ /**
+ * Returns identifier uniquely determining TL-type of the object.
+ */
+ virtual std::int32_t get_id() const = 0;
+
+ /**
+ * Appends object to the storer serializing object to a buffer of fixed length.
+ * \param[in] s Storer to which object will be appended.
+ */
+ virtual void store(td::TlStorerUnsafe &s) const {
+ }
+
+ /**
+ * Appends object to the storer calculating TL-length of the serialized object.
+ * \param[in] s Storer to which object will be appended.
+ */
+ virtual void store(td::TlStorerCalcLength &s) const {
+ }
+
+ /**
+ * Helper function for to_string method. Appends string representation of the object to the storer.
+ * \param[in] s Storer to which object string representation will be appended.
+ * \param[in] field_name Object field_name if applicable.
+ */
+ virtual void store(td::TlStorerToString &s, const char *field_name) const = 0;
+
+ /**
+ * Default constructor.
+ */
+ TlObject() = default;
+
+ /**
+ * Deleted copy constructor.
+ */
+ TlObject(const TlObject &) = delete;
+
+ /**
+ * Deleted copy assignment operator.
+ */
+ TlObject &operator=(const TlObject &) = delete;
+
+ /**
+ * Default move constructor.
+ */
+ TlObject(TlObject &&) = default;
+
+ /**
+ * Default move assignment operator.
+ */
+ TlObject &operator=(TlObject &&) = default;
+
+ /**
+ * Virtual desctructor.
+ */
+ virtual ~TlObject() = default;
+};
+
+/**
+ * A smart wrapper to store a pointer to a TL-object.
+ */
+template
+using tl_object_ptr = std::unique_ptr;
+
+/**
+ * A function to create a dynamically allocated TL-object. Can be treated as an analogue of std::make_unique.
+ * Examples of usage:
+ * \code
+ * auto get_auth_state_request = td::create_tl_object();
+ * auto send_message_request = td::create_tl_object(chat_id, 0, false, false, nullptr,
+ * td::create_tl_object("Hello, world!!!", false, true, {}, nullptr));
+ * \endcode
+ *
+ * \tparam Type Type of a TL-object to construct.
+ * \param[in] args Arguments to pass to the object constructor.
+ * \return Wrapped pointer to the created TL-object.
+ */
+template
+tl_object_ptr create_tl_object(Args &&... args) {
+ return tl_object_ptr(new Type(std::forward(args)...));
+}
+
+/**
+ * A function to downcast a wrapped pointer to TL-object to a pointer to its subclass.
+ * It is undefined behaviour to cast an object to the wrong type.
+ * Examples of usage:
+ * \code
+ * td::tl_object_ptr auth_state = ...;
+ * switch (auth_state->get_id()) {
+ * case td::td_api::authStateWaitPhoneNumber::ID: {
+ * auto state = td::move_tl_object_as(auth_state);
+ * // use state
+ * break;
+ * }
+ * case td::td_api::authStateWaitCode::ID: {
+ * auto state = td::move_tl_object_as(auth_state);
+ * // use state
+ * break;
+ * }
+ * case td::td_api::authStateWaitPassword::ID: {
+ * auto state = td::move_tl_object_as(auth_state);
+ * // use state
+ * break;
+ * }
+ * case td::td_api::authStateOk::ID: {
+ * auto state = td::move_tl_object_as(auth_state);
+ * // use state
+ * break;
+ * }
+ * case td::td_api::authStateLoggingOut::ID: {
+ * auto state = td::move_tl_object_as(auth_state);
+ * // use state
+ * break;
+ * }
+ * }
+ * \endcode
+ *
+ * \tparam ToT Type of a TL-object to move to.
+ * \tparam FromT Type of a TL-object to move from, auto-deduced.
+ * \param[in] from Wrapped pointer to a TL-object.
+ */
+template
+tl_object_ptr move_tl_object_as(tl_object_ptr &from) {
+ return tl_object_ptr(static_cast(from.release()));
+}
+
+/**
+ * \overload
+ */
+template
+tl_object_ptr move_tl_object_as(tl_object_ptr &&from) {
+ return tl_object_ptr(static_cast(from.release()));
+}
+
+} // namespace ton
diff --git a/submodules/MtProtoKit/TON/include/TonlibCallback.h b/submodules/MtProtoKit/TON/include/TonlibCallback.h
new file mode 100644
index 0000000000..866521709e
--- /dev/null
+++ b/submodules/MtProtoKit/TON/include/TonlibCallback.h
@@ -0,0 +1,12 @@
+#pragma once
+
+#include "tonlib_api.h"
+
+namespace tonlib_api = ton::tonlib_api;
+
+class TonlibCallback {
+ public:
+ virtual void on_result(std::uint64_t id, tonlib_api::object_ptr result) = 0;
+ virtual void on_error(std::uint64_t id, tonlib_api::object_ptr error) = 0;
+ virtual ~TonlibCallback() = default;
+};
diff --git a/submodules/MtProtoKit/TON/include/int_types.h b/submodules/MtProtoKit/TON/include/int_types.h
new file mode 100644
index 0000000000..8e6a835d08
--- /dev/null
+++ b/submodules/MtProtoKit/TON/include/int_types.h
@@ -0,0 +1,39 @@
+#pragma once
+
+#include "platform.h"
+
+#include
+#include
+
+namespace td {
+
+#if !TD_WINDOWS
+using size_t = std::size_t;
+#endif
+
+using int8 = std::int8_t;
+using int16 = std::int16_t;
+using uint16 = std::uint16_t;
+using int32 = std::int32_t;
+using uint32 = std::uint32_t;
+using int64 = std::int64_t;
+using uint64 = std::uint64_t;
+
+static_assert(sizeof(std::uint8_t) == sizeof(unsigned char), "Unsigned char expected to be 8-bit");
+using uint8 = unsigned char;
+
+#if TD_MSVC
+#pragma warning(push)
+#pragma warning(disable : 4309)
+#endif
+
+static_assert(static_cast(128) == -128 || static_cast(128) == 128,
+ "Unexpected cast to char implementation-defined behaviour");
+static_assert(static_cast(256) == 0, "Unexpected cast to char implementation-defined behaviour");
+static_assert(static_cast(-256) == 0, "Unexpected cast to char implementation-defined behaviour");
+
+#if TD_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace td
diff --git a/submodules/MtProtoKit/TON/include/platform.h b/submodules/MtProtoKit/TON/include/platform.h
new file mode 100644
index 0000000000..4530102d8b
--- /dev/null
+++ b/submodules/MtProtoKit/TON/include/platform.h
@@ -0,0 +1,106 @@
+#pragma once
+
+// clang-format off
+
+/*** Platform macros ***/
+#if defined(_WIN32) || defined(_WINDOWS) // _WINDOWS is defined by CMake
+ #if defined(__cplusplus_winrt)
+ #define TD_WINRT 1
+ #endif
+ #if defined(__cplusplus_cli)
+ #define TD_CLI 1
+ #endif
+ #define TD_WINDOWS 1
+#elif defined(__APPLE__)
+ #include "TargetConditionals.h"
+ #if TARGET_OS_IPHONE
+ // iOS/watchOS/tvOS
+ #if TARGET_OS_IOS
+ #define TD_DARWIN_IOS 1
+ #elif TARGET_OS_TV
+ #define TD_DARWIN_TV_OS 1
+ #elif TARGET_OS_WATCH
+ #define TD_DARWIN_WATCH_OS 1
+ #else
+ #warning "Probably unsupported Apple iPhone platform. Feel free to try to compile"
+ #endif
+ #elif TARGET_OS_MAC
+ // Other kinds of macOS
+ #define TD_DARWIN_MAC 1
+ #else
+ #warning "Probably unsupported Apple platform. Feel free to try to compile"
+ #endif
+ #define TD_DARWIN 1
+#elif defined(ANDROID) || defined(__ANDROID__)
+ #define TD_ANDROID 1
+#elif defined(TIZEN_DEPRECATION)
+ #define TD_TIZEN 1
+#elif defined(__linux__)
+ #define TD_LINUX 1
+#elif defined(__FreeBSD__)
+ #define TD_FREEBSD 1
+#elif defined(__CYGWIN__)
+ #define TD_CYGWIN 1
+#elif defined(__EMSCRIPTEN__)
+ #define TD_EMSCRIPTEN 1
+#elif defined(__unix__) // all unices not caught above
+ #warning "Probably unsupported Unix platform. Feel free to try to compile"
+ #define TD_CYGWIN 1
+#else
+ #error "Probably unsupported platform. Feel free to remove the error and try to recompile"
+#endif
+
+#if defined(__ICC) || defined(__INTEL_COMPILER)
+ #define TD_INTEL 1
+#elif defined(__clang__)
+ #define TD_CLANG 1
+#elif defined(__GNUC__) || defined(__GNUG__)
+ #define TD_GCC 1
+#elif defined(_MSC_VER)
+ #define TD_MSVC 1
+#else
+ #warning "Probably unsupported compiler. Feel free to try to compile"
+#endif
+
+#if TD_GCC || TD_CLANG || TD_INTEL
+ #define TD_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
+ #define TD_ATTRIBUTE_FORMAT_PRINTF(from, to) __attribute__((format(printf, from, to)))
+#else
+ #define TD_WARN_UNUSED_RESULT
+ #define TD_ATTRIBUTE_FORMAT_PRINTF(from, to)
+#endif
+
+#if TD_MSVC
+ #define TD_UNUSED __pragma(warning(suppress : 4100))
+#elif TD_CLANG || TD_GCC || TD_INTEL
+ #define TD_UNUSED __attribute__((unused))
+#else
+ #define TD_UNUSED
+#endif
+
+#define TD_HAVE_ATOMIC_SHARED_PTR 1
+
+// No atomic operations on std::shared_ptr in libstdc++ before 5.0
+// see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57250
+#ifdef __GLIBCXX__
+ #undef TD_HAVE_ATOMIC_SHARED_PTR
+#endif
+
+// Also no atomic operations on std::shared_ptr when clang __has_feature(cxx_atomic) is defined and zero
+#if defined(__has_feature)
+ #if !__has_feature(cxx_atomic)
+ #undef TD_HAVE_ATOMIC_SHARED_PTR
+ #endif
+#endif
+
+#ifdef TD_HAVE_ATOMIC_SHARED_PTR // unfortunately we can't check for __GLIBCXX__ here, it is not defined yet
+ #undef TD_HAVE_ATOMIC_SHARED_PTR
+#endif
+
+#define TD_CONCURRENCY_PAD 128
+
+#if !TD_WINDOWS && defined(__SIZEOF_INT128__)
+#define TD_HAVE_INT128 1
+#endif
+
+// clang-format on
diff --git a/submodules/MtProtoKit/TON/include/tonlib_api.h b/submodules/MtProtoKit/TON/include/tonlib_api.h
new file mode 100644
index 0000000000..516b3db5d8
--- /dev/null
+++ b/submodules/MtProtoKit/TON/include/tonlib_api.h
@@ -0,0 +1,867 @@
+#pragma once
+
+#include "TlObject.h"
+
+#include "int_types.h"
+
+#include
+
+#include
+#include
+#include
+#include
+
+namespace td {
+class TlStorerToString;
+} // namespace td
+
+namespace ton {
+namespace tonlib_api{
+using BaseObject = ::ton::TlObject;
+
+template
+using object_ptr = ::ton::tl_object_ptr;
+
+template
+object_ptr make_object(Args &&... args) {
+ return object_ptr(new Type(std::forward(args)...));
+}
+
+template
+object_ptr move_object_as(FromType &&from) {
+ return object_ptr(static_cast(from.release()));
+}
+
+std::string to_string(const BaseObject &value);
+
+template
+std::string to_string(const object_ptr &value) {
+ if (value == nullptr) {
+ return "null";
+ }
+
+ return to_string(*value);
+}
+
+class accountAddress;
+
+class error;
+
+class exportedKey;
+
+class exportedPemKey;
+
+class inputKey;
+
+class key;
+
+class ok;
+
+class options;
+
+class generic_AccountState;
+
+class generic_InitialAccountState;
+
+class internal_transactionId;
+
+class raw_accountState;
+
+class raw_initialAccountState;
+
+class testGiver_accountState;
+
+class testWallet_accountState;
+
+class testWallet_initialAccountState;
+
+class uninited_accountState;
+
+class Object;
+
+class Object: public TlObject {
+ public:
+};
+
+class Function: public TlObject {
+ public:
+};
+
+class accountAddress final : public Object {
+ public:
+ std::string account_address_;
+
+ accountAddress();
+
+ explicit accountAddress(std::string const &account_address_);
+
+ static const std::int32_t ID = 755613099;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class error final : public Object {
+ public:
+ std::int32_t code_;
+ std::string message_;
+
+ error();
+
+ error(std::int32_t code_, std::string const &message_);
+
+ static const std::int32_t ID = -1679978726;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class exportedKey final : public Object {
+ public:
+ std::vector word_list_;
+
+ exportedKey();
+
+ explicit exportedKey(std::vector &&word_list_);
+
+ static const std::int32_t ID = -1591775274;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class exportedPemKey final : public Object {
+ public:
+ std::string pem_;
+
+ exportedPemKey();
+
+ explicit exportedPemKey(std::string const &pem_);
+
+ static const std::int32_t ID = -1606004936;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class inputKey final : public Object {
+ public:
+ object_ptr key_;
+ std::string local_password_;
+
+ inputKey();
+
+ inputKey(object_ptr &&key_, std::string const &local_password_);
+
+ static const std::int32_t ID = -896546932;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class key final : public Object {
+ public:
+ std::string public_key_;
+ std::string secret_;
+
+ key();
+
+ key(std::string const &public_key_, std::string const &secret_);
+
+ static const std::int32_t ID = -1824886393;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class ok final : public Object {
+ public:
+
+ ok();
+
+ static const std::int32_t ID = -722616727;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class options final : public Object {
+ public:
+ std::string config_;
+ std::string keystore_directory_;
+
+ options();
+
+ options(std::string const &config_, std::string const &keystore_directory_);
+
+ static const std::int32_t ID = -876766471;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class generic_AccountState: public Object {
+ public:
+};
+
+class generic_accountStateRaw final : public generic_AccountState {
+ public:
+ object_ptr account_state_;
+
+ generic_accountStateRaw();
+
+ explicit generic_accountStateRaw(object_ptr &&account_state_);
+
+ static const std::int32_t ID = -1387096685;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class generic_accountStateTestWallet final : public generic_AccountState {
+ public:
+ object_ptr account_state_;
+
+ generic_accountStateTestWallet();
+
+ explicit generic_accountStateTestWallet(object_ptr &&account_state_);
+
+ static const std::int32_t ID = -1041955397;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class generic_accountStateTestGiver final : public generic_AccountState {
+ public:
+ object_ptr account_state_;
+
+ generic_accountStateTestGiver();
+
+ explicit generic_accountStateTestGiver(object_ptr &&account_state_);
+
+ static const std::int32_t ID = 1134654598;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class generic_accountStateUninited final : public generic_AccountState {
+ public:
+ object_ptr account_state_;
+
+ generic_accountStateUninited();
+
+ explicit generic_accountStateUninited(object_ptr &&account_state_);
+
+ static const std::int32_t ID = -908702008;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class generic_InitialAccountState: public Object {
+ public:
+};
+
+class generic_initialAccountStateRaw final : public generic_InitialAccountState {
+ public:
+ object_ptr initital_account_state_;
+
+ generic_initialAccountStateRaw();
+
+ explicit generic_initialAccountStateRaw(object_ptr &&initital_account_state_);
+
+ static const std::int32_t ID = -1178429153;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class generic_initialAccountStateTestWallet final : public generic_InitialAccountState {
+ public:
+ object_ptr initital_account_state_;
+
+ generic_initialAccountStateTestWallet();
+
+ explicit generic_initialAccountStateTestWallet(object_ptr &&initital_account_state_);
+
+ static const std::int32_t ID = 710924204;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class internal_transactionId final : public Object {
+ public:
+ std::int64_t lt_;
+ std::string hash_;
+
+ internal_transactionId();
+
+ internal_transactionId(std::int64_t lt_, std::string const &hash_);
+
+ static const std::int32_t ID = -989527262;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class raw_accountState final : public Object {
+ public:
+ std::int64_t balance_;
+ std::string code_;
+ std::string data_;
+ object_ptr last_transaction_;
+
+ raw_accountState();
+
+ raw_accountState(std::int64_t balance_, std::string const &code_, std::string const &data_, object_ptr &&last_transaction_);
+
+ static const std::int32_t ID = 1473454653;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class raw_initialAccountState final : public Object {
+ public:
+ std::string code_;
+ std::string data_;
+
+ raw_initialAccountState();
+
+ raw_initialAccountState(std::string const &code_, std::string const &data_);
+
+ static const std::int32_t ID = 777456197;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class testGiver_accountState final : public Object {
+ public:
+ std::int64_t balance_;
+ std::int32_t seqno_;
+ object_ptr last_transaction_id_;
+
+ testGiver_accountState();
+
+ testGiver_accountState(std::int64_t balance_, std::int32_t seqno_, object_ptr &&last_transaction_id_);
+
+ static const std::int32_t ID = 2037609684;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class testWallet_accountState final : public Object {
+ public:
+ std::int64_t balance_;
+ std::int32_t seqno_;
+ object_ptr last_transaction_id_;
+
+ testWallet_accountState();
+
+ testWallet_accountState(std::int64_t balance_, std::int32_t seqno_, object_ptr &&last_transaction_id_);
+
+ static const std::int32_t ID = 105752218;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class testWallet_initialAccountState final : public Object {
+ public:
+ std::string public_key_;
+
+ testWallet_initialAccountState();
+
+ explicit testWallet_initialAccountState(std::string const &public_key_);
+
+ static const std::int32_t ID = 276948331;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class uninited_accountState final : public Object {
+ public:
+ std::int64_t balance_;
+
+ uninited_accountState();
+
+ explicit uninited_accountState(std::int64_t balance_);
+
+ static const std::int32_t ID = -1992757598;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class changeLocalPassword final : public Function {
+ public:
+ object_ptr input_key_;
+ std::string new_local_password_;
+
+ changeLocalPassword();
+
+ changeLocalPassword(object_ptr &&input_key_, std::string const &new_local_password_);
+
+ static const std::int32_t ID = 1851603483;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class close final : public Function {
+ public:
+
+ close();
+
+ static const std::int32_t ID = -1187782273;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class createNewKey final : public Function {
+ public:
+ std::string local_password_;
+ std::string mnemonic_password_;
+
+ createNewKey();
+
+ createNewKey(std::string const &local_password_, std::string const &mnemonic_password_);
+
+ static const std::int32_t ID = -132817741;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class deleteKey final : public Function {
+ public:
+ std::string public_key_;
+
+ deleteKey();
+
+ explicit deleteKey(std::string const &public_key_);
+
+ static const std::int32_t ID = -1148357295;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class exportKey final : public Function {
+ public:
+ object_ptr input_key_;
+
+ exportKey();
+
+ explicit exportKey(object_ptr &&input_key_);
+
+ static const std::int32_t ID = 399723440;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class exportPemKey final : public Function {
+ public:
+ object_ptr input_key_;
+ std::string key_password_;
+
+ exportPemKey();
+
+ exportPemKey(object_ptr &&input_key_, std::string const &key_password_);
+
+ static const std::int32_t ID = -189764962;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class generic_getAccountState final : public Function {
+ public:
+ object_ptr account_address_;
+
+ generic_getAccountState();
+
+ explicit generic_getAccountState(object_ptr &&account_address_);
+
+ static const std::int32_t ID = -657000446;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class generic_sendGrams final : public Function {
+ public:
+ object_ptr private_key_;
+ object_ptr source_;
+ object_ptr destination_;
+ std::int64_t amount_;
+
+ generic_sendGrams();
+
+ generic_sendGrams(object_ptr &&private_key_, object_ptr &&source_, object_ptr &&destination_, std::int64_t amount_);
+
+ static const std::int32_t ID = 799772985;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class importKey final : public Function {
+ public:
+ std::string local_password_;
+ std::string mnemonic_password_;
+ object_ptr exported_key_;
+
+ importKey();
+
+ importKey(std::string const &local_password_, std::string const &mnemonic_password_, object_ptr &&exported_key_);
+
+ static const std::int32_t ID = -1396771552;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class importPemKey final : public Function {
+ public:
+ std::string local_password_;
+ std::string key_password_;
+ object_ptr exported_key_;
+
+ importPemKey();
+
+ importPemKey(std::string const &local_password_, std::string const &key_password_, object_ptr &&exported_key_);
+
+ static const std::int32_t ID = -15644852;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class init final : public Function {
+ public:
+ object_ptr options_;
+
+ init();
+
+ explicit init(object_ptr &&options_);
+
+ static const std::int32_t ID = -2014661877;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class options_setConfig final : public Function {
+ public:
+ std::string config_;
+
+ options_setConfig();
+
+ explicit options_setConfig(std::string const &config_);
+
+ static const std::int32_t ID = 21225546;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class raw_getAccountAddress final : public Function {
+ public:
+ object_ptr initital_account_state_;
+
+ raw_getAccountAddress();
+
+ explicit raw_getAccountAddress(object_ptr &&initital_account_state_);
+
+ static const std::int32_t ID = -521283849;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class raw_getAccountState final : public Function {
+ public:
+ object_ptr account_address_;
+
+ raw_getAccountState();
+
+ explicit raw_getAccountState(object_ptr &&account_address_);
+
+ static const std::int32_t ID = 663706721;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr